一体数码管显示方式,除了这两种,还有什么更好的方式?
(1)刚学的时候用的方法void display(void)
{
P2=0x01;
P0=num_table;
delay(1);
P2=0X02;
P0=num_table;
delay(1);
P2=0x04;
P0=(num_table+0x80);
delay(1);
P2=0x08;
P0=num_table;
delay(1);
}
(2)定义数组然后调用
void display(void)
{
uchar i;
for(i=0;i<8;i++)
{
P2=wei;
P0=num_table];
delay(1);
}
}
如果要让四位一体显示1234,一段时间后显示2345。。。类推,要怎么做,各位高手还有什么别的更好的显示方法吗,求指导,,,,谢谢 中断方式 我的做法是:設4個顯示孌量,用定時器計時,在中斷里更新4顯示孌量里的數值. 肯定是用定时中断,利用中断计时 P0=num_table];
延时一段时间让m += 1;
直接用事件标志,主循环中计数,达到一定计数值时,触发事件,显示一位,依次轮流,前提,你的主循环中没有长时间的阻塞。 INT0 发表于 2012-5-3 19:19 static/image/common/back.gif
肯定是用定时中断,利用中断计时
能举个例子吗? 尽量用定时器,少用delay(1); 确定差不多以五毫秒为一次中断,设立四种情况为四个参数,switch 语句,我写过一个不过就只找到汇编asm 的你看一下过程就知道了吧INT_T0:
MOV TH0,#0ECH
MOV TL0,#78H
; SETB TR0
; SETB EA
; SETB ET0
MOV A,STATE
I1:
CJNE A,#4,I2
MOV STATE,#1
MOV A,DISP1
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV DISPDATA,A
SETB HDISP1
CLR HDISP4
LJMP I9
I2:
CJNE A,#1,I3
MOV STATE,#2
MOV A,DISP2
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV DISPDATA,A
SETB HDISP2
CLR HDISP1
LJMP I9
I3:
CJNE A,#2,I4
MOV STATE,#3
MOV A,DISP3
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV DISPDATA,A
SETB HDISP3
CLR HDISP2
LJMP I9
I4:
CJNE A,#3,I5
MOV STATE,#4
MOV A,DISP4
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV DISPDATA,A
SETB HDISP4
CLR HDISP3
LJMP I9
I5:
I9:
; POP PSW
; POP B
POP ACC
RETI
页:
[1]