交通灯信号灯自动控制系统
更新时间:2024-04-27 15:19:01 阅读量: 综合文库 文档下载
- 交通灯信号灯控制电路图推荐度:
- 相关推荐
《C51程序设计》大作业
设计题目:交通灯信号灯自动控制系统
班 级: 学 号: 姓 名: 成 绩:
2013年5月
一、 设计任务 设计功能要求如下
(1) 以秒为计时单位,两位数码管以十进制递减计数形式作定时
显示,在递减计数回零瞬间完成换灯操作。
(2) 通过键盘红黄绿三色信号灯所亮时间在0~99秒内任意
设定。
(3) 十字路口的通行起始状态可人工设定,运行中可通过人工干
预使十字路口通行状态固定于任何一种工作模式。
二、电路原理图
三、 系统流程图
1、主程序流程图
开始 时钟初值设置子程序 开时钟2 绿灯初值设置子程序 黄灯初值设置子程序 开时钟1,倒计时 状态固定 状态选择
2、时钟初值控制子程序
时钟键盘扫描 N N 是否按下时钟键 Y 扫描加一,减一键盘 N 是否有键盘按下 Y 各个位的加一,减一
3、绿灯,黄灯初值设置子程序
扫描绿灯键盘控制N 是否键盘按下 Y 扫描加一,减一键 N 键盘是否按下 Y 相应位加一或
4、时钟控制与倒计时控制
时钟,倒计时初值通过键盘输入。倒计时使用52单片机
内部定时器1实现计数,时钟控制部分是使用定时、计数器2 实现计时,以秒为基本单位在数码管中显示。时钟部分:当秒的 个位计时到了10,则秒个位清0,同时十位进一,以此类推;倒 计时部分显示是则递减显示。此过程通过判断语句实现。
5、.灯状态控制
灯的状态通过键盘扫描控制。状态固定键按下时,关闭定
时器1;再次按下此键时,打开定时器。状态选择键按下时,程 序跳至下一个状态的程序控制部分,从而实现状态改变。
}
delay(1); p3_2=1;
void display3(uchar aa,uchar bb,uchar cc,uchar dd,uchar ee,uchar ff) {
p3_2=1;p3_3=1; P1=0xff;
wela=1;
dula=1;
dula=1; P1=table[bb]; dula=0; P1= 0xff; wela=1; P1=wei[6]; wela=0; delay(1); P1=wei[7];
wela=0; P1=0x00; dula=1; P1=table[aa]; dula=0;
delay(1);
P1=table[10];
dula=0; P1=0xff; wela=1; P1= wei[5]; wela=0;
delay(1);
dula=1;
P1=table[cc];
dula=0; P1=0xff; wela=1; P1= wei[4]; wela=0;
delay(1);
dula=1; P1=table[dd]; dula=0; P1= 0xff; wela=1; P1=wei[3]; wela=0; delay(1);
dula=1;
}
P1=table[10];
dula=0; P1=0xff; wela=1; P1= wei[2]; wela=0;
delay(1);
dula=1;
P1=table[ee];
dula=0; P1=0xff; wela=1; P1= wei[1]; wela=0;
delay(1);
dula=1; P1=table[ff]; dula=0; P1= 0xff; wela=1; P1=wei[0]; wela=0; delay(1);
void init() { }
//************************绿灯键盘扫描程序 keyscan1() {
if(key0==0) wela=0; dula=0;
TH1=(65536-50000)/256; TL1=(65536-50000)%6; TMOD=0x11; EA=1; ET1=1;TR1=0;
TH0=(65536-50000)/256; TL0=(65536-50000)%6; ET0=1;TR0=0;
{
//b=0;
delay(12);
while(key0==0) ; delay(12);
con++;
//b++;
}
if(con!=0) //con=1||2时的加一运算
if(key2==0)
{
delay(12); while(key2==0) ; delay(12); timedate1[con]++;
if(timedate1[con]>9)timedate1[con]=0;
shi1=timedate1[1]; ge1=timedate1[2];
display(shi1,ge1);
n1=10*shi1+ge1;
}
if(con!=0) //con=1||2时的减一运算
shi1=timedate1[1];
if(key3==0)
{
delay(12); while(key3==0) ; delay(12); timedate1[con]--;
if(timedate1[con]==255)timedate1[con]=9;
ge1=timedate1[2];
display(shi1,ge1);
n1=10*shi1+ge1;
}
}
//*********************黄灯控制键扫描 keyscan2() {
if(key1==0)
{
b=0;
delay(12);
while(key1==0) ; delay(12);
ye++;
b++;
}
if(ye!=0) //con=1||2时的加一运算
if(key2==0)
{
delay(12); while(key2==0) ; delay(12); timedate2[ye]++;
if(timedate2[ye]>9)timedate2[ye]=0;
shi2=timedate2[1];
ge2=timedate2[2]; display(shi2,ge2) ; n2=10*shi2+ge2;
}
}
if(ye!=0) //con=1||2时的减一运算
shi2=timedate2[1];
if(key3==0)
{
delay(12); while(key3==0) ; delay(12); timedate2[ye]--;
if(timedate2[ye]==255)timedate2[ye]=9;
ge2=timedate2[2];
display(shi2,ge2);
n2=10*shi2+ge2;
}
void timer0() interrupt 1 { }
//******************时钟控制键扫描程序 keyscan3() {
if(key6==0)
TH0=(65536-50000)/256; TL0=(65536-50000)%6; a1++;
{
delay(12);
while(key6==0) ; delay(12);
con3++;
TR1=0;
if(con3==5){TR0=1;con3=0; }
}
if(con3!=0) //con=1||2时的加一运算
if(key2==0)
{ }
delay(12); while(key2==0) ; delay(12); timedate3[con3]++; if(con3==1)con31=2; else if(con3==2)con31=9; else if(con3==3)con31=5; else if(con3==4)con31=9;
if(timedate3[con3]>con31)timedate3[con3]=0; if(timedate3[1]==2&&timedate3[2]==4)
{timedate3[2]=0;timedate3[1]=0;}
if(con3!=0)
if(key3==0) {
delay(12);
}
}
while(key3==0) ; delay(12); timedate3[con3]--;
if(con3==1) con32=2; else if(con3==2) con32=9; else if(con3==3) con32=5; else if(con3==4) con32=9;
if(timedate3[con3]==255)timedate3[con3]=con32; if(timedate3[1]==2&&timedate3[2]==9)
timedate3[2]=3;
aa=timedate3[1]; //小时的十是位 bb=timedate3[2]; cc=timedate3[3]; dd=timedate3[4]; ee=timedate3[5]; ff=timedate3[6]; t=10*aa+bb;
void time_intt3(void) interrupt 3 {
TH0=(65536-50000)/256; TL0=(65536-50000)%6; a3++; if(a3==20)
}
{
a3=0;timedate3[6]++; if(timedate3[6]==10)
{timedate3[6]=0;timedate3[5]++;}
if(timedate3[5]==6)
{timedate3[5]=0;timedate3[4]++;}
if(timedate3[4]==10)
{timedate3[4]=0;timedate3[3]++;}
if(timedate3[3]==6)
{timedate3[3]=0;timedate3[2]++;}
if(timedate3[2]==10)
{timedate3[2]=0;timedate3[1]++;}
if(timedate3[1]==2&&timedate3[2]==4)
{timedate3[1]=0;timedate3[2]=0;}
aa=timedate3[1]; bb=timedate3[2]; cc=timedate3[3]; dd=timedate3[4]; ee=timedate3[5]; ff=timedate3[6]; t=10*aa+bb; }
附:参考文献
(1)祁伟 杨亭 单片机C51程序设计教程与实验. 北京:北京航空航天大学出版社2010
(2)何立民上编.单机应用文集. 北京:北京航空航天大学出版社2009 (3)何立民 主编,C51系列单片机应用系统设计,北京:北京航空航天大学出版
社2010
正在阅读:
交通灯信号灯自动控制系统04-27
《俞净意公遇灶神记》---简明现代文版07-18
公益广告对企业品牌建设及传播的作用03-08
血液透析质量控制中心工作总结和工作计划03-12
居然之家wifi营销策划方案 - 图文12-17
毕业送别同学的话02-15
高中物理竞赛—直线运动的科学思维方法01-02
小学二年级美术《美丽的孔雀》教案04-08
XX地区重点项目库建设工作初探02-13
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 交通灯
- 信号灯
- 控制系统
- 自动