单片机应用系统设计实例ppt课件_第1页
单片机应用系统设计实例ppt课件_第2页
单片机应用系统设计实例ppt课件_第3页
单片机应用系统设计实例ppt课件_第4页
单片机应用系统设计实例ppt课件_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.,公选课单片机基础及应用,.,设计实例,1、用1个LED发光二极管,设计一个循环闪烁的指示灯。2、用8个LED发光二极管,设计一个循环闪烁的流水灯。3、通过设置中断,改变灯的循环方向,控制灯的亮灭。4、通过定时,精确控制P1.0闪烁500ms。5、以秒为单位,用LED数码管显示当前计数值。,.,1、用1个LED发光二极管,设计一个循环闪烁的指示灯。,如何设计硬件和软件?,.,1.1硬件设计,注意:在接下来的仿真中,省略时钟及复位电路。,.,1.2软件设计,1)初始化51头文件、宏定义2)主程序,即main()程序灯的亮灭控制3)延时功能延时子程序设计,#include#defineuintunsignedint#defineucharunsignedchar,voidmain(void)while(1)P1_0=0;delay(5000);P1_0=1;delay(5000);,voiddelay(uintt)/延时0.1*t毫秒uinti;dofor(i=0;i10;i+);while(t-);,voiddelay(uintt);/声明函数,.,2、用8个LED发光二极管,设计一个循环闪烁的流水灯。,.,2.1硬件设计,.,2.2软件设计,1)初始化51头文件、宏定义2)主程序,即main()程序灯的循环闪亮控制3)延时功能延时子程序设计,.,如何进行灯的循环闪亮控制?intrins.h内部函数库(包含变量循环移位、位操作等函数)需要将该函数包含进来,同时对函数原型进行声明。,.,#includeuchar_crol_(uchara,ucharn);/*函数原型,左循环*/uchar_cror_(uchara,ucharn);/*函数原型,右循环*/,#includeuchar_crol_(uchara,ucharn);/*函数原型*/uchar_cror_(uchara,ucharn);/*函数原型,右循环*/,voidmain(void)uinta=0 xfe;while(1)P1=a;delay(5000);a=_crol_(a,1);,.,3、通过设置中断,改变灯的循环方向,控制灯的亮灭。,.,3.1硬件设计,.,1)中断的概念,中断技术是计算机中一项很重要的技术。中断系统的功能是为了解决快速CPU和慢速外设间的矛盾,它由软件和硬件组成。有了中断系统,能使计算机的功能更强、效率更高、使用更灵活。51单片机系统有5个中断源。,.,2)日常中断的例子,你正在专心看书,突然电话铃响,于是你记下正在看的书的页数,去接电话,接完电话后再回来接着看书。,.,3)计算机中的中断概念,中断是指由于某种随机事件(甲方)的发生,计算机(乙方)暂停现行程序的运行,转去执行另一程序,以处理发生的事件,处理完毕后又自动返回原来的程序继续运行。将能引起中断的事件称为中断源。CPU现行运行的程序称为主程序。处理随机事件的程序称为中断服务子程序。,.,4)相关的特殊功能寄存器,TCON,TF1TR1TF0TR0IE1IT1IE0IT0,IE0/IE1:外部中断申请标志位:=0:没有外部中断申请;=1:有外部中断申请。,IT0/IT1:外部中断请求的触发方式选择位:=0:在INT0/INT1端申请中断的信号低电平有效;=1:在INT0/INT1端申请中断的信号负跳变有效.,.,EAET2ESET1EX1ET0EX0,IE,.,3.2软件设计,1)初始化51头文件、宏定义2)主程序,即main()程序灯的循环闪亮控制中断初始化3)延时功能4)中断服务程序设计,.,3.2软件设计,中断初始化触发方式设置中断允许控制中断服务程序设计,.,中断初始化IT0=1;EA=1;EX0=1;,.,中断服务程序,函数名()interruptnusingmVoidint0(void)interrupt0/*外部中断0的服务函数定义,使用第二组工作寄存器组*/,voidint0(void)interrupt0uchara=0 xfe,i=16;P1=0 x0;delay(5000);P1=0 x0ff;delay(5000);P1=0 x0;delay(5000);P1=0 x0ff;delay(5000);doP1=a;delay(5000);a=_cror_(a,1);while(i-);,.,4、通过定时,精确控制闪烁500ms。针对任务一进行操作。,.,使用定时器T01)设置定时器工作方式2)计算初始值3)编写初始化程序4)编写中断服务程序,.,1)设置定时器工作方式,TMOD,.,2)计算初始值,晶振12Mhz1个机器周期:,定时50ms,需要计数:,定时器初始值:,定时500ms,需要中断10次。,.,3)编写初始化程序,TMOD=0X01;TH0=0X3C;TL0=0XB0;EA=1;ET0=1;TR0=1;,.,4)编写中断服务程序,Voidtimer0(void)interrupt1TH0=0 x3c;TL0=0 xb0;i+;if(i=9)i=0;P1_0=P1_0;,.,5、以秒为单位,用LED数码管显示当前计数值。,.,LED数码管显示电路原理,LED数码管的结构:(1)共阳(2)共阴,共阳数码管每个段笔画是用低电平(“0”)点亮,共阴数码管段笔画是用高电平(“1”)点亮,公共阳极,hgfedcba,a,b,c,d,g,e,f,h,公共阴极,hgfedcba,a,b,c,d,g,e,f,h,hgfa,hgfa,高电平点亮,低电平点亮,接高电平,接地,.,要显示某个字形,就应使此字形的相应断码的二极管点亮,实际就是送一个用不同电平组合代表的数据字(显示码)来控制LED的显示,此数据称为字符的段码或字形码。共阴极和共阳极LED显示器段码不同。,共阳LED数码管:公共端(字位)接高电平,笔划(字段)置为低电平就被点亮了,比如要显示“0”须令abcdef为“0”电平,gh为“1”电平。,.,管脚识别小技巧:用万用表测一下就可以了。数码管分为共阴极和共阳极。以共阴极为例:先用万用表的正极(对于数字万用表为红色表笔)放在某一个管脚,另外一个负极依次去测量其他管脚。若没有一个管脚亮,说明正极接的是公共端(COM)。若亮,根据发光位置就可以判断引脚了,正极接的是相应的段码端(a,b,c,dp),负极为对应数码管的公共端(C1,C2)。,.,4位一体共阴极LED数码管管脚分布如图所示:,.,5.1硬件设计,.,如果每个LED上要显示的数字不同,那么它在同一时刻是不能同时显示的。用这种数码管都是动态显示的。(可以到网上去看下动态显示)比如4个LED上要显示1234(假设是共阴极连接),4个LED上显示1234(假设共阴极连接)过程如下:首先选种第一个LED(即上面C1=0,C2=1,C3=1,C4=1)送LED要显示的数据(abcdefg=“0110000”),如果要显示小数点dp=1再延时一段时间(注意不能过长,不然看到的连续显示的现象了,下面一样)再选择第二个LED(即上面C1=1,C2=0,C3=1,C4=1)送LED要显示的数据(abcdefg=1101101)如果要显示小数点dp=1再延时一段时间接下来是第三、第四个LED也一样。,.,5.2软件设计,1)定时中断服务程序定时50ms,中断20次为1秒每中断20次,计数1次。2)显示程序将显示数值分为:个位、十位、百位、千位,分别查表显示。,.,初始化:,ucharcodea10=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;/段码组合,共阴极ucharm=0;/计数循环变量uintn=0;/计数值,.,定时中断服务程序,voidtimer0(void)interrupt1TH0=0 x3C;TL0=0 xB0;m+;i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论