版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目五模/数转换接口及应用
任务1数字电压表的设计
任务2简易数控电源任务1数字电压表的设计
知识目标:了解和掌握单片机的外围基本芯片的搭接,掌握转换模块、数据处理模块及显示模块。
能力目标:A/D转换采用ADC0808对输入的模拟信号进行转换,控制核心AT89C51再对转换的结果进行运算处理,最后驱动输出装置LED显示数字电压信号。
1.任务要求
(1)以MCS-51系列单片机为核心器件,组成一个简单的直流数字电压表。
(2)采用一路模拟量输入,能够测量0~5V之间的直流电压值。
(3)电压显示用4位一体的LED数码管显示,至少能够显示两位小数。
(4)尽量使用较少的元器件。
2.硬件电路的设计与制作
1)设计方案
硬件电路设计由6个部分组成:A/D转换电路、AT89C51单片机、LED显示系统、时钟电路、复位电路以及测量电压输入电路。硬件电路设计框图如图5-1所示。图5-1数字电压表系统硬件设计框图复位电路设计:单片机在启动运行时都需要复位,使CPU和系统中的其他部件都处于一个确定的初始状态,并从这个状态开始工作。MCS-51单片机有一个复位引脚RST,采用施密特触发输入。当振荡器起振后,只要该引脚上出现2个机器周期以上的高电平即可确保使器件复位。复位完成后,如果RST端继续保持高电平,MCS-51就一直处于复位状态,只有RST恢复低电平后,单片机才能进入其他工作状态。单片机的复位方式有上电自动复位和手动复位两种,图5-2是51系列单片机系统常用的上电复位和手动复位组合电路,只要Vcc上升时间不超过1ms,它们都能很好的工作。时钟电路设计:电路中的器件选择可以通过计算和实验确定,也可以参考一些典型电路的参数。如图5-3所示时钟电路中,电容器C1和C2对振荡频率有微调作用,通常的取值范围是30pF ± 10pF,在这个系统中选择了33pF;石英晶振选择范围最高可选24MHz,它决定了单片机电路产生的时钟信号振荡频率,在本系统中选择的是12MHz,因而时钟信号的振荡频率为12MHz。图5-2复位电路图5-3时钟电路
2)硬件电路的总体设计
数字电压表硬件电路总体设计如图5-4所示。此电路的工作原理是:+5V模拟电压信号通过变阻器VR1分压后,由ADC0808的IN0通道进入(由于使用的IN0通道,所以ADDA、ADDB、ADDC均接低电平);经过模/数转换后,产生相应的数字量经过其输出通道D0~D7传送给AT89C51芯片的P1口,AT89C51负责把接收到的数字量经过数据处理,产生正确的7段数码管的显示段码传送给四位LED,同时它还通过其四位I/O口P2.0、P2.1、P2.2、P2.3产生位选信号控制数码管的亮灭。此外,AT89C51还控制ADC0808的工作。其中,单片机AT89C51通过定时器中断从P2.4输出方波接到ADC0808的CLOCK,P2.6发正脉冲启动A/D转换,P2.5检测A/D转换是否完成,转换完成后,P2.7置高,从P1口读取转换结果送给LED显示出来。图5-4硬件电路总体设计简易数字直流电压表的硬件电路已经设计完成,就可以选取相应的芯片和元器件,利用Proteus软件绘制出硬件的原理,并仔细地检查修改,直至形成完善的硬件原理图。但要真正实现电路对电压的测量和显示的功能,还需要有相应的软件配合,才能达到设计要求。
3.应用程序设计
根据模块的划分原则,将该程序划分为初始化模块、A/D转换子程序和显示子程序,这三个程序模块构成了整个系统软件的主程序,如图5-5所示。图5-5数字式直流电压表主程序框图
1)初始化程序
所谓初始化,是对将要用到的MCS-51系列单片机内部部件或扩展芯片进行初始工作状态设定,初始化子程序的主要工作是设置定时器的工作模式、初值预置、开中断和打开定时器等。
2) A/D转换子程序
A/D转换子程序用来控制对输入的模块电压信号的采集测量,并将对应的数值存入相应的内存单元,其转换流程图如图5-6所示。图5-6A/D转换流程图
3)显示子程序
显示子程序采用动态扫描实现四位数码管的数值显示,在采用动态扫描显示方式时,要使得LED显示的比较均匀,又有足够的亮度,需要设置适当的扫描频率,当扫描频率在70Hz左右时,能够产生比较好的显示效果,一般可以采用间隔10ms对LED进行动态扫描一次,每一位LED的显示时间为1ms。
在本设计中,为了简化硬件设计,主要采用软件定时的方式,即用定时器0溢出中断功能实现11μs定时,通过软件延时程序来实现5ms的延时。
4.系统调试
软件调试的主要任务是排查错误,错误主要包括逻辑和功能错误,这些错误有些是显性的,而有些是隐性的,可以通过仿真开发系统发现并逐步改正。Proteus软件可以对基于微控制器的设计连同所有的周围电子器件一起仿真,用户甚至可以实时采用诸如LED/LCD、键盘、RS232终端等动态外设模型来对设计进行交互仿真。Proteus支持的微处理芯片包括8051系列、AVR系列、PIC系列、HC11系列及Z80系列等。Proteus可以完成单片机系统原理图电路绘制、PCB设计,更为显著的特点是可以与μVisions3IDE工具软件结合进行编程仿真调试[8]。本系统的调试主要以软件为主,其中,系统电路图的绘制和仿真采用的是Proteus软件,而程序方面,采用的是汇编语言,用Keil软件产生、Hex文件并通过烧录软件将程序写入单片机。
1)显示结果分析
(1)当IN0口输入电压值为0V时,显示结果如图5-7所示,测量误差为0V。
(2)当IN0输入电压值为1.50V时,显示结果如图5-8所示,测量误差为0.01V。
(3)当IN0口输入电压值为3.50V时,显示结果如图5-9所示,测量误差为0V。图5-7输入电压为0V时LED的显示结果图5-8输入电压为1.50V时LED的显示结果图5-9输入电压为3.50V时LED的显示结果
2)误差分析
通过以上仿真测量结果可得到简易数字电压表与“标准”数字电压表对比测试表,如表5-1所示。
由于单片机AT89C51为8位处理器,当输入电压为5.00V时,ADC0808输出数据值为255(FFH),因此单片机最高的数值分辨率为0.0196V(5/255)。这就决定了电压表的最高分辨率只能到0.0196V,从上表可看出,测试电压一般以0.01V的幅度变化。表5-1简易数字电压表与“标准”数字电压表对比测试表
从表5-1可以看出,简易数字电压表测得的值基本上比标准电压值偏大0~0.01V,这可以通过校正ADC0808的基准电压来解决。因为该电压表设计时直接用5V的供电电源作为电压,所以电压可能有偏差。当要测量大于5V的电压时,可在输入口使用分压电阻,而程序中只要将计算程序的除数进行调整就可以了。
程序清单:
ORG 0000H
SJMP MAIN
ORG 0003H
LJMP PINT0
MAIN: MOV 50H,#19H
MOV 54H,#78H
MOV DPTR,#7FF8H
MOV 51H,DPH
MOV 52H,DPL
MOV R0,#04H
MOV 53H,#00H
MOV R7,#00H
SETB EA
SETB IT0
SETB EX0
L4: MOV R1,#00H;R1存放十六进制转换成十进制后的低两位
MOV R2,#00H;R2存放十六进制转换成十进制后的高两位
MOV R3,#0FFH ;循环显示十进制数
MOV R4,#00H ;存放A/D转换后的十六进制数
MOV R5,#00H ;存放0.5相加后的数
MOVX @DPTR,A ;开始A/D转换
LCALL DELAY ;调用延时大于A/D转换的时间
MOVX A,@DPTR ;取A/D转换后的十六进制数
INC DPTR ;A/D转换芯片的地址加一
PUSH DPL ;压入堆栈
PUSH DPH
DEC R0 ;4路转换的次数减一
JZ SB2 ;判断是否是0V
MOV R4,A
L1: MOV A,R1;进行十六进制到十进制的调整
ADD A,50H ;每次加19
DA A
MOV R1,A
JC L2 ;如果溢出则跳转到L2
MOV A,R5 ;进行0.5V相加
ADD A,54H
DAA
MOV R5,A
JC L3;如果溢出则跳转到L3
SB1: DJNZ R4,L1;判断十六进制数是否转换完成,如果没有则循环
MOV A,R5
SWAP A
ANL A,#0FH
MOV B,R1
ADD A,B
DA A
MOV R1,A
SB2: LCALL DISP
LCALL DJW
DJNZ R3,SB2
POP DPH
POP DPL
MOV A,53H
INC A
MOV 53H,A
CJNE R0,#00H,L4
LJMP MAIN
L2:CLR C
MOV A,R2
ADD A,#01H
DAA
MOV R2,A
LJMP SB1
L3:CLR C ;0.5V相加溢出后进位
MOV A,R1
ADD A,#01H
DA A
MOV R1,A
LJMP SB1
DISP: MOV A,R1 ;显示电压子程序
SWAP A
ANL A,#0FH
MOV DPTR,#TAB1
MOVC A,@A+DPTR
CLR P3.0
MOV P1,A
LCALL DELAY
SETB P3.0
MOV A,R2
ANL A,#0FH
MOV DPTR,#TAB1
MOVC A,@A+DPTR
CLR P3.1
MOV P1,A
LCALL DELAY
SETB P3.1
MOV A,R2
SWAP A
ANL A,#0FH
MOV DPTR,#TAB2
MOVC A,@A+DPTR
CLR P3.4
MOV P1,A
LCALL DELAY
SETB P3.4
RET
DJW: MOV A,53H ;显示第几路转换电压子程序
MOV DPTR,#TAB1
MOVC A,@A+DPTR
CLR P3.5
MOV P1,A
LCALL DELAY
SETB P3.5
RET
INTV: PUSH ACC ;只显示其中一路中断
PUSH 53H
MOV 53H,#00H
CX2: MOV R1,#00H
MOV R2,#00H
MOV R3,#0FFH
MOV R4,#00H
MOV DPH,51H
MOV DPL,52H
MOVX @DPTR,A
LCALL DELAY
MOVX A,@DPTR
MOV R4,A
JZ SB22
L11: MOV A,R1
ADD A,50H
DA A
MOV R1,A
JC L22
MOV A,R5;进行0.5V相加
ADD A,54H
DA A
MOV R5,A
JC L33
SB11: DJNZ R4,L11
MOV A,R5
SWAP A
ANL A,#0FH
MOV B,R1
ADD A,B
DA A
MOV R1,A
SB22: LCALL DISP
LCALL DJW
JNB P3.3,EXIT
DJNZ R3,SB22
JNB P3.2,CX1
LJMP CX2
L22: CLR C
MOV A,R2
ADD A,#01H
DA A
MOV R2,A
LJMP SB11
L33: CLR C
MOV A,R1
ADD A,#01H
DA A
MOV R1,A
LJMP SB11
CX1: INC R7
MOV A,53H
INC A
MOV 53H,A
MOV DPH,51H
MOV DPL,52H
INC DPTR
MOV 51H,DPH
MOV 52H,DPL
CJNE R7,#04H,CX2
MOV R7,#00H
MOV 53H,#01H
MOV DPTR,#7FF8H
MOV 51H,DPH
MOV 52H,DPL
LJMP CX2
EXIT: POP 53H
POP ACC
RETI
DELAY: MOV R6,#1H ;延时子程序
D1: MOV R5,#50H
D2: NOP
NOP
DJNZ R5,D2
DJNZ R6,D1
RET
TAB1: DB3FH,06H,5BH,4FH,66H ;码表
DB6DH,7DH,07H,7FH,6FH
TAB2: DB0BFH,86H,0DBH,0CFH,0E6H;小数点的段码表
DB0EDH,0FDH,87H,0FFH,0EFH
END
5.知识链接(本任务涉及到的新知识介绍)
1)
ADC0808的引脚及功能介绍
(1)芯片概述:ADC0808是一种典型的A/D转换器。它是由8位A/D转换器、一个8路模拟量开关、8位模拟量地址锁存译码器和一个三态数据输出锁存器组成;+5 V单电源供电,转化时间在100 μs左右;内部没有时钟电路,故需外部提供时钟信号。芯片模型如图5-10所示。
(2)引脚简介:
①IN0~IN7——8路模拟量输入端。
②D0~D7——8位数字量输出端口。图5-10ADC0808芯片模型③START——A/D转换启动信号输入端。
④ALE——地址锁存允许信号,高电平有效。
⑤EOC——输出允许控制信号,高电平有效。
⑥OE——输出允许控制信号,高电平有效。
⑦CLOCK——时钟信号输入端。
⑧A、B、C——转换通道地址,控制8路模拟通道的切换。A、B、C分别与地址线或数据线相连,三位编码对应8个通道地址端口,A、B、C = 000~111分别对应IN0~IN7通道的地址端口。
(3) ADC0808的转换原理:ADC0808采用逐次比较的方法完成A/D转换,由单一的+5 V电源供电。片内带有锁存功能的8路选1的模拟开关,由A、B、C的编码来决定所选的通道。ADC0808完成一次转换需100μs左右,它具有输出TTL三态锁存缓冲器,可直接连接到AT89C51的数据总线上。通过适当的外接电路,ADC0808可对0~5V的模拟信号进行转换。
2) 74LS373芯片的引脚及功能
(1)芯片概述:74LS373是一种带有三态门的8D锁存器,其在本设计中是锁存P0口的低8位地址,芯片模型如图5-11所示。
图5-1174LS373芯片模型
(2)引脚介绍:
①D0~D7——8位数据输入线。
②Q0~Q7——8位数据输出线。
③G——数据输入锁存选通信号。当加到该引脚的信号为高电平时,外部数据选通到内部锁存器,负跳变时,数据锁存到锁存器中。
④——数据输出允许信号,低电平有效。当该信号为低电平时,三态门打开,锁存器中的数据输出到数据输出线上,当该信号为高电平时,输出线为高阻态。
3) LED数码管的控制显示
(1) LED数码管的模型如图5-12所示。
(2) LED数码管的接口简介:LED的段码端口A~G分别接至AT89C51的P1.0~P1.7口,位选端1~4分别接至P3.5、P3.4、P3.1、P3.0,如图5-13所示。图5-12LED数码管模型图5-13LED与AT89C51的硬件连线
6.任务总结
基于单片机的简易数字电压表基本完成。但设计中的不足之处仍然存在。本次设计用Proteus实现了仿真。在电路设计过程中,对单片机的使用等都有了新的认识。通过这次设计,更进一步的学习了Proteus和Keil软件的使用方法,掌握了从系统的需要、方案的设计、功能模块的划分、原理图的设计和电路图的仿真的设计流程。
本次设计主要实现了简易数字电压表测量1路电压的功能,详细说明了从原理图的设计、电路图的仿真再到软件的调试。设计中除了单片机还用到了模/数转换芯片ADC0808,设计基本上达到了功能要求。
任务2简易数控电源
知识目标:了解和掌握单片机的外围基本芯片的搭接,掌握数/模转换模块、数据处理模块及显示模块。
能力目标: D/A转换采用ADC0832对输出的数字量信号进行转换,学习OP-07和LF356运算放大器,TIP122和TIP127构成闭环推挽输出电路的运用。
1.任务要求
(1)以MCS-51系列单片机为核心器件,组成一个简单的数控电源。
(2)采用1路数字量输出,能够测量0~10V之间的直流电压值。
(3)电压显示用4位一体的LED数码管显示,至少能够显示三位小数。
(4)尽量使用较少的元器件。
2.硬件电路的设计
本系统的硬件电路设计共包括三个模块:电源模块、数控模块、稳压输出模块。
1)电源模块
设计的芯片供电的电源电路如图5-14所示。电源部分输入220V/50Hz交流电,输出全机所需要的三种电压:+5V,+15V和-15V。+5V主要供数控部分和D/A转换芯片使用,电流最大约为400mA;+15V作为运放的正电源,同时也是稳压输出电路的主电源,最大电流约650mA;-15V作为运放的负电源,同时也给基准电压源(LM336,-5V)供电,该电流较小,不超过50mA。
电路中,7805和7815负载重,功耗大,应加装散热片。图5-14电源模块
(1) ±15V电源(0.6A):其电路如图5-14所示。
对于滤波电容的选择,要考虑三点:整流管的压降、7815/7915最小允许压降Ud、电网波动10%。由此而计算得允许纹波的峰-峰值:
按近似电流放电计算,并设⊙ = 00(通角),则
故选取滤波电容C = 2200μF/30V。
(2) +5V电源(1A):其电路如图2-1所示。计算允许的最大纹波峰-峰值:
故选取滤波电容C = 4700μF/16V。
2)数控模块
该模块主要由数字电路构成,完成键盘控制、预置拔码开关输入控制、电压控制字输出、数码管显示控制、电流过流保护等功能。由于控制功能多,选用89S52最小应用系统,如图5-15所示。
3)稳压输出模块
稳压输出模块原理图如图5-16所示。这部分将控制部分送来的电压控制字数据转换成稳定电压输出。它由数/模转换器(DAC0832)、集成运放OP-07、LF356、晶体三极管VT8(TIP122)、VT9(127)、VT10(9014)、VT11(9015)和基准电压源LM336-5组成。图5-15数控模块图5-16稳压输出模块
(1)主电路的工作原理及参数计算。
电压输出范围0~9.9V,步进0.1V,共有100种状态,8位字长的D/A转换器具有256种状态,能满足要求。设计中用两个电压控制代表0.1V,当电压控制字为0、2、4、…、198时,电源输出为0V、0.1V、0.2V、…、9.9V。电路选用的D/A转换芯片是DAC0832,该芯片价廉且精度较高。DAC0832属于电流输出型D/A,输出的电流随输入的电压控制字线性变化。若要得到电压,还需要外接一片运放来实现电流到电压的转换。该运放输入端的输入电流对转换精度影响很大,DAC0832输出的电流有几十微安的变化,若运放输入端的输入电流为0.1μA,如UA741的输入电流约为此值,且有一定变化,则会引入相当于1~2个电压控制字的误差,因此应选用高输入阻抗的运放,如JFETL输入的运放LF356(或OP07),它的输入电流可以忽略。DAC0832需外接基准电压,具有高稳定度和低通方波,故选取LM336-5作为基准源。当DAC0832采用5V基准电压时,D/A转换电路的满幅输出为5V(电压控制字为255)。由于实际用到的最大电压控制字为198,因此D/A部分最大输出电压为V将它写成通式,即
D/A转换部分输出电压Ui作为电源功放级的输入电压。功率级由U9(LF356)和VT8(TIP122)、VT9(TIP127)构成闭环推挽输出电路。该电路属于典型的电压串联负反馈电路。于是可以写出输出电压Uo与输入电压Ui的关系式,即将式代入得
当Ui = 3.882V、R2 = 10kΩ、R3 = 9.1kΩ、Vo = 9.9V时,由上述方程可求得
RP1 = 6.402kΩ
现选取RP1 = 10kΩ的精密多圈电位器。当CPU输入电压控制字(10111100)2 = (198)10时,Ui = 3.882V,调节RP1,使Uo = 9.9V。由图5-16所示,VT10、VT11构成过流保护电路。当正常工作时,VT10集成电路电压为-15V,使VT8截止,A点输出高电平,不触发中断。当输出电流过大(如Io>500mA)时,取样电阻R16上的压降大于0.75 V。调节RP3使VT7的UBE>0.6V时,VT7管会导通,VT7的等电极电平提高,于是VT8也导通,A点呈现低电平,触发9031中断,执行中断保护程序。
3.软件设计
1)主程序流程图
主程序流程图如图5-17所示。
2)电压步进增减流程图
电压步进增减流程图如图5-18所示。图5-17主程序流程图图5-18电压步进增减流程图程序清单:
PORT EQU0FE00H
PORTA EQU0FE01H
PORTB EQU0FE02H
PORTC EQU0FE03H
DISP0 EQU30H
DISP1 EQU31H
DISP2 EQU32H
DISP3 EQU33H
DISP4 EQU34H
DISP5 EQU35H
DISP6 EQU36H
DISP7 EQU37H
WEI EQU38H ;位码
DATB1 EQU27;乘0.54
DATB EQU50;除
PPPP EQU85
ADADH EQU0FB00H;AD地址
DAADH EQU ;DA地址
DBUFH EQU3CH;DA高四位
DBUFL EQU3DH;DA低八位
LENG1 EQU24;双字节二进制变BCD,40H~44H
LENG2 EQU4
LENG3 EQU3
NUMB1 EQU40H
NUMB2 EQU43H
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP LED
ORG 0013H
AJMP KEYSCAN
MAIN: CLR P1.1
SETB P1.1
CLR P1.1
MOV R0,#00H
MOV R1,#00H
MOV SP,#50H
SETB PT0
MOV TMOD,#01H
MOV TH0,#0F8H ;2ms,显示扫描间隔
MOV TL0,#30H
SETB EA
SETB ET0
SETB TR0
SETB IT1
SETB EX1
CLR 00H ;电流千位合法位
CLR 01H ;显示闪烁
MOV 3EH,#00H ;显示数据
MOV 3FH,#00H
MOV 39H,#00H ;合字暂存
MOV 3CH,#00H
MOV 3DH,#00H
MOV 45H,#00H ;拆字暂存
SETB P1.0 ;过载
MOV DPTR,#PORT ;AB出C口入
MOV A,#03H
MOVX @DPTR,A
MOV DPTR,#PORTA ;列扫描输出低电平
MOV A,#0H
MOVX @DPTR,A
MOV 3AH,#00H
MOV 3BH,#00H
MOV 30H,#0
MOV 31H,#0
MOV 32H,#0
MOV 33H,#0
MOV 34H,#0
MOV 35H,#0
MOV 36H,#0
MOV 37H,#0
MOV WEI,#00H
SETB RS0
SETB RS1
MOV R0,#DISP0;显示指针,一定要用两组
MOV R6,#8 ;显示位数
MOV R1,#DISP0;键盘指针
MOV R7,#4 ;键盘位数
CLR RS0
CLR RS1
LOOP: ACALL LOOPP
ACALL DTOA
ACALL ATOD
AJMP LOOP
;******************电流设置子程序***************
LOOPP: MOV A,3AH
CJNE A,#15,PASS1
ACALL SETONE
PASS1: CJNE A,#10,PASS2
ACALL JIA
PASS2: CJNE A,#11,PASS3
ACALL JIAN
PASS3:
RET
;******************DA转换子程序*****************
DTOA: PUSH PSW
SETB RS0
MOV R2,3CH
MOV R3,3DH
;MOV R2,#00H
;MOV R3,#00H
CLR P3.5
SETB P3.5
SETB P2.3
CLR C
CLR A
MOV A,R2
MOV R7,#4
LOOP11: RLC A
DJNZ R7,LOOP11
MOV R7,#4
LOOP22: LCALL PRD
DJNZ R7,LOOP22
CLR C
CLR A
MOV A,R3
MOV R7,#8
LOOP34: LCALL PRD
DJNZ R7,LOOP34
CPL P2.3
POP PSW
RET
PRD: RLC A
MOV P3.0,C
SETB P3.1
CPL P3.1
RET
;*****************************AD采样子程序******************************
ATOD:
HUMID: MOV DPTR,#0FB00H
CLR A
MOVX @DPTR,A
WAIT: JNB P3.4,READ ;转换结束信号
SJMP WAIT
READ: MOVX A,@DPTR
MOV B,#8
MUL AB
MOV 40H,A ;低位
MOV 41H,B ;高位
;MOV 40H,#0F8H
;MOV 41H,#07H
MOV 42H,#00H
;双字节二进制变BCD
;入口二进制42H,41H,40H由高到低
;出口44H~43H,由高到低
MUBTD: MOV R0,#NUMB2
MOV R7,#LENG2
CLR A
LOOP18: MOV @R0,A
INC R0
DJNZ R7,LOOP18
MOV R7,#LENG1
LOOP48: MOV R1,#NUMB1
MOV R6,#LENG3
CLR C
LOOP28: MOV A,@R1
RLC A
MOV @R1,A
INC R1
DJNZ R6,LOOP28
MOV R5,#LENG2
MOV R0,#NUMB2
LOOP38: MOV A,@R0
ADDC A,@R0
DA A
MOV @R0,A
INC R0
DJNZ R5,LOOP38
DJNZ R7,LOOP48
;拆字程序*************
MOV R0,#DISP4
MOV A,44H
ACALL SEPA1
MOV R0,#DISP6
MOV A,43H
ACALL SEPA1
RET
SEPA1: MOV 45H,A
ANL A,#0F0H
SWAP A
MOV @R0,A
INC R0
MOV A,45H
ANL A,#0FH
;SWAP A
MOV @R0,A
;RET
MOV DPTR,#0FB01H
CLR A
MOVX @DPTR,A
WAIT1: JNB P3.4,READ1 ;转换结束信号
SJMP WAIT1
READ1: MOVX A,@DPTR
CLR C
;MOV A,#68
CJNE A,#PPPP,LLI
LLI: JNC LL2 ;集电极电压大于5V则不报警
CLR P1.0 ;负载电压大于10V
RET
LL2: SETB P1.0
RET
;闭环*****************************
CLR C
MOV A,43H
SUBB A,3FH
MOV 46H,A ;低
MOV A,44H
SUBB A,3EH
MOV 47H,A ;高
;***********键盘显示中断程序*****************
;用定时中断0显示扫描,30H~37H是段码存放地址,38H是位码地址
;8155PB0~PB3段码输出,PB4~PB7位码输出
;用外部中断1键盘扫描,PA0~PA3列扫描输出,PC0~PC3;输入,P2.0接CS,P2.1接IO/M
;出口数值是0~15,存在3AH中,3BH用作放键暂存
;用寄存器第3组
;已用R0,R2,R3,R4,R5,R6,其中R0,R6为显示用,R1,R2,R3,R7为键盘用,R4,R5延时用
;*******************中断显示扫描子程序*****************
LED: PUSH PSW
PUSH ACC
PUSH B
PUSH DPH
PUSH DPL
SETB RS0
SETB RS1
MOV TH0,#0F8H;2MS
MOV TL0,#30H
MOV A,@R0
ADD A,WEI
MOV DPTR,#PORTB
MOVX @DPTR,A
MOV A,WEI
ADD A,#10H
MOV WEI,A
INC R0
;ACALL DELAY
DJNZ R6,LED1
MOV WEI,#00H
MOV R0,#DISP0
MOV R6,#8
LED1: POP DPL
POP DPH
POP B
POP ACC
POP PSW
RETI
;**************中断键盘扫描子程序************
KEYSCAN: PUSH PSW
PUSH ACC
PUSH B
PUSH DPH
PUSH DPL
SETB RS0
SETB RS1
ACALL DELAY1 ;消抖延时
JNB P3.3,LIST
MOV DPTR,#PORTA ;恢复B口输出低电平
MOV A,#00H
MOVX @DPTR,A
POP DPL
POP DPH
POP B
POP ACC
POP PSW
RETI ;没有按
LIST:MOV DPTR,#PORTC
MOVX A,@DPTR
MOV 3BH,A
MOV R2,#0FEH
MOV R3,#00H
LINE0:MOV DPTR,#PORTA
MOV A,R2
MOVX @DPTR,A
MOV DPTR,#PORTC
MOVX A,@DPTR
JB ACC.0,LINE1
MOV A,#0
AJMP TRYK
LINE1:JB ACC.1,LINE2
MOV A,#1
AJMP TRYK
LINE2:JB ACC.2,LINE3
MOV A,#2
AJMP TRYK
LINE3:JB ACC.3,NEXT
MOV A,#3
AJMP TRYK
NEXT:INC R3
MOV A,R3
ADD A,#4
MOV R3,A
MOV A,R2
JNB ACC.3,EXIT
RL A
MOV R2,A
AJMP LINE0
EXIT:MOV DPTR,#PORTA ;恢复B口输出低电平
MOV A,#00H
MOVX @DPTR,A
POP DPL
POP DPH
POP B
POP ACC
POP PSW
RETI ;没有按
TRYK:ADD A,R3
MOV 3AH,A
LETK:MOV DPTR,#PORTC
MOVX A,@DPTR
XRL A,3BH
JZ LETK
MOV DPTR,#PORTA ;恢复B口输出低电平
MOV A,#00H
MOVX @DPTR,A
POP DPL
POP DPH
POP B
POP ACC
POP PSW
RETI
;*******************电流设置****************
SETONE:
SETB RS0
SETB RS1
;SETB 01H ;置显示闪烁位
SETONE1:MOV A,3AH
CJNE A,#10,L1
L1:JNC SETONE1
JB 00H,L3
CJNE A,#2,L2 ;2000MA
MOV DISP0,#2
MOV DISP1,#0
MOV DISP2,#0
MOV DISP3,#0
;CLR 01H
CLR RS0
CLR RS1
PUSH PSW
SETB RS1
ACALL BCDHEX;十六位BCD变十六进制
ACALL SUBBV ;*2再送DA
POP PSW
CLR A
RET
L2:MOV 3AH,#0FFH
JNC SETONE1
SETB 00H
L3:MOV @R1,A ;即时刷新显示缓冲区
INC R1
MOV 3AH,#0FFH
DJNZ R7,SETONE
MOV R7,#4
MOV R1,#30H
CLR 00H
;CLR 01H
CLR RS0
CLR RS1
PUSH PSW
SETB RS1
ACALL BCDHEX ;16字节BCD变二进制
ACALL SUBBV ;*5/8
POP PSW
CLR A
RET
;**********加电流
JIA:MOV 3AH,#0FFH
MOV A,DISP3
INC A
MOV DISP3,A
CJNE A,#10,OUT
MOV DISP3,#0
MOV A,DISP2
INC A
MOV DISP2,A
CJNE A,#10,OUT
MOV DISP2,#0
MOV A,DISP1
INC A
MOV DISP1,A
CJNE A,#10,OUT
MOV DISP1,#0
MOV A,DISP0
INC A
MOV DISP0,A
CJNE A,#2,OUT
MOV DISP0,#1
MOV DISP1,#9
MOV DISP2,#9
MOV DISP3,#9
OUT:PUSH PSW
SETB RS1
ACALL BCDHEX
ACALL SUBBV
POP PSW
CLR A
RET
;**********减电流
JIAN:MOV 3AH,#0FFH
MOV A,DISP3
DEC A
MOV DISP3,A
CJNE A,#0FFH,OUT1
MOV DISP3,#9
MOV A,DISP2
DEC A
MOV DISP2,A
CJNE A,#0FFH,OUT1
MOV DISP2,#9
MOV A,DISP1
DEC A
MOV DISP1,A
CJNE A,#0FFH,OUT1
MOV DISP1,#9
MOV A,DISP0
DEC A
MOV DISP0,A
CJNE A,#0FFH,OUT1
MOV DISP0,#0
MOV DISP1,#0
MOV DISP2,#0
MOV DISP3,#0OUT1:
PUSH PSW
SETB RS1
ACALL BCDHEX
ACALL SUBBV
POP PSW
CLR A
RET
BCDHEX:
MOV R7,#03H
MOV R0,#DISP0
CLR A
MOV R1,A
MOV R2,A
MOV R4,A
MOV R5,A
MOV R3,A
MOV A,@R0
MOV R1,A
CLR C
LOOP16:MOV A,R1
ADD A,R1
MOV R1,A
MOV A,R2
ADDC A,R2
MOV R2,A
MOV A,R1
MOV R3,A
MOV A,R2
MOV R4,A
MOV A,R1
ADD A,R1
MOV R1,A
MOV A,R2
ADDC A,R2
MOV R2,A
MOV A,R1
ADD A,R1
MOV R1,A
MOV A,R2
ADDC A,R2
MOV R2,A
MOV A,R1
ADD A,R3
MOV R1,A
MOV A,R2
ADDC A,R4
MOV R2,A
INC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024停薪留职协议
- 二零二四年技术转让合同技术指标及交付要求2篇
- 全新物业管理授权许可协议2024
- 2024年专业科技咨询服务标准协议模板集锦版B版
- 2024年企业安全职责合同范本版B版
- 佳木斯大学《体育科学研究方法》2021-2022学年第一学期期末试卷
- 《金融公司人才盘点方案》
- 2024年国有股权流转手册:挂牌与合同转让策略解析版B版
- 佳木斯大学《护理学导论》2021-2022学年第一学期期末试卷
- 暨南大学《现代汉语语法》2021-2022学年第一学期期末试卷
- 危重病人管理制度.ppt
- (完整)六年级上册蓝色的家园备课
- 网页新闻编译原则和技巧
- 江苏省高级人民法院有关农村土地承包纠纷案件纪要
- 重庆市高级人民法院关于当前民事审判若干法律问题的指导意见
- 031501公用管道年度检查报告
- 试验室主要设备电压功率表
- 民族中学“百日消防安全攻坚战”实施方案
- 盾构施工监测方案
- 数字逻辑课程设计 ----数字记步器
- 化学工程专业毕业设计聚丁二烯生产设计
评论
0/150
提交评论