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

下载本文档

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

文档简介

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

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

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

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

5、修整,优化,添加扩展及附加功能;整理产品说明书、课程报告及其他材料。分三个小组:任务分工表:第一小组工段一第二小组第三小组按键模块行程开关监测光感模块电机驱动模块自动展示程序背景灯模块电路原理图程序整合提前整理产品工段二仿真电路图程序调试说明书添加扩展及附修整,优化整理产品说明匚段三加功能书,确定初稿工段四修正产品说明书,整理课程报告及其他材料。三、设计过程电路原理图及各器件原理介绍(1)整体电路图展示自动滚动广告牌仿真电路AT89c51单片机ts行程开关楂拟按键RP23o9SS8Si“yam *rgF* Q”, 7gk n n uuUft “trsn数码管温度显示控制按位工(2)各模块原理介

6、绍L光感比较电路,一直流电机驱动DS18b20温度传感器二一3R蚂+%光线越强RV1越小,U3越小,当小到一定值(设定5KQ)U3<U2o通过比较器比较U2、U3,U3VU2时输出0,控制背景灯美,U3>U2时输出1,控制背景灯开。2.DS18b20温度传感器DS18b20温度传感器DS1820数字温度计提供9位(二进制)温度读数,指示器件的温度。 信息经过单线接口送入DS1820或从DS1820送出,因此从主机CPU到 DS1820仅需一条线(和地线),DS1820的电源可以由数据线本身提供而 不需要外部电源。DS1820的测量范围从-55到+125增量值为0.5可在1 s(典型

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

8、8芯片驱动电机直流电机驱动L298N为SGSTHOMSON Microelectronics所出产的双全桥步进 电机专用驱动芯片(DualFull-BiidgeDiivei),内部包含4信道逻辑驱 动电路,可同时驱动2个减速直流电机,内含二个HBHdge的高电压、 大电流双全桥式驱动器,接收标准TTL逻辑准位信号,可驱动46V、 2A以下的步进电机,且可以直接透过电源来调节输出电压;此芯片 可直接由单片机的IO端口来提供模拟时序信号,控制转速。OUT1、 OUT2和OUT3、OUT4之间分别接2个电机;inputlinput4输入控制 电位来控制电机的正反转;Enable则控制电机停转。4 .

9、四位共阴极数码管的驱动8588388K Slo3管温度显示74HC573芯片驱动数码管显示接口,通过单片机I/O接口直接控制数码管位选。共阴极数码管真值表进制0x3f0x060x5b0x4f0x660x6d0x7d0x070x7 f0x6f0x000x40显小符号01o3456789空74HC573为八进制3态非反转透明锁存器,输入是和标准CMOS 输出兼容的;加上拉电阻,他们能和LS/ALSTTL输出兼容。当锁存 使能端LE为高时,这些器件的锁存对于数据是透明的(也就是说输 出同步)。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。5 .独立按键模块行程开关模拟按键1115X4按键一

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

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

12、负值、打开、关闭的顺序受控,从而实现动态扫描。2.温度转换模块程序 voidstart_temp_sensor(void) DS18b20_reset0» wnte_byte(OxC C), wnteJ)yte(0x44), )/发Skip ROM命令/发转换命令/读存温度 voidread_tempO uint8 temp_data2, uintl6 tenip=O,c, doublevzd,/读出温度暂放start_temp_sensor(), delay_ms(100), DS18b20_reset(), wnte_byte(OxC C),/复位/发Skip RDM命令wnte

13、_byte(OxBE)t / 发读命令temp _data 0=i*ea d_byte。, temp_datal mead_byteO, temp = temp_data 1 , temp«= 8,temp |=temp_dataO, if (temp_data 1 &0xf0)(temp=(temp)+1, wd=temp*0 0625,温度低8位温度高8位一下三步将温度高八位低八位整合判断温度是否为负为负时,取反加一转为摄氏温度,0 0625为温感芯片储存精度aO=ll, else (wd=temp*O 0625, a0=10, c=wd, a2=c%10, al=c/l

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

15、l,dj_fk=O,) else(dj_zz=0,dj_£z=l, )if(kgl=O)监测行程开关1状态dj_zz=0,关闭电机并延时dj_fz=O, delay_ms(l 00), H read_tempO» ) if(kg2=0) (dj_zz=O, dj_fz=0, delayjns(lOO), read_tempO, )if (kg3=0) dj_zz=O, dj_fz=O, delayjns(lOO), read_teinpO> )if (kg4=0) (dj_zz=O, dj_fz=O,delay jns(l 00), j, readempO, )bei

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

17、开关2、3状态,若为低电平,则关闭电机,延时并读存温度信息。然后监测行程开关4状态,若为低电平,则关闭电机,延时并控制电机卜.次启动换向。最后监测自动/手动切换一按键状态,若为低电平,则电机停转,跳出自动控制void shoudong 0led_zs=l>while (1) if(aj_zz=O)(dj_zz=O,if(aj_fz=O) dj_zz=l;dj_fz=O,)if(aj_fz=l &&aj_zz=l) (dj_zz=O,dj_fz=O,)if(aj_qh=l)(break, ) refresh_ledO; beijuigdeng 0,循环,进入主函数。5 .手

18、动控制模块程序手动控制子函数关闭自动/尸动指示灯按卜.正转按键时,电机正转按卜.反转按键时,电机反转无按键按下,电机停转监测自动/手动切换按键状态监测到切换到白动状态时,跳出手动控制循环进入主函数显示温度信息调入背景灯控制函数,监测感光信号手动控制状态下,手动/自动指示灯控制引脚输出为高电平,指示灯灭;若按下正转按键,则L298芯片OUT1输出+12V, OUT2输出0V,电机正转;若按下反转按键,则L298芯片OUT1输出0V, OUT2 输出+12V,电机反转;若无按键按下,则L298芯片OUT1输出 0VQUT2输出0V,电机停转。6 .主程序模块程序mainO ( while(l) (

19、 if(aj_qh=O)监测自动/手动切换按键状态,并控制进入相应子函数shoudongO,)elsezidongO,)若自动/手动切换按键按下时,控制引脚输出为低电平,电机状态为 手动控制;若自动/手动切换按键无按下时,控制引脚输出为高电平, 电机状态为自动控制。I、程序框图结束_nop_(void); char urntS, int iuntl6v longmnt32.五、程序清单include <reg52 h> extern void typedef unsigned typedef unsigned typedef unsigned typedef char intS,

20、typedefint mtl6.code umt8 Disp_Tab =0x3f;0x06,0x5b,0x4C0x66,0x6d.0x7d.0x07,0x7f:0x60x00.0x40)tcode uintS dispbit4 =(0xfe,0xfd,0xfb,0xf7)>数码管位选控制变鼠uintS a4,数码管显示控制变量uintS 1=0,电机正反转控制变量#define nops。,(_nop_0, _nop_0, _nop_0, _nop_0J 定义空指令,调整控制温感驱动时序sbitdj_zz = P3A0t sbitdj_fz = P3A1.sbitled_bjd = P3

21、A2; sbitled_zs= P3A3, sbit DQ =P3A6. sbitggxh = P3A7t sbit kgl = PON), sbit kg2 = P0Al, sbit kg3 = P0A2;sbit kg4 = P0A3» sbita)_fz = PON;sbit 司 _zz = P0A5, sbit 司 _qh = P0A6.定义电机正反转控制引脚定义背景灯控制引脚定义指示灯控制引脚温度输入口定义感光信号引脚定义行程开关1信号引脚定义行程开关2信号引脚定义行程开关3信号引脚定义行程开关4信号引脚定义电讯正反转J安键信号引脚定义自动/手动切换按键信号引脚/“数码管动

22、态扫描函数/ voidrefireshedO(P2=Disp_Taba0>Pl=dispbit0,Pl=0xff,P2=Disp_Tabal,Pl=dispbitl,Pl=0xff,P2=Disp_Taba2|0x80,Pl=dispbit2.Pl=Oxff.P2=Disp_Taba3,Pl =dispbit(3.Pl =0xfft)旬个数码管按负值、打开、关闭的顺序/*两个延时函数*/void delay(uintld n)while (n-)»voiddelay_ms(uintl6 n) (uintS m=120twhile (n-)while (m-) refreshJe

23、dQ.)刷新显示温度信息/* 18B20复位函数*/ void DS 18b20_reset(void) (bit flag=l, while (flag) (while (flag) (DQ=1. delay(l),DQ = 0, delay(50);DQ=1. delay(6), flag=DQ, ) delay(45), flag =DQ, ) DQ=1, )/* 18B20写1个字节函数/ voidwnte_byte(uint8 val) (uintSi, for (i=0, i<8, i*+) (DQ=1; _nop_0,DQ = 0; nopsQ. /4us DQ = val

24、cfc 0x01, delay , val>>= 1,延时550us延时66us延时500us最低位移出延时66us右移一位)DQ=1; delay(l);/* 18B20读1个字节函数/ uintS read_byte(void) (umtSi, value=O, for (i=0, i<8, i*+) (DQ=1, 一口叩_0, value»= 1.DQ = 0;nopsQ. DQ=1, nops。,1f(DQ)value|=0xS0.delay ,)DQ=1, retumCvalue),)延时4us延时4us延时6611sI*启动温度转换,/voidstart

25、_t«np_sensor(void)(DS18b20_resetO.wnte_byte(0xCC).wnte_byte(0x44)t)/发Skip ROM命令/发转换命令/*读存温度甲 voidread_tempO (uint8 temp_data2, uintl6 temp=0tc. doublewd./读出温度汽放start_temp_sensorO, delay_ms(100),DSlSb2O_resetO. wntjbyte(OxCC), wnte_byte(0xBE), / 发读命令/复位/发Skip ROM命令temp_dataO=read_byteO, tenip _d

26、atal =re ad_byte(), tenip = temp_datal, temp«= 8;tenip |= temp_dataO» if (temp_datal&OxfD) (temp=(Temp)+l; wd=temp*0.0625, aO=ll, ) else (wd=tempa0.0625; a0=10.) c=wd. a2=c%10, al=c/10%10. c=wds10.a3=c%10, )温度低8位温度高8位一下三步将温度高八位低八位整合判断温度是否为负为负时,取反加一轧为摄氏温度,0.0625为温.感芯片储存I为负时,第一个数码管显示负号为正

27、时,第一个数码管不显示将摄氏温度转为整型第三个数码管显示个位第二个数码管显示十位第四个数码管显示小数位/*背景灯控制子函数*/voidbeijingdeng 0(if(ggxh) led_bjd=ltelse led_bjd=O,)/*l'l动控制子函数*/voidzidong 0(led_zs=0.while (lf(l)(dj_zz=ltdj_£z=O,点亮自动/手动指示灯判断电机正反转状态,并控制电机正反转)elsedjzz=0.) if(kgl=O) (dj_zz=lt dj_fz=l.delay_ms(100)» i+, read_tempO. ) if(

28、kg2=0) (dj_zz=l. dj_fz=l, delay_ms(100), readJempO. ) if(kg3=0)监测行程开关1状态关闭电机并延时控制电机下次启动换向读存温度信息监测行程开关2状态监测行程开关3状态dj_zz=l;dj_fz=l.delay_ms(100)» read_tempO.监测行程开关4状态)if (kg4=0)dj_zz=l, dj_fz=l;delay _ms(100)»控制电机下次启动换向readJempO.)beijingdeiig 0> refreshJedO, if(可 _qh=O)调入背景灯控制函数,监测感光信号显示温度信息监测自动/手动切换按键状态dj_zz=l, dj_fk=l, break.监测到切换到手动状态时,电机停转跳出自动控制循环,进入主函数void shoudong Q手动控

温馨提示

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

评论

0/150

提交评论