收藏 分享(赏)

情境二 项目一.ppt

上传人:s36f12 文档编号:10212879 上传时间:2019-10-21 格式:PPT 页数:44 大小:894.50KB
下载 相关 举报
情境二 项目一.ppt_第1页
第1页 / 共44页
情境二 项目一.ppt_第2页
第2页 / 共44页
情境二 项目一.ppt_第3页
第3页 / 共44页
情境二 项目一.ppt_第4页
第4页 / 共44页
情境二 项目一.ppt_第5页
第5页 / 共44页
点击查看更多>>
资源描述

1、微控制器系统设计与应用,刘燎原,徐州建筑职业技术学院,倒计时的制作,开关控制的数码管,PROTEUS仿真,倒计时电路板,情境二 倒计时项目一 开关控制的数码管(1)(两种方法)-第一种方法:单片机控制数码管静态显示,知识目标: 1.掌握数码管的动态、静态显示不同、电路连接 2. 掌握查表指令 3.掌握按键的编程 4.掌握单片机的外部中断技能目标: 1.掌握PROTEUS中数码管的共阴、共阳的不同 2.掌握数码管和单片机的连接方法,1LED数码管简介 (1)结构、工作原理由LED发光二极管组合显示字符的显示器件。它使用了8个LED发光二极管,其中7个用于显示字符,1个用于显示小数点,故通常称之为

2、7段(也有称作8段)发光二极管数码显示器。,a,b,c,d,e,f,g,dp,“8”字型LED数码管结构及原理,COM,COM,(2)LED的编码方式,表 十六进制数及空白字符与P的显示段码,(3)LED数码管的显示方式 a.静态LED显示器电路数码管的COM端接不变的高/低电平,每位数码管的和端与一个位的 相连。 要在某一位数码管上显示字符时,只要从对应的 口输出其显示代码即可 特点为:数码管恒定地亮,显示某个数值,直到显示字符改变为止 适用场合:由于太占据I/O线,所以用于1个或较少数码管显示的场合。,b.动态LED显示器电路每个数码管的COM端和不同的I/O口相连,每位数码管的和端接在一

3、起,与一个位的 相连。 要在某一位数码管上显示字符时,首先和该数码管COM端相连的I/O口有效,然后从对应的 口输出其显示代码即可 特点为:数码管轮流点亮 适用场合:由于可以节省I/O线,所以用于多个数码管显示的场合。,2.应用 例1:设计电路,程序,使1位数码管(共阳)依次显示0F,每个数字的显示时间是1s. 电路:,程序清单: #include unsigned char code sz1=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x84 ; void delay(unsigned

4、 int a) unsigned char i;while(a-) for(i=0;i120;i+); void main() unsigned char i;while (1) for(i=0;i16;i+) P2=sz1i;delay(1000); 看仿真效果,例2:用开关控制LED显示 设计电路程序,用8个开关作为输入,8个发光二极管作为输出,显示8位开关的二进制数。,#include unsigned int i; void delay(unsigned int a) unsigned char i;while(a-) for(i=0;i120;i+); void main() uns

5、igned char m;while(1)m=P1;P2=m;delay(1000); ,例3:用开关控制数码管显示 设计电路和程序,用开关作为输入元件,用数码管显示4位开关的二进制数。,程序清单: #include unsigned char code sz1=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x84 ; void delay(unsigned int a) unsigned char i;while(a-) for(i=0;i120;i+); void main() uns

6、igned char m; P1=0xff;while(1) m=P1;m=m; P2=sz1m;delay(1000); ,例4:设计计数器(099),两位数码管显示 (1)静态显示 (2)动态显示 例5:设计可以记录按键次数的计数器(099),两位数码管显示 (1)静态显示 (2)动态显示,情境二 倒计时项目一 开关控制的数码管(1)(两种方法)-第二种方法:中断实现,一、 中断系统,(一)、中断基本概念 1. 中断定义,执行主程序,主程序,继续执行主程序,断点,中断响应,执行中断处理程序,中断返回,在单片机中,当CPU在执行程序时,由单片机内部或外部的原因引起的随机事件要求CPU暂时停止

7、正在执行的程序,而转向执行一个用于处理该随机事件的程序,处理完后又返回被中止的程序断点处继续执行,这一过程就称为中断。 单片机处理中断的4个步骤:中断请求、中断响应、中断处理和中断返回。 向CPU发出中断请求的来源,或引起中断的原因称为中断源。中断源要求服务的请求称为中断请求。 中断源可分为两大类:一类来自单片机内部,称之为内部中断源;另一类来自单片机外部,称之为外部中断源。,(二)、单片机的中断系统,1中断源(5个) 向CPU发出中断请求的来源,或引起中断的原因称为中断源。 (1). 外部中断类 外部中断是由外部原因(如打印机、键盘、控制开关、外部故障)引起的,可以通过两个固定引脚来输入到单

8、片机内的信号,即外部中0(INT0)和外部中断1(INT1)。 外部中断(INT0)请求信号输入引脚为3.2。当CPU检测到P3.2引脚上出现有效的中断信号时,向申请中断。 外部中断(INT1)请求信号输入引脚为.3 。当 检测到P3.3引脚上出现有效的中断信号时,向申请中断。 (2). 定时中断类 定时中断是由内部定时(或计数)溢出或外部定时(或计数)溢出引起的,即定时器0(T0)中断和定时器1(T1)中断。 当定时器对单片机内部定时脉冲进行计数而发生计数溢出时,即表明定时时间到,申请中断;或者当定时器对单片机外部计数脉冲进行计数而发生计数溢出时,即表明计数次数到,申请中断。 片内定时计数器

9、溢出中断(TF0):当定时计数器T0发生溢出时,置位TF0,并向CPU申请中断。 片内定时计数器溢出中断(TF1):当定时计数器T1发生溢出时,置位TF1,并向CPU申请中断。 (3). 串行口中断类 串行口中断是为接收或发送串行数据而设置的。 串行接口中断,包括 或。当发送或接收完一帧数据时,向CPU申请中断。,2中断入口地址 中断服务子程序的入口地址。因为相邻中断入口地址间的间隔为8个单元,所以一般在这些入口地址处存放一条跳转指令,跳到真正的中断服务程序 例如: AJMP INT0,3. 中断优先级、优先权、中断嵌套 几个中断源同时请求中断;或者当某一个中断正在响应中(即正在执行该中断源的

10、中断服务程序),又有其它的中断源请求中断,这时中断系统应如何处理呢?(优先级) MCS-51单片机的中断系统,只规定了两个中断优先级:高优先级中断或低优先级中断。这需要用指令预先设置 在同1个优先级中,对5个中断源的优先次序安排如下(优先权)几个原则:(1)不同级的中断源同时申请中断时先高后低;(2)同级的中断源同时申请中断时事先规定;(3)处理低级中断又收到高级中断请求时停低转高;(中断嵌套)(4)处理高级中断又收到低级中断请求时高不理低,(三)、与中断控制相关的寄存器(掌握) 有4个(特殊功能寄存器) TCON-定时控制寄存器, IE-中断允许控制寄存器,主要用于控制中断的开放和关闭。 I

11、P-中断优先级控制寄存器,主要用于设定优先级别。 SCON-及串行口控制寄存器 1IE(interrupt enable)中断允许控制寄存器,字节地址为A8H 由于单片机没有专门的开中断和关中断指令,个中断源中断的开放和关闭是通过中断允许寄存器 进行两级控制的只有对应的中断允许触发器被置“1”,CPU才能响应该中断.0 禁止,1允许 各位的功能说明: (1) EA(IE.7):CPU中断总允许位。EA=1,CPU开放中断。每个中断源是被允许还是被禁止,分别由各中断源的中断允许位确定;EA=0,CPU屏蔽所有的中断要求,称为关中断。 (2) ES(IE.4):串行口中断允许位。ES=1,允许串行

12、口中断;ES=0,禁止串行口中断。 (3) ET1(IE.3):定时器1中断允许位。ET1=1,允许定时器1中断;ETl=0,禁止定时器1中断。,(4) EX1(IE.2):外部中断1中断允许位。EX1=1,允许外部中断1中断;EX1=0,禁止外部中断1中断。 (5) ET0(IE.1):定时器0中断允许位。ET0=1,允许定时器0中断;ET0=0,禁止定时器0中断。 (6) EX0(IE.0):外部中断0中断允许位。EX0=1,允许外部中断0中断;EX0=0,禁止外部中断0中断。 例如:开放外部中断0和定时器1 MOV IE,#89H也可位操作 SETB EA SETB ET1 SETB E

13、X0,2TCON定时、外中断控制寄存器,字节地址为88H 定时器控制寄存器TCON的作用是控制定时器的启动与停止,并保存T0、T1的溢出中断标志和外部中断、的中断标志。(1) TF1(TCON.7):定时器1溢出标志位。定时器1被启动计数后,从初值开始进行加1计数,当定时器1计满溢出时,由硬件自动使TF1置1,并申请中断。该标志一直保持到CPU响应中断后,才由硬件自动清0。也可用软件查询该标志,并由软件清0。 (2) TR1(TCON.6):定时器1启停控制位。 (3) TF0(TCON.5):定时器0溢出标志位。其功能同TF1。 (4) TR0(TCON.4):定时器0启、停控制位。其功能同

14、TR1。 (5) IE1(TCON.3):外部中断1请求标志位。IEl=1表示外部中断1向CPU申请中断。当CPU响应外部中断1的中断请求时,由硬件自动使IE1清0(边沿触发方式)。 (6) IT1(TCON.2):外部中断1触发方式选择位。当ITl=0时,外部中断1为电平触发方式。若P3.3为低电平,则认为有中断申请;若为高电平,认为无中断申请或中断申请已撤除。当ITl=1时,外部中断1为边沿触发方式。若P3.3为下降沿,则认为有中断申请。 (7) IE0(TCON.1):外部中断0请求标志位。其功能同IE1。 (8) IT0(TCON.0):外部中断0触发方式选择位。其功能同IT1。,3.

15、SCON串口控制寄存器,字节地址为98H低2位TI和RI保存串行口的接收中断和发送中断标志。 (1)TI (SCON.1):串行发送中断请求标志。CPU将一个字节数据写入发送缓冲器SBUF后启动发送,每发送完一帧数据,硬件自动使TI置1。但CPU响应中断后,硬件并不能自动使TI清0,必须由软件使TI清0。 (2) RI (SCON.0):串行接收中断请求标志。在串行口允许接收时,每接收完一帧数据,硬件自动使RI置1。但CPU响应中断后,硬件并不能自动使RI清0,必须由软件使RI清0。,4.IP中断优先级控制寄存器 中断优先级寄存器IP的作用是设定各中断源的优先级别。(1) PS(IP.4):串

16、行口中断优先级控制位。PS=1,串行口为高优先级中断;PS=0,串行口为低优先级中断。 (2) PT1(IP.3):定时器1中断优先级控制位。PT1=1,定时器1为高优先级中断;PTl=0,定时器1为低优先级中断。 (3) PX1(IP.2):外部中断1中断优先级控制位。PX1=1,外部中断1为高优先级中断;PXl=0,外部中断1为低优先级中断。 (4) PT0(IP.1):定时器0中断优先级控制位。PT0=1,定时器T0为高优先级中断PT0=0,定时器0为低优先级中断。 (5) PX0(IP.0):外部中断0中断优先级控制位。PX0=1,外部中断0为高优先级中断;PX0=0,外部中断0为低优

17、先级中断。,四、中断过程(了解)单片机处理中断的4个步骤:中断请求、中断响应、中断处理和中断返回。 1.中断请求外部中断源-P3.2或P3.3,有效信号-IE0或IE1硬件置1,向CPU提出中断请求T0或T1发生溢出-TF0或TF1硬件置1,向CPU提出中断请求 2.中断响应 中断响应条件:中断总允许位EA=1,请求中断的中断源的中断允许位为1无同级或高级中断正在服务;当前指令周期结束;正在执行指令不是RETI、RET或访问IE、IP指令 中断响应过程:屏蔽同级和低级中断源的中断请求清除该中断源的中断请求标志位(硬件或软件清0)保护断点,把断点地址压入堆栈保护(但不保护状态寄存器PSW及其他寄

18、存器内容)然后将中断源对应的中断入口地址装入程序计数器PC中,使程序转向该中断入口地址,3.执行中断服务程序保护现场(ACC,PSW,DPTR),用PUSH指令执行中断服务程序主体恢复现场 4.中断返回(RETI)恢复断点地址开放响应中断时屏蔽的中断 5.中断响应等待时间和中断请求的撤除 (1)中断响应等待时间 (2)中断请求的撤除CPU响应某中断请求后,在中断返回前,应该撤消该中断请求,否则会重复响应该中断。不同中断源中断请求的撤除方法是不一样的。 (1)硬件自动撤除TF0,TF1,边沿触发的外部中断请求标志IE0,IE1 (2)软件撤除串行通信的发送完、接收完中断标志TI,RI (3)外加

19、电路撤除电平触发的外部中断请求标志IE0,IE1(书上),情境二 倒计时项目一 开关控制的数码管(2)-相关软件指令的学习,一、电路设计外部中断(P3.2或P3.2),TF0、TF1(内部定时器,外部计数脉冲输入P3.4或P3.5),TI、RI 二、软件设计 1、主程序在产生中断请求前,即主程序中完成中断初始化(设置3个寄存器) (1)开放CPU中断和有关中断源的中断允许,设置中断允许寄存器IE中相应的位。 (2)根据需要确定各中断源的优先级别,设置中断优先级寄存器IP中相应的位 (3)根据需要确定外部中断的触发方式,设置定时器控制寄存器TCON中相应的位。 (4)设定SP的初值 2.中断服务

20、程序在中断入口地址处存放一条跳转指令保护现场清除中断标志位,相关操作恢复现场RETI,二、中断应用举例 1设计电路和程序,8个发光二极管和1个开关。平时,8个灯循环点亮;当开关按下时,8个灯全亮然后全灭,如此循环8次后,返回平时状态。 电路:,程序如下: #include #include void delay(unsigned int a) unsigned char i;while(-a!= 0) for(i=0;i125;i+); void lsd() interrupt 0 unsigned char j;for(j=0;j8;j+) P1=0x00;delay(1000);P1=0x

21、ff;delay(1000); void main() unsigned char i,m;EA=1;EX0=1;IT0=1; P1=0x7f;,while (1) for(i=0;i8;i+) m=_crol_(m,1); 考虑此处直接用P1是否可以?P1=m;delay(1000); 看仿真效果,2.设计电路和程序,2个开关(简称为S1和S2),2个数码管(简称为L1和L2),平时L1、L2循环显示0099。当S1 按下时,L1显示04,然后全暗,返回平时状态;当S2 按下时,L2显示04,然后全暗,返回平时状态。S1的优先级高于S2。 电路:,程序如下: #include unsigne

22、d char code sz1=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x84; void delay(unsigned int a) unsigned char i;while(a-) for(i=0;i120;i+); void smg0() interrupt 0 unsigned char t;for(t=0;t5;t+) P0=sz1t;delay(1000); P0=0xff; void smg1() interrupt 2 unsigned char n;for(n=0

23、;n5;n+) P2=sz1n;delay(1000); P2=0xff; ,void main() unsigned char m,i,j; P0=0XFF;P2=0XFF;EA=1;EX0=1;EX1=1;IT0=1;IT1=1;while(1) for(m=0;m100;m+) i=m/10;j=m%10;P0=sz1i;P2=sz1j;delay(1000); ,例3:记录按键次数。,#include #include unsigned char code sz1=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0

24、xc6,0xa1,0x86,0x84,0x8e; unsigned char m=0; void delay(unsigned int a) unsigned char i;while(-a!= 0) for(i=0;i125;i+); void disp(unsigned char m) unsigned char i,j;i=m/10;j=m%10;P0=sz1i;P2=sz1j;delay(1000); ,void lsd() interrupt 0 if(m99)m+; elsem=0; void main() P0=0XFF; P2=0XFF; EA=1; EX0=1; EX1=1;

25、 IT0=1; IT1=1; while(1) disp(m); ,三、外部中断的扩展对多个外部中断源,采用中断加查询相结合的方法响应中断扩展电路原理如下图所示。多个外部中断源通过多个OC门电路组成线或电路后与P3.2(P3.3)相连,同时,每一个外部中断源将并行I/O口(如P1口)作为多个外部中断源的识别线。 方法:在多个外部中断源中若有一个或几个为高电平则输出为0,则P3.2(P3.3)为低电平,向CPU发出中断请求;CPU在执行中断服务程序时,先依次查询P1口的中断源输入状态,然后转入到相应的中断服务程序。 应用:中断加查询扩展法比较简单,但当外部中断源的个数较多时,因查询时间较长,不能满足实时控制的要求。,实验:记录按键的次数(2位数码管动态显示),并且设置一个清零键。按下清零键,从0开始计按键次数。,

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报