ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:681.94KB ,
资源ID:12476030      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12476030.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(1基于单片机的数控电压源课程设计毕业设计.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

1基于单片机的数控电压源课程设计毕业设计.docx

1、1基于单片机的数控电压源课程设计毕业设计陕 西 理 工 学 院课 程 设 计 课 题 :基于单片机直流电压源设计 班 级 : 电子103 学生学号 : 1013014093 学生姓名 : 赵颂镭 指导老师 : 王文洋 1设计任务及要求1.设计任务: 设计制作具有一定电压范围和功能的数控电源.原理如题目所示(1)基本要求: a 输出电压:范围 015V .步进 0.1V纹波不大于10mv b输出电流: 500mA c 输出电压由数码显示 d 用”+”.”-”键控制输出电压进行增/减调整 2方案比较并确定根据设计要求,小组成员拟列了2个方案,原理上基本能够实现要求2.1方案一:是以型号89C51单

2、片机为控制核心进行设计的,通过按键进行控制,单片机控制数模转换芯片DAC0832,其输出07.5V的电压,因为要求电压为015V所以必须再经过放大器放大,并通过三端可调正稳压器进行稳压,输出一个较稳定的直流电压,并在数码管上显示出来,并时刻刷新调整电压后的幅值。a.方框图如下: b.原理图如下:2.2方案二:是以单片机89C51为控制核心,外接按键进行控制,单片机控制8个继电器,且每个继电器串联一个一定阻值的电阻,电阻之间的关系为以2为参数的等比数列,继电器之间为并联形式。最终电压幅值可经过一个稳压电路后稳定输出。且最后输出的电压值可通过单片机控制在数码显示管上显示出来,并时刻刷新调整电压后的

3、幅值。 a方框图如下b。原理图如下2.3两种方案比较方案一的电源电压切换采用DAC控制速度比较快,切换方便,且可以输出较高频率的几种波形,所需器件较少,元器件较常见而且便宜,缺点是放大器的电压要求比较高,需要015V的输出,需要多种电源供电。方案二采用继电器控制为机械式。基本原理简单,实现比较方便,电源电压也可以调整到较精确的数值,但是它需要较大的工作电流,原器件价格较贵,而且继电器会产生噪声污染。比较之后,两种方案各有优缺点,所以可以任意选取一种进行软硬件组装。 直流数控电压源设计3系统硬件设计结构框图 本数控直流稳压电源的设计以一稳压电源为基础,以高性能单片机系统为控制核心,以稳压驱动放大

4、电路、短路保护电路为外围的硬件系统,在检测与控制软件的支持下实现对电压输出的数字控制,通过对稳压电源输出的电压进行数据采样与给定数据比较,从而调整和控制稳压电源的工作状态及监测开关电路的输出电流大小。本数控直流稳压电源实现以下功能:键盘可以直接设定输出电压值;可快速调整电压;LCD显示电压值等。3.1 8051简介我们采用8051系列的AT89S51作为CPU,AT89S51是一种带4K字节FLASH可编程可擦除只读存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器。该器件采用ATMEL高密

5、度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。3.2 主要特性1)与MCS-51兼容 ;2)8位字长的CPU;3)可在线ISP编程的4KB片内FLASH存储器,用于程序存储,可擦写1000次;4) 256B的片内数据存储器,其中高128字节地址被特殊功能寄存器SFR占用;5)可编程的32根I/O口线(P0P3);6)2个可编程16位定时器;7)一个数据指针DPTR;8)1个可编程的全双工串行通信口;9)具有“空闲”和“掉电”两种低功耗工作方式;10)可编程的3级程序锁定位;11)工作电源的电压为5(10.2)V;12)振荡器最高频率为24MHz;13)编程频率3

6、24 MHz,编程电流1mA,编程电压为5V。3.3芯片引脚排列与名称DIP封装形式的AT89S51的芯片引脚排列与名称如图1所示。VCC:供电电压。GND:接地。P0口:P0口为一个8位,并行, 图1 AT89S51的芯片引脚排列与名称漏极开路双向I/O口,作为输出时可驱动8个TTL负载。该口内无上拉电阻,在设计中作为D/A,A/D及液晶显示器的数据口。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4个TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,该口在设计中低四位作为键盘输入口,高四位与RST作为在线编程下载口。P2口:P2口为一个内部上拉电

7、阻的8位双向I/O口,P2口缓冲器可接收/输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,可作为输入。在作为输出时,P2口的管脚被外部拉低,将输出电流。该口在设计中作为D/A,A/D及液晶显示器的控制口。P3口:P3口管脚是带内部上拉电阻的8位双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流,这是由于上拉的缘故。P3口也可作为AT89S51的一些特殊功能口,如下表1所示:表1 各端口引脚与复用功能表端口引脚复用功能P3.0TXD(串行输入口)P3.1RXD(串行输出口)P3

8、.2/INT0(外部中断0)P3.3/INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)该口在设计中使用其特殊功能作为D/A,A/D读写信号的控制口。和A/D的中断输入口。RST:该引脚为复位信号输入端,高电平有效。在振荡器稳定工作情况下,该引脚被置成高电平并持续两个机器周期以上是系统复位。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。该引脚在设计中作为锁存器器和A/D的时钟信号。/PSEN:外部程序

9、存储器的选通信号。/EA/VPP:/EA为访问芯片内部和芯片外部程序存储器的选择信号。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:芯片内振荡器放大器的输入及内部时钟工作电路的输入。XTAL2:芯片内振荡器放大器的输出。 4 键盘控制器MM74C9224.1 简介键盘的作用是对单片机输入数据,设计中要求能是电压进行“+”,“-”,及电压值的设定,所以采用键盘为44的薄膜矩阵键盘,用MM74C922芯片进行识别按键后送AT89S51的并行口P1, P1.0P1.3作为键盘输入口。传统的44矩阵键盘识别处理程序的编写相对烦琐。所以采用MM74C922芯片来将44矩阵键

10、盘的键值转换成4位BCD码以简化程序的编写。4.2 主要特性CMOS工艺技术制造,工作电压3-15V,“二键锁定”功能,编码输出为三态输出,可直接与微处理器数据总线相连,内部振荡器能完成44矩阵键盘扫描,亦可用外部振荡器使键盘操作与其他处理同步,通过外接电容避免开关发生前、后沿弹跳所许的延时。有按键按下时数据有效线变高,同时封锁其他键,片内锁存器将保持键盘矩阵的4位编盘,可由微处理器读出4.3芯片引脚排列与名称 DIP封装形式的MM74C922的芯片引脚排列与名称如图4所示。VCC:供电电压(+5+15);GND:接地; Y1Y2:矩阵键盘行输入, 图4 MM74C922芯片引脚排列与名称其内

11、部接有上拉电阻; X1X2:矩阵键盘列输入; OUT1OUT2:矩阵键盘列输出;OSC:振荡器输入;DA:按键有效输出,当有任意键按下是DA输出高电平; /OE:输出有效端,低电平有效。4.4 D/A转换器DAC08324.4.1简介设计要求电压输出范围是0.0V9.9V,步进0.1V,共有100种状态,因此采用8位的D/A转换器就能满足设计要求。因此采用常用的DAC0832芯片。8位字长的D/A转换器DAC0832具有256种状态,能满足设计要求。DAC0832芯片是具有两个输入数据寄存器的8位DAC,它能直接与AT89S51单片机相连接,4.4.2 主要特性1)8位分辨率;2)电流型输出,

12、稳定时间为1uS;3)可双缓冲输入,单缓冲输入或直接数字输入;4)单一电源供电(+5+15V);5 低功耗(20mW;)4.4.3芯片引脚排列与名称DIP封装形式的DAC0832的芯片引脚排列与名称如图51所示。VCC:电源电压,+5V。GND:地线输入端。 图5 DAC0832的芯片引脚排列与名称D0D7:8位数字量输入引脚。单片机由这8根线传送给D/A转换数字量。D7为最高有效位,D0为最低有效位。Vref:参考电压端。/CS:片选信号,当/CS为低电平时候,芯片被选中工作。ILE:允许数字量输入线。高电平有效。/XREF:传送控制输入线,低电平有效。/WR1,/WR2:写命令输入线。Ff

13、b:运算放大器反馈线。Iout1,Iout2:模拟电流输出线,Iout1+Iout2为一常数。5硬件电路设计5.1 MM74C922接口电路设计中MM74C922的输出口与P1口的低四位相接,DA端通过反向器与P32相接。每当有按键按下时,DA就产生高电平,同时向P1口低四位传送16进制的BCD码,分别对应16个按键。MM74C922与键盘及AT89S51的接线图见图9图9 MM74C922接口电路5.2 DAC0832接口电路DAC0832 最具特色是输入为双缓冲结构,数字信号在进入D/A 转换前,需经过两个独立控制的8 位锁存器传送。其优点是D/A 转换的同时,DAC 寄存器中保留现有的数

14、据,而在输入寄存器中可送入新的数据。系统中多个D/A 转换器内容可用一公共的选通信号选通输出。设计中用2个电压控制字代表0.1V当电压控制字从0,2,4,到198时,可调稳压源输出0.0,0.1,9.9。由于DAC0832是电流输出型,输出的电流随输入的电压控制字线性变化。若要得到电压,还需要外接一片运放来实现电流到电压的转换。由于DAC0832 输出级没有加集成运放,所以需外加LM324 相配适用。考虑到设计需要,采用了单缓冲双级性的接法,如图10所示:图10 DAC0832接口电路其计算公式为:其中Vref为参考电压,D为DAC0832接收到的数据。5为DAC0832基准电压。如果图中所示

15、电阻RX,RY,RZ的阻值选取适当,则输出电压范围在电压控制字从0,2,4,到198变换时根据上式计算可得输出电压为+4.9V-5V,正好满足后续电路的要求。其中P2.7为DAC0832的片选控制端。5.3 ADC0809接口电路由于输出电压范围是0.0V9.9V超出了ADC0809的测量范围,因此使用电位器将输出电压分压后送至ADC0809的输入端。ADC0809与AT89S51的接口电路如图11所示图11 ADC0809接口电路其中P2.6为0809的片选信号,与WR和RD分别通过或非门接到0809的START和OE上,EOC通过非门与AT89S51的INT0相接。由于0809需要时钟信号

16、,因此可以从AT89S51的ALE端得到6分频的振荡信号,为了使6分频后的信号能满足0809的需求,我们采用的是4M的晶体振荡器。5.4 LCD1602C接口电路LCD1602C与AT89S51的接口电路如图12所示图12 LCD显示电路5.5 可调稳压源电路为了获得大的负载电流,可调稳压部分使用了最大输出电流为1A 的7805三端集成稳压块。7805原本是输出固定电压为5V的集成稳压块,但可以外接电路来改变输出电压值。可调稳压的电路见图13:设运放理想。这时,可认为运放输入电压很小。即: 图13 可调稳压电路 其中Vin为D/A部分输出的双级性电压,5为7805的稳压值。由上式可见,Vout

17、与Vin之间成线形关系,当Vin变化时,输出电压改变。由于Vin是DAC0832输出的范围是+4.9V-5V的电压,因而Vout的变化可以从0.0V9.9V。经实验证明:这种可调稳压输出具有良好的负载特性,输出最大负载电流可达到1A。电压输出端接上500mA负载与未接负载(空载)之间输出电压仅相差0.04V以内。由于。5.6流稳压电路本设计共用到电源有三种:即15V,+5V 。可选用的有开关电源和稳压电源两种,由于开关电源的纹波系数比较大,且设计要求电压纹波不大于10mV 。因此采用常用的稳压电源来作为整个系统的电源。稳压电源由电源变压器、整流电路、滤波电路和稳压电路组成,如图14所示 图14

18、 电源方框及波形图整流和滤波电路:整流作用是将交流电压U2变换成脉动电压U3。滤波电路一般由电容组成,其作用是脉动电压U3中的大部分纹波加以滤除,以得到较平滑的直流电压U4。再通过稳压电路得到平直的直流电压U5。电源变压器采用了双17.2V的变压器,输入220V,50Hz交流电,经全桥整流,滤波,稳压后得到15V和+5V三种输出,+5V部分供单片机及D/A,A/D,显示等部分使用,电流最大约400mA;+15V和-15V部分供运放使用,最大电流不超过50mA。电路如图15所示:图15 电源部分原理图图中继电器部分是一个开关电路及短路保护电路。当系统接到220V交流电后经变压器降压,整流桥整流后

19、接到K1,此时由于U1(7815)没有输入,所以K1没有供电,整个后续系统处于关闭状态,当按下SW_ON键时U1得到输入,产生+15V的输出,同时K1得电吸合,形成自锁状态,同时79L15也得电输出-15V电压。松开SW_ON键后由于K1处于自锁状态,整个系统处于开启状态。当按下SW_OFF键时,K1被短路,从而断开电源达到关机的目的。同样,在任一时刻如果产生短路,则K1也会断开达到短路保护的目的。+5V部分的供电电流在400mA左右,因此采用了最大输出电流为1A 的7805三端稳压集成电路,由于功耗大,负载重,加装了散热片。而+15V和-15V部分最大电流不超过50mA。在设计过程中发现中两

20、片7805的均使用了散热片且温度偏高,因此加装了风扇,使用+15V电源,将78L15该为7815后可满足风扇需求。这样在保证性能的同时也降低了成本。6程序设计6.1主控程序图16为系统主控程序。图16 系统主控程序框图6.2 D/A子程序图17为D/A子程序框图。图17 D/A子程序框图可以看出,D/A子程序的作用是将设定的数字量通过变换送给D/A。6.3 A/D子程序图18 A/D子程序框图由A/D子程序框图看出,修改精度为一个数字量,由于A/D和D/A的精度限制,修改量只能达到0.05V,但足已满足设计需要。6.4 键盘子程序图19为键盘子程序框图。 A、程 序 实 现单片机系统初始化和存

21、储器分配程序 $NOMOD51 ; MOV DPTR,#XDATASTART MOV R7,#LOW (XDATALEN) IF (LOW (XDATALEN) 0 MOV R6,#(HIGH (XDATALEN) +1 ELSE MOV R6,#HIGH (XDATALEN) ENDIF CLR A XDATALOOP: MOVX DPTR,A INC DPTR DJNZ R7,XDATALOOP DJNZ R6,XDATALOOP ENDIF IF PPAGEENABLE 0 MOV PPAGE_SFR,#PPAGE ENDIF 键盘扫描程序 #include #define uchar

22、unsigned char #define uint unsigned int sbit key1=P10; sbit key2=P11; void delay(uint z); uchar keyscan() / 键盘扫描程序 uchar temp,num; num=17; P1=0xfe; / p1.0口置0 temp=P1; temp=temp&0xf0; while(temp!=0xf0) delay(20); temp=P1; temp=temp&0xf0; if(temp!=0xf0) / delay(10); /延迟去抖 P1=P1&0xf0; while(P1!=0xf0);

23、switch(temp) case 0xe0:num=7;break; /0xf0和0xe0的交处,即p1.0与p1.4的交处 case 0xd0:num=8;break; / p1.0与p1.5的交处, case 0xb0:num=9;break; case 0x70:num=15;break; default:break; else break; P1=0xfd; temp=P1; temp=temp&0xf0; while(temp!=0xf0) delay(20); temp=P1; temp=temp&0xf0; if(temp!=0xf0) /delay(10); P1=P1&0x

24、f0; while(P1!=0xf0); switch(temp) case 0xe0:num=4;break; case 0xd0:num=5;break; case 0xb0:num=6;break; case 0x70:num=14;break; default:break; else break; P1=0xfb; temp=P1; temp=temp&0xf0; while(temp!=0xf0) delay(20); temp=P1; temp=temp&0xf0; if(temp!=0xf0) /delay(10); P1=P1&0xf0; while(P1!=0xf0); sw

25、itch(temp) case 0xe0:num=1;break; case 0xd0:num=2;break; case 0xb0:num=3;break; case 0x70:num=13;break; default:break; else break; P1=0xf7; temp=P1; temp=temp&0xf0; while(temp!=0xf0) delay(20); temp=P1; temp=temp&0xf0; if(temp!=0xf0) /delay(10); P1=P1&0xf0; while(P1!=0xf0); switch(temp) case 0xe0:nu

26、m=10;break; case 0xd0:num=0;break; case 0xb0:num=11;break; case 0x70:num=12;break; default:break; else break; return num; 主程序 #include #include #include #include #includekeyscan.h #define uchar unsigned char #define uint unsigned int #define dac0832 XBYTE0X7FFF /P2.7作片选,启动DA转换 #define int0 XBYTE0X7F

27、F8 /结束AD转换,锁存通道0,读出AD值 uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, 0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef; /数组 temp1=temp1-1; if(int0dac0832) temp1=temp1+1; / ADC转换后于输入数字量比较运算程序 display(i); /调用显示函数 else if(keynum=12) /判断按键,如果是加键 temp1=temp1+2; / 电压数字量加02H if(weishu

28、=1)volt1=volt0+10; volt0=0; weishu=2; / 如果是一位数的话,将这个数放到第二个数码管,同时将小数点输出,第一位变为0,位数加一 if(weishu=2)volt0+; /将第一位LED加1 if(volt0=10)volt1=volt1+1;volt0=0; /如果第一个数码管是点的话,将第一个数码管加一,小数点去掉 if(volt1=20)volt2=1;volt1=10;volt0=-1;weishu=3; if(weishu=3) if(dot=1) volt1+; if(volt1=10) volt2+;volt1=0;temp1=temp1+2; else volt0+; if(volt0=10)volt1+;volt0=0; /三位时的处理程序 else if(keynum=13) /判断按键,如果减键 temp1=temp1-2; / 电压数字量加02H if(weishu=1) volt1=volt0+9;volt0=10;weishu=2; if(weishu=2)volt0-; if(volt09)volt1=volt1-1;volt0=9; if(weishu=3) if(dot=1)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1