八位数码管滚动显示案例设计说明.doc

八位数码管滚动显示案例设计说明.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
“八位数码管滚动显示”程序设计说明 程序设计思路 8位数码是经典测试是否正常工作学习使用的案例首先要理解段选和位选,段选是选择数码管上哪发光二极管发光,而位选则是选择数码管哪个数码管显示。 8位数码管动态扫描电路连接 关键代码设计说明2.1公共变量定义及说明 sbit Sel0=P2^0;// sbit Sel1=P2^1;// sbit Sel2=P2^2;//位选的三个引脚控制位 uchar show_w1; uchar show_w2; uchar show_w3; uchar show_w4; uchar show_w5; uchar show_w6; uchar show_w7; uchar show_w8;//show_wi(i=1,2,3,4,……,8)分别是对应左到右的各个数码管上的显示的数字 uchar flag;//分频作用,同时用位选下标uchar count;//分频作用的变量 0x39,0x5e,0x79,0x71,0x40,0x00}; //段选,显示0-f uchar weixuan[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07}; //位选,选择是0-7中的一个数码管 2.2 Init():完成初始化配置; (1)P0和P2口需要设置成推挽模式输出,以驱动LED数码管正常显示。 P2M1=0x00; P2M0=0xff; P0M1=0x00; P0M0=0xff; (2)TMOD=0x01; //定时器0采用模式1 (3)打开中断并允许定时器0中断 EA=1;//打开总中断 ET0=1;//允许定时器0中断 TR0=1;//启动定时器0 (4)设置定时器初始值 TH0=(65535-1000)/256; TL0=(65535-1000)%256; (5)设置位选位 flag初始值为0; (6)show_w1=0;show_w2=1;show_w3=2;show_w4=3;show_w5=4;show_w6=5;show_w7=6;show_w8=7; void timer0() interrupt 1 当定时器0初始值不断加一最终溢出时激发的处理方法。 重设TH0、TL0; flag加一;如果flag等于8,则赋值flag为0 P0要显示的值为0 P2为位选结果,下标为flag。 如果位选为0,则显示段选下标为show_w1%10对应的数值;如果位选为1,则显示段选下标为show_w2%10对应的数值,以此类推。由于定时时间为1ms用于处理显示内容,而下一个1ms很快就会到,因此,虽然实际上并不是同时选通相应的数码管位,但是由于人眼有时延,因此感觉是同时显示。 void main() 主体功能,主要用于控制数码管循环显示 调用Init()完成程序初始化; 单纯一个死循环3.寄存器知识补充说明 MCS51系列的单片机通常有2个16位可编程定时/计数器,即定时器0和1。MCS52系列还有一个定时/计数器2。可编程的意思是指其功能(如工作模式、定时时间、启动方式等)可由指令来确定和改变。通常都是赋值指令给相关的寄存器。与定时/计数器相关的有两个特殊功能寄存器(模式控制寄存器TMOD和控制寄存器TCON)。且定时器往往在中断中使用,以便当时间到了完成相应处理。MCS51单片机定时/计数器工作原理示意图如图6所示。 图6 MCS51单片机定时/计数器工作原理示意图 每个16位定时/寄存器又分别由两个8位专用寄存器组成。其中TH0、TL0(对应定时器0)、TH1、TL1(对应定时器1),其访问地址依次为8AH-8DH。它们可单独访问,主要用于装载定时或计数的初始值。 定时/计数器0和1要正常工作,需要先设置好8位模式控制寄存器TMOD(89H)和8位控制寄存器TCON(88H)。TMOD主要用于设定定时/计数器的工作模式;TCON主要用于控制定时/计数器的启动/停止,保存T0、T1的溢出和中断标志。当定时器工作在计数方式时,外部事件可通过引脚P3^4(对应T0)或P3^5(对应T1)进行输入。本程序使用的是内部计时及相应处理,不是外部事件激活。 定时计数器工作原理: 16位的定时器/计数器实质上就是一个加1计数器当定时器/计数器为定时工作方式时,计数器的加1信号由振荡器的12分频信号产生每过一个机器周期,计数器加1,直至计满溢出为止。,定时器的定时时间与系统的振荡频率有关。 个机器周期等于12个振荡周期,所以计数频率fcount=1/12osc。如果晶振为12MHz,则周期为:T=1/(12×106)Hz×1/12=1μs这是最短的周期。若要延长定时时间,则需要改8位、13位、16位等)。当定时器/计数器为计数工作方式时,通过

文档评论(0)

***** + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档