课程设计基于51单片机的数控直流电源设计_第1页
课程设计基于51单片机的数控直流电源设计_第2页
课程设计基于51单片机的数控直流电源设计_第3页
课程设计基于51单片机的数控直流电源设计_第4页
课程设计基于51单片机的数控直流电源设计_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

1、基于51单片机的数控直流电源设计学号:XXXXXXXXXX姓名:XXX日期:2013年12月目录第1章绪论11.1 课题的背景及意义11.2 课程设计的主要内容1第2章系统总体设计32.1 方案设计与论证32.2 系统总框图4第3章硬件设计63.1 硬件选型63.1.1 系统供电部分63.1.2 控制器部分63.1.3 显示部分63.1.4 键盘部分63.1.5 数模/模数转换部分73.1.6 掉电记忆部分73.2 硬件电路设计73.2.1 电源模块73.2.2 DA转换模块83.2.3 电压调整模块93.2.4 键盘模块103.2.5 EEPROM拓展模块113.2.6 显示模块12第4章软

2、件设计134.1主程序流程134.2 键盘程序流程图144.3 EEPROM读写程序流程154.4 DAC0832程序流程164.5 TLC1543程序流程17第5章系统测试及误差分析185.1 系统测试185.1.1 软件测试185.1.2 硬件测试185.1.3 系统整体测试185.2 误差分析19结论(心得体会)21参考文献22附录一23附录二24第1章 绪论1.1 课题的背景及意义电源技术尤其是数控电源技术是一门实践性很强的工程技术,服务于各行各业。当今电源技术融合了电气、电子、系统集成、控制理论、材料等诸多学科领域。直流稳压电源是电子技术常用的仪器设备之一,广泛的应用于教学、科研等领

3、域,是电子实验员、电子设计人员及电路开发部门进行实验操作和研究不可缺少的电子仪器。在电子电路中,通常都需要电压稳定的直流电源来供电。而整个稳压过程是由电源变压器、整流、滤波、稳压等四部分组成。然而这种传统的直流稳压电源功能简单、不好控制、可靠性低、干扰大、精度低且体积大、复杂度高。普通的直流稳压电源品种有很多,但均存在以下两个问题:输出电压是通过粗调(波段开关)及细调(电位器)来调节。这样,当输出电压需要精确输出,或需要在一个小范围内改变时,困难就较大。另外,随着使用时间的增加,波段开关及电位器难免接触不良,对输出会有影响。稳压方式均是采用串联型稳压电路,对过载进行限流或截流型保护,电路构成复

4、杂,稳压精度也不高。在家用电器和其他各类电子设备中,通常都需要电压稳定的直流电源供电。但在实际生活中,都是由220V的交流电网供电。这就需要通过变压、整流、滤波、稳压电路将交流电转换成稳定的直流电。滤波器用于滤去整流输出电压中的纹波,一般传统电路由滤波扼流圈和电容器组成,若由晶体管滤波器来替代,则可缩小直流电源的体积,减轻其重量,且晶体管滤波直流电源不需直流稳压器就能用作家用电器的电源,这既降低了家用电器的成本,又缩小了其体积,使家用电器小型化。传统的直流稳压电源通常采用电位器和波段开关来实现电压的调节,并有电压表指示电压值的大小。因此,电压的调整精度不高,读数欠直观,电位器也易磨损。而基于单

5、片机控制的直流稳压电源能较好地解决以上传统稳压电源的不足。随着科学技术的不断发展,特别是计算机技术的突飞猛进,现代工业应用的工控产品均需要有低纹波、宽调整范围的高压电源,而在一些高能物理领域,更是急需电脑或单片机控制的低纹波、宽调整范围的电源。1.2 课程设计的主要内容本设计给出的数控直流稳压电源的输出电压范围为013V, 额定工作电流为0.5A, 并具有“+”、“- ”步进电压调节功能, 其最小步进为0.05 V,纹波不大于10 mV, 此外, 还可用LCD液晶显示器显示设定电压值和输出电压值。该系统原理是以STC89C52单片机为控制单元,以数模转换芯片DAC0832输出参考电流控制电压调

6、整模块NE5534输出电压大小,同时输出稳压采用模数转换芯片TLC1543将采样电压模拟信号转换为数字信号,再通过单片机实现闭环控制。第2章 系统总体设计2.1方案设计与论证方案一:设计开关电源。在前期方案设计中采用PWM脉宽调制。它的功耗小,效率高,稳压范围宽,电路形式灵活多样,功耗小,效率高。在制作过程中发现,PWM占空比的线性变化使相应的电流呈非线性变化,经分析发现滤波电容的存在对占空比很小的PWM波积分效果明显,导致电压的非线性变化更显著,特别是PWM占空比很小时(希望得到输出的电压很小),利用单片开关电源的PWM技术控制开关的占空比来调整输出电压的,以达到稳定输出的目的。但用数字量控

7、制的作用更加明显。方案二:用D/A和运算放大器做电流源,即采用D/A输出调节晶体管的偏值电流(电压)。采用此方案能有效的缩短调节时间,并能提高输出精度。设计方案,包括了微控制器模块、D/A转换模块、稳压控制模块、显示模块、键盘模块、电源模块五部分构成,形成开环控制。采用常用的51芯片作为控制器,P0口和DAC0832的数据口直接相连,DA的电流输出端接放大器UA741的反向输入端,DAC0832和运放UA1将单片机发出的八位二进制数转换成05V负电压,再经过反向比例放大器UA2将负电压转换成010V正电压,输出到电压调整模块NE5534,将电压的步进值调整为0.05V。所以,当MCU输出数据增

8、加1的时候,最终输出电压增加0.05V,当调节电压的时候,可以以每次依0.05V的梯度增加或者降低电压。数码管显示电路,该系统使用3个数码管,可以显示三位数,分别组成显示电路的十位、个位、小数点位。本主电路的原理是通过MCU控制DA的输出电流大小,通过两级放大器转换成电压值并放大,经过电压调整模块调整作为最终输出的电压。方案三:用D/A和运算放大器做电流源,即采用D/A输出调节晶体管的偏值电流(电压),使用电压采样电路,通过A/D转换实现闭环控制。采用此方案是对方案二的改进,能有效的缩短调节时间,进一步提高输出精度。设计方案,其主要由微控制器模块、D/A转换模块、电压调整模块、显示模块、键盘模

9、块、电源模块六部分构成。液晶屏显示电路,该系统使用LCD1602液晶显示屏,可以清晰地显示分别组成显示电路的十位、个位、小数点位,同时还能显示英文名称和电压/电流单位。按照方案三的设计能够很好的满足课程设计的目标与要求,所以最后选用方案三。2.2系统总框图采用双220V/18V 变压器,将220V市电经桥式整流,滤波后得+21V和-21V电压值,再经过三端稳压芯片得到需要的+15V,-15V和+5V,为系统提供电源支持。以单片机STC89C52为核心,输出电流经D/A转换,比较放大后得到合适的电压值,经电压调整后输出UO,对UO采样,经A/D转换送回到单片机与设定值比较,自动调整以实现闭环控制

10、。系统总框图如图2-1所示。市电系统电源变压+21V+15V整流-15V+5V电压调整及过流保护 UO比较放大取样D/A转换电压显示STC89C52A/D转换键盘掉电记忆图2-1 系统总框图第3章 硬件设计3.1 硬件选型3.1.1 系统供电部分由于该电源总共需要+21V,+15V,-15V,+5V电压,所以采用双220V/18V 变压器,经桥式整流滤波后得到21V电压;由三端稳压器7815,7915和7805分别得到+15V,-15V和+5V电压。3.1.2控制器部分方案一 应用mega16作为控制器。AVR是51的升级版,具有速度快,且自带512字节的EEPROM,不需要另外接扩展的EEP

11、ROM的优点;缺点是,对AVR的使用不太熟悉,价格比较贵。方案二 采用STC89C52作为控制器。优点:技术比较熟练,使用广泛,价格便宜,而且功能上也完全满足本系统的要求;缺点:需要连接扩展EEPROM。因为本系统对单片机的速度要求不是很高,而且连接扩展EEPROM也不复杂,经过比较,选用方案二。3.1.3 显示部分方案一 使用LED显示。优点:可视角度宽,介格便宜;缺点:显示的内容少,介面呆板,而且占用较多的IO口资源。方案二 应用1602液晶显示模块。优点:界面美观,可显示文字及数字;缺点:价格较贵。 通过比较,我选节方案二。3.1.4 键盘部分方案一 利用I/O口直接连接的独立式键盘,每

12、键都有相应的I/O口对应,编程容易控制,实现方便;方案二 利用P3口接成4*2键盘。优点:利用6个IO口得到8个按键,可使操作介界变得简单,操作也方便;缺点:软件处理比独立按键复杂。通过比较,结合本设计不需要太多IO口,方案一为最佳方案。3.1.5 数模/模数转换部分方案一 采用PCF8591芯片。优点:集AD,DA于一身;缺点:价格昂贵,且操作不熟悉。方案二 数模转换部分采用DAC0832芯片;模数转换部分采用TLC1543芯片。优点:两芯片均为常用芯片,操作简单,软件编程简单;缺点:占用比较多的IO口,为PCB布线带来困难。经过比较,方案二位最佳。3.1.6 掉电记忆部分我选用应用最广泛的

13、ST24C02芯片。该芯片价格便宜,操作简单,抗干扰强,数据能保持一百年。3.2 硬件电路设计本系统由电源模块,调压模块,DA转换模块,键盘模块,EEPROM拓展模块与显示模块组成。3.2.1 电源模块220V市电经过双18V变压器转换后的到+ -18V电压,再经过桥式整流滤波电路,得到18*1.2=21.6(V)电压。其中+21V电压经过7815转换得到稳定+15V电压,再经7805转换得到稳定+5V电压;-21V电压经过mc7915转换得到稳定的-15V电压。其中,+21V为系统供电,+15V,-15V,+5V分别为各独立元件供电。图3-2-1 电源模块原理图3.2.2 DA转换模块DA转

14、换模块由DAC0832,两级运放UA741组成。DAC0832具有8位分辨率,有3种工作方式(单缓冲,双缓冲,直通)。本设计中DAC工作于直通工作方式。D/A转换结果采用电流形式输出。要是需要相应的模拟电压信号,可通过一个高输入阻抗的线性运算放大器实现这个供功能。该片逻辑输入满足TTL电压电平范围,可直接与TTL电路或微机电路相接,-芯片电路原理图如图3-2-2所示。图3-2-2DAC0832引脚图和内部结构电路图UA741为常用运放,由美国fairchild 公司生产,具有低漂移,稳定等优点,可外置调零电路以抑制零点漂移。DAC0832和运放UA1将单片机发出的八位二进制数转换成05V负电压

15、,再经过反向比例放大器UA2将负电压转换成010V正电压。经过两级运放放大后,DAC0832的转换分辨率为10/(28-1)=0.04V。即单片机向DAC送出的数据变化1BIT,运放UA2输出的电压值改变0.04V。滑动变阻器R22的作用为调零电路以抑制零点漂移。图3-2-3 DA转换模块原理图3.2.3 电压调整模块本设计的电压调整模块如图3-2-4所示。Q1,Q2组成复合管,以实现大电流输出。由于该设计预定额定电流为0.5A,最大输出电压为12.5V,所以要求Q1管射极最大功率Pmax=0.5*12.5=6.25W,所以选取TIP41c。Q3管9013和电阻R1为限流保护部分。当输出电流大

16、于0.7A时,R1上的压降为0.7V使得T3管导通,Q3管集电极对Q2管基极分流,使得Q2管基极电流明显变小使得输出电流变小,从而达到过流保护的功能。发光二极管起过流提醒作用。电压调整模块的核心部分是NE5534。NE5534生产于美国德州半导体公司,具有共模抑制比高,响应速度快和压摆率高等优点,常用于音响,耳机等设备。由DA及运放转换后的电压U1输入到NE5534的正向输入端,R12 R13 R17组成NE5534的取样电路。由于NE5534 Q1 Q2及取样电路构成负反馈,由运放的“虚短”特点,NE5534的反向输入端的电压U2为正向输入端的电压大小U1。由于运放还有“虚断”的特点,运放的

17、输入端对流经取样电路的电流不起分流作用,所以输出电压U0/U2=(R12+R13+R17)/(R12+R13)=1.25。即U2每改变0.04V,U0改变0.05V。由于单片机输入到DAC0832的二进制数据每改变1BIT,U1改变0.04V即U2改变0.04V,所以U0改变0.05V。因此,该设计最小步进电压为0.05V。电容C9的作用为抑制输出纹波电压。图3-2-4 电压调整模块原理图3.2.4键盘模块系统共设置了9个独立按键,实现了常用电压设定,电压“+”“”设定及正常关机辨别的功能。0108的功能分别是:设置电压值12V,9V,5V,3V,步进-0.5V,步进+0.5V,步进-0.05

18、V,步进+0.05V。09为关机设定。图3-2-5 按键模块原理图3.2.5EEPROM拓展模块为了实现设定电压数据的掉电保护,我在系统中连接了EEPROM24C02B,保证了在行驶过程中,如果数控电源意外掉电,已经设定的电压数据能够下来。24C02B是ATMEL公司生产的一款256 byte的串行EEPROM,能重复擦写1,000,000次,记录的信息能保存100年以上,而且与单片机的连接只要2根线。24C02的接图如图3-2-6所示。图3-2-6 EEPROM拓展模块原理图3.2.6显示模块显示模块主要由TLC1543及LCD液晶显示屏组成。由美国德州公司生产的TLC1543,是具有10位

19、分辨率的AD转换器,它具有11路模拟输入通道及3路内置自测试方式,具有显著的优点。LCD液晶屏幕采用1602,能够显示16X2个字符。由输出端采样得到的模拟信号,输入到TLC1543的其中一路模拟输入通道IN0,通过AD转换,TLC1543将模拟量转化为10位数字量输入到单片机相应的IO口。通过处理,单片机将模拟量值通过1602液晶显示出来。显示模块的接图如图3-2-7所示。图3-2-7 显示模块原理图第4章 软件设计4.1主程序流程系统的核心部分是对输出精度的闭环控制。对输出电压值采样,通过A/D转换通道送入单片机,与输出值进行比较,若误差不在规定范围内,就调整STC89C52的输出值,直到

20、满足要求。系统主程序流程图如图4-1-1和图4-1-2所示。 开始初始化读取上次关机设定值DA输出调整STC89C52的输出值TLC1543检测实际输出值误差小于50mV? N Y图4-1-1主程序流程图(1) 键盘扫描 等待输入更改DA输出值保存设定值屏幕显示当前设定值与输出值图4-1-2主程序流程图(2)4.2 键盘程序流程图本系统中键盘程序分为键盘扫描子程序和按键功能执行子程序。键盘扫描子程序流程图如图4-2-1所示,按键功能子程序流程图如图4-2-2所示。开始扫描键盘 有键接下?返回键值退出YY YN图4-2-1 键盘扫描子程序流程图有按键按下 开始执行相应功能退出图4-2-2 按键功

21、能执行子程序流程图4.3 EEPROM读写程序流程24C02B读写程序流程图如图4-3-1和图4-3-2所示。开始写入数据退出发送地址图4-3-124C02B写入程序流程图读取数据退出发送地址开始图4-3-224C02B读取程序流程图 4.4 DAC0832程序流程DAC0832的程序流程图如图4-4所示。开始结束输出相应值读取数据发送数据图4-4 DAC0832的程序流程图4.5 TLC1543程序流程TLC1543的小程序流程图如图4-5所示:开始CLK发送脉冲信号发送4位地址读取前四位数据CLK发送脉冲信号读取后6位数据结束图4-5 TLC1543的小程序流程图第5章 系统测试及误差分析

22、5.1 系统测试5.1.1 软件测试1、测试软件程序编辑器keil uvision4程序烧制器STC-ISP V352、编译结果在编制完C语言后,即keil uvision4界面下,进行了调试,根据提示,我找到了程序在编写上的错误,加以改正,再次进行调试。通过上述简单的测试,证明此次设计的程序基本上正确无误。然后,将烧录了程序的单片机STC89C52接到系统电路中,查看系统电路的运行情况;如果程序逻辑有问题可进一步修改,直到系统正常运行。5.1.2 硬件测试1、电源部分提供整个电路所需各种电压,由电源变压器和整流滤波电路及三个辅助稳压芯片输出构成,电源变压器的功率由需要输出的电流大小决定,确保

23、有充足的功率余量。2、电流取样电阻R1要选择大功率的电阻(5W或10W)。也可使用废旧万用表上拆下来的电阻线。检查电路连接无误后,即可试机。找一块数字表将其并联在输出电路上,按S1或S2设定一个电压,此时LCD1602第一行显示的电压可能会有误差,适当微调反馈电路的VR2,使其与数字表读数一致,再将数字表串联在电源的输出电路上,选择适当的电流档,接上一定的负载。此时,LCD1602第二行会显示出电流值,适当的调节VR3改变TLC1543参考电压,直至显示的电流值与万用表显示的电流值一致为止,校正完成后即可使用。5.1.3 系统整体测试1、测试工具双踪示波器数字万用表2、 测试结果 测试结果如表

24、5-1所示。表5-1 电压测试表系统理论值系统测量值误差显示电压值(V)理论码值(bit)实测码值(bit)实测电压值(V)3.000011110000111103.20.24.500101101001011004.60.15.000110010001100015.10.15.500110111001101105.60.16.000111100001110116.006.501000001010000006.60.17.001000110010001017.20.27.501001011010010107.60.18.001010000010011118.00.8.50101010101010

25、1008.509.001011010010110019.20.210.001100100011000119.8-0.2系统由于刚启动在电压方面不稳定,存在一定误差,但是单片机会对其进行控制,使系统再次稳定。3、精度分析绝对误差:U=(0.2+0.1+.+0.2+0.2)/12=0.11V相对误差:A=U/U=(0.2/3.0+0.1/4.0+0.2/9.0+0.2/10)/12=1.8%线性度:L=Lmax/YFS=0.2/15=1.3%灵敏度:K=0.1V5.2 误差分析从电路的原理框图可以看出,系统的误差来源于四个方面:1、 DAC0832的量化误差。2、 基准电压温漂引入的误差。3、 三

26、端稳压器的电路引起的误差。4、 其它器件和线路由于温漂、不稳定等原因引起的误差。结论(心得体会)经过两个周的艰苦奋战,我最终完成了课程设计。虽然过程是艰苦的,但最终成功的喜悦同样令我快乐!此设计用D/A和运算放大器做电源,及采用D/A输出调节晶体管的偏值电流电压。采用此方案能有效地缩短调节时间,并能提高输出精度,经计算需要采用8位的D/A芯片。为了争取时间,降低成本,我的解决方案是采用51单片机。改变电压的大小,当单片机通过闭环负反馈调节回路的A/D转换检测到电压达到设定值时,将再次对输出电压进行调制,直到输出电压达到设定值;电压值理论上是象形变化的,不会产生高次谐波,基本实现了各项要求和目标

27、,达到了此次课程设计的预期目的。本次设计过程中,对纹波也没有提出严格的要求,所以常用的稳压集成电路就可以满足要求。本设计输出的电压稳压精度高,可以用在对直流电压要求较高的设备上,或在实验室中当作实验电源使用。在本次设计的过程中,我发现很多的问题,给我的感觉就是很难,很不顺手,看似原理比较简单的电路,要动手把它给设计出来却是很难的一件事,主要原因是我们没有经常动手设计过电路,还有资料的查找也是一大难题,这就要求我们在以后的学习中,应该注意到这一点,更重要的是我们要学会把从书本中学到的知识和实际的电路联系起来,这不论是对我们以后的就业还是学习,都会起到很大的促进和帮助,我相信,通过这次的课程设计,

28、在下一阶段的学习中我会更加努力,力争把功课学好,学精。同时,通过本次课程设计,巩固了我们学习过的专业知识,也使我们把理论与实践从真正意义上相结合了起来;考验了我们借助互联网搜集、查阅相关文献资料,和组织材料的综合能力;从中可以自我测验,认识到自己哪方面有欠缺、不足,以便于在日后的学习中得到改进、提高。参考文献1邹红.数字电路与逻辑设计M. 北京:人民邮电出版社,2008.2李祥臣.模拟电子技术基础教程.M 北京:清华大学出版社.2005.3童诗白,华成英.模拟电子技术基础M 北京:高等教育出版社,2006.4邱关源.电路(第四版)M.北京:高等教育出版社,2006.56-745李群芳,张士军,

29、黄建. 单片微型计算机与接口技术(第二版)M.北京:电子工业出版社,2007.6刘文涛.单片机语言C51典型应用设计M.北京:人民邮电出版社,2006.7于永,戴佳,常江.51单片机实例精讲M.北京:电子工业出版社,2007.8曹凤.微机数控技术及其应用M.四川:电子科技大学出版社,2002.9胡寿松.自动控制原理M.北京:科学出版社,2007.152-23310潘永雄,沙河,刘向阳.电子线路CAD实用教程(第二版)M.陕西:西安电子科技大学出版社,2006.11李朝青.单片机原理及接口技术(建明修订版).北京:北京航空航天大学出版社,1999.12李朝青.单片机学习辅导测验及解答讲义.北京:

30、北京航空航天出版社,2003.13何立民.单片机高级编程.北京:北京航空航天大学出版社,1999.14张迎新,等.单片机初级编程.北京:北京航空航天大学出版社,1999.15余永权.Flash单片机原理及应用.北京:电子工业出版社,1997.16钱逸秋.单片机原理及应用.北京:电子工业出版社,2002.17王兆安,刘进军.电力电子技术(第五版).北京:机械工业出版社,2009.43-95附录一附录二-完整源程序#include <reg52.h>#include <intrins.h>#include <math.h>#define uint unsigne

31、d int #define uchar unsigned char typedef unsigned char BYTE;typedef unsigned int WORD;typedef bit BOOL ;BYTE code dis1 = "Power Supply"BYTE code dis2 = "welcome!"BYTE code dis3 = "Please wait."BYTE code dis4 = "SetValue: "BYTE code dis5 = "Output: "

32、BYTE setv6,getv6;/LCD输出字符数组float n,setvalue;/电压设定值float dq,dp,qq,pp,l,xx;/转换传递参数uchar ctu,outv,inv;/DA与AD部分传递参数sbit TLCEOC=P11;/TLC占用IO口sbit TLCCL=P12;sbit TLCAD=P13;sbit TLCOUT=P14;sbit TLCCS=P15;sbit scl=P20;/断电保存占用IO口sbit sda=P21;sbit DACS=P16;/DA占用IO口sbit DAWR=P17;sbit rs= P22;/液晶LCD占用IO口sbit rw

33、 = P23;sbit ep = P24;void delay(BYTE ms)/ 延时子程序BYTE i;while(ms-)for(i = 0; i< 250; i+)_nop_();_nop_();_nop_();_nop_();/* LCD显示 子函数组 */BOOL lcd_bz()/ 测试LCD忙碌状态BOOL result;rs = 0;rw = 1;ep = 1;_nop_();_nop_();_nop_();_nop_();result = (BOOL)(P0 & 0x80);ep = 0;return result;void lcd_wcmd(BYTE cmd

34、)/ 写入指令数据到LCDwhile(lcd_bz();rs = 0;rw = 0;ep = 0;_nop_();_nop_();P0 = cmd;_nop_();_nop_();_nop_();_nop_();ep = 1;_nop_();_nop_();_nop_();_nop_();ep = 0;void lcd_pos(BYTE pos)/设定显示位置lcd_wcmd(pos | 0x80);void lcd_wdat(BYTE dat)/写入字符显示数据到LCDwhile(lcd_bz();rs = 1;rw = 0;ep = 0;P0 = dat;_nop_();_nop_();_

35、nop_();_nop_();ep = 1;_nop_();_nop_();_nop_();_nop_();ep = 0;void lcd_init()/LCD初始化设定lcd_wcmd(0x38);/delay(1);lcd_wcmd(0x0c);/delay(1);lcd_wcmd(0x06);/delay(1);lcd_wcmd(0x01);/清除LCD的显示内容delay(1);/* DA输出函数 */void write_da() P0=outv;/ 将输出值送p0口delay(1);DACS=0; /DACS,DAWR都为低电平,0832为直通方式,送出数据delay(1);DAW

36、R=0;delay(1);delay(1); DAWR=1;/都为高电平,0832为单缓冲方式,数据缓存delay(1);DACS=1;delay(1);/* AD(TLC)读取函数 */void read_tlc()float vad;int i;i=2;while(i)uchar temp;vad=0;TLCEOC=1;delay(1);TLCCL=0;TLCCS=0;delay(1);TLCCL=0;/1TLCAD=0;temp=TLCOUT;if(temp=1)vad=vad+512;delay(1);TLCCL=1;delay(1);TLCCL=0;/2TLCAD=0;temp=TL

37、COUT;if(temp=1)vad=vad+256;delay(1);TLCCL=1;delay(1);TLCCL=0;/3TLCAD=0;temp=TLCOUT;if(temp=1)vad=vad+128;delay(1);TLCCL=1;delay(1);TLCCL=0;/4TLCAD=1;temp=TLCOUT;if(temp=1)vad=vad+64;delay(1);TLCCL=1;delay(1);TLCCL=0;/5temp=TLCOUT;if(temp=1)vad=vad+32;delay(1);TLCCL=1;delay(1);TLCCL=0;/6temp=TLCOUT;i

38、f(temp=1)vad=vad+16;delay(1);TLCCL=1;delay(1);TLCCL=0;/7temp=TLCOUT;if(temp=1)vad=vad+8;delay(1);TLCCL=1;delay(1);TLCCL=0;/8temp=TLCOUT;if(temp=1)vad=vad+4;delay(1);TLCCL=1;delay(1);TLCCL=0;/9temp=TLCOUT;if(temp=1)vad=vad+2;delay(1);TLCCL=1;delay(1);TLCCL=0;/10temp=TLCOUT;if(temp=1)vad=vad+1;delay(1

39、);TLCCL=1;delay(1);TLCEOC=0;delay(1);TLCCS=1;delay(1);i-;inv=(vad/1023)*255;/* 字符类型转换函数 */void change(float nn,BYTE a6) /float转字符数组uint i,y;float x=nn*100;for(i=0;i<4;i+)y=x/(pow(10,(3-i);switch(y)case 0 : ai='0' ; break;case 1 : ai='1' ; break;case 2 : ai='2' ; break;case

40、 3 : ai='3' ; break;case 4 : ai='4' ; break;case 5 : ai='5' ; break;case 6 : ai='6' ; break;case 7 : ai='7' ; break;case 8 : ai='8' ; break;case 9 : ai='9' ; break;x=x-y*(pow(10,(3-i);a4=a3;a3=a2;a2='.'a5='V'void changetf()/UCHA

41、R转FLOATsetvalue=(dq*13)/255; /dq为单片机p0口输出的八位数字量l=dp*13/255/100;setvalue=setvalue+l+0.02;void changetu() /float转UCHARqq=setvalue*255/13;ctu=qq;pp=(qq-ctu)*100;/* 键盘扫描函数 */void keyscan()uchar temp1,temp;P3=0xff;temp1=P3;while(temp1=0xff)/等待按键P3=0xff;temp1=P3;temp=temp1;/记录按键while(temp1!=0xff)/等待松手P3=0

42、xff;temp1=P3;switch(temp)case 0x7f: setvalue=setvalue+0.05;break;case 0xbf: setvalue=setvalue-0.05;break;case 0xdf: setvalue=setvalue+0.5;break;case 0xef: setvalue=setvalue-0.5;break;case 0xf7: setvalue=3;break;case 0xfb: setvalue=5;break;case 0xfd: setvalue=9;break;case 0xfe: setvalue=12;break;if(s

43、etvalue>13)setvalue=13;if(setvalue<0)setvalue=0;/* 开机欢迎界面 */void welcome()/欢迎界面BYTE i;lcd_init();/ 初始化LCDdelay(10);lcd_pos(2);/ 设置显示位置为第一行的第3个字符i = 0;while(dis1i != '0')lcd_wdat(dis1i);/ 显示字符i+;lcd_pos(0x44);/ 设置显示位置为第二行第5个字符i = 0;while(dis2i != '0')lcd_wdat(dis2i);/ 显示字符i+;del

44、ay(200);delay(200);delay(200);delay(200);delay(200);lcd_wcmd(0x01);/清除LCD的显示内容lcd_pos(1);/ 设置显示位置为第一行的第1个字符i = 0;while(dis3i != '0')lcd_wdat(dis3i);/ 显示字符i+;delay(200);delay(200);delay(200);delay(200);delay(200);/* 当前参数显示界面 */void show()/欢迎界面BYTE i;lcd_init();/ 初始化LCDdelay(10);lcd_pos(0);/ 设

45、置显示位置为第一行的第1个字符i = 0;while(dis4i != '0')lcd_wdat(dis4i);/ 显示字符i+;i = 0;while(i<6)lcd_wdat(setvi);/ 显示字符i+;lcd_pos(0x42);/ 设置显示位置为第二行第3个字符i = 0;while(dis5i != '0')lcd_wdat(dis5i);/ 显示字符i+;i = 0;while(i<6)lcd_wdat(getvi);/ 显示字符i+;/* 断电保存子函数组 */void short_delay() ; ; void _24hc_init() sda=1;scl=1;/初始化 释放总线 void start()/ 信号开始函数 sda=1; short_delay(); scl=1;short_delay();sda=0; short_delay(); void stop()/信号结束函数 sda=0;short_delay(); scl=1;short_delay();sda=1;short_delay(); void response()/应答信号 uchar i;scl=1;shor

温馨提示

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

评论

0/150

提交评论