版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机原理及应用文桦项目三简易加减计数器和交通信号灯设计任务1
简易加减计数器的设计1.技能要求单片机输出口接3位数码管和三个独立按键,这3位数码管分别显示一个变量的个位、十位和百位,三个按键分别作为“加”、“减”和“清零”功能,当按下“加”键时,数码管显示的变量加1,当按下“减”键时,数码管显示的变量减1,当按下“清零”键时,数码管显示和变量为0。知识链接一键盘接口电路独立联接式无编码键盘
独立联接式编码键盘
1、键盘的分类与结构◆独立联接式键盘◆矩阵联接式键盘◆屏幕键盘(触摸屏)◆无编码键盘◆编码键盘无编码,简单有效,键数较少时采用编码,节省I/O口线,键数较多时采用任务1
简易加减计数器的设计1.键盘的工作原理及去抖动
对应任何按键来说,由于机械触点的弹性作用,触点在闭合和断开瞬间的电接触情况不稳定,造成了电压信号的抖动现象,如图所示。按键的抖动时间一般为5ms~10ms。这种现象会引起单片机对于一次键操作进行多次处理,因此必须设法消除键接通或断开时的抖动现象。常用的去抖动方法有硬件和软件两种。闭合稳定理想波形实际波形前沿抖动后沿抖动任务1
简易加减计数器的设计a)硬件去抖硬件消抖可以采用R-S触发器或单稳电路构成去抖电路,分别如图所示。硬件消抖因为要增加硬件开销,造成电路复杂,除了在数字电路里使用外,在单片机系统中不太采用。任务1
简易加减计数器的设计
b)软件去抖在检测到有键按下时,执行一个10ms的延时程序后,再确认该键是否保持闭合状态。另外一种方法是连续判断按键所在线路的电平,如果连续100次(甚至更多)都出现低电平(一般按键都是低电平表示按下),就认为按键已经稳定,可以进行识别,这是企业实际开发产品中常用的方法。以P1.0所接按键为例,其编程流程图如图所示.
任务1
简易加减计数器的设计sbitkey=P1^0;key=1; //P1.0置“1”,作输入口if(key==0) //判断按键是否按下{delay10ms();//延时10msif(key==0)//再次判断按键是否按下{a++;//按键功能代码(变量a加“1”操作)while(key==0);//等待按键释放 }}任务1
简易加减计数器的设计
以单片机为基础的电子产品设计中,键盘是一种最为常见的人机交互设备。通常,键数较少、键盘的功能简单。1.简单键盘的扫描程序设计
★键盘扫描程序嵌入到主程序循环之中,与主程序一起构成主循环套。
★键敲击速度约几次/S,设计键盘扫描程序时,必须保证约100mS内就要循环扫描1次。任务1
简易加减计数器的设计任务1
简易加减计数器的设计任务1
简易加减计数器的设计读取值输出值键码键名P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.011101110EEH1#11011110DEH2#10111110BEH3#011111107EH4#11101101EDH5#11011101DDH6#10111101BDH7#011111017DH8#11101011EBH9#11011011DBH10#10111011BBH11#011110117BH12#11100111E7H13#11010111D7H14#10110111B7H15#0111011177H16#1111××××F×H无键
按键数量进一步增加时,采用矩阵联接式键盘可节省更多的口线,接口电路也更简单。1.1.2矩阵连接键盘键盘扫扫描程程序的的编写写(1)判别有有无键键按下下。(2)延时。。(3)键盘扫扫描取取得闭闭合键键的行行、列列值--键值。(4)用计算算法或或查表表法得得到键号。*(5)判断闭闭合键键是否否释放放,如如没释释放则则继续续等待待。(6)将闭合合键键号保存,然后返返回。。键盘扫扫描程程序一一般流流程::任务1简易加减计计数器器的设计计矩阵式式键盘盘的工工作原原理当键盘盘有键键按下下时,,要逐逐行或或逐列列扫描描,以以判断断是哪哪一个个键按按下。。通常常扫描描方式式有两两种::扫描描法和和反转转法。。任务1简易加减计计数器器的设计计矩阵连连接键键盘扫扫描知识链链接二二:数数码管管显示示技术术任务1简易加减计计数器器的设计计1.2.1七段LED显示器器通常的7段LED显示块中有有8个发光二极极管,故也也叫做8段显示器。。其中7个发光二极极管构成七七笔字形““8”,一个发发光二极管管构成小数数点。1.LED显示器的结结构与原理理任务1简易加减计数器器的设计2.LED显示器的显显示方式(1)LED静态显示方方式每一位显显示都占占用单独独的具有有锁存功功能的I/O接口,com端连接在在一起。。(2)LED动态显示示方式是将所有有数码管管的“a,b,c,d,e,f,g,dp”的同名端端连在一一起,每个数码码管的COM为各自独独立的位位选信号号。即在某一一时刻,,只让某某一位的的位选线线处于选选通状态态,而其其他各位位的位选选线处于于关闭状状态。任务1简易加减计数数器的设计显示器由由6个共阴极极LED数码管构构成;P0口输出显显示段码码,经由由一片74LS245驱动输出出给LED管;P1口输出位位码(片片选),,经由74LS05输出给LED管。动态扫描描过程任务1简易加减计数数器的设计首先从段段选线上上送出字字型编码码,再控控制位选选端,字字符就显显示在指指定数码码管上,,其他位位选端无无效的数数码管都都处于熄熄灭状态态,持续续1.5ms时间,然然后关闭闭所有显显示;接下来又又送出新新的字型型编码,,按照上上述过程程又显示示在另外外一位数数码管上上,直到到每一位位数码管管都扫描描完为止止,这一过程程即为动动态扫描描显示。数码管其其实是轮轮流依次次点亮的的,但由由于人的视觉觉驻留效效应,因此当每每个数码码管点亮亮的时间间小到一一定程度度时,人人就感觉觉不出字字符的移移动或闪闪烁,觉觉得每位位数码管管都一直直在显示示,达到到一种稳稳定的视视觉效果果。任务1简易加减计数数器的设计参考程序序如下::#include<reg51.h>unsignedcharcodeTab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C};unsignedcharcodeCol[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};voidDelay(){unsignedchari;for(i=0;i<250;i++);}voidmain()//同时显示示123456{unsignedcharj;while(1){for(j=1;j<7;j++){P0=Tab[j];P1=Col[j-1];//开第一个个(共阴阴)数码码管Delay();P1=0xff;//关数码管管Delay();}}}任务1简易加减计数数器的设计1.3数码管显显示4×4键盘编号号1.技能要求求单片机P2接1位数码管管,P1口接由16个按键组组成的4×4行列键盘盘。当按按下这16个按键的的其中之之一时,,数码管管显示该该按键对对应的键键盘编号号。任务1简易加减计数数器的设计.仿真电路路图数码管显显示4×4键盘编号号的电路路图如下图所示,电电路中的的轻触按按键使用用元件库库中的““button””元件,特特别注意16个按键的的连接关关系及其其和单片片机之间间的连接接关系。。任务务1简易易加减减计计数数器器的设设计计.程序序设设计计与与调调试试程序序采采用用线线翻翻转转法法识识别别闭闭合合键键,,反转转法法原原理理::行作作低低电电平平输输出出,,列列作作输输入入,,读读列列线线;;列列作作低低电电平平输输出出,,行行作作输输入入,,读读行行线线。。数数码码管管静静态态显显示示方方式式。。任务务1简易易加减减计计数数器器的设设计计intmain(){while(1){keyScan();}}}}delay(unsignedinti){while(i--);}voidkeyScan(){unsignedchartemp,a;temp=0xff;P1=0xf0;if(P1!=0xf0)//判断断是是否否有有按按键键按按下下{delay(1000);//延时时去去抖抖if(P1!=0xf0)//再次次判判断断是是否否有有按按键键按按下下{P1=0xf0;//行作作输输出出,,列列作作输输入入temp=P1;//读取取列列值值P1=0x0f;//列作作输输出出,,行行作作输输入入temp=temp|P1;//读取取行行值值并并和和列列值值合合并并switch(temp){case0xee:a=0;break;case0xde:a=1;break;case0xbe:a=2;break;case0x7e:a=3;break;参考程序如下下:#include<reg51.h>unsignedcharcodeseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,//09的段码0x88,0x83,0xc6,0xa1,0x86,0x8e};//A~F的段码case0xed:a=4;break;case0xdd:a=5;break;case0xbd:a=6;break;case0x7d:a=7;break;case0xeb:a=8;break;case0xdb:a=9;break;case0xbb:a=10;break;case0x7b:a=11;break;case0xe7:a=12;break;case0xd7:a=13;break;case0xb7:a=14;break;case0x77:a=15;break;}P2=seg[a];//将键值对对应的段码送送到P2口P1=0xf0;while(P1!=0xf0)delay(50);}}}任务1简易加减计数器的设计(1)画出硬件电电路图简易加减计数器任务实施:任务1简易加减计数器的设计(2).程序设计与调调试要获取一个变变量的每一位位数字的值,,用到除法运运算符“/”和模运算符“%”两个算术运算算符。当两个个整数作除法法运算时结果果仍为整数,,余数则会被被丢弃,因此此可作为取整整操作;模运运算“%”表示取余操作作。例如,求一个个变量temp的“百、十、个”位,分别赋给给变量a、b、c的操作如下::a=temp/100%10;//除以100,再对10取余余b=temp/10%10;//求得temp的十位c=temp%10;//求得temp的个位要在LED数码管上显示示变量temp的“百、十、个”位,可直接写写作:P2=seg[temp/100%10];P2=seg[temp/10%10];P2=seg[temp%10];其中seg[]是存放0~9段码的数组。。任务1简易加减计数器的设计#include<reg51.h>#include<INTRINS.H>unsignedchara;unsignedcharcodeseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0~9十个数字的共共阳型段码sbitk1=P1^0;sbitk2=P1^2;sbitk3=P1^4;voiddelay(unsignedintj){while(j--);}display(){unsignedchari,wk=0x01;//wk变变量作作位控控,初初始选选通右右边第第1位unsignedcharbuf[3];//声声明数数码管管显示示字形形缓冲冲数组组buf[0]=seg[a%10];//a的个个位buf[1]=seg[a/10%10];//a的的十位位buf[2]=seg[a/100];//a的的百位位,小小于999时可以以不对对10取余独立按按键控控制数数码管管加减减计数数的程程序如如下::任务1简易加减计计数器器的设计计for(i=0;i<3;i++){P3=wk;//输出位位控P2=buf[i];//依次输输出段段码delay(50);//延时wk=_crol_(wk,1);//位控左左移一一位P2=0xff;//熄灭所所有数数码管管(消消隐))}}voidbutton(){k1=1;if(k1==0){delay(1000);if(k1==0){a++;while(k1==0)display();}}k2=1;if(!k2)//如果果k2为低电电平的的另一一种写写示{delay(1000);if(!k2){a--;while(!k2)display();}}k3=1;if(k3==0){delay(1000);if(k3==0){a=0;while(k3==0)display();}}}}intmain(){while(1){button();display();}}26任务3方波发发生器器的设设计1.技能要要求设晶振振频率率6MHz。利用用单片片机定定时器器T0的方式式1,在P3.0端口上上输出出周期期为1ms的方波波。2.仿真电电路图图本任务务仿真真电路路图如如图所所示。。P3.0端口的的示波波器用用于观观察波波形和和计算算信号号频率率。图图中示示波器器的每每小格格为0.1ms,因此此信号号周期期为1ms,频率率为1KHz。操作步步骤::图中右右上角角的就就是模模拟示示波器器,4踪。仿真时时可以以出现现示波波器界界面,,可以以对其其操作作。操作方方法与与一般般示波波器相相同。。图中最最下部部的是是个频频率计计,运运行仿仿真时时可以以显示示测量量到的的方波波的频频率值值。添加这这2个虚拟拟仪器器的方方法是是,在软件件左边边点击击虚拟拟仪器器图标标,选选择第第一个个就是是虚拟拟示波波器,,第三三个就就是频频率计计。把虚拟拟示波波器的的输入入端接接到P2口的任任意引引脚,,虚拟拟频率率计也也可以以将输输入端端接入入P2口任意意引脚脚。在这幅幅图里里,采采用网网络标标号的的形式式接线线,看看起来来图面面整洁洁一点点。任务3方波发发生器器的设设计采用查查询方方式处处理的的程序序:#include<reg52.h>sbitP3_0=P3^0;voidmain(){TMOD=0x01;TL0=0x06;TH0=0xff;TR0=1;while(1){while(!TF0);TF0=0;P3_0=~P3_0;}}频率为1KHz的方波波,其周周期为1/1KHz,,即1ms。要要在P3.0端端口上输输出周期期为1ms的方方波,需需要使P3.0端口每每隔0.5ms取反一一次。我我们可以以通过定定时器作作0.5ms定定时,定定时时间间到,在在程序中中对P3.0取取反。(1)确确定工作作模式和和工作方方式定时器T0工作作方式1时:M1M0=01,c/T=0,GATE=0,,高4位位未使用用,全部部赋0,,则TMOD=0x01。(2)计计算0.5ms定时T0的初初值。晶振频率率6MHz,则则机器周周期为2μs,,设T0的初值值为X,,则:X=(216--500÷2))=65036=FF06H因此,TH0的的初值为为0xff,TL0的的初值为为0x06。3.程程序设计计与调试试任务3方波发生生器的设设计相关知识:利用定时器实现延时
8051单片机内内部有两两个16位的可编编程定时时器/计数器,,称为定定时器0(T0)和定时时器1(T1),可编编程选择择其作为为定时器器用或作作为计数数器用。。8051定时器/计数器由由定时器器T0、定时器器T1、定时器器方式寄寄存器TMOD和定时器器控制寄寄存器TCON组成。TMOD、TCON与T0、T1间通过内内部总线线及逻辑辑电路连连接,TMOD用于设置置定时器器的工作作方式,,TCON用于控制制定时器器的启动动与停止止。基本思想想:每隔1ms在程序中中对P3.0取反,如此循环不不止。任务3方波发生生器的设设计定时器/计数器结构如图6-1所示,定定时器/计数器T0由特殊功功能寄存存器TH0、TL0构成,定定时器/计数器T1由特殊功功能寄存存器TH1、TL1构成。30图6-1AT89S51单片机的的定时器器/计数器结结构框图图定时器/计数器的的结构1.计数功能能计数器用用于统计计从TO(P3.4)和Tl(P3.5)两个引脚脚输入脉脉冲的负负跳变数数量。负跳变是是指前一一个机器器周期采采样为高高电平,,后一个个机器周周期为低低电平。。每输入入一个脉脉冲负跳跳变,计计数器加加1。输入脉冲冲的高电电平与低低电平至至少应保保持一个个机器周周期时间间,以确确保正确确采样,因此输输入脉冲冲的频率率最高为为单片机机内部脉脉冲频率率的一半半。如果果内部脉脉冲频率率为1MHZ,则最高高计数频频率为0.5MHz。DATE:2022/12/8PAGE:31定时器/计数器的的功能2.定时功能能定时功能能是单片片机通过过对内部部机器脉脉冲信号号计数实实现的,,计数值值乘以机机器周期期就是相相应的时时间。例如,如如果单片片机采用用12MHz的晶振,,则机器器内部脉脉冲频率率为1MHz,则机器器周期为为1us,若共计计数1000,则用时时为1ms时间。DATE:2022/12/8PAGE:32定时器/计数器的的功能图5-1TMOD格式8位分为两两组,高4位控制T1,低4位控制T0。TMOD各位的功功能。(1)GATE————门控位。0:仅由运行行控制位位TRx(x=
0,1)来控制制定时器器/计数器运运行。1:用外中断断引脚((或))上的的电平与与运行控控制位TRx共同来控控制定时时器/计数器运运行。33工作方式式控制寄寄存器TMOD(2)M1、M0——工作方式式选择位位M1、M0共有4种编码,对应于于4种工作方方式的选择,,如表所示。(3)C/—计数器模模式和定定时器模模式选择择位34工作方式式控制寄寄存器TMOD0:为定定时器工工作模式式;1::为计数数器工作作模式,,计数器器对外部部输入引引脚T0(P3.4))或T1(P3.5))的外部部脉冲((负跳变变)计数数。35定时器/计数器的的4种工作方方式1方式0M1、M0=00时,被设设置为工工作方式式0,等效逻逻辑结构构框图如如图6-4所示(以以定时器器/计数器T1为例,TMOD.5、MOD.4=
00)。【训练1】T0方式式0定时时设fosc=6Mhz,定时时器/计计数器T0以工工作方式式0定时时2ms,编写写初始化化程序。。说明:fosc即为晶晶振频率率。首先计算计计数初值。。根根据公式式4-2有有:定时时间=(8192-计数数初值)××12/fosc计数初值=8192-定时时时间×fosc/12=8192-2000×6Mhz/12=7192=1C18H=1110000011000B将此二进制制数补足13位数((不够13位前面加加0,这个个例子够了了,不用补补),将高高8位送给给TH0,,将低5位位送TL0即可。定时器/计数器的4种工作方式式1方式0高8位是::11100000B=E0H,送给TH0低5位是::11000B=00011000B=18H送送给TL02方式1当M1、M0=01时,定时器器/计数器工作作于方式1,这时定时时器/计数器的等等效电路逻逻辑结构如如图5-3所示。方式1和方式0的差别仅仅在于计数器的位位数不同,方式式1为16位计数器,由THx高8位和TLx低8位构成(x=
0,1),方式0则为13位计数器,,有关控制制状态位的的含义(GATE、C/、TFx、TRx)与方式0相同。定时器/计数器的4种工作方式式38图6-3定时器/计数器方式式1逻辑结构框框图定时器/计数器的4种工作方式式实例6-2欲采用8051单片机控制制8个LED同时以1s为周期闪烁烁,设计电电路原理图图并编写程程序。DATE:2022/12/8PAGE:39设置置定定时时/计数器的的过程::1)先初始始化工作作方式寄寄存器TMOD2)为定时/计数器赋赋初值3)通过控制制寄存器器TCON中的TRO或TRl实现启动动或停止止。定时器/计数器的的4种工作方方式#include<reg51.h>//将8051单片机头头文件包包含到文文件中main(void){unsignedcharcounter;//设置无符符号字符符型变量量,存储储定时器器中断次次数。TMOD=0x01;//设T0为定时模模式,由由TR0控制启动动和停止止,且工工作于方方式1TH0=(65536-46083)/256;//初始化T0的高8位TL0=(65536-46083)%256;//初始化T0的低8位TF0=0;//初始化定定时器溢溢出标志志P0=0xff;//关闭LEDcounter=0;//从0开始计数数TR0=1;//启动定时时器0while(1){while(TF0==1)//如果定时时器溢出出{counter++;//计时次数数加1if(counter==20)//计时时间间达到1s{P0=~P0;//P0所有位取取反,使使LED闪烁counter=0;//重新从0开始计数数}TH0=(65536-46083)/256;//重新初始始化T0的高8位TL0=(65536-46083)%256;//重新初始始化T0的低8位TF0=0;//重新初始始化定时时器溢出出标志}}}DATE:2022/12/8PAGE:40定时器/计数器的的4种工作方方式3方式2方式0和方式1的最大特特点是计计数溢出出后,计计数器为为全0。因此在在循环定定时或循循环计数数应用时时就存在用指指令反复复装入计计数初值值的问题。这不仅影影响定时时精度,,也给程程序设计计带来麻麻烦。方方式2就是针针对此此问题题而设设置的的。当M1、M0为10时,定定时器器/计数器器处于于工作作方式式2,这时时定时时器/计数器器的等等效逻逻辑结结构如如图6-6所示(以定定时器器T1为例,,x=1)。定时器器/计数器器的4种工作作方式式4方式3是为增加一一个8位定时时器/计数器器而设,,使AT89S51单片机机具有有3个定时器器/计数器器。方式3只适用用于T0,T1不能工工作在在方式式3。T1处于方方式3时相当当于TR1=0,停止止计数数(此此时T1可用来来作为为串行行口波波特率率产生生器))。1.工作作方式式3下的T0TMOD的低2位为11时,T0的工作作方式式被选选为方方式3,各引脚与与T0的逻辑关系系如图5-8所示。定时器/计数器T0分为两个独独立的8位计数器TL0和TH0,TL0使用T0的状态控制制位C/、GATE、TR0、42定时器/计数器的4种工作方式式43图6-6定时器/计数器方式式2逻辑结构框框图定时器/计数器的4种工作方式式TF0,而TH0被固定为一个个8位定时器(不能作为为外部计数数模式),,并使用定定时器T1的状态控制制位TR1和TF1,同时占用用定时器T1的中断请求求源TF1。2.T0工作在方式式3时T1的各种工作作方式一般情况下下,当T1用作串行口口的波特率率发生器时时,T0才工作在方方式3。T0处于工作方方式3时,T1可定为方式式0、方式1和方式2,用来作为为串行口的的波特率发发生器,或或不需要中中断的场合合。定时器/计数器的4种工作方式式45图6-8定时器/计数器T0方式3的逻辑结构构框图定时器/计数器的4种工作方式式M1、M0——工作方式选选择位M1、M0共有4种编码,对应于4种工作方式式的选择,如如表所示。464种工作方方式总结字节地址为为88H,可位寻址址,位地址址为88H~8FH。格式如图5-3所示。定时器/计计数器控制制寄存器TCON(1)TF1、TF0——计数溢出标标志位。当计数器计计数溢出时时,该位置置“1”。使用中中断方式时时,此位作作为中断请请求标志位位,进入中中断服务程程序后由硬硬件自动清清“0”。(2)TR1、TR0——计数运行控控制位。TR1位(或TR0位)=
1,启动定时时器/计数器工工作的必必要条件件。TR1位((或TR0位))
=0,停停止定时时器/计计数器工工作。该该位可由由软件置置“1””或清““0”。。例5-1:设定时时器1为定时工工作方式式,按方方式2工作,定定时器0为计数方方式,按按方式1工作,均均由程序序单独控控制启动动和停止止,请给给出TMOD控制字。。解:定时器1做定时器器使用则则D6=0;按方式2工作则D5=1,D4=0;由程序单单独控制制启停则则D7=0。定时器0做计数器器使用则则D2=1;按方式1工作则D0=0,D1=1;由程序单单独控制制启停则则D3=0。因此命令令字TMOD的值应为为00100101B,即25H。DATE:2022/12/8PAGE:48定时器/计数器器控制定时/计数数器器的的控控制制实例例6-3图6-4是产产品品包包装装生生产产线线的的计计数数系系统统,,每每个个产产品品经经过过计计数数装装置置时时由由机机械械杆杆碰碰合合按按键键S1一次次。。当当第第一一次次计计满满一一包包(5个)则D1亮,,计计满满第第二二包包则则D2亮…,计计满满第第八八包包则则D1~D8全亮亮,,八八包包包包装装成成一一箱箱,,此此后后重重复复以以上上过过程程。。编编写写程程序序实实现现此此功功能能。。DATE:2022/12/8PAGE:49解:程序如如下:#include<reg51.h>//包含51单片机寄存存器定义的的头文件unsignedcharcounter;//计数初值main(void){TMOD=0x60;//使用T1的工作方式式2TH1=256-5;//T1的高8位赋初值TL1=256-5;//T1的低8位赋初值counter=0;TR1=1;//启动T1while(1){while(TF1==1)//如果计满{TF1=0;//计数器溢出后后,将TF1清0counter++;//计数加1DATE:2022/12/8PAGE:505.3定时/计数器的控制制switch(counter)//检查中断计数数值{case1:P0=0xfe;break;//则第1个灯亮case2:P0=0xfd;break;//第2个灯亮case3:P0=0xfb;break;//第3个灯亮case4:P0=0xf7;break;//第4个灯灯亮亮case5:P0=0xef;break;//第5个灯灯亮亮case6:P0=0xdf;break;//第6个灯灯亮亮case7:P0=0xbf;break;//第7个灯灯亮亮case8:P0=0x00;counter=0;break;//8个灯灯全全亮亮}}}}DATE:2022/12/8PAGE:515.3定时时/计数数器器的的控控制制东西方向
信号
绿灯亮绿灯关闭黄灯闪亮
红灯亮
时间
20S
2S5次共2S
22S南北方向
信号
红灯亮
绿灯亮绿灯关闭黄灯闪亮
时间
22S
20S2S
5次共2S任务务4十字字路路口口交交通通信信号号灯灯设设计计系统统控控制制要要求求如如下下::(1)正正常常情情况况下下,,首首先先东东西西方方向向绿绿灯灯亮亮,,南南北北方方向向红红灯灯亮亮20s;经经过过后后南南北北方方向向绿绿灯灯亮亮,东西西方方向向红红灯灯亮亮20s。(2)黄灯5次闪烁烁绿灯灭灭2s,之之后后重重复复((1)((2)。。任务务4十字字路路口口交交通通信信号号灯灯设设计计任务务4十字字路路口口交交通通信信号号灯灯设设计计任务务4十字字路路口口交交通通信信号号灯灯设设计计1)对对TMOD赋值值,,确确定定工工作作方方式式。。TMOD为T1、T2的工工作作方方式式寄寄存存器器任务务4十字字路路口口交交通通信信号号灯灯设设计计T1控制制T0控制制M0M1C/TGATEM0M1C/TGATED0D1D2D3D4D5D6D7TMOD(89H)
TMOD=0
0
01
0000
软件启动定时方式1T0未使用∴TMOD赋值值为为10H1.采采用用定定时时器器设设计计一一个个0.5秒秒的的延延时时子子程程序序2)预预置置定定时时器器初初值值X,将将初初值值写写入入TH1、TL1中。。初值值X=最大大计计数数值值-计数数次次数数若fosc=12MHZ,在在方方式式1中,,定定时时器器T1的最最大大计计数数值值为为65536,而而定定时时50ms需要要完完成成50000次计计数数。。由由此此可可计计算算出出计计数数器器的的初初始始值值。。初值值X=65536-50000=15536D=3CB0H任务务4十字字路路口口交交通通信信号号灯灯设设计计3)启动定定时/计数器工工作,当当GATE=0时,只要要用“SETBbit”指令将TCON寄存器中中的启动动位TR0或TR1置“1”即可,使使用“CLRbit”指令可停停止定时时器工作作。任务4十字路口口交通信信号灯设设计0.5s延时子程程序如下下:DELAY:MOVR3,#0AH;循环次数数MOVTMOD,#10H;定时器T1,方式1MOVTH1,#3CH;定时50ms的初值MOVTL1,#0B0HSETBTR1;启动定时时器LP1:JBCTF1,LP2SJMPLP1LP2:MOVTH1,#3CH;重装初值值MOVTL1,#0B0HDJNZR3,LP1RET单片机C语言程程序设计计:LED模模拟交通通灯#include<reg51.h>#defineucharunsignedchar;sbitRED_B=P0^0;//北北向灯sbitYELLOW_B=P0^1;sbitGREEN_B=P0^2;sbitRED_X=P0^3;//西西向灯sbitYELLOW_X=P0^4;sbitGREEN_X=P0^5;sbitRED_N=P2^0;//南南向灯sbitYELLOW_N=P2^1;sbitGREEN_N=P2^2;sbitRED_D=P2^3;//东向灯灯sbitYELLOW_D=P2^4;sbitGREEN_D=P2^5;ucharFlash_Count=0,Operation_Type=1;voidDelayMS(unsignedintx){TMOD=0x01;TR0=1;while((x--)!=0){TH0=0X3C;TL0=0Xb0;while(!TF0);TF0=0;}}任务4十字路口口交通信信号灯设设计//交通通灯切换换voidTraffic_Light(){switch(Operation_Type){case1://东东西向向绿灯灯与南南北向向红灯灯亮RED_X=1;YELLOW_X=1;GREEN_X=0;RED_N=0;YELLOW_N=1;GREEN_N=1;RED_D=1;YELLOW_D=1;GREEN_D=0;RED_B=0;YELLOW_B=1;GREEN_B=1;DelayMS(400);Operation_Type=2;break;case2://东西西向黄黄灯闪闪烁,,绿灯灯关闭闭DelayMS(40);YELLOW_D=~YELLOW_D;GREEN_D=1;YELLOW_X=~YELLOW_X;GREEN_X=1;if(++Flash_Count!=10)return;//闪闪烁Flash_Count=0;Operation_Type=3;break;case3://东东西向向红灯灯,南南北向向绿灯灯亮RED_X=0;YELLOW_X=1;GREEN_X=1;RED_N=1;YELLOW_N=1;GREEN_N=0;RED_D=0;YELLOW_D=1;GREEN_D=1;RED_B=1;YELLOW_B=1;GREEN_B=0;DelayMS(400);Operation_Type=4;break;case4://南南北向向黄灯灯闪烁烁DelayMS(40);YELLOW_N=~YELLOW_N;GREEN_N=1;YELLOW_B=~YELLOW_B;GREEN_B=1;if(++Flash_Count!=10)return;Flash_Count=0;Operation_Type=1;}}//主主程序序voidmain(){while(1)Traffic_Light();}任务4十字路路口交交通信信号灯灯设计计采用查查询方方式处处理的的程序序:#include<reg52.h>sbitP1_0=P1^0;voidmain(){TMOD=0x02;TL0=0x06;TH0=0x06;TR0=1;while(1){while(!TF0);TF0=0;P1_0=~P1_0;}}定时器编编程总结结一、定时时器的初初始化步步骤1、选择工工作模式式和工作作方式。。设置TMOD。2、设置定定时器的的计数初初值。设置THx和TLx。3、启动定时时器。二、定时时器查询询式应用用步骤1、选择工工作模式式和工作作方式。。设置TMOD。2、设置定定时器的的计数初初值。设置THx和TLx。3、启动定定时器。4、查询溢出出标准TFX5、清零溢溢出标志志6、应用处处理7、重装初初始值1、设计方方案选用AT89C51单片机芯芯片、时时钟电路路、复位位电路、、电源、、12个发光二二极管和和一个按按键构成成最小系系统,完完成对交交通信号号灯有急急救车通通过时的的智能控控制。任务要求图3-17交通信号号灯模拟拟控制系系统设计计框图任务4智能交通通信号灯灯设计并行接口AT89C51单片机电源时钟电路复位电路红黄绿灯发光二极管按键2、硬件电电路设计计任务实施图2-24交通灯控控制电路路原理图图电路所用用仿真元元器件::AT89C51:单片机机RES:电阻CRYSTAL:晶振CAP:电容CAP-ELEC:电解电电容BUTTON:按钮LED-GREEN:绿色发光光二极管管LED-YELLOW:黄色发光光二极管管LED-RED:红色发光光二极管管任务4智能交通信号号灯设计计表3-6交通灯控控制口线线分配及及控制状状态表任务4智能交通交通信号号灯设计计P1.5P1.4P1.3P1.2P1.1P1.0P1端口数据状态说明东西方向南北方向红灯黄灯绿灯红灯黄灯绿灯11100011011100,1交替111100011111111011100,1交替1F3HP1.3交替EBHDEHP1.0交替DDH东西向通行,南北向禁行东西向警告,南北向禁行东西向警告,南北向禁行南北向通行,东西向禁行南北向警告,东西向禁行南北向警告,东西向禁行100111100111EDHDBH紧急情况相关知识:中断的基本知识1、中断的的基本概概念中断是指指计算机机在执行行某一程程序的过过程中,由于计算算机系统统内、外外的某种种原因,而必须中中止原程程序的执执行,转去执行行相应的的处理程程序,待处理结结束之后后,再回来继继续执行行被中止止的原程程序的过过程。中断需要要解决两两个主要要问题::如何从从主程序序转到中中断服务务程序和和如何从从中断服服务程序序返回主主程序。。(1)概念图3-1中断的示示意图任务4智能交通通交通信号号灯设计计1)分时操作作:解决了快快速CPU与慢速外外设之间间的矛盾盾,可使CPU与外设并并行工作作。这样样,CPU可启动多多个外设设同时工工作,大大大提高高了工作作效率。。2)实时处理理:实时处理理控制系系统中许许多随机机产生的的参数与与信息,即计算机机具有实实时处理理的能力力,从而提高高了控制制系统的的性能。。3)故障处理理:使系统具具备处理理故障的的能力,,如出现现掉电、、存储出出错、运运算溢出出等故障障,从而提高高了系统统自身的的可靠性性。(2)特点(3)与中断相相关的几个个概念1)中断服务务子程序:中断之后处处理的程序序,也称为为中断处理理子程序。。2)主程序:原来正常执执行的程序序。3)中断源:发出中断申申请的信号号或引起中中断的事件件。4)中断请求求:CPU接收到中断断源发出的的申请信号号。5)中断响应应:接收中断申申请,转到到相应中断断服务子程程序处执行行。6)断点:主程序被断断开的位置置(即地址址),转入入中断程序序的位置。。7)中断入口口地址:中断响应后后,中断程程序执行的的首地址。。8)中断返回回:从中断服务务程序返回回到主程序序。任务4智能交通交通信号灯灯设计IE0TCONSCONINT0IT0=0IT0=1INT1IT1=0IT1=1TF0IE1TF1T0T1TIRITXDRXDESET0EX0EX1ET1EA自然优先级级矢量地址高级中断请请求自然优先级级矢量地址低级中断请请求PX0PT0PX1PT1PSIEIP中断标志位位中断源允许许总允许中断优先级级(P3.2)(P3.3)(P3.0)(P3.1)(P3.5)(P3.4)2、MCS-51单片机的中中断系统及及其管理(1)MCS-51中断系统的的结构任务4智能交通交通信号灯灯设计(2)中断源图3-1中断的示意意图8051单单片机有5个中断请求源源:单片机INT0或
外部输入中断源INT0(P3.2)INT1或
外部输入中断源INT1(P3.3)T0
片内定时器T0的溢出(P3.4)T1
片内定时器T1的溢出(P3.5)串行口
片内串行口发送或接收中断源任务4智能交通交通信号灯灯设计(3)特殊功能能寄存器TCON和SCON1)中断控制寄寄存器TCONTF1
TF0
IE1IT1IE0IT0TCON7654321088H8F
8D
8B8A8988位地址T1溢出中断标标志(TCON.7):T1启动计数后后,计满溢溢出由硬件件置位TF1=1,向CPU请求中断,,此标志一一直保持到到CPU响应中断后后,才由硬件自自动清0。也可用软软件查询该该标志,并并由软件清清0。任务4智能交通交通信号灯灯设计TF1
TF0
IE1IT1IE0IT0TCON88H外部中断INT1中断标志位位(TCON.3):IE1=1,外部中断1向CPU申请中断外部中断INT1((P3.3)触发方式控控制位(TCON.2)::IT1=0,电平触发方方式IT1=1,下降沿触发发方式76543210注意:该寄寄存器可以以位寻址。。任务4智能交通交通信号灯灯设计2)串行口控制制寄存器SCON返回TI(SCON.1)———串行发发送中中断标标志。。RI(SCON.0)———串行接接收中中断标标志。。
TIRISCON98H76543210注意::该寄寄存器器可以以位寻寻址。。
9998位地址址任务4智能交交通交通信信号灯灯设计计(4)中断断的开开放与与禁止止MCS-51系列单单片机机的5个中断断源都都是可可屏蔽蔽中断断,由由中断断系统统内部部的专专用寄寄存器器IE负责控控制各各中断断源的的开放放或屏屏蔽。。IEA8HEA
ESET1EX1ET0EX0例:允允许定定时器器T0中断::SETBEA位操作作指令令SETBET0或MOVIE,#82H字节操操作指指令或MOV0A8H,,#82H76543210注意::该寄寄存器器可以以位寻寻址。。AF
ACABAAA9A8位地址址任务4智能交交通交通信信号灯灯设计计(5)中断断优先先权的的处理理MCS-51中断系系统设设立了了两极极优先先级—高优先先级和和低优优先级级,可可以程程序设设置5个中断断源优优先级级,由由中断断优先先级寄寄存器器IP进行控控制。。51单单片机机有两两个中中断优优先级级——高级和和低级级专用寄寄存器器IP为中断断优先先级寄寄存器器,用用户可可用软软件设设定相应位位为1,对应应的中中断源源被设设置为为高优先先级,相应应位为为0,,对应应的中中断源源被设设置为为低优优先级级系统复复位时时,均均为低低优先先级该寄存存器可可以位位寻址址
PSPT1PX1PT0PX0IPB8H76543210
BCBBBAB9B8位地址址任务4智能交交通交通信信号灯灯设计计同一级级中的的5个个中断断源的的优先先顺序序是::
INT0中断
T0溢出中断
INT1中断
T1溢出中断
串口中断
高低出厂前已由厂家固化顺序——事先约定中断优优先原原则::(概概括为为四句句话))1、低低级不不打断断高级级2、高高级不不睬低低级3、同同级不不能打打断4、同同级、、同时时中断断,事事先约约定。。任务4智能交交通交通信信号灯灯设计计例6-1,如果果IP的值设设为06H,如果果5个中断断请求求同时时发生生,求求中断断响应应的次次序。。解:06H化为二进制制是00000110B,根据表6-4知,定时器器T0和外中断被设置成高高优先级中中断,因此此如果5个中断请求求同时发生生,中断响响应的先后后次序是::定时器T0→外中断INT1→外中断→定时器T1→串行中断断。DATE:2022/12/8任务4智能交通交通信号灯灯设计3、中断处理理过程(1)中断响应应中断处理过过程分为三三个阶段::中断响应、、中断处理理和中断返返回。中断响应中断处理(又称中断断服务)中断返回中断请求的的撤除中断响应中断返回任务4智能交通交通信号灯灯设计中断响应(以外部中断断0为例)中断响应::在满足CPU的中断响应应条件之后后,CPU对中断源中中断请求予予以处理。。中断响应应过程::保护断点点地址;;中断响应把程序转转向中断断服务程程序的入口地址址(通常称称矢量地地址)。。特别注意意:这些工作作是硬件件自动完完成的!!断点地址址中断服务务子程序序的入口口地址外部中断断0入口地址址0003ZD0AJMPORG0003HAJMPZD0ZD0任务4智能交通通交通信号号灯设计计中断响应应中断服务务子程序序入口地地址又称称为中断断矢量或或中断向向量。中断响应单片机中中5个中中断源的的矢量地地址是固定的,不能能改动。。断点地址址中断服务务子程序序的入口地址址任务4智能交通通交通信号号灯设计计任务4智能交通通交通信号号灯设计计程序存储储器ROM0000H:复位后,,程序的的入口地地址(PC=0000H)0023H:串行口中中断入口口0003H:外部中断断0入口口-INT0000BH:定时器0溢出中中断入口口-T00013H:外部中断断1入口口-INT1001BH:定时器1溢出中中断入口口-T18字节8字节8字节002AH使用时,,通常在在这些入入口地址址处存放放一条跳跳转指令令,使程程序跳转转到用户户安排的的中断服服务程序序起始地地址上去去!中断处理理中断服务务程序从从中断子子程序入口地址址开始执行行,直到到返回指指令RETI为止,这这个过程程称为中断处理理(或中中断服务务)。中断服务务子程序序一般包包括两部部分内容容:一是保护和恢恢复现场场,二是处理中断断源的请请求。中断响应入口地址址RETI任务4智能交通通交通信号号灯设计计中断处理理INTT0:PUSHACCPUSHDPHPUSHDPLPUSHPSW中断断源源服服务务POPPSWPOPDPLPOPDPHPOPACCRETI保护护现现场场恢复复现现场场任务务4智能能交交通通交通通信信号号灯灯设设计计中断断返返回回中断断返返回回是是指指中中断断服服务务完完后后,,计计算算机机返返回回到到原原来来暂暂停停的的位位置置(即即断断点点),,继继续续执执行行原原来来的的程程序序。。中断断返返回回由由专专门门的的中中断断返返回回指指令令RETI来实实现现。。中断响应中断返回任务务4智能能交交通通交通通信信号号灯灯设设计计中断断返返回回RETI指令令功功能能::把把断点点地地址址取取出出,,送送回回到到程程序序计计数数器器PC中去去。。另另外外,,它它还还通通知知中中断断系系统统已已完完成成中中断断处处理理,,将将清清除除优优先先级级状状态态触触发发器器。。特别别注注意意::不能用用RET指令代代替RETI指令!!中断响应中断返回断点地地址任务4智能交交通交通信信号灯灯设计计中断请请求的的撤除CPU响应某某中断断请求求后,,在中中断返返回前前,应应该撤撤除该该中断断请求求,否否则会会引起起另一一次中中断。。定时器器0或或1溢溢出::CPU在响应应中断断后,,硬件清除了了有关关的中中断请请求标标志TF0或TF1,即中断请请求是是自动动撤除除的。边沿触触发的的外部部中断断(IT0或IT1=1)::CPU在响应应中断断后,,也是是用硬件件自动动清除除有关的的中断断请求求标志志IE0或IE1。串行口口中断断:CPU响应中中断后后,没没有用用硬件件清除除TI、、RI,故这些些中断断不能能自动动撤除除,而而要靠软软件来来清除除相应应的标标志。任务4智能交交通交通信信号灯灯设计计三、中中断系系统的的编程程中断函函数的的定义义:void函数名名(void)interruptnusingm{中断函函数内内容}修饰符符interruptn表明该中断服服务程序所对对应中断源的的中断号,编编译器会把该该函数转化为为中断函数,,并在对应的的中断入口地地址处添加跳跳转指令,以以便转入本中中断函数。修饰符usingm用于指定本函函数内部使用用的工作寄存存器组,m的取值为0~3。该修饰符可可省略,由编编译器去分配配。DATE:2022/12/8PAGE:85任务4智能交通交通信号灯设设计编写中断函数数时,应注意意以下几点::(1)中断函数不不带任何参数数,否则会导导致编译出错错。(2)中断函数不不能有返回值值,所以函数数类型应为void。(3)中断函数必必须由中断源源触发而自动动调用,不得得直接调用,,因此也不用用提前声明。。(4)中断函数要要精简,避免免因执行时间间过长影响其其它中断的响响应。DATE:2022/12/8PAGE:86任务4智能交通交通信号灯设设计例6-2如图所示,将将P1口的P1.4~P1.7作为输入位,P1.0~P1.3作为输出位。要求利用89C52将开关所设的数数据读入单片机内,并并依次通过P1.0~P1.3输出,驱动发光二二极管,以检检查P1.4~P1.7输入的电平情情况(若输入为高电平平则相应的LED亮)。要求采用中断
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度金融衍生品交易合同风险控制3篇
- 二零二四年度网站建设合同解读
- 二零二四年度可再生能源项目投资与合作开发合同2篇
- 2024年度物业管理服务合同标的及复杂属性详解2篇
- 二零二四年物联网平台搭建及应用开发合同2篇
- 2024年商业底商以租赁形式转让使用权合同
- 2024专属门卫服务聘用合同版B版
- 二零二四年度新能源汽车租赁与运营合同3篇
- 二零二四年度互联网公司网站建设合同3篇
- 2024年住宅物业管理服务合同合集版B版
- 媒体法与新闻报道媒体侵权与法律追责
- 2024年物流运营与成本控制培训资料
- 服刑人员宪法知识讲座
- 富马酸奥赛利定注射液-药品临床应用解读
- 劳务派遣劳务外包服务方案(技术方案)
- 建筑工程竣工验收消防查验文件-消防施工质量专项检查表(主体阶段)-消防施工质量专项检查表装饰装修阶
- 煤气发生炉拆除方案
- (完整版)高中语文教师个人三年发展规划
- 苏教版数学五年级上册全册教学反思(版本1)
- 广东盈科材料有限公司年产64吨高端元器件用电子浆料和LTCC瓷粉建设项目环境影响报告表
- 会计学专业导论PPT
评论
0/150
提交评论