微机实验报告Word文件下载.docx
《微机实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《微机实验报告Word文件下载.docx(5页珍藏版)》请在冰豆网上搜索。
夜间时段:
22:
30-6:
东西方向的绿灯亮20,东西方向的车辆放行;
南北方向的红灯亮23,南北方 向的车辆禁行;
东西方向的红灯亮28,东西方向的车辆禁行;
南北 方向的绿灯亮25,南北方向的车辆放行。
平峰时段:
一天中剩余的其他时间段。
相位一:
东西方向的绿灯亮30,东西方向的车辆放行;
南北方向的红灯亮33,南北方 向的车辆禁行;
东西方向的红灯亮38,东西方向的车辆禁行;
南 北方向的绿灯亮35,南北方向的车辆放行。
设计方框图:
数码管显示电路2交通灯控制电路单片机交通灯显示电路 按键控制电路 本系统以51单片机为控制核心,连接成最小系统,按键设置模块产生输入,信号灯状态模块,LED倒计时模块模块接受输出。
系统的总体框图如上所示。
单片机上电后,系统进入正常工作状态,执行交通灯状态显示控制,同时将时间数据倒计时输入到LED数码管上实时显示。
在此过程中随时调用急停按键和时间调节中断。
AT89C51单片机:
AT89C51单片机简介 AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
AT89C51单片机的主要特性 与MCS-51兼容,4K字节可编程闪烁存储器,寿命:
1000写/擦循环,数据保留时间:
10年,全静态工作:
0Hz-24Hz,三级程序存储器锁定,128*8位内部RAM,32可编程I/O线,两个16位定时器/计数器,5个中断源,可编程串行通道,低功耗的闲置和掉电模式,片内振荡器和时钟电路。
时钟电路:
时钟电路的作用是产生单片机工作所需要的时钟脉冲序列。
中断系统:
中断系统的作用主要是对外部或内部的终端请求进行管理与处理。
AT89C51共有5个中断源,其中又2个外部中断源和3个内部中断源。
图3AT89C51系列单片机的内部结构示意图 AT89C51引脚图:
·
VCC:
电源电压·
GND:
地 ·
P0口:
P0口是一组8位漏极开路型双向I/0口,也即地址/数据总线复用口。
作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“l”可作为高阻抗输入端用。
在 访问外部数据存储器或程序存储器时,这组口线分时转换地址和数据总线复用,在访问期间激活内部上拉电阻。
P1口:
Pl是一个带内部上拉电阻的8位双向I/O口,Pl的输出缓冲级可驱动4个TTL逻辑门电路。
对端口写“l”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。
Flash编程和程序校验期间,Pl接收低8位地址。
表1具有第二功能的P1口引脚 端口引脚 第二功能:
MOSIMOSIMOSI ·
P2口:
P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动4个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。
在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。
在访问8位地址的外部数据存储器时,P2口线上的内容区中P2寄存器的内容),在整个访问期间不改变。
Flash编程或校验时,P2亦接收高位地址和其它控制信号。
P3口:
P3口是一组带有内部上拉电阻的8位双向I/0口。
P3口输出缓冲级可驱动4个TTL逻辑门电路。
对P3口写入“l”时,它们被内部上拉电阻拉高并可作为输入端口。
作输入端时,被外部拉低的P3口将用上拉电阻输出电流。
P3口除了作为一般的I/0口线外,更重要的用途是它的第二功能,如下表所示:
表2具有第二功能的P1口引脚 端口引脚 第二功能:
RXDTXD/INT0/INT1T0T1/WR/RD外部数据存储器读选通) P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。
RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
WDT溢出将使该引脚输出高电平,设置SFRAUXR的DISRT0位可打开或关闭该功能。
DISRT0位缺省为RESET输出高电平打开状态。
———— ·
ALE/PROG:
当访问外部程序存储器或数据存储器时,ALE输出 脉冲用于锁存地址的低8位字节。
即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对F1ash存储器编程期间,该引脚还用于输入编程脉冲。
如有必要,可通过对特殊功能寄存器区中的8EH单元的D0位置位,可禁止ALE操作。
该位置位后,只有一条M0VX和M0VC指令ALE才会被激活。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。
———— ———— FFFFH),·
PSEN程序储存允许输出是外部程序存储器的读选通信号,当 ———— AT89C51外部程序存储器取指令时,每个机器周期两次PSEN有效,即输出 ———— 两个脉冲。
当访问外部数据存储器,没有两次有效的PSEN信号。
—— ·
EA/VPP:
外部访问允许。
欲使CPU仅访问外部程序存储器。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平,CPU则执行内部程序存储器中的指令。
F1ash存储器编程时,该引脚加上+12V的编程电压Vpp。
XTAL1:
振荡器反相放大器及内部时钟发生器的输入端。
MCS—51的中断源 8051有5个中断源,它们是两个外中断INT0和INT1、两个片内定时/计数器溢出中断TF0和TF1,一个是片内串行口中断TI或RI,这几个中断源TCON和SCON两个特殊功能寄存器进行控制,其中5个中断源的程序入口地址如表4所示:
表3中断源程序入口 中断源的服务程序入口地址中断源入口地址外中断00003H定时/计数器0000BH外中断10013H定时/计数器0001BH串行口中断0023H 交通控制系统的具体的功能模块设计 倒计时显示 倒计时显示电路数码管、74HC138译码器、74HC573芯片等组成,74HC138译码器控制数码管的位选,单片机的P0口和74HC573控制数码管的段选 数码管示意图:
LED灯的显示原理:
通过同名管脚上所加电平的高低来控制发光二极管是否点亮而显示不同的字形,如dp,g,f,e,d,c,b,a全亮显示为8,采用共阴极连接驱动代码,代码表如下表5所示。
表5驱动代码表显示数值0123456789dp,g,f,e,d,c,b,a00101111000001100101101101001111011001100110110101111101000001110111111101101111驱动代码0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f相应在程序软件上,可以通过调用程序给定的秒值经过特定计算算出需要显示的个位和十位,然后有DPTR调取LEDMAP的代码。
LED8段数码管的设置为每个方位上的一对2为显示器。
四个方位上总共用8个LED接在单片机的IO口上。
虽然路口不一样,但是显示的时间在数字上是一样的,所以两边连接的IO口是对称的。
倒计时显示电路:
时段的设置 本设计中可通过键盘对时段进行手动设置, 本设计设置了有4个键:
K1键,K2键,K5键,K6键,每个按键一端接地,另一端接对应的P3端口。
低电平有效,当按键按下端口接地,单片机捕获到低电平,从而知道相应的输入信息。
按键电路图:
紧急处理 本交通控制中增设了紧急车辆优先功能,通过外部中断INT0和INT1(按键K4)来判断是东西方向有紧急车辆还是南北方向有紧急车辆。
设紧急车辆通过十字路口需要5秒,若此时为红灯,则交通口为全红状态,倒计时5秒,让紧急车辆通过;
若此时为绿灯,则判断剩余的时间是否够紧急车辆通过,若不足,则延长够5秒让紧急 车辆通过。
外部中断电路图:
交通控制系统电路图 程序流程图:
开 始 Y东西绿灯,南北红东西有无紧急车?
东西绿灯 演示程序:
#include#include sbitD2=P1;
//led灯引脚定义 sbitD3=P1;
、//east-west,,sbitD4=P1;
sbitD6=P1;
//north-south,,sbitD7=P1;
sbitD8=P1;
sbitK1=P3;
sbitK2=P3;
sbitK6=P3;
sbitK7=P3;
sbitLS138A=P2;
//数码管引脚定义sbitLS138B=P2;
sbitLS138C=P2;
voiddelay(unsignedinti);
voiddisplay(int);
unsignedcharaa,num,flag;
unsignedintLedOut[6];
unsignedcharcodeDisp_Tab={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
//0~9数模voidmain(){ TMOD=0x11;
TH0=0x3c;
TL0=0xb0;
EX0=1;
IT0=1;
IT1=1;
EX1=1;
ET0=1;
EA=1;
while
(1){ if(K1==0){flag=0;
delay(5);
TR0=1;
num=20;
D2=0;
D3=1;
D4=1;
D6=1;
D7=1;
D8=0;
} if(K2==0) {delay(5);
flag=1;
num=40;
D2=1;
D3=1;
D4=0;
D6=0;
D7=1;
D8=1;
} if(K6==0) {delay(5);
flag=2;
num=50;
D2=0;
D3=1;
D4=1;
D6=1;
D7=1;
D8=0;
} if(K7==0){delay(5);
flag=3;
num=30;
D2=1;
D4=0;
D6=0;
D7=1;
D8=1;
}display(num);
}} voidtime0(void)interrupt1using1{ TH0=0x3c;
TL0=0xb0;
aa++;
if(aa==20) { //如果到了1s aa=0;
num--;
if(num D3=1;
if(num==0) { D2=~D2;
D4=~D4;
D6=~D6;
D8=~D8;
if(flag==1) num=40;
if(flag==2) num=50;
if(flag==3) num=30;
elsenum=20;
} }} /*************************************************************************** * ** 延时程序 * ****************************************************************************/ voiddelay(unsignedinti){ charj;
for(i;
i>
0;
i--) for(j=200;
j>
j--);
} /*************************************************************************** * ** 外部中断0程序 * ****************************************************************************/外外部中断 voidewstop0(void)interrupt0using0 {if((num>
=5)&
&
(D2==0)){;
} if((num display(num);
} if(D4==0){D2=0;
num=5;
display(num);
} } /*************************************************************************** * ** 外部中断1程序 * ****************************************************************************/外外部中断 voidnsstop1(void)interrupt2using2{ if((num>
(D6==0)){;
} if(D8==0) {D6=0;
}} /*************************************************************************** * ** 数码管显示程序 * ****************************************************************************/ voiddisplay(x){unsignedchari;
{ LedOut[0]=Disp_Tab[x/10];
LedOut[1]=Disp_Tab[x];
LedOut[3]=Disp_Tab[x/10];
LedOut[4]=Disp_Tab[x];
for(i=0;
i P0=LedOut[i];
//将字模送到P0口显示 switch(i)//使用switch语句控制位选也可以是用查表的方式学员可以试着自己修改 { case0:
LS138A=0;
LS138B=0;
LS138C=0;
break;
case1:
LS138A=1;
case3:
LS138B=1;
case4:
LS138C=1;
} delay(10);
}} } 实验结果分析:
实验现象:
平峰时段东西绿灯亮,南北绿灯亮20s。
当东西方向绿灯亮且显示的时间大于5秒时亮灯状态按原来的规律变化即 紧急车辆通过。
当显示的时间小于5秒时绿灯亮的时间延时至5秒让紧急车辆顺利通过。
当东西方向为红灯亮时,此时若紧急车辆到来则红灯亮转为绿灯亮且倒计 时5秒让紧急车辆顺利通过。
5秒倒计时到0时转为原来的红灯亮且时间与上次中断事件相衔接。
以上分析可知,该试验能实现紧急车辆优先功 文献参考 1、李广弟,朱月秀,王秀山编著《.单片机基础》.北京:
北京航空航天大学出版社,2001 2、马忠梅编著《单片机的C语言应用程序额设计》北京:
北京航空航天大学出版社,2001 3、张志良.单片机原理与控制技术机械工业出版社 4、王守中.51单片机开发入门与典型实例人民邮电出版社 5、刘守义.《单片机应用技术》,西安电子科技大学出版社6、余锡存.《单片机原理与接口技术》,西安电子科技大学出版社 心得体会:
这个课题刚开始看到后,无从下手。
因为自己的编程基础差,再说单片 机实验开发仪也没怎么搞懂内部的结构,后来看了看例程便有了一些思路。
于是就顺着这个思路走下去,本设计是围绕单片机而设计的,需要用到数电、模电、电路设计、C语言等方方面面的知识。
在老师的指导下,同学的帮助下,加上个人的努力,本设计才能顺利完成。
虽然实现的功能有些简单,但这是自己用心去做的,挺欣慰的。
经过本次实验,我们熟悉了十字路口交通灯的工作方式,熟悉了单片机的C语言编程,使我们对自己的编程更有信心,通过了本次实验我们进一步了解了定时器/计数器中断的含义,对我们以后灵活运用定时计数器/计数器作好了铺垫。
其实,在整个过程中我们翻阅大量的有关c51单片机编程的书籍,观看了大量的视频学习。
其中有《新编单片机原理及应用》、《零基础学习c51单片机编程》、《c51编程及实例应用》等书籍。
基本掌握了实验板的使用方法和工作原理;
掌握了单片机定时器的使用和编程方法;
掌握外部中断服务程序的基本编程方法。
最后还要特别感谢我们的指导老师苏诗林和司莉云,他们给了我们很多宝贵指导,衷心得谢谢你们!
在本次设计论文完成之际,首先要向我的指导老师苏诗林、司丽云老师表示真挚的谢意。
本设计是围绕单片机而设计的,需要用到数电、模电、电路设计、C语言等方方面面的知识。
于学识有限,设计中、论文中难免有错,欢迎各位老师对本设计提出宝贵的意见。
5、刘守义.《单片机应用技术》,西安电子科技大学出版社6、余锡存.《单片机原理与接口技术》,西安电子科技大学出版社 心得体会: