小小的成就感。也很感谢指导老师在整个过程中的帮助和指导,幸好有老师的监督我才能一步一步的完成这次课程设计。在这次课程设计中,让我懂得了团队协作重要,在一个工程中一个团队精神是必不可少,在这里我要感谢老师对我们指导和我们团队的另外三个同学帮助。
13
参考资料
[1]王迎旭编.单片机原理与应用[M].机械工业出版社.2012
[2]周向红编.51系列单片机应用与实践教程 [M].北航出版社2005 [3]黄勤编.计算机硬件技术基础实验教程[M].重庆大学出版社2007 [4]刘乐善编.微型计算机接口技术及应用[M].华中科技大学出版社2008
14
附录A
系统硬件电路原理图
15
附录B
程序清单
#include
sbit green1=P1^0; //南方向的绿灯 sbit red1=P1^1; //南 红灯 sbit yellow1=P1^2; //南 黄灯 sbit green2=P1^3; //东方向的绿灯 sbit red2=P1^4; //东 红灯 sbit yellow2=P1^5; //东 黄灯
void delay() //延迟十几毫秒 用于动态数码显示管的段选和 { //位选的转换延迟 uint a;
for(a=500;a>0;a--); }
uchar code arry_duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //
示
管
的
阳
极
显
示
码
void initial() //对定时器T0初始化 { EA=1; ET0=1; TMOD=0x01; TH0=0x4c; TL0=0xd0; }
void display(int Y) //显示子函数 {
shi=Y/10; //显示管的高位
16
ge=Y; //显示管的低位 TR0=1; while(shi|ge!=0) {
P2=0x0a;
P0=arry_duan[shi]; //段选信号的输出 delay(); P2=0x05;
P0=arry_duan[ge]; delay(); } TR0=0; }
void displayshan(int Y) {
shi=Y/10; ge=Y; TR0=1;
shu=0x0040;
while(shi|ge!=0) {
if(shu==0) { yellow1=0;
yellow2=0;
shu=0x0070;
}
else { yellow1=1; yellow2=1;
}
P2=0x0a;
//位选信号的输出 // 黄灯闪烁及显示的子函数 //显示管的高位 //显示管的低位 //实现黄灯的闪烁 17