《单片机原理与应用》课程设计指导书(项目一下发).doc_第1页
《单片机原理与应用》课程设计指导书(项目一下发).doc_第2页
《单片机原理与应用》课程设计指导书(项目一下发).doc_第3页
《单片机原理与应用》课程设计指导书(项目一下发).doc_第4页
《单片机原理与应用》课程设计指导书(项目一下发).doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

单片机应用技术单片机应用技术 课程设计指导书课程设计指导书 适用班级 适用班级 13 级大专级大专 指导老师 张 慧 盐城工业职业技术学院电子教研室 2014 8 目目 录录 1 1 目的及意义目的及意义 2 2 设计要求设计要求 3 3 设计方案 设计方案 4 4 系统框图 系统框图 5 硬件电路图 硬件电路图 6 软件设计 软件设计 7 心得体会 心得体会 选题一 交通灯的设计选题一 交通灯的设计 1 1 目的及意义 目的及意义 掌目的及意义目的及意义握单片机开发流程 能够独立完成单片机小系统的开发 学会查找资 料 设计硬件电路 编写相应软件 电路调试 撰写设计报告 提高分析问题 解决 问题的能力 为以后就业打下坚实的专业基础 2 2 设计要求 设计要求 1 在十字路口东西南北方向各设置红 黄 绿三种信号灯 正常情况下 东西 南北 方向正常放行 当东西方向 放行 南北方向禁行时 东西方向绿灯亮 25 秒 然后黄 灯闪烁 5 秒 南北方向红灯亮 30 秒 当南北方向放行 东西方向禁行时 南北方向绿 灯亮 30 秒 然后黄灯闪烁 5 秒 东西方向红灯亮 35 秒 如此循环 实现交通灯定时控制 2 交通灯开机时数码管有 的 LOGO 显示 3 系统需要设置停止按键 按下则 LED 显示 00 所有方向的灯均为红灯 4 系统需要具有调节东西和南北方向通行时间的功能 5 系统需要设置东西和南北方向的按键 若南北方向按键按下 则仅南北方向绿灯 不再按照定时时间变换红绿灯 若东西方向按键按下 则仅东西方向绿灯 不再按照 定时时间变换红绿灯 6 统需要设置确认键 该按键按下时系统进入正常定时和红绿灯变换状态 3 3 设计方案 设计方案 在十字路口的交通灯设计中 根据路口的交通状况 优先选择了利用 STC89C51 芯片 由于 STC89C51 芯片无需扩展 具备了 MCS51 系列单片机的所有优点 且有在线 下载的功能 红 绿灯的点亮功能 时间显示功能都是由 89C51 芯片来控制的 P0 口 控制数码管的段码 选择 P1 口的四个口送四个数码管的位码 P3 口控制按键 P2 口 控制红绿灯 4 4 系统框图 系统框图 单片机 时钟和晶振 按键电路 LED红黄绿灯 南 北 东西 数码管显示 南 北 东西 5 硬件电路图 硬件电路图 protel99 软件绘制 和仿真图 软件绘制 和仿真图 proteus 软件与软件与 keil 软件联调 软件联调 硬件电路图 仿真图 6 软件设计 软件设计 include define uchar unsigned char define uint unsigned int uchar data buf 4 uchar data sec dx 20 东西数默认 uchar data sec nb 30 南北默认值 uchar data set timedx 20 设置东西方向的时间 uchar data set timenb 30 设置南北方向的时间 int n uchar data countt0 定时器 0 中断次数 定义 5 组开关 sbit k4 P3 7 切换方向 sbit k1 P3 5 时间加 sbit k2 P3 6 时间减 sbit k3 P3 4 确认 sbit k5 P3 1 禁止 P3 2 只允许东西方向通行 中断 0 P3 3 只允许南北方向通行 中断 1 sbit Red nb P2 6 南北红灯标志 sbit Yellow nb P2 5 南北黄灯标志 sbit Green nb P2 4 南北绿灯标志 sbit Red dx P2 3 东西红灯标志 sbit Yellow dx P2 2 东西黄灯标志 sbit Green dx P2 1 东西绿灯标志 sbit Buzz P3 0 bit Buzzer Indicate bit set 0 调时方向切换键标志 1 时 南北 0 时 东西 bit dx nb 0 东西南北控制位 bit shanruo 0 uchar code table 11 共阴极字型码 0 x3f 0 0 x06 1 0 x5b 2 0 x4f 3 0 x66 4 0 x6d 5 0 x7d 6 0 x07 7 0 x7f 8 0 x6f 9 0 x00 NULL 函数的声明部分 void delay int ms 延时子程序 void key 按键扫描子程序 void key to1 键处理子程序 void key to2 void key to3 void display 显示子程序 void logo 开机 LOGO void Buzzer 主程序 void main TMOD 0X11 定时器设置 TH0 0X3C 定时器 0 置初值 0 05S TL0 0XB0 EA 1 开总中断 ET0 1 定时器 0 中断开启 TR0 1 启动定时 0 EX0 1 开外部中断 0 EX1 1 开外部中断 1 logo P2 0Xc3 开始默认状态 东西绿灯 南北黄灯 sec nb sec dx 5 默认南北通行时间比东西多 5 秒 while 1 key 调用按键扫描程序 display 调用显示程序 Buzzer 函数的定义部分 void key void 按键扫描子程序 if k1 1 当 K1 时间加 按下时 display 调用显示 用于延时消抖 if k1 1 TR0 0 关定时器 shanruo 0 P2 0 x00 if set 0 set timedx 南北加 1S else set timenb 东西加 1S if set timenb 100 set timenb 1 if set timedx 100 set timedx 1 加到 100 置 1 sec nb set timenb 设置的数值赋给东西南北 sec dx set timedx do display while k1 1 if k2 1 当 K2 时间减 按键按下时 display 调用显示 用于延时消抖 if k2 1 TR0 0 关定时器 shanruo 0 P2 0 x00 if set 0 set timedx 南北减 1S else set timenb 东西减 1S if set timenb 0 set timenb 99 if set timedx 0 set timedx 99 减到 1 重置 99 sec nb set timenb 设置的数值赋给东西南北 sec dx set timedx do display 调用显示 用于延时 while k2 1 if k3 1 当 K3 确认 键按下时 display 调用显示 用于延时消抖 if k3 1 TR0 1 启动定时器 Buzzer Indicate 0 sec nb set timenb 从中断回复 仍显示设置过的数值 sec dx set timedx 显示设置过的时间 if set 0 时间倒时到 0 时 P2 0X00 东西绿灯 南北红灯 Green dx 1 Red nb 1 sec nb sec dx 5 回到初值 else P2 0 x00 南北绿灯 东西红灯 Green nb 1 Red dx 1 sec dx sec nb 5 if k4 1 当 K4 切换 键按下 display 调用显示 用于延时消抖 if k4 1 TR0 0 set set 取反 set 标志位 以切换调节方向 dx nb set do display while k4 1 if k5 1 当 K5 禁止 键按下时 display 调用显示 用于延时消抖 if k5 1 TR0 0 关定时器 P2 0 x00 Red dx 1 Red nb 1 全部置红灯 sec dx 00 四个方向的时间都为 00 sec nb 00 Buzzer Indicate 1 do display while k5 1 void display void 显示子程序 buf 1 sec nb 10 第 1 位 东西秒十位 buf 2 sec nb 10 第 2 位 东西秒个位 buf 3 sec dx 10 第 3 位 南北秒十位 buf 0 sec dx 10 第 4 位 南北秒个位 P1 0 xff 初始灯为灭的 P0 0 x00 P1 0 xfe 片选 LED1 P0 table buf 1 送东西时间十位的数码管编码 delay 1 延时 P1 0 xff 关显示 P0 0 x00 P1 0 xfd 片选 LED2 P0 table buf 2 delay 1 P1 0 xff P0 0 x00 P1 0Xfb 片选 LED3 P0 table buf 3 delay 1 P1 0 xff P0 0 x00 P1 0Xf7 P0 table buf 0 片选 LED4 delay 1 void time0 void interrupt 1 using 1 定时中断子程序 TH0 0X3C 重赋初值 TL0 0XB0 TR0 1 重新启动定时器 countt0 软件计数加 1 if countt0 20 定时器中断次数 20 时 即 1 秒时 countt0 0 清零计数器 sec dx 东西时间减 1 sec nb 南北时间减 1 if sec nb 5 Yellow dx Yellow dx if sec dx 5 Yellow nb Yellow nb if sec dx 0 shanruo 1 if sec nb 0 shanruo 1 if dx nb 0 重置东西南背方向的红绿灯 Green nb 1 Red dx 1 dx nb dx nb shanruo 0 sec nb set timenb 重赋南北方向的起始值 sec dx set timenb 5 重赋东西方向的起始值 if dx nb 1 重置东西南北的红绿灯状态 Green dx 1 Red nb 1 dx nb dx nb shanruo 0 sec dx set timedx 重赋东西方向的起始值 sec nb set timedx 5 重赋南北方向的起始值 外部中断 0 void int0 void interrupt 0 using 1 只允许东西通行 TR0 0 关定时器 P2 0 x00 Green dx 1 东西方向置绿灯 Red nb 1 南北方向为红灯 Buzzer Indicate 0 sec dx 00 四个方向的时间都为 00 sec nb 00 外部中断 1 void int1 void interrupt 2 using 1 只允许南北通行 TR0 0 关定时器 P2 0 x00 Green nb 1 置南北方向为绿灯 Red dx 1 东西方向为红灯 Buzzer Indicate 0 sec nb 00 四个方向的时间都为 00 sec dx 00 void logo 开机

温馨提示

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

评论

0/150

提交评论