第04单元_数码管显示与定时器.pptVIP

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
4、定时动态显示硬件连接 动态显示硬件连接的示意图如下所示,其中J7为段码接线端,J4和J6为位码接线端。 图4.12 定时动态显示硬件连接的示意图 5、定时动态显示程序流程图 本实验要实现的效果是在8个数码管分别显第一个数码管显示1,第二个数码管显示2...以此类推。 根据动态显示的原理,可以知道在显示1的时候,其它数码管是不亮的,在显示2的时候,其它数码管也不亮...以此类推,由于人眼的余辉效应,在人眼看来这8个数码管是同时亮的。 在“实验3”动态显示中每个数码管的显示时间是用延时来实现的,存在这样一个问题,就是在延时的时候单片机是没办法去做别的事情的,也就是说在数码管的动态显示期间,其他要处理的事情是得不到单片机的响应(除了中断),这从程序设计上来说,是很不合理的。 本实验要实现的效果与“实验3”动态显示的效果是一样的,只是在“实验3”动态显示中每个数码管的显示时间是用延时来实现的,而这里用定时器来替代延时,以便让单片机在数码管的动态显示期间也能处理其他事务。 本实验开启了一个2ms的定时中断,当定时中断到来时,显示八位数码管的其中一位,每位数码管的显示时间为2ms,进入八次定时中断才会显示完八位数码管。也就是采用“当定时时间到时,调用某一任务的方法(这里是动态显示任务)”的方法,这是分时操作系统中非常基本又非常重要的一个概念,这个定时时间称为“系统节拍”。这里用到的2ms定时器我们使用方式2来实现。 5、定时动态显示程序流程图 图4.13 定时动态显示的程序流程图 6、定时动态显示代码分析 #includereg51.h //头文件 ? unsigned code LEDdata[10]= //共阳数码管0~9的段码 { 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, }; void main() { TMOD=0x01; //设置定时器0为工作方式1 TH0=0xF8; //11.0592的晶振, 定时2ms对应的初值 TL0=0xCD; EA=1; //开总中断 ET0=1; //开定时器0中断 TR0=1; //启动定时器0 while(1){}; //程序停止在这里等待中断发生 } ? void FndDynaDis() { static unsigned char i=1, bitCode=1; ? P0=LEDdata[i]; //送i的段码 P1=bitCode; i++; //为显示下一个数码管做准备 bitCode=1; ? if(i=9) //已显示到第8个? { i=1; //为显示第一个数码管做准备 bitCode=1; } } void timer() interrupt 1 { TH0=0xF8; //重装初值 TL0=0xCD; FndDynaDis(); //调用动态显示 } 7、STC-ISP中定时器计算器的使用 可以根据需求选择“系统频率”(选用11.0592MHz,自实验8改用24MHz)、“定时长度”、“选择定时器”、“定时器模式”和“定时时钟”(STC12和STC15支持12T和1T,支持12T是为了兼容兼容89C51,而1T是这两款特有的),选好后点击“生成C代码”,就会在窗口中显示相应时长的定时器代码,然后复制到你的程序中就可以了。 图4.14 定时器计算器的界面 上图中的AUXR特殊功能寄存器为STC单片机特有的,由于STC单片机是兼容51系列的,所以在程序中也可以不给AUXR赋值。 4.5 拓展 ? 1、修改动态显示的内容。 根据图4.11给出的原理图进行硬件连接。 打开“数码管与定时器驱动包\定时动态显示\FndWithTimer.uvopt”工程,在Main.c中定义如下一个数组ucFndBuf[]作为数码管的显示缓存,这个数组存放了8个数值,对应八位数码管;同时,我们

文档评论(0)

striving + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档