单片机应用系统设计实例[技术专攻].ppt

上传人:rrsccc 文档编号:11200535 上传时间:2021-07-12 格式:PPT 页数:44 大小:625KB
返回 下载 相关 举报
单片机应用系统设计实例[技术专攻].ppt_第1页
第1页 / 共44页
单片机应用系统设计实例[技术专攻].ppt_第2页
第2页 / 共44页
单片机应用系统设计实例[技术专攻].ppt_第3页
第3页 / 共44页
单片机应用系统设计实例[技术专攻].ppt_第4页
第4页 / 共44页
单片机应用系统设计实例[技术专攻].ppt_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《单片机应用系统设计实例[技术专攻].ppt》由会员分享,可在线阅读,更多相关《单片机应用系统设计实例[技术专攻].ppt(44页珍藏版)》请在三一文库上搜索。

1、公选课 单片机基础及应用,1,专业课,设计实例,1、用1个LED发光二极管,设计一个循环闪烁的指示灯。 2、用8个LED发光二极管,设计一个循环闪烁的流水灯。 3、通过设置中断,改变灯的循环方向,控制灯的亮灭。 4、通过定时,精确控制P1.0闪烁500ms。 5、以秒为单位,用LED数码管显示当前计数值。,2,专业课,1、用1个LED发光二极管,设计一个循环闪烁的指示灯。,如何设计硬件和软件?,3,专业课,1.1硬件设计,注意:在接下来的仿真中,省略时钟及复位电路。,4,专业课,1.2软件设计,1)初始化 51头文件、宏定义 2)主程序,即main()程序 灯的亮灭控制 3)延时功能 延时子程

2、序设计,5,专业课,#include #define uint unsigned int #define uchar unsigned char,void main(void) while(1) P1_0=0; delay(5000); P1_0=1; delay(5000); ,void delay(uint t) /延时0.1*t毫秒 uint i; do for(i=0;i10;i+) ; while(t-); ,void delay(uint t); /声明函数,6,专业课,2、用8个LED发光二极管,设计一个循环闪烁的流水灯。,7,专业课,2.1硬件设计,8,专业课,2.2软件设计,

3、1)初始化 51头文件、宏定义 2)主程序,即main()程序 灯的循环闪亮控制 3)延时功能 延时子程序设计,9,专业课,如何进行灯的循环闪亮控制? intrins.h 内部函数库 (包含变量循环移位、位操作等函数) 需要将该函数包含进来,同时对函数原型进行声明。,10,专业课,#include uchar _crol_(uchar a,uchar n); /*函数原型,左循环*/ uchar _cror_(uchar a,uchar n); /*函数原型,右循环*/,11,专业课,#include uchar _crol_(uchar a,uchar n); /*函数原型*/ uchar

4、_cror_(uchar a,uchar n); /*函数原型,右循环*/,void main(void) uint a = 0 xfe; while(1) P1=a; delay(5000); a=_crol_(a,1); ,12,专业课,3、通过设置中断,改变灯的循环方向,控制灯的亮灭。,13,专业课,3.1硬件设计,14,专业课,1)中断的概念,中断技术是计算机中一项很重要的技术。 中断系统的功能是为了解决快速CPU和慢速外设间的矛盾,它由软件和硬件组成。 有了中断系统,能使计算机的功能更强、效率更高、使用更灵活。 51单片机系统有5个中断源。,15,专业课,2)日常中断的例子,你正在专

5、心看书,突然电话铃响,于是你记下正在看的书的页数,去接电话,接完电话后再回来接着看书。,16,专业课,3)计算机中的中断概念,中断是指由于某种随机事件(甲方)的发生,计算机(乙方)暂停现行程序的运行,转去执行另一程序,以处理发生的事件,处理完毕后又自动返回原来的程序继续运行。 将能引起中断的事件称为中断源。 CPU现行运行的程序称为主程序。 处理随机事件的程序称为中断服务子程序。,17,专业课,4)相关的特殊功能寄存器,TCON,TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0,IE0/IE1:外部中断申请标志位: =0:没有外部中断申请; =1:有外部中断申请。,IT0/IT1

6、:外部中断请求的触发方式选择位: =0:在INT0/INT1端申请中断的信号低电平有效; =1:在INT0/INT1端申请中断的信号负跳变有效.,18,专业课,EA ET2 ES ET1 EX1 ET0 EX0,IE,19,专业课,3.2软件设计,1)初始化 51头文件、宏定义 2)主程序,即main()程序 灯的循环闪亮控制 中断初始化 3)延时功能 4)中断服务程序设计,20,专业课,3.2软件设计,中断初始化 触发方式设置 中断允许控制 中断服务程序设计,21,专业课,中断初始化 IT0=1; EA=1; EX0=1;,22,专业课,中断服务程序,函数名()interrupt n usi

7、ng m Void int0(void) interrupt 0 /* 外部中断0的服务函数定义,使用第二组工作寄存器组*/,23,专业课,void int0(void) interrupt 0 uchar a=0 xfe,i=16; P1=0 x0; delay(5000); P1=0 x0ff; delay(5000); P1=0 x0; delay(5000); P1=0 x0ff; delay(5000); do P1=a; delay(5000); a=_cror_(a,1); while(i-); ,24,专业课,4、通过定时,精确控制闪烁500ms。 针对任务一进行操作。,25,

8、专业课,使用定时器T0 1)设置定时器工作方式 2)计算初始值 3)编写初始化程序 4)编写中断服务程序,26,专业课,1)设置定时器工作方式,TMOD,27,专业课,2)计算初始值,晶振12Mhz 1个机器周期:,定时50ms,需要计数:,定时器初始值:,定时500ms,需要中断10次。,28,专业课,3)编写初始化程序,TMOD=0X01; TH0=0X3C; TL0=0XB0; EA=1; ET0=1; TR0=1;,29,专业课,4)编写中断服务程序,Void timer0(void) interrupt 1 TH0=0 x3c; TL0=0 xb0; i+; if(i=9) i=0;

9、 P1_0=P1_0; ,30,专业课,5、以秒为单位,用LED数码管显示当前计数值。,31,专业课,LED数码管显示电路原理,LED数码管的结构: (1)共阳 (2)共阴,32,专业课, 共阳数码管每个段笔画是用低电平(“0”)点亮, 共阴数码管段笔画是用高电平(“1”)点亮,公共阳极,h g f e d c b a,a,b,c,d,g,e,f,h,公共阴极,h g f e d c b a,a,b,c,d,g,e,f,h,h g f a,h g f a,高电平点亮,低电平点亮,接高电平,接地,33,专业课,要显示某个字形,就应使此字形的相应断码的二极管点亮,实际就是送一个用不同电平组合代表的

10、数据字(显示码)来控制LED的显示,此数据称为字符的段码或字形码。 共阴极和共阳极LED显示器段码不同。,34,专业课,共阳LED数码管: 公共端(字位) 接高电平, 笔划(字段) 置为低电平 就被点亮了,比如要显示“0” 须令a b c d e f 为“0” 电平,g h为“1”电平。,35,专业课,管脚识别小技巧: 用万用表测一下就可以了。数码管分为共阴极和共阳极。以共阴极为例: 先用万用表的正极(对于数字万用表为红色表笔)放在某一个管脚,另外一个负极依次去测量其他管脚。若没有一个管脚亮,说明正极接的是公共端(COM)。若亮,根据发光位置就可以判断引脚了,正极接的是相应的段码端(a,b,c

11、,dp),负极为对应数码管的公共端(C1,C2)。,36,专业课,4位一体共阴极LED数码管管脚分布如图所示:,37,专业课,5.1硬件设计,38,专业课,如果每个LED上要显示的数字不同,那么它在同一时刻是不能同时显示的。 用这种数码管都是动态显示的。(可以到网上去看下动态显示) 比如4个LED上要显示1234(假设是共阴极连接),39,专业课,4个LED上显示1234(假设共阴极连接) 过程如下: 首先选种第一个LED(即上面C1=0,C2=1,C3=1,C4=1) 送LED要显示的数据(abcdefg=“0110000”),如果要显示小数点dp=1 再延时一段时间(注意不能过长,不然看到

12、的连续显示的现象了,下面一样) 再选择第二个LED(即上面C1=1,C2=0,C3=1,C4=1) 送LED要显示的数据(abcdefg=1101101)如果要显示小数点dp=1 再延时一段时间 接下来是第三、第四个LED也一样。,40,专业课,5.2软件设计,1)定时中断服务程序 定时50ms,中断20次为1秒 每中断20次,计数1次。 2)显示程序 将显示数值分为:个位、十位、百位、千位,分别查表显示。,41,专业课,初始化:,uchar code a10=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;/段码组合,共

13、阴极 uchar m=0; /计数循环变量 uint n=0; /计数值,42,专业课,定时中断服务程序,void timer0(void) interrupt 1 TH0=0 x3C; TL0=0 xB0; m+; if(m=19) m=0; n+; P1_0=P1_0; ,43,专业课,显示程序,void display(void) P2=0 xf7,P0=an%10; delay(20); P2=0 xfb,P0=an%100/10; delay(20); P2=0 xfd,P0=an/100%10; delay(20); P2=0 xfe,P0=an/1000; delay(20); ,44,专业课,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1