基于51单片机的交通灯系统报告(张明礼)(3)

2019-04-02 19:44

⑵ 选择芯片;

⑶ 新建文档,把编写好代码写入文档并保存了C文件; ⑷ 把保存的文档加载到Source Group; ⑸编译程序;

⑹设置转换成16进制; ⑺运行程序的结果;

2. 把编译好的16进制文件(.hex) 输入单片机STC89C52仿真器和对其进行初始化。

3.给实验板进行通电,观察运行结果,不一致则跳到第一步进行反复调试,直到与预定目的一致。

4.程序实现代码

;此程序分为四个部分,循环运行。南北方向绿灯6S。东西方向红灯6S。 ;南北方向黄灯3S,东西方向红灯3S(总共9S红灯)。 ;东西方向绿灯6S,南北方向红灯6S。

;东西方向黄灯3S,南北方向红灯3S(总共9S红灯)。

;共设计12个发光二极管,4个红的,4个绿的,4个黄的。

;按照如图的解法将南北东西各方向的红绿灯依次接到P3.0~~P3.5共6个IO口上。K1,K2,K3按键分别接到P2^2~P2^0上。表示了暂停/继续按键,南北强制通行按键,东西强制通行按键。

C语言程序如下 :

#include //头文件 #define uchar unsigned char //宏定义 #define uint unsigned int

sbit hong1=P3^0; //定义各个方向红绿灯端口 sbit lv1=P3^1; sbit huang1=P3^2; sbit hong2=P3^5; sbit lv2=P3^4; sbit huang2=P2^3;

sbit w1=P2^7; //定义位选 sbit w2=P2^6; sbit w3=P2^5; sbit w4=P2^4;

sbit k1=P2^2; //定义按键 sbit k2=P2^1; sbit k3=P2^0; uchar num;

uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,

- 11 -

0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; void delayms(uint x); void keyscank1(); void keyscank2(); void keyscank3();

void main() //主函数 {

unsigned int i,j,m,n; w1=0; w2=0; w3=0; w4=0;

while(1) {

for(i=6;i>0;i--)

{keyscank1(); keyscank2(); keyscank3(); //按键扫描 lv1=0; //南北方向绿灯6S。东西方向红灯6S。 hong1=1;huang1=1; hong2=0;

huang2=1;lv2=1; P0=table[i-1]; P1=table[i+2]; delayms(1000); }

for(j=3;j>0;j--)

{ keyscank1(); keyscank2(); keyscank3();

lv1=1; //南北方向黄灯3S,东西方向红灯3S(总共9S红灯)。 hong1=1;huang1=0; hong2=0;

huang2=1;lv2=1; P0=table[j-1]; P1=table[j-1]; delayms(1000); }

for(m=6;m>0;m--) { keyscank1();keyscank2(); keyscank3();

hong1=0; //东西方向绿灯6S,南北方向红灯6S。 lv1=1;huang1=1; P0=table[m+2]; P1=table[m-1]; lv2=0;

huang2=1;hong2=1; delayms(1000); }

- 12 -

for(n=3;n>0;n--) { keyscank1(); keyscank2(); keyscank3();

hong1=0; //东西方向黄灯3S,南北方向红灯3S(总共9S红灯)。 lv1=1;huang1=1; P0=table[n-1]; P1=table[n-1]; huang2=0;

lv2=1;hong2=1; delayms(1000); } } }

void keyscank1() //{

if(k1==0) {

delayms(5); if(k1==0) {

while(!k1); } } }

void keyscank2() //{ {

if(k2==0) {

delayms(10) ; if(k2==0) { while(!k2) {

hong1=0;

lv1=1;huang1=1; lv2=0;

huang2=1;hong2=1; delayms(1000); } } } }

void keyscank3() //{ {

按键K1扫描 按键K2扫描 按键K3扫描 - 13 -

if(k3==0) {

delayms(10) ; if(k3==0) { while(!k3) {

hong2=0;

lv2=1;huang2=1; lv1=0;

huang1=1;hong1=1; delayms(1000); } } } }

void delayms(uint x) //延迟程序 {

uint i,j;

for(i=x;i>0;i--)

for(j=110;j>0;j--) ; }

结论

本系统就是利用了STC89C52芯片的I/O引脚。系统采用STC公司生产的单片机STC89C52,以及其它芯片(如:L7805三端稳压电源)来设计交通灯控制器,实现了红灯亮9秒,绿灯亮6秒和黄灯亮3秒。并通过STC89C52的IO口设置红、绿灯燃亮的功能和控制实现在七段数码管上的时间显示;为了系统稳定可靠系统内集成了“看门狗”芯片,避免了系统因为死机而停止工作的情况发生。系统设计简便、实用性强、操作简单、程序设计简便。

系统不足:时间设定中间隔较短,没有设置左右转以及人行灯,以及自动根据车流改变红绿灯时间。此外,还没有充分考虑的把现代管理、人工智能运用到交通的控制中,来计算交通控制点之间的距离,来更合理的安排红、绿灯的持续时间,使城市的交通管理更加人性化。使人们远离目前的交通拥塞的现象。仅仅是在红绿灯的基础上增加了暂停/继续按键,南北强制通行按键,东西强制通行按键。

- 14 -

参考文献

[1]刘海宽 单片机实验与实训教程[M] 东南大学出版,2008 [2]张鑫 单片机原理及应用(第二版) 电子工业出版社 2012 [3]郭天祥 51单片机C语言教程[M] 电子工业出版社 2007 [4]谭浩强 C程序设计 [M] 电子工业出版社,1991

致谢

三周单片机实训结束了,感慨很多。三周时间很长也很短,在这三周里首先感谢之前单片机老师给我们很多扎实的基本知识。感谢学校图书馆和实验室给我们的良好的理论与实践支持。感谢老师们的无私帮助,无私解答我们实训中的问题,感谢班级同学尤其是集成创新社里的各位同学的帮助与支持。

- 15 -


基于51单片机的交通灯系统报告(张明礼)(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:四川省自贡市河口镇学校2013级第五学期期中考试数学试题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: