单片机汇编语言基于AT89C52和DAC0808按键控制的多档数字调压器设计 电压输出显示 汇编语言代码
时间: 2023-06-19 11:10:34 浏览: 52
下面是基于AT89C52和DAC0808按键控制的多档数字调压器设计的汇编语言代码,其中包括电压输出显示部分:
```
;-------------------头文件-------------------
#include<reg52.h>
#include<intrins.h>
;-------------------端口定义-------------------
sbit SCLK=P1^7; //串行时钟
sbit SYNC=P1^6; //同步信号
sbit DIN=P1^5; //数据输入
sbit AIN=P1^4; //模拟输出
sbit KEY1=P3^0; //按键1
sbit KEY2=P3^1; //按键2
sbit KEY3=P3^2; //按键3
sbit KEY4=P3^3; //按键4
;-------------------变量定义-------------------
Vref equ 2000h //DAC参考电压
Step equ 50 //电压调节步长
MaxV equ 1000 //最大输出电压
MinV equ 0 //最小输出电压
;-------------------常量定义-------------------
DelayTime equ 1000 //延时时间
;-------------------子程序-------------------
;延时子程序
Delay: mov R7, #0FFh
Delay1: mov R6, #0FFh
Delay2: djnz R6, Delay2
djnz R7, Delay1
ret
;写DAC字节子程序
WriteDAC: mov R1, #8
WriteDAC1: clr SCLK
mov A, DPH
setb CY
rl A
mov DPH, A
mov A, DPL
rl A
mov DPL, A
mov CY, ACC.7
mov DIN, CY
setb SCLK
djnz R1, WriteDAC1
ret
;输出电压显示子程序
Display: clr AIN
mov A, DPH
anl A, #0Fh
orl A, #0C0h
mov AIN, A
mov A, DPL
mov AIN, A
ret
;-------------------主程序-------------------
Start: mov SP, #30h //设置堆栈指针
clr P3
clr P1
mov P1, #00h
mov P3, #0Fh
mov SYNC, #1 //同步信号置高
mov DPH, #0 //DAC字节高位清零
mov DPL, #0 //DAC字节低位清零
Loop: //主循环
;按键1调节电压
mov A, KEY1
cjne A, #1, Key2
mov A, DPH
add A, #Step
cjne A, #MaxV/256, Key3
mov A, #MaxV/256
Key3: mov DPH, A
mov A, DPL
addc A, #Step
cjne A, #MaxV%256, Key4
mov A, #MaxV%256
Key4: mov DPL, A
mov SYNC, #0
call WriteDAC
mov SYNC, #1
call Display
call Delay
sjmp Loop
;按键2调节电压
Key2: mov A, KEY2
cjne A, #1, Key5
mov A, DPH
subb A, #Step
cjne A, #MinV/256, Key6
mov A, #MinV/256
Key6: mov DPH, A
mov A, DPL
subb A, #Step
cjne A, #MinV%256, Key7
mov A, #MinV%256
Key7: mov DPL, A
mov SYNC, #0
call WriteDAC
mov SYNC, #1
call Display
call Delay
sjmp Loop
;按键3调节电压
Key5: mov A, KEY3
cjne A, #1, Key8
mov A, DPH
add A, #Step*10
cjne A, #MaxV/256, Key9
mov A, #MaxV/256
Key9: mov DPH, A
mov A, DPL
addc A, #Step*10
cjne A, #MaxV%256, Key10
mov A, #MaxV%256
Key10: mov DPL, A
mov SYNC, #0
call WriteDAC
mov SYNC, #1
call Display
call Delay
sjmp Loop
;按键4调节电压
Key8: mov A, KEY4
cjne A, #1, Loop
mov A, DPH
subb A, #Step*10
cjne A, #MinV/256, Key11
mov A, #MinV/256
Key11: mov DPH, A
mov A, DPL
subb A, #Step*10
cjne A, #MinV%256, Key12
mov A, #MinV%256
Key12: mov DPL, A
mov SYNC, #0
call WriteDAC
mov SYNC, #1
call Display
call Delay
sjmp Loop
```
以上代码中,使用了AT89C52单片机和DAC0808数字模拟转换芯片实现了按键控制的多档数字调压器设计,其中包括电压输出显示部分。通过按键1、2、3、4,可以实现调节电压的功能。