




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于51单片机的交通灯C语言程序设计2011-05-07 07:57十字交叉路口的交通灯控制器,是很常见的课程设计题目。做而论道以前写过一个,功能十分简单。最近,综合了一些百度知道中的题目要求,写出了一个稍稍复杂一点设计方案,使用了大家比较喜欢的C语言编写程序。基本功能如下:(1)东西、南北方向各设有一个绿、黄、红指示灯,两个显示数码管。(2)两个方向交替允许通行,基本放行时间为25s,另外有黄灯闪烁5s。(3)控制人员可以暂停自动的交替,使某个方向可以无限长时间的通行。(4)暂停期间,控制人员可以调整通行的时间,程序中还设置了调整的上下限。(5)暂停之后,灯光将按照设置的通行时间自动变换通行方向。(6)在正常通行期间,可以强制变换通行方向。强制变换的时候,也是要先显示闪烁的黄灯,然后切换到指定的方向。程序用PROTEUS仿真成功,并没有进行硬件实验。仿真截图画面如下。插图链接:/%D7%F6%B6%F8%C2%DB%B5%C0/album/item/2b4a22423e0d5c4972f05de6.html#C语言的控制程序如下:/-#include#define uchar unsigned char#define uint unsigned int/-定义接口-#define K_IN P1 /指定按键输入端口#define Star_Stop 1 /指定按键输入端口#define Time_ADD 2 /指定按键输入端口#define Time_SUB 4 /指定按键输入端口#define Turn_EW 8 /指定按键输入端口#define Turn_SN 16 /指定按键输入端口sbit D_R = P30;sbit D_Y = P31;sbit D_G = P32;/-定义变量-uchar Key_C; /新键值uchar Key_L; /上次键值uchar Trg; /触发(有键按下)trigeruchar Trg_L; /上次触发uchar Key_P; /确实按下uchar n_2ms, n_0D5s, D_SEC = 60; /60实际上是30秒uchar code D_seg = /共阳段码 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90; /0-9bit s_g, run, hong;/-延时-void delay(uint z) uint x, y; for(x = z; x 0; x-) for(y = 123; y 0; y-);/-读按键-void KeyRead( void ) /读按键所在端口,送到全局变量 Key_L = Key_C; /上次按键数值 Trg_L = Trg; Key_C = K_IN; /反相读入,有键按下,将读入1 Trg = Key_C & (Key_C Key_L); Key_P = Key_C & Trg_L;确认按下/-初始化-void init(void) TMOD = 0x01; /T0定时方式1 TH0 = (65536 - 2000) / 256; /2ms12MHz TL0 = (65536 - 2000) % 256; TR0 = 1; /启动T0 ET0 = 1; /开T0中断 EA = 1; /开总中断/- D_Y = 0; /关灯 D_R = hong; /红灯取决于当前的hong D_G = D_R; /绿灯则相反 n_0D5s = D_SEC; /倒计时的秒数(2倍的数值)/-主函数-void main(void) hong = 1; /hong = 1: 东西为红灯 init(); run = 1; /开机即运行 while(1) delay(8); /延时8ms if (Star_Stop & Key_P) run = run; if (!run) init(); if (Time_ADD & Key_P & !run) D_SEC += 2; if (D_SEC 120) D_SEC = 120; n_0D5s = D_SEC; if (Time_SUB & Key_P & !run) D_SEC -= 2; if (D_SEC 20) D_SEC = 20; n_0D5s = D_SEC; if (Turn_EW & Key_P & run & hong) n_0D5s = 11; if (Turn_SN & Key_P & run & !hong) n_0D5s = 11; /-T0中断函数-void T0_INT(void) interrupt 1 TL0 = (65536 - 2000) % 256; /重新写入初值 TH0 = (65536 - 2000) / 256; /2ms12MHz/-数码显示- s_g = s_g; /十位个位交替显示 if (s_g) P2 = 0; P0 = D_seg(n_0D5s / 2) / 10; P2 = 1; else P2 = 0; P0 = D_seg(n_0D5s / 2) % 10; P2 = 2;/-修改时间- n_2ms-; if (n_2ms % 5 = 0) KeyRead(); /10ms读一次按键 if (n_2ms = 0) n_2ms = 250; /定时500ms if (run) /如果是正在运行 n_0D5s-; /就倒计时 if(n_0D5s = 1) n_0D5s = D_SEC + 1;/减到1就重新开始 if(n_0D5s = D_SEC + 1) /如果是重新开始 if (hong) /如果当前是红灯亮 hong = 0; /下面就改成绿灯亮 D_Y = 0; /关闭黄灯 D_G = 1; /打开绿灯 D_R = 0; /关闭红灯 else /否则就改成红灯亮 hong
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖北铁道运输职业学院《先进材料制备技术》2023-2024学年第二学期期末试卷
- 柳州城市职业学院《媒介产业化经营》2023-2024学年第二学期期末试卷
- 贵州财经职业学院《钢结构设计》2023-2024学年第二学期期末试卷
- 东北师范大学《爬虫开发与实践》2023-2024学年第二学期期末试卷
- 河南物流职业学院《资源分析与环境修复技术》2023-2024学年第二学期期末试卷
- 青海卫生职业技术学院《预算管理》2023-2024学年第二学期期末试卷
- 四川警察学院《日本近代文学讲读》2023-2024学年第二学期期末试卷
- 宣城职业技术学院《妇女健康与康复》2023-2024学年第二学期期末试卷
- 漳州城市职业学院《企业经营管理沙盘》2023-2024学年第二学期期末试卷
- 天津医科大学《基础化学实验C》2023-2024学年第二学期期末试卷
- 教学能力大赛省赛-教学设计(2020年教学实施报告现场汇报)
- 餐券模板完整
- 表-D完整版本.0.2-作业架施工验收记录表
- 人教版高一数学必修一各章节同步练习(含答案)
- 异常子宫出血的护理查房
- 1.5内蒙古基本概况与主要文旅资源《地方导游基础知识》教学课件
- 肺功能检查质控及报告分析课件
- 电音节策划方案
- 2023年新高考天津数学高考真题(试卷)
- 急性有机磷农药中毒PBL教学法
- 2023年湖北武汉城市建设投资开发集团有限公司招聘笔试题库含答案解析
评论
0/150
提交评论