交通灯.docx
- 文档编号:6157728
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:13
- 大小:16.84KB
交通灯.docx
《交通灯.docx》由会员分享,可在线阅读,更多相关《交通灯.docx(13页珍藏版)》请在冰豆网上搜索。
交通灯
实验XXXXXXXX
一、实验目的
1)按键、数码管、发光二极管综合应用编程技术
2)数据存储于EEPROM的技术(也可以不使用)
3)定时中断技术
4)按键中断技术
二、实验实现的功能
1)对每个路口(主干道、次干道)的绿灯时间,及黄灯时间的设定。
2)设定参数掉电后不丢失(如果不使用EEPROM,此功能可以不实现)。
3)紧急按键功能,当按下该键时,所有路口变成红灯,相当于交警指挥特殊车辆通过。
再按该键,恢复正常显示。
三、系统硬件设计
1)采用12个发光二级管,模仿十字路口交通灯,采用共阴极接法通过排阻与5V电源相连,其中D1-D88个二极管与单片机的P2口相连,D9-D12和单片机的P3^2-P3^5相连。
采用2×3的键盘,其中H1和H2分别和单片机的P3^6和P3^7相连,L1,L2,L3分别和单片机的P0^5,P0^6,P0^7相连。
2)采用四个七段码数码显示器,他们按照共阳极的形式连接在一起,位选信号由P0^0~P0^3控制,段码由P1^0~P1^7口控制,数据和控制信息由六个按键键入
四、系统软件设计
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
#defineN35
sfrP1M1=0x91;
sfrP1M0=0x92;
sbita=P0^5;
sbitb=P0^6;
sbitc=P0^7;
sbitd=P3^6;
sbite=P3^7;
ucharcodetable1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
ucharcodetable2[]={0xfe,0xfd,0xfb,0xf7};
ucharshu[]={0,0,0,0};
ucharcount,t,n,flag,flag1=1;
uinttemp1,temp2,temp3,temp4,temp;
voiddelay(uintx);
voiddisplay();
voidzhuangtai1();
voidzhuangtai2();
voidzhuangtai3();
voidzhuangtai4();
voidanjian();
voiddelay(uintx)
{
uinti,j;
for(i=0;i for(j=110;j>0;j--); } voiddisplay() { uchari; shu[0]=temp/1000; shu[1]=temp%1000/100; shu[2]=temp%100/10; shu[3]=temp%10; for(i=0;i<4;i++) { P1=table1[shu[i]]; P0=table2[i]; delay(10); } } voidzhuangtai1() { flag=1; temp1=60; TMOD=0x01; TH0=(65536-46070)/256; TL0=(65536-46070)%256; EA=1; ET0=1; TR0=1; while (1) { if(flag1==1) { temp=temp1; P2=0x9e; P3=0xdf; display(); if(count==20) { count=0; temp1--; if(temp1==-1) { temp1=60; flag=0; break; } } } else { if(n==1) { P2=0xdb; P3=0xdb; } } anjian(); } } voidzhuangtai2() { flag=2; temp2=5; TMOD=0x01; TH0=(65536-46070)/256; TL0=(65536-46070)%256; EA=1; ET0=1; TR0=1; while (1) { if(flag1==1) { temp=temp2; P2=0x5d; P3=0xdf; display(); if(count==20) { count=0; temp2--; if(temp2==-1) { temp2=5; flag=0; break; } } } else { if(n==1) { P2=0xdb; P3=0xdb; } } anjian(); } } voidzhuangtai3() { flag=3; temp3=40; TMOD=0x01; TH0=(65536-46070)/256; TL0=(65536-46070)%256; EA=1; ET0=1; TR0=1; while (1) { if(flag1==1) { temp=temp3; P2=0xf3; P3=0xf3; display(); if(count==20) { count=0; temp3--; if(temp3==-1) { temp3=40; flag=0; break; } } } else { if(n==1) { P2=0xdb; P3=0xdb; } } anjian(); } } voidzhuangtai4() { flag=4; temp4=5; TMOD=0x01; TH0=(65536-46070)/256; TL0=(65536-46070)%256; EA=1; ET0=1; TR0=1; while (1) { if(flag1==1) { temp=temp4; P2=0xeb; P3=0xeb; display(); if(count==20) { count=0; temp4--; if(temp4==-1) { temp4=5; flag=0; break; } } } else { if(n==1) { P2=0xdb; P3=0xdb; } } anjian(); } } voidanjian() { uchari; d=0; if(a==0) { for(i=0;i { display(); } if(a==0) { while(! a); flag1=1; t++; if(t==1) { TR0=0; display(); } if(t==2) { t=0; TR0=1; display(); } } } if(t! =0) { if(b==0) { for(i=0;i { display(); } if(b==0) { while(! b); if(t==1) { display(); switch(flag) { case1: temp1++; if(temp1==60) temp1=0; break; case2: temp2++; if(temp2==5) temp2=0; break; case3: temp3++; if(temp3==40) temp3=0; break; case4: temp4++; if(temp4==5) temp4=0; break; } } } } if(c==0) { for(i=0;i { display(); } if(c==0) { while(! c); if(t==1) { display(); switch(flag) { case1: temp1--; if(temp1==-1) temp1=60; break; case2: temp2--; if(temp2==-1) temp2=5; break; case3: temp3--; if(temp3==-1) temp3=40; break; case4: temp4--; if(temp4==-1) temp4=5; break; } } } } e=0; if(a==0) { for(i=0;i { display(); } if(a==0) { while(! a); flag1=0; n++; if(n==1) { TR0=0; display(); } if(n==2) { n=0; TR0=1; flag1=1; } } } } voidmain() { P1M1=0; P1M0=0xff; while (1) { zhuangtai1(); zhuangtai2(); zhuangtai3(); zhuangtai4(); } } voidtimer0()interrupt1 { TH0=(65536-46070)/256; TL0=(65536-46070)%256; count++; } 五、实验过程中遇到的问题及解决方法 1.刚开始实验时,在各路口红绿黄灯转换上有大问题,该亮的不亮,该灭的 不灭,经过仔细检查,调试,实现了各色灯的正常运行。 2.原本想让黄灯是出现闪烁效果的,但是发现数码管闪烁效果不好,所以最 后没有用闪烁。 3.紧急情况按下4键,再按下不会恢复,后来通过仔细检查,调试,实现了 按下后恢复。 指导老师签字: 日期:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 交通灯