第008讲数码管静、动态显示.ppt

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
二、定时/计数器的工作原理 每来一个脉冲计数器加1,当加到计数器为全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断请求(定时/计数器中断允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到; 加1计数器输入的计数脉冲有两个来源,一个是由系统的时钟振荡器输出脉冲经12分频后送来;一个是T0或T1引脚输入的外部脉冲源。 设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期(P46),即计数频率为晶振频率的1/12)。计数值N乘以机器周期Tcy就是定时时间t 。 设置为计数器模式时,外部事件计数脉冲由T0或T1引脚输入到计数器。 实现定时功能,比较方便的办法是利用单片机内部的定时/计数器。也可以采用下面三种方法: 软件定时:软件定时不占用硬件资源,但占用了CPU时间,降低了CPU的利用率。(P48、74例题 ) 采用时基电路定时:例如采用555电路,外接必要的元器件(电阻和电容),即可构成硬件定时电路。但在硬件连接好以后,定时值与定时范围不能由软件进行控制和修改,即不可编程。 采用可编程芯片定时:这种定时芯片的定时值及定时范围很容易用软件来确定和修改,此种芯片定时功能强,使用灵活。在单片机的定时/计数器不够用时,可以考虑进行扩展。 作业 1、看视频录像:Lesson3 01:40:27至结束 2、阅读《汇编语言(第2版)》(王爽著) 第12章(P236) 理解入口地址的作用 * 由例3.2.1来导出写的思路 * 单片机的应用 * WXH WXH WXH WXH 第三章 数码管显示原理及应用实现 3.1 数码管显示原理(P56) 单片机系统中常用的显示器有: 发光二极管LED(Light Emitting Diode)显示器 液晶LCD(Liquid Crystal Display)显示器 CRT显示器等 LED、LCD显示器有两种显示结构:段显示(7段、米字型等)和点阵显示(5×8、8×8点阵等)。 共阳极数码管 共阴极数码管 3.2 数码管静态显示(P58) P59 [例3.2.1] 让第一个数码管显示一个8字 P59 [例3.2.1] 让第一个数码管显示一个8字 #includereg52.h sbit dula=P2^6; sbit wela=P2^7; void main() { wela=1; P0=0xFE; //FE=1111 1110 wela=0; dula=1; P0=0x7F; //P60表 dula=0; while(1); } P61[例3.2.2]让6个数码管同时点亮,依次显示0到F(看第8张PPT),时间间隔为0.5S,循环下去。 #includereg52.h #define uint unsigned int #define uchar unsigned char sbit dula=P2^6; sbit wela=P2^7; uchar num; uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; void delay(uint z); //数组,P60,显示0到F P59 [例3.2.1] 让第一个数码管显示一个8字 #includereg52.h sbit dula=P2^6; sbit wela=P2^7; void main() { wela=1; P0=0xFE; //FE=1111 1110 wela=0; dula=1; P0=0x7F; //P60表 dula=0; while(1); } P60 倒数第二段 void main() { wela=1; P0=0xc0; // c0=1100 0000 wela=0; while(1) { for(num=0;num16;num++) { dula=1; P0=table[num]; dula=0; delay(500); } } } void delay(uint z) { uint x,y; for(x=z;x0;x--) for(y=110;y0;y--); } 0x3f , 0x06 , 0x5b , 0x4f , 0x66 , 0x6d , 0

文档评论(0)

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

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

1亿VIP精品文档

相关文档