ImageVerifierCode 换一换
格式:DOCX , 页数:43 ,大小:415.53KB ,
资源ID:5239685      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-5239685.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机控制照明电路设计文档格式.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

单片机控制照明电路设计文档格式.docx

1、单片机、数码管、时钟芯片、按键、继电器等部件。根据灯光控制器的功能要求,以AT89S52为核心控制电路系统。系统总体结构框图如图1所示。 (1) 单片机芯片,AT89S52所要求的电压比较低,能以3V的超底压工作,但性能却很优越,可以编程也可以擦除。单片机的EEPROM可擦除重复1000次,而CPU和诸多功能模块组合在一个闪存芯片里面,AT89S52单片机则就显得更为轻巧,能为更多的嵌入式系统提供合适的解决方法。(2) 时钟芯片,选择DS1302时钟芯片。单片机计时,要用到计数器占用硬件资源,还要设置中断、查询等操作也会占用单片机资源。时钟芯片DS1302能很好的解决这个问题。(3) 显示模块

2、,选用由发光二极管和小数点形成的“8”字型数码管。它具有价格低、优良的配置、而且很方便与单片机接口等顺应人们需求的优点。驱动方式选择动态显示。(4) 按键模块,选择独立式按键。本设计用到五个按键,分别是选择键、加键、减键、确定键以及定时开关键。 图 1系统结构框图3 硬件设计31 芯片及元器件介绍3.1.1 AT89S52单片机芯片单片机引脚功能介绍VCC:电源电压。GND:接地。PO口:此端口占有8位,而且不是单向的。如果内存芯片连接外部,可以用来作为一种低8的地址线和数据线;在ROM编程状态下,它是输入的,而在验证状态下,则是输出的。最多能够驱动8个LSTTL门电路。P1口:此端口占有8位

3、,而且不是单向的,既拥有上拉电阻又可以充当I/O口。在ROM编程和验证的状态下,只占有低8的地址。P2口:如果单片机连接外部的存储器,它送出高8位的地址。在ROM编程和验证的状态下,它将占有高8位的地址,同时还可以接受控制信号。能作用于4个LSTTL的门电路。P3口:此引脚还有第二功能,在日常生活里,大多数情况下都不会用第一功能。具体情况如下表所示:P3.0 RXD(串行接收)P3.1 TXD(串行发送)P3.2 INTO(外输0个中断)P3.3 INT1(外中断1输入)P3.4 T0(定时0计输入)P3.5 T1(定时1计输入)P3.6 WR非(外RAM写选)P3.7 RD非(外ROM读选)

4、P3口还可用于接板信号。RST:复位输入接口,在高电平的时候才能工作。在振荡器启动的情况下,高电平显示能够超过两个周期,就可以复位。当89C51能够工作后,ALE端将放出只有正常振荡六分之一频率的正向脉冲,如果示波器能够探查出,那么就可以确定该芯片是好的。51单片机连接外存储时,P0可以占有地址,也可以作用于数据信号。此时就要看有没有ALE信号了,一旦有,那么低8位地址就是有用的。反之,则是传输的数据信号。ALE信号可在外部的情况下输出时钟或者是定时的信号。但要记住的是,如果接到外存储,将会自动过滤掉一个ALE的脉冲。可以驱动8个LSTTL门电路。PSEN非:可以判断外程序存储的读选端口。当访

5、问外部的程序存储器时,一旦取得指令,一个机器周期内要有两次有效的输出信号。EA非/ VPP:内、外ROM选择。只有此端口为高电平,CPU才会访问内程序存储;当然超过容量的特殊情况下,会自动接到外程序存储。反之低电平时,CPU不会去理会内部的程序存储,只会关注外部的程序指令。但要记住的是,如果是编程LB1的话,在复位过程中会将此端口的状态进行锁存。XTAL1:一个可以接外晶和电容的端口。在外振荡的状态下,此引脚外部输入的是时钟脉冲。XTAL2:另一个可以接外晶和电容的端口。在外振荡的状态下,此引脚是悬浮的。3.1.2 继电器本系统中电磁继电器作为主要的控制器件。由于本系统中,照明电路中需要用到继

6、电器来控制电路。把继电器的一端接上一个可以发光的二极管和一个一千欧姆大小的电阻,这里的电阻起到了限流的作用。如果在电路运行的时候,发光二极管发光,此时继电器的线圈上有电流。同时,在电路中还需要并联一个普通的二极管。它的作用主要是使得一些元器件能够正常工作。本电路采用5V大小的继电器。32 时钟电路单片机系统里面都有晶振,他就好比单片机的心脏,在单片机系统里面他是不可缺少的一部分,它全称晶体振荡电路。把定时元件外接在XTAL1、XTAL2引脚上,使单片机内部的振荡电路产生自激振荡。经常使用的内部时钟方式是选用电容和晶振组成的并联谐振回路。振荡晶体可在1.212MHz范围内选择电容大小可以起到频率

7、微调的作用。本系统中,选用30pF大小的电容,外接32.KHz晶振,Vcc1为后备电源,Vcc2为主电源。即使主电源关闭,时钟也能照常运行。Vcc1或Vcc2两者中较大的会自动给DS1302进行供电。如果在传送过程中RSTS置为低电平,就会终止此次数据传送,I/O引脚变为高阻态。上电后,在Vcc2V之前,RST要保持低电平。只有在SCLK 为低电平时,才能将RST置为高电平。SCLK为时钟输入端。电路如图2所示。 图2 时钟电路33 复位电路单片机的初始化操作首先需要复位,然后才是程序初始化。它的主要是为了让程序从AT89S52的初始地址0000H处开始执行。除系统的正常初始化状态外,有时因为

8、操作的错误或者程序的运行发生错误,系统会发生死锁。 这个时候就需要使用按复位键,重新启动系统,这样可以有效的解决死锁状态。 AT89S52单片机内部自带复位电路,RESET引脚是高电平的时候有效,可以通过自动复位或手动复位两种复位方式来进行复位操作。本设计系统中是低电平有效复位,用户开机的时候就启动复位操作,在+5伏时进入工作状态。 复位电路如图3所示。图3 复位电路34 键盘电路 键盘电路如图4所示,单片机P2口用来信号输入,当S1,S2,S3,S4,S5开关其中的任何一个按下时,其对应的P2.0,P2.1,P2.2,P2.3,P2.4口就会为低电平,然后进行单片机相应的操作。具体实现的功能

9、为:S1选择所需调整的时间参数,S2加时间,S3减时间,S4确定参数设定,S5控制定时的开与关。按确定键将依次显示时间和各个定时时段,接着按选择键就可以选择要调整的时间(时、分、秒)按加(减)键就可以调整时间或重新定时。最后,按下确定键,就完成了对参数的设定。调整时间步骤如下:1按下确定键,数码管显示当前时间,并停留不动 2按下选择键,数码管显示所选时间,两位数字闪动。 3按加键或减键,自由调整时间,长按则加快增加或减少。调整定时和调整时间方法一样。图4键盘电路35 数码管显示电路显示电路是时钟模块中最为重要的部分,因为端口的问题以及动态显示方式的优越性,本系统采用的一个四位数码管,使用共阳极

10、接法以及动态显示,以三极管作为驱动进行数码管的显示。在本设计中的数码管是显示当前时间和定时时间,因为按键设置有加键和减键,所以先要对数据进行存储然后进行累加或减。我们把数码管先连接到74LS373锁存器上,然后把锁存器连接到单片机AT89S52上。在本系统中数码管的所有段选码都由单片机的P1口给出,位选信号由P0.0、P0.1、P0.2和P0.3口控制。在每一时刻,4位LED可能会显示相同的内容,所以要用扫描显示来使一位亮而其他三位暗,周期为2ms。由于采用的是共阳极方式,低电平才有效,则要其中一个基极为低电平,三极管导通,集电极为低电平,位选打开,数码管显示。而段选码由P1口8位I/O口控制

11、,高电平时对应的段被点亮。在此瞬间,段选码由P2口输出相应的字符电平,P0.0、P0.1、P0.2和P0.3口输出位选码,来保证显示相应的字符。以此类推,每位进行显示后延时一会,构成视觉暂留,这样看起来就像是一起显示出来的。如图5所示。图5显示电路36 照明电路 照明电路采用白炽灯进行照明,因为白炽灯额定电压为220V,可根据实际情况并联多个。继电器K1受时钟电路控制。照明灯泡使用继电器作为开关驱动照明电路。J1开关断开时,继电器工作;当J1导通时,继电器控制电路失效,实现人工手动控制。三极管为使继电器工作股接在继电器的控制端。由于单片机输出的是低电平信号有效股选用PNP型三极管,当单片机输出

12、低电平是三极管导通,电流流入继电器,使继电器工作,从而控制照明电路的亮灭,其电路连接图如图6所示:图6照明电路37 单片机系统电源设计+5V电压源主要为元器件和工作电路提供稳压源。电源(VCC)是整个系统正常工作的根本。过大的电源电压会更大程度的缩短芯片的寿命,甚至会损坏芯片和其它元器件;过小的电源又不能驱动电路工作。所以设定电源电压合适的值非常重要的。本电路主要芯片工作的电压都在+5V左右,因此在整个电路板中采用W7800三端稳压芯片将+12V的电压整形为+5V直流电压。用W7800设计的+5V稳压电源电路图如图7所示:图7供电直流电源4 软件设计41 主程序流程框图 本设计采用C语言,在主

13、程序中,主要实现程序初始化,按键处理,时间的动态显示。当有键按下时,进入按键处理程序。 Y N42 延时子程序设计 延时程序主要对数码管的显示和按键的扫描进行延时操作。延时的时间可选5ms10ms,具体程序如下:void Delay(uint num)while( -num );43 时间读取和显示子程序设计用DS1302时钟芯片来读取时间,然后依次显示在四位数码管上。时间的读取和显示流程图,如图8和图9所示。 N N图8 DS1302读取时间流程图 图9 LED显示时间流程图4.3.1 显示数据子程序数码管显示初始化程序如下Void initlcm(void)/初始化Delay_xMs(10

14、);/功能设置:一次送8位数据。sendCMD(0x04);/点设定:显示字符/光标从左到右移动sendCMD(0x0f);显示设定:开显示,显示光标和当前显示位并闪动sendCMD(0x01);/清DDRAMsendCMD(0x02);/DDRAM地址归位sendCMD(off_cursor);/关光标44 DS1302驱动程序/寄存器宏定义#define WRITE_SECOND 0x80#define WRITE_MINUTE 0x82#define WRITE_HOUR 0x84#define READ_SECOND 0x81#define READ_MINUTE 0x83#defin

15、e READ_HOUR 0x85#define WRITE_PROTECT 0x8E/初始化DS1302void Initial(void) Write1302 (WRITE_PROTECT,0X00); /禁止写保护 Write1302 (WRITE_SECOND,0x56); /秒位初始化 Write1302 (WRITE_MINUTE,0x34); /分钟初始化 Write1302 (WRITE_HOUR,0x12); /小时初始化 Write1302 (WRITE_PROTECT,0x80); /允许写保护/位寻址寄存器定义SBIT ACC_7 = ACC7;/管脚定义SBIT SCL

16、K = P35; / DS1302时钟信号 7脚SBIT DIO= P36; / DS1302数据信号 6脚SBIT CE = P37; / DS1302片选 5脚/地址、数据发送子程序void Write1302 ( unsigned char addr,dat ) unsigned char i,temp; CE=0; /CE引脚为低,数据传送中止 SCLK=0; /清零时钟总线 CE = 1; /CE引脚为高,逻辑控制有效 /发送地址 for ( i=8; i0; i- ) /循环8次移位 SCLK = 0; temp = addr; DIO = (bit)(temp&0x01); /每

17、次传输低字节 addr = 1; /右移一位 SCLK = 1; /发送数据 i- ) temp = dat; dat CE = 0;/数据读取子程序unsigned char Read1302 ( unsigned char addr ) unsigned char i,temp,dat1,dat2; /读取数据 ACC_7=DIO; ACC=1; dat1=ACC; dat2=dat1/16; /数据进制转换 dat1=dat1%16; /十六进制转十进制 dat1=dat1+dat2*10; return (dat1);45 扫描键盘子程序设计键盘的操作,无论是按键或键盘都是利用机械点的

18、合、断作用。由于机械触点的弹性作用,CPU可能对键的一次闭合,做出两次键输入处理,此时必须消除抖动的影响来防止这种错误发生。去除抖动有硬、软件两种方法。如果按键较多,最好不要采用硬件去抖。而软件去抖动可以节省硬件花费,实用性和有效性高,所以常采用软件的方法进行消抖。进行初始化后,实际键值参数变为1FH(连接的是P2口的0,1,2,3,4,初始化即为此值),由于抖动的原因,为确保是有键按下,则必须进行两次比较。第一次扫描,P2、1FH相等则说明没有按下键,不相等则用软件消除抖动,延迟10毫秒后进行第二次。若相等则说明之前的现象并不是按键所引发的,如果不相等则表明确实有按键这个动作发生。具体代码为

19、:void key() static uchar key_new; key_can = 20; P2 |= 0xf0; if(P2 & 0xf0) != 0xf0) /按键按下(第一次) Delay(10); if(P2 &= 0xf0) & (key_new = 1) /确认是按键按下(第二次) key_new = 0; switch(P2 & 0xf0) case 0xe0: key_can = 1; break; case 0xd0: key_can = 2; case 0xb0: key_can = 3; case 0x70: key_can = 4; else key_new = 1

20、;键盘主要有独立式和矩阵式两种,独立式按键电路配置灵活,弊端是I/O口浪费较大,适用于键盘较少的电路。键盘程序作为主程序的一部分,通过查询方式读取键盘动作,根据读取的值,键盘进行相应操作处理程序。键盘扫描子程序流程图如图10所示。图10 键盘扫描子程序流程图46 时钟子程序#include #define uchar unsigned char#define uint unsigned intuchar dispcode= 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71,0x0

21、0; /定义0到F的段选码uchar dispbitcode=0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f; /数码管的位选码 uchar dispbuf8= 0,0,16,0,0,16,0,0; /定义一个缓冲区uchar dispbitcnt;uchar second;uchar minite;uchar hour;uint tcnt;uchar mstcnt;uchar i,j;void main(void) TMOD=0x02; /定时器0工作方式2 TH0=0x06; /每250us中断一次 TL0=0x06; TR0=1; /启动定时器0 ET0

22、=1; /定时器0中断允许 EA=1; /CPU开中断 while(1) if(P0_0=0) for(i=5;ii-) for(j=248;jj-); /延时检查是否是P0_0被按下 if(P0_0=0) /如果被按下 second+; /秒就加1 if (second=60) second=0; dispbuf0 =second%10; /存放秒的个位 dispbuf1 =second/10; /存放秒的十位 while (P0_0=0); /等待P0_0变高 if(P0_1=0) minite+; if (minite=60) minite=0; dispbuf3 =minite%10;

23、 dispbuf4 =minite/10; while (P0_1=0); if(P0_2=0) for(i=5; hour+; if(hour=24) hour=0; dispbuf6 =hour%10; dispbuf7 =hour/10; while (P0_2=0); void t0 (void) interrupt 1 using 0 /定时器0中断服务程序 P1=dispcodedispbufdispbitcnt; /为位选码 P3=dispbitcodedispbitcnt; /为段选码 dispbitcnt+; if(dispbitcnt=8) dispbitcnt=0; tcnt+; if(tcnt=4000) /此时有一秒钟了(4000*250us) tcnt=0; if(second=60) if(minite=60) dispbuf0=second%10; dispbuf1=second/10; dispbuf3=minite%10; dispbuf4=minite/10; dispbuf6=hour%10; dispbuf7=hour/10;5 原理图绘制和仿真本次论文设计的原理图绘制所采用的软件是protel99se,而原理图仿真采用的是 proteus软

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2