基于proteus的单片机控制模拟交通灯的设计
交通灯(proteus仿真设计+程序)
52单片机简易交通灯proteus仿真设计原理交通灯作为日常生活中必不可少的交通标志,它的设计是单片机初学者必不可少要接受的一项课题,下面简单介绍用proteus仿真一个由52单片机控制的简易交通灯。
本设计主要要求以下几个方面:一是根据系统控制要求设计硬件电路,这里是用PROTEUS软件来完成;二是根据硬件电路编写相应的程序流程图然后编写相关程序,这里程序的编制主要是用KeilC51软件来完成;三是在KEIL上用已经编好的程序生成.hex文件载入到PROTEUS中,实现PROTEUS与KEIL的联调,完成调试和仿真,观察调试结果是否满足设计要求,。
一:设计方案及重点:首先南北方向红灯、东西方向绿灯亮,南北方向红灯35秒、东西方向绿灯35秒,相应的数码管显示对应的数字并读秒,同时南北方向红色的交通灯和东西方向的绿色交通灯接通点亮显示,当东西方向的绿灯时间到,则东西方向的绿灯转为黄灯,同时数码管显示黄灯的时间3秒,东西方向的黄色二极管接通点亮,此时南北方向的红灯不变。
南北方向的红灯和东西方向的黄灯时间同时到,此时南北方向的红灯跳转为绿灯,时间同北方向的绿灯时间到,南北绿灯跳转为黄灯,东西方向的红灯不变,当南北方向的黄灯和东西方向的红灯时间到,南北方向的黄灯跳转为红灯,东西方向的红灯跳转为绿灯。
设计重点:1.数码显示管的计时2.数码管控制交通灯的转换3.锁存器与位选器端口的选择4.电路连接与程序编写二:仿真器件的介绍:1.单片机芯片:AT89C52, AT89C52是一个低电压,高性能CMOS 8位单片机, AT89C52单片机在电子行业中有着广泛的应用。
2.数码管:7SEG-MPX2-CC,这是一个两位数共阴极的数码管, 1就是左边数码管的阴极2就是右边数码管的阴极,a,b,c,d,e,f,g,就是数码管的段码,dp就是数码管的小数点3.锁存器与位选器:74HC573,具体作用:74HC573锁存器在数码管显示时作用的确是为了节省IO口,单片机P0口先发送abcdefghp段选信号,这时使用一个74HC573将段选信号保存住,单片机P0口再发送位选信号,此时单片机P0口信号不影响被锁存住的段选信号。
单片机控制交通灯控制系统设计-基于Proteus仿真
单片机控制交通灯控制系统设计-基于Proteus仿真单片机控制交通灯控制系统设计目录引言…………………………………………………………… - 3 -第1章概述 ............................................... - 3 -1.1单片机认识 .............................................. - 4 - 1.2 单片机的应用........................................... - 4 - 1.3设计任务 ................................................ - 5 - 第2章系统总体方案及硬件设计.......................... - 5 -2.1交通管理的方案 .......................................... - 5 - 2.2总体硬件设计 ............................................ - 6 - 2.3系统时钟电路 ............................................ - 6 - 2.4系统复位电路 ............................................ - 6 - 2.5数码管显示电路 .......................................... - 7 - 2.6路灯指示电路 ............................................ - 7 - 2.7按键电路设计 ............................... 错误~未定义书签。
第3章软件系统设计 ...................................... - 9 - - 1 -3.1设计思路及关键技术........................................ - 9 - 3.2 软件流程 ................................................. - 9 - 3.3 交通灯的设计程序说明 ..................................... - 9 -3.4 延时函数 ................................................ - 10 - 3.5 延时函数 ................................................ - 10 - 3.6显示函数 ................................................ - 10 - 3.7定时器0中断函数......................................... - 10 - 第4章Proteus软件仿真 ................................. - 12 -4.1 Proteus软件仿真......................................... - 12 - 4.2 南北路灯切换时仿真 ...................................... - 12 - 4.3 紧急情况下的仿真 ........................................ - 13 - 4.4东西紧急情况下的仿真..................................... - 14 - 第5章心得体会 .......................................... - 15 - 参考文献 .................................................... - 15 - 附1 源程序代码............................................. - 17 - 单片机控制交通灯控制系统设计摘要交通灯是我们日常出行时经常看见的交通控制系统,极大地改善了我们的日常出行。
(完整word版)基于Proteus仿真交通灯
Proteus班级:电信13—2姓名:段学亮邓成智崔俊杰邓石磊陈亮高金玉成绩:电子与信息工程学院信息与通信工程系1.设计要求单片机的P3口的P3.0~P3。
7连接4×4矩阵键盘,P0口控制一只数码管,当4×4矩阵键盘中的某一按键按下时,数码管上显示对应的键号.例如,1号键按下时,数码管显示“1", 14号键按下时,数码管显示“E”等等.2.仿真电路图仿真电路图,如图一图1:4*4键盘控制数码管显示3。
仿真C51程序#include<reg52。
h>#define uchar unsigned char#define uint unsigned intsbit dula=P2^6;sbit wela=P2^7;uchar disnum,temp,key;void delay(uchar i){uchar j,k;for(j=0;j<i;j++)for(k=0;k〈200;k++);}uchar code table_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0x7f8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};void main(){disnum=16;wela=0;while(1){P3=0xf0;temp=P3;temp=temp&0xf0;if(temp!=0xf0){delay(10);if(temp!=0xf0){temp=P3;temp=temp|0x0f;P3=temp;key=P3;switch(key){case 0xee :disnum=0;break;case 0xde :disnum=1;break;case 0xbe : disnum=2;break;case 0x7e :disnum=3;break;case 0xed :disnum=4;break;case 0xdd : disnum=5;break;case 0xbd : disnum=6;break;case 0x7d :disnum=7;break;case 0xeb : disnum=8;break;case 0xdb : disnum=9;break;case 0xbb : disnum=10;break;case 0x7b :disnum=11;break;case 0xe7 : disnum=12;break;case 0xd7 :disnum=13;break;case 0xb7 :disnum=14;break;case 0x77 :disnum=15;break;}}}P0=table_du[disnum];}}3.电路图仿真效果当按下键盘时,所显示的效果如图3—1至图3—4图3—1:当按下K0键时,数码管显示数字‘0’图3—2:当按下K4键时,数码管显示数字‘4'图3—3:当按下K8键时,数码管显示数字‘8’图3—4:当按下KF键时,数码管显示数字‘F' 5.总结电路设计方面,根据书本上还是课堂上老师所讲的知识,很快设计出来此仿真电路。
单片机课程设计任务书Proteus 及KEIL仿真软件基于单片机的城市交通灯控制系统设计
单片机原理及应用课程设计题目基于单片机的城市交通灯控制系统设计系 (部)班级姓名学号指导教师《单片机原理及应用》课程设计任务书目录1 引言 (1)1.1 课程设计任务 (1)1.2 设计要求: (1)2 设计方案简述 (2)2.1 总体思路 (2)2.2 主要实现功能 (3)2.3 设计方案与意义 (3)3 详细设计 (4)3.1 系统硬件电路设计 (4)3.2 AT89C51芯片简介 (4)3.2.1 主要特性 (5)3.2.2 管脚说明 (5)3.3 74LS273芯片 (7)3.4 单元电路设计 (7)3.4.1 多位数码显示管 (7)3.4.2 时钟电路 (8)3.4.3 复位电路 (9)3.5 系统整体设计电路 (9)3.6 系统软件功能设计 (10)3.6.1 程序设计思路 (10)3.6.2交通灯程序及设计思路 (11)3.6.3紧急情况程序及设计思路 (12)4 Proteus与Keil C51的操作 (14)4.1 Keil C51单片机软件开发系统 (14)4.2 单片机系统PROTEUS设计与仿真过程 (14)4.3 仿真结果 (15)5 总结 (19)6 参考文献 (20)7 附录 (21)1 引言交通灯是现代交通非常重要的一个组成部分,,一套好的交通灯系统往往对提升城市交通运输效率,降低事故发生率有至关重要的影响。
本系统由单片机系统、交通灯演示系统、按键系统、中断系统以及时钟电路、复位电路组成。
本文设计的智能交通灯系统采用Proteus设计与仿真,程序的编译与调试采用Keil C51来实现。
本文所设计的智能交通灯采用了单片机AT89C51,选用了LED灯和多位数码管来模拟显示的交通灯切换状态。
本系统除了实现最基本的交通灯功能以外,还有用来应对紧急情况的功能,这就是中断系统所实现的在有特定需要的情况下实现对交通灯状态的控制。
对于提高城市交通效率有非常重要的作用。
1.1 课程设计任务本课程设计的任务就是设计一个交通灯的控制系统,具体设计任务如下:1.进行系统总体设计。
基于Proteus的数字交通灯电路设计与实现
基于Proteus的数字交通灯电路设计与实现要基于Proteus进行数字交通灯电路的设计与实现,可以按照以下步骤进行操作:
1. 打开Proteus软件,创建一个新的工程。
2. 在工程中选择一个适当的微控制器模型,例如Arduino UNO。
3.在工程中选择一个合适的LED灯模型,用于表示交通灯的红、黄、绿三种状态。
4.将LED灯模型拖放到电路图中,并与微控制器的相应引脚连接。
5.在电路图中添加一个电阻,用于限流保护LED灯。
6. 编写Arduino程序代码,实现交通灯的控制逻辑。
例如,可以使用if语句和延时函数来控制LED灯的亮灭。
7. 将编写好的Arduino程序代码上传到微控制器中。
8.保存并仿真运行电路图,观察交通灯的工作状态。
9.可以通过更改程序代码中的延时时间和控制逻辑,来模拟不同的交通灯工作模式,如红绿灯交替、黄灯闪烁等。
完成以上步骤后,即可实现基于Proteus的数字交通灯电路设计与实现。
基于Proteus的智能交通灯的仿真设计
摘要本智能交通灯系统的设计主要是利用单片机和C语言完成共同来完成。
首先,系统采用红、黄、绿两组共六个LED发光二极管模拟十字路口东西和南北两个方向的交通信号灯,配有7SEG-MPX6-CC(六位八段共阴极数码管)数码构成倒计时牌,其的控制核心为AT89C51芯片。
其次,系统具有处理紧急情况的功能,可以使东西和南北双向红灯,禁止普通车辆通行。
最后,系统利用Proteus软件进行了软、硬件的的仿真。
关键词:AT89C51单片机倒计时牌中断数码管目录毕业设计任务书 (I)中文摘要............................................................................................... .II 1 引言. (1)1.1设计目的及意义 (1)1.2设计的内容 (1)2 设计原理 (2)2.1总体设计方案 (2)2.2硬件设计原理 (2)2.2.1硬件原理图 (2)2.2.2主要模块电路 (3)2.2.2.1控制核心——AT89C51单片机芯片 (3)2.2.2.2 LED数码管显示 (6)2.2.2.3六路交通灯的模拟 (8)2.2.2.4其它电路 (8)2.3 软件设计原理 (9)2.3.1软件流程图 (9)2.3.1.1主流程图 (9)2.3.1.2主要子程序流程图 (10)2.3.2软件源程序 (11)3 基于Proteus的仿真调试及排故 (11)3.1 Proteus的仿真软件的介绍 (11)3.2 主要调试过程 (11)3.2.1硬件测试 (12)3.2.2软件调试 (12)3.2.3连调 (12)3.3调试时出现的问题及解决方法 (12)4 结论 (14)致谢 (15)附录 (16)附录1 硬件连接图 (16)附录2 源程序 (17)附录3 共阴极LED数码管字段码表 (21)参考文献 (22)1 引言1.1 设计目的及意义交通是一个城市经济的命脉,它不但体现了一个城市的发展活力,也直接与老百姓的生活息息相关。
基于proteus和keil的交通灯控制
for(i=0;i<4;i++)
{ switch(i)
//位选,选择点亮的数码管,
{
case(0):
A=0;B1=0;C=0; break;//显示第0位
case(1):
A=1;B1=0;C=0; break;//显示第1位
case(2): A=0;B1=1;C=0; break;//显示第2位
case(3): A=1;B1=1;C=0; break;//显示第3位
unsigned int time=0;//second unsigned int i,j,SA,SB;//交通灯显示状态位00,01,10,011 //分别表示Agreen,Ayellow,Bgreen,Byellow,
unsigned char code DIG_CODE[10]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f}; //0、1、2、3、4、5、6、7、8、9的显示码 unsigned char DisplayData[8]; //用来存放要显示的8位数的值 void DigDisplay(); //动态显示函数 void delay5how>=0&&Ashow<=3) { Agreen=1; Ared=0; Ayellow=0; Bred=1; Bgreen=0; Byellow=0; delay500ms(); Agreen=0; delay500ms(); } else { Agreen=1; Ared=0; Ayellow=0; Bred=1; Bgreen=0; Byellow=0; }
基于proteus和keil的交通灯系统控制
1、任务
基于Proteus模拟软件的交通灯系统设计说明书
3rd International Conference on Mechanical Engineering and Intelligent Systems (ICMEIS 2015)Design of Traffic Light System Based on Proteus SimulationXuexuan CaiNorth China Electric Power University, Baoding, 071000, ChinaKeywords: proteus simulation software,traffic light systemAbstract. Based on the proteus simulation software, the paper realizes the individual timing and separated control on the transportation of Channel A and B with the 8254 counter and 8255 programmable parallel interface. The method of timing plus interruption control is adopted to count the passing time of vehicles in two directions separately, which enables the convenient change of passing times in two directions.1.Design Scheme1.1 Display of traffic lights under normal operationThe intel 8255A opening is used for display, leaving the PA7 and PA6 unused. The PA0, PA1 and PA2 respectively control the green light, yellow right and red light of Channel A, while the PA3, PA4 and PA5 differently control the green light, yellow right and red light of Channel B. Then, situation 1: when green light is in Channel A and red light in Channel B, 00100001B should be output in the 8255A opening; situation 2: when yellow light is in Channel A and red light in Channel B, 00100010B should be output in the 8255A opening; situation 3: when red light is in Channel A and green light in Channel B, 00001100B should be output in the 8255A opening; situation 4: when red light is in Channel A and yellow light in Channel B, 00010100B should be output in the 8255A opening.As to the time control, the frequency generator of counter 0 and working method 2 is used in the counter/ timer 8253. As the CLK0 pin receipts the 1MHz clock signal and the A8253 inputs 50000 (note: it is stipulated that the lower eight ones should be input before the higher eight ones in the programming), the result after calculation is just 0.05 seconds. The output of counter 0 is received by the clock signal of counter 1, which is working on the method 0: the counting will stop until the counter 0 finishes the method of outputting the jumping signals. As the counter 0 and 1 are counting in concatenation, the intended time can be controlled only by writing the value of counter 1 into the main program and the output of counter 1 will be received by PC0. For example, the situation 1 will maintain 25s without outside interruption and the B8253 should be input 500, namely 01100100B, with 0 in the higher eight ones. Situation 3 is the same with situation 1, while situation 4 is the same with situation 2. The query working method is adopted in timing. In the ending of the counting, the output 1 of PC0 means entering into the next working condition and 0 means continuing the query.1.2 Breaking off the switch in the state of emergencyDuring the process of simulation design, the emergency state of the switch simulation should be connected to PC1. In the state of emergency, PC1 will be low. The query working method is adopted in the foregoing situations of the display lights of the counter. The examination on whether the situation of the PC1 is 0 is added in the process. If the output is 1, the query will be continued; if the output is 0, the interrupt program will be conducted. If the interrupt program shows that red light is in both Channel A and Channel B, the query working method will unceasingly check out the situation of PC1 to find out whether it has recovered to be 1. If the situation becomes 1, the state of emergency has been relived and the primary state can be carried on by returning the scene; if the situation is still 0, the state of emergency isn’t relived and the lights should be kept red.2.Debug ResultsAfter the debug, the light display will be in cycle operation. If the green light of Channel A is interrupted, the red light of Channel A and B will be bright after the switch is pressed. The primary operation situation will be recovered when the switch is regained to Channel A and Channel B.The results of debug are as follows:Figure 1 Green light in Channel A and red light in Channel BFigure 2 Yellow light in Channel A and red light in Channel BFigure 3 Red light in Channel A and green light in Channel BFigure 4 Red light in Channel A and yellow light in Channel B Brief description on the debug results:(1)Figure 1 means Channel A is allowed to pass as there is green light but it is forbidden to pass Channel B as there is red light.(2)Figure 2 means that the 25s for green light in Channel A is up, the green light turns into yellow light reminding the coming of red light in the direction and red light is still in Channel B to forbid passing.(3)Figure 3 means that the 5s for yellow light in Channel A is up, it will turn into red light to forbid passing and there is green light in Channel B to allow passing.(4)Figure 5-4 means that the 25s for green light in Channel B is up, it turns into yellow light reminding the coming of red light in the direction and red light is still in Channel A to forbid passing.(5)The 5s is up and the system recovers to the primary state, namely, green light in south-north direction to allow passing and red light in Channel B to forbid passing, as shown in the following Figure. Based on the 60s cycle, the working functions of traffic lights are realized.(6) In case of emergencies, the button can be pressed to make red light on in both Channel A and Channel B, which is shown as follows:Figure 5 Red Light in both Channel A and Channel B3.SummaryThe paper conducts examination and simulation on the designed traffic system based on the proteus simulation software. By the simulation exercises, the functions of pins in 8086 chips can be understood more profoundly, such as how to use 8255 programmable parallel interface chips, how to take advantage of 8253 to make timing or output the pulses of certain frequency and how could the 8259 produce maskable interruption, etc. After the comparison between the simulation and the practical wirings and some slight adjustments on the program, the simulative traffic light system is easily built on the experiment box.References[1] Hong Yongquan. Microcomputer Principles and Interfacing Techniques [M]. Beijing: Science Press, 2009[2] Xu Zeming. Control Traffic Lights by Microcomputer [J]. Software Guide, 2007 (5)[3] Xiang Xinjian. Microcomputer Traffic Light Control System [J]. ASPT Source Journal, 1997 (09)。
基于单片机的交通灯系统设计仿真
基于单片机的交通灯系统设计仿真交通信号灯系统是城市交通管理中的重要组成部分,其稳定性和可靠性对交通安全和交通效率有着重要的影响。
为了提高交通信号灯系统的灵活性和智能化程度,本文将基于单片机技术对一种交通信号灯系统进行设计和仿真。
一、系统设计1.系统功能需求本交通信号灯系统需要能够智能地控制交通信号灯的状态,根据不同车辆和行人的需求进行合理的信号灯切换。
系统需要包括红灯、绿灯、黄灯三种状态,并能够根据不同条件进行合理的切换,保障交通的顺利进行。
2.系统硬件设计本系统主要由单片机、交通信号灯、传感器和显示器等硬件组成。
单片机作为系统的核心控制器,能够根据传感器的信号进行智能判断,并控制交通信号灯的状态。
交通信号灯模块包括红灯、黄灯和绿灯,能够根据单片机的控制信号进行状态显示。
传感器主要用于检测车辆和行人的情况,传输给单片机进行处理。
显示器用于显示当前的交通信号灯状态,方便行人和车辆进行参考。
3.系统软件设计系统软件主要包括单片机的程序设计和交通信号灯的状态控制算法。
单片机的程序设计需要根据传感器的信号进行智能判断,根据交通情况合理地控制交通信号灯的状态。
交通信号灯的状态控制算法需要考虑到各种交通情况,包括车辆的数量、行人的情况、交通流量等因素,通过合理的算法进行信号灯状态的切换。
二、系统仿真针对以上设计的交通信号灯系统,我们进行了基于单片机的系统仿真。
我们利用Keil C编程软件对单片机的程序进行开发,并通过Proteus进行系统的仿真。
2.系统硬件连接我们将设计好的单片机程序和交通信号灯模块通过Proteus进行硬件连接,模拟真实的系统环境。
我们通过传感器模拟车辆和行人的情况,检测信号传输给单片机进行处理。
3.系统仿真测试在系统硬件连接完成后,我们进行了系统的仿真测试。
我们模拟了不同情况下的交通流量,观察交通信号灯的状态切换情况,并对系统的稳定性和可靠性进行了测试。
通过对系统仿真的观察和结果分析,我们对系统的性能进行了评估并对系统进行了改进和优化。
基于proteus的单片机控制模拟交通灯的设计
AT89C51单片机的片内硬件结构AT89C51单片机的主要工作特性:1.内含4KB 的FLASH 存储器,擦写次数1000次。
2.内含28字节的RAM 。
3.具有32根可编程I/O 线。
4.具有2个16位可编程定时器。
5.具有6个中断源、5个中断矢量、2级优先权的中断结构。
6.具有1个全双工的可编程串行通信接口。
7.具有一个数据指针DPTR 。
8.两种低功耗工作模式,即空闲模式和掉电模式。
9.具有可编程的3级程序锁定定位。
AT89C51的工作电源电压为5(1±0.2)V 且典型值为5V,最高工作频率为24MHz 。
AT89C51各部分的组成及功能:单片机的中央处理器(CPU )是单片机的核心,完成运算和操作控制,主要包括运算器和控制器两部分。
(1)运算器运算器主要用来实现算术、逻辑运算和位操作。
其中包括算术和逻辑运算单元ALU、累加器ACC、B寄存器、程序状态字PSW和两个暂存器等。
ALU是运算电路的核心,实质上是一个全加器,完成基本的算术和逻辑运算。
算术运算包括加、减、乘、除、增量、减量、BCD码运算;逻辑运算包括“与”、“或”、“异或”、左移位、右移位和半字节交换,以及位操作中的位置位、位复位等。
暂存器1和暂存器2是ALU的两个输入,用于暂存参与运算的数据。
ALU的输出也是两个:一个是累加器,数据经运算后,其结果又通过内部总线返回到累加器;另一个是程序状态字PSW,用于存储运算和操作结果的状态。
累加器是CPU使用最频繁的一个寄存器。
ACC既是ALU处理数据的来源,又是ALU运算结果的存放单元。
单片机与片外RAM或I/O扩展口进行数据交换必须通过ACC来进行。
B寄存器在乘法和除法指令中作为ALU的输入之一,另一个输入来自ACC。
运算结果存于AB寄存器中。
(2)控制器控制器是识别指令并根据指令性质协调计算机内各组成单元进行工作的部件,主要包括程序计数器PC、PC增量器、指令寄存器、指令译码器、定时及控制逻辑电路等,其功能是控制指令的读入、译码和执行,并对指令执行过程进行定时和逻辑控制。
基于51单片机的交通信号灯模拟控制系统实验一
基于51单片机的交通信号灯模拟控制系统实验一、实验目的和要求1.掌握单片机基本资源使用。
2.掌握单片机电路原理图绘制和仿真。
3.掌握单片机C语言软件开发以及联合仿真。
二、实验内容和原理实验内容:1.根据题目绘制单片机电路原理图。
2.绘制程序流程图并编写C语言程序3.在仿真程序中进行联合仿真,最后提交实验报告三、主要仪器设备keilC,proteus。
四、操作方法与实验步骤4.1 题目要求用单片机设计一个十字路口交通灯模拟控制系统,要求东西、南北两个方向都通行20秒,警告3秒,禁止20秒,同时要考虑到东西、南北两个方向出现异常情况,出现异常情况器该方向通行60秒。
4.2 系统设计思路设置东西、南北方向的交通灯状态变量。
设置计时器变量,用来记录当前状态的持续时间。
设置异常情况变量,用来记录异常情况是否出现。
在主循环中使用无限循环来控制交通灯的状态和计时器的更新。
根据计时器的值和交通灯状态,判断当前状态,并控制灯的状态切换。
初始化交通灯状态和计时器,使东西、南北方向都为"通行"状态,计时器初始值设置为20秒。
在循环中,逐秒更新计时器的值,并判断当前状态。
如果计时器的值为0,即当前状态持续时间结束,根据当前状态进行灯的状态切换和计时器的重设。
如果出现异常情况,将相应方向的状态设置为"异常",并将计时器设置为60秒4.2 电路图绘制(包含详细的参数选定文字和图像叙述)4.3 C程序编制(包含详细的文字和程序流程图)#include <reg51.h>void delay500ms (unsigned char k);void main(void)SP=0X60;TMOD=0x01;IE=0x85;TCON=0x05;while(1)//初始化P1=0x21;delay500ms (40);P1=0x41;delay500ms (6);P1=0x12;delay500ms (40);P1=0x14;delay500ms (6);//状态1,东西方向绿灯,南北方向红灯20s //状态2,东西方向黄灯,南北方向红灯3s //状态3,南北方向绿灯,东西方向红灯20s//状态4,南北方向黄灯,东西方向红灯3s//东西方向异常,东西方向绿灯闪,南北方向红灯闪60svoid int 0(void) interrupt0)unsigned char il,i2;i1=Pl;for(i2=0;i2<60;i2++)P1=0x21;delay500ms (1);P1=0x00;delay500ms (1);Pl=il;//南北方向异常,南北方向绿灯闪,东西方向红灯闪60s void int 1(void) interrupt 2 unsigned char jl,j2;j1=P1;for (j2=0;j2<60;j2++)P1=0x12;delay500ms (1);P1=0x00;delay500ms (1);Pl=jl;//延时500ms 函数void delay500ms (unsigned char m) unsigned char k1, k2;TH0=0x3C;TL0=0xB0;TRO=1;for (k1=0;k1<m;k1++)for (k2=0;k2<10;k2++)while(!TFO);TF0=0;TH0=0x3C;TL0=0xB0;4.3 仿真分析(包含文字和图像叙述)状态,东西方向绿灯,南北方向红灯20秒,状态编码“100”(1):)状态2,东西方向黄灯,南北方向红灯3秒,状态编码“00000 (41H);状态了,南北方向绿灯,东西方向红灯20秒,状态编码“00”00 (2H);:状态4,南北方向黄灯,东西方向红灯3秒,状态编码“000”(4H)。
基于proteus智能交通灯的设计与实现
基于proteus智能交通灯的设计与实现智能交通灯作为现代城市道路交通管理中不可少的一部分,它的出现为我们的出行提供了安全保障、加强了路面交通流量控制、节约了交通资源等多方面的好处。
而其中一个较为重要的一环就是基于Proteus的智能交通灯的设计与实现。
对于基于Proteus智能交通灯的设计与实现,我们需要先了解它的原理与构成。
智能交通灯主要由红、黄、绿三种颜色的LED灯组成,可以根据解编程的控制器自动控制交通灯的信号灯状态,实现智能化控制交通。
具体来说,它需要用到Proteus中的LED、ATmega8微处理器和IC 74138解码器等元器件。
整个系统是由ATmega8控制器作为系统的核心,进行主控制。
当信号机工作时,ATmega8控制器便开始运作,通过仿真调制智能交通灯性能,确保系统电路稳定性和其性能的可靠性。
其中,LED元器件负责实现红、黄、绿三种颜色的信号灯。
而IC74138解码器则用来对输入的十进制代码进行解码,使得LED灯逐一亮起,完成交通灯状态的转换。
在实际上述基本原理的基础上,我们可以开始基于Proteus的智能交通灯的设计与实现。
设计依据的是流水灯的思路,将红、黄、绿LED的三种信号灯依次亮起,实现智能交通灯的变色。
设计时需要考虑到多个要素,如红灯的时长、绿灯的时长、每个状态时显示的LED灯的亮度、如何处理多组交通灯之间的协调联系。
同时,还需要在传感器的协助下,构建一个系统反应灵敏、控制精准的智能交通灯。
总体而言,基于Proteus的智能交通灯的设计与实现,要求我们结合实际需要,考虑到诸多因素。
这样,才能设计出安全可靠、实用对象、人性化、高效稳定的智能交通灯方案。
在实现过程中,我们必须深入了解相关的原理,逐一检验系统性能及其稳定性与可靠性,以确保交通灯的正常运行,为社会提供更加安全和便捷的出行保障。
基于Protues仿真的简单交通信号灯附C语言程序
简单的交通信号灯实现本文中主要利用89C52单片机实现一个简单的交通信号灯系统,代码编写借助keil软件编写,再结合protues软件进行仿真。
基本实现简单的交通信号等功能。
一.代码如下#include<reg52.h>/***************宏定义**********************/#define int8_t char#define uint8_t unsigned char#define int16_t int#define uint16_t unsigned int/**************变量申请*********************/int8_t times = 0;uint8_t g_timer0_1s = 0;uint8_t g_light_shark = 0;void Timer0_Init(){TMOD &= 0xF0; //单片机16位技术模式TMOD |= 0x01;TH0 = 0x00; //装入初值TL0 = 0x4c;TF0 = 0;EA = 1; //开总中断ET0 = 1; //允许定时器0中断}void Timer0(void) interrupt 1{TH0 = 0x00; //再次装入初值TL0 = 0x4c;times++;if(times == 20){times = 0;g_timer0_1s++;g_light_shark++;}}void delay_ms(uint8_t ms){uint16_t i;do{i = 11059200 / 14000;while(--i);}while(--ms);}void hxl_deal(uint8_t time) //横行左转处理{P2 = 0xA5;if(time < 15){P0 = 0x99;}else{if(g_light_shark % 2){P0 = 0xBD;}else{P0 = 0x99;}}}void hxz_deal(uint8_t time) //横行直行处理{P2 = 0xA5;if(time < 55){P0 = 0x66;}else{if(g_light_shark % 2){P0 = 0xE7;}else{P0 = 0x66;}}}void sxl_deal(uint8_t time) //竖行左转处理{P0 = 0xA5;if(time < 75){P2 = 0x99;}else{if(g_light_shark % 2){P2 = 0xBD;}else{P2 = 0x99;}}}void sxz_deal(uint8_t time) //竖行直行处理{P0 = 0xA5;if(time < 115){P2 = 0x66;}else{if(g_light_shark % 2){P2 = 0xE7;}{P2 = 0x66;}}}void Display(){P1 = 0x40;P3 = 0x06;delay_ms(50);P1 = 0x80;P3 = 0x4f;delay_ms(5);P1 = 0x00;}void main(){Timer0_Init();P0 = 0x00;P2 = 0x00;P3 = 0xff;delay_ms(1000);TR0 = 1; //开启定时器Display();while(1){if((g_timer0_1s >= 0) && (g_timer0_1s <= 20)){hxl_deal(g_timer0_1s);}else if((g_timer0_1s > 20) && (g_timer0_1s <= 60)){hxz_deal(g_timer0_1s);}else if((g_timer0_1s > 60) && (g_timer0_1s <= 80)){sxl_deal(g_timer0_1s);}else if((g_timer0_1s > 80) && (g_timer0_1s <= 120)){sxz_deal(g_timer0_1s);}{g_timer0_1s = 0;}}}二.仿真图如下1:系统未上电2:系统运行。
基于Proteus的交通灯模拟演示系统设计
基于Proteus的交通灯模拟演示系统设计摘要交通问题日益严重,我们需要设计一个合理的交通智能控制系统,这样就能够很有效的缓解交通拥堵现象。
值得一提的是,十字路口是城市交通的关键,是制约城市道路畅通的关键因素。
因此对交通信号灯的深入研究具有相当重大的意义。
本文根据实际生活中观测到的信号灯运转规律,对交通灯的控制系统进行了初步的研究,并设计了一个基于Proteus的交通灯模拟演示系统。
关键词交通灯;51单片机;Proteus仿真引言如今微控技术是在不停地改进和完善,单片机的深入应用是必然的发展趋势,这势必引起传统控制技术的根本性变革。
单片机设计交通系统改变传统的僵化、简单的交通系统,通过数据的多渠道采集,利用CPU对数据的处理加工,然后反馈给道路警察或出行者来实现道路交通的合理运行。
在整个城市交通控制系统的组成部分中,单片机的控制系统是不可或缺的一部分。
1 系统设计方案1.1 交通灯模拟系统的控制要求本系统的控制核心为AT89C51单片机[1-2],采用共阴极数码管显示倒计时。
同时,系统利用AT89C51单片机的P1、P2口控制交通信号灯显示,用keil C51编译程序。
本系统在加载编写的程序后,可以正确给出交通信号灯,数码管也可以正常显示倒计时,并具有强大的扩展功能,在紧急或特殊情况时,南北和东西方向可同时显示红灯,让特殊车辆优先通过,并及时倒计时显示。
假设道路的十字路口是东西南北的走向,一开始我们设定东西方向为红灯,南北方向为绿灯,在30s后南北方向转为黄灯亮3s,同时人行道转红灯。
在南北黄灯3s后东西方向转为绿灯,南北方向转为红灯,接着30s后东西方向黄灯转亮3s,同时人行道转红灯,之后依次循环。
当有紧急的或者特殊的情况出现时,东西南北方向同时显示红灯。
1.2 智能交通灯设计框图本设计用AT89C51完成对整个交通灯系统流程的智能控制及功能的调用,当外部有中断到来能及时地调用相应的子程序,当要实现对车流量的检测时(本设计未设计此功能)可以根据I/O口送来的数据进行运算分析、做出相应处理。
单片机proteus仿真设计交通灯(汇编语言)
课程设计成果说明书题目:城市交道口交通灯控制系统姓名:学号:学院:班级:指导教师:年月日一、任务:设计并制作一个城市交道口交通灯控制糸统二、要求:根据下图交道口模型,装上交通灯。
交道口模型如图所示。
交通灯控制规则如下:1)每个街口有左拐、右拐、直行及行人四种指示灯。
每个灯有红、绿两种颜色。
自行车与汽车共用左拐、右拐和直行灯。
2)共有四种通行方式:①车辆南北直行、各路右拐,南北向行人通行。
南北向通行时间为1分钟,各路右拐比直行滞后10秒钟开放。
②南北向左拐、各路右拐,行人禁行。
通行时间为1分钟。
③东西向直行、各路右拐,东西向行人通行。
东西向通行时间为1分钟,各路右拐比直行滞后10秒钟开放。
④东西向左拐、各路右拐。
行人禁行。
通行时间为1分钟。
3)在通行结束前10秒钟,绿灯闪烁直至结束。
1, 基本部分:按照上述控制要求,用发光二极管代替交通灯,用PROTEUS绘制电路图,并仿真调试实现之。
2, 发挥部分: 1.有倒计时时间显示。
2若交道口出现紧急情况,交警可将糸统设置成手动:全路口车辆禁行、行人通行。
紧急情况结束后再转成自动状态。
3当有119、120等特种车辆通过时,糸统自动转为特种车放行,其它车辆禁止状态。
特种车辆通过15秒钟后,糸统自动恢复,用模型车演示。
4其它自选措施。
城市交道口交通灯控制系统1.系统功能的确定功能一:可以实现红绿灯的转换以及控制路口的基本功能。
功能二:有倒计时功能和最后十秒绿灯闪烁的功能。
功能三:出现紧急情况时,可以警察手动控制特殊状态,并维持交通。
功能四:119或120等特种车经过时,可转换成为特种车道行驶状态,并在情况消除后15秒,恢复原状。
2.方案论证2.1方案一:如下图所示,为proteus仿真图。
其中,P1,P0端口的8位分别来控制东西,南北方向的红绿灯。
且运用了4个74LS164的8位移位寄存器(串行输入,并行输出)来控制4个LED的数码显示,通过AT89C51单片机的P3.0,P3.1两个扩展端口来接4个并行连接的74LS164的DIN和CLK两个端口来显示倒计时的功能,这会产生乱码使得显示杂乱,而主程序以顺序执行为主,其中穿插着对P3.7的端口高低电平的测试和跳转语句来实现功能三,并且功能一、二在主程序中实现,没有功能四的的实现程序。
基于proteus智能交通灯的设计与实现
基于proteus智能交通灯的设计与实现随着城市人口的不断增加和交通工具的普及,交通拥堵和交通事故越来越常见。
为了缓解这种情况,改善道路交通状况,保障行人和车辆的安全,交通灯的作用愈发重要。
然而,传统的交通灯存在一些不足之处,例如没有考虑到不同时间段和交通流量的变化等,无法满足大城市交通管理的需求。
因此,需要一种基于智能化技术的交通灯设计,以更好地优化道路交通流量。
本文将介绍一种基于Proteus的智能交通灯设计方案。
1.智能交通灯方案概述智能交通灯是一种基于计算机技术,通过交通信号控制点来优化交通流量的系统。
智能交通灯通过计算机和传感器来检测和调节交通流量,通过分析交通数据并根据预设算法计算,实现调度智能化控制,从而降低交通拥堵和交通事故的发生率。
2.智能交通灯的设计步骤智能交通灯的设计要按照以下步骤进行:2.1 系统需求分析首先要了解智能交通灯的基本需求,包括减少拥堵,优化交通流量,提高交通效率,保障行人和车辆的安全等。
需要根据实际交通情况和需求进行系统设计。
2.2 系统功能设计确定系统的基本功能,包括交通实时数据采集、交通流量分析、信号控制等。
为此需要选择合适的传感器、计算机控制器、交通灯等硬件设备,同时需开发相应的软件来实现系统功能。
2.3 系统硬件设计在开发系统前,需要进行硬件设计,确保系统硬件设备的适配性和可靠性。
硬件设计需要考虑各种因素,包括系统的功耗、专用芯片选择、模块排布等。
2.4 系统软件设计在硬件设计完成后,需要进行软件设计。
通过软件实现交通实时数据采集、交通流量分析和信号控制等功能,为后续交通灯运行提供指导。
2.5 系统测试和优化对系统进行测试,检验系统在实际运行中的性能和稳定性,找出问题并进行优化,在确保系统符合需求的情况下投入实际应用。
3.智能交通灯的运行流程智能交通灯的运行流程主要包括实时数据采集、数据处理、数据分析和信号控制四个阶段。
3.1 实时数据采集系统通过传感器采集交通实时数据,包括车辆的车速、车流量等信息。
Proteus实现单片机交通灯_图+程序(调试可用)
这是我初学单片机,并用Proreus软件自己绘制自己编写程序实现的一个交通红绿灯的系统。
这是硬件连接图和程序,以便今后复习。
左上右下中控制部分,上面一个开关按下时,南北方向绿灯,东西方向红灯黄灯闪烁3秒绿灯设置15秒,红灯设置18秒。
绿灯走完15秒后黄灯闪烁3秒变为红灯,红灯走完18秒后变成绿灯,以此循环。
源程序:COUNT EQU 30H ;T0中断计数SNLEDDA TA EQU 31H ;存储南北数码管显示的数据SNCOLORFLAG EQU 32H ;=1时南北绿灯亮,=2时南北黄灯亮,=3时南北红灯亮SNLEDDA TAINIT EQU 33H ;存储南北各颜色灯的初始时间EWLEDDA TA EQU 34H ;存储东西数码管显示的数据EWCOLORFLAG EQU 35H ;=1时东西红灯亮,=2时东西绿灯亮,=3时东西黄灯亮EWLEDDA TAINIT EQU 36H ;存储东西各颜色灯的初始时间org 0000hlJMP MAINorg 0003hljmp exint0ORG 000BHlJMP INTT0org 0013hljmp exint1org 0100h;主函数**************************************MAIN:CALL INITSTART:MOV A,COUNTCJNE A,#200,NOT1S ;没到1秒跳转MOV COUNT,#00 ;1秒时间到DEC SNLEDDATAMOV A,SNLEDDATAJNZ checkewleddataMOV SNLEDDATA,SNLEDDA TAINITINC SNCOLORFLAGMOV A,SNCOLORFLAGCJNE A,#04,checkewleddataMOV SNCOLORFLAG,#01checkewleddata:DEC EWLEDDATAMOV A,EWLEDDA TAJNZ timenotoverMOV EWLEDDATA,EWLEDDATAINITINC EWCOLORFLAGMOV A,EWCOLORFLAGCJNE A,#04,timenotoverMOV EWCOLORFLAG,#01TIMENOTOVER:NOT1S:call ewcolorcheckCALL snCOLORCHECKCALL DISPLAYJMP START;*********************************************;初始化函数***********************************INIT: MOV SP,#60HMOV TMOD,#01HMOV TH0,#0eCHMOV TL0,#078HMOV COUNT,#00HMOV SNLEDDATAINIT,#15MOV EWLEDDATAINIT,#18MOV SNLEDDATA,SNLEDDA TAINITMOV EWLEDDATA,EWLEDDATAINITSETB TR0 ;开定时器0SETB ET0 ;允许定时器0中断setb ex0 ;允许外部0中断setb ex1 ;允许外部1中断setb it0 ;外部中断0下降沿触发setb it1 ;外部中断1下降沿触发SETB EA ;开总中断MOV P2,#0feHMOV SNCOLORFLAG,#01RET;*****************************************;外部中断0*********************************** exint0:push accpush pswmov a,p0push accmov a,p1push accmov a,p2push accclr ex1clr p2.0clr p2.1clr p2.2clr p2.3setb p1.4clr p1.1clr p1.2setb p1.5clr p1.3clr p1.4jnb p3.2,$setb ex1pop accmov p2,apop accmov p1,apop accmov p0,apop pswpop acc;外部中断1*********************************** exint1:push accpush pswmov a,p0push accmov a,p1push accmov a,p2push accclr ex0clr p2.0clr p2.1clr p2.2clr p2.3setb p1.4setb p1.2clr p1.1clr p1.0setb p1.3clr p1.5clr p1.4jnb p3.3,$setb ex0pop accmov p2,apop accmov p1,apop accmov p0,apop pswpop acc;T0中断函数*******************************INTT0:PUSH ACCPUSH PSWMOV TH0,#0ecH ;#0echMOV TL0,#078H ;#078hMOV A,P2RL ACJNE A,#11101111B,NOT5MOV A,#0feH ;p2.0=0,南北数码管十位亮,p2.1=0,南北数码管个位亮NOT5: MOV P2,A ;p2.2=0,东西数码管十位亮,p2.3=0,东西数码管个位亮INC COUNTPOP PSWPOP ACCRETI;****************************************;南北红绿黄灯控制**************************snCOLORCHECK:PUSH ACCPUSH BPUSH PSWsngreen:MOV A,SNCOLORFLAGCJNE A,#01,snYELLOWMOV SNLEDDATAINIT,#03 ;设置南北黄灯闪烁时间CLR P1.2CLR P1.1SETB P1.0 ;南北绿灯亮JMP snCOLORCHECKOUTsnYELLOW:;MOV A,SNCOLORFLAGCJNE A,#02,snredMOV SNLEDDATAINIT,#18 ;设置南北红灯亮时间MOV A,COUNTDIV ABMOV A,BCJNE A,#00H,snNOTFLASHCPL P1.1 ;南北黄灯闪烁CLR P1.0CLR P1.2snNOTFLASH:JMP snCOLORCHECKOUTsnred:MOV SNLEDDATAINIT,#15 ;设置南北绿灯亮时间CLR P1.0CLR P1.1SETB P1.2 ;南北红灯亮snCOLORCHECKOUT:POP PSWPOP BPOP ACCRET;******************************************************;东西红绿黄灯控制**************************************ewCOLORCHECK:PUSH ACCPUSH BPUSH PSWewred:MOV A,ewCOLORFLAGCJNE A,#01,ewyellowMOV ewLEDDATAINIT,#15 ;设置东西绿灯亮时间CLR P1.3CLR P1.4SETB P1.5 ;东西红灯亮JMP ewCOLORCHECKOUT;MOV A,ewCOLORFLAGCJNE A,#03,ewgreenMOV ewLEDDATAINIT,#18 ;设置东西红灯亮时间MOV A,COUNTMOV B,#100DIV ABMOV A,BCJNE A,#00H,ewNOTFLASHCPL P1.4 ;东西黄灯闪烁CLR P1.3CLR P1.5ewNOTFLASH:JMP ewCOLORCHECKOUTewgreen:MOV ewLEDDATAINIT,#03 ;设置东西黄灯闪烁时间CLR P1.4CLR P1.5SETB P1.3 ;东西绿灯亮ewCOLORCHECKOUT:POP PSWPOP BPOP ACCRET;************************************************************;数码管显示**************************************************DISPLAY:PUSH ACCPUSH PSWPUSH BMOV A,SNLEDDATAMOV B,#10DIV ABMOV A,EWLEDDA TAMOV B,#10DIV ABMOV R2,BMOV R3,AMOV DPTR,#TABLEMOV A,P2 DISPSNH:CJNE A,#0feH,DISPSNLMOV A,R1MOVC A,@A+DPTRMOV P0,AJMP DISPOUT DISPSNL:CJNE A,#0fdH,DISPEWHMOV A,R0MOVC A,@A+DPTRMOV P0,AJMP DISPOUT DISPEWH:CJNE A,#0fbH,DISPEWLMOV A,R3MOVC A,@A+DPTRMOV P0,AJMP DISPOUT DISPEWL:CJNE A,#0f7H,DISPOUTMOV A,R2MOVC A,@A+DPTRMOV P0,A DISPOUT:POP BRET;************************************************** TABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH; 0 1 2 3 4 5 6 7 8 9END。
基于proteus的单片机控制模拟交通灯的设计
基于proteus的单片机控制模拟交通灯的设计交通灯是城市交通管理中不可或缺的一部分,它能够控制交通流动,确保交通安全。
在这个设计中,我们将使用Proteus软件来模拟交通灯的控制。
首先,我们需要选择一个适合的单片机来控制交通灯。
在这个设计中,我们选择了常用的AT89C51单片机。
AT89C51是一款8位微控制器,具有强大的功能和广泛的应用范围。
接下来,我们需要连接单片机和交通灯。
我们将交通灯的红、黄、绿三个灯分别连接到单片机的三个输出引脚上,用于控制灯的亮灭。
此外,我们还需要连接一个按钮到单片机的输入引脚上,用于模拟行人过马路时的信号。
在Proteus软件中,我们可以使用元件库中提供的交通灯和按钮模拟器来完成这个设计。
我们将交通灯的灯泡分别连接到单片机的输出引脚上,将按钮连接到单片机的输入引脚上。
接下来,我们需要编写单片机的控制程序。
在这个设计中,我们需要实现交通灯的循环控制和行人信号的模拟。
我们可以使用C语言来编写程序,并使用Keil C51编译器将程序烧录到单片机中。
在程序中,我们可以使用定时器和中断来实现交通灯的循环控制。
我们可以设置一个定时器来定时切换交通灯的状态,例如每隔10秒切换一次。
当定时器中断发生时,我们可以在中断服务程序中切换交通灯的状态。
此外,我们还需要实现行人信号的模拟。
当按钮按下时,我们可以通过检测输入引脚的状态来触发行人信号。
当行人信号触发时,我们可以通过改变交通灯的状态来实现停车。
在Proteus软件中,我们可以使用仿真功能来验证我们的设计。
我们可以设置仿真参数,例如定时器的定时周期和按钮按下的时机,然后运行仿真,观察交通灯的状态和行人信号的模拟效果。
通过这个设计,我们可以学习到如何使用Proteus软件来模拟交通灯的控制,同时也能够加深对单片机的理解和应用。
交通灯的设计是一个典型的嵌入式系统应用,通过这个设计,我们可以锻炼自己的嵌入式系统开发能力。
基于Protues的十字路口交通灯模拟实验仿真
2总体方案设计
2.1系统模拟交通灯的控制要求
控制要求:在十字路口,每条道路各有两组红、黄、绿灯用来指挥车辆和行人的有序通行,保障车辆和行人安全通过。
假定十字路口交通灯的初始运行状态为东西绿灯南北红灯。表1中是十字路口红绿灯的六种运行状态方案。运行时从状态一到状态六依次执行,最后由状态六转换到状态一,实现循环动作。
关键词:Proteus仿真;51单片机;交通灯系统
中图分类号:TH-3文献标识码:A
Proteus simulationexperimentof crossroads traffic lights
Abstract:In order to satisfythe demand of thecityroadtransportationmanagement,improve the operation efficiency of urban traffic,and design atraffic control systemby SingleChipMicrocomputer.By using Proteus simulation platform,explains thedesign ofcrossroadstraffic lightscontrol systemwhichbased on 51SingleChipMicrocomputer, andunitingwith the Keil C51.It has completed software debugging,hardware testing and system debugging.From theviewof the experimental simulation, test the reliability of thecrossroadstraffic light control system,enhancethe development efficiency, reduce the design cost, combinethetheoryof SingleChipMicrocomputerwith practice, anddeepen the understanding of the technology.
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
AT89C51单片机的片内硬件结构AT89C51单片机的主要工作特性:1.内含4KB的FLASH存储器,擦写次数1000次。
2.内含28字节的RAM。
3.具有32根可编程I/O线。
4.具有2个16位可编程定时器。
5.具有6个中断源、5个中断矢量、2级优先权的中断结构。
6.具有1个全双工的可编程串行通信接口。
7.具有一个数据指针DPTR。
8.两种低功耗工作模式,即空闲模式和掉电模式。
9.具有可编程的3级程序锁定定位。
AT89C51的工作电源电压为5(1±0.2)V且典型值为5V,最高工作频率为24MHz。
AT89C51各部分的组成及功能:单片机的中央处理器(CPU)是单片机的核心,完成运算和操作控制,主要包括运算器和控制器两部分。
(1)运算器运算器主要用来实现算术、逻辑运算和位操作。
其中包括算术和逻辑运算单元ALU、累加器ACC、B寄存器、程序状态字PSW和两个暂存器等。
ALU是运算电路的核心,实质上是一个全加器,完成基本的算术和逻辑运算。
算术运算包括加、减、乘、除、增量、减量、BCD码运算;逻辑运算包括“与”、“或”、“异或”、左移位、右移位和半字节交换,以及位操作中的位置位、位复位等。
暂存器1和暂存器2是ALU的两个输入,用于暂存参与运算的数据。
ALU的输出也是两个:一个是累加器,数据经运算后,其结果又通过内部总线返回到累加器;另一个是程序状态字PSW,用于存储运算和操作结果的状态。
累加器是CPU使用最频繁的一个寄存器。
ACC既是ALU处理数据的来源,又是ALU运算结果的存放单元。
单片机与片外RAM或I/O扩展口进行数据交换必须通过ACC来进行。
B寄存器在乘法和除法指令中作为ALU的输入之一,另一个输入来自ACC。
运算结果存于AB寄存器中。
(2)控制器控制器是识别指令并根据指令性质协调计算机内各组成单元进行工作的部件,主要包括程序计数器PC、PC增量器、指令寄存器、指令译码器、定时及控制逻辑电路等,其功能是控制指令的读入、译码和执行,并对指令执行过程进行定时和逻辑控制。
AT89C51单片机中,PC是一个16位的计数器,可对64KB程序存储器进行寻址。
复位时PC的内容是0000H。
(3)存储器片机内部的存储器分为程序存储器和数据存储器。
AT89C51单片机的程序存储器采用4KB的快速擦写存储器Flash Memory,编程和擦除完全是电器实现。
(4)外围接入电路AT89C51单片机的外围接口电路主要包括:4个可编程并行I/O口,1个可编程串行口,2个16位的可编程定时器以及中断系统等。
AT89C51的工作原理:1.引脚排列及其功能AT89C51的封装形式有PDIP,TQFP,PLCC等,现以PDIP为例。
(1)I/O口线P0口—8位、漏极开路的双向I/O口。
当使用片外存储器及外扩I/O口时,P0口作为低字节地址/数据复用线。
在编程时,P0口可用于接收指令代码字节;程序校验时,可输出指令字节。
P0口也可做通用I/O 口使用,但需加上拉电阻。
作为普通输入时,应输出锁存器配置1。
P0口可驱动8个TTL负载。
P1口—8位、准双向I/O口,具有内部上拉电阻。
P1口是为用户准备的I/O双向口。
在编程和校验时,可用作输入低8位地址。
用作输入时,应先将输出锁存器置1。
P1口可驱动4个TTL负载。
P2—8位、准双向I/O口,具有内部上拉电阻。
当使用外存储器或外扩I/O口时,P2口输出高8位地址。
在编程和校验时,P2口接收高字节地址和某些控制信号。
P3—8位、准双向I/O口,具有内部上拉电阻。
P3口可作为普通I/O口。
用作输入时,应先将输出锁存器置1。
在编程/校验时,P3口接收某些控制信号。
它可驱动4个TTL负载。
(2)控制信号线RST—复位输入信号,高电平有效。
在振荡器稳定工作时,在RST脚施加两个机器周期以上的高电平,将器件复位。
EA/V PP—外部程序存储器访问允许信号EA。
当EA信号接地时,对ROM的读操作限定在外部程序存储器,地址为0000H-FFFFH;当EA接V CC时,对ROM的读操作从内部程序存储器开始,并可延续至外部程序存储器。
在编程时,该引脚可接编程电压5V或12V。
在编程校验时,该引脚可接V CC。
PSEN—片外程序存储器读选通信号PSEN,低电平有效。
在片外程序存储器取指期间,当PSEN有效时,程序存储器的内容被送至P0口;在访问外部RAM时,PSEN 无效。
ALE/PROG—低字节锁存信号ALE。
在系统扩展时,ALE的下降沿将P0口输出的低8位地址锁存在外接的地址锁存器中,以实现低字节地址和数据的分时传送。
此外,ALE端连续输出正脉冲,频率为晶振频率的1/6,可做外部定时脉冲使用。
(3)外部晶振引线XTAL1—片内振荡器反向放大器和时钟发生线路的输入端。
使用片内振荡器时,连接外部石英晶体和微调电容。
XTAL2—片内振荡器反相放大器的输出端。
当使用片内振荡器时,外接石英晶体和微调电容。
2.存储器组织和特殊功能寄存器AT89C51的存储器将程序存储器和数据存储器分开,并有各自的存储空间和访问指令。
它有4个存储空间:片内存储器、片外存储器、片内数据存储器及片外存储器。
3.时钟电路和工作时序(1)振荡器电路原理(2)震荡电路的接法第一章硬件电路原理图设计第二章软件程序设计源程序:SECOND EQU 30HH_RED BIT P2.1 ;定义IO端口H_GREEN BIT P2.2H_YELLOW BIT P2.3L_RED BIT P2.4L_GREEN BIT P2.5L_YELLOW BIT P2.6ORG 0000HLJMP MAINORG 0030HMAIN: MOV TMOD,#01H ;设置定时器0,为方式1 MOV TH0,#3CH ;置定时器的初始值,定时50ms MOV TL0,#0B0HCLR TF0 ;清定时器0溢出标志SETB T R0 ;启动定时器START: CLR AMOV P1,A ;首先关闭显示MOV P3,A;***********************************;状态1,东西方向绿灯亮,南北方向红灯亮;***********************************MOV R2,#20MOV R3,#21MOV SECOND,#20 ;20秒初值LCALL STATE1LCALL COUNT;***********************************;状态2,东西方向绿灯闪,南北方向红灯亮;***********************************MOV R0,#01H ;标志位,南北方向绿灯闪MOV R2,#2MOV R3,#4MOV R4,#10MOV SECOND,#3 ;3秒初值LCALL DISPLAYLCALL STATE2LCALL COUNT1;***********************************;状态3,东西方向黄灯闪,南北方向红灯亮;***********************************MOV R0,#02H ;标志位,南北方向黄灯闪MOV R2,#2MOV R3,#3MOV R4,#10MOV SECOND,#2 ;2秒初值LCALL STATE3LCALL COUNT1;************************************;状态4,东西方向红灯亮,南北方向绿灯亮;************************************MOV R2,#20MOV R3,#21MOV SECOND,#20 ;20秒初值LCALL STATE4LCALL COUNT;************************************;状态5,东西方向红灯亮,南北方向绿灯闪;************************************MOV R0,#03H ;标志位,东西方向绿灯闪MOV R2,#2MOV R3,#4MOV R4,#10MOV SECOND,#3 ;3秒初值LCALL STATE5LCALL COUNT1;************************************;状态6,东西方向红亮,南北方向黄灯闪;************************************MOV R0,#04H ;标志位,东西方向黄灯闪MOV R2,#2MOV R3,#3MOV R4,#10MOV SECOND,#2 ;2秒初值LCALL STATE6LCALL COUNT1LJMP START;************************************;计时程序;************************************COUNT: LCALL DISPLAYWAIT1: JNB TF0,WAIT1 ;定时器50ms未到,则等待CLR T F0 ;定时器50ms到了;清定时器0溢出标志MOV TH0,#3CHMOV TL0,#0B0HLCALL DISPLAYDJNZ R2,WAIT1 ;是否到1秒MOV R2,#20DEC SECOND ;到1秒则秒值减1DJNZ R3,WAIT1 ;20秒是否倒计时减完,未完则返回RETCOUNT1: LCALL DISPLAYWAIT2: JNB TF0,WAIT2CLR T F0MOV TH0,#3CHMOV TL0,#0B0HLCALL DISPLAYDJNZ R4,WAIT2 ;是否到500ms,未到则返回CJNE R0,#01H ,D1CPL L_GREEN ;到了500ms,则闪南北方向绿灯D1: CJNE R0,#02H ,D2CPL L_YELLOW ;闪南北方向黄灯D2: CJNE R0,#03H ,D3CPL H_GREEN ;闪东西方向绿灯D3: CJNE R0,#04H ,D4CPL H_YELLOW ;闪东西方向黄灯D4: MOV R4,#10DJNZ R2,WAIT2 ;是否到1秒MOV R2,#2DEC SECONDDJNZ R3,WAIT2RET;********************************;LED显示状态;********************************STATE1: SETB H_RED ;东西方向绿灯亮,南北方向红灯亮CLR H_GREENCLR H_YELLOWCLR L_REDSETB L_GREENCLR L_YELLOWRETSTATE2: CLR H_GREEN ;东西方向绿灯闪,南北方向红灯亮CLR H_YELLOWCLR L_REDCLR L_GREENCLR L_YELLOWRETSTATE3: CLR H_RED ;东西方向黄灯闪,南北方向红灯亮CLR H_YELLOWCLR L_REDCLR L_GREENSETB L_YELLOWRETSTATE4: CLR H_RED ;东西方向红灯亮,南北方向绿灯亮SETB H_GREENCLR H_YELLOWSETB L_REDCLR L_GREENCLR L_YELLOWRETSTATE5: CLR H_RED ;东西方向红灯亮,南北方向绿灯闪SETB H_GREENCLR H_YELLOWCLR L_GREENCLR L_YELLOWRETSTATE6: CLR H_RED ;东西方向红灯亮,南北方向黄灯闪CLR H_GREENSETB H_YELLOWCLR L_REDCLR L_YELLOWRET;*******************************;显示程序;********************************DISPLAY: MOV A,SECONDMOV B,#10DIV ABMOV DPTR,#LEDMAPMOVC A,@A+DPTRMOV P1,A ;显示十位MOV A,BMOVC A,@A+DPTR ;显示个位MOV P3,ARETLEDMAP: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END11。