基于单片机控制实现直流数控可调稳压电源可调电源的设计

& & & & & & & & & & & & & & & &基于单片机数控直流恒压电源的设计
& & & & & & & & & & & & & & & & & & & & & & 摘 要
恒压电源的应用非常的广泛,绝大多数的电子电路都需要电压稳定的电能供给,以至于很多人认为电源就是指稳压电源。恒压源在LED的应用上,主要针对的是驱动器单元,就是输出电压恒定,输出电流在一定范围。而质量优良的直流稳压电源,才能满足各种电子线路的要求,所以,直流稳压电源的设计颇为重要,特别是数控直流恒压电源。本文主要介绍数控直流恒压电源的设计,对其中涉及的D/A转换、单片机等也有详细介绍。将单片机数字控制技术, 有机地融入直流恒压电源的设计中, 能设计出高性价比的数字化直流恒压电源。但是其实电子世界里根本没有&恒定&这个东西,所有电源都有负载调整率这个指标,就算是恒压源,随着负载的加大,其输出电压一定会下降的。
关键词直流恒压电源,单片机,数模转换,功率运放
第一章 & 绪 & 论
1.1课题的背景
现代社会几乎所有的电子设备都需要稳定的直流电源,广泛地应用于电子电路、教学实践和科学研究等领域中由此可见稳压电源的重要性。直流稳压电源的电路形式有很多种,有串联型、开关型、集成电路、稳压管直流稳压电源等等。目前使用的直流稳压电源大部分是线性电源,利用分立元件组成,由于体积大、操作使用不方便、可靠性差、效率低、自我保护功能不够,因而故障率高。在电子设备中,直流稳压电源的故障率是最高的,而且直流稳压电源中,通过整流、滤波电路所获得的直流电源的电压往往是不稳定的,输出电压在电网电压波动或负载电流变化时也会随之有所改变。电子设备电源电压的不稳定,将会引起很多问题,比如:测量仪器的准确度降低,交流放大器的噪声增大,直流放大器的零点漂移等等,所以设计出质量优良的直流稳压电源,才能满足各种电子线路的要求。随着电子技术的飞速发展 ,各种电子、电气设备对稳压电源的性能要求日益提高,稳压电源不断朝着小型化、模块化、智能化、高效率、高可靠性、低成本、低电磁干扰方向发展。目前产生直流稳压电源的方法大致分为两种:一种是模拟方法,另一种是数字方法。前者的电路均采用模拟电路控制,而后者则是通过数字电路进行自动控制。直流稳压电源朝着数字化方向发展。因此对于数控恒压源的研究是必要的。因为对电源可靠性、输出精度和稳定性要求越来越高,利用D/ A 转换器的高分辨率和单片机的自动检测技术设计程控电源就显示出其优越性。程控电源既能方便输入和选择预设电压值又具有较高精度和稳定性,而且还可程控实现对电源的可编程监控,如模拟电压跌落、间断或起伏等情况,即可编程电源也可以看作一种功率型的低频信号发生器。目前,以单片机系统为基础而设计制造出来的新一代智能稳压电源不但电路简单、结构紧凑、性能卓越、价格低廉,而且由于单片机具有计算和控制能力,利用它对采样数据进行各种计算,从而可排除和减少干扰信号和模拟电路引起的误差,大大提高稳压电源输出电压和控制电流精度,降低了对模拟电路的要求。 智能稳压电源可利用单片机设置周密的保护监测系统,确保电源运行可靠。输出电压和限定电流采用数字显示,输入采用键盘方式,电源的外表美观,操作使用方便,具有很高的使用价值。
摘 &要 ...1
第一章 & 绪 & 论 1
1.1课题的背景 1
1.2课题的现状与发展前景 3
第二章 直流稳压电源的基本原理 5
2.1 整流电路 5
2.1.1 单相桥式整流电路 6
2.2 滤波电路 7
2.2.1电容滤波电路 7
2.2.2 电感滤波电路 11
2.3 稳压电路 11
2.4部分器件数据计算 12
2.5整体辅助电源供电电路 12
第三章 数控部分的实现 16
3.1单片机部分 16
3.2 D/A转换模块 18
3.2.1 DAC0832引脚功能说明 18
3.2.2 DAC0832连接方式 19
3.2.3 &D/A输出 20
3.3 程序设计 21
第四章 功率运放及整体电路 22
4.1功率运放部分 22
4.2整体电路 23
第五章 电源测试结果及分析 25
5.1电压测试与分析 25
5.1.1测量结果(采用数字万用表进行测试) 25
5.1.2结果分析 25
5.2 性能测试 26
5.2.1基本指标 26
5.2.2纹波指标 26
总 & 结 28
参 考 文 献 28
致 & 谢 30
附 & 录 31
参 考 文 献
本文首先对课题的意义,现状以及发展进行了一些论述;之后又对直流稳压电源原理进行较为详细的陈述,设计了给整个电路提供电源的辅助电路;然后提出了对整体数控部分的思路,即软件流程图,同时对51单片机,以及DAC0832进行了分析,综合各部分特点,确立了电路的连接方法及管脚分配,从而根据这些进行编程工作;提高数控功率的问题最后由功率运放部分完成,设计是一部分,不过之后利用电位器调整也是很重要的一部分,经过较长时间的调试,最终确立了一个比较合理的电路整体。在此之后就是将整体电路多次的测量也改进,作品在不断改进中完成了。虽然作品最后完成了,但是还有许多需要改进的地方,比如:在接入重载时,如何能继续保持稳定而准确的电压输出;还有就是可以加入A/D部分来实现更完整的闭环控制,以及更精确的操控.越是精确、稳定的电源越是完美,也许真正完美的电源是很难做到的,但是可以将它不断改进,在不断吸取经验中的得到提高。
1] 7&04& 康华光 &电子技术基础 & 高等教育出版社&
[2] 7&04& 康华光 &电子技术基础 & 高等教育出版社
[3] 978-7-113-05369-7 何桥 单片机原理及应用 中国铁道出版社
[4] (5&05 串联型直流稳压电源的仿真分析 广西师范学院学报 第21卷第2期
[5] 基于单片机的高品质直流电源 电子产品世界 &2005,1/下半月
[6] 用单片机制作的直流稳压可调电源 & 电子世界 2005年第11期
[7] 单片机应用开发技术-基于Proteus单片机仿真和C语言编程21世纪高等学校规划教材 &瓮嘉民 冯建勤 陶春鸣 中国电力出版社
1] 7&04& 康华光 &电子技术基础 & 高等教育出版社
[2] 7&04& 康华光 &电子技术基础 & 高等教育出版社
[3] 978-7-113-05369-7 何桥 单片机原理及应用 中国铁道出版社
[4] (5&05 串联型直流稳压电源的仿真分析 广西师范学院学报 第21卷第2期
[5] 基于单片机的高品质直流电源 电子产品世界 &2005,1/下半月
[6] 用单片机制作的直流稳压可调电源 & 电子世界 2005年第11期
[7] 单片机应用开发技术-基于Proteus单片机仿真和C语言编程21世纪高等学校规划教材 &瓮嘉民 冯建勤 陶春鸣 中国电力出版社
http://www.bysj360.com/html/4857.html http://www.bylw520.net/html/5168.html
你可能需要的论文
450?fdh:450)" width="100%" src="books.asp?id=4858" >
本站所列设计(论文)资料均属于原创者所有,初衷是为大家参考和学习交流之用,请勿做其他非法用途
本站不接受任何形式的代理.如有侵犯您的权利或有损您的利益,请联系本站,经查实我们会立即进行修正或删除相关内容! 沪ICP备号
客服QQ: E-mail:基于单片机的可调直流电源设计_百度知道
基于单片机的可调直流电源设计
输入为市电220V交流,输出为0-5V程控可调直流电源,可以是采样式的,即输出0V,0.5S后输出1V这样。资料希望详细点,具体点。
有图纸不?这样光程序看了等于没看啊
我有更好的答案
mov p1.7口输出负跳变,#0,i11
,等待按键
jnb p3。其中所选电阻为电压跟随器为LM324三。 &#8226。我们决定应用其原理,b
add a。由DA转换所得的电压作为LM324的参考电压,通过调节反馈电阻来使输出电压与数字显示的电压一致我给你一个0~10可调的吧。我刚做的图貌似出不来了北京交通大学思源0702设计要求及技术指标 数控直流稳压电源 (2)输出电压Vo=±12V:静态误差≤1%FSR,纹波≤10mV。 •
5)电压调整:由“+”;r0加一,并调用st1
cjne r0,#100;A转换及其输出DA转换芯片的输出只能为负,所以经过反向比例放大,r0
,按键扫描时间间隔0、D&#47,st1
ljmp st1i1,在通过电压跟随器为数字电路供电.7
call de1等待芯片接受数据
mov b,其中参数选择有多处错误:输出电压用LED数码管显示,i0
。按加号键加0.1V;r0减一,并调用st1
ljmp st1i11,最低位接电源。然后连接DAC0832的选片线到单片机P3.7口:cjne r0,#200b1: mov r2,#50b2: djnz r2、“-”两键分别控制输出电压步进增减,#10
djnz r1,b1
retend四:二,a2
djnz r7,a3
retde1:mov r1,即共阴极)其中第一个数码管的小数点接电源。六、负反馈可控直流输出采用大功率三极管的共集极组态作为输出,由LM324进行控制;
1)输出电压:0~9.9V步进可调,由P3:mov a,暂时不能获得大功率三极管。我们用一个普通的NPN型三极管来代替、控制部分:查阅网上的数显可控直流稳压电源资料,得到以下电路图:这种方案不仅对变压器要求高,而且使用了7块芯片,连接复杂.1V。 •
2)输出电流。11.059MHz晶体振荡:
mov r1.2秒。完成DA转换后输出BCD码,输入数显部分,由P1口的低7位输出,连接到DAC0832的高8位地址、数字电路供电电源通过正12V直流稳压电源与两个大电阻分压,得到4V参考电压:≤500mA。 •
3)精度,从新设计一套方案。电路图如下:此电路由6部分组成:(1)
正负12V直流稳压输出(2)
数字电路供电电源(3)
单片机控制系统(4)
D/A转换及其输出(5)
数字显示(6)
负反馈可控直流输出一、正负12V直流稳压输出电路图及仿真结果如下:(带1千欧负载)交流信号。 数显。程序原理:设置电压初始值为5.1V,a
ljmp ssde: mov r7,#200a3;输出的函数
clr p3,调整步距0,按减号键减0.1V。程序原码:org 0000hst: mov r0,#33初始电压为参考电压的一半
ljmp st1ss:
djnz r2,a1
djnz r1,最大输出电流Iomax=1A (3)输出纹波电压ΔVop-p≤5mV可控部分:&#8226,调节反馈电阻的值,实现了功能,误差在0.05伏特以内,通过四舍五入,可认为数显电压值就是实际电压值。若与实际有偏差,还可以现场调节反馈电阻,校准数显。改进:(1)为使结构紧凑合理、美观大方,我们准备重新设计电路结构,新的电路板将吸取这次的教训,提高稳定性和健壮性。(2)为提高电源的效率,我们准备使用开关型直流电源,降低对功率的要求,提高对效率的要求。(3)为减少芯片数量,降低成本,降低焊接难度,我们决定使用单片机直接驱动数显,使用动态显示。程序如下:(未进行仿真,准备进行硬件仿真。)org 0000hbcd:mov a,#12BCD转换
ajmp bcddis:mov dptr,#tab
jmp @a+dptrtab:mov a,#b
retde1:mov r1,#200b1: mov r2,#50b2: djnz r2,b2
djnz r1,b1
retend:STC12C4051AD,20引脚DIP封装,与AT89C2051通用,由于三极管选购失误。实际电路中.5,#250a2:
mov r2,#2a1,输出正向控制电压。五、数字显示使用了两块BCD七段数码管驱动芯片,分别驱动两个八段数码管。(使用A型数码管,st1
ljmp ssst1:
djnz r0,实现DAC的数据锁存。由于单片机指令周期过短,小于DAC0832的最小负跳变时间间隔。加入de1延时,使芯片输出正确的模拟电压。单片机、单片机控制系统包括最小系统及各引脚引线
采纳率:42%
首先要用变压器变压,只实现那么简单的功能的话,单片机的选择上就简单了,用PIC单片机控制是最好的了,只要会用PIC单片机,应该就不会有什么问题了
为您推荐:
其他类似问题
您可能关注的内容
可调直流电源的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。毕业设计-基于单片机的可调数显稳压电源设计下载_电子电工_论文_学海网
您现在正在浏览:&>&&>&&>&毕业设计-基于单片机的可调数显稳压电源设计
毕业设计-基于单片机的可调数显稳压电源设计
毕业设计 基于单片机的可调数显稳压电源设计,共83页,21653字
直流稳压电源是提供稳定直流电压的电源装置,电子设备都必须有电源的支持。本文介绍了采用AT89C51单片机为主控制器,利用键盘来设置直流稳压电源的输出电压,并由数码管显示输出电压设定值的可调数显直流稳压电源。本系统由单片机程控设定数字信号经过D/A转换器和稳压模块输出所需的电压,利用 A/D转换器采样实际的输出电压,通过数码管显示出实际的电压。输出电压范围为DC1.5~12V,输出电流最大为1A,输出电压调整步距为0.1V。
本文主要分析了可调数显稳压电源系统的设计需求,阐述了该系统的软硬件设计原则,介绍了各模块电路的功能及设计思路,完成了系统的全部设计,给出了完整的电路图和程序。本文设计的重点是单片机主控系统和D/A,A/D转换电路,设计的难点是宽稳压范围的稳压电路和可靠的过流保护电路。仿真测试结果表明:该系统满足了数显可调、输出稳定性高的电源需求,可以满足科学实验和各种小功率电子设备的电源需求。
可调,数显,稳压,电源
第一章 系统总体设计 2
1.1系统设计任务与要求 2
1.1.1 系统设计任务 2
1.1.2 系统设计要求 2
重点研究内容与实现方法 3
1.2.1 重点研究内容 3
1.2.2 实现途径及方法 3
系统总体方案设计 3
1.3.1 主控模块 4
1.3.2 键盘与显示模块 4
1.3.3 稳压模块 4
1.3.4 存储器扩展模块 5
1.3.5 电源模块 5
1.3.6 系统原理框图 6
系统硬件各功能模块的设计 7
2.1 主控模块的设计 7
AT89C51单片机简介 7
D/A转换电路的设计 8
稳压电路的设计 10
A/D转换电路的设计 10
数据存储器的扩展 12
系统资源分配 13
2.2 人机接口的设计 16
键盘的设计 16
显示电路的设计 17
2.3 看门狗电路 18
2.4 电源供电系统的设计 19
2.5 基准电压的设计 20
2.6 过流保护电路 21
控制软件的设计 23
3.1 主程序的设计 23
3.1.1 读写EEPROM子程序的设计 23
键盘处理子程序 24
D/A转换子程序的设计 24
T0中断服务程序 25
显示子程序 25
3.4 键盘中断服务子程序 25
第四章 系统调试 32
4.1 硬件仿真调试 32
软件的调试 33
数据测试及误差分析 36
4.4 分析讨论 40
参考文献 43
附录1:电路原理框图 44
附录2:源程序 48
附录3:英文原文 70
附录4:中文译文 75
资料文件预览
共1文件夹,1个文件,文件总大小:9.03MB,压缩后大小:3.43MB
毕业设计-基于单片机的可调数显稳压电源设计
基于单片机的可调数显稳压电源设计.doc&&[9.03MB]
[ 下载 ]&&&&&(需要: 92 个学海币)&&&&&
Q: 为什么我下载的文件打不开?
A: 本站所有资源如无特殊说明,解压密码都是www.xuehai.net,如果无法解压,请下载最新的软件。
Q: 我的学海币不多了,如何获取学海币?
A: 上传优质资源可以获取学海币,详细见。
Q: 为什么我下载不了,但学海币却被扣了?
A: 由于下载人数众多,下载服务器做了并发的限制。请稍后再试,48小时内多次下载不会重复扣学海币。
下载本文件意味着您已经同意遵守以下协议
1. 文件的所有权益归上传用户所有。
2. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
3. 学海网仅提供交流平台,并不能对任何下载内容负责。
4. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
5. 本站不保证提供的下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
论文相关下载
电子电工论文下载排行榜
电子电工论文最近更新基于51单片机的开关电源设计
我的图书馆
基于51单片机的开关电源设计
基于51单片机的开关电源设计基于51单片机的开关电源设计设计总说明直流稳压电源是电子技术常用的设备之一,广泛的应用于教学、科研等领域。传统的多功能直流稳压电源功能简单、难控制、可靠性低、干扰大、精度低且体积大、复杂度高。普通直流稳压电源品种很多, 但均存在以下二个问题:(1)输出电压是通过粗调(波段开关) 及细调(电位器)来调节。这样, 当输出电压需要精确输出, 或需要在一个小范围内改变时,困难就较大。另外, 随着使用时间的增加, 波段开关及电位器难免接触不良, 对输出会有影响。(2)稳压方式均是采用串联型稳压电路, 对过载进行限流或截流型保护, 电路构成复杂,稳压精度也不高。在家用电器和其他各类电子设备中,通常都需要电压稳定的直流电源供电。但在实际生活中,都是由220V 的交流电网供电,需要改交流为直流。传统的直流稳压电源通常采用电位器和波段开关来实现电压的调节,并由电压表指示电压值的大小。 因此,电压的调整精度不高,读数欠直观,电位器也易磨损。目前在电力电子器件方面,几乎都为旋纽开关调节电压,调节精度不高,而且经常跳变,使用麻烦。而基于单片机控制的直流稳压电源能较好地解决以上传统稳压电源的不足。电源技术尤其是数控电源技术是一门实践性很强的工程技术,服务于各行各业。电力电子技术是电能的最佳应用技术之一。从组成上,数控电源可分成器件、主电路与控制等三部分。数控技术方面的发展是以51系列单片机为主控单元电路的拓扑和软开关技术等电子技术的完善为主要标志。数字化则应属于控制方面的重要发展方向,随着信息技术的突飞猛进,将对开关电源技术的发展起到巨大推进作用。数控电源目前的发展,主要朝着更高的数控精度和分辨率及更好的动态特性;更好的环保性能;智能化与高可靠性;更广泛的应用等方向发展。本设计利用AT89C51作为主控芯片,控制数模转换模块DAC0832的输出电压大小,通过放大器放大,给电压模块作为最终输出的参考电压,真正的电压电流由电压模块LM350输出。设置三个按键,来实现电压的增减,并带有数码显示模块。用AT24C02实现保存最近10电压功能,当打开电源的时候,它显示和输出的必须是上次使用电压大小。电压编号的大小分别对应到相应地址电压大小。本论文设计制作的数控电源,可以达到每步0.1V的精度,输出电压范围0~15V,电流可以达到2A。关键词:数控电源;步进;AT89C51;DAC08321&&&&&&&& 绪论 1.1&&&&&&&& 数控电源的发展20世纪80年代,出现了一种叫作开关式稳压电源,这种电源是采用功率半导体器件作为开关,通过控制开关的占空比调整输出电压。开关型稳压电路中的调整管工作在开关状态,因而功耗小,电路效率高。开关电源的种类很多,按调整管与负载的连接方式可分为串联和并联型,串连开关稳压电路是降压型电路,并联开关型稳压电路是升压型电路。按稳压的控制方式可分为脉冲宽度调制型(PWM)、脉冲频率调制型(PFM)和混合调制。这其中尤以PWM最为盛行,这种电源在开关和稳压方面功能非常优越,但在电压输出精度方面仍存在缺陷,旋钮式远不能满足工业需求,数控技术的发展给电源的发展注入新的活力,数控逐渐成为一种趋势随着人们生活水平的不断提高,数字化控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数控制直流稳压电源就是一个很好的典型例子,但人们对它的要求也越来越高,要为现代人工作、科研,生活、提供更好的,更方便的设施就需要从数字电子技术入手,一切向数字化,智能化方向发展.本文所介绍的开关电源稳压电源与传统的稳压电源相比,具有操作方便,电压稳定度高的特点。近年来出现了不少的数控电源产品,例如数控三步仿金电镀电源,具有自动稳压功能、稳压度为3%;具有软启动功能,时间0-30秒可调;具有稳压限流功能,稳压状态下输出电流超过正常电流10%,电源会自动进入限流状态;具有高可靠的过流,短路保护功能,输出电流超过额定值的50%时,电源自动封锁输出,同时发出声或光报警。随着数控技术以及可编程器件的发展,出现了一种可编程直流数控电源,其中最典型的就是3645A型数控电源,它是一种能输出电压0~36V,负载工作电流0~3A稳压电源,电压及电流均可任意调节。其主要功能有:电压设定、电流上限设定、电源输出ON/OFF、STORE、RECALL、电压上限、键盘关闭/开启、通讯设定、键盘锁定功能、功率上限设定、保存选项设定等功能,使用时,操作方便,电压、电流、功率均以LCD显示,画面清晰、直观。数控程度已很高,但成本太贵,不利于大批生产。1.2&&&&&&&& 课题的背景和意义随着电子技术的高速发展,电子系统的应用领域越来越广泛,电子设备的种类也越来越多,电子设备与人们的 工作、生活的工资日益密切。任何电子设备都离不开可靠的电源,它们对电源的要求也越来越高。电子设备的小型化和低成本化使用电源以轻、薄、小和高效为发展方向。电源技术尤其是数控电源技术是一门实践性很强的工程技术,服务于各行各业。电力电子技术是电能的最佳应用技术之一。当今电源技术融合了电气、电子、系统集成、控制理论、材料等诸多学科领域。随着计算机和通讯技术发展而来的现代信息技术革命,给电力电子技术提供了广阔的发展前景,同时也给电源提出了更高的要求。随着数控电源在电子装置中的普遍使用,普通电源在工作时产生的误差,会影响整个系统的精确度。电源在使用时会造成很多不良后果,世界各国纷纷对电源产品提出了不同要求并制定了一系列的产品精度标准。只有满足产品标准,才能够进入市场。随着经济全球化的发展,满足国际标准的产品才能获得进出的通行证。数控电源是从80年代才真正的发展起来的,期间系统的电力电子理论开始建立。这些理论为其后来的发展提供了一个良好的基础。在以后的一段时间里,数控电源技术有了长足的发展。但其产品存在数控程度达不到要求、分辨率不高、功率密度比较低、可靠性较差的缺点。因此数控电源主要的发展方向,是针对上述缺点不断加以改善。单片机技术及电压转换模块的出现为精确数控电源的发展提供了有利的条件。新的变换技术和控制理论的不断发展,各种类型专用集成电路、数字信号处理器件的研制应用,到90年代,己出现了数控精度达到0.05V的数控电源,功率密度达到每立方英寸50W的数控电源。从组成上,数控电源可分成器件、主电路与控制等三部分。目前在电力电子器件方面,几乎都为旋纽开关调节电压,调节精度不高,而且经常跳变,使用麻烦。利用数控电源,可以达到每步0.1V的精度,输出电压范围0~15V,电流可以达到2A。数控技术方面的发展是以51系列单片机为主控单元电路的拓扑和软开关技术等电子技术的完善为主要标志。数字化则应属于控制方面的重要发展方向,随着信息技术的突飞猛进,将对开关电源技术的发展起到巨大推进作用。数控电源目前的发展,主要朝着更高的数控精度和分辨率及更好的动态特性;更好的环保性能;智能化与高可靠性;更广泛的应用等方向发展。2&&&&&&&& 需求分析及总体方案的设计与论证 2.1&&&&&&&& 需求分析本设计利用AT89C51作为主控芯片,控制数模转换模块DAC0832的输出电压大小,通过放大器放大后作为最终输出的参考电压,真正的电压电流由电压模块LM350输出。输出电压范围0~15V,电流可以达到2A。按键方式实现0.1V的步进,并带有数码显示模块。2.2&&&&&&&& 总体方案的设计与论证&方案一:是采用各类数字电路来组成键盘控制系统。对一个0-15V的精密可调电源电路进行改造。用D/AC加运放的方法来控制精密可调电路的输出电压调整端,进而达到要实现的效果。电路原理图如图2-1所示。图2-1 方案一原理框图优点:思路简单,调试方便,所用元件较少。缺点:10位的D/AC价格太贵,需做双电源供电(必须为D/AC提供+5V电源),整个方案的成本高。0V输出难。仿真软件无法顺利仿真(早PROTEL的环境下缺少仿真库件),需手工焊接验证方案的可行性。改进方案:用拨动开关加电阻网络的方法将输出电压分为三等份,第一份0-9.9V。第二份10-14.9V,。这样改进之后,只需用到8位的D/AC,且需要8位256级里面的前100级就可以控制输出电压的变化。降低了制作成本,简化了控制方法,提高了控制的精度。结论:在实验的过程中,LM723集成IC的有很大局限性。曾试过再V-端加悬浮-2V电压的方法,试图将输出的最小电压降低为0V。但是考虑到输出电压与之前的元器件的公地问题,实验证明这种方面行不通,输出电压的值为3.2V至12.5V。且在能力的范围内无论如何改进都达不到要求的输出电压值。所以这个方案最终以失败告终,并且本方案电路复杂,灵活性不高,效率低,不利于系统的扩展,对信号处理比较困难。方案二:电路原理框图如图2-2所示,本方案是采用AT89C51芯片作为主控单元。AT89C51是一个低电压,高性能CMOS 8位单片机,片内含4k bytes的可反复擦写的Flash只读程序存储器和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机的AT89C51提供了高性价比的解决方案。采用AT24C02存储器,它通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器件之间传送信息,并根据地址识别每个器件,具有其它存储器没有的优点。&设置三个按键实现电压的步进和电压的预置,把最近设置的电压大小保存在EEROM里面,比如10个电压,按一下翻页键,电压变为下一个,省去了反复设置电压的麻烦。该系统使用3个数码管,通过软件编程的方法,可以显示三位数,一个小数位,比如可以显示12.5V,采用动态扫描驱动方式。图2-2方案二原理框图从整个框图来看,该方案思路非常清晰,就是通过MCU控制DA的输出电压大小,通过放大器放大,给电压模块作为最终输出的参考电压,真正的电压还是由电压模块LM350输出,而电压大小在三位数码管上显示。采用软件方法来解决数据的预置以及电压的步进控制和电压的显示,使系统硬件更加简洁,各类功能易于实现。所以选择本方案。3&&&&&&&& 系统硬件电路设计 3.1&&&&&&&& 主控电路单元AT89C系列单片机是ATMEL公司1983年开始研制生产的,优越的性能价格比使其成为颇受欢迎的单片机。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。AT89C51芯片的封装[6]形式如图3-1所示:图3-1 AT89C51封装图本设计采用AT89C51单片机作为主控单元,其中P0口和DAC0832的数据口直接相连,/DA的/CS和/WR1连接后接P2.0,/WR2和/XEFR接地,让DA工作在单缓冲方式下。还与掉电电路,按键电路,显示电路相连接,实现整体控制。如图3-2所示。图3-2 AT89C51的管脚连接图3.1.1&&&& 振荡器特性XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。又如输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。3.2&&&&&&&& 信号处理部分 3.2.1&&&& D/A转换器(DAC0832)功能介绍[6]DAC0832为电压输入、电流输出的R-2R电阻网络型的8位D/A转换器,DAC0832采用CMOS和薄膜Si-Cr电阻相容工艺制造,温漂低,逻辑电平输入与TTL电平兼容。DAC0832是一个8位乘法型CMOS数模转换器,它可直接与微处理器相连,采用双缓冲寄存器,这样可在输出的同时,采集下一个数字量,以提高转换速度。DAC0832的内部功能框图如图3-2所示,外引线排列如图3-3所示。图3-2& DAC0832的内部功能框图DAC0832的组成:图3-3& DAC0832的外引线排列图DAC0832主要由3部分构成,第一部分是8位D/A转换器,输出为电流形式;第二部分是两个8位数据锁存器构成双缓冲形式:第三部分是控制逻辑。计算机可利用控制逻辑通过数据总线向输入锁存器存数据,因控制逻辑的连接方式不同,可使D/A转换器的数据输入具有双缓冲、单缓冲和直通3种方式。当WR1、WR2、XFER及CS接低电平时,ILE接高电平.即不用写信号控制,使两个寄存器处于开通状态,外部输入数据直通内部8位D/A转换器的数据输入端,这种方式称为直通方式。当WR2、XFER接低电平,使0832中2个寄存器中的一个处于开通状态,只控制一个寄存器,这种工作方式叫单缓冲工作方式。当ILE为高电平,CS和WR1为低电平,8位输入寄存器有效,输入数据存入寄存器。当D/A转换时,WR2、XFER为低电平,LE2使8位D/A寄存器有效,将数据置入D/A寄存器中,进行D/A转换。2个寄存器均处于受控状态,输入数据要经过2个寄存器缓冲控制后才进入D/A转换器。这种工作方式叫双缓冲工作方式。为了将模拟电流转换为模拟电压,需把DAC0832的两个输出端IOUT1和IOUT2分别接到运算放大器的两个输入端,经过一级运放得到单极性输出电压VA1。当需要把输出电压转换为双极性输出时.可由第二级运放对VA1及基准电压VREF反相求和,得到双极性输出电压VA2如图3-4所示,电路为8位数字量D0~D7经D/A转换器转换为双极性电压输出的电路图。图3-4&& D/A转换双极性输出电路图第一级运放的输出电压为:&其中,D为数字量的十进制数.第二级运放的输出电压为:当R1=R2=2R3时,则3.2.2&&&& 高精度运算放大器OP07:OP07引脚图如图3-5所示:图3-5& 放大器OP07引脚图在本次设计中,DA的电压输出端接放大器OP07的输入端,放大器的放大倍数为:&(R9+R10)÷R9=(1K+4K)÷1K=5,输出到电压模块LM350的电压分辨率=0.02V×5=0.1V。所以,当MCU输出数据增加1的时候,最终输出电压增加0.1V,当调节电压的时候,可以以每次0.1V的梯度增加或者降低电压。3.3&&&&&&&& 电压控制电路和参考电压电路LM150系列三端可调正稳压器可以在1.2V至33V输出范围内提供超过3A的电流。该系列稳压器只需两只外接电阻,即可设定输出电压。此外电压调整率和负载调整率都可与分立设计相比较。LM150系列包括内部电流限制、热过载保护和输出晶体管安全区保护功能,即使调节端没有连接,所有保护电路仍保留其功能。通常不需外接电容器,但器件远离电源滤波电容时,则需接入输入滤波电容。调节端可接电容以获得高的纹波抑制比。除取代固定稳压器外,因为LM150系列稳压器是“浮置的”,只要输入输出电压差不超过额定值,同时避免输出短路,就可以稳定数百伏的电源电压。LM150系列的调节端与输出之间接入一只电阻,可做成精密稳流器使用。把调节端钳位置地,输出将被设定在1.2V。用这种方法,可以做成具有电子关闭功能的电源。LM150系列采用标准TO-3和TO-220封装形式。主要性能包括:● 可调输出低至1.2V;● 输出电压容差1%(LM150A、LM350A);● 最大输出电流3A;● 电压调整率为(0.01%)/V(LM150A、LM350A);● 负载调整率为0.3%(LM150A、LM350A);● 86dB纹波抑制● 限流对温度恒定;● 保证热调整率;● 输出短路保护;● 100%电老化。DA的输出电压大小,通过放大器放大,给电压模块作为最终输出的参考电压,真正的电压,电流还是由电压模块LM350输出。为了达到2A的输出电流,LM350必须选用金属外壳封装,并且带稍大面积的散热片。DAC0832的输出的电压经放大器OP07放大了5倍,输出到电压模块LM350的电压分辨率=0.02V×5=0.1V。所以,当MCU输出数据增加1的时候,最终输出电压增加0.1V,当调节电压的时候,可以以每次0.1V的梯度增加或者降低电压。电压控制电路如图3-6图3-6& 电压控制电路图DAC0832的11脚接参考电压,通过调节可调电阻调节LM336的输出电压为5.12V,所以在DAC的8脚输出电压的分辨率为5.12V/256=0.02V,也就是说DA输入数据端每增加1,电压增加0.02V。参考电压电路如图3-7所示:图3-7& 参考电压电路图3.4&&&&&&&& 掉电存储电路 3.4.1&&&& AT24C02性能概述AT24C02是一款常用的可掉电保存数据的ROM,内部含有256个8位字节,先进CMOS技术实质上减少了器件的功耗,24C02有一个16字节页写缓冲器,该器件通过I^C总线接口进行操作,有一个专门的写保护功能。在掉电状态下可保存10年以上。AT24C02系列内存的封装和普通的E2PROM不同,它的引脚端符合ISO/IEC7816-2标准 。图3-8 AT24C02封装及其引脚图和表3-1管脚描述。图3-8 AT24C02封装及其引脚图。表3-1管脚描述管脚名称功能A0、A1、A2器件地址选者SDA串行数据/地址SCL串行时钟WP写保护Vcc+1.8V~6.0V工作电压Vss地图3-8和图3-9分别为AT24C02的连接电路图和运用电路图:&图3-8& 掉电存储电路图图3-9& AT24C02与单片机的连接图图中AT24C02的1、2、3脚是三条地址线,用于确定芯片的硬件地址。在AT89C51试验开发板上它们都接地,第8脚和第4脚分别为正、负电源。第5脚SDA为串行数据输入/输出,数据通过这条双向I2C总线串行传送,在AT89C51试验开发板上和单片机的P3.5连接。第6脚SCL为串行时钟输入线,在AT89C51试验开发板上和单片机的P3.6连接。SDA和SCL都需要和正电源间各接一个5.1K的电阻上拉。第7脚需要接地。3.4.2&&&& 掉电存储电路功能掉电存储电路使用AT24C02。T24C02是美国ATMEL公司的低功耗CMOS串行EEPROM。它通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器件之间传送信息,并根据地址识别每个器件:不管是单片机、存储器、LCD驱动器还是键盘接口。本设计采用24C02主要用于实现保存最近10电压功能,当打开电源的时候,它显示和输出的必须是上次使用电压大小,所以在EEROM中使用11个地址保存数据,第一个地址保存当前电压编号,大小为1~10。第2个地址~第11个地址连续保存10个电压大小数据。电压编号的大小分别对应到相应地址电压大小。3.5&&&&&&&& 按键电路本电路设计三个按键,KEY1为翻页按键,最近设置的电压大小保存在EEROM里面,比如10个电压,按一下KEY1,电压变为下一个,省去了反复设置电压的麻烦,KEY2为电压+,KEY3为电压-,按一下KEY2,当前电压增加0.1V,按一下KEY3,当前电压减小0.1V。按键电路如图3-10所示:图3-10 按键电路图3.6&&&&&&&& 显示电路该系统使用3个数码管,可以显示三位数,一个小数位,比如可以显示12.5V,采用动态扫描驱动方式。显示数据以串行方式从89C51的P12口输出送往移位寄存器74LS164的A、B端,然后将变成的并行数据从输出端Q0~Q7输出,以控制开关管WT1~WT3的集电极,然后再将输出的LED段选码同时送往数码管LED1~LED3。位选码由89C51的P14~P16口输出并经译码器74LS138送往开关管Y1~Y8的基极,以对数码管LED1~LED8进行位选控制,这样,3个数码管便以100ms的时间间隔轮流显示。由于人眼的残留效应,这3个数码管看上去几乎是同时显示。3.6.1&&&&&&&&&& 74LS138的原理介绍[7]74LS138是一种常用的二进制译码器。有3个输入端A0、A1、A2接受二进制编码,输出端Y0~Y7共8条译码输出线。74LS138的管脚排列图如图3-11:图3-11 74LS138管脚排列图表3-2&& 74LS138译码器的真值表输入输出&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&0×11111111×100000000× &&×&& ××&& ×&& ×0&&& 0&&& 00&&& 0&&& 10&&& 1&&& 00&&& 1&&& 11&&& 0&&& 01&&& 0&&& 11&&& 1&&& 01&&& 1&&& 11&&& 1&&& 1&&& 1&&& 1&&& 1&&& 1&&& 11&&& 1&&& 1&&& 1&&& 1&&& 1&&& 1&&& 10&&& 1&&& 1&&& 1&&& 1&&& 1&&& 1&&& 11&&& 0&&& 1&&& 1&&& 1&&& 1&&& 1&&& 11&&& 1&&& 0&&& 1&&& 1&&& 1&&& 1&&& 11&&& 1&&& 1&&& 0&&& 1&&& 1&&& 1&&& 11&&& 1&&& 1&&& 1&&& 0&&& 1&&& 1&&& 11&&& 1&&& 1&&& 1&&& 1&&& 0&&& 1&&& 11&&& 1&&& 1&&& 1&&& 1&&& 1&&& 0&&& 11&&& 1&&& 1&&& 1& &&1&&& 1&&& 1&&& 03.6.2&&&& 74LS164的原理介绍[7]74LS164有两个串行数据DA、DB输入端,使用时一般把它们连在一起;&为清零输入端,低电平有效,当该端加入低电平时,寄存器输出Q0~Q7全为低电平。在正常情况下,清零输入端接高电平,当CP信号上升沿到来时,数据右移一位;Q0~Q7为并行数据输出端,同时Q7端也是串行数据输出端,对于串行输入的数据,最先输入的从Q7输出,最后进入的从Q0输出。CP为移位脉冲。74LS164的管脚排列如图3-12。图3-12 74LS164管脚排列图其功能表见表3-3:表3-3& 74LS164功能表输入输出&&& CP& &D&&& D50&&& ×&& ×& &×1&&& 0&& &×&& ×1&&& ↑ &&1&&& ×1&& &↑ &&×&& 0Q0&& Q1&& Q2&& Q3&& Q4&& Q5&& Q6&& Q70 &&&0&&& 0&&& 0&&& 0&&& 0&&& 0&&& 0Q0&& Q1&& Q2&& Q3&& Q4&& Q5&& Q6&& Q71&& &Q1&& Q2&& Q3&& Q4&& Q5&& Q6&& Q70&& &Q1&& Q2&& Q3&& Q4&& Q5&& Q6&& Q70& &&Q1&& Q2&& Q3&& Q4&& Q5&& Q6&& Q7图3-11所示是其具体显示电路图:图 3-13& 显示电路图4&&&&&&&& 系统软件设计 4.1&&&&&&&& 程序设计思路软件的设计主要完成三方面的功能:1.设置电压并且保存,主要是对EEROM的操作。2.把设置的电压送到DA,主要是对DA的操作。3.中断显示,把设置的电压显示到LED数码管上。该数控电压源实现保存最近10电压功能,当打开电源的时候,它显示和输出的必须是上次使用电压大小,所以在EEROM中使用11个地址保存数据,第一个地址保存当前电压编号,大小为1~10。第2个地址~第11个地址连续保存10个电压大小数据。电压编号的大小分别对应到相应地址电压大小。本程序设计思路是:当电源打开的时候,MCU进行复位,寄存器清零。接着电源应该显示和输出上次关机前的电压大小,这时候MCU先读取EEPROM中保存的电压编号,根据电压编号读出对应电压,把该数据送到DA,在转换成BCD码送到显示部分。这时候程序循环检测是否有按键信号,如果KEY1按下,电压编号指向下一个,保存该电压编号,读对应电压,把他送到DA并且显示。如果KEY2按下,当前电压数据加1,相对应输出电压(POWER—OUT引脚)增加0.1V,保存设置电压数据。如果KEY3按下,电压数据减1,输出电压减少0.1V,保存设置电压数据。4.2&&&&&&&& 主程序流程图该系统的软件编程采用MCS-51系列单片机汇编语言完成,整个程序包括模数转换部分,电压控制程序,显示程序,键盘扫描程序等几个主要模块。具体的程序编码和总电路原理图见附录。图4.1所示是系统流程图和图4-2是显示流程图。&&& &&图4.1 系统总流程图           图4-2& 显示程序流程5&&&&&&&& 调试本设计主要为硬件调试。利用Keil uVision 7.50a集成开发软件对设计的各部分子程序的编译并烧录到AT89S52芯片。根据PCB原理图把硬件焊接成实物,外接一个可以提供+15V、-15V、+5V的电压源,进行硬件调试。6&&&&&&&& 系统使用说明以上设计设计的是数码显示,精密可调的数控电源,采用三位数码显示,具体显示形式如图6.1所示:图6.1 数控电源外观图其中:图中最上面的键为K1----------翻页按键图中中间的键盘为K2----------加0.1V按键图中最下面的键为K3----------减0.1V按键。7&&&&&&&& 结论与展望经过这次毕业设计,使我受益良多。四年的理论知识学习以及应用和实践。了解进行项目设计的步骤和注意问题。以前简单的单任务开发的比较简单,毕业设计能够从理论设计和工程实践相结合、巩固基础知识与培养创新意识相结合、个人作用和集体协作相结合等方面全面的培养学生的全面素质。在设计过程中,前期,我在资料的收集、课题的选择、方案的选定方面做了不少的工作。我还对所学的与设计有关的课程作了系统的复习。经过这次系统的毕业设计,熟悉了对一项课题进行研究、设计和实验的详细过程。在将来的工作和学习当中都会有很大的帮助。并且学会了怎样查阅资料和利用工具书。在设计中有针对性地查找资料,然后加以吸收利用,以提高自己的应用能力,而且还能增长自己见识,学习更多的专业知识。实践能力得到了进一步提高,在设计过程中积累了一些经验。在此处研究的是数控电源的相关方面的设计。该数控电源的工作模式是步进式,以51系列单片机为控制单元,以数模转换器DAC0832输出参考电压,以该参考电压控制电压转换模块LM350的输出电压大小,真正的电压电流由电压模块LM350输出。按键方式实现步进,并带有数码显示模块。该数控电压源经过时间实际使用说明,具有精度高,使用方便,硬件电路简单等特点。相信随着单片机位数的提升,以及数模转换精度的提高,数控的精确度会不断得到提升。数控电源在很大程度上满足了用户的需求。由于本人电子水平有限,电子设计实践经验较少,论文中难免会存在缺点和错漏,恳请各位老师同学批评纠正。谢谢8&&&&&&&& 鸣& 谢在本设计完成之制,我要感谢我的指导xxx老师给予我的指导和帮助,还有我班xxxx等同学,他们在我的设计过程中给予了很多帮助。在此表示衷心的感谢。同时感谢在我四年大学生活中教导我的老师和同学。谢谢答辩组的老师百忙中对我设计的阅览和指导。9&&&&&&&& 参考文献[1] 胡斌.电子线路快速识图[M],2005[2] 曲学基, 王增福, 曲敬铠 .稳定电源电路设计手册[M],2003[3] 周志敏, 周纪海.开关电源实用技术----设计与应用[M],2003[4] 张占松,蔡宣三 .开关电源的原理与设计(修订版).北京:电子工业出版社,2006[5] 周志敏, 周纪海, 纪爱华.开关电源实用电路[M],2006[6] 万福君,潘松峰.单片微机原理系统设计与应用[M]. 合肥:中国科学技术大学出版社,2005[7] 阎石.数字电子技术基础.北京:高等教育出版社[M],2004 [8] 赵学泉,张国华.电源电路[M],1995[9] 文艳,谭鸿.Protel 99 SE 电子电路设计[M].北京:机械工业出版社,2006[10] 段九州.电源电路实用设计手册[M].辽宁:辽宁科学技术出版社.2002[11] 沙占友.单片开关电源最新应用技术] [M],2003[12] [日]户川治郎著;何伟仁译.实用电源电路设计手册[中译文] [M],1990[13] 户川治朗 著,高玉苹等译.实用电源电路设计[中译文] [M]&,2005[14] 车京春、韩晓东.PROTEL DXP印制电路板设计指南[M], 中国铁道出版社 2004[15] 李朝青.单片机原理及接口技术.北京航空航天大学出版社 1999[16] 赵文博,刘文涛.单片机语言C51程序设计编著.人民邮电出版社2005附& 录&2&&&&&& 附总电路图:2&&&&&&& 总程序源代码:ORG 0000HSCL BIT P1.0;定义24C02的串行时钟线SDA BIT P1.1定义24C02的串行数据线LJMP STARTSTART:LCALL STAR;调用MOV R2,#08H;一个数据有8位MOV DPTR,#0600H;定义源数据的位置LOOP:MOV A,#00HMOVC A,@A+DPTRLCALL SDATALCALL ACKJC LOOPINC DPTRDJNZ R2,LOOPLCALL STOP;调用停止子程序STAR:SETB SDASETB SCLNOPNOPNOPNOPCLR SDANOPNOPNOPNOPCLR SCLRETSDATA:MOV R0,#10HLOOP0:RLC AMOV SDA,CNOPNOPSETB SCLNOPNOPNOPNOPCLR SCLDJNZ R0,LOOP0RETACK:SETB SDANOPNOPSETB SCLNOPNOPNOPNOPMOV C,SDACLR SCLRETSTOP:CLR SDANOPNOPNOPNOPSETB SCLNOPNOPNOPNOPSETB SDANOPNOPNOPNOPRETMAIN1:ORG& 0060H&& MOV& R3,#0A0H&& ;(命令1010+器件3位地址+读/写。 器件地址一个芯片,是000)MOV& R4,#00H&& ;& 置片内字节地址MOV&& R1,#71H& ;置欲写数据存放地址指针MOV&& R7,#01H& ;置连续写字节数nEEPR: MOV P1,#0FFHCLR  P1.0;发开始信号  MOV  A,R3;送器件地址ACALL SUBS;调发送单字节子程序MOV A,R4;送片内字节地址ACALL SUBSMOV P1,#0FFHCLR P1.0   再发开始信号MOV A,R3SETB ACC.0  ;发读命令ACALL SUBSMORE: ACALL SUBRMOV @R1,AINC R1DJNZ R7,MORECLR P1.0ACALL DELAYSETB P1.1ACALL DELAYSETB P1.0 ;送停止信号RETSUBR: MOV  R0,#08H ;接受单字节子程序LOOP2: SETB  P1.1ACALL DELAYMOV C,& P1.0RLC ACLR P1.1ACALL DELAYDJNZ R0,LOOP2CJNE R7,#01H,LOWSETB P1.0  ;若是最后一个字节置A=1AJMP SETOKLOW: CLR P1.0  ;否则置A=0SETOK: ACALL DELAYSETB  P1.1ACALL DELAYCLR  P1.1ACALL DELAYSETB P1.0  ;应答毕,SDA置1RETLCALL& DADA:& MOV& A,P0MOV& DPTR,#FEFFHMOV&& @DPTR,ARETMAIN:& ORG&& 001BHLJMP& TINTORG& 0030HLCALL& INIT初始化子程序:INIT:&&& CLR& RS0CLR& RS1MOV& R0,#10H&&&&& MOV&& R1,#00H&&&&& MOV&& P1,#0FFH&&&&& CLR&& TR1MOV& TMOD,#19HMOV& TL1,#19HMOV& TH1,#0FCHSETB& TR1SETB& ET1SET& EARET定时扫描子程序:TIINT:SETB& RS0CLR& EACLR& TR1MOV& A,#1EHADD& A,TL1MOV& TL1,AMOV& A,#0FCHADDC& A,TH1MOV&& TH1,ASETB&& TR1SETB& EATIINT1:CJNE R1,#08H,TINT2MOV& 10H,20HMOV& 11H,21HMOV& 12H,22HMOV& 13H,23HMOV& 14H,24HMOV& 15H,25HMOV& 16H,26HMOV& 17H,27HTIINT2:CJNE& R1,#08。,TIINT3&&&&&&&& MOV&& A,@R0SJMP&& TIINT4TIINT3:MOV& A,@R0ADD& A,#15MOVC& A,@A+PCTIINT4:LCALL SENDLEDINC& R0INC&& R1TIINTE:CLR& RS0DB&&&& 03H,9FH,25H。0DH,99H49H,41H,1FH,01H,09H显示子程序:SENDLED:CLR& P1.3MOV&& R2,#8SLED0:RRC& AJNC&& SLED1SETB& P1.2SJMP&& SLED2SLED1:CLR& P1.2SLED2:CLR& P1.1NOPSETB& P1.1DJNZ& R2,SLED0MOV& A,R1MOV&& C,ACC.0MOV& P1.6 ,CMOV& C,ACC.1MOV& P1.5,CMOV& C,ACC.2MOV& P1.4,CSTTB& P1.3RETMAIN2: ORG 0030HMOV SP,#5FHMOV P2,#0FFHLOOP:ACALL KEY ;调用键盘程序JNB F0,LNEXT ;如果无键按下,则继续LNEXT:AJMP LOOP ;反复循环,主程序到此结ACALL KEYPROC ;否则调用键盘处理程序DELAY:MOV R7,#100D1: MOV R6,#100DJNZ R6,$DJNZ R7,D1RET-------------------延时程序,键盘处理中调用)JB& ACC.1 , key1& ;;1号键按下转JB& ACC.2 , key2& ;2号键按下转JB& ACC.3 , key3& ;3号键按转AJMP KEY_RETKey1:MOV&& @R0,P1&&&&&& MOV& A,@R0&&&&&& ;取当前计时单元数据到A&&&&&&&&&& DEC& R0&&&&&&&&& ;指向前一地址&&&&&&&&&& SWAP& A&&&&&&&&&& ;A中数据高四位与低四位交换&&&&&&&&&& ORL & A,@R0&&&&&& ;前一地址中数据放入A中低位&&&&&&&&&&&&ADD& A,#01H&&&&& ;A加1操作&&&&&&&&&&&&&DA & A&&&&&&&&&& ;十进制调整&&&&&&&&&&&&&MOV&& R3,A&&&&&&& ;移入R3寄存器&&&&&&&&&&&&&ANL & A,#0FH&&&&& ;高四位变0&&&&&&&&&&&&&MOV & @R0,A&&&&&& ;放回前一地址单元&&&&&&&&&&&&&MOV& A,R3&&&&&&& ;取回R3中暂存数据&&&&&&&&&&&&&&INC& R0&&&&&&&&& ;指向当前地址单元&&&&&&&&&&&&&&SWAP& A&&&&&&&&&& ;A中数据高四位与低四位交换&&&&&&&&&&&&&&&ANL & A,#0FH&&&&& ;高四位变0&&&&&&&&&&&&&&MOV& @R0,A&&&&&& ;数据放入当前地址单元中&& MOV&& P1,@R1AJMP KEY_RETKey2:MOV&& @R0,P1&&&&&& MOV& A,@R0&&&&&& ;取当前计时单元数据到A&&&&&&&&&&&&&&&&&& DEC& R0&&&&&&&&& ;指向前一地址&&&&&&&&&&&&&&&&&& SWAP& A&&&&&&&&&& ;A中数据高四位与低四位交换&&&&&&&&&&&&&&&&&& ORL & A,@R0&&&&&& ;前一地址中数据放入A中低四位&&&&&&&&&&&&&&&&&& DEC A,#01H&&&&& ;A加1操作&&&&&&&&&&&&&&&&&& DA & A&&&&&&&&&& ;十进制调整&&&&&&&&&&&&&&&&&& MOV&& R3,A&&&&&&& ;移入R3寄存器&&&&&&&&&&&&&&&&&& ANL & A,#0FH&&&&& ;高四位变0&&&&&&&&&&&&&&&&&& MOV & @R0,A&&&&&& ;放回前一地址单元&&&&&&&&&&&&&&&&&& MOV& A,R3&&&&&&& ;取回R3中暂存数据&&&&&&&&&&&&&&&&&& INC& R0&&&&&&&&& ;指向当前地址单元&&&&&&&&&&&&&&&&&& SWAP& A&&&&&&&&&& ;A中数据高四位与低四位交换&&&&&&&&&&&&&&&&&& ANL & A,#0FH&&&&& ;高四位变0&&&&&&&&&&&&&&&&&& MOV& @R0,A&&&&&& ;数据放入当前地址单元中MOV& P1,@R1AJMP KEY_RETKey3:MOV& A,71HADD&& A& #01HMOV&&& 71H,ALCALL& MAINLCALL&& EEPWLCALL& AGAINLCALL& SUBSLCALL& LOOPLCALL& REPLCALL&& DELAYAJMP KEY_RETKEY_RET: RETKEY:CLR F0 ;清F0,表示无键按下。ORL P2,#B ;将P2口的接有键的四位置1MOV A,P2 ;取P2的值ORL A,#B ;将其余4位置1CPL A ;取反JZ K_RET ;如果为0则一定无键按下ACALL DELAY ;否则延时去键抖ORL P2,#BMOV A,P2ORL A,#BCPL AJZ K_RETMOV B,A ;确实有键按下,将键值存入B中SETB F0 ;设置有键按下的标志K_RET:ORL P2,#B ;此处循环等待键的释放MOV A,P2ORL A,#BCPL AJZ K_RET1 ;直到读取的数据取反后为0说明键释放了,才从键盘处理程序中返回AJMP K_RETRET;写串行E2PROM子程序EEPW; R3=(命令1010+器件3位地址+读/写。 器件地址一个芯片,是000); (R4)=片内字节地址; (R1)=欲写数据存放地址指针; (R7)=连续写字节数nMAIN3: ORG& 0060H&&&&&&& MOV& R3,#0A0H&& ;(命令1010+器件3位地址+读/写。 器件地址一个芯片,是000)MOV& R4,#00H&& ;& 置片内字节地址MOV&& R1,#71H& ;置欲写数据存放地址指针MOV&& R7,#01H& ;置连续写字节数nEEPW: MOV P1,#0FFH  CLR  P1.0  ;发开始信号  MOV  A,R3  ;送器件地址  ACALL  SUBS  MOV  A,R4  ;送片内字节地址  ACALL SUBSAGAIN: MOV A,@R1  ACALL SUBS ;调发送单字节子程序INC   R1  DJNZ  R7,AGAIN;连续写n个字节  CLR    P1.0  ;SDA置0, 准备送停止信号ACALL DELAY ;延时以满足传输速率要求SETB   P1.1  ;发停止信号ACALL DELAYSETB   P1.0RETSUBS: MOV R0,#08H ;发送单字节子程序LOOP: CLR P1.1  RLC  A  MOV  P1.0,CNOPSETB P1.1ACALL DELAYDJNZ R0,LOOP ;循环8次送8个bitCLR  P1.1ACALL DELAYSETB P1.1REP: MOV C,P1.0  JC  REP  ;判应答到否,未到则等待  CLR  P1.1RETDELAY: NOPNOPRETMAIN4:LCALL&& STLCALL& STRTLCALL& LOOP;调用子程序LCALL&& STAR;同上LCALL& SDATA;同上LCALL& ASK;同上LCALL& STOP;同上ST:MOV& A,P0MOV& R0,#10HMOV& R1,#0600HMOV&& @R1,AINC& R1DJNZ& R0& STRETEND
馆藏&128713
TA的推荐TA的最新馆藏[转]&
喜欢该文的人也喜欢

我要回帖

更多关于 可调直流电源 的文章

 

随机推荐