单片机课程设计 交通灯

上传人:第*** 文档编号:56896574 上传时间:2018-10-16 格式:DOC 页数:22 大小:560KB
返回 下载 相关 举报
单片机课程设计 交通灯_第1页
第1页 / 共22页
单片机课程设计 交通灯_第2页
第2页 / 共22页
单片机课程设计 交通灯_第3页
第3页 / 共22页
单片机课程设计 交通灯_第4页
第4页 / 共22页
单片机课程设计 交通灯_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《单片机课程设计 交通灯》由会员分享,可在线阅读,更多相关《单片机课程设计 交通灯(22页珍藏版)》请在金锄头文库上搜索。

1、 目录目录目录第一章 课程设计内容与要求分析 1 1.1 课程设计内容1 1.2 课程设计要求分析2 1.2.1 系统单元电路组成 2第二章 控制系统程序设计 4第三章 单片机原理及应用课程设计总结 18 参考文献 .19 附录 .20第一章第一章 课程设计内容与要求分析课程设计内容与要求分析1第一章第一章 课程设计内容与要求分析课程设计内容与要求分析1.1 课程设计内容课程设计内容本题目以 89C51 单片机为核心器件组成交通灯控制系统,采用定时中断实现精确定时;利用提供的单元模块构成硬件系统。交通灯控制系统的设计要求:1)基本功能:要求在一般工作方式下,十字路口为 A、B 道(A、B 道交

2、叉组成十字路口) ,每道设置红、绿、黄三盏灯,在灯的控制下各道轮流放行。通行的流程是:B 道红灯亮 40 秒,同时 A 道绿灯亮 30 秒,闪烁 5 秒,A 道黄灯亮 5 秒;然后切换 A 道红灯亮 40 秒,同时 B 道绿灯亮 30 秒,闪烁 5 秒;B 道黄灯亮 5 秒。如此循环。在 A、B 道红、绿、黄灯依次点亮时,A、B道对应的两位数码管分别倒计时显示本道红、绿、黄灯点亮的时间。2)扩展功能:设置自动流量控制功能:即当一道有车而另一道无车(用按键开关S1、S2 模拟车辆检测功能)时,使有车车道放行。 设置优先控制功能:当有紧急车辆通过时,用开关 S0 进行控制,将 A、B 道均设定为红

3、灯,第二次按下开关 S0 后,回复正常运行状态。第一章第一章 课程设计内容与要求分析课程设计内容与要求分析21.2 课程设计要求分析课程设计要求分析1.2.1 系统单元电路组成系统单元电路组成图 1 交通灯外围电路第一章第一章 课程设计内容与要求分析课程设计内容与要求分析3图 2 交通灯运行时电路图 3 交通灯运行时电路第二章第二章 控制系统程序设计控制系统程序设计4第二章第二章 控制系统程序设计控制系统程序设计#include unsigned char code dtab=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff;/共阳极

4、 接法的数字 09 段码表unsigned char code selec4=0xFE,0xFD,0xFB,0xF7;/动态显示位选码表unsigned char disp4; /定义 4 个显示缓冲单元 unsigned char aa25; sbit Key1=P14;/定义四个独立按键 sbit Key2=P15; sbit Key3=P16; sbit Key4=P17; sbit YL_ledR=P30;/定义 Y 轴方向左转的红绿黄灯 sbit YL_ledY=P31; sbit YL_ledG=P32; sbit YG_ledR=P33;/定义 Y 轴方向直行的红绿黄灯 sbit

5、 YG_ledY=P34; sbit YG_ledG=P35; sbit XL_ledR=P20;/定义 X 轴方向左转的红绿黄 sbit XL_ledY=P21; sbit XL_ledG=P22; sbit XG_ledR=P23;/定义 X 轴方向直行的红绿黄 sbit XG_ledY=P24; sbit XG_ledG=P25; unsigned char flag=13,move_flag;/定义标志位 unsigned char XGR,XGY,XGG; unsigned char XLR,XLY,XLG; unsigned char YGR,YGY,YGG; unsigned c

6、har YLR,YLY,YLG; unsigned char YYRR,XXRR; unsigned char num;void Delayms(unsigned int x) /定义 xms 延时函数,x 就是形式参数 第二章第二章 控制系统程序设计控制系统程序设计5unsigned int i;unsigned char j;for(i=x;i0; i-)for(j=110;j0;j-); /* 函数功能:定时器 0 中断服务函数,显示矩阵按键值 */ void Time0(void) interrupt 1 /“interrupt“声明函数为中断服务函数 unsigned char co

7、unt; TH0=(65536-50000)/256; /定时器 T0 的高 8 位赋初值 TL0=(65536-50000)%256; /定时器 T0 的低 8 位赋初值 if(+count=20) count=0; YGG-; /Y 轴绿灯时间减一 XXRR-; /X 轴红灯时间减一 disp2=XXRR%10; /X 轴数码管显示 Y 轴绿灯时间 disp3=XXRR/10; disp0=YGG%10; /Y 轴数码管显示 X 轴红灯时间 disp1=YGG/10; if(YGG=0) /如果 Y 抽绿灯时间减为零,Y 轴的黄 灯开始亮,X 轴的数码管显 Y 轴黄灯时间disp0=YGY

8、%10;disp1=YGY/10;YGG=1;YGY-; YG_ledG=1; /Y 轴的绿灯熄灭 YG_ledY=0;if(YGY=0XFF) /当 Y 轴黄灯闪烁时间变为零,Y 轴红灯亮, 黄灯灭,Y 数码管显示 X 轴绿灯时间 /同时 X 轴的绿灯亮,红灯灭,X 轴数码管显示 Y 轴红灯时间disp0=YLG%10;disp1=YLG/10;YGY=0;第二章第二章 控制系统程序设计控制系统程序设计6YLG-;YL_ledG=0;YG_ledR=0;YG_ledY=1;YL_ledR=1; if(YLG=0XFF)/当 X 轴绿灯时间为零,X 轴的绿灯灭,黄灯开 始闪烁。disp0=YL

9、Y%10;disp1=YLY/10;YLG=0; YLY-; YL_ledG=1; YL_ledY=0;if(YLY=0XFF)disp2=XGG%10; /X 轴数码管显示 Y 轴绿灯 时间disp3=XGG/10;disp0=YYRR%10; /Y 轴数码管显示 X 轴红灯 时间disp1=YYRR/10;YLY=0;XGG-;YYRR-;XG_ledG=0;XG_ledR=1;YL_ledR=0;YL_ledY=1; if(XGG=0XFF)disp2=XGY%10; /X 轴数码管显示 Y 轴 绿灯时间disp3=XGY/10; XGY-; XGG=0; XG_ledG=1; XG_l

10、edY=0;if(XGY=0XFF)第二章第二章 控制系统程序设计控制系统程序设计7disp2=XLG%10;/X 轴数码管显示 Y 轴绿灯时 间disp3=XLG/10;XLG-;XGY=0;XG_ledY=1;XL_ledR=1;XL_ledG=0;XG_ledR=0;if(XLG=0XFF)disp2=XLY%10;/X 轴数码管显示 Y 轴绿 灯时间disp3=XLY/10;XLG=0;XLY-;XL_ledG=1;XL_ledY=0;if(XLY=0XFF)TR0=0;flag=13; /* 函数功能:定时器 1 中断服务函数,显示矩阵按键值 */ void Time1(void)

11、interrupt 3 /“interrupt“声明函数为中断服务函数 static unsigned char i;第二章第二章 控制系统程序设计控制系统程序设计8TH1=(65536-2000)/256; /定时器 T1 的高8位赋初值 TL1=(65536-2000)%256; /定时器 T1 的低8位赋初值 P1=0xff; /全灭 P0=dtabdispi; /查段码送 P0 口 P1=seleci; /送位码 if(+i3) i=0; /* K2键的扫描函数 */ void key2_move()if(Key2=0) Delayms(1000); if(Key2=0)move_fl

12、ag+; if(move_flag1)move_flag=0; /* 函数功能:初始化 */ void init(void) aa1=0;aa2=0; aa3=0;aa4=5;aa5=1;aa6=0;aa7=0;aa8=0; aa9=0;aa10=5;aa11=1;aa12=0; aa13=0;aa14=0; aa15=0;aa16=5;aa17=1;aa18=0; aa19=0;aa20=0; aa21=0;aa22=5;aa23=1;aa24=0; TMOD=0x11; /使用定时器 T0 的模式 1 TH0=(65536-50000)/256; /定时器 T0 的高 8 位赋初值第二章第

13、二章 控制系统程序设计控制系统程序设计9TL0=(65536-50000)%256; /定时器 T0 的低 8 位赋初值 TH1=(65536-2000)/256; /定时器 T1 的高 8 位赋初值 TL1=(65536-2000)%256; /定时器 T1 的低 8 位赋初值 EA=1; /开总中断ET0=1; /定时器 T0 中断允许 TR0=0; /启动定时器 T0 ET1=1; TR1=1; void key(unsigned char k) if(Key3=0) /加一键 Delayms(1000); if(Key3=0) num+;if(num9) num=0; aak=num; if(Key4=0) /减一键 Delayms(1000); if(Key4=0) num-;if(num=0xff)num=9;aak=num; 第二章第二章 控制系统程序设计控制系统程序设计10void updat(unsigned c

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号