全国电子设计大赛
培训
焊锡培训资料ppt免费下载焊接培训教程 ppt 下载特设培训下载班长管理培训下载培训时间表下载
班设计报告(数控电压源)
组员:龚文周、彭玉琴、李冻秀、胡高丽
1. 实验任务
本次实验是以89C51单片机为控制单元,以数模转换器DAC0832输出参考电压,以该参考电压控制电压转换模块LM350的输出电压大小。该电路设计简单,应用广泛,精度较高等特点。
2. 对选用芯片说明
DAC0832是一款常用的数摸转换器,它有两种连接模式,一种是电压输出模式,另外一种是电流输出模式,为了设计的方便,选用电压输出模式,如电路图所示,Iout1和Iout2之间接一参考电压,VREF输出可控制电压信号。它有三种工作方式:不带缓冲工作方式,单缓冲工作方式,双缓冲工作方式。该电路采用单缓冲模式,由电路图可知,由于/W
R2=/XFER=0,DAC寄存处于直通状态。又由于ILE=1,故只要在选中该片(/CS=0)的地址时,写入(/WR=0)数字量,则该数字信号立即传送到输入寄存器,并直通至DAC寄存器,经过短暂的建立时间,即可以获得相应的模拟电压,一旦写入操作结束,/WR1和/CS立即变为高电平,则写入的数据被输入寄存器锁存,直到再次写入刷新。
3. 软件系统
软件的设计主要完成三方面的功能:
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. 电路原理图
整体原理图
主要芯片——89C51及接法
PCB板布线图
DA及运放的接法
图4.20.1
5. 数控电压源的原程序
org 0000h
ljmp start
org 0003h
ajmp int0
org 000bh
ajmp tm0
org 0013h
ajmp int1
start:clr 00h
mov a,#00h
mov 25h,a ;存放小数部分
mov 26h,a ; 存放整数部分
mov 24h,a
mov 27h,a
mov r5,a ;存放码制
mov tcon,#00010101b
mov ie,#10000111b
mov tmod,#00000001b
mov th0,#(65536-8000)
mov tl0,#(65536-8000)
main:mov a,27h
mov dptr,#tab3
movc a,@a+dptr
mov p0,a
ajmp main
tm0:mov th0,#(65536-8000)
mov tl0,#(65536-8000)
push acc
push psw
mov a,24h
mov b,#10h
div ab
mov 26h,a
mov 25h,b
cpl 00h
jnb 00h,zhengshu
mov p2,#11101111b ;数码管显示
mov a,25h
mov dptr,#tab1
movc a,@a+dptr
mov p1,a
ajmp bb
zhengshu:
mov p2,#11011111b
mov a,26h
mov dptr,#tab2
movc a,@a+dptr
mov p1,a
bb: pop acc
pop psw
reti
;;;;;;;;;;;;;;;;;;;;;;;;;;int1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
int1:call delay
jb p3.3,endint1
push acc
push psw
jia: inc 27h
mov a,24h
add a,#01h
da a
mov 24h,a
cjne a,#51h,xiaodou;数据输出
mov 24h,#00h
mov 27h,#00h
xiaodou:
jnb p3.3,$
call delay
pop acc
pop psw
endint1: reti
;;;;;;;;;;;;;;;;;;;;;;;;;;int1 end;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
int0:jb p3.2,endint0
call delay
push acc
push psw
dec 27h
setb c
clr a
addc a,#99h
subb a,#01h
add a,24h
da a
mov 24h,a
cjne a,#99h,xiaodu0
mov 24h,#50h
mov 27h,#50
xiaodu0: jnb p3.2,$
call delay
pop acc
pop psw
endint0:reti
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;int0 end ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
delay:mov r6,#20
d1:mov r7,#249
djnz r7,$
djnz r6,d1
ret
tab1:db 77h 06h 0b3h 97h 0c6h 0d5h 0f5h 07h 0f7h 0d7h
tab2:db 7fh 0eh 0bbh 9fh 0ceh 0ddh 0fdh 0fh 0ffh 0dfh
tab3:db 00h 0a0h 50h 0f0h 28h 98h 78h 0c4h 014h 0b4h
db 0cch 1ch 0bch 42h 0e2h 32h 8ah 6ah 3ah
db 06h 66h 0d6h 0eh 0aeh 5eh 0feh 21h 91h 71h
db 0c9h 99h 79h 0c5h 15h 0b5h 4dh 0edh 3dh 83h
db 63h 33h 8bh 6bh 0dbh 07h 0a7h 57h 0f7h 2fh 9fh 0ffh