怎么做一个数字电源用51怎样用单片机控制电源

基于51单片机的数字调压直流电源的电路图 要求电源为0-5v_百度知道
基于51单片机的数字调压直流电源的电路图 要求电源为0-5v
,谢谢大神啊啊,,,哪位好心人帮帮偶啊
我有更好的答案
使用LM317和美信公司的数字电位器实现,单片机控制数字电位器
这个请参考,芯片为52的功能和51一样,用的时候你可以替换
为您推荐:
其他类似问题
51单片机的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。我想做个16*16的LED点阵,用51单片机控制,请问是否要外加电压电源已达到亮度,是不是还要加上拉电阻.
我想做个16*16的LED点阵,用51单片机控制,请问是否要外加电压电源已达到亮度,是不是还要加上拉电阻.我还想问下,怎么才能排除在组成的图形中的“鬼影”,就是排除闪烁的暗灯.最好有设计例子.本人最近做了个模拟实验,用51单片机控制8*8led,用P2端的高电平控制行,用P1端的低电平控制列,并且用了锁存器控制行,但就是在做实验时倒数第2行和倒数第3行,不亮.程序如下:#include#include#define unchar unsigned char#define unint unsigned intunchar code tab[]={0xf3,0xf1,0xf3,0xf3,0xf3,0xf3,0xe1,0xe1};//为“1”字模图形unchar code tab1[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//行扫描的数组unint j,k,i;sbit kong=P3^6;//锁存器的控制unchar *p;void delay(unchar t){while(t--);}void main(){kong=0;while(1){ for(j=0;j
单片机采用MSC-51或其兼容系列芯片,采用24MHZ或更高频率晶振,以获得较高的刷新频率,时期显示更稳定.单片机的串口与列驱动器相连,用来显示数据.P1口低4位与行驱动器相连,送出行选信号;P1.5~P1.7口则用来发送控制信号.P0口和P2口空着,在有必要的时候可以扩展系统的ROM和RAM.2列驱动电路列驱动电路有集成电路74HC595构成.它具有一个8位串入并出的移位寄存器和一个8位输出锁存器的结构,而且移位寄存器和输出锁存器的控制是各自独立的,可以实现在显示本行列数据的同时,传送下一行的列数据,既达到重叠处理的目的.74HC595的外形及内部结构如图3所示.它的输入侧有8个串行移位寄存器,每个移位寄存器的输出都连接一个输出锁存器.引脚SI是串行数据的输入端.引脚SCK是移位寄存器的移位时钟脉冲,在其上升沿发生移位,并将SI的下一个数据打入最低位.移位后的各位信号出现在各移位寄存器的输出端,也就是输出锁存器的输入端.RCK是输出锁存器的打入信号,其上升沿将移位寄存器的输出打入输出锁存器.引脚G是输出三态门的开放信号,只有当其为低时锁存器的输出才开放,否则为高组态.SCLR信号是移位寄存器清零输入端,当其为低时移位寄存器的输出全部为零.由于SCK和RCK两个信号是互相独立的,所以能够做到输入串行移位与输出锁存互不干扰.芯片的输出端为QA~QH,最高位QH可作为多片74HC595级联应用时,向上一级的级联输出.但因为QH受输出锁存器的打入控制,所以还从输出锁存器前引出QH,作为与移位寄存器完全同步的级联输出.
QB 1 16 Vcc QC 2 15 QA QD 3 14 SI QE 4 13 G QF 5 12 RCK QG 6 11 SCK QH 7 10 SCLR GND 8 9 QH
图3. 74HC595外形及引脚4.1.3行驱动器单片机P1口低4位输出的行号经4/16线译码器74LS154译码后生成16条行选通信号线,再经过驱动器驱动对应的行线.一条行线上要带动16列的LED进行显示,按每一LED器件20MA电流计算,16个LED同时发光时,需要320MA电流,选通三极管8550作为驱动管可满足要求.4.2.系统程序的设计显示屏软件的主要功能是向屏体提供显示数据,并产生各种控制信号,使屏幕按设计的要求显示.根据软件分层次设计的原理,可以把显示屏的软件系统分为两层;第一层是底层的显示驱动程序,第二层是上层的系统应用程序.显示驱动程序负责向屏体送显示数据,并负责产生行扫描信号和其他控制信号,配合完成LED显示屏的扫描显示工作.显示驱动器程序由定时器T0中断程序实现.系统应用程序完成系统环境设置(初始化)、显示效果处理等工作,由主程序来实现.从有利于实现较复杂的算法(显示效果处理)和有利于程序结构化考虑,显示屏程序适宜采用C语言编写.4.2.1显示驱动程序显示驱动程序在进入中断后首先要对定时器T0重新赋初值,以保证显示屏刷新率的稳定,1/16扫描显示屏的刷新率(帧频)计算公式如下: 刷频率(帧频)=1/16×T0溢出率 =1/16×f/12(65536-t) 其中f位晶振频率,t为定时器T0初值(工作在16位定时器模式).然后显示驱动程序查询当前燃亮的行号,从显示缓存区内读取下一行的显示数据,并通过串口发送给移位寄存器.为消除在切换行显示数据的时候产生拖尾现象,驱动程序先要关闭显示屏,即消隐,等显示数据打入输出锁存器并锁存,然后再输出新的行号,重新打开显示.图4为显示驱动程序(显示屏扫描函数)流程图. 4.2.2系统主程序本文设计的系统软件能使系统在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰.图形或文字显示有静止、移入移出等显示方式.系统主程序开始以后,首先是对系统环境初始化,包括设置串口、定时器、中断和端口;然后以“卷帘出”效果显示图形,停留约3s;接着向上滚动显示“我爱单片机”这5个汉字及一个图形,然后以“卷帘入”效果隐去图形.由于单片机没有停机指令,所以可以设置系统程序不断的循环执行上述显示效果.单元显示屏可以接收来自控制器(主控制电路板)或上一级显示单元模块传输下来的数据信息和命令信息,并可将这些数据信息和命令信息不经任何变化地再传送到下一级显示模块单元中,因此显示板可扩展至更多的显示单元,用于显示更多的显示内容.5性能分析与总结5.1 性能分析LED显示屏硬件电路只要硬件质量可靠,引脚焊接正确,一般无需调试即可 正常工作.软件部分需要调试的主要有显示屏刷新频率及显示效果两部分.显示屏刷新率由定时器T0的溢出率和单片机的晶振频率决定,表5.1给出了实验调试时采用的频率及其对应的定时器T0初值.
表5.1 显示平刷新率与T0初值关系表(24MHz晶振)刷新率 25 50 62.5 75 85 100 120T0初值 0Xec78 0Xf63C 0Xf830 0xF97E 0XFA42 0XFB1E 0xFBEE从理论上来说,24Hz以上的刷新频率就能看到稳定的连续的显示,刷新率越高,显示越稳定,同时刷新频率越高,显示驱动程序占用的CPU时间越多.试验证明,在目测条件下刷新频率40Hz一下的画面看起来闪烁较严重,刷新频率50Hz以上的已基本察觉不出画面的闪烁,刷新频率达到85Hz以上时再增加画面闪烁没有明显的改善.显示效果处理程序的内容及方法非常广泛,其调试过程在此不作具体讨论,读者可以照源程序自行分析.这个方案设计的16x16的点阵LED图文显示屏,电路简单,成本较低,且较容易扩展成更大的显示屏;显示屏各点亮度均匀、充足;显示图形或文字稳定、清晰无串扰;可用静止、移入移出等多种显示方式显示图形或文字.5.2 总结本文设计的一个室内用16x16的点阵LED图文显示屏,能够在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰.图形或文字显示有静止、移入移出等显示方式.本系统具有硬件少,结构简单,容易实现,性能稳定可靠,成本低等特点. 总结本文的研究工作,主要做了下面几点较突出的工作: 一、通过查阅大量的相关资料,详细了解了LED的发光原理和LED显示屏的原理,了解了LED的现状,清楚地了解了LED显示屏与其它显示屏相比较有那些优点,明确了研究目标.二,本文设计的LED显示屏能够实现在目测条件下LED显示屏各点亮度均匀、充足,可显示图形和文字,显示图形和文字应稳定、清晰无串扰.图形或文字显示有静止、移入移出等显示方式.三,文章给出了系统具体的硬件设计方案,硬件结构电路图,软件流程图和具体汇编语言程序设计与调试等方面.四,在这次毕业设计的过程中学会了 Protel 99se 的基本使用,感到Protel 99se 对自动化专业的同学来说是一门很有用的课程.五,通过这次毕业设计,重新复习并进一步学习了MCS-51;熟练掌握了WORD软件的使用.六,存在缺陷:没有考虑抗干扰的问题.
我有更好的回答:
剩余:2000字
与《我想做个16*16的LED点阵,用51单片机控制,请问是否要外加电压电源已达到亮度,是不是还要加上拉电阻.》相关的作业问题
有公式一个LED(12V-3v) /0.02=440欧姆0.02是普通LED的电流.三颗:(12—3.2)÷(0.02×3)=146可以用150欧姆的电阻五颗:(12—3.2)÷(0.02×5)=88可以用100欧姆的电阻电阻可以全部用2W的,如果电流过大需要考虑电阻的功率.至于说并多少个这就要看你的电压的供电能力了.
因为这个管子额定电压是4V,所以你可以用3个管串联成一组,9个管子可以做成三组,把三组再并联起来,直截接在12V上.接个510欧电阻
很欣赏你的想法.不要开关,5个元件2K电阻、光敏电阻、 100或150欧电阻、自闪发光二极管颜色自选、9014三极管.
不知道你要怎样连接这些LED呀,如果是直接都串联连接,恐怕不会亮!如果是分两路并联,每路由19个串联,则要分别串入150欧姆电阻
可以用自闪的七彩LED,也可以直接接电源,你应说出你的具体计划,才能给你提供具体帮助.
你搜索555触摸开关就可以找到了.
我现在大一,初中到现在我都很喜欢厨师,但是家里说一个女孩子没出息,我一个同学也是这样,学都不想上了,我以前学音乐的,我现在学的是会计,我的妈啊,我一点都不会,数学什么的最坑爹了,你现在才初中想的肯定和我不太一样,因为我以前也是不想上学,被父母臭骂啊.我倒是不同意大学生没前途怎么样,现在的社会啊,一个初中生和一个大学生的
流量看你单个摇臂喷头流量以及数量.两者相乘,摇臂喷头一般要求工作压力是3公斤左右.管道太长的话扬程要大点.45 50米扬程.然后按照这个流量扬程规格选水泵.
1.广告媒体业注重复合型人才 2.制药业人才难觅3.物流业急需三类人才 物流规划咨询人才、物流外向型国际人才和物流科研人才是目前物流业急需的人才.4.汽车行业高级人才备受关注 汽车和房地产行业依旧炙手可热.汽车行业不仅关注应届毕业生,更需要各种高级人才,包括研发、生产、销售、质量控制等各个环节的人才.而目前国内汽车企业
模拟串口方式0:#include"reg52.h"#define uint unsigned int #define uchar unsigned charsbit P3_2=P3^2; //模拟接受sbit P3_3=P3^3; //模拟发送uchar code smg[11]={0x03,0x9f,0x25,0x0
北京艺丰玻璃隔断公司不错,我们公司的玻璃隔断墙就是北京艺丰玻璃隔断公司做的,当时我们选择了三家北京隔断公司对比,最后选择和北京艺丰玻璃隔断公司签订了隔断装修合同,质量做的果然不错,隔音效果也好,美观实用,服务很专业,价格也合理,顶一下
吲哚丁酸钾主要作用是促主根的,由叶片种子等部位传到进入植物体,并集中在生长点部位,促进细胞分裂,诱导形成不定根,表现为根多,根直,根粗,根毛多.易溶于水,活性比吲哚乙酸高,在强光下会缓慢分解,在遮光条件下储存苗林扦插一般都是用吲哚丁酸钾和萘乙酸钠复配效果比较好,楼主可以去试用一下,有需要了解的可拨我用户名!
够了,12V 1A的输入是12W,两个5W是10W.输入大于负载即可. 再问: 但是发热量太大 好烫 碰都不敢碰 12V 1A的电源点了两个月 烧了 再答: 热不是因为电源不够的问题,而是目前LED的电光转换效率只有20%~30%,也就是说有70%~80%的电能转化成热能。所以LED产品对散热的设计要求很高。 有一个经
你的的设计存在致命问题,单片机死机是无法避免的,如果单片机死机你的DAC输出电压将存在不确定性.LM的芯片最低输出电压有限制,你还不如用场效应管直接来做,性能与电路都有优势.你可以去东明电子看看他们的成品,很成熟.其实你的电源我感觉就是一想法而已,使用起来没有优势,网上做数字电源的人多了,最成熟的方案不是你讲的这样子的
从您说的结构上看,电机结构为U型槽电机,这种电机的出力本来就不大,主要特点在于高加速和高精度.如想增加推力可以增大轴向长度试试.
本人空间具有555时基电路的振荡器.只要改变脉宽可以得到一个周期内任意变化开关时间比例.只要改变定时电容的数字就可以驱动一个两刀两置的继电器,就好了.
《中国学生趣味实验365》《游戏中的科学》《有趣的科学实验:日用化学·热和能的奥妙》
你需要一个基准电压,把这个基准电压接在一个分压电阻和这个热敏电阻串联的电路上,然后用一个运放做一个电压跟随器测量热敏电阻上的电压.送到0809,然后用51单片机实时读取模拟信号,在51单片机内要提前按照热敏电阻的温度与电阻阻值变化对照参数表做成固定的数据,方便单片机读取到模拟信号计算热敏电阻阻值后查找当前温度.有了温度基于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
馆藏&128453
TA的推荐TA的最新馆藏[转]&[转]&[转]&[转]&[转]&[转]&[转]&
喜欢该文的人也喜欢}

我要回帖

更多关于 怎样用单片机控制电源 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信