采用AT89C2051的数字可调稳压电源单片机源程序

发布者:心若清泉最新更新时间:2016-01-07 来源: eefocus关键字:AT89C2051  数字可调  稳压电源  单片机 手机看文章 扫描二维码
随时随地手机看文章
ORG 0000H ;定位
LJMP MAIN ;跳转到MAIN主程序
;
ORG 0003H ;定位
LJMP IT_0 ;转入INT0的中断服务程序
;
ORG 000BH ;定位
LJMP IT_1 ;转入INT0的中断服务程序
;
ORG 0100H ;定位
MAIN: MOV R6,#32H ;将50送R6
ANL P3,#4FH ;将P3.4、P3.5、P3.7置为0,使输出电压为0.0V
MOV P1,#0FFH ;将0FFH送P1
SETB P3.0 ;将P3.0置1
CLR P3.1 ;将P3.1置0
MOV R2,#0CH ;将0CH送R2
LCALL DELAY ;调用DELAY延时子程序
SETB P3.1 ;将P3.1置1
CLR P3.0 ;将P3.0置0
MOV R2,#0CH ;将0CH送R2
LCALL DELAY ;调用DELAY延时子程序
DJNZ R6,MAIN ;若R6-1不等于0,跳转到MAIN
MOV P1,#00H ;将00H送P1
MOV R2,#25H ;延时1S
LCALL DELAY ;调用DELAY延时子程序
SETB EX0 ;开INT0中断
SETB EX1 ;INT1中断
SETB EA ;开CPU中断
SETB IT0 ;将INT0设为负边沿触发
SETB IT1 ;将INT0设为负边沿触发
MOV R7,#00H ;将00H送R7
LOOP: MOV A,R7 ;将R7值送A
MOV DPTR,#TABLE0 ;将TABLE0地址送DPTR
MOVC A,@A+DPTR ;查表,将查到的值送A
ANL P3,A ;将A值与P3值相与,结果送P3
MOV DPTR,#TABLE1 ;将TABLE1地址送DPTR
MOVC A,@A+DPTR ;查表,将查到的值送A
ORL P3,A ;将A值与P3值相或,结果送P3
MOV DPTR,#TABLE2 ;将TABLE2地址送DPTR
MOVC A,@A+DPTR ;查表,将查到的值送A
MOV P1,A ;将A值送P1
SETB P3.0 ;将P3.0置1
CLR P3.1 ;将P3.1置0
MOV R2,#0CH ;将0CH送R2
LCALL DELAY ;调用DELAY延时子程序
MOV DPTR,#TABLE3 ;将TABLE3地址送DPTR
MOVC A,@A+DPTR ;查表,将查到的值送A
MOV P1,A ;将A值送P1
SETB P3.1 ;将P3.1置1
CLR P3.0 ;将P3.0置0
MOV R2,#0CH ;将0CH送R2
LCALL DELAY ;调用DELAY延时子程序
SJMP LOOP ;跳转到LOOP循环
;
ORG 0200H ;定位
IT_0: MOV R2,#14H ;将14H置送R2
LCALL DELAY ;调用DELAY延时子程序(延时约为57ms)
JB P3.2,EXIT0 ;若INT0(P3.2)为1,说明为干扰信号,退出
INC R7 ;若INT0(P3.2)为0,将R7加1
CJNE R7,#07H,EXIT0 ;当R7值不为7时,跳转到EXIT0
MOV R7,#00H ;当R7值为7时,令R7等于0
EXIT0: RETI ;INT0中断返回
;
IT_1: MOV R2,#14H ;将14H置送R2
LCALL DELAY ;调用DELAY延时子程序(延时约为57ms)
JB P3.3,EXIT1 ;若INT1(P3.3)为1,说明为干扰信号,退出
DEC R7 ;若INT0(P3.3)为0,将R7减1
CJNE R7,#0FFH,EXIT1 ;当R7值不为0FFH时,跳转到EXIT1
MOV R7,#06H ;当R7值为0FFH时,令R7等于6
EXIT1: RETI ;INT1中断返回
;
TABLE0:DB 4FH,4FH,4FH,4FH,4FH,4FH,4FH,4FH ;控制信号
TABLE1:DB 00H,10H,20H,30H,80H,90H,0A0H,0B0H ;控制信号
TABLE2:DB 0CFH,0E6H,0EDH,0FDH,0EFH,03H ;第一数码管位显示信号
TABLE3:DB 3FH,6DH,3FH,3FH,3FH,5BH ;第二数码管位显示信号

;以下为通用延时子程序
;当R2=0CH时,延时约为10ms;当R2=14H时,延时约为57ms
DELAY:PUSH 02H ;将R2中的值推入堆笺
LP1: PUSH 02H ;将R2中的值推入堆笺
LP2: PUSH 02H ;将R2中的值推入堆笺
LP3: DJNZ R2,LP3 ;若R2-1不为0,跳转到LP3
POP 02H ;将堆笺中值弹出到R2中
DJNZ R2,LP2 ;若R2-1不为0,跳转到LP2
POP 02H ;将堆笺中值弹出到R2中
DJNZ R2,LP1 ;若R2-1不为0,跳转到LP1
POP 02H ;将堆笺中值弹出到R2中
DJNZ R2,DELAY ;若R2-1不为0,跳转到DELAY
RET ;子程序返回
END ;结束
主程序MAIN中,从MOV P1,#0FFH到SETB EX0的前一行,其作用是刚开机时,让数码管显示全笔段,然后熄灭,以便于检查数码管的好坏,并做好准备。在初始化程序中,令IT0和IT1为1,是让INT0和INT1变为负边沿触发,以达到每按一次S1或S2(无论时间长短,当然时间必须超过57ms),输出电压和数码管改变一次。在LOOP循环中,先对P3相与后相或的目的是要将P3.4,P3.5,P3.7先清零后置位,相当于这一段代码就是一个简单的与或逻辑电路,具体操作情况读者可参照电路图自行分析。另外,主程序中的R7用于存放预设电压的序号,其值在0~6之间变化,每一个值对应一个电压值,依次为0—0.0V,1—3.0V,2—4.5V,3—5.0V,4—6.0V,5—9.0V,6—12V的电压。由于经常用的都是这些电压,所以上面几个电压对电子制作者来说已经足够了。TABLE0中存放控制信号,TABLE1中存放第一个数码管的字显示信号,TABLE2中存放第二个数码管的字显示信号。当按S1时,输出电压就按照上述电压依次增加;当按S2时,输出电压就依次减少。若此时电压为0.0V,再按S2就会使输出电压变为12V;反之,若此时电压为12V,再按S1就会使输出电压变为0.0V。
关键字:AT89C2051  数字可调  稳压电源  单片机 引用地址:采用AT89C2051的数字可调稳压电源单片机源程序

上一篇:51单片机开发主要方法
下一篇:51单片机的FIFO(先入先出)循环队列实现

推荐阅读最新更新时间:2024-03-16 14:42

车规级MCU市场三足鼎立,国产率不足10%
近年来,不少中国厂商已从与安全性能相关性不大的中低端车规MCU切入。 前言:ICInsights预测从2021年到2026年,全球MCU市场规模的复合增长率约为6.7%,在2026年达到272亿美元。 随着汽车智能化趋势推进,汽车功能增加与电子架构的集成化推动单车MCU价值量的提升,促使汽车从分布式架构向集成化域架构的转变,将进一步促进车用MCU的需求增长。 MCU市场三足鼎立,国产率不足10% 根据Yole最新对全球MCU市场的数据分析:在整个MCU市场中,2022年排名前十的玩家分别是英飞凌、瑞萨、恩智浦、意法半导体、Microchip、德州仪器、三星电子、新唐科技、SiliconLabs和华大半导体。 前十大MC
[嵌入式]
车规级<font color='red'>MCU</font>市场三足鼎立,国产率不足10%
基于单片机的电动自行车快速充电器设计
  一、引言   电动自行车由于具有无污染无噪音、轻便美观等特点,受到众多使用者的青睐。但在使用中也暴露出它的局限性,如有半路电池耗尽,且随着使用时间的递增,电池使用寿命会逐渐缩短。本文旨在研究开发一个根据电池饱和的程度智能改变充电模式,并可在较短时间(四小时)内将电池充好的电动自行车快速充电器(电池规格36V、12A)。   二、脉冲快速充电法   脉冲充电方式即脉冲电流间歇对电池充电,充电脉冲使蓄电池充满电量,而间歇期使蓄电池经化学反应产生的氧气和氢气有时间重新化合而被吸收掉,消除极化从而减轻了蓄电池的内压,使下一脉冲的恒流充 电能 够顺利地进行,使蓄电池可以吸收更多的电量。间歇脉冲使蓄电池有较充分的反应时间,减少
[电源管理]
基于<font color='red'>单片机</font>的电动自行车快速充电器设计
51系列单片机的RETI指令分析
  最近在基于51单片机编程的过程中出现了个很奇怪的问题“程序执行中在寄存器EA=1,ET0=1,TR0=1条件下,单TF0=1时并没有执行中断”。在有过单片机中断编程经历者都知道当EA=1,ET0=1的条件下,满足TF0=1时,如果在此期间没有更高优先级的中断执行的情况下定时器中断0必定会产生中断响应。而在我所编写的程序中仅使用了定时器中断0,一个中断也就谈不上存在优先级问题。经过我对自己程序的检查并对各教材中断程序对比发现我的程序中的一个问题:由于中断的不可控性决定其跳出中断返回主程序的不确定,而由于程序需要中断跳出后能跳到指定的地址。为了解决这个问题我在中断结束的地方直接用了无条件跳转指令“LJMP ADR16”其中ADR1
[单片机]
锂离子电池智能充电器硬件的设计
  锂离子电池具有较高的能量重量和能量体积比,无记忆效应,可重复充电次数多,使用寿命长,价格也越来越低。一个良好的充电器可使电池具有较长的寿命。利用C8051F310单片机设计的智能充电器,具有较高的测量精度,可很好的控制充电电流的大小,适时的调整,并可根据充电的状态判断充电的时间,及时终止充电,以避免电池的过充。   本文讨论使用C8051F310器件设计锂离子电池充电器的。利用PWM脉宽调制产生可用软件控制的充电电源,以适应不同阶段的充电电流的要求。温度传感器对电池温度进行监测,并通过AD转换和相关计算检测电池充电电压和电流,以判断电池到达哪个阶段。使电池具有更长的使用寿命,更有效的充电方法。    设计过程   1 充电
[电源管理]
51单片机学前基础知识
一.单片机的概念: 在一片集成电路芯片上集成微处理器、存储器、I/O接口电路,从而构成了单芯片微型计算机,即单片机。 二.单片机的用途: 工业自动化:数据采集,测控技术; 智能仪器仪表:数字示波器、数字信号源、数字万用表、感应电流表等; 消费类电子产品:洗衣机、电冰箱、空调机、手机等; 凡是与控制或简单计算有关的电子设备都可以用单片机来实现,再根据具体实际情况选择不同性能的单片机,如:atmel,stc,pic,avr,凌阳,80C51,arm等。 三.怎么学单片机: 实践第一;补充必要的理论知识,即缺什么补什么;做工程项目积累经验。(可在网络上搜索些题目,也可自己有什么想法大胆的去试验。)。
[单片机]
ESP8266+51单片机WIFI控制多路遥控开关程序设计
这是一个基于单片机WIFI多路遥控开关设计,里面有文档,程序,图片等资料 制作出来的实物图如下: 电路原理图如下: Wifi开关元件清单 1) 9*15万用板 2) STC89C52单片机 3) 40脚IC座 4) 11.0592MHz晶振 5) 30pF瓷片电容*2 6) 10uF电解电容 7) ESP8266模块 8) 2*4P排母 9) 2P排母*2 10) 3.3V稳压模块 11) 2P接线端子*3 12) 继电器*3 13) 3MM LED灯*3(红、绿、蓝) 14) 8550三极管*3 15) 按键 16) 1k电阻*6 17) 10k电阻 18) 自锁开关 19) DC电
[单片机]
ESP8266+51<font color='red'>单片机</font>WIFI控制多路遥控开关程序设计
基于51单片机设计的电话遥控器
前言 进十年来,中国的固定电话业务呈现出举世瞩目的快速增长。1997年8月局用电话交换机总容量突破1亿门,网络规模跃居世界第二位,1999年7月固定电话用户总数突破1亿户。 现代电话网络是由交换机和电话传输线共同组成,它的性能已经有了很大的进展,而且可靠性非常高。 遥控技术是通过一定的手段对被控物体实施一定距离的控制,常用的方式有无线电遥控、有线遥控、红外线和超声波遥控等。无线电遥控既是利用无线电信号对被控物体实施远距离控制。无线电遥控不可避免的须占用一定的无线电频率资源,造成电磁污染;常规的有线遥控需进行专门的布线,增加了投入;而红外线、超声波遥控则受距离所限。现有的遥控方式中,还有载波通信控制手段和基于无线寻呼的遥
[单片机]
51单片机输出3路PWM,驱动RGB LED源程序
用单片机中断处理PWM,控制普通三色LED,输出七种不同颜色,呼吸变化。不占用程序运行时间。 单片机源程序如下: } else //白色由亮变暗 { time-=t; G_OUT=time; B_OUT=time; R_OUT=time; if(time =MIN
[单片机]
51<font color='red'>单片机</font>输出3路PWM,驱动RGB LED源程序
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved