《单片机课程设计6单片机系统设计实例.ppt》由会员分享,可在线阅读,更多相关《单片机课程设计6单片机系统设计实例.ppt(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、n电子技术锡焊技艺电子技术锡焊技艺n常用元器件及仪器常用元器件及仪器n单片机系统设计概述单片机系统设计概述n单片机开发系统的使用单片机开发系统的使用n单片机系统设计实例单片机系统设计实例单片机系统开发的一般方法单片机系统开发的一般方法n1、确定任务确定任务n2、总体设计总体设计n3、硬件设计硬件设计n4 4、软件设计、软件设计n5 5、系统调试、系统调试1、设计任务:交通灯控制系统设计、设计任务:交通灯控制系统设计n设计要求设计要求n1 1)东西道()东西道(A A)和南北道()和南北道(B B)上均有车)上均有车辆要求通过时,辆要求通过时,A A、B B道轮流放行。道轮流放行。n2 2)有紧
2、急车辆要求通过时,系统要能禁)有紧急车辆要求通过时,系统要能禁止普通车辆通行,止普通车辆通行,A A、B B道均为红灯,紧道均为红灯,紧急车由急车由K1K1开关模拟。开关模拟。n3 3)绿灯转换为红灯时黄灯亮)绿灯转换为红灯时黄灯亮 5 5秒钟。秒钟。n4 4)能显示剩余时间。)能显示剩余时间。n5 5)能对时间进行调整。)能对时间进行调整。2、总体设计、总体设计单片机键盘LED数码管显示LED指示灯复位电路晶振电路3、硬件设计、硬件设计n1 1)单片机选型:)单片机选型:AT89S51AT89S51n2 2)复位电路:上电)复位电路:上电+按钮按钮n3 3)晶振电路)晶振电路n4 4)键盘:
3、独立键盘)键盘:独立键盘+中断中断n5 5)数码管显示:)数码管显示:LEDLEDn6 6)LEDLED指示灯显示指示灯显示3.1单片机基本电路设计单片机基本电路设计n1 1)复位电路:上电)复位电路:上电+按钮按钮n2 2)晶振电路)晶振电路n3 3)EAEA处理处理n4 4)电源设计)电源设计3.2键盘电路设计键盘电路设计原理是对的,但这样绘图不合适!原理是对的,但这样绘图不合适!原理是对的,但这样绘图不合适!原理是对的,但这样绘图不合适!1 1、按键功能不清楚、按键功能不清楚、按键功能不清楚、按键功能不清楚2 2、图形不美观、图形不美观、图形不美观、图形不美观3 3、打印不清晰、打印不清
4、晰、打印不清晰、打印不清晰较合理的原理图形式较合理的原理图形式1较合理的原理图形式较合理的原理图形式23.3指示灯电路设计指示灯电路设计3.4 剩余时间显示电路设计剩余时间显示电路设计LEDLED数码管的数码管的结构结构:(1 1)共阳)共阳(2 2)共阴)共阴 共阳数码管每个段笔画是用低电平共阳数码管每个段笔画是用低电平共阳数码管每个段笔画是用低电平共阳数码管每个段笔画是用低电平(“0”)(“0”)(“0”)(“0”)点亮点亮点亮点亮,共阴数码管段笔画是用高电平共阴数码管段笔画是用高电平共阴数码管段笔画是用高电平共阴数码管段笔画是用高电平(“1”)(“1”)(“1”)(“1”)点亮点亮点亮点
5、亮 公共阳极公共阳极h g f e d c b ah g f e d c b aa ab bc cd dg ge ef fh h公共阴极公共阴极h g f e d c b ah g f e d c b aa ab bc cd dg ge ef fh hh g f ah g f a高电平点亮高电平点亮低电平点亮低电平点亮接高电平接高电平接地接地n n要显示某个字形,就应使此字形的相应要显示某个字形,就应使此字形的相应断码的二极管点亮,实际就是送一个断码的二极管点亮,实际就是送一个用用不同电平组合代表的数据字不同电平组合代表的数据字(显示码)(显示码)来控制来控制LED的显示,此数据称为字符的的显
6、示,此数据称为字符的段码或字形码。段码或字形码。n n共阴极和共阳极共阴极和共阳极LED显示器段码不同。显示器段码不同。共阳共阳LEDLED数码管:数码管:公共端公共端(字位字位)接高电平,接高电平,笔划笔划(字段字段)置为低电平置为低电平就被点亮了就被点亮了比如要显示比如要显示“0”“0”须令须令a b c d e fa b c d e f 为为“0 0”电平,电平,g hg h为为“1 1”电平。电平。共阳极共阳极h g f e d c b ah g f e d c b aa ab bc cd dg ge ef fh hh g f e d c b ah g f e d c b a累加器累加
7、器 A1 1 0 0 0 0 0 01 1 0 0 0 0 0 00C0H=“0”0C0H=“0”3.4 剩余时间显示电路设计剩余时间显示电路设计4、软件设计、软件设计东西绿灯东西绿灯南北红灯南北红灯东西黄灯东西黄灯南北红灯南北红灯东西红灯东西红灯南北绿灯南北绿灯东西红灯东西红灯南北黄灯南北黄灯控制流程:控制流程:定义一个状态变量定义一个状态变量定义一个状态变量定义一个状态变量S SS=0S=0S=1S=1S=2S=2S=3S=34、软件设计、软件设计n程序组成:程序组成:n初始化(系统初始化,中断初始化)初始化(系统初始化,中断初始化)n定时(交通灯状态转换)定时(交通灯状态转换)n显示(指
8、示灯、剩余时间)显示(指示灯、剩余时间)n参数调整参数调整n紧急状态紧急状态n主程序主程序入口初始化显示入口状态灯显示南北剩余时间显示东西剩余时间显示返回主程序流程图主程序流程图主程序流程图主程序流程图显示子程序流程图显示子程序流程图显示子程序流程图显示子程序流程图定时中断入口当前显示时间减11秒到?是否有一个为0?状态变换判断状态S东西绿灯东西绿灯南北红灯南北红灯东西黄灯东西黄灯南北红灯南北红灯东西红灯东西红灯南北绿灯南北绿灯东西红灯东西红灯南北黄灯南北黄灯返回YNYN定时中断程序流程图定时中断程序流程图定时中断程序流程图定时中断程序流程图S=0S=1S=2S=3中断0入口更换当前显示值:南
9、北:绿灯时间东西:黄灯时间K3键按下?返回N中断中断中断中断0 0程序流程图程序流程图程序流程图程序流程图参数设置参数设置参数设置参数设置调显示子程序绿灯+1K4键按下?黄灯+1K5键按下?绿灯时间处理黄灯时间处理需要注意的问题:需要注意的问题:需要注意的问题:需要注意的问题:1 1)键盘抖动)键盘抖动)键盘抖动)键盘抖动2 2)键盘是否弹起)键盘是否弹起)键盘是否弹起)键盘是否弹起3 3)按键过程中的显示)按键过程中的显示)按键过程中的显示)按键过程中的显示中断1入口更换当前显示值:南北0,东西0状态灯:红色K5键按下?返回N中断中断中断中断1 1程序流程图程序流程图程序流程图程序流程图紧急
10、停车紧急停车紧急停车紧急停车调显示子程序关中断开中断Y初始化程序、主程序初始化程序、主程序入口初始化显示n初始化程序初始化程序n#include /对单片机的口进行了定义对单片机的口进行了定义n#define uint unsigned intn#define uchar unsigned charnuchar code a10=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;/段码组合段码组合,共阴极共阴极nuchar code b4=0 xfe,0 xfd,0 xfb,0 xf7;/位码组合,低有效位码组合,低有效nu
11、char code c4=0 x78,0 xb8,0 xcc,0 xd4;/不同状态下的不同状态下的LEDnuchar green=30,yellow=5;nuchar m=35,n=30,s=0,cnt=0;nvoid delay(uchar t);nuchar key();nvoid display();nvoid main(void)nnwhile(1)nn display();nn显示子程序显示子程序状态灯显示南北剩余时间显示东西剩余时间显示返回入口nvoid display()nnP1=cs;nP2=0 xfe,P0=am%10;ndelay(20);nP2=0 xfd,P0=am/
12、10;ndelay(20);n nP2=0 xfb,P0=an%10;ndelay(20);nP2=0 xf7,P0=an/10;ndelay(20);nnvoid delay(uchar t)/延时延时0.1*n毫秒毫秒 0 n n uchar i;n do n n for(i=0;i=20)n s+;n if(s3)n s=0;n switch(s)n case 0:m=green+yellow,n=green;break;n case 1:n=yellow;break;n case 2:m=green,n=green+yellow;break;n case 3:m=yellow;brea
13、k;n n n中断1入口更换当前显示值:南北0,东西0状态灯:红色K5键按下?返回N中断中断中断中断1 1程序流程图程序流程图程序流程图程序流程图紧急停车紧急停车紧急停车紧急停车调显示子程序关中断开中断Ynvoid int1(void)interrupt 2nP1=0 xd8,P0=a0;nEA=0;nfor(;)n P2=0 xfe;n delay(20);n P2=0 xfd;n delay(20);n P2=0 xfb;n delay(20);n P2=0 xf7;n delay(20);n if(P3_7=0)n EA=1;nbreak;n n n中断0入口更换当前显示值:南北:绿灯时
14、间东西:黄灯时间K3键按下?返回N中断中断中断中断0 0程序流程图程序流程图程序流程图程序流程图参数设置参数设置参数设置参数设置调显示子程序绿灯+1K4键按下?黄灯+1K5键按下?绿灯时间处理黄灯时间处理需要注意的问题:需要注意的问题:需要注意的问题:需要注意的问题:1 1)键盘抖动)键盘抖动)键盘抖动)键盘抖动2 2)键盘是否弹起)键盘是否弹起)键盘是否弹起)键盘是否弹起3 3)按键过程中的显示)按键过程中的显示)按键过程中的显示)按键过程中的显示nvoid int0(void)interrupt 0n EA=0;n while(1)n m=green;n n=yellow;n displa
15、y();n if(P3_5=0)n delay(40);nif(P3_5=0)n n while(!P3_5)n display();n green+;n if(green=70)/绿灯最长绿灯最长70Sn green=0;n n nif(P3_6=0)nndelay(40);nif(P3_6=0)n nwhile(!P3_6)ndisplay();nyellow+;nif(yellow=20)/黄灯最长黄灯最长20Snyellow=0;nnnif(P3_7=0)ndelay(40);nif(P3_7=0)nnwhile(!P3_7)ndisplay();nm=green+yellow;nn=green;ns=0;nEA=1;nbreak;nnnn