单片机课程设计——自动滚动广告牌的设计_第1页
单片机课程设计——自动滚动广告牌的设计_第2页
单片机课程设计——自动滚动广告牌的设计_第3页
单片机课程设计——自动滚动广告牌的设计_第4页
单片机课程设计——自动滚动广告牌的设计_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机课程设计题目:自动滚动广告牌所在院系:机电汽车工程学院专业:机101-4班学号:姓名:完成日期:指导教师:word教育资料目录一、课程设计任务书二、设计项目简介(一)设计思路(二)任务分工三、设计过程(一)电路原理图及各器件原理介绍(二)程序模块四、程序框图五、程序清单六、系统功能简介(一)产品的功能简介(二)产品使用方法(三)产品性能简介七、产品说明书八、总结word教育资料课程设计任务书基于单片机的自动滚动广告牌的设计广告牌有四张宣传彩页,卷入一卷轴,依次来回显示每一页,每一页显示的时间相同。本设计以MCS-51系列单片机为核心,采用常用电子器件设计,自行设计电源。设计广告彩页的显示

2、时间长度,时间一到就用直流电动机旋转控制彩页切换,用一台直流电动机控制广告彩页的旋转(正转/反转)。用一个光敏电阻传感器测量光强度,当光线较暗的时候启动背景灯。设置三个按键:手动/自动切换、手动正转和手动反转,用一个发光二极管显示手动/自动状态。设置若干个位置控制行程开关,设置彩页的显示位置。按键输入采用中断方式。二、设计项目简介设计思路(1)选用ATME公司的AT89C51单片机。与MCS-51兼容4K字节可编程FLAS的储器寿命:1000写/擦循环数据保留时间:10年全静态工作:0Hz-24MHz三级程序存储器锁定128X8位内部RAMword教育资料32可编程I/O线两个16位定时器/计

3、数器5个中断源可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路(2)通过I/O口直接控制广告彩页的切换,通过程序实现显示延时,通过debug确定准确延时时间长度。(3)通过扫描按键实现监测自动与手动、正转与反转按键状态。由于选用单片机没有足够的外部中断,且扫描按键的方法更加简洁,故此处违背了设计任务书,希望可以得到谅解。(4)利用比较器设计光感电路(仿真中使用电位器模拟光敏电阻),提供光线信号。通过I/O口输出信号,控制背景灯驱动器(仿真中使用74HC5731动一拍黄色LED小灯模拟),进而控制背景灯开关。(5)利用L298驱动器驱动直流电机,通过I/O口信号控制L298输出信号,进而

4、控制电机正转,反转及停转的状态。(6)通过I/O口信号直接控制“手动/自动”状态显示指示灯亮灭。(7)使用四个行程开关(仿真中使用按键模拟)在自动状态下控制电机正转,反转及停转。通过扫描按键的方式实现监测行程开关状o(8)设计外部晶振及复位电路。(9)由于以上任务较简单,较早完成了任务,经过组内商议,为挑战一下自己,决定添加温度检测并显示的功能。通过DS18b20芯片完成温度检测,A/D转换,使用串口通信单片机将检测的温度读取,经数据转换,并通过I/O口显示在四位共阴极数码管上。word教育资料任务分工分四个工段:独立模块功能单独设计电路、程序,仿真;各模块整合,调试,仿真;修整,优化,添加扩

5、展及附加功能;整理产品说明书、课程报告及其他材料。分三个小组:任务分工表:第-小组第二小组第三小组按键模块行程开关监测光感模块工段一电机驱动模块自动展示程序背景灯模块电路原理图程序整合提前整理产品工段二仿真电路图程序调试说明书添加扩展及附修整,优化整理产品说明工段三加功能书,确定初稿工段四修正产品说明书,整理课程报告及其他材料。三、设计过程电路原理图及各器件原理介绍(1)整体电路图展示word教育资料自动瀚动广告牌仿用电踣AT8K51单片机-7行槿开关模拟圾使自动/争就指示灯I',中j卜r控制按叫FL»直流由机疆动的加。温度常磁器三E*(2)各模块原理介绍1 .光感比较电路光

6、感比较电路一模拟光线越强RV1越小,U3越小,当小到一定值(设定5KQ)U3<U2通过比较器比较U2、U3,U3<U2寸输出0,控制背景灯关,U3>U2word教育资料时输出1,控制背景灯开。2 .DS18b20温度传感器DS13B20*DS18b20温度传感器DS1820数字温度计提供9位(二进制)温度读数,指示器件的温度。信息经过单线接口送入DS1820或从DS1820送出,因此从主机CP倒DS1820仅需一条线(和地线),DS1820的电源可以由数据线本身提供而不需要外部电源。DS1820的测量范围从-55至U+12渊量彳1为0.5可在1s(典型值)内把温度变换成数字。

7、每一个DS1820包括一个唯一的64位长的序号,该序号值存放在DS1820内部的ROM只读存贮器)中,开始8位是产品类型编码(DS1820编码均为10H)接着的48位是每个器件唯一的序号,最后8位是前面56位的CRC循环冗余校验)码口$1820中还有用于贮存测得的温度值的两个8位存贮器RAM编号为0号和1号,1号存贮器存放温度值的符号如果温度为负,则1号存贮器8位全为1,否则全为0,0号存贮器用于存放温度值的补码LSB(最低位)的1表示0.5摄氏度,将存贮器中的二进制数求补再转换成十进制数,并除以2就得到被测温度值(-55125摄氏度)。word教育资料3.L298芯片驱动电机U3IN1VCC

8、VSIN20UT1IH3W0UT2ENAEN30UT3SENSAOUTflSENSBGND直流电机驱动L298N为SGS-THOMSMCroelectronics所出产的双全桥步进电机专用驱动芯片(DualFull-BridgeDriver),内部包含4信道逻辑驱动电路,可同时驱动2个减速直流电机,内含二个H-Bridge的高电压、大电流双全桥式驱动器,接收标准TTL逻辑准位信号,可驱动46V、2A以下的步进电机,且可以直接透过电源来调节输出电压;此芯片可直接由单片机的IO端口来提供模拟时序信号,控制转速。OUTkOUT2和OUT3OUT4L间分别接2个电机;input1input4输入控制电

9、位来控制电机的正反转;Enable则控制电机停转。4.四位共阴极数码管的驱动word教育资料数码管温度显示74HC573芯片驱动数码管显示接口,通过单片机I/O接口直接控制数码管位选。共阴极数码管真值表什进制0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f0x000x40显示符号0123456789空一74HC57的八进制3态非反转透明锁存器,输入是和标准CMOS输出兼容的;加上拉电阻,他们能和LS/ALSTTL输出兼容。当锁存使能端LE为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。5,独立按

10、键模块行程开关模拟按键word教育资料按键一端接地,另一端与单片机I/O口相连并外接上拉电阻。按键按下时I/O口由高电位转为低点位,经单片机读取引脚信号,将按键状态输入。6 .外部晶振电路1U930pFX1CRYST18ILXTAL251单片机单片机内部有一个用于构成振荡器的高增益反向放大器,引脚XTAL1为输入端,XTAL2为输出端。两个引脚间跨接晶体振荡器与微调电容组成并联谐振电路,构成一个自激振荡器为内部时钟提供振荡时钟。振荡期的频率主要取决于晶体的振荡频率,一般晶体可在1.2MHz12MH之间任选。电容C1,C2通常取30pF左右。7 .复位电路51系列单片机系统通常有上电复位和按键复

11、位两种方式。最简单的一种上电复位及按键复位电路图如上图所示。上电后,由于电容充电,使RST持续一段时间的高电平,完成复位操作;当单片机处于运word教育资料行中或者死锁时,按下“复位”按钮,也可以使单片机进入复位状态程序模块1.数码管动态扫描函数voidrefresh_led()(P2=Disp_Taba0;P1=dispbit0;P1=0xff;/每个数码管按负值、打开、关闭的顺序P2=Disp_Taba1;P1=dispbit1;P1=0xff;P2=Disp_Taba2|0x80;P1=dispbit2;P1=0xff;P2=Disp_Taba3;P1=dispbit3;P1=0xff;

12、每个数码管依次按负值、打开、关闭的顺序受控,从而实现动态扫描。2.温度转换模块程序voidstart_temp_sensor(void)(DS18b20_reset();write_byte(0xCC);write_byte(0x44);/*读存温度*/voidread_temp()(uint8temp_data2;uint16temp=0,c;doublewd;start_temp_sensor();delay_ms(100);DS18b20_reset();/write_byte(0xCC);write_byte(0xBE);/发读命令temp_data0=read_byte();/tem

13、p_data1=read_byte();/temp=temp_data1;temp<<=8;temp|=temp_data0;if(temp_data1&0xf0)(temp=(temp)+1;/发SkipROM命令/发转换命令/读出温度暂放复位/发SkipROM命令温度低8位温度高8位/一下三步将温度高八位低八位整合/判断温度是否为负为负时,取反加一word教育资料wd=temp*0.0625;/转为摄氏温度,0.0625为温感芯片储存精度a0=11;/为负时,第一个数码管显示负号)else(wd=temp*0.0625;a0=10;/为正时,第一个数码管不显示)c=wd

14、;/将摄氏温度转为整型a2=c%10;/第三个数码管显示个位a1=c/10%10;/第二个数码管显示十位c=wd*10;a3=c%10;/第四个数码管显示小数位)3 .背景灯控制模块程序voidbeijingdeng()(if(ggxh)led_bjd=1;elseled_bjd=0;)光感信号为高电平时,背景灯控制引脚输出高电平,控制背景灯关;光感信号为低电平时,背景灯控制引脚输出低电平,控制背景灯亮。4 .自动控制模块程序voidzidong()(led_zs=0;点亮自动/手动指示灯while(1)(if(i)/判断电机正反转状态,并控制电机正反转(dj_zz=1;dj_fz=0;)el

15、se(dj_zz=0;dj_fz=1;)word教育资料if(kg1=0)/监测行程开关1状态(dj_zz=0;/关闭电机并延时dj_fz=0;delay_ms(100);i+;/控制电机下次启动换向read_temp();/读存温度信息)if(kg2=0)/监测行程开关2状态(dj_zz=0;dj_fz=0;delay_ms(100);read_temp();)if(kg3=0)/监测行程开关3状态(dj_zz=0;dj_fz=0;delay_ms(100);read_temp();)if(kg4=0)/监测行程开关4状态(dj_zz=0;dj_fz=0;delay_ms(100);i-;/

16、控制电机下次启动换向read_temp();)beijingdeng();/调入背景灯控制函数,监测感光信号refresh_led();/显示温度信息if(aj_qh=0)/监测自动/手动切换按键状态(dj_zz=0;/监测到切换到手动状态时,电机停转dj_fz=0;break;/跳出自动控制循环,进入主函数自动控制状态下,手动/自动指示灯控制引脚输出为低电平,示灯亮;判断电机正反转状态,并控制电机正反转;监测行程开关word教育资料状态,若为低电平,则关闭电机,延时并控制电机下次启动换向;若为高电平,则不变。然后读存温度信息并依次监测行程开关2、3状态,若为低电平,则关闭电机,延时并读存温度

17、信息。然后监测行程开关4状态,若为低电平,则关闭电机,延时并控制电机下次启动换向。最后监测自动/手动切换按键状态,若为低电平,则电机停转,跳出自动控制循环,进入主函数。5.手动控制模块程序voidshoudong()(led_zs=1;while(1)(if(aj_zz=0)(dj_zz=0;dj_fz=1;if(aj_fz=0)(dj_zz=1;dj_fz=0;if(aj_fz=1&&aj_zz=1)(dj_zz=0;dj_fz=0;if(aj_qh=1)(break;refresh_led();beijingdeng();/手动控制子函数关闭自动/手动指示灯/按下正转按键时

18、,电机正转/按下反转按键时,电机反转/无按键按下,电机停转/监测自动/手动切换按键状态/监测到切换到自动状态时,跳出手动控制循环,/进入主函数/显示温度信息/调入背景灯控制函数,监测感光信号手动控制状态下,手动/自动指示灯控制引脚输出为高电平,指word教育资料示灯灭;若按下正转按键,则L298芯片OUT1输出+12V,OUT2输出0V,电机正转;若按下反转按键,则L298芯片OUT1输出0V,OUT2输出+12V,电机反转;若无按键按下,则L298芯片OUT输出0V,OUT2输出0V,电机停转。6,主程序模块程序main()(while(1)(if(aj_qh=0)/监测自动/手动切换_按键

19、状态,/并控制进入相应子函数shoudong();)elsezidong();)若自动/手动切换按键按下时,控制引脚输出为低电平,电机状态为手动控制;若自动/手动切换按键无按下时,控制引脚输出为高电平,电机状态为自动控制。四、程序框图word教育资料开始word教育资料五、程序清单#include<reg52.h>externvoid_nop_(void);typedefunsignedcharuint8;typedefunsignedintuint16;typedefunsignedlonguint32;typedefcharint8;typedefintint16;codeui

20、nt8Disp_Tab口=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40;codeuint8dispbit4=0xfe,0xfd,0xfb,0xf7;/数码管位选控制变量uint8a4;/数码管显示控制变量uint8i=0;/电机正反转控制变量#definenops();_nop_();_nop_();_nop_();_nop_();/定义空指令,调整控制温感驱动时序/定义电机正反转控制引脚/定义背景灯控制引脚/定义指示灯控制引脚/温度输入口/定义感光信号引脚/定义行程开关1信号引脚/定义行程开关2信号引脚/定义行程开关3

21、信号引脚/定义行程开关4信号引脚/定义电机正反转_按键信号引脚/定义自动/手动切换_按键信号引脚sbitdj_zz=P3A0;sbitdj_fz=P3A1;sbitled_bjd=P3A2;sbitled_zs=P3A3;sbitDQ=P3A6;sbitggxh=P3A7;sbitkg1=P0A0;sbitkg2=P0A1;sbitkg3=P0A2;sbitkg4=P0A3;sbitaj_fz=P0A4;sbitaj_zz=P0A5;sbitaj_qh=P0A6;/*数码管动态扫描函数*/每个数码管按负值、打开、关闭的顺序voidrefresh_led()P2=Disp_Taba0;P1=di

22、spbit0;P1=0xff;P2=Disp_Taba1;P1=dispbit1;P1=0xff;P2=Disp_Taba2|0x80;P1=dispbit2;P1=0xff;P2=Disp_Taba3;P1=dispbit3;P1=0xff;/*两个延时函数*/voiddelay(uint16n)word教育资料while(n-);voiddelay_ms(uint16n)(uint8m=120;while(n-)while(m-)refresh_led();)/*18B20复位函数*/voidDS18b20_reset(void)(bitflag=1;while(flag)(while(f

23、lag)(DQ=1;delay(1);DQ=0;delay(50);DQ=1;delay(6);flag=DQ;)delay(45);flag=DQ;)DQ=1;)/刷新显示温度信息/延时550us/延时66us/延时500us/*18B20写1个字节函数*/voidwrite_byte(uint8val)(uint8i;for(i=0;i<8;i+)(DQ=1;_nop_();DQ=0;nops();/4usDQ=val&0x01;delay(6);/最低位移出/延时66usword教育资料val>>=1;/右移一位)DQ=1;delay(1);)/*18B20读1

24、个字节函数*/uint8read_byte(void)(uint8i,value=0;for(i=0;i<8;i+)(DQ=1;_nop_();value>>=1;DQ=0;nops();DQ=1;nops();if(DQ)value|=0x80;delay(6);)DQ=1;return(value);)/*启动温度转换*/voidstart_temp_sensor(void)(DS18b20_reset();write_byte(0xCC);write_byte(0x44);)/*读存温度*/voidread_temp()(uint8temp_data2;uint16te

25、mp=0,c;doublewd;start_temp_sensor();delay_ms(100);DS18b20_reset();write_byte(0xCC);/延时4us/延时4us/延时66us/发SkipROM命令/发转换命令/读出温度暂放/复位/发SkipROM命令word教育资料write_byte(0xBE);/发读命令temp_data0=read_byte();/temp_data1=read_byte();/temp=temp_data1;temp<<=8;temp|=temp_data0;if(temp_data1&0xf0)temp=(temp)

26、+1;wd=temp*0.0625;a0=11;elsewd=temp*0.0625;a0=10;c=wd;a2=c%10;a1=c/10%10;c=wd*10;a3=c%10;/*背景灯控制子函数*/voidbeijingdeng()if(ggxh)led_bjd=1;elseled_bjd=0;/*自动控制子函数*/voidzidong()led_zs=0;while(1)if(i)dj_zz=1;温度低8位温度高8位/一下三步将温度高八位低八位整合/判断温度是否为负/为负时,取反加一/转为摄氏温度,0.0625为温感芯片储存精度/为负时,第一个数码管显示负号/为正时,第一个数码管不显示/

27、将摄氏温度转为整型/第三个数码管显示个位/第二个数码管显示十位/第四个数码管显示小数位点亮自动/手动指示灯/判断电机正反转状态,并控制电机正反转word教育资料dj_fz=0;elsedj_zz=0;dj_fz=1;)if(kg1=0)(dj_zz=1;dj_fz=1;delay_ms(100);i+;read_temp();)if(kg2=0)(dj_zz=1;dj_fz=1;delay_ms(100);read_temp();)if(kg3=0)(dj_zz=1;dj_fz=1;delay_ms(100);read_temp();)if(kg4=0)(dj_zz=1;dj_fz=1;del

28、ay_ms(100);i-;read_temp();)beijingdeng();refresh_led();if(aj_qh=0)(dj_zz=1;dj_fz=1;break;)/监测行程开关1状态/关闭电机并延时/控制电机下次启动换向/读存温度信息/监测行程开关2状态/监测行程开关3状态/监测行程开关4状态/控制电机下次启动换向/调入背景灯控制函数,监测感光信号/显示温度信息/监测自动/手动切换按键状态/监测到切换到手动状态时,电机停转/跳出自动控制循环,进入主函数voidshoudong()(/手动控制子函数word教育资料/关闭自动/手动指示灯/按下正转按键时,电机正转/按下反转按键时,电机反转/无按键按下,电

温馨提示

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

评论

0/150

提交评论