版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机课程设计单片机课程设计交通信号灯控制器 目前,单片机已广泛应用到国民经济建设和日常生活的许多领域,成为测控技术现代化必不可少的重要工具。通过课程设计,主要达到以下目的:1.进一步熟悉和掌握单片机的结构及工作原理,使学生掌握单片机的内 部功能模块的应用,如定时器/计数器、中断、片内外存贮器、I/O口、串行口通讯等。2.掌握单片机的接口技术及相关外围芯片的应用特性、控制方法,使学生增进对单片机应用系统的感性认识,加深对单片机理论方面的理解。3.通过课程设计,掌握以单片机核心的电路设计的基本方法和技术,了解相关电路参数的计算方法。4.通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术
2、。5.通过完成一个包括电路设计和程序开发的完整过程,使学生了解开发一单片机应用系统的全过程,为今后从事相应工作打下基础。1.设计一个十字路口交通信号灯控制电路,用来控制主干道和支干道的红、绿、黄三种信号灯的亮与灭。2.当支干道无车时亮红灯,则主干道处于允许通行状态亮绿灯。当主、支干道均有车时,两者交替允许通行,主干道直行放行60秒,主干道左转弯放行20秒,支干道放行20秒。3.每次允许通行时间结束,其绿灯变黄灯3秒钟后再变成红灯。此3秒钟内原红灯不变,3秒钟结束由红灯变成绿灯,即一干道通行停止,另一干道仍不允许通行。4.倒计时采用两位数码管显示,主干道和支干道都有。5.有紧急车辆通过时,系统能
3、禁止普通车辆通行,主、支干道均为红灯。交通灯状态转换表交通灯状态转换表态序主干道支干道时间直行左转右转1绿红绿红60s2黄红绿红3s3红绿绿红20s4红黄绿红3s5红红绿绿20s6红红绿黄3s7红红红红15sAT89C51单片机单片机LED数码管数码管总体设计图总体设计图晶振、复位电路红绿黄信号灯蜂鸣器LED数码管显示按键(开关)控制单片机控制流程图控制流程图主干道直行绿灯亮,右转弯绿灯亮主干道直行黄灯亮主干道左转弯绿灯亮主干道左转弯黄灯亮支干道绿灯亮支干道黄灯亮Protel DXP电路设计步骤 1.根据任务要求设计原理图; 2.创建项目文件; 3.原理图输入(放置元件;编辑元件属性、布局及连
4、线;元件自动标注); 4.原理图后处理 (编译与查错;生成元件报表;生成网络报表); 5.PCB板的制作 (规划电路板;导入网络表和元件封装;自动布局;自动布线;大面积铺铜)。电路原理图电路原理图晶振电路晶振电路外部时钟振荡电路由晶体振荡器和电容C1、C2构成并联谐振电路,连接在XTAL1、XTAL2脚两端。对外部C1、C2的取值虽然没有严格的要求,但电容的大小会影响到振荡器频率的高低、振荡器的稳定性、起振的快速性。C1、C2通常取值C1=C2=30PF左右;8051的晶振最高振荡频率为12M。复位电路复位电路复位电路电阻:起到限流作用,阻值不需要过大,取值为10欧;复位信号接高电平时需加上拉
5、电阻,使复位可靠,取值为1k;复位电路电容在上电的瞬间有电流流过,取值为10uF.蜂鸣器电路蜂鸣器电路此部分为开关控制特殊情况,蜂鸣器的正极接到VCC(5V)电源上面,蜂鸣器的负极接到三极管的发射极E,三极管的基级B经过限流电阻R27后由单片机的P3.0引脚控制,当P3.0输出高电平时,三极管T1截止,没有电流流过线圈,蜂鸣器不发声;当P3.0输出低电平时,三极管导通,这样蜂鸣器的电流形成回路,发出声音。3D PCB图图PCB图图软件设计软件设计程序组成:主程序主干道直行绿灯的时间显示子程序主干道直行黄灯的时间显示子程序支干道左转弯黄灯的时间显示子程序主干道左转弯通行的时间显示子程序支干道绿灯
6、时间显示子程序支干道黄灯闪烁时间显示子程序应急车辆通过的时间显示子程序应急车辆通过,中断服务程序程序流程图程序流程图主程序 ORG 0300HSTART:MOV 25H,#60 ; 主干道通行时间初始值 MOV 26H,#20 ; 支干道通行时间初值 SETB P3.6 SETB P3.7 SETB IT0 ; 外部中断下边沿触发 MOV IE,#8FH ; 开中断 JB P3.6,LOOP0 ; 主干道有车,跳转到LOOP0 JB P3.7,LOOP9 ; 主干道无车而支干道有车,则跳转到 LOOP9 LOOP0:MOV P2,#0F6H ; 主干道、支干道红灯亮 MOV P1,#6FH ;
7、 ACALL DE05S ;LOOP1:MOV R1,25H ; 为主干道直行方向显示时间做准备LOOP2:MOV 20H,R1 ; 主干道直行方向通行时间60s MOV P2,#0F3H ; 主干道直行绿灯亮,右转弯绿灯亮 MOV P1,#3FH ; MOV A,R1 ; R1=60 ADD A,#26 ;(21H)=86 MOV 21H,A ; 为支干道方向显示时间做准备 LCALL DISP1 ; 显示通行所剩时间,其中有0.5S延时 LCALL DISP1 ; 再次显示以便数码管不闪,且再延时 0.5S以便凑够1S DJNZ R1,LOOP2 ; 判断60S是否已完,若未延时LOOP3
8、:MOV R2,#03 ; 主干直行黄灯闪亮3SLOOP4:MOV P2,#0F5H ; 主干道直行黄灯亮 MOV P1,#3FH ; MOV 22H,R2 ; 为主干道方向显示时间做准备 MOV A,R2 ; R2=3 ADD A,#23 ;(21H)=26 MOV 21H,A ; 为支干道方向显示时间做准备 LCALL DISP4 ; 黄灯闪亮剩时显示,其中延时0.5S MOV P2,#0F7H ; 主干道直行黄灯灭 MOV P1,#3FH ; LCALL DISP4 ; 显示,且再延时0.5S以便凑够1S DJNZ R2,LOOP4 ; 判断3S是否已完,若未完则重新熄 灭、延时和显示L
9、OOP5:MOV R3,26H ; 主干道通行20S(26H)=20LOOP6:MOV P2,#0DEH ; 主干道左转弯绿灯亮 MOV P1,#3FH ; MOV 23H,R3 ; 为主干道方向显示时间做准备 MOV A,R3 ; ADD A,#3 ; MOV 24H,A ; 为支干道方向显示时间做准备 LCALL DISP3 ; 时间显示,其中有0.5S延时 LCALL DISP3 ; 凑够1S时间 DJNZ R3,LOOP6 ; 判断20S是否已完LOOP7:MOV R2,#03 ; 主干左转弯黄灯闪亮3SLOOP8:MOV P2,#0EEH ; 主干道左转弯黄灯亮 MOV P1,#3F
10、H ; MOV 22H,R2 ; 为显示时间做准备 LCALL DISP2 ; 黄灯闪亮剩时显示,其中延时0.5S MOV P2,#0FEH ; 主干道左转弯黄灯灭 MOV P1,#3FH ; LCALL DISP2 ; 显示,且再延时0.5S以便凑够1S DJNZ R2,LOOP8 ; 判断3S是否已完,若未完则重新熄灭、 延时和显示 JNB P3.7,LOOP11 ;LOOP9:MOV R3,26H ; 支干道通行20S(26H)=20LOOP10: MOV P2,#76H ; MOV P1,#0BFH ; 支干道绿灯亮 MOV 24H,R3 ; 为支干道方向显示时间做准备 MOV A,R
11、3 ; ADD A,#3 ; MOV 23H,A ; 为主干道方向显示时间做准备 LCALL DISP5 ; 时间显示,其中有0.5S延时 LCALL DISP5 ; 凑够1S时间 DJNZ R3,LOOP10 ; 判断20S是否已完 LOOP11: MOV R2,#3 ; 转入东西黄灯闪亮3SLOOP12: MOV 22H,R2 ; 为显示做准备 MOV P2,#0B6H ; MOV P1,#0BFH ; 支干道黄灯亮 LCALL DISP6 ; 显示时间,并延时0.5S MOV P2,#0F6H ; MOV P1,#0BFH ; 支干道黄灯灭 LCALL DISP6 ; 显示,且再延时0.
12、5S以便凑够1S DJNZ R2,LOOP12 ; 判断是否3S到,若未到继续闪灭东西黄灯 JB P3.6,LOOP15 JMP LOOP7 LOOP15: LJMP LOOP1主干道直行绿灯的时间显示子程序DISP1:MOV P0,#00H ; 熄灭数码管 MOV R7,#25 ; 以下调用四次5MS延时程序,故 25*4*5MS=0.5S RP1: MOV A,20H ; 主干道直行方向要显示时间移到 寄存器A MOV DPTR,#TAB ; 要显示的数字代码表首地址 MOV B,#10 DIV AB ; 要显示的时间10相除,求出十位 和个位 MOVC A,A+DPTR ; 找到十位的显
13、示代码 MOV P1,#00111110B ; 选择主干道数码管十位片 MOV P0,A ; 送出十位显示代码 ACALL DE5MS ; 延时5ms以点亮数码管 MOV A,B ; 把个位数移到寄存器A MOVC A,A+DPTR ; 找到个位数显示代码 MOV P1,#00111101B ; 选择主干道数码管个位片选 MOV P0,A ; 送出个位数显示代码 ACALL DE5MS ; 延时5ms以点亮数码管 MOV A,21H ; 支干道方向要显示时间移到寄 存器A MOV DPTR,#TAB ; 要显示的数字代码表首地址 MOV B,#10 DIV AB ; 要显示的时间与10相除,求
14、出个 位和十位 MOVC A,A+DPTR ; 找到十位的显示代码 MOV P1,#00111011B ; 选择支干道数码管的十位片选 MOV P0,A ; 送出十位显示代码 ACALL DE5MS ; 延时5ms以点亮数码管 MOV A,B ; 把个位数移到寄存器A MOVC A,A+DPTR ; 找到个位的显示代码 MOV P1,#00110111B ; 选择支干道数码管的个位片选 MOV P0,A ; 送出个位显示数码 ACALL DE5MS DJNZ R7,RP1 ; 是否已循环25次 RET主干道直行黄灯的时间显示子程序DISP4:MOV P0,#00 ; 熄灭数码管 MOV R7,
15、#25 ; 以下调用两次0.01S延时程序 RP4:MOV A,22H ; 要显示的时间移到寄存器A MOV DPTR,#TAB ; 要显示的数字代码表首地址 MOV B,#10 DIV AB ; 要显示的时间10相除,求出十 位和个位 MOVC A,A+DPTR ; 找到十位的显示代码 MOV P1,#00111110B ; 选择主干道数码管十位片 MOV P0,A ; 送出十位显示代码 ACALL DE5MS ; 延时5ms以点亮数码管 MOV A,B ; 把个位数移到寄存器A MOVC A,A+DPTR ; 找到个位数显示代码 MOV P1,#00111101B ;选择南北数码管个位片选
16、 MOV P0,A ; 送出个位数显示代码 ACALL DE5MS ; 延时5ms以点亮数码管 MOV A,21H MOV DPTR,#TAB ; 要显示的数字代码表首地址 MOV B,#10 DIV AB ; 要显示的时间与10相除,求出个 位和十位 MOVC A,A+DPTR ; 找到十位的显示代码 MOV P1,#00111011B ; 选择东西数码管的十位片选 MOV P0,A ; 送出十位显示代码 ACALL DE5MS ; 延时5ms以点亮数码管 MOV A,B ; 把个位数移到寄存器A MOVC A,A+DPTR ; 找到个位的显示代码 MOV P1,#00110111B ; 选
17、择东西数码管的个位片选 MOV P0,A ; 送出个位显示数码 ACALL DE5MS DJNZ R7,RP4 RET支干道左转弯黄灯的时间显示子程序DISP2:MOV P0,#00 ; 熄灭数码管 MOV R7,#25 ; 以下调用两次0.01S延时程序 RP2:MOV A,22H ; 要显示的时间移到寄存器A MOV DPTR,#TAB ; 要显示的数字代码表首地址 MOV B,#10 DIV AB ; 要显示的时间与10相除,求出个位和十位 MOVC A,A+DPTR ; 找到十位的显示代码 MOV P1,#00111010B ; 选择主干道数码管支干道数码管十位片 MOV P0,A ;
18、 送出十位显示代码 LCALL DE10MS ; 延时10ms以点亮数码管 MOV P1,#00110101B ; 选择主干道、支干道数码管个位片 MOV A,B ; 把个位数移到寄存器A MOVC A,A+DPTR ; 找到个位数显示代码 MOV P0,A ; 送出个位数显示代码 LCALL DE10MS ; 延时10ms以点亮数码管 DJNZ R7,RP2 RET主干道左转弯通行的时间显示子程序 DISP3:MOV P0,#00 ; 熄灭数码管 MOV R7,#25 ; 以下调用四次延时程序 RP3: MOV A,23H ; 把主干道左转弯方向显示的时间移 到寄存器A MOV DPTR,#
19、TAB ; 要显示的数字代码表首地址 MOV B,#10 DIV AB ; 要显示的时间10相除,求出十位 和个位 MOVC A,A+DPTR ; 找到十位的显示代码 MOV P1,#00111110B ; 选择主干道数码管十位片 MOV P0,A ; 送出十位显示代码 ACALL DE5MS ; 延时5ms以点亮数码管 MOV A,B ; 把个位数移到寄存器A MOVC A,A+DPTR ; 找到个位数显示代码 MOV P1,#00111101B ; 选择主干道数码管个位片选 MOV P0,A ; 送出个位数显示代码 ACALL DE5MS ; 延时5ms以点亮数码管 MOV A,24H ;
20、 MOV DPTR,#TAB ; 要显示的数字代码表首地址 MOV B,#10 DIV AB ; 要显示的时间与10相除,求出个位 和十位 MOVC A,A+DPTR ; 找到十位的显示代码 MOV P1,#00111011B ; 选择支干道数码管的十位片选 MOV P0,A ; 送出十位显示代码 ACALL DE5MS ; 延时5ms以点亮数码管 MOV A,B ; 把个位数移到寄存器A MOVC A,A+DPTR ; 找到个位的显示代码 MOV P1,#00110111B ; 选择支干道数码管的个位片选 MOV P0,A ; 送出个位显示数码 ACALL DE5MS DJNZ R7,RP3
21、 RET 支干道绿灯时间显示子程序DISP5:MOV P0,#00 ; 熄灭数码管 MOV R7,#25 ; 以下调用四次延时程序 RP5: MOV A,23H ; 把主干道左转弯方向显示的时 间移到寄存器A MOV DPTR,#TAB ; 要显示的数字代码表首地址 MOV B,#10 DIV AB ; 要显示的时间10相除,求出十 位和个位 MOVC A,A+DPTR ; 找到十位的显示代码 MOV P1,#10111110B ; 选择主干道数码管十位片 MOV P0,A ; 送出十位显示代码 ACALL DE5MS ; 延时5ms以点亮数码管 MOV A,B ; 把个位数移到寄存器A MO
22、VC A,A+DPTR ; 找到个位数显示代码 MOV P1,#10111101B ; 选择主干道数码管个位片选 MOV P0,A ; 送出个位数显示代码 ACALL DE5MS ; 延时5ms以点亮数码管 MOV A,24H ; MOV DPTR,#TAB ; 要显示的数字代码表首地址 MOV B,#10 DIV AB ; 要显示的时间与10相除,求出 个位和十位 MOVC A,A+DPTR ; 找到十位的显示代码 MOV P1,#10111011B ; 选择支干道数码管的十位片 MOV P0,A ; 送出十位显示代码 ACALL DE5MS ; 延时5ms以点亮数码管 MOV A,B ;
23、把个位数移到寄存器A MOVC A,A+DPTR ; 找到个位的显示代码 MOV P1,#10110111B ; 选择支干道数码管的个位片 MOV P0,A ; 送出个位显示数码 ACALL DE5MS DJNZ R7,RP3 RET支干道黄灯闪烁时间显示子程序 DISP6:MOV P0,#00 ; 熄灭数码管 MOV R7,#25 ; 以下调用两次0.01S延时程序RP6:MOV A,22H ; 要显示的时间移到寄存器A MOV DPTR,#TAB ; 要显示的数字代码表首地址 MOV B,#10 DIV AB ; 时间与10相除,求出个位和十位 MOVC A,A+DPTR ; 找到十位的显
24、示代码 MOV P1,#10111010B ; 选择主干道、支干道数码管十位片 MOV P0,A ; 送出十位显示代码 LCALL DE10MS ; 延时10ms以点亮数码管 MOV P1,#10110101B ; 选择主干道、支干道数码管个位片 MOV A,B ; 把个位数移到寄存器A MOVC A,A+DPTR ; 找到个位数显示代码 MOV P0,A ; 送出个位数显示代码 LCALL DE10MS ; 延时10ms以点亮数码管 DJNZ R7,RP6 RET DELAY: MOV R6,#1 ; DE61: MOV R0,#1 DE71: DJNZ R0,DE71 DJNZ R6,DE
25、61 RET DE5MS: MOV R6,#50 ; 5ms延时,(5ms=50*50*2us) DE6: MOV R0,#50 DE7: DJNZ R0,DE7 DJNZ R6,DE6 RET DE10MS: ACALL DE5MS ; 10ms延时 ACALL DE5MS RETDE05S: MOV R5,#05 ; DH1: MOV R6,#200 DH2: MOV R7,#126 DH3: DJNZ R7,DH3 DJNZ R6,DH2 DJNZ R5,DH1 RET应急车辆通过的时间显示子程序LOOP13: MOV P0,#00 ; MOV R7,#50 ; LOOP14: CLR P3.0 MOV A,27H ; MOV DPTR,#TAB ; MOV B,#10 DIV AB ; MOVC A,A+DPTR ; MOV P1,#01101010B ; MOV P0,A ; LCALL DE10MS ; MOV A,B ; MOV P1,#01100101B ; MOV P0,A ; LCALL DE10MS ; DJNZ R7,LOOP14 ; RET应急车辆通过,中断服务程序 INT9:PUSH P0 PUSH ACC CLR P3.0 MOV P2,#0F6H ; 主干
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 六年级上册语文语文期末卷(题目)
- 2026银行笔试面试题目及答案
- 2026银行类经济面试题及答案
- 2026应变反应面试题及答案
- 2026应急局组织面试题及答案
- 曹雪芹《金兰契互剖金兰语风雨夕闷制风雨词》(节选)阅读答案
- (2026版)《不良事件报告奖惩机制》
- 2026催化师培训面试题及答案
- (2026年)世界无烟日活动总结
- 小学五年级德育《讲文明懂礼仪 争做文明小使者》主题班会教学设计
- 2026年公立医院副院长选拔考试试题及答案
- 2026年天翼云解决方案架构师认证复习题库(附答案)
- 第20课《马克思主义的诞生》(课件)部编版九年级历史上册
- GJB3206B-2022技术状态管理
- 场地设计-第二章课件
- 跨省户口网上迁移告知单
- 教科版科学三年级上册第三单元《天气》单元作业设计
- 巡检月计划策划
- 逻辑学导论(中山大学)【超星尔雅学习通】章节答案
- 技术规范书【模板】
- 管壳式换热器
评论
0/150
提交评论