单片机课程设计6单片机系统设计实例1.ppt_第1页
单片机课程设计6单片机系统设计实例1.ppt_第2页
单片机课程设计6单片机系统设计实例1.ppt_第3页
单片机课程设计6单片机系统设计实例1.ppt_第4页
单片机课程设计6单片机系统设计实例1.ppt_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

,电子技术锡焊技艺 常用元器件及仪器 单片机系统设计概述 单片机开发系统的使用 单片机系统设计实例,单片机系统开发的一般方法,1、确定任务 2、总体设计 3、硬件设计 4、软件设计 5、系统调试,1、设计任务:交通灯控制系统设计,设计要求 1)东西道(A)和南北道(B)上均有车辆要求通过时,A、B道轮流放行。 2)有紧急车辆要求通过时,系统要能禁止普通车辆通行,A、B道均为红灯,紧急车由K1开关模拟。 3)绿灯转换为红灯时黄灯亮 5秒钟。 4)能显示剩余时间。 5)能对时间进行调整。,2、总体设计,单片机,键盘,LED数码管显示,LED指示灯,复位电路,晶振电路,3、硬件设计,1)单片机选型:AT89S51 2)复位电路:上电+按钮 3)晶振电路 4)键盘:独立键盘+中断 5)数码管显示:LED 6)LED指示灯显示,3.1单片机基本电路设计,1)复位电路:上电+按钮 2)晶振电路 3)EA处理 4)电源设计,3.2键盘电路设计,原理是对的,但这样绘图不合适!,1、按键功能不清楚 2、图形不美观 3、打印不清晰,较合理的原理图形式1,较合理的原理图形式2,3.3指示灯电路设计,3.4 剩余时间显示电路设计,LED数码管的结构: (1)共阳 (2)共阴, 共阳数码管每个段笔画是用低电平(“0”)点亮, 共阴数码管段笔画是用高电平(“1”)点亮,公共阳极,h g f e d c b a,a,b,c,d,g,e,f,h,公共阴极,h g f e d c b a,a,b,c,d,g,e,f,h,h g f a,h g f a,高电平点亮,低电平点亮,接高电平,接地,要显示某个字形,就应使此字形的相应断码的二极管点亮,实际就是送一个用不同电平组合代表的数据字(显示码)来控制LED的显示,此数据称为字符的段码或字形码。 共阴极和共阳极LED显示器段码不同。,共阳LED数码管: 公共端(字位) 接高电平, 笔划(字段) 置为低电平 就被点亮了,比如要显示“0” 须令a b c d e f 为“0” 电平,g h为“1”电平。,3.4 剩余时间显示电路设计,4、软件设计,东西绿灯 南北红灯,东西黄灯 南北红灯,东西红灯 南北绿灯,东西红灯 南北黄灯,控制流程:,定义一个状态变量S,S=0,S=1,S=2,S=3,4、软件设计,程序组成: 初始化(系统初始化,中断初始化) 定时(交通灯状态转换) 显示(指示灯、剩余时间) 参数调整 紧急状态 主程序,入口,初始化,显示,入口,状态灯显示,南北剩余时间显示,东西剩余时间显示,返回,主程序流程图,显示子程序流程图,定时中断入口,当前显示时间减1,1秒到?,是否有一个为0?,状态变换,判断状态S,东西绿灯 南北红灯,东西黄灯 南北红灯,东西红灯 南北绿灯,东西红灯 南北黄灯,返回,Y,N,Y,N,定时中断程序流程图,S=0,S=1,S=2,S=3,中断0入口,更换当前显示值: 南北:绿灯时间 东西:黄灯时间,K3键按下?,返回,N,中断0程序流程图 参数设置,调显示子程序,绿灯+1,K4键按下?,黄灯+1,K5键按下?,绿灯时间处理,黄灯时间处理,需要注意的问题: 1)键盘抖动 2)键盘是否弹起 3)按键过程中的显示,中断1入口,更换当前显示值: 南北0,东西0 状态灯:红色,K5键按下?,返回,N,中断1程序流程图 紧急停车,调显示子程序,关中断,开中断,Y,初始化程序、主程序,入口,初始化,显示,初始化程序 #include / 对单片机的口进行了定义 #define uint unsigned int #define uchar unsigned char uchar code a10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /段码组合,共阴极 uchar code b4=0xfe,0xfd,0xfb,0xf7; /位码组合,低有效 uchar code c4=0x78,0xb8,0xcc,0xd4; /不同状态下的LED uchar green=30,yellow=5; uchar m=35,n=30,s=0,cnt=0;,void delay(uchar t); uchar key(); void display(); void main(void) while(1) display(); ,显示子程序,状态灯显示,南北剩余时间显示,东西剩余时间显示,返回,入口,void display() P1=cs; P2=0xfe,P0=am%10; delay(20); P2=0xfd,P0=am/10; delay(20); P2=0xfb,P0=an%10; delay(20); P2=0xf7,P0=an/10; delay(20); ,void delay(uchar t) /延时0.1*n毫秒 0 uchar i; do for(i=0;i23;i+) ; while(t-); ,定时程序: 定时1秒可以吗? 不能直接定时 定时器方式1,16位,最高计数65536 假设晶振12MHz,一个机器周期1us。 最长定时65.536ms。 确定采用定时器T0,工作在方式1,定时50ms,1s需中断20次,定时中断入口,当前显示时间减1,1秒到?,是否有一个为0?,状态变换,判断状态S,东西绿灯 南北红灯,东西黄灯 南北红灯,东西红灯 南北绿灯,东西红灯 南北黄灯,返回,Y,N,Y,N,定时中断程序流程图,S=0,S=1,S=2,S=3,初始值计算: 6553650000=15536 =3CB0H TMOD初始化:,GATE C / T M1 M0 GATE C / T M1 M0,定时器方式 寄存器TMOD,X X X X 0 0 0 1,定时初始化程序: void init(void) TMOD=0x01; TH0=0x3c; TL0=0xb0; IT0=1; ET0=1; TR0=1; EA=1; EX0=1; EX1=1; ,void time1(void) interrupt 1 TH0=0x3c; TL0=0xb0; cnt+; if(cnt=20) s+; if(s3) s=0; switch(s) case 0:m=green+yellow,n=green;break; case 1:n=yellow;break; case 2:m=green,n=green+yellow;break; case 3:m=yellow;break; ,中断1入口,更换当前显示值: 南北0,东西0 状态灯:红色,K5键按下?,返回,N,中断1程序流程图 紧急停车,调显示子程序,关中断,开中断,Y,void int1(void) interrupt 2 P1=0xd8, P0=a0; EA=0; for(;) P2=0xfe; delay(20); P2=0xfd; delay(20); P2=0xfb; delay(20); P2=0xf7; delay(20); if(P3_7 = 0) EA=1; break; ,中断0入口,更换当前显示值: 南北:绿灯时间 东西:黄灯时间,K3键按下?,返回,N,中断0程序流程图 参数设置,调显示子程序,绿灯+1,K4键按下?,黄灯+1,K5键按下?,绿灯时间处理,黄灯时间处理,需要注意的问题: 1)键盘抖动 2)键盘是否弹起 3)按键过程中的显示,void int0(void) interrupt 0 EA=0; while(1) m=green; n=yellow; display(); if(P3_5=0) delay(40); if (P3_5=0) while(!P3_5) display(); green +; if(green=70) /绿灯最长70S green=0; ,if(P3_6=0) delay(40); if (P3_6=

温馨提示

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

评论

0/150

提交评论