红绿灯源程序.doc

红绿灯源程序.doc

ID:52199122

大小:2.10 MB

页数:13页

时间:2020-03-24

红绿灯源程序.doc_第1页
红绿灯源程序.doc_第2页
红绿灯源程序.doc_第3页
红绿灯源程序.doc_第4页
红绿灯源程序.doc_第5页
资源描述:

《红绿灯源程序.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、设计方案一、实训名称;单片机实训二、基本功能;设计一个交通灯,模型,通过红,黄,绿三色发光二极管仿真红绿交通灯,三色光的状态按照实际的交通灯处理,各色灯的显示时间自行定义,能够通过LED显示当前状态时间倒计时显示。扩展功能;各色灯的时间可以通过按键来进行修改。三、任务分析1一般情况下由南北和东西组成的十字路口,南北道放行13秒(数码管从13秒开始倒数,其中3秒用于黄灯时间),东西道放行10秒(两个数码管从13秒开始倒数,其中3秒用于黄灯时间)。2、编程过程:显示界面:采用数码管和LED灯相结合的方法,因为实际既要求倒计时施主输出,又要求又状态灯输

2、出等,为方便观看并考虑到现实状况,用2个共阴极数码管与12个LED分别显示时间和灯提示信息。控制端口``0/用p1口来控制红绿灯的变化1、用p3口来控制数码管的显示2、用p2口的高四位来控制com端口3、用p2口的低四位来控制按键端口4、用共阴极数码管来显示倒计时5、P1口用低电平点亮灯,1、设计思路;51单片机来作为主控,根据电平的变换来控制红绿灯的状态,时间用数码管的显示来控制,2、设一个十字路口的初始状态1:南北绿灯亮,东西红灯亮;持续一段时间然后转状态2:南北绿灯变成黄灯亮,东西红灯亮;过后转状态,持续一段时间3:东西绿灯亮,南北红灯亮;

3、持续一段时间再转状态4:东西绿灯变成黄灯亮,南北红灯亮。一段时间后,又循环至状态1。中间可通过中断按键产生中断,跳入中断程序执行中断。按键方面我用了三个,一个用来南北、东西互换是时候用来调整红绿灯的状态时间用其他两按键来控制,实现调整。7、交通信号灯的状态表如下:(其中,0代表灯亮,1代表灯灭)1)P1口:做为输出口,与发光二极管相连接,其状态及对应的十六进制值如下:方向状态无南北东西十六进制值说明P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.01000111100x6c南北绿东西红2001011100xac南北黄东西红30011

4、00110xd8东西绿南北红4001101010xd4东西绿南北黄2)对于交通信号灯来说,应该有东西南北共四组灯,但由于同一道上的两组的信号灯的显示情况是相同的,因此,采用单片机内部的I/O口上的P1口中的6个引脚即可来控制12个信号灯。3、通过编写程序,实现对发光二极管的控制,来模拟交通信号灯的管理。每延时一段时间,灯的显示情况都会按交通灯的显示规律进行状态转换。4、通过延时时间来实现倒计时显示器,增添和减少显示时间来实现其倒计时和灯持续的时间。5、共阴极:把发光二极管的阴极连在一起构成公共阴极。使用时公共阴极接地。这样阳极端输入高电平的段发光

5、二极管就导通点亮,而输入低电平的则不亮。4控制数码管驱动级的控制电路有静态式和动态式两类:5静态驱动:它是指每个数码管都要用一个译码器译码驱动。6动态驱动:它是所的数码管使用一个专门的译码驱动器,使各位数码管逐个轮流显示,延时时间比较短所以显示出来电路图红绿灯的源程序#includesbitcom1=P2^7;//定义com端sbitcom2=P2^6;sbitcom3=P2^5;sbitcom4=P2^4;sbitk1=P2^3;//定义开关端口sbitk2=P2^1;sbitk3=P2^0;unsignedchartable

6、[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数码管的代码显示unsignedcharnum=0,num1,temp1=10,temp2=13,flag;//定义变量voiddelay();//定义延时voidscanfkey();//定义按键控制voiddisplay();//定义调用程序unsignedcharm1=10,m2=13,m3=13,m4=10,a,b,c,d;//全局变量的定义voidmain(){TMOD=0X01;//定时计数器工作在方式一TH0=(6553

7、5-50000)/256;//定义定时计数器每次执行运行50MSTL0=(65535-50000)%256;ET0=1;//允许T0中断开始EA=1;//cpu工作TR0=1;//定时计数器运行com1=1;//显示器工作com2=1;com3=1;com4=1;P1=0x6c;//东西绿灯时候的亮灯情况while(1){display();//调用数码管显示子程序scanfkey();//按键调用子程序}}voidtimer0()interrupt1//定时计数器0{TH0=(65535-50000)/256;//定义定时计数器每次执行运行50

8、MSTL0=(65535-50000)%256;num++;if(num==4)//当运行到20次的时候是1秒{num=0;//运行20

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。