单片机项目实践教程刘燎原-项目三手动计数器.ppt_第1页
单片机项目实践教程刘燎原-项目三手动计数器.ppt_第2页
单片机项目实践教程刘燎原-项目三手动计数器.ppt_第3页
单片机项目实践教程刘燎原-项目三手动计数器.ppt_第4页
单片机项目实践教程刘燎原-项目三手动计数器.ppt_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

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

文档简介

微控制器系统设计与应用,刘燎原,江苏建筑职业技术学院,实验1.KEIL使用步骤2.单片机开发板使用方法,烧录程序步骤3.K1按下,8个流水灯从上到下逐个点亮,若K1断开,8个流水灯从下到上逐个点亮,然后依次循环,#include/包含AT89X52.H头文件sbitk1=P34;unsignedcharcodesz1=0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf,0 xbf,0 x7f;voidDelay(unsignedintt)unsignedinti,j;for(i=0;it;i+)for(j=0;j120;j+);voidmain()unsignedcharm;while(1)if(k1=0)for(m=0;m8;m+)P1=sz1m;Delay(200);elsefor(m=0;m8;m+)P1=sz17-m;Delay(200);,循环完8次后再响应按键,#include/包含AT89X52.H头文件#includesbitk1=P34;voidDelay(unsignedintt)unsignedinti,j;for(i=0;it;i+)for(j=0;j120;j+);voidmain(void)P1=0 xfe;while(1)if(k1=0)P1=_crol_(P1,1);Delay(200);elseP1=_cror_(P1,1);Delay(200);,随时响应按键,按键控制,数码管显示控制,PROTEUS仿真,PROTEUS仿真,项目三手动计数器-单片机控制数码管静态显示,知识目标:1.掌握数码管的动态、静态显示不同、电路连接2.掌握查表指令3.掌握按键的编程4.掌握单片机的外部中断技能目标:1.掌握PROTEUS中数码管的共阴、共阳的不同2.掌握数码管和单片机的连接方法,1LED数码管简介(1)结构、工作原理由LED发光二极管组合显示字符的显示器件。它使用了8个LED发光二极管,其中7个用于显示字符,1个用于显示小数点,故通常称之为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口相连,每位数码管的和端接在一起,与一个位的相连。要在某一位数码管上显示字符时,首先和该数码管COM端相连的I/O口有效,然后从对应的口输出其显示代码即可特点为:数码管轮流点亮适用场合:由于可以节省I/O线,所以用于多个数码管显示的场合。,2.应用例1:设计电路,程序,使1位数码管(共阳)依次显示0F,每个数字的显示时间是1s.电路:,程序清单:#includeunsignedcharcodesz1=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 x88,0 x83,0 xc6,0 xa1,0 x86,0 x8e;voiddelay(unsignedinta)unsignedchari;while(a-)for(i=0;i120;i+);voidmain()unsignedcharj;while(1)for(j=0;j16;j+)P2=sz1j;delay(1000);看仿真效果,例2:用开关控制LED显示设计电路程序,用8个开关作为输入,8个发光二极管作为输出,显示8位开关的二进制数。,#includevoiddelay(unsignedinta)unsignedchari;while(a-)for(i=0;i120;i+);voidmain()unsignedcharm;while(1)m=P2;P1=m;delay(1000);,例3:用开关控制数码管显示设计电路和程序,用开关作为输入元件,用数码管显示4位开关的二进制数。(例如4个开关都闭合,则4个开关状态0000,则数码管显示0。以此类推),程序清单:#includeunsignedcharcodesz1=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 x88,0 x83,0 xc6,0 xa1,0 x86,0 x8e;voiddelay(unsignedinta)unsignedchari;while(a-)for(i=0;i120;i+);voidmain()unsignedcharm;P1=0 xff;while(1)m=P1;m=m,例4:设计计数器(099),两位数码管显示静态显示,#includeunsignedcharcodesz1=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 x88,0 x83,0 xc6,0 xa1,0 x86,0 x8e;voiddelay(unsignedinta)unsignedchari;while(a-)for(i=0;i120;i+);voidmain()unsignedcharm,i,j;while(1)for(m=0;m100;m+)i=m/10;j=m%10;P2=sz1i;P3=sz1j;delay(1000);,例5:设计可以记录按键次数的计数器(099),两位数码管显示静态显示,#includesbits1=P32;unsignedcharcodesz1=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 x88,0 x83,0 xc6,0 xa1,0 x86,0 x8e;voiddelay(unsignedinta)unsignedchari;while(a-)for(i=0;i120;i+);voidmain()unsignedcharm=0,i,j;while(1)if(s1=0)delay(10);if(s1=0)while(s1=0);m+;if(m=100)m=0;i=m/10;j=m%10;P0=sz1i;P2=sz1j;,情境二倒计时项目三数码管显示控制-单片机控制数码管动态显示,一、LED数码管的显示方式a.静态LED显示器电路数码管的COM端接不变的高/低电平,每位数码管的和端与一个位的相连。要在某一位数码管上显示字符时,只要从对应的口输出其显示代码即可特点为:数码管恒定地亮,显示某个数值,直到显示字符改变为止适用场合:由于太占据I/O线,所以用于1个或较少数码管显示的场合。,b.动态LED显示器电路每个数码管的COM端和不同的I/O口相连,每位数码管的和端接在一起,与一个位的相连。要在某一位数码管上显示字符时,首先和该数码管COM端相连的I/O口有效,然后从对应的口输出其显示代码即可特点为:数码管轮流点亮适用场合:由于可以节省I/O线,所以用于多个数码管显示的场合。优点:当显示位数较多时,采用动态显示方式比较节省I/O口,硬件电路也较静态显示简单。缺点:其稳定度不如静态显示方式。而且在显示位数较多时CPU要轮番扫描,占用CPU较多的时间。,二动态显示的几点说明1.原理2.延时时间(1)为什么加延时因为人眼睛有视觉停留的效果,只要图像变化不小于24桢看起来就是连续的。电影就是这个原理制成的。数码管也一样。(2)扫描时间长短扫描频率只要大于24hz就行了,即扫描一次时间小于40ms.若是多个led显示的话,则每个led的显示扫描时间应小于40ms/led个数。(一般最小为1ms)扫描时间太长(扫描太慢),看起来会有闪烁的感觉,或者不能形成有效数字,只是单个显示的循环了。如果扫描时间太短(扫描太快),就会造成显示为全亮(但亮度不是很高),但是有个别亮度会大一些。(3)方法加延时程序(1ms的延时程序)让学生画出动态显示电路3.LED限流电阻的估算电阻选择不合适,会使数码管不亮或烧坏。每段LED电流可设为10mA左右。,4.数码管驱动:(1)原因单片机的I/O口提供的电很小,以P1口为例,输出电流只能驱动4个LSTTL负载,输出电流很小,微安极。而点亮数码管一般需要较大的电流.每段电流为10mA。所以要加驱动电路,增加I/O口的驱动能力,增大电流。否则在数码管较多的时候,会出现颜色太暗,有时候甚至会缺笔。(2)电路可以用三极管:8550(PNP),8050(NPN)(设计电路时注意结合三极管电流的流向来接共阳或共阴的数码管)译码器:74HC138驱动器:74LS245锁存器:74HC573反相器:74ls04等增加驱动能力。,1.加三极管作驱动共阴数码管共阳数码管80508550,1.加三极管作驱动,2.加锁存器(74HC573)作驱动,段值端,位选端,3.加译码器(74HC138)作驱动,5.举例例:用四位数码管显示1234电路设计,对于每个数码管,显示步骤:1.送段值2.送位选信号3.延时4.关闭(有时可省),#include#includeunsignedcharcodesz1=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 x88,0 x83,0 xc6,0 xa1,0 x86,0 x8e;voiddelay(unsignedinta)unsignedchari;while(a-)for(i=0;i125;i+);voidmain()unsignedcharm,i;m=0 xfe;while(1)for(i=1;i5;i+)P2=sz1i;/数码管动态显示1步-送段值P1=m;/数码管动态显示2步-位选有效delay(5);/数码管动态显示3步-延时P1=0 xff;/数码管动态显示4步-关闭m=_crol_(m,1);,例2:设计可以记录按键次数的计数器(099),两位数码管显示动态显示,#includeunsignedcharcodesz1=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 x88,0 x83,0 xc6,0 xa1,0 x86,0 x8e;sbitseg1=P36;sbitseg2=P37;voiddelay(unsignedinta)unsignedchari;while(a-)for(i=0;i120;i+);voidmain()unsignedcharm,i,j,t;P3=0 xff;while(1)for(m=0;m100;m+)/for(t=0;t80;t+)i=m/10;j=m%10;P2=sz1i;seg1=0;delay(10);P3=0 xff;P2=sz1j;seg2=0;delay(10);P3=0 xff;,实验:单片机和数码管连接如图所示,要求编程,数码管循环显示000-999。若循环显示00.0-99.9,怎么修改程序?,2.加锁存器(74HC573)作驱动,段值端,位选端,假设要求第一个数码管先显示2,则:P0输出段值5BH,P2.6=1(数据进入),P2.6=0(数据锁存),段值送入数码管的段值端;P0输出位选值FEH,P2.7=1(数据进入),P2.7=0(数据锁存),位选值送入数码管的位选端;则显示2,#includesbitdzh=P26;/段选信号的锁存器控制sbitweix=P27;/位选信号的锁存器控制unsignedcharcodesz1=0 x3F,0 x06,0 x5B,0 x4F,0 x66,0 x6d,0X7d,0X07,0X7f,0X6f;/数码管段值数组unsignedcharcodesz2=0 xfe,0 xfd,0 xfb;/数码管位选信号数组unsignedcharsz3=0 x00,0 x00,0 x00;voiddelay(unsignedinta)unsignedintb;while(a-)for(b=0;b125;b+);voidmain()unsignedchari,u,v,w,t;unsignedintm;while(1)for(m=0;m1000;m+)u=m/100;v=m/10%10;w=m%10;sz30=u;sz31=v;sz32=w;for(t=0;t100;t+)for(i=0;i3;i+)P0=sz1sz3i;dzh=1;dzh=0;P0=sz2i;weix=1;weix=0;delay(1);,实验总结,1.什么是动态显示2.动态显示步骤1个数码管步骤:(1)送段值(2)送位选(公共端)(3)延时(4)关闭3.为什么加驱动4.加驱动方法三极管锁存器,实验总结:,实验板数码管动态显示,假设要求第一个数码管先显示百位(例如2),则:1.送段值:P0输出段值5BH,P2.6=1(数据进入),P2.6=0(数据锁存),段值送入数码管的段值端;2.送位选:P0输出位选值FEH,P2.7=1(数据进入),P2.7=0(数据锁存),位选值送入数码管的位选端;3.延时其他两个数码管类似这三个步骤。,#includesbitdzh=P26;/段选信号的锁存器控制sbitweix=P27;/位选信号的锁存器控制unsignedcharcodesz1=0 x3F,0 x06,0 x5B,0 x4F,0 x66,0 x6d,0X7d,0X07,0X7f,0X6f;/数码管段值数voiddelay(unsignedinta)unsignedintb;while(a-)for(b=0;b125;b+);voidmain()unsignedcharu,v,t;unsignedintm;while(1)for(m=0;m100;m+)u=m/10;v=m%10;P0=sz1U;dzh=1;dzh=0;P0=0Xfe;weix=1;weix=0;delay(5);P0=sz1v;dzh=1;dzh=0;P0=0Xfe;weix=1;weix=0;delay(5);,for(t=0;t50;t+),项目三手动计数器-单片机的外部中断,一、中断系统,(一)、中断基本概念1.中断定义,执行主程序,主程序,继续执行主程序,断点,中断响应,执行中断处理程序,中断返回,在单片机中,当CPU在执行程序时,由单片机内部或外部的原因引起的随机事件要求CPU暂时停止正在执行的程序,而转向执行一个用于处理该随机事件的程序,处理完后又返回被中止的程序断点处继续执行,这一过程就称为中断。单片机处理中断的4个步骤:中断请求、中断响应、中断处理和中断返回。向CPU发出中断请求的来源,或引起中断的原因称为中断源。中断源要求服务的请求称为中断请求。中断源可分为两大类:一类来自单片机内部,称之为内部中断源;另一类来自单片机外部,称之为外部中断源。,(二)、单片机的中断系统,1中断源(5个)向CPU发出中断请求的来源,或引起中断的原因称为中断源。(1).外部中断类外部中断是由外部原因(如打印机、键盘、控制开关、外部故障)引起的,可以通过两个固定引脚来输入到单片机内的信号,即外部中0(INT0)和外部中断1(INT1)。外部中断(INT0)请求信号输入引脚为3.2。当CPU检测到P3.2引脚上出现有效的中断信号时,向申请中断。外部中断(INT1)请求信号输入引脚为.3。当检测到P3.3引脚上出现有效的中断信号时,向申请中断。(2).定时中断类定时中断是由内部定时(或计数)溢出或外部定时(或计数)溢出引起的,即定时器0(T0)中断和定时器1(T1)中断。当定时器对单片机内部定时脉冲进行计数而发生计数溢出时,即表明定时时间到,申请中断;或者当定时器对单片机外部计数脉冲进行计数而发生计数溢出时,即表明计数次数到,申请中断。片内定时计数器溢出中断(TF0):当定时计数器T0发生溢出时,置位TF0,并向CPU申请中断。片内定时计数器溢出中断(TF1):当定时计数器T1发生溢出时,置位TF1,并向CPU申请中断。(3).串行口中断类串行口中断是为接收或发送串行数据而设置的。串行接口中断,包括或。当发送或接收完一帧数据时,向CPU申请中断。,2中断入口地址中断服务子程序的入口地址。因为相邻中断入口地址间的间隔为8个单元,所以一般在这些入口地址处存放一条跳转指令,跳到真正的中断服务程序例如:AJMPINT0,3.中断优先级、优先权、中断嵌套几个中断源同时请求中断;或者当某一个中断正在响应中(即正在执行该中断源的中断服务程序),又有其它的中断源请求中断,这时中断系统应如何处理呢?(优先级)MCS-51单片机的中断系统,只规定了两个中断优先级:高优先级中断或低优先级中断。这需要用指令预先设置在同1个优先级中,对5个中断源的优先次序安排如下(优先权)几个原则:(1)不同级的中断源同时申请中断时先高后低;(2)同级的中断源同时申请中断时事先规定;(3)处理低级中断又收到高级中断请求时停低转高;(中断嵌套)(4)处理高级中断又收到低级中断请求时高不理低,(三)、与中断控制相关的寄存器(掌握)有4个(特殊功能寄存器)TCON-定时控制寄存器,IE-中断允许控制寄存器,主要用于控制中断的开放和关闭。IP-中断优先级控制寄存器,主要用于设定优先级别。SCON-及串行口控制寄存器1IE(interruptenable)中断允许控制寄存器,字节地址为A8H由于单片机没有专门的开中断和关中断指令,个中断源中断的开放和关闭是通过中断允许寄存器进行两级控制的只有对应的中断允许触发器被置“1”,CPU才能响应该中断.0禁止,1允许各位的功能说明:(1)EA(IE.7):CPU中断总允许位。EA=1,CPU开放中断。每个中断源是被允许还是被禁止,分别由各中断源的中断允许位确定;EA=0,CPU屏蔽所有的中断要求,称为关中断。(2)ES(IE.4):串行口中断允许位。ES=1,允许串行口中断;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和定时器1MOVIE,#89H也可位操作SETBEASETBET1SETBEX0,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启、停控制位。其功能同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.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):串行口中断优先级控制位。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为低优先级中断。,四、中断过程(了解)单片机处理中断的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及其他寄存器内容)然后将中断源对应的中断入口地址装入程序计数器PC中,使程序转向该中断入口地址,3.执行中断服务程序保护现场(ACC,PSW,DPTR),用PUSH指令执行中断服务程序主体恢复现场4.中断返回(RETI)恢复断点地址开放响应中断时屏蔽的中断5.中断响应等待时间和中断请求的撤除(1)中断响应等待时间(2)中断请求的撤除CPU响应某中断请求后,在中断返回前,应该撤消该中断请求,否则会重复响应该中断。不同中断源中断请求的撤除方法是不一样的。(1)硬件自动撤除TF0,TF1,边沿触发的外部中断请求标志IE0,IE1(2)软件撤除串行通信的发送完、接收完中断标志TI,RI(3)外加电路撤除电平触发的外部中断请求标志IE0,IE1(书上),一、电路设计外部中断(P3.2或P3.2)二、软件设计1、主程序(1)在产生中断请求前,完成中断初始化(设置3个寄存器)a.开放CPU中断和有关中断源的中断允许,设置中断允许寄存器IE中相应的位。b.根据需要确定各中断源的优先级别,设置中断优先级寄存器IP中相应的位c.根据需要确定外部中断的触发方式,设置定时器控制寄存器TCON中相应的位。(2)等待中断来2.中断服务程序voidlsd()interrupt0,二、中断应用举例1设计电路和程序,8个发光二极管和1个开关。平时,8个灯循环点亮;当开关按下时,8个灯全亮然后全灭,如此循环8次后,返回平时状态。电路:,程序如下:#include#includevoiddelay(unsignedinta)unsignedchari;while(-a!=0)for(i=0;i125;i+);voidlsd()interrupt0unsignedcharj;for(j=0;j8;j+)P1=0 x00;delay(1000);P1=0 xff;delay(1000);voidmain()unsignedchari,m;EA=1;EX0=1;IT0=1;P1=0 x7f;,while(1)for(i=0;i8;i+)m=_crol_(m,1);考虑此处直接用P1是否可以?P1=m;delay(1000);看仿真效果,回顾:,(一)动态显示1.什么是动态显示2.动态显示步骤1个数码管步骤:(1)送段值(2)送位选(公共端)(3)延时(4)关闭3.加驱动方法三极管锁存器,回顾:,(二)中断1.中断源5个2.中断优先级2个3.外部中断P3.2,P3.34.外部中断寄存器IE:EA,EX0,ET0,EX1,ET1,ESTCON:IE0,IT0,IE1,IT1IP:PX0,PT0,PX1,PT1,PS中断程序如何编写?,例:记录按键的次数(2位数码管动态显示),从0开始计按键次数。,分析:,1.是否要用外部中断2.主程序做什么?中断初始化,显示中断程序做什么?按键计数,自加13.对应编写程序主程序中断程序,#include/包含AT89X52.H头文件unsignedcharcodesz1=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 x88,0 x83,0 xc6,0 xa1,0 x86,0 x8e;unsignedcharm;sbitdua=P36;sbitwei=P37;voiddelay(unsignedinta)unsignedchari;while(a-)for(i=0;i120;i+);voiddisp(unsignedcharm)unsignedchari,j;i=m/10;j=m%10;P2=sz1i;dua=0;delay(5);P3=0XFF;P2=sz1j;wei=0;delay(5);P3=0XFF;,voidmain()EA=1;EX0=1;IT0=1;while(1)disp(m);voidzd0()interrupt0m+;if(m=100)m=0;,实验:在开发板上实现按键计数器。,2.设计电路和程序,2个开关(简称为S1和S2),2个数码管(简称为L1和L2),平时L1、L2循环显示0099。当S1按下时,L1显示04,然后全暗,返回平时状态;当S2按下时,L2显示04,然后全暗,返回平时状态。S1的优先级高于S2。电路:,程序如下:#includeunsignedcharcodesz1=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 x88,0 x83,0 xc6,0 xa1,0 x86,0 x84;voiddelay(unsignedinta)unsignedchari;while(a-)for(i=0;i120;i+);voidsmg0()interrupt0unsignedchart;for(t=0;t5;t+)P0=sz1t;delay(1000);P0=0 xff;voidsmg1()interrupt2unsignedcharn;for(n=0;n5;n+)P2=sz1n;delay(1000);P2=0 xff;,voidmain()unsignedcharm,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;d

温馨提示

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

评论

0/150

提交评论