数控电压源设计报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档