1、8位移完后点亮数码管=延时=返回第一步执行2. 中断部分: 进入中断=保存现场(以备调查取证,送你入狱_)=重置TCC=够1秒钟将需要显示的数据+1,并重置,不够就退出;根据以上要求就开始写代码调试了,要注意一点,数据移位时一定要记得高位在前哦,否则显示错误别怪我没有说清楚,我当年实验时就因为这个数据移位方向反了排查了半天,甚至以为是时钟频率不对,又以为时许不对.搞了半天,NND后来重看DATASHEET才发现,原来是低级错误啊,呜呼哀哉.,希望你不要重蹈我覆辙,哎哟! 谁! 谁扔砖头上来? 啥? 你扔的? 我废话太多.,那俺少来两句,继续上菜, 咦好似没啥可说的了,上源程序吧1.;中断部分:
2、2.3.;中断;4.INTPUT: 5.MOVTEMPA,A;6.A,130;7.TCC,A;255-130=1258.CLRRF;9.此处填写250Us处理程序10.BSWKREG,T500US 11.;12.DJZR1MS 13.JMPINTEXT;14.A,4 15.R1MS,A;重置16.WKREG,T1MS 17.此处填写1ms处理程序18.19.20.R20MS 21.22.A,20 23.R20MS,A;24.此处填写1秒处理程序25.WKREG,T20MS 26.27.R1S28.29.A,50 30.R1S,A;31.32.INCNUMBER 33.A,NUMBER 34.S
3、UBA,10 35.JBSSR,236.INTEXT 37.A,0 38.NUMBER,A39.40.41.INTEXT:42.A,TEMPA;43.RETI;44.45.46.47.48.49.;显示部分:50.51.;=TXDATA=52.TXDATA:53.P5,CC1 54.A,8 55.DATALOP,A;56.TXLOP:57.BC58.P5,CLK;clk=高59.NOP;60.NOP61.DATA_BUF,762.$+3 63.P5,DATA;64.$+2 65.P5,DATA66.DD1MS:67.$-1 68.P5,CLK 69.70.71.$-1;72.RLCDATA_B
4、UF 73.DATALOP 74.TXLOP 75.76.77.78.79.80.81.P5,CLK82.83.84.85.RET;86.87.;数据查表88.;=DSPTBL=89.DSPTBL:ADDPC,A90.RETL0B01000000;091.0B01111001;192.0B00100100;293.0B00110000;394.0B00011001;495.0B00010010;596.0B00000010;697.0B01111000;798.0B00000000;899.0B00010000;9100.101.102.;循环体部分;103.104.;主程序;105.MLOO
5、P:106.107.CALLDSPTBL 108.DATA_BUF,A109.TXDATA 110.111.112.113.114.115.JMPMLOOP;实例2在实际应用中驱动数码管常用的方式分动态扫描和静态驱动。动态扫描方式需要x+y个IOx*y个数码管的情况,一般x=8,y=位数这种方法很浪费MPU的IO端口对于2051等20脚的芯片就很难实现。静态显示驱动法,即是指每一个LED灯分别对应一个独立的IO驱动口,这种方法适用较少LED的驱动,不适合数码管驱动。还有一种利用74HC164来驱动的方法。74HC164是比较典型的移位寄存器,该移位寄存器有一个数据输入端口、一个时钟信号端口和八
6、个输出端口。这种方法只需要2个MPU 的IO端口,而且在锁存器件这2个端口还可以干别的事情。74HC164驱动共阴、共阳数码管都很方便。驱动要点: 1、上升沿写入串行数据:CLK=0;DAT=num&0x01;CLK=1;2、写入数据的数码管编码指代码中的 tab串行数据是FIFO先进先出,也就是先写高位,移位放入。电路如图:3、程序源代码:1./共阴数码管74HC164串行驱动3.#include4.5.#defineuintunsignedint7.#defineucharchar9.sbitDAT=P37;/模拟串口数据发送端11.sbitCLK=P34;/模拟时钟控制端15.uchar
7、codetab=0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xff,0xf6;/0-9,-,全灭19.voidsendbyte(ucharbyte) 21./num,c;num=tabbyte;for(c=0;c=1; 47. 49.51.52.53.voiddelay_50ms(unsignedt) 55. 56.57.unsignedj;59.for(;t0;t-) for(j=6245;jj-) 63.;65. 66.69.main() 71. 77.unsignedh;while(1) for(h=0;h10;h+) delay_50ms(1);sendbyte(h);87.88.89.delay_50ms(4);h=0;101.
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2