课程设计《 基于单片机的交通灯控制器设计》_第1页
课程设计《 基于单片机的交通灯控制器设计》_第2页
课程设计《 基于单片机的交通灯控制器设计》_第3页
课程设计《 基于单片机的交通灯控制器设计》_第4页
课程设计《 基于单片机的交通灯控制器设计》_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机技术 课程设计任务书课题名称 基于单片机的交通灯控制器设计 系 别 专 业 _ _ 班 级 _ 学 号 _ 姓 名 _ 指导教师 _ 年 月 日项目名称:基于单片机的交通灯控制器设计项目类型硬件设计要求设计结果+设计说明书承担学生姓名学号专业电子信息科学与技术班级项目设计要求:1、主要研究内容和功能要求:研究内容:单片机控制技术+显示输出方法研究+交通灯模拟研究功能要求:1)交通信号灯的显示(红、绿、黄三色LED);2)按键实现功能切换:A正常模式;B修改模式(可修改各方向的开通时间);C紧急模式3)倒计时功能显示(数码管)。4)可考虑扩展串口调整以上功能。5)完成相关电路的原理图绘制。2、参考资料(部分,仅供参考、借鉴):1)求实科技. 单片机典型模块设计实例导航. 北京:人民邮电出版社,2004.52)任致程,凌红武. 电子制作工艺技巧. 北京:人民邮电出版社,19993)王彦朋.大学生电子设计与应用.北京:中国电力出版社.2007.34)胡汉才. 单片机原理及其接口技术.北京:清华大学出版社,20043、阶段成果自查:0-0阶段:第18 周(6月11日6月17日) 理论研究、电路资料查找、焊接及测试。2-1阶段:第19 周(6月18日6月24日) 硬件电路分析与程序设计、编程、调试。2-2阶段:第20 周(6月25日6月29日) 完成调试,撰写课程设计说明书,验收。项目设计进度具体要求:2012年6月8日2012年6月10日:确定分组、选择题目、领用器件;2012年6月11日2012年6月13日:资料查找、理论学习、原理分析、思路构建;2012年6月14日2012年6月17日:电路焊接与测试;2012年6月18日2012年6月22日:硬件设计、软件设计;2012年6月23日2012年6月24日:系统联调、错误查找,进一步修改、完善;2012年6月25日2012年6月28日:撰写设计说明书;2012年6月28日下午:电科091班学生,验收、上交设计说明书及相关文档;2012年6月29日上午:电科092班学生,验收、上交设计说明书及相关文档;2012年6月29日下午:电科093班学生,验收、上交设计说明书及相关文档;项目验收方式与考核成绩评定:1、在规定的时间统一进行验收。(检查硬件、检查成果、检查设计说明书,问题回答)2、考核成绩评定由成果验收(占30%)+设计说明书质量(60%)。3、成绩由百分制转换为五等级。例(10090)为优秀,以此类推为良好、中等、及格、不及格。项目开始时间:20xx-6-11项目结束时间:20xx-6-29任务下达:完成所有要求/*#include*/ #include #define uchar unsigned char /*定义字符串类型为无符号型*/uchar code a10=0xfc,0x60,0xda,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xf6,;/*数码管段09数组*/uchar code b4=0x45,0x44,0x47,0x46; /*数码管段选数组*/uchar code c4=0x0C ,0x8A,0x61,0x51; /*交通灯模式数组*/uchar code d4=0x03,0x02,0x08,0x04; /*交通灯模式数组*/int value=16,g;char SN=25,WE=30; char SN_G=25,WE_G=15,Y=5; uchar i,k=0,count=0; void delay(uchar t);/*定义函数*/void light();/*定义函数*/ void led(); /*定义函数*/*程序初始化*/void init(void) /*12MHz */P2=0x00; TMOD=0x01; /*计数器用模式1,为16位计数器*/ TH0=(65536-50000)/256; /*0x3C*/ TL0=(65536-50000)%256; /*0xB0*/*计50000个数,用时50ms*/ IT0=1;/*外部中断0为边沿触发方式*/ ET0=1;/*允许T0中断*/ TR0=1;/*启动计数器*/ EA=1;/*CPU开放总中断*/ void keyscan()/扫描键盘uchar key;P0=0X68;P2=0X90;P2=0X10;/选中PA4,扫描1至4号,9到12号键P0=0xff;P2=0X00;/打开74hc245if (P0!=0xff)value=0;key=P0;while (key)value+;key=key/2;while (key!=0XFF)/*按键是否松开*/P0=0X08;P2=0X90;P2=0X10;P0=0xff;P2=0X00;if(P0=0XFF)delay(1);if(P0=0XFF)key=0XFF;g=1; P2=0x10; /*设置向通行时间*/voidshezhishijian(void) EA=0;/*CPU禁止响应一切中断*/ while(value!=5)/*无条件循环*/ P2=0x50,P0=0x49, P2=0x30,P0=0x02, P2=0x10;P0_6=0,P2=0x90,P2=0x10;/*东西南北方向均红灯亮,P0口输出0*/delay(10); /*延时*/ P2=0x90, P0=b3,P2=0x10,P0=0x00, P2=0x50,P0=a(SN_G+Y)%10;/*南北方向数码管显示可通行时间的个位*/ delay(10); /*延时*/ P2=0x90,P0=b2,P2=0x10,P0=0x00, P2=0x50,P0=a(SN_G+Y)/10;/*南北方向数码管显示可通行时间的十位*/ delay(10); /*延时*/ P2=0x50,P0=0x49, P2=0x30,P0=0x02, P2=0x10;P0_6=0,P2=0x90,P2=0x10;/*东西南北方向均红灯亮,P0口输出0*/delay(10); /*延时*/ P2=0x90,P0=b1,P2=0x10,P0=0x00, P2=0x50,P0=a(WE_G+Y)%10;/*东西方向数码管显示可通行时间的个位*/ delay(10); /*延时*/ P2=0x90,P0=b0,P2=0x10,P0=0x00, P2=0x50,P0=a(WE_G+Y)/10;/*显示东西方向十位*/*东西方向数码管显示可通行时间的十位*/ delay(10); /*延时*/g=0;value=0; keyscan();/扫描键盘 if(g=1) /*设置南北方向通行时间*/if(value=3) delay(10000); SN_G+;/*南北方向绿灯时间+1*/if(SN_G=100)SN_G=0;/*由于使用的是两位数码管,当南北方向绿灯时间加到100后清零*/ /*设置东西方向通行时间*/if(value=2) delay(10000); WE_G+;/*东西方向绿灯时间+1*/ if(WE_G=100) WE_G=0;/*由于使用的是两位数码管,当东西方向绿灯时间加到100后清零*/ count=0;/*清零*/k=0;/*南北方向通车,东西方向不通车*/SN=SN_G,WE=SN_G+Y;/*南北方向显示时间为南北方向绿灯通行时间,东西方向显示时间为南北方向绿灯通行时间加黄灯闪亮时间*/EA=1; /*CPU开放总中断*/void jinjimoshi()/*紧急模式*/*南北有车而东西无车*/ if(value=1) while(value!=5)count=0;/*清零*/ k=0;/*南北方向通车,东西方向不通车*/ SN=SN_G,WE=SN_G+Y;/*南北方向显示时间为南北方向绿灯通行时间,东西方向显示时间为南北方向绿灯通行时间加黄灯闪亮时间*/ light();/*调用交通灯函数*/ led(); /*调用数码管函数*/ keyscan(); /*南北无车而东西有车*/ if(value=2) while(value!=5)count=0;/*清零*/ k=2;/*南北方向通车,东西方向不通车*/ SN=SN_G,WE=SN_G+Y;/*南北方向显示时间为南北方向绿灯通行时间,东西方向显示时间为南北方向绿灯通行时间加黄灯闪亮时间*/ light();/*调用交通灯函数*/ led(); /*调用数码管函数*/ keyscan();/*晚上空闲时间,只亮黄灯*/if(value=3) while(value!=5) keyscan();P2=0x50,P0=0x00,P2=0X30,P0=0x00,P2=0x10;P0=0x08,P2=0X90,P=0X10;if(count=20)/*当count大于或等于20时,历时1s,执行程序*/ SN-;/*自减运算*/ WE-;/*自减运算*/ count=0;/*清零*/ if(SN=0|WE=0)/*当SN=0或者WE=0时,执行程序*/ k+;/*自增运算*/ if(k3)/*当k3时,执行程序*/ k=0;/*清零*/ switch(k)/*switch语句*/ case 0:SN=SN_G,WE=SN_G+Y;break;/*南北方向显示时间为南北方向绿灯通行时间,东西方向显示时间为南北方向绿灯通行时间加黄灯闪亮时间*/ case 1:SN=Y,WE=Y;break; /*东西方向显示时间均为黄灯闪亮时间*/ case 2:SN=WE_G+Y,WE=WE_G;break;/*南北方向显示时间为东西方向绿灯通行时间加黄灯闪亮时间,东西方向显示时间为东西方向绿灯通行时间*/ case 3:SN=Y,WE=Y;break; /*南北方向显示时间均为黄灯闪亮时间*/ /*延时t毫秒*/void delay(uchar t) uchar i; for(t;t0;t-) for(i=400;i0;i-) void light() P2=0x50,P0=ck, P2=0x30,P0=dk,P2=0x10;/*交通灯对应着k的值变化*/P0=0x08,P2=0x90,P2=0x10; if(k=1&count=10)/*当南北方向亮黄灯且count=0时,执行程序*/ P2=0x50,P0=0x08,P2=0x30,P0=0x02,P2=0x10; P0=0x08,P2=0x90,P2=0x10;/*南北方向黄灯熄灭,东西方向亮红灯*/ else if(k=3&count=10)/*当东西方向亮黄灯且count=0时,执行程序*/ P2=0x50,P0=0x41,P2=0x30,P0=0x00,P2=0x10; P0=0x08,P2=0x90,P2=0x10;/*南北方向亮红灯,东西方向黄灯熄灭*/ delay(5);P0=0X48,P2=0x90,P2=0x10;void led() P2=0x90, P0=b1,P2=0x50,P0=aSN/10;/*显示南北方向个位*/ delay(5);/*延时*/ P2=0x90,P0=b0,P2=0x50,P0=aSN%10;/*显示南北方向十位*/delay(5);/*延时*/light(); P2=0x90,P0=b3,P2=0x50,P0=aWE/10;/*显示东西方向个位*/delay(5);/*延时*/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论