数控电压源设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
全国电子设计大赛培训班设计报告(数控电压源)
组员:龚文周、彭玉琴、李冻秀、胡高丽
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