摘 要
近年来,彩灯对于美化、亮化城市有着不可轻视的重要作用。因此作为城市装饰的彩
灯需求量越来越大,对于彩灯的技术和花样也越来越高。目前市场上各式各样的LED灯多半是采用全硬件电路实现,存在电路结构复杂,功能单一等局限性,因此有必要对现有的彩灯控制器进行改进。本文介绍了一种简易彩灯控制系统的软硬件设计过程,以AT-89S52单片机为控制中心与辅助硬件电路相结合,利用软件实现对LED灯的控制。本系统具有电路结构简单,操作容易,硬件少,成本低等特点。
关键词:LED彩灯;AT-89S52单片机;彩灯控制器
目 录
1设计任务 ................................................................................................................................... 1 2设计方案 ................................................................................................................................... 2 3 硬件设计 .................................................................................................................................. 3
3.1 总体方案 ....................................................................................................................... 3 3.2 单元电路设计 ............................................................................................................... 4 4 软件设计 .................................................................................................................................. 7 5系统调试 ................................................................................................................................... 9 6 设计小结 ................................................................................................................................ 10 参考文献 .....................................................................................................................................11 附录 ............................................................................................................ 错误!未定义书签。
附录一 原理图 ................................................................................................................ 12 附件二 PCB .................................................................................................................... 13 附录三 程序 .................................................................................................................... 14 附录四 元件清单............................................................................................................ 18
1 设计任务
1.1设计目的
通过课程设计使我们进一步掌握微机原理与应用课程的有关知识,通过查阅资料,阅读程序,提高设计程序的能力及动手能力,使编程水平有一定的提高,同时也提高了我们通过动手进行硬件设计及程序设计的能力,从而提高解决实际问题的能力。 1.2基本要求
(1) 用16盏以上的LED小灯,实现至少4种彩灯灯光效果(不含全部点亮,全部
熄灭)。
(2) 可以用输入按钮在几种灯光效果间切换。
(3) 可以通过按钮暂停彩灯效果,使小灯全亮,再次按下相同按钮后继续之前的
效果。
(4) 增加自动在几种效果间切换的功能,并设置一个按钮可以在自动模式和手动
模式间切换。
(5) 使用定时中断延时。
2设计方案
彩灯控制器大致可分为两种方案实现。一种是利用电子电路装置控制,另一种是采用单片机控制。
方案一:根据设计任务要求介绍的彩灯控制电路的基本组成,可以确定彩灯控制器应由振荡电路、计数/时序分配电路、移位位寄存器和彩灯显示五部分组成。其框图如图1-1所示。
振荡电路 控制电路 计数器 译码器 LED显示电路 图1-1 彩灯循环控制器硬件框图
方案二:本方案主要是通过对基于单片机的多控制、多闪烁方式的LED彩灯循环系统的设计,来达到本设计的要求。其硬件构成框图如图1-2所示,以单片机为核心控制,由单片机最小系统(时钟电路、复位电路、电源)、按键控制电路、LED发光二极管和9V直流电源电路和供市电彩灯工作的220V交流电源组成组成。
时钟电路 AT89S52 单片机 复位电路 LED彩灯显示 按键控制电路 直流9V电源 图1-2 单片机彩灯循环控制系统硬件框图
此设计方案中单片机的P1.2到P1.7口接8路按键控制电路,实现彩灯花型的切换功
能;单片机上的P0和P2口接十六路市电彩灯电路,显示彩灯循环情况。
结合设计任务书比较以上两种方案可知:利用电子电路装置控制,其电路不很复杂,制作相对较容易点,成本也相对较低,但可调性差,亮灯模式少而且样式单调,达不到设计任务要求或实现困难。采用单片机控制其优点是电路集成度高,工作原理简单,清晰明了,自定义编程,控制的图案花样多,移植性好等。
综上,显然方案二各方面优越于方案一,以及为了体现专业优势,本次设计采用第二种方案。
3 硬件设计
3.1 总体方案
下图为彩灯控制器的基本原理图,如图3-1所示,以单片机为控制中心,在将单片机芯片装上之前就把程序写入到芯片中。,当电源接通知后,按下S9,单片机的电路复位,此时若按下S1,则为自动交替花样循环;若按下S1则手动控制,再在S2~S8六种不同的花样中选择一种中花样。同时数码显示管会显示出我们是采用的手动选择还是自动循环及所选用的是花样几。这都是由单片机根据我们选择的情况而调用相应的程序。最后再通过8550的开关作用及MAC97A6双向可控硅的的控制,实现彩灯模块花样的变化。
DA11QA9QA10QA11QA12QA13QA14QA15QA16J1R33R34R35R36R37R38R39R4021R24C40.1uC52U2VinGNDVout3C6C7B1R17B2R18B3R19B4R20B5R21B6R22B7R23B812345678VCCJ3P1.5SW-PBB1B2B3B4B5B6B7B8CAIDENG19J221CON29B1B2B3B4B5B6B7B8CAIDENG2PAIXIAN1PAIXIAN1S9C1RSTP1.7P1.613579ISP246810VCC123456781kR50R25B9R41QA1QA2R26B10R42QA3R27B11R43QA4R28B12R44QA5R29B13R45QA6R30B14R46QA7R31B15R47R32GNDB16J41R4823QA845678910K*8VCCA139A238A337A436A535A634A733A832R499RST3140U1VCCRSTEADS1011121314151617302912345678R547R556560R564560R575602R581560R599560R60560105605abcdefgDPR51R52560560D2D1P00P01P02P03P04P05P06P07P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RDALEPSEN38VCCLEDLEDVCCA1R1B1Q1B2A2R2B3Q2A3R3B4Q3A4R4B5Q4A5R5B6Q5A6R6B7Q6A7R7B8Q7A8R8Q8VCCA921A1022A1123A1224A1325A1426A1527A1628P20P21P22P23P24P25P26P27GNDX2X1P10P11P12P13P14P15P16P17P1.5P1.6P1.7S1S2S3S4S5181920S6S7S8Y1VCCQ9Q10Q11Q12Q13Q14Q15Q16C2D3LEDGNDC3R53RES2R9A16B9R10A15B10R11A14B11R12A13B12R13A12B13R14A11B14R15A10B15R16A9B16 图3-1硬件原理图
3.2 单元电路设计 3.2.1 直流稳压电源
对于一个完整的电子设计来讲,首要问题就是为整个系统提供电源供电模块,电源电路的稳定可靠是系统平稳运行的前提和基础。电子设备除用电池供电外,还采用市电(交流电网)供电。通过变压、整流、滤波和稳压后,得到稳定的直流电。直流稳压电源是电子设备的重要组成部分!本项目直流稳压电源为+5V。如图3-2所示。
J121C6C7
图3-2 直流电源电路
3.2.2 单片机最小系统
要使单片机工作起来,最基本的电路的构成由单片机、时钟电路、复位电路等组成。单片机最小系统如图3-3所示。
时钟电路:本系统采用单片机内部方式产生时钟信号,用于外接一个12MHz石英晶体振荡器和2个30pF微调电容,构成稳定的的自激振荡器,其发出的脉冲直接送入内部的时钟电路。
复位电路:确定单片机工作的起始状态,完成单片机的启动过程。单片机系统的复位方式有上电自动复位和手动按键复位。本设计采用方式为上电自动复位功能。电路如下图所示。
10111213141516173029U1P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RDALEPSENP10P11P12P13P14P15P16P1712345678C1VCCRSTY1P00P01P02P03P04P05P06P071kR50P20P21P22P23P24P25P26P27C2C3VCCA139A238A37A436A535A634A733A832R49GNDA921A1202A1213A1224A1235A1246A1257A1268S9图3-3 单片机最小系统
3.2.3 按键控制电路
按键控制电路(如图3-4所示)是由8个按键开关构成的。他们分别接在单片机
AT89S52的P1.2到P1.7口,D1,D2用于显示所选为手动花样切换还是自动花样切换,按键S2~S8为手动花样选择键,数码管显示花样方式,由于P3口得电流过小,不足以驱动数码管,所以加上拉电阻。当下一键时,单片机会根据所按下的键调用相应的程序来实现高低电平的转换,从而使数码管显示按键信息及实现对彩灯的控制。
GND201918GNDX1X2VCCRSTEA40319SW-PB
VCCSW-PBS9C11kR50R49RST31409U1VCCA139A238A337A436A535A634A733A832DS1011121314151617302912345678R547R556560R564560R572560R581560R595609R60560105560abcdefgDPR51R52560560D2D1P00P01P02P03P04P05P06P07VCCRSTEAP3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RDALEPSEN38VCCLEDLEDVCCA921A1022A1123A1224A1325A1426A1527A1628P20P21P22P23P24P25P26P27P10P11P12P13P14P15P16P17P1.5P1.6P1.7S1S2S3S4GNDX2X1S5S6S7S8181920 图3-4 按键控制电路
3.2.4 LED显示电路
市电彩灯显示电路(如图3-5所示),是由16个25W市电彩灯、32个电阻、及8550和MAC97A6构成的电路。8550起开关作用,为使市电彩灯能正常工作,在J1口接入220V的交流电源。8550的基极对应的接到单片机的P0及P2端口。通过软件编程对P0及P2口输出高低电平来实现不同的闪烁花型。
QA9QA10QA11QA12QA13QA14QA15QA16R33R34R35R36R37R38R39R40B1R17B2R18B3R19B4R20B5R21B6R22B7R23B8R241234567B1B2B3B4B5B6B7J221CON29B1B2B3B4B5B6B71234567R25B9R41QA1R26B10R42QA2R27B11R43QA3R28B12R44QA4R29B13R45QA5R30B14R46QA6R31B15R478B8CAIDENG2PAIXIAN1PAIXIAN1B8CAIDENG198R32R48QA7QA8A1R1B1Q1B2A2R2B3Q2A3R3B4Q3A4R4B5Q4A5R5B6Q5A6R6B7Q6A7R7B8Q7Q8R8VCCQ9Q10Q11Q12Q13Q14Q15Q16R9A16B9R10A15B10R11A14B11R12A13B12R13A12B13R14A11B14R15A10B15R16A9B16
图3-5 LED显示电路
4 软件设计
单片机的应用系统由硬件和软件组成,上述硬件原理图搭建完成上电之后,我们还不能看到多控制、多闪烁方式的LED灯系统循环点亮的现象,我们还需要编写程序控制单片机管脚电平的高低变化,来实现市电彩灯的明灭。软件编程是多控制、多闪烁方式市电彩灯灯系统中的一个重要的组成部分,是本设计的重点和难点。下面,我将阐述多控制、多闪烁方式的LED灯系统是如何实现6种不同的花样变化的。
开始 是否有 键按下 Y N 延迟10ms 是否有 键按下 Y N 键号 结束 图4-1按键扫描流程
主程序 程序初始化 调用键盘扫描 Y 是否有键按下 N Key是否为0 Y Key是否在1~7 Y 彩灯花样调用 数码管显示key值 N Y调用自动彩灯显示 Key=2 Key=3 Key=4 Key=5 Key=6 Key=7 按键S2 按键S3 按键S4 按键S5 按键S6 按键S7 图4-2主程序流程图
本设计是以单片机AT89S52为核心控制16个LED的6种不同的花样的变换。硬件电路如图附录1所示,16个LED相当于分别接在单片机的P0.0-P0.7及P2.0~P2.7接口上,当端口输出“1”时,8550相当于开关处于导通状态,使LED通电。当输出“0”时,LED灯熄灭。由于使用汇编语言写程十分的杂,所以我们采用了C语言来设计程序。程序启动时跳转到键盘判断模块程序中,,循环检测直到有按键按下的时候,程序转去相对应按键的彩灯显示的花型模块。具体程序流程如图4-1(按键扫描流程)和图4-2(主程序流程)所示。
5系统调试
(1)调试工具 ①万用表 ②9V直流电源 (2)调试环境 ①地点:实验室
②室温:20 ℃ (3)测试过程
当我们把硬件焊接等工序完成之后便开始进行测试,首先是测试了位于单片机之前的部分,在电源一接近的地方就出现了短路的情况,但我们仔细检查,不关是元件在焊接还是电路线都没出现问题,最后在老师的帮助下才知道是元件的正负极接反,待重接之后我们又继续进行检测,通电之后又发现数码显示管有一线始终没亮过,在我的观察下发现有短线的情况,在补接之后,单片机的前部分测试完毕。然后我们把我们编写的程序写入单片机,将单片机接入电路进行测试,通电之后有关单片机的所有部分都没有工作,然后在老师的帮助下将整个程序进行修改,调试。当最终程序确定下来之后,我们便进行最后的测试,我们把电路板与我们最先设计的市电彩灯连接好,通电,此时就有几个市电彩灯不亮,然后我们检查彩灯,发现彩灯也没问题,询问老师才知道有可能是我们的三极管的驱动不够。在第二次通电是,由于有一彩灯短路,在此彩灯接入电路的过程中由于短路使与其相接的三极管被烧毁。于是我们又从新换元件,测电路,在最后,我们考虑到安全与成本问题,觉得采用LED代替市电彩灯。刚开始我们在电源部分使用的是桥式整流,因只有一个变压器,为了使桥堆不能短路,只能用直流电源进行调试。最后我们将其改为半波整流,可直接使用变压器将220V的市电转化为9V交流电使用,是我们的调试更为方便。最后通电测试,测试结果与预计结果完全相符合,调试结束。
6 设计小结
经过努力,我们组终于完成这次数字彩灯的课程设计任务。我们首先查阅了大量的书本资料,接着又上网搜集了许多有用信息。但最终还是在易老师的指导下将方案的大致方向确定了下来。方案确定下来之后我们便开始计算一些器件的参数。
当最终的方案设计出来以后,我们便又请教了学院的几位老师,他们的一个小小指点就给我们很大启示和灵感,不管是对我们的原理图的设计还是程序方面都提出了许多有价值的建议,在此易老师表示热烈感谢。
由于每一步都是我们自己亲自做过的,所以通过这次课程设计,我们增强了对单片机的理解,;进一步提高分析解决实际问题的能力,创造一个动脑动手﹑独立开展电路实验的机会,锻炼分析﹑解决程序编写问题的实际本领,真正实现由课本知识向实际能力的转化;通过典型程序的设计与制作,加深对基本原理的了解,增强了实践能力。
由于我们的能力和水平有限,实验过程过于简陋,实验经验尚浅,错误之处在所难免,恳请老师加以纠正,以后不断学习改进!
参考文献
[1] 周国运.单片机原理及应用[M]. 北京:中国水利水电出版社,2009 [2] 陈梓城.模拟电子技术基础[M]. 北京:高等教育出版社,2007 [3] 陈正义.单片机控制实习[M]. 北京:人民邮电出版社,2006 [4] 姚富安等.实用电子实际基础[M]. 北京:理工大出版社,2008
QA9QA10QA11QA12QA13QA14QA15QA16R33R34R35R36R37R38R39R40B1R17B4B5B6B7B8B2R18B3R19R20R21R22R23R2412345678VCCJ1J3C6C7RSTP1.7P1.621S9C1P1.5VCCB1B2B3B4B5B6B7J2B1B2B3B4B5B6B7B8附录一 原理图
21SW-PB9CAIDENG2PAIXIPAANI1XIAN1B8CAIDENG1913579ISP2468101234567CON281kR50RSTR27R28R29R30R31R32R25R26931R49GNDJ4B16U1DSB9B10B11B12B13B14B15RSTVCCR41QA3QA4QA5QA6QA7R42R43R44R45R46R47EA403QA1QA28VCCX2X1VCCGND1819Y1VCCQ11Q12Q13Q14Q15Q16C2D3LEDB16C3R53RES2Q9Q10GNDR9A13A12A11A10B9R10B10R11B11R12B12R13B13R14B14R15B15R16A9A16A15A1420
10K*8ALEPSENA2R2B3Q2Q3Q4Q5Q6Q7Q8B4B5B6B7B8R3R4R5R6R7R8A3A4A5A6A7A8A291A2120A2131A2142A2153A2164A2175A2186P20P21P22P23P24P25P26P27P10P11P12P13P14P15P16P1712345678
R14823QA8456789P00P01P02P03P04P05P06P073029P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD1011121314151617R547R5565R650645R650725R650815R650995R6600560105560VCCA319A328A37A346A355A364A373A382abcdefgDPR51R52560560D2D1LEDLEDVCCA1P1.5P1.6P1.7S1S2S3S4R1B1B2Q1S5S6S7S8
附件二 PCB
附录三 程序
#include #define uchar unsigned char Uchar code leddisplay[]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数码管显示 uchar code ledp1[6][8]={ 0XFF,0X00,0XFF,0X00,0XFF,0X00,0XFF,0X00, 0X0F,0X88,0XF0,0X44,0X00,0X22,0X00,0X11, 0X01,0X12,0X24,0X48,0X80,0X00,0X00,0XFF, 0X7F,0XC8,0X7F,0XC8,0X7F,0XC8,0X7F,0XC8, 0X48,0XA4,0X12,0X01,0X12,0XA4,0X48,0XFF, 0X9F,0X60,0X9F,0X60,0X9F,0X60,0X9F,0X60}; uchar code ledp3[6][8]={ 0XFF,0X00,0XFF,0X00,0XFF,0X00,0XFF,0X00, 0X00,0X88,0X00,0X44,0X0F,0X22,0XF0,0X11, 0X00,0X00,0X01,0X12,0X24,0X48,0X80,0XFF, 0X13,0XFE,0X13,0XFE,0X13,0XFE,0X13,0XFE, 0X12,0X25,0X48,0X80,0X48,0X25,0X12,0XFF, 0XF9,0X06,0XF9,0X06,0XF9,0X06,0XF9,0X06}; void delay(void) //10ms延时 { unsigned char i,j; } void delay_ms (unsigned int k) //10ms延时 { unsigned char i,j; for(j=200;j>0;j--) for(i=25;i>0;i--); while(k--) { for(j=200;j>0;j--) } for(i=25;i>0;i--); } unsigned char keyscan(void) { unsigned char key=0xff; P1=0X3f; if((P1&0X3c)!=0X3c) { delay(); P1=0X3f; if((P1&0X3c)!=0X3c) { P1=0X7f; switch(P1&0X3C) { case 0x38:key=8;break; case 0x34:key=7;break; case 0x2c:key=6;break; case 0x1c:key=5;break; } P1=0Xbf; switch(P1&0X3C) { case 0x38:key=4;break; case 0x34:key=3;break; case 0x2c:key=2;break; case 0x1c:key=1;break; } } } return key; } void auto_lam_display(void) { int i,j; for(i=0;i<6;i++) { for(j=0;j<8;j++) { P0=ledp1[i][j]; P2=ledp3[i][j]; delay_ms(5); } } } void lamp_display(unsigned char cnt) { unsigned char i=0; for (i=0;i<8;i++) { P0=ledp1[cnt-1][i]; P2=ledp3[cnt-1][i]; delay_ms(5); } } main() { unsigned char key,key_temp=0xff,flag=0; P3=0xc0;//上电初始化显示0; while(1) { key=keyscan(); if(key==0xff) { //flag=1; //P3=0x90;// 手动显示9; auto_lam_display(); } else { P3=leddisplay[key]; lamp_display(key) } } } 附录四 元件清单 元件 电容 电阻 电阻 电阻 电阻 电阻 电阻 排阻 电容 电容 电容 晶振 三极管 单片机 两脚连接器 数码管 发光二级管 排线 开关 双向可控硅 型号 0.1u 1k 2.4k 2k 10k 560 2k 10k*8 10u 10u 30pF 12MHz 8550 AT98S51 CON2 DS LED PAIXIAN1 SW-PB TRIAC 数量 1 17 16 1 1 9 15 1 1 1 2 1 16 1 2 1 3 2 9 16 封装 RAD0.2 AXIAL0.3 AXIAL0.3 AXIAL0.3 AXIAL0.3 AXIAL0.3 AXIAL0.3 SIP9 RB.2/.4 RB.1/.2 RAD0.2 XTAL1 TO-92A DIP40 SIP2 DIP10 RB.1/.2 DENG SW-PB TO-92A 因篇幅问题不能全部显示,请点此查看更多更全内容