电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

用定时器做延时的数码管时间显示

用定时器做延时的数码管时间显示_第1页
1/7
用定时器做延时的数码管时间显示_第2页
2/7
用定时器做延时的数码管时间显示_第3页
3/7
/* 本程序实现了用数码管显示时间的功能,时间计数和现实基本一致(这取决于定时器精度和指令时间)。 该程序提供了一种用定时器延时实现传统 delay 的显示方法,后面给出比较。 文档最后有该程序对应的原理图,大部分开发板都能直接用这个程序,稍微改下 IO 口即可。如有错误之处请包涵,此篇文档仅作交流之用。 */ /*---------------------定时器方法----------------*/ #include /*----------------全局变量定义区----------------*/ sbit duan_xuan=P2^6; //数码管显示控制 I/O sbit wei_xuan=P2^7; unsigned char minute = 0; //分钟的变量,20*60 次 timer0 中断 unsigned char hour = 0; unsigned char i_num_timer0; //定时器中断次数 unsigned char i_num_timer1; unsigned char disp_min1,disp_min2,disp_hour1,disp_hour2; //分解后的数值变量 unsigned char wei = 1; //用来标记显示哪个数码管 unsigned short uc50ms = 0; //记录 time0 中断次数,此程序用两个变量记录 time0中断次数 /*------定义数码管显示的数字---------*/ unsigned char code duan_table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71 }; /*-----------------函数声明段----------------*/ void ini_program(); void disp_time(); //显示时间 void current_time(); //记录小时,分钟变量 // void breakdown_time(uint hour,uint minute);//分解数值,送数码管分别显示 //------------------------------------- void main() { ini_program(); while(1) { current_time(); // breakdown_time(hour,minute); disp_min1=minute%10; disp_min2=minute/10; disp_hour1=hour%10; disp_hour2=hour/10; // disp_time(); } } //------------------------------------ void ini_program() //初始化 { duan_xuan=0; wei_xuan=0; //重置I/O 状态 TMOD=0x11; //定时器0+定时器1,设定方式1 TH1=(65536-1834)/256; TL1=(65536-1834)%256; //2ms 触发一次中断 TH0=(65536-45872)/256; TL0=(65536-45872)%256; //50ms 触发一次中断 EA=1; ET0=1; ET1=1; TR0=1; TR1=1; } /* void breakdown_time(uint hour,uint minute) { disp_min1=minute%10; disp_min2=minute/10; disp_hour1=ho...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

用定时器做延时的数码管时间显示

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部