2024年单片机交通灯实验报告.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

《单片机》技术期末总結汇报

基于单片机的交通灯控制器设计

目的

运用发光二极管模拟交通灯的控制。

程序功能

模拟交通灯显示。

八位发光二极管提成2组,分别代表交通路口甲、乙两个方向的信号灯(紅、黄、绿、左转)。其中,紅灯与绿灯显示時间均為50s,左转显示時间為15s,黄灯显示5s。其状态表如下:

A方向

B方向

绿灯50s

紅灯50s

左转15s

紅灯15s

黄灯5s

紅灯5s

紅灯50s

绿灯50s

紅灯15s

左转15s

紅灯5s

黄灯5s

在信号灯亮的同步,在LED数码管上显示响应的時间(每个方向用2个数码管,倒计時)。

电路原理图

发光二极管电路图:

数码管电路图:

程序流程:

与否有定期器中断A、B两个方向显示倒计時程序初始化启动定期器0和1开始

与否有定期器中断

A、B两个方向显示倒计時

程序初始化

启动定期器0和1

开始

否 是

定期時间减一

定期時间减一

A方向程序控制流程图

开始

开始

每隔一秒计数值减一

每隔一秒计数值减一

计数值与否為0

计数值与否為0

亮灯标志与否為1 是

亮灯标志与否為1

绿灯亮,置亮灯标志為2,计数值為50s 是

绿灯亮,置亮灯标志為2,计数值為50s

亮灯标志与否為2

亮灯标志与否為2

左转灯亮,置亮灯标志為2,计数值為15s是

左转灯亮,置亮灯标志為2,计数值為15s

亮灯标志与否為3 否

亮灯标志与否為3

黄灯亮,置亮灯标志為4,计数值為5s是

黄灯亮,置亮灯标志為4,计数值為5s

亮灯标志与否為4

亮灯标志与否為4

紅灯亮,置亮灯标志為1,计数值為70s

B方向程序控制流程图

紅灯亮,置亮灯标志為1,计数值為70s

开始

开始

每隔一秒计数值减一

每隔一秒计数值减一

计数值与否為0

计数值与否為0

亮灯标志与否為1 是

亮灯标志与否為1

紅灯亮,置亮灯标志為2,计数值為70s 是

紅灯亮,置亮灯标志為2,计数值為70s

亮灯标志与否為2

亮灯标志与否為2

绿灯亮,置亮灯标志為2,计数值為50s是

绿灯亮,置亮灯标志為2,计数值為50s

亮灯标志与否為3 否

亮灯标志与否為3

左转灯亮,置亮灯标志為4,计数值為15s是

左转灯亮,置亮灯标志為4,计数值為15s

亮灯标志与否為4

亮灯标志与否為4

黄灯亮,置亮灯标志為1,计数值為5s

黄灯亮,置亮灯标志為1,计数值為5s

程序源码(应有必要的注释):

程序功能:模拟交通灯显示。

其中,紅灯与绿灯显示時间均為50s,中间的黄灯显示時间為15s。

绿灯用八位发光二极管流动闪烁作代表;

紅灯用八位发光二极管全亮作代表;

黄灯用八位发光二极管全亮全灭闪烁作代表。

刚开始显示的為绿灯。

显示次序:绿--黄--紅--黄--绿--黄--紅--………………#includereg51.h

#defineucharunsignedchar

#defineuintunsignedint

sbitdula=P2^6;

sbitwela=P2^7;

sbitbeep=P2^3;

unsignedintpp;

unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

ucharj,k,l=255;

uchara1,a0;

ucharshijian,deng=2;

voiddelay(unsignedinti)//延時程序

{for(j=i;j0;j--)

for(k=125;k0;k--);}

voiddisplay(unsignedcharsh_c,unsignedcharg_c)//定义灯亮的方式函数

{dula=0;

P0=table[sh_c];

dula=1;

dula=0;

wela=0;

P0=0xfe;

wela=1;

wela=0;

delay(5);

P0=table[g_c];

dula=1;

dula=0;

P0=0xfd;

wela=1;

wela=0;

delay(5);}

voidmain()//主函数

{ TMOD=0x01;

TR0=1;

TH0=(65536-46080)/256;//由于晶振為11.0

文档评论(0)

159****1748 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档