单片机原理及应用.ppt
《单片机原理及应用.ppt》由会员分享,可在线阅读,更多相关《单片机原理及应用.ppt(70页珍藏版)》请在麦多课文档分享上搜索。
1、,单片机原理及应用,黄 建 科,项目四 LED电子钟的制作,能力目标:1. 能根据设计任务要求编制不同进制计数器的程序流程图,理解程序对数字电子时钟的控制原理;2. 会利用电路仿真软件绘制LED电子钟的制作的电路原理图;3. 会用keil C51软件对源程序进行编译调试及与protues软件联调,实现电路仿真。,任务1 从0到9的加1计数显示(静态)设计,一位计数器是单片机控制数码管计数显示的最简单的例子,本任务采用AT89S51单片机控制数码管静态显示的方式实现从0到9的加1计数显示。,1.1 提出任务,用AT89S51的P2口做输出口,接一位LED数码管,编写程序,使数码管显示从0到9的加
2、1计数,时间间隔为0.5s。即每显示一个数字后,保持0.5s,再显示下一个,显示到数字“9”之后再从“0”开始循环。,分析任务,1.硬件电路设计,任务1 从0到9的加1计数显示(静态)设计,电路组成:这里选择具有内部程序存储器的AT89S51单片机作为控制电路,P2口接1个1位共阳数码管,其中P2.0到P2.6分别连接数码管的af引脚,P2.7连接小数点h端。硬件电路原理图如上图所示。电路分析:要使LED数码管依次显示数字,则P2口对应输出七段数码管数字显示对应的编码即可。由于流过LED的电流通常较小,为了在仿真实验中让数字显示的更亮一些,所以一般还要在回路中接入合适的限流电阻。一般情况下,根
3、据驱动LED的电流电压计算,在这里取限流电阻为150。当P2.x输出为低电平时,对应的LED亮,输出高电平时,对应的LED不亮。,任务1 从0到9的加1计数显示(静态)设计,分析任务,2. 软件设计思路(共阳),分析任务,2. 软件设计思路,根据前面分析,实现任务的思路是: (1)程序开始时,给数组元素的变量赋初始值0,并将数组中第1个元素送P2端口; (2)延时0.5s后,将变量i加1,并判断是否已读取到第10个元素; (3)如果已经读取完,则对变量i重新赋值0,如果没有,则继续读取数组中第i个元素送到P2端口,依次循环。,程 序,任务1 从0到9的加1计数显示(静态)设计,/单只数码管循环
4、显示09 #include #include #define uchar unsigned char #define uint unsigned int Uchar code DSY_code =0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8,0x80,0x90,0xff;,/延时 Void Delayms(uint xms) uint I,j;for(i=xms,i0,i-)for(j=110,j0,j-) ; /主程序void main()uchar i=0;P2=DSY_codei;i=(i+1)%10;Delayms(500),思考与练习,若该从0到9
5、的加1计数显示采用共阴极数码管,则单片机控制的硬件电路及程序如何修改?修改程序中显示的数据,使其显示范围扩大到0F共16个十进制数。,一、知识储备,1.1 LED数码管动态显示驱动方式,动态驱动是将所有数码管的8个显示笔划“adp“的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制; 当单片机输出字形码时,所有数码管都接收到相同的字形码,我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。 通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。,任务2 动态显示设计,数码管动态显示接
6、口是单片机中应用最为广泛的一种显示方式之一;,1.1 LED数码管动态显示驱动方式,关于视觉暂缓效应:在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,但动态显示更能够节省大量的I/O端口,而且功耗更低。,任务2 显示(动态)设计,8只数码管滚动显示单个数字,使用8只集成7段共阳数码管CA,共阴CC,所有数码管的a脚并 联在一起,其余b、d、e、f、g、h也是并联,任何时候发送的段 码均会传送到所有数码管上,所有
7、数码管共阳极是独立的,P0 口为段控,P2口为位控,要让哪个数码管点亮,就给相应的位控 送合适的电平,为共阳的数码管,由于选用的是NPN三极管,P2.0 为1,就意味着第一个数码管点亮,其余的数码管均为熄灭,原因 是其余的共阳端没有+5V供电,本例位码初值为0X80,即1000 0000,for循环中执行循环左移,K为0000 0001,0000 0010,0000 0100,0000 1000,0001 00000010 0000,0100 0000,1000 0000,如此重复。,任务2 8位一体(动态)显示设计电路图,8只数码管滚动显示单个数字,程 序:8只数码管滚动显示单个数 #inc
8、lude #include #define uchar unsigned char #define uint unsigned int uchar code DSY_code =0xc0,0xf9,0xa4, 0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /延时 void Delayms(uint xms) uint I,j;for(i=xms,i0,i-)for(j=xms,j0,j-) ;,任务2 显示(动态)设计,/主程序void main()uchar I,k=0X80;while(1)for (i=0;i8;i+)P2=0Xff;/关闭显示k=_crol_(
9、k,1);P0=DSY_codei;/发送段码P2=k;/发送数码管位码Delayms(300); ,8只数码管显示多个不同字符,要求在数码管同时显示多个不同字符,为了使不同数码管显示不同字符,利用人眼视觉暂留特征,选通第一只数码管时,只发送第一个数码管的段码,同时切换延时程序时间的控制。,任务2 显示(动态)设计,8只数码管显示多个不同字符,程 序:8只数码管动态显示多个不同字符 #include #include #define uchar unsigned char #define uint unsigned int uchar code DSY_code =0xc0,0xf9,0xa4
10、, 0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; void Delayms(uint xms) /延时 uint I,j;for(i=xms,i0,i-)for(j=xms,j0,j-) ;,void main() /主程序uchar k,m=0X80;P0=0XFF;P2=0X00;while(1)for (K=0;K8;K+)P2=m;/位码m=_crol_(k,1);P0=DSY_codek+1;/发段码Delayms(2); ,1.2 60进制计数程序设计说明,两位数计数函数可以采用一位数的计算方法实现,本任务实现60进制计数即是采用一位计数方法:unsign
11、ed char time=0 /定义变量time为计数值,初值为0 void calc() /计数程序 time0+; /计数值加1 if(time059) /判断计数是否到59 time0=0; /到59,则计数从0重新开始 ,任务3 从0到59的加1计数显示(动态)设计,1.2 60进制计数程序设计说明,由于数据存储结构的改变,导致计算的数据结构与原有的显示程序数据 结构不一致,于是本任务中将计算的数据通过一个数据转换程序后送到原有 的数据结构中,实现加1计数并显示。数据转换程序:由于是一位(time)计数,两位(059)显示,因此将 计数器所计数time转换为数码管显示所需要的十位和个位
12、数值,转换方法是: 将计数值time对10去整得到十位,对10求余得到个位。程序如下:void convert() /计数转换程序 display_data0=time/10; /对计数值取整得到计数的十位display_data1=time%10; /对计数值求余得到计数的个位,任务3 从0到59的加1计数显示(动态)设计,1.2 60进制计数程序设计说明,(2)分别计数方法两位数计数函数的实现方法还可以在原有的加1计算的程序基础上进行改进,即将个位数和十位数分别计数,个位计数每到9(满10),向十位进1,十位就加1,个位再从0开始计数。将计数值从数码管编码表读出且送端口显示数据,并控制个位
13、显示在十位的右边,就完成了两位数的计数显示。其计数程序可以简要写作: int time=0,0 /time0用于个位计数,time1用于存放十位计数 void calc() /计算程序 time0+; /个位计数, if(time09) /判断是否计数到9 time0=0; /若计数到9,则十位加1,个位重新从0开始 time1+; if time15; /判断十位是否计数到5 time1=0 /若十位计数到5,则计数重新开始 ,任务3 从0到59的加1计数显示(动态)设计,在时钟计数时,分和秒计数一般均为60进制,也就是说从0开始到59,之后重复。基于数字电子钟设计由浅入深的原则,在实现一位
14、数计数的基础上,本任务介绍采用AT89S51单片机控制数码管实现两位数计数。主要解决多位数计数以及不同位数的计数显示控制。,1.1 提出任务,用AT89S51的P2口做输出口,接一个8位LED数码管,编写程序,使数码管从0开始计数,到59时复位为0,即一个两位的加法计数器,数字显示时间间隔为0.5s。,二、设计示例,任务3 从0到59的加1计数显示(动态)设计,1.2 分析任务,1.硬件电路设计,任务3 从0到59的加1计数显示(动态)设计,电路组成:仍然选用 AT89S51单片机作为控制核心,1个8位共阳极数码管作为输出显示端。AT89S51的P0口接数码管的段码控制,其中P0.0P0.6分
15、别连接数码管的AG引脚,P0.7连接DP端,低电平有效。P2口接数码管位码选通部分,P2.0口控制第1个数码管,一直到P2.7口控制第8个,高电平有效。硬件电路原理图如图6.5所示,选择8位数码管的前面两位进行计数显示。 电路分析:要使8位数码管显示实现从0到59的动态计数,实际上就是通过P2口输出控制信号轮流选通数码管,共阳型数码管公共端为高电平方可选通,因此要求P2口由P2.7到P2.0依次输出高电平,然后在数码管段码控制端口P0按照一定规律送出要显示的数字09。由于P0口带负载能力较小,因此仿真电路中P0接入一排上拉电阻。,任务3 从0到59的加1计数显示(动态)设计,1.2 分析任务,
16、2. 软件设计思路,AT89S51端口输出电平分析:根据数码管的动态显示方式,要显示的数码管的8个笔画端接在单片机的P0端口的8位上,而单片机的另一个端口P2的各个位分别控制8位数码管的公共端,控制数码管是否点亮选通。在程序的控制下依次快速输出要显示的各个数,并同时控制对应的数码管工作,在这里选择最左侧两个数码管输出。P0端口输出电平如表6-2所示。,任务3 从0到59的加1计数显示(动态)设计,表6-2 数码管60进制动态显示段码任务分析表(一),任务3 从0到59的加1计数显示(动态)设计,表6-2 数码管60进制动态显示段码任务分析表(二),任务3 从0到59的加1计数显示(动态)设计,
17、2. 软件设计思路,从表6-2可以看出,各个数码管的段码都是P0口的输出,即各个数码管输入的段码都是一样的, 其计数过程是先只让最低位显示0(含点),经过一段延时,再只让次低位显示1,如此类推。可是,单片机控制的数码管选通一次只能有一位数码管显示,在计数超过9之后进入两位数计数过程,,即怎样才能使人在视觉上同时看到两位数?实际上,数码管的动态显示达到一定速度的时候,由于人的视觉暂留,只要我们的延时时间足够短,就能够使得数码的显示看起来非常的稳定,其显示过程和静态显示一样,不会产生闪烁,显示内容清楚。一般显示时间取几个毫秒,本任务中设计延时时间为0.5ms。程序工作时,使电路选通某一位数码管后,
18、该数码管被点亮并保持一段时间。,任务3 从0到59的加1计数显示(动态)设计,2. 软件设计思路,根据前面分析,实现任务的思路是:(1)将要显示内容的09十个数字存放在数组中; (2)程序开始后,数组中的元素不断地逐个送到数码管的段码端口P0 (3) 位码控制P2端选通要显示的数码管,则数字显示在选中的数码管上。,思考与练习,若要求LED数码管显示从59到0的减1计数,程序lsd5-2如何修改?若采用两位数分别计数的方法实现该60进制计数器,程序怎样设计?,所谓任意进制计数器就n进制计数器,是指从0开始计数到n-1时,又重复从0开始进行的计数过程。例如数字电子时钟的小时可以是24进制计数,也可
19、以是12进制计数,篮球比赛中用到30s规则中可以采用延时1s的30进制计数。本任务利用AT89S51单片机实现24进制计数器,并由此推广到任意进制计数。,1.1 提出任务,用AT89S51的P2口做输出口,接一个8位LED数码管,编写程序,使数码管从0开始计数,到23时复位为0,即一个两位的加法计数器,数字显示时间间隔为0.5s。,一、设计示例,任务4 任意进制计数器的设计,1.2 分析任务,采用数码管的动态显示方式,硬件电路组成与059计数电路一致,仍然选择8位数码管的前两位计数并显示,如图6.5。要显示的数码管的8个笔画端接在单片机的P0端口的8位上,而单片机的另一个端口P2的各个位分别控
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 原理 应用 PPT
