74hc595驱动数码管实例程序

上传人:m**** 文档编号:563304511 上传时间:2022-10-10 格式:DOC 页数:5 大小:29.50KB
返回 下载 相关 举报
74hc595驱动数码管实例程序_第1页
第1页 / 共5页
74hc595驱动数码管实例程序_第2页
第2页 / 共5页
74hc595驱动数码管实例程序_第3页
第3页 / 共5页
74hc595驱动数码管实例程序_第4页
第4页 / 共5页
74hc595驱动数码管实例程序_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《74hc595驱动数码管实例程序》由会员分享,可在线阅读,更多相关《74hc595驱动数码管实例程序(5页珍藏版)》请在金锄头文库上搜索。

1、程序内容:利用动态扫描和定时器1在数码管上显示出从765432开始以1/10秒的速度往下递减直至765398并保持显示此数,与此同时利用定时器0以500MS速度进行流水灯从上至下移动,当数码管上数减到停止时,实验板上流水灯也停止然后全部开始闪烁,3秒后(用T0定时)流水灯全部关闭、数码管上显示出“HELLO”。到此保持住。编写人:李英杰硬件支持:12MHz、74hc595驱动数码管、对应YL-48开发板时间:2012.8.22备注:参考郭天祥十天学会单片机#include#include#defineuintunsignedint/宏定义code共阳#defineucharunsignedch

2、ar/宏定义unsignedcharduan=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc0,0xc7,0xc7,0x86,0x89;/数码管位码值unsignedcharcodewei=0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01;unsignedchardisbuf=7,6,5,0,0,0,10,11,12,13,14;/数码管初值sbitsi=P2A2;sbitsclk=P2A4;sbitslck=P2A3;/voidsenda();voidsend();voidout();voidinit(

3、);voiddelay(unsignedcharh);uinttemp,t0,t1,shu,flat,flat1;/flat为流水灯运行标志位、flat1为数码管标志位ucharm,n,num;main()shu=432;/disbuf3=shu%10/10;/disbuf4=shu/10%10;/disbuf5=shu%10;init();while(1)if(flat1=0)/flat1为1,数码管递减中for(n=0,m=0;n6,m6;n+,m+)send();out();/while(1);else/当数码管递减完后、显示hellofor(n=6,m=0;n11,m5;n+,m+)s

4、end();out();voidinit()temp=0xfe;P1=temp;TMOD=0x11;/定时器0、1工作方式都为1TH0=(65536-50000)/256;/定50ms的初值TL0=(65536-50000)%256;TH1=(65536-50000)/256;TL1=(65536-50000)%256;EA=1;ET0=1;ET1=1;TR0=1;TR1=1;voidtime0()interrupt1/定时器0子函数TH0=(65536-50000)/256;TL0=(65536-50000)%256;t0+;if(flat=0)if(t0=10)t0=0;temp=_cro

5、l_(temp,1);P1=temp;elseP1=0xff;TH0=(65536-50000)/256;/重新定义初值TL0=(65536-50000)%256;t0+;if(t0%10=0)P1=P1;if(t0=60)TR0=0;P1=0xff;flat1=1;voidtime1()interrupt3/定时器1子函数TH1=(65536-50000)/256;TL1=(65536-50000)%256;t1+;if(t1=2)t1=0;disbuf3=shu/100;disbuf4=shu/10%10;disbuf5=shu%10;shu-;if(shu=397)TR1=0;flat=

6、1;/TR0=0;/*voidsenda(void)uinta;for(a=0;a8;a+)sclk=0;si=num&0x80;num=num1;sclk=1;*/voidsend(void)/数据传输uchara,b;/for(m=0;m6;m+)/if(b=0)b+;num=weim;for(a=0;a8;a+)sclk=0;si=num&0x80;num=num1;sclk=1;/senda();if(b=1)b-;num=duandisbufn;for(a=0;a8;a+)sclk=0;si=num&0x80;num=num1;sclk=1;/senda();/m+;/if(m=6)/m=0;/voidout()slck=0;delay(50);slck=1;voiddelay(ucharh)/数据输出/延时0.1ms个单位while(h-);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号