DA转换调压电路.docx
- 文档编号:10705782
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:43
- 大小:853.24KB
DA转换调压电路.docx
《DA转换调压电路.docx》由会员分享,可在线阅读,更多相关《DA转换调压电路.docx(43页珍藏版)》请在冰点文库上搜索。
DA转换调压电路
张家口职业技术学院电气工程系
课程实训报告书
课程名称:
单片机原理及应用
实训题目:
DA转换-调压电路
专业:
应用电子技术
姓名:
耿路平学号:
0805331040
指导教师:
靳越
起止日期:
2010年6月21日~2010年6月26日
目录
一实训任务及要求………………………………………………………………………………1
1、实训要求…………………………………………………………………………………1
2、实训目的…………………………………………………………………………………13、实训任务…………………………………………………………………………………1
二总体设计………………………………………………………………………………………1
三硬件设计………………………………………………………………………………………21.主控模块设计……………………………………………………………………………22.LCD显示模块设计………………………………………………………………………23.键盘输入模块设计………………………………………………………………………24.串口通信电路模块设计……………………………………………………………………35.D/A转换模块设计…………………………………………………………………………3
四软件设计………………………………………………………………………………………41.算法设计…………………………………………………………………………………42.数据结构设计……………………………………………………………………………43.程序设计…………………………………………………………………………………4
五.汇编语言源程序……………………………………………………………………………9六、系统仿真调试…………………………………………………………………………………13
1.仿真器连接…………………………………………………………………………………132.仿真器设置………………………………………………………………………………133.程序编译调试……………………………………………………………………………13
七相关知识……………………………………………………………………………………18
八总结与体会…………………………………………………………………………………22
九致谢…………………………………………………………………………………………22
十参考文献……………………………………………………………………………………23
课程实训题目
DA转换-调压电路
姓名
耿路平
学号
0805331040
班级
08应用电子技术
系别
电气工程
专业
应用电子技术
组别
03
组长
耿路平
组员
陈金升李旭东任朋朋郭帅焦聪伟
指导教师
靳越
课程实训目的
1、了解D/A转换芯片的基本工作原理、技术指标及特性;
2、掌握常用D/A芯片与单片机的接口方法与D/A转换程序设计方法;
3、充分认识了解D/A转换在实际中的应用;
课程实训环境
单片机实验室
课程实训任务和要求
1、采用8位的D/A转换芯片DAC0832来完成数模转换过程,经D/A转换芯后由后级集成运放LM358来完成电流到电压的转换。
+12,-12V的电源的由MAX232来产生。
2、通过按键K1、K2实现DAC值的加减,并且在LCD1602上显示出来。
DAC转换的模拟电压值从DA输出座子输出用万用表测量校对。
3、用万用表测量校对输出与显示是否相同
课程实训工作进度计划
序号
起止日期
工作内容
1
2010-06-21
动员会、布置任务、确定实训内容
2
2010-6-22
编写程序、调试程序
3
2010-06-23
编写程序、调试程序
4
2010-06-24
系统连接、程序进行加载、固化
5
2010-06-25
编写实训报告书、答辩、提交材料
教研室审核意见:
教研室主任签字:
年月日
教学院(系)审核意见:
主任签字:
年月日
一实训任务及要求
1、实训要求:
制作一个基于单片机控制的调压电路系统。
2、实训目的:
(1)了解D/A转换芯片的基本工作原理及特性;
(2)了解D/A转换器的技术指标;
(3)掌握常用D/A芯片与单片机的接口方法;
(4)掌握D/A转换程序设计方法;
3、实训任务:
1、采用8位的D/A转换芯片DAC0832来完成数模转换过程,DAC0832是电流输出型D/A转换芯片,因此,后面接有集成运放LM358来完成电流到电压的转换。
其中的数字信号的输入从“D0-D7”端口输入,控制DAC0832工作的控制信号由“WR-CS”端口输入,模拟量的输出从“DA输出”端口输出,由于LM358工作在双电源条件下,因此要给LM358加入±12V电压,从+12,-12V的电源的由MAX232来产生。
2、通过按键K1、K2实现DAC值的加减,并且在LCD1602上显示出来。
DAC转换的模拟电压值从DA输出座子输出(用万用表测量)。
二总体设计
⒈本系统功能由硬件和软件两大部份协调完成,硬件部分主要完成信息的显示;软件主要完成信号的处理及控制功能等。
⒉本系统的硬件采用模块化设计,以AT89S52单片机为核心,与LCD显示电路、键盘电路、D/A转换电路组成控制系统。
该系统硬件主要包括以下几个模块:
AT89S52主控模块、LCD显示模块、键盘输入模块、D/A模块等。
其中AT89S52主要完成外围硬件的控制以及一些运算功能;LCD显示模块完成字符、数字的显示功能;键盘电路主要实现DAC值的加减;D/A模块由D/A芯片和放大电路组成,DAC转换的模拟电压值从DA输出座子输出,可用万用表测量。
系统组成方框图如图1所示。
⒊应用软件采用模块化设计方法。
该系统软件主要由主程序、定时器T0中断服务子程序、D/A转换子程序、计算D/A转换值子程序、按键扫描子程序、串口中断服务子程序、LCD显示子程序、LCD显示A/D转换值子程序等模块组成系统软件结构框图如图2所示。
三硬件设计
1.主控模块设计
本项目采用ATMEL公司生产的AT89S52单片机,
电源、时钟信号电路以及复位电路是单片机工作的基本条件,缺一不可。
单片机基本系统包括电源电路、时钟电路、复位电路。
(1)电源电路模块设计
电源模块为系统板上其它模块提供+5V电源,系统板为从USB接口获取+5V电源,只要用相应配套的USB线从电脑主机获取+5V直流电源。
(2)时钟电路模块设计
单片机的时钟信号用来为单片机芯片内部各种微操作提供时间基准。
MCS-51的时钟信号可以由两种方式产生,一种是内部时钟方式,利用芯片内部的振荡电路;另一种方式为外部时钟方式。
由于AT89S52单片机芯片内有时钟振荡电路,因此本项目中采用内部时钟方式,只要在单片机的XTAL1和XTAL2引脚外接石英晶体和微调电容,就构成了自激振荡器并在单片机内部产生时钟脉冲信号,具体电路设计如图1.3所示。
图中电容C1和C2的作用是稳定频率和快速起振,电容置在5~30pF,在此选择30pF;晶振X1的振荡频率范围在1.2~12MHz间选择,本项目中选择12MHz。
时钟电路为单片机产生时钟脉冲序列,作为单片机工作的时间基准,典型的晶体振荡频率为12MHz。
(3)复位电路模块设计
复位电路使单片机或系统中的其他部件处于某种确定的状态。
当在51单片机的RST引脚引入高电平并保持2个机器周期,单片机内部就执行复位操作。
实际应用中,复位操作有两种基本形式:
一种是上电复位,另一种是按键复位。
本项目中采用按键复位方式,在单片机运行期间,可以利用此按键完成复位操作。
2.LCD显示模块设计
LCD显示模块选用1602字符型LCD模块
3.键盘输入模块设计
键盘输入使用独立式按键K1、K2,
4.串口通信电路模块设计
51单片机有一个全双工的串行通信口,使单片机和计算机之间可以方便地进行通信。
电平范围是电路能够安全可靠识别信号的电压范围。
CMOS电路的电平范围一般是从0到电源电压。
CMOS电平中,高电平(3.5~5V)为逻辑“1”,低电平(0~0.8V)为逻辑“0”。
RS232接口的电平范围是-15V到+15V,RS232电平采用负逻辑,即逻辑“1”:
-3~-15V,逻辑“0”:
+3~+15V。
单片机的串口是TTL电平的,而计算机的串口是RS232电平,要使两者之间进行通信,两者之间必须有一个电平转换电路,即单片机的串口要外接电平转换电路芯片把与TTL兼容的CMOS高电平表示的1转换成RS232的负电压信号,把低电平转换成RS-232的正电压信号。
典型的转换电路给出-9V和+9V。
在本项目中利用MAXIM公司的MAX232集成芯片构成转换接口电路。
5.D/A转换模块设计
D/A模块由D/A芯片和放大电路组成,通过按键K1、K2实现DAC值的加减,范围在0~255之间,并且在LCD1602上显示出来。
DAC转换的模拟电压值从DA输出座子输出,可用万用表测量。
在本项目中,D/A芯片选用DAC0832芯片来完成数模转换过程,DAC0832是电流输出型D/A转换芯片,因此,后面接有集成运放LM358来完成电流到电压的转换。
其中的数字信号的输入从“D0-D7”端口输入,控制DAC0832工作的控制信号由“WR-CS”端口输入,模拟量的输出从“DA输出”端口输出,由于LM358工作在双电源条件下,因此要给LM358加入±12V电压,从+12,-12V的电源的由MAX232来产生。
D/A模块与单片机的接口电路如图3所示。
四软件设计
1.算法设计
⑴由PC机发送到单片机串口的值作为数字量初始值,通过按键K1、K2实现DAC值的加减,按键K1实现数字量初始值加1,按键K2实现数字量初始值减1,使数字量在20~200的范围内变化,从而模拟数字信号的输入。
⑵根据D/A转换芯片DAC0832的工作时序,20ms进行一次D/A转换,可以利用定时器T0定时,基本定时时间为5ms,控制软计数器的累计次数为4次,20ms(4*5ms)定时到时,产生定时器T0中断,在定时器T0中断服务子程序中调用DA转换子程序进行D/A采样转换,然后调用计算D/A转换值子程序把DA转换值转换成相应的ASCII码,最后通过LCD显示D/A转换值子程序把DAC转换的模拟电压值(0V~5V)显示在液晶LCD1602上,并从DA输出座子输出DAC转换的模拟电压,可用万用表测量。
2.数据结构设计
1602LCD使能信号E定义为P2口线的P2.2;
1602LCD读/写选择信号R/W定义为P2口线的P2.1,0为写数据信号,1为读数据信号;
1602LCD数据/命令选择信号RS定义为P2口线的P2.0,0为命令信号;1为数据信号;
1602LCD的8位双向数据线DB7~DB0信号LCDPORT定义为P0口线;
1602LCD写命令入口参数CMD_BYTE定义为片内数据存储器的2EH单元;
1602LCD写显示数据入口参数DAT_BYTE定义为片内数据存储器的2FH单元;
D/A芯片DAC0832的片选信号DAC_CS定义为P3口线的P3.3;
D/A芯片DAC0832的写信号DAC_WR定义为P3口线的P3.4;
当前的DA变量DABL定义为片内数据存储器的30H单元;
输出值显示的百位LEDBAI定义为片内数据存储器的31H单元;
输出值显示的十位LEDSHI定义为片内数据存储器的32H单元;
输出值显示的个位LEDGE定义为片内数据存储器的33H单元;
3.程序设计
(1)主程序设计
主程序主要完成硬件初始化、子程序调用等功能。
①初始化
先调用LCD子程序,设置LCD的DDRAM地址,在LCD上显示字符数据“DAC:
”。
将DA转换值DABL设置为初值20,设置定时软计数器KEYTIME初值为4。
设置串口成功接收数据标志位RECOKBIT为1。
②定时初值计算
定时器T0定时时间为5ms,系统所用的石英晶体振荡频率为11.0592MHz,因此,1个机器周期=1/石英频率*12,即为12/11.0592微秒,定时器工作方式设置为方式1,计算初值如下:
x=216-t*fosc/12=65536-5*10-3*11.0592*106/12=60928=EE00H
所以TH0=0EEH,TL0=00H
③定时器与串口设置
设置寄存器SCON的SM0、SM1位,定义串口工作方式,选择波特率发生器为定时器T1;设定定时器T1工作方式为方式2;设置波特率参数为9600bps;允许串行中断及总中断;允许串口接收数据,定义REN=1;启动定时/计数器T1工作,定义TR1=1。
设定定时器T0的工作方式为方式1;启动定时器T0,即TR0=1,开放定时器T0中断及总中断。
综述,设置TMOD=21H,IE=92H。
④等待中断
定时器T0启动计时后,CPU等待定时中断的到来。
当定时器T0定时5ms后,进入定时器T0中断服务子程序。
主程序设计流程图如图4所示。
(2)定时器T0中断服务子程序
当定时器T0定时5ms后,进入定时器T0中断服务子程序。
重装定时器T0初值,即TH0=0EEH,TL0=00H。
判断软计数器KEYTIME值是否为0,若KEYTIME值不为0,表明20ms计时未到,这时中断子程序返回主程序,继续计时;若KEYTIME值为0,表明20ms计时已到,重置软计数器KEYTIME初值为4,为下次定时做准备。
设置按键输入口P1口的值为0DFH,调用按键扫描子程序。
接着调用D/A转换子程序进行D/A转换,得到DA转值值DABL,然后换调用计算D/A转换值子程序计算DA转值DABL相应的ASCII码,再调用LCD显示D/A转换值子程序把数字量输入值进行转换后的模拟量显示在液晶LCD1602上。
最后T0中断子程序返回主程序进行下一次DA转换如图5。
3)D/A转换子程序模块设计
根据D/A转换芯片DAC0832的工作时序,片选信号低电平有效。
把芯片DAC0832片选信号置低电平,选中该芯片。
把数字量D/A转换值DABL送给P0口,准备送入芯片DAC0832进行转换处理。
芯片DAC0832写信号置低电平后再过两个时钟周期至高电平,产生一个上升沿信号,进行数据转换处理。
模拟量DABL从Iout1、Iout2引脚输出送到运算放大器进行处理,最后从DA输出座子输出,可用万用表测量到输出电压。
数据转换完毕,把芯片DAC0832片选信号置高电平。
子程序返回。
D/A转换子程序设计流程图如图6所示。
(4)计算D/A转换值子程序
①要把DA转换值DABL显示在LCD上,需要把它转换为相应的ASCII码。
先把D/A转换值ADBL送给累加器A,除以100,商即为百位计数单元值,该值加上30H,得到百位数的ASCII码,将它送给LCD百位计数单元显示值LEDBAI。
②将第一次除法运算得到的余数送给累加器A,再除以10,商为十位计数单元值,该值加上30H,得到十位计数单元的ASCII码,将它送给LCD十位计数单元显示值LEDSHI。
③将第二次除法运算得到的余数送给累加器A,为个位计数单元值,该值加上30H,得到个位计数单元的ASCII码,将它送给LCD个位计数单元显示值LEDGE。
④最后子程序返回。
计算D/A转换值子程序设计流程图如图7所示。
(5)按键扫描子程序模块设计
①通过按键K1、K2实现DAC值的加减。
程序通过P1.0、P1.1的值来判断是否有键按下。
②若P1.0=0,表明K1键按下,使DAC值加1,但不能大于201,否则使DAC值返回为20。
③若P1.0=1,表明K2键按下,使DAC值减1,但不能小于19,否则使DAC值返回为200。
④按键扫描子程序设计流程图如图8所示。
(6)串口中断服务子程序设计
当串口中断标志位RI为1时,进入串口接收数据中断服务子程序,开始接收数据。
把串口中断标志位RI复位置0,把串口接收缓冲器SBUF中的数据写入累加器A,再把累加器A的值传给DA转换值变量DABL作为数模转换的初始值,同时设置串口成功接收数据标志位RECOKBIT为1,表明串口成功接收数据,最后中断子程序返回。
串口中断服务子程序设计流程图(如图9所示。
)
(7)LCD显示子程序模块设计
LCD显示子程序模块包括LCD初始化子程序、写入指令数据到LCD子程序、写入显示数据到LCD子程序、LCD显示D/A转换值子程序、延时子程序等模块组成,
N
N
五.汇编语言源程序
;*******************************************************************
;项目名称:
DA转换
;功能:
串口发送一个要输出的电压(00--FF),模数转换输出一个当前串口发出
;的电压
;输出的电压为V=5*KK/255。
其中KK为串口接收到的二进制数
;*******************************************************************
;*******************************************************************
;功能:
LCD口线的定义
;*******************************************************************
EBITP2.2
RWBITP2.1
RSBITP2.0
LCDPORTEQUP0
CMD_BYTEEQU2EH
DAT_BYTEEQU2FH
;*******************************************************************
;功能:
DAC0832的引脚定义
;*******************************************************************
DAC_WRBITP3.4
DAC_CSBITP3.3
;*******************************************************************
;功能:
;*******************************************************************
DABLEQU30H;当前DA的变量(00到255间),从串口接收
LEDBAIEQU31H;显示的百位
LEDSHIEQU32H;显示的十位
LEDGEEQU33H;显示的个位
KEYTIMEEQU35H;
KEYBITBIT00H;
RECOKBITBIT01H;串口成功接收数据标志位
ORG0000H
AJMPMAIN
;*******************************************************************
;功能:
定时器T0中断服务入口地址
;*******************************************************************
ORG000BH;T0中断服务入口地址
AJMPTIME0_1
;*******************************************************************
;功能:
串口接收数据中断服务子程序
;*******************************************************************
ORG0023H;串口中断服务入口地址;
RS232:
CLRRI
MOVA,SBUF;单片机从PC串口接收数据
MOVDABL,A;PC串口发送的数据送给D/A转换值
SETBRECOKBIT
RETI
;*******************************************************************
;功能:
主程序
;*******************************************************************
ORG0030H
MAIN:
MOV20H,#00H
LCALLINITLCD
MOVDABL,#20
MOVKEYTIME,#04H
MOVCMD_BYTE,#80H;设置DDRAM的地址
LCALLWRITE_CMD
LCALLDELAY0
MOVDAT_BYTE,#"D"
LCALLWRITE_DAT
MOVDAT_BYTE,#"A"
LCALLWRITE_DAT
MOVDAT_BYTE,#"C"
LCALLWRITE_DAT
MOVDAT_BYTE,#":
"
LCALLWRITE_DAT
MOVTH0,#0EEH;定时器T0,定时5ms,D/A转换时间
MOVTL0,#00H
MOVTMOD,#21H
MOVTH1,#0FDH;T1位波特率发生器,波特率9600
MOVTL1,#0FDH
MOVSCON,#50H;设置串口工作方式
SETBTR1;启动定时器T1
SETBREN;允许串行口接收数据
SETBTR0;启动定时器T0
MOVIE,#92H;允许定时器0中断,允许串口中断
SETBRECOKBIT
SJMP$;等待中断
;*******************************************************************
;功能:
定时器T0中断服务子程序
;*******************************************************************
ORG0100H
TIME0_1:
MOVTH0,#0EEH
MOVTL0,#00H
DJNZKEYTIME,TIME0_RE
MOVKEYTIME,#04H
MOVP1,#0DFH
LCALLKEYSCAN
LCALLDAC0832;调用D/A转换子程序
LCALLJSDPBL;调用计算D/A转换值子程序
LCALLDISPDPBL;调用LCD显示D/A转换值子程序
TIME0_RE:
RETI
;*******************************************************************
;功能:
;按键扫描子程序
;*******************************************************************
KEYSCAN:
MOVP1,#0FFH
;*******************************************************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DA 转换 调压 电路