资源描述
. 基于单片机的数字PWM控制器设计与应用软件摘 要 基于C51单片机和PWM对LED亮度进行调节, STC89C52作为主控芯片,设置了手动控制。在手动控制时,通过两个按键输出不同的PWM占空比对LED的电流进行控制,从而实现了对光度的手动调节。51单片机本身是没有PWM接口的,本文是通过软件模拟PWM在一定的频率的方波中,调整高电平和低电平的占空比,即可实现LED灯亮度控制。PWM调节LED亮度是一种利用简单的数字脉冲反复开关白光LED驱动器的调光技术。系统只需要提供宽、窄不同的数字式脉冲,即可简单地实现改变输出电流从而调节白光LED的亮度。不管用Buck,Boost,Buck-Boost还是线性调节器来驱动LED。它们的共同思路都是用驱动电路来控制光的输出。一些应用只是简单地来实现“开”和“关”地功能,但是更多地应用需要基本从0到100%调节光的亮度。而且经常要有很高的精度。使用开关电路以相对于人眼识别力来说足够高的频率工作来改变光输出的平均值,即数字调光。使用脉冲宽度调制PWM来设置周期和占空度,可能是最简单的实现数字调光的方法,并且Buck调节器拓扑往往能够提供一个最好的性能。关键词单片机,数字脉冲,占空比调节,驱动电路,LED亮度调节 ABSTRABecause C51SCM and PWM can regulate the brightness of the white light LED, STC89C5 as the DSP set up the manual control. During the process of the manual control, different PWM duty ratio output by two key regulate the electric current of LED so as to realize the manual control of the luminosity. As a matter of fact, C51SCM dont have the interface. The control of the brightness of LED is realized by the software which simulating the situation that PWM adjust the duty ratio of the high level and the low level. PWM dimming is a technology which makes use of simple digital pulse so as to switch white LED drive repeatedly.For Buck, Boost, Buck-Boost or linear regulation to drive LED, their common ideas are using drive circuit to control the output of light. Some applications only achieve the “on” and “off”function simply. While more application demand that it can regulate the brightness of light from 0 to 100% and often have very high precision. Digital dimmer is the use of the switch circuit which works in a high frequency with respect to human recognition capacity to change the average of the light output. The use of pulse width modulation to set the cycle and duty ratio is probably the simplest method to realize digital dimming and Buck regulator topology can often provide the best performance.KEY WORDS: SCM, digital pulse, duty-cycle correction, driver circuit, regulation of LED brightness 目 录前言4第1章单片机应用技术简介61.1单片机的基础知识与发展趋势61.2单片机部构成9第2章 PWM调光原理简介102.1PWM调节LED亮度原理102.1.1 脉冲宽度调节102.1.2 PWM对于LED调光的优势112.2 LED光源介绍132.2.1 LED灯简介与显示原理132.2.2LED光源的特性14第3章电路设计与功能模块介绍163.1电路设计流程图163.2功能模块介绍163.2.1按键功能设计163.2.2 BUCK电路介绍163.2.3 A0832芯片介绍193.2.4电源的选择213.2.5四位数码管介绍22第4章软件系统的设计与仿真244.1 电路图的设计仿真244.1.1单片机软件仿真系统Proteus介绍:244.1.2 Proteus仿真电路图254.2 软件设计与仿真264.2.1 Keil Vision2开发环境介绍:264.2.2Keil仿真图284.3单片机部程序的编写29第5章实物装配与调试305.1实物装配流程305.1.1按照电路图(图4-2-2)焊接组件305.1.2设计实物图见(附录一)305.2试验中的调试结果见(附录二)305. 3装配与调试中的问题30总结31致32参考文献33附录34附录1电路焊接实物图34附录2试验中的调试结果34附录3单片机部程序正文3441 / 41前 言由于能源危机和温室效应的影响,人们对节能技术越来越关注。LED照明又称固态照明,作为继白炽灯、荧光灯后的第三代照明技术,具有环保、节能、安全可靠的特点,固态光源与LED光源是被业界看好的未来十年替换传统照明器具极具潜力的新型光源,代表照明技术的发展方向。发展新固态照明,不但是照明领域的创新,而且符合当前政府提出的“低碳节能环保”的要求。 LED照明就是以LED(Light Emitting Diode)即发光二极管为光源的台灯,LED是一种固态的半导体器件,它可以直接把电转化为光。LED台灯是典型的绿色照明光源产品,作为国家绿色照明推广使用的产品,具有广阔的应用前景。在实际的应用中,发现LED灯在周边亮度大时依然以同一功率发光,存在电能浪费。另外一方面,因为LED的发热量和电流存在正相关的关系,发热影响了LED的寿命,所以在不必要的亮度下也减少了LED的寿命。然而,当LED在周边亮度小时,LED灯不能提供足够和恰当的光度,这样又影响了阅读,造成视觉疲劳。所以亮度可调的LED灯对生产生活是很有实际意义的。 目前,针对LED亮度控制方面,主要的两种解决方案为线性调节LED的电流(模拟调光)或在肉眼无法察觉的高频下,让驱动电流从0到目标电流值之间来回切换(数字调光)。利用脉冲宽度调变(PWM)来设定循环和工作周期可能是实现数字调光的最简单的方法,原因是一样的技术可以用来控制大部分的开关转换器。方案一:利用单片机输出占空比可调的高频脉冲,来改变驱动电流从而精确地调节LED亮度。即本论文所要介绍的调光方法(PWM调光为尽量降低听到噪声和辐射,高端照明系统的调光频率围一般要求几万赫兹。方案二:由于LED的亮度在一定围与电流成正比,LED的模拟调光是对LED的每个周期进行调整。简单地说,它是不断调整LED的电流大小来改变亮度的,可以通过调整电流检测电阻RSNS,或用模拟电压驱动IC的某个调光功能引脚来完成。无论LED是经由降压、升压、降压/升压或线性稳压器驱动,连接每一个驱动电路最常见的线程就是需要控制光的输出。现今仅有很少数的应用只需要开和关的简单功能,绝大多数都需要从0-100%去微调亮度。因此,利用单片机输出PWM信号,能对LED进行精准,快速,有效地亮度调节。利用单片机输出PWM信号,通过两个按键输出不同的PWM占空比对LED的电流进行控制,从而实现了对光度的手动调节。PWM调节LED亮度是一种利用简单的数字脉冲反复开关白光LED驱动器的调光技术。系统只需要提供宽、窄不同的数字式脉冲,通过BUCK驱动电路即可简单地实现改变输出电流从而调节白光LED的亮度。电路简单,实用,是对LED亮度最理想的调节方法。第1章 单片机应用技术简介1.1单片机的基础知识与发展趋势单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括的讲,一块芯片就成了一台计算机。单片机具有体积小、功能强、应用面广等优点,目前正以前所未见的速度取代着传统电子线路构成的经典系统,蚕食着传统数字电路与模拟电路固有的领地。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机了解计算机原理与结构的最佳选择。STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,32位I/O口线,置4KBEEPROM,MAX810复位电路,三个16位定时/计数器,一个6向量2级中断结构,全双工串行口。空闲模式下CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz6T/12T可选。实物图如下所示:图1-1-1 STC89C52 实物图下图为STC89C52引脚图以与各引脚功能:图1-1-1 STC89C52引脚图VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码此时P0外部必须被拉高。P1口:P1口是一个部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被部上拉为高可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。P2口:P2口为一个部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(计时器0外部输入)P3.5 T1(计时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是,每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有部程序存储器。注意加密方式1时,/EA将部锁定为RESET;当/EA端保持高电平时,此间部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入与部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。现在,单片机的使用领域已十分广泛。彩电、冰箱、空调、录像机、VCD、遥控器、游戏机、电饭煲等无处不见单片机的影子,单片机早已深深地融入我们每个人的生活之中。目前单片机产品百花齐放,世界上各大芯片制造公司都推出了自己的单片机,有上千种之多,CPU位数有8位、16位、32位,时钟频率高达20MHZ,片带有PWM输出、监视定时器WDT、可编程计数器阵列PCA、DMA传输、调制解调器等。芯片向高度集成化、低功耗方向的发展,使得单片机在大量数据的实时处理、高级通信系统、数字信号处理、复杂工业过程控制、高级机器人以与局域网等方面得到大量应用。单片机技术的发展大致有以下趋势。低功耗,多功能,微型化,高速度,多品种,长寿命,低噪声与高可靠性技术,OTP与掩膜,MTP向OTP挑战等。1.2单片机部构成一个比较完整的单片机应该包括:中央处理器(CPU)、片数据存储器(RAM)、片程序存储器(ROM)、输入/输出接口(I/O口)、可编程串行口、定时/计数器、中断系统与特殊功能寄存器(SFR)。单片机由运算器、控制器、存储器、输入输出设备构成。单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路集成到一块硅片上构成的一个小而完善的计算机系统。1.3单片机的工作原理单片微型计算机简称单片机是微型计算机的一个分支。它是在一块芯片上集成嵌入了CPU、RAM和ROM存储器、I/O接口等而构成的微型计算机。因主要用于工业测控领域,故又称为微控制器或嵌入式控制器。单片机的核心是中央处理器CPU。用超大规模集成技术把CPU集成在一块芯片上,称为微处理器。微处理器、微控制器和微型计算机三者的关系十分密切。目前单片机在工业测控领域中已占重要地位。各电气厂商、机电行业和测控企业都把单片机作为本部门产品更新换代、产品智能化的重要工具。单片机自动完成赋予它的任务的过程也就是单片机执行程序的过程,即一条条执行的指令的过程所谓指令就是把要求单片机执行的各种操作用的命令的形式写下来这是在设计人员赋予它的指令系统所决定的。一条指令对应着一种基本操作,单片机所能执行的全部指令,就是该单片机的指令系统不同种类的单片机,其指令系统亦不同。为使单片机能自动完成某一特定任务,必须把要解决的问题编成一系列指令,这些指令必须是选定单片机能识别和执行的指令。这一系列指令的集合就成为程序,程序需要预先存放在具有存储功能的部件存储器中。存储器由许多存储单元,最小的存储单位组成,就像大楼房有许多房间组成一样,指令就存放在这些单元里。单元里的指令取出并执行就像大楼房的每个房间的被分配到了唯一一个房间号一样。每一个存储单元也必须被分配到唯一的地址号,该地址号称为存储单元的地址。这样只要知道了存储单元的地址,就可以找到这个存储单元,其中存储的指令就可以被取出。然后再被执行。程序通常是顺序执行的,所以程序中的指令也是一条条顺序存放的,单片机在执行程序时要能把这些指令一条条取出并加以执行。必须有一个部件能追踪指令所在的地址,这一部件就是程序计数器PC,包含在CPU中。在开始执行程序时,给PC赋以程序中第一条指令所在的地址,然后取得每一条要执行的命令,PC中的容就会自动增加,增加量由本条指令长度决定,可能是1、2或3。以指向下一条指令的起始地址,保证指令顺序执行。第2章 PWM调光原理简介2.1PWM调节LED亮度原理2.1.1 脉冲宽度调节PWM是脉冲宽度调制的英文缩写指一个周期中亮灯时间所占的比例。这个周期很短或说频率很高,至少要高过人眼感光的反应速度。PWM调光就是通过调整灯亮的时间与灯灭时间的比例来调整平均感观亮度的方法。在微小的时间片里,灯要么是全开、要么是全关,没有半开的中间状态。PWM调光可以是分档的,也可以是无级的。PWM Dimming(脉宽调制)调光方式这是一种利用简单的数字脉冲,反复开关白光LED驱动器的调光技术。应用者的系统只需要提供宽、窄不同的数字式脉冲,即可简单地实现改变输出电流,从而调节白光LED的亮度。PWM调光的优点在于能够提供高质量的白光以与应用简单,效率高。例如在手机的系统中,利用一个专用PWM接口可以简单的产生任意占空比的脉冲信号,该信号通过一个电阻连接到驱动器的EN接口。多数厂商的驱动器都支持PWM调光。采样控制理论中有一个重要结论,冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本一样。PWM控制技术就是以该结论为理论基础,对半导体开关器件的导通和关断进行控制,使输出端得到一系列幅值相等而宽度不相等的脉冲,用这些脉冲来代替所需要的波形。按一定的规则对各脉冲的宽度进行调制,既可改变逆变电路输出电压的大小,也可改变输出频率。PWM控制的基本原理很早就已经提出,但是受电力电子器件发展水平的制约,在20世纪80年代以前一直未能实现。知道进入20世纪80年代,随着全控型电力电子器件的出现与其迅速发展,PWM控制技术才真正得到应用。随着电力电子技术、微电子技术和自动控制技术的发展以与各种新的理论方法如现代控制理论、非线性系统控制思想的应用,PWM控制技术获得了空前的发展。到目前为止,已出现了多种PWM控制技术。一般情况下,调节脉宽调制信号的脉宽有两种方法,一种方法是采用模拟电路中的调制方法,另一种方法是使用脉冲计数法。对于一般LED控制,采用第一种方法在控制电压变化时滤波的实现存在较大的困难,这主要是因为滤波频率较低、滤波精度要求高和滤波电路的参数不易调整。因此,本设计采用由单片机控制实现的脉冲计数法。2.1.2 PWM对于LED调光的优势我们知道用一个按键开关来控制放光二极管的亮灭。能很明显看到它亮、暗的变化。试想一下,假如用一个开、关频率很高的按键开关来控制发光二级管的亮、灭。由于人的视觉有1/24秒左右的视觉停留当这个频率高于人的分辨能力,我们就会看到发光二级管一直亮着的错觉。故而,我们控制这个频率的高低,就能达到调光的目的。这种调光技术利用的是数字脉冲来实现的是一种有效精准快速的调光手段。然而,现实中这种开关并非存在,而只是一种理想化的东西。但是如果利用单片机输出高频脉冲就能达到同样的效果。PWM调光是一种利用简单的数字脉冲,反复开关白光LED驱动器的调光技术。应用者的系统只需要提供宽、窄不同的数字式脉冲,即可简单地实现改变输出电流,从而调节白光LED的亮度。LED调光目前有两种思路:一是线性调节LED电流(即模拟调光),二是使用开关电路以相对于人眼识别力来说足够高的频率工作来改变光输出的平均值(数字调光)。PWM是属于数字调光的方法。模拟调光通常可以很简单的来实现。但是由于LED光的特性要随着平均驱动电流而偏移。对于单色LED来说,其主波长会改变。对白光LED来说,其相关颜色温度(CCT)会改变。用PWM调光则保证了LED发出设计者需要的颜色。PWM调光也可以提高输出电流精度。用线性调节的模拟调光会降低输出电流的精度。通常来说相对于模拟调光,PWM调光可以精度大于线性控制光输出。从节能来说没有可比性。因为PWM是保证CCT和颜况下测定电流光强模拟调光则是不存在这个前提。如果要牺牲这个前提来考虑节能的话,需要实测数据。但我估计在实现同等照度的情况下,PWM会有优势。LED生产商在他们的产品电气特性表中特别制定了一个驱动电流,这样就能保证只以这些特定驱动电流来产生的光波长或CCT.用PWM调光保证了LED发出设计者需要的颜色,而光的强度另当别论。这种精细控制在RGB应用中特别重要,以混合不同颜色的光来产生白光。从驱动IC的前景来看,模拟调光面临着一个严峻的挑战,这就是输出电流精度。几乎每个LED驱动都要用到某种串联电阻来辨别电流。电流辨别电压(VSNS)通过折衷低能耗损失和高信噪比来选定。驱动中的容差、偏移和延迟导致了一个相对固定的误差。要在一个闭环系统中降低输出电流就必须降低VSNS.这样就会反过来降低输出电流的精度,最终,输出电流无法指定、控制或保证。通常来说,相对于模拟调光PWM调光可以提高精度,线性控制光输出到更低级。但是,PWM调光有其劣势。主要反映在:PWM调光很容易使得白光LED的驱动电路产生人耳听得见的噪声(audible noise,或者microphonic noise)。这个噪声是如何产生?通常白光LED驱动器都属于开关电源器件(buck、boost、charge pump等),其开关频率都在1MHz左右,因此在驱动器的典型应用中是不会产生人耳听得见的噪声。但是当驱动器进行PWM调光的时候如果PWM信号的频率正好落在200Hz到20kHz之间,白光LED驱动器周围的电感和输出电容就会产生人耳听得见的噪声。所以设计时要避免使用20kHz以下低频段。另外市面上也有些调光电路用到了可控硅调光可控硅前沿调光器若直接用于控制普通的LED驱动器,LED灯会产生闪烁,更不能实现宽围的调光控制。原因归结如下:(1)可控硅的维持电流问题。目前市面上的可控硅调光器功率等级不同,维持电流一般是7-75mA(驱动电流则是7-100mA),导通后流过可控硅的电流必须要大于这个值才能继续导通,否则会自行关断。(2)阻抗匹配问题。当可控硅导通后,可控硅和驱动电路的阻抗都发生变化,且驱动电路由于有差模滤波电容的存在,呈容性阻抗,与可控硅调光器存在阻抗匹配的问题,因此在设计电路时一般需要使用较小的差模滤波电容。(3)冲击电流问题。由于可控硅前沿斩波使得输入电压可能一直处于峰值附近输入滤波电容将承受大的冲击电流,同时还可能使得可控硅意外截止,导致可控硅不断重启,所以一般需要在驱动器输入端串接电阻来减小冲击。(4)导通角较小时LED会出现闪烁。当可控硅导通角较小时由于此时输入电压和电流均较小,导致维持电流不够或者芯片供电不够,电路停止工作,使LED产生闪烁。2.2 LED光源介绍2.2.1 LED灯简介与显示原理50年前人们已经了解半导体材料可产生光线的基本知识第一个商用二极管产生于1960年。LED是英文light emitting diode(发光二极管的缩写)。LED是英文light emitting diode(发光二极管)的缩写,它的基本结构是一块电致发光的半导体材料,置于一个有引线的架子上,然后四周用环氧树脂密封,起到保护部芯线的作用,所以LED的抗震性能好。 LED结构图如下图2-2-1所示 发光二极管的核心部分是由p型半导体和n型半导体组成的晶片,在p型半导体和n型半导体之间有一个过渡层,称为p-n结。在某些半导体材料的PN结中,注入的少数载流子与多数载流子复合时会把多余的能量以光的形式释放出来,从而把电能直接转换为光能。PN结加反向电压,少数载流子难以注入,故不发光。这种利用注入式电致发光原理制作的二极管叫发光二极管,通称LED。当它处于正向工作状态时(即两端加上正向电压),电流从LED阳极流向阴极时,半导体晶体就发出从紫外到红外不同颜色的光线,光的强弱与电流有关。发光二极管的反向击穿电压约5伏。它的正向伏安特性曲线很陡,使用时必须串联限流电阻以控制通过管子的电流。限流电阻R可用下式计算:R=(E-UF)/IF式中E为电源电压,UF为LED的正向压降,IF为LED的一般工作电流。发光二极管的两根引线中较长的一根为正极,应接电源正极。有的发光二极管的两根引线一样长,但管壳上有一凸起的小舌,靠近小舌的引线是正极。与小白炽灯泡和氖灯相比,发光二级管的特点是:工作电压很低(有的仅一点几伏);工作电流很小(有的仅零点几毫安即可发光);抗冲击和抗震性能好,可靠性高,寿命长;通过调制通过的电流强弱可以方便地调制发光的强弱。由于有这些特点,发光二极管在一些光电控制设备中用作光源,在许多电子设备中用作信号显示器。把它的管心做成条状,用7条条状的发光管组成7段式半导体数码管,每个数码管可显示0-9十个数目字。2-2-1LED实物图2.2.2LED光源的特性模拟调光通常可以很简单的来实现。我们可以通过一个控制电压来成比例地改变LED驱动的输出。模拟调光不会引入潜在的电磁兼容/电磁干扰(EMC/EMI)频率。然而,在大多数设计中要使用PWM调光,这是由于LED的一个基本性质:发射光的特性要随着平均驱动电流而偏移。对于单色LED来说,其主波长会改变。对白光LED来说,其相关颜色温度(CCT)会改变。对于人眼来说,很难察觉到红、绿或蓝LED中几纳米波长的变化,特别是在光强也在变化的时候。但是白光的颜色温度变化是很容易检测的。大多数LED包含一个发射蓝光谱光子的区域,它透过一个磷面提供一个宽幅可见光。低电流的时候,磷光占主导,光趋近于黄色。高电流的时候,LED蓝光占主导,光呈现蓝色,从而达到了一个高CCT.当使用一个以上的白光LED的时候,相邻LED的CCT的不同会很明显也是不希望发生的。同样延伸到光源应用里,混合多个单色LED也会存在同样的问题。当我们使用一个以上的光源的时候,LED中任何的差异都会被察觉到。第3章 电路设计与功能模块介绍3.1电路设计流程图DC+5V电源+/-控制按键单片机BUCK变换电路LED发光二极管ADC 0832数码显示图3-1电路设计流程图3.2功能模块介绍3.2.1按键功能设计本设计采用两个开关作为控制系统的按钮。这两个按键开关作为调节亮度使用,即为增大亮度,减小亮度,长按则实现连续调节,实现无级调光。3.2.2 BUCK电路介绍BUCK变换电路为降压电路其原理图如下图所示图3-2-2BUCK电路原理图如下图所示为降压线路工作时的理想波形图,开关管导通时,输出电感储能,流过电感的电流线性增加,同时给负载提供能量;.(1) 开关管关断,输出电感通过diode进行续流,流过电感的电流线性减小。.(2)依据电感伏秒平衡原理可得:.(3)由式(3)可得:.(4)CCM/DCM区别与BUCK线路的边界条件 开关转换线路是否工作在CCM或者DCM,主要取决于流过电感电流是否连续,当电感电流连续时,则开关转换器工作于CCM(current continuous mode);当电感电流不连续时,则开关转换器工作于DCM(current discontinuous mode)。 当开关转换线路工作于CCM/DCM边界,对于buck线路而言,即流过电感的电流纹波与输出电流相等即:.(5)由式(5)可得边界条件为:(6)即:当时,buck变换器工作在CCM模式;当时,buck变换器工作在DCM模式;当时,buck变换器工作在CCM/DCM边界;3.2.3 A0832芯片介绍ADC0832是美国国家半导体公司生产的一种八位分辨率,双通道A/D装换芯片。因为它体积小,兼容性强,性价比高,所以深受客户的欢迎。 ADC0832具有以下特点:8位分辨率,双通道A/D转换,输入输出电平与TTL/CMOS相兼容,工作频率250KHZ,转换时间32us,一般功耗仅为15mW,商用芯片温宽为0C+70C,工业芯片温宽为-40C+85C。 下图为0832引脚图图3-2-3 0832引脚图芯片接口说明:CS- 选片使能,低电平芯片使能。CH0 模拟输入通道0,或作为N+/-使用。CH1 模拟输入通道1,或作为N+/-使用。GND 芯片参考0电位。D1 数据信号输入,选择通道控制。D0 数据信号输出,转换数据输出。CLK 芯片时钟输入。Vcc/REF 电源输入与参考电压输入(复用)。ADC0832 为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。其部电源输入与参考电压的复用,使得芯片的模拟电压输入在05V之间。芯片转换时间仅为32S,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。通过DI 数据输入端,可以轻易的实现通道功能的选择。单片机对ADC0832 的控制原理,正常情况下ADC0832 与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI。但由于DO端与DI端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将DO和DI 并联在一根数据线上使用。当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK 和DO/DI 的电平可任意。当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK 输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。在第1 个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号。在第2、3个脉冲下沉之前DI端应输入2 位数据用于选择通道功能,其功能项见官方资料。 如资料 所示,当此2 位数据为“1”、“0”时,只对CH0 进行单通道转换。当2位数据为“1”、“1”时,只对CH1进行单通道转换。当2 位数据为“0”、“0”时,将CH0作为正输入端IN+,CH1作为负输入端IN-进行输入。当2 位数据为“0”、“1”时,将CH0作为负输入端IN-,CH1 作为正输入端IN+进行 输入。到第3 个脉冲的下沉之后DI端的输入电平就失去输入作用,此后DO/DI端则开始利用数据输出DO进行转换数据的读取。从第4个脉冲下沉开始由DO端输出转换数据最高位DATA7,随后每一个脉冲下沉DO端输出下一位数据。直到第11个脉冲时发出最低位数据DATA0,一个字节的数据输出完成。也正是从此位开始输出下一个相反字节的数据,即从第11个字节的下沉输出DATA0。随后输出8位数据,到第19 个脉冲时数据输出完成,也标志着一次A/D转换的结束。最后将CS置高电平禁用芯片,直接将转换后的数据进行处理就可以了。 作为单通道模拟信号输入时ADC0832的输入电压是05V且8位分辨率时的电压精度为19.53mV。如果作为由IN+与IN-输入的输入时,可是将电压值设定在某一个较大围之,从而提高转换的宽度。但值得注意的是,在进行IN+与IN-的输入时,如果IN-的电压大于IN+的电压则转换后的数据结果始终为00H。下图为ADC0832数据读取程序流程:图3-2-3ADC0832数据读取流程图3.2.4电源的选择本设计采用了正负015V可调模拟电源供电,实物图如下所示。图3-2-4 电源实物图因为BUCK电路输入采用12V所以设计了正负015V可调的电源若实现稳压电源,首先就要就电路进行稳压。在稳压方面可选用变压器来完成。由输入交流电压变为直流则须对电路进行整流。本次设计选用全波桥式整流电路进行整流。然后要对输入的电压进行调节。在调节方面。可选用可调节三端正电压稳压器进行调节(LM317)。通过整流后得电流幅值变化很大,所以需要用电容对电流进行滤波。然后输出即可。电路模块分析:稳压=整流=调压=滤波=输出3.2.5四位数码管介绍本设计采用了了四位数码管作为显示单元,四位数码管是一种半导体发光器件,其基本单元是发光二极管。能显示4个数码管叫四位数码管。数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元与多一个小数点显示;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极的数码管。共阳数码管在应用时应将公共极接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极的数码管。共阴数码管在应用时应将公共极接到地线上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。下图为四位数码管引脚图,图3-2-5 四位数码管引脚图四位数码管的参数为:8字高度:8字上沿与下沿的距离。比外型高度小。通常用英寸来表示。围一般为0.25-20英寸。长*宽*高:长数码管正放时,水平方向的长度;宽数码管正放时,垂直方向上的长度;高数码管的厚度。时钟点:四位数码管中,第二位8与第三位8字中间的二个点。一般用于显示时钟中的秒。四位数码管区分共阳极共阴极的方法:首先数码管有共阴极和共阳极之分,区别他们的方法是若公共端接地,其他端接电源,若各段测试能亮,说明是共阴的,反之共阳的;若公共端接电源,其他端分别接的,测得各端亮,则说明是共阳的,反之为共阴的。世面上的四位一体的数码管一般都没有datasheet,所以掌握他们管脚的分布是很重要的一个环节。下面是一四位一体数码管引脚分布图4位一体数码管,其部段已连接好,引脚如图所示(正面朝自己,小数点在下方)。a、b、c、d、e、f、g、dP为段引脚,1、2、3、4分别表示四个数码管的位。 。 。 。 。 。1 a f 2 3 b。 。 。 。 。 。e d dp c g 4即:12-9-8-6为公共端,A-11 B-7 C-4 D-2 E-1 F-10 G-5 DP-3第4章 软件系统的设计与仿真4.1 电路图的设计仿真4.1.1单片机软件仿真系统Proteus介绍:Proteus是英国Labcenter Electro-nics公司开发的一款电路仿真软件,软件由两部分组成:一部分是智能原理图输入系统ISIS(Intelligent Schematic Input System)如下图所示,和虚拟系统模型VSM(Virtual Model System);另一部分是高级布线与编辑软件ARES(Adv-Ancd Routing and Editing Software)也就是PCB. 图4-1-1 ISIS启动界面 图4-1-1 单片机属性的设定 硬件调试分为静态调试和动态调试,对于硬件调试而言,只要认真焊接,硬件一般不会出现什么问题的。 静态调试一般采用的工具是万用表,它是在用户系统未工作时的一种硬件检测。 动态调试是在用户系统工作的情况下发现和排查错误的一种硬件检测。调试步骤是:首先把电路分为若干模块,调试过程中与该模块无关的元件可以不加考虑,这样可把故障限定在一定的围;故障清除后,把各个模块合在一起进行联调,即可完成整个硬件调试工作。4.1.2 Proteus仿真电路图下图为Proteus仿真的电路图,图4-1-2 Proteus仿真电路图4.2 软件设计与仿真4.2.1 Keil Vision2开发环境介绍:单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种Keil软件图标是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。Keil软件是目前最流行开发MCS-51系列单片机的软件。是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,Keil提供包括C编译器,宏汇编,连接器,库管理和一个功能强大的仿真调试器等在的完整开发方案。通过一个集成开发环境Vision2将这些部分组合在一起。 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。图4-2-1 Keil工作界面4.2.2Keil仿真图下图为Keil下PWM波的产生,和电路图图4-2-2PWM产生图图4-2-2电路图4.3单片机部程序的编写关于频率和占空比的确定,对于12M晶振,假定PWM输出频率1KHZ,这样定时中断次数设定为C=10,即0.01MS中断一次,则TH0=FF,TL0=F6;由于设定中断时间为0.01ms,这样可以设定占空比可从1-100变化。即0.01ms*100=1msTH0和TL0是计数器0的高8位和低8位计数器。计算办法:TL0=(65536-C)%256;TH0=(65536-C)/256,其中C为所要计数的次数即多长时间产生一次中断;TMOD是计数器,工作模式选择,0X01表示选用模式1,它有16位计数器,最大计数脉冲为65536最长时间为1ms*65536=65.536ms用程序编辑器将编好的程序(见附录三)烧入单片机。第5章 实物装配与调试5.1实物装配流程5.1.1按照电路图(图4-2-2)焊接组件5.1.2设计实物图见(附录一)5.2试验中的调试结果见(附录二)5. 3装配与调试中的问题1)焊接完成后,用万用表检查电路,发现按键开关一直处于开启状态,调换引脚至对角线后可以起到开关作用。2)经过各元件装配焊接流程后,试用+5V电源输出电源,接通电路,发现发光二极管不亮,更换该发光二极管后正常亮起,原因是在未焊接之前检查发光二极管时,将很大的电压加在了二极管两端,损坏了该二极管原有的特性。3)当所有元件能正常工作后,发现两个按键开关位置不合理,确定按键开关所接单片机引脚的功能后,调换到与实物成果图见(附录一)至合适位置。总 结在本次的毕业设计中,经过软件的仿真与调试,元件的组装,焊接,调试操作,各功能按设计理论实现,使我学到了很多东西。本次设计中,不但使我对单片机有了更进一步的了解,而且学会了Proteus和Keil软件的使用,也学会了如何自己去处理问题,解决问题,我觉得本次试验带给我的收获,将使我受益终身在这段时间里,我遇到过无数的困难和挑战,一次次的修改,一次次的失败使我当时非常沮丧,突然感觉课本上的东西只是一种理论,当我再实际中遇到的困难无法从课本上找到答案时,我更加觉得实践与理论的差别,但是在同学的帮助和鼓励下,我一次次的咬紧牙关,坚持再坚持,克服了一个个困难,终于有了收获,当我看到自己的努力有收获的时候,总是会有那么一点点激动。而且是我明白了很多道理,任何事情都是一样的,需要我们脚踏实地的去做,一步一个脚印的完成,认真严谨决不放弃的态度才能做好一每件事情。而且使我学会了独立思考的能力,以前总是被动的接受知识,总觉得自己的观点跟课本有冲突就一定是我错了,现在我明白了,只有通过自己的实践证明的东西才是正确的,才是我们应该相信坚持的理论,开始大家都觉得毕业设计与论文是一个很困难的任务,大家都难免会有一点畏惧,但是经过长时间的努力和积累,经过不断地失败再站起来,一次次的从头开始,反复查找资料后再总结经验,改掉你浮躁的毛病,认识踏实心平气和的去完成任务,而最终取得成功,这种收获的喜悦相信每个人都能够体会到。这是一次意志的磨练,是对我实际能力的一次提升,相信对我未来的学习,工作和生活有很大的帮助。而且我觉得我们必须培养自己的兴趣,有了兴趣就会有动力,觉得有意义,明确我们的人生理想,只有有了目标我们才有前进的方向,不会觉得迷茫,这次毕业设计让我改掉了我多年的一个坏习惯,容易焦躁,现在我觉得凡事都要静下心来思考,只有静下来好好思考,你才不会因冲动犯错,才会有更好的思维,进而在今后的生活和工作中更好的发挥自己的优势,成为一个对家庭对社会有用的人。致 历时将近几个月的时间我终于将我的毕业设计与论文写完,在这个漫长的过程中我遇到过无数的困难和障碍,都在同学和老师的帮助下度过了。尤其要强烈感我的论文指导老师*教授,他对我进行了无私的指导和帮助,虽然有时很严厉。但我知道那是一种恨铁不成钢的急切,是您的细心指导和关怀,使我能够顺利的完成毕业论文。您对学生总是默默的付出,尽管很多时候我自己并没有特别重视论文的写作,没有按时完成您交给我的任务,但是您还是能够主动的和我联系,告诉我应该怎么样修改论文,怎么样按要求完成论文相关的工作。老师的检查总是很仔细的,可以认真的看论文的每一个细小的格式要求,认真的读每一个同学的论文,然后提出最中肯的意见,在此教授。另外,在校图书馆查找资料的时候,图书馆的老师也给我提供了很多方面的支持与帮助。在此向帮助和指导过我的各位老师表示最衷心的感!还要感实验室的*老师,为我们提供实验器材和场地,还有指导与答疑,感这篇论文所涉与到的各位学者。本文引用了数位学者的研究文献,如果没有各位学者的研究成果的帮助和启发,我将很难完成本篇论文的写作。还要感我的同学和朋友,在我写论文的过程中给予我了很多你问素材,还有一些图书馆遇到的同学给与的论文排版过程中提供的热情帮助。最后还要感我的父母给与我生活上的帮助,由于我的学术水平有限,所写论文难免有不足之处,恳请各位老师和同学批评和指正。参考文献1树林,健.开关变换器分析与设计. 机械工业.2柴钰 黄向东 雷金莉 单片机原理与应用 科技大学20093朱清慧 凤蕊等 proteus教程(第二版) 清华大学4定宣 开关电源设计与应用 中国电力5谭浩强.C语言程序设计(第2版).清华大学.20086汪志江 51单片机技术与应用系统开发 清华大学7鹏、雄磊、东萍.单片机点亮LED初级教程8阎石 数字电子技术基础 高等教育9康华光.电子技术基础.高等教育10何立民.单片机应用技术选编M.航空航天大学200411树林 程红丽 低频电子线路 机械工业12高赟,骏跃,黄向慧. 电路. :电子科技大学,200913先允 电力电子技术 中国电力14柴钰,黄向东,良煜,雷金莉,宋先文.单片机原理与应用 M.:电子科技大学,2009.15龚尚福,贾澎涛,靳玉萍. C/C+语言程序设计 M.:中国矿业大学,2006.16龚尚福,朱宇 郭秀才 微机原理与接口技术 电子科技大学17洪润、亚凡.单片机原理与应用.清华大学18王燕芳.微型计算机控制技术.电子工业.200319开生、郭国法.MCS-52单片机输出PWM信号的设计J.微计算机信息2005第21期34-38页20王幸之、王雷4 毕查德拉扎维,贵灿,程军,瑞智. 模拟CMOS集成电路设计:交通大学,200333221康华光.电子技术基础.高等教育22万福君、松峰等.单片机微机原理系统设计与应用.中国科学技术大学附 录附录1电路焊接实物图附录2试验中的调试结果附录3单片机部程序正文/*/#include #include #define uchar unsigned char#define uint unsigned intsbit ADCS = P10;sbit ADCLK = P11;sbit ADDI = P12;sbit ADDO = P12;sbit K1 =P24 ; /PWM值增加键sbit K2 =P25 ; /PWM值减少键unsigned int PWM=500 ; /赋初值void delay(unsigned int t);uchar code Tab=0x3F
展开阅读全文