基于AT89S51的数控直流稳压电源毕业论文_第1页
基于AT89S51的数控直流稳压电源毕业论文_第2页
基于AT89S51的数控直流稳压电源毕业论文_第3页
基于AT89S51的数控直流稳压电源毕业论文_第4页
基于AT89S51的数控直流稳压电源毕业论文_第5页
已阅读5页,还剩15页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、摘要:本次培训的内容是设计制造以单片机为主的数控直流稳压电源。测量电压范围为-5V+5V(附加功能是可以产生三角波、正弦波和方波信号)。首先,针对数控直流稳压电源设计的控制要求,本文采用C语言编写程序。很明显,C语言通俗易懂,但执行速度不如汇编语言快;然后进行NC直流稳压电源的硬件设计,Proteus实现了仿真;然后画出Protel电路原理图和PCB电路板;最后制作电路板并焊接元件,调试并模拟运行。当按键输入的信号传给单片机AT89S51时,P1口的输出通过74LS373控制数码管显示输入值,将电源输入的电压传给单片机的输入DAC0832通过单片机AT89S51,再由DAC0832的输出控制O

2、P07的转换。输出两路电压值与数码管显示值相同,但有正负之分。关键词:单片机、数模转换、LED显示、CNC直流稳压电源目录 TOC o 1-3 h z u HYPERLINK l _Toc296855313 一、培训目的: 1 HYPERLINK l _Toc296855314 二、培训设计内容要求: 1 HYPERLINK l _Toc296855315 3.组件清单: 1 HYPERLINK l _Toc296855316 四、组件介绍: 1 HYPERLINK l _Toc296855317 一、AT89S51芯片介绍: 1 HYPERLINK l _Toc296855318 2.数模转

3、换芯片DAC0832介绍: 4 HYPERLINK l _Toc296855319 三、数码管驱动芯片74LS373介绍: 6 HYPERLINK l _Toc296855320 4、运算放大器OP07介绍: 6 HYPERLINK l _Toc296855321 5. 7805和7905简介: 7 HYPERLINK l _Toc296855322 5、工作原理: 7 HYPERLINK l _Toc296855323 6 、Proteus仿真图: 8 HYPERLINK l _Toc296855324 七、 Protel电路原理图: 9 HYPERLINK l _Toc296855325

4、八、 PCB图: 10 HYPERLINK l _Toc296855326 9.实物图: 11张 HYPERLINK l _Toc296855327 10.程序流程图: 12 HYPERLINK l _Toc296855328 11. 程序: 13 HYPERLINK l _Toc296855329 12、实训经验: 18人 HYPERLINK l _Toc296855330 13. 参考文献: 20一、培训目的:1、掌握AT89S51单片机原理及基本应用,学会应用单片机实现红绿灯信号控制、时间控制等实用功能。并通过软硬件结合加深对单片机各个接口功能的理解和掌握。2. 提高学生的动手能力、解决

5、问题和发现问题的能力。3.增强学生之间的合作能力,因为他们有团队合作的精神。二、培训设计内容要求:设计制作数控直流稳压电源,显示范围-5V+5V,输入输出值精度0.1V(附加功能是产生三角波、正弦波和方波信号。)当输入值由数码管确定显示时,转换后的电压输出端输出的电压值应等于数码管的显示值,且两个输出端有正负之分。3. 组件清单:两个共阳极数码管;八个二极管;两个7805;一个7905;一个 MCU AT89S51(一个额外的 40 针底座);一个 74LS373(一个额外的 20 针底座);DAC0832 一个(附加20针底座一个); OP07 两个(附加8针底座两个);电位器:1K欧一只,

6、100K欧两只;六个按钮;极性电容:3个470uf,1个1000uf;无极性电容:4个104uf,3个30uf;1个晶振12MHz;一个电阻排1K欧姆;电阻:5个1K欧,10个50欧,2个510欧;几根电线;4、组件介绍:一、AT89S51芯片介绍:(一)AT89S51管脚图管脚图及管脚功能介绍VCC:电源电压GND:地P0口:P0口是一组8位开漏双向I/O口,即地址/数据总线复用口。用作输出端口时,每位可驱动8个TTL逻辑门电路,向端口写“l”可作为高阻输入端口。在访问外部数据存储器或程序存储器时,这组端口线时分转换地址(低 8 位)并复用数据总线,并在访问过程中激活上拉电阻。P1口:Pl为

7、8位双向I/O口,带上拉电阻。 Pl的输出缓冲级可以驱动(吸收或输出电流)4个TTL逻辑门电路。向端口写入“l”,通过该部分的上拉电阻将端口拉高,此时可作为输入端口使用。用作输入端口时,由于存在上拉电阻,当引脚被外部信号拉低时,会输出电流(IIL)。在 Flash 编程和程序验证期间,Pl 接收低 8 位地址。P2口:P2为8位双向I/O口,带上拉电阻。 P2的输出缓冲级可以驱动(吸收或输出电流)4个TTL逻辑门电路。向端口写入“1”,通过该部分的上拉电阻将端口拉至高电平。此时,可作为输入端口使用。用作输入端口时,由于部分内有上拉电阻,某个引脚被外部信号拉低。将输出电流 (IIL)。当以 16

8、 位地址访问外部程序存储器或外部数据存储器时(例如,执行 MOVXDPTR 指令),P2 端口致高 8 位地址数据。当访问一个 8 位地址的外部数据存储器时(例如执行 MOVXRi 指令),P2 端口线上的内容(即特殊功能寄存器(SFR)区域中 P2 寄存器的内容)不会在整个访问期间发生变化。在 Flash 编程或验证期间,P2 还接收高位地址和其他控制信号。P3 端口:P3 端口是一组8 位双向I/0 端口,带有部分上拉电阻。端口 3 输出缓冲级可以驱动(灌入或拉出电流)4 个 TTL 逻辑门。当 P3 端口写入“1”时,它们被上拉电阻拉高,可用作输入端口。用作输入端时,外部下拉的 P3 端

9、口将使用上拉电阻输出电流(IIL)。 P3口除了用作总则I/0口外,更重要的用途是它的第二个功能,如下表所示:表 2 具有第二种功能的 P1 端口引脚端口引脚第二个功能:P3.0RXD(串行输入端口)P3.1TXD(串行输出端口)P3.2/INT0(外部中断 0)P3.3/INT1(外部中断 1)P3.4T0(定时器/计数器 0 外部输入)P3.5T1(定时器/计数器 1 外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD 外部数据存储器读选通)P3 端口还接收一些用于 Flash 闪存编程和程序验证的控制信号。RST:复位输入。当振荡器工作时,RST 引脚上的高电平持续超过两个机

10、器周期将使单片机复位。 WDT 溢出将导致该引脚输出高电平,可通过设置 SFR AUXR 中的 DISRT0 位(地址 8EH)来打开或关闭该引脚。 DISRT0 位默认为 RESET 输出高开状态。ALE/:访问外部程序存储器或数据存储器时,ALE(地址锁存使能)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE 仍然会以时钟振荡频率的 1/6 输出固定的正脉冲信号,因此它可以外部输出时钟或用于计时目的。请注意,每当访问外部数据存储器时,都会跳过一个 ALE 脉冲。该引脚还用于在对 F1ash 存储器进行编程期间输入编程脉冲 (PROG)。如有必要,可以通过设置特殊功能寄存器 (

11、SFR) 区域中位置 8EH 的位 D0 来禁用 ALE 操作。当该位被设置时,只有 M0VX 和 M0VC 指令之一,ALE,将被激活。此外,该引脚会被弱拉高。当单片机执行外部程序时,ALE 应设置为无效。程序存储许可()输出是外部程序存储器的读选通信号。 AT89S51从外部程序存储器取指令(或数据)时,每个机器周期有效两次,即输出两个脉冲。访问外部数据存储器时,没有双重有效信号。 /VPP:内容外部访问。为了使 CPU 只访问外部程序存储器(地址为 0000H-FFFFH),EA 端子必须保持低电平(接地)。需要注意的是,如果加密位 LB1 被编程,EA 端的状态将在复位时被锁存。如果

12、EA 端为高电平(接 VCC 端),CPU 将执行程序存储器中的指令。在对 F1ash 存储器进行编程时,+12V 编程电压 Vpp 被施加到该引脚。XTAL1:振荡器反相放大器和外部时钟发生器的输入端。(2) 时钟连接:(3) 复位方式:复位信号为高电平有效,高电平有效持续时间应大于24个时钟周期。本次训练的时钟频率为12HZ。复位后各寄存器的状态为: (PC)=0000H 。AT89S51单片机部分结构二、数模转换芯片DAC0832介绍:DAC0832 是双列直插式 8 位 D/A 转换器。它可以完成从数字输入到模拟(电流)输出的转换。右图和下图分别是DAC0832的管脚图和部分结构图。其

13、主要参数如下:分辨率为8位,转换时间为1s,满量程误差为1LSB,参考电压为(+10-10)V,电源为(+5+15)V,逻辑电平输入与 TTL 兼容。从图中可以看出,DAC0832中有两级锁存器,第一级锁存器称为输入寄存器,其内容的锁存信号为ILE,第二级锁存器称为DAC寄存器,其锁存信号也称为通道控制信号/XFER。DAC0832引脚图图中,当ILE为高电平时,片选信号/CS和写信号/WR1为低电平,输入寄存器控制信号为1。此时输入寄存器的输出随输入而变化。之后,当/WR1由低电平变为高电平时,控制信号变为低电平。此时数据被锁存到输入寄存器中,使输入寄存器的输出端不再随外部数据DB的变化而变

14、化。DAC0832引脚图对于二级锁存器,当传输控制信号/XFER和写信号/WR2均为低电平时,二级锁存控制信号为高电平,8位DAC寄存器的输出随输入而变化。之后,当/WR2由低电平变为高电平时,控制信号变为低电平,因此输入寄存器的信息被锁存到DAC寄存器中。图中其余引脚的功能定义如下:( 1 ) 、DI 7 DI 0 :8位数据输入端,DI 7为最高位。( 2 ) 、I OUT1 :模拟电流输出端1 ,当DAC寄存器中的数据全为1时,输出电流最大,当DAC寄存器中的数据全为0时,输出电流为0。( 3 ) 、I OUT2 :模拟电流输出端2 ,I OUT2和I OUT1之和为常数,即I OUT1

15、 + I OUT2 = 常数。( 4 ) 、R FB :反馈电阻端,DAC0832已经有反馈电阻,所以R FB端可以直接接外接运放的输出端,相当于在输出端和输入端接一个反馈电阻两端之间的运算放大器。( 5 ) 、V REF :参考电压输入端,该端可接正电压或负电压,它决定了从0到255的数字量转换的模拟电压值的幅值,V REF由( +10-10)V。 V REF端子连接到D/A 部分的 T 形电阻网络。( 6 ) 、Vcc:芯片供电电压,在(+5 15 )V左右。( 7 ) 、AGND:模拟地,即模拟电路的地端。( 8 ) 、DGND:数字地。DAC0832部分结构图DAC0832 可以处于三

16、种不同的操作模式:1、直通模式:当ILE接高电平,且、和都接数字地时,DAC处于直通模式。 8 位数字量一旦到达 DI7DI0 的输入端子,立即加到 8 位 D/A 转换器中。转换为模拟量。例如,在组成波形发生器的情况下,就需要使用这种方法,即将要产生的基本波形的数据存入ROM,不断地把数据取出送到DAC中进行处理。转换成电压信号。2、单缓冲模式:只要两个寄存器中的任何一个以直通模式连接,并使用另一个锁存数据,DAC就可以处于单缓冲工作模式。总则做法是将两者都接地并使 DAC 寄存器处于直通模式。另外,将ILE接高电平,接端口地址解码信号,接CPU的信号,这样就可以用一条MOVX指令来选择端口

17、并使和有效,开始D/A转换。3、双缓冲模式:双缓冲模式下的D/A转换主要在以下两种情况下需要。在程序的控制下,先将转换后的数据输入到输入寄存器中,然后在一定的时间开始D/A转换。这样可以先选择端口,然后将数据写入输入寄存器;然后可以选择端口,将输入寄存器内容写入DAC寄存器,实现D/A转换。在需要同步进行D/A转换的多通道DAC系统中,可以采用双缓冲的方式将需要转换的数据分时输入到各个DAC的输入寄存器中,然后启动一个转换命令同时进行多个 DAC 转换。首先,使用 3 条输出指令选择 3 个端口,分别将数据写入每个 DAC 的输入寄存器。当数据准备好后,进行一次写操作,同时对3个D/A的DAC

18、寄存器进行门控。同步转换。三、数码管驱动芯片74LS373介绍:74 LS 37374 LS 373 3 是一个具有三态输出的八维透明锁存器。有54/74S373和54/74 HC 373电路结构类型。其主要电气特性的典型值如下(不同厂家的具体值不同):模型 tPd PD54S373/74S373 7ns 525mW54LS373/74HC 373 17ns 120mW373的输出端子O0O7可以直接连接到总线上。当三态使能控制端OE为低电平时,O0O7为正常逻辑状态,可用于驱动负载或总线。当OE为高电平时,O0O7处于高阻态,即不驱动总线也不加载总线,但不影响锁存器的逻辑操作。当锁存使能端

19、LE 为高电平时,O 随数据 D 变化。当 LE 为低电平时,O 被锁存在已建立的数据电平上。当施加 LE 侧施密特触发器的输入迟滞时,AC 和 DC 抗扰度提高了 400mV。引脚说明:1OE低电平有效2、5、6、9、12、15、16、19Q0 至 Q7输出引脚3、4、7、8、13、14、17、18D0 至 D7输入引脚10接地地面11乐高电平有效20VCC电源四、运放OP07介绍:Op07芯片是一种低噪声、非斩波零稳双极运算放大器集成电路。由于 OP07 具有非常低的输入失调电压( 07AOP 最大为 25V),因此 OP07 在许多应用中不需要额外的调零。 OP07 具有低输入偏置电流(

20、 07AOP 为 2nA)和高开环增益( 07AOP 为 300V/mV)。这种低失调和高开环增益使得OP07特别适用于高增益测量设备和放大传感器的微弱信号等。特点: 超低偏移:最大 150V。低输入偏置电流:1.8nA。低失调电压漂移:0.5V/ C 。超稳定,时间:2V/月 最大高电源电压范围:3V 至 22VOP07引脚图 HYPERLINK :/ 838dz 引脚功能说明:1、8脚为偏置平衡(调零端),2脚反向输入,3脚正向输入,4脚接地,5脚空,6脚输出, 7脚接电源正极电源。5.7805和7905介绍:7805引脚说明:1脚输入,2脚接地,3脚输出。7905的引脚说明:1脚接地,2

21、脚输入,3脚输出。5、工作原理:按键从单片机的P3.0-P3.4端口输入加减法(加法波形)信号。经单片机处理后,P1.0-1.7口和P2.2P2.3口输出不同电平点亮。数码管显示相应的数值。同时,单片机从P0.0-P0.7端口输出高低电平,为数模转换芯片DAC0832提供输入信号。 DAC0832对信号进行数模转换后,提供相应的输入量给OP07,OP07对输入量进行转换反相。然后在输出端输出与数码管显示值相同的双向电压,从而完成设计要求。6、Proteus仿真图:七、Protel电路原理图:八、PCB图:九、实物图:10、程序流程图:开始显示初始化是否有键按下正弦波按键三角波按键矩形波按键按开

22、始显示初始化是否有键按下正弦波按键三角波按键矩形波按键按加1按键减1按键显示正弦波显示三角波显示矩形波数码管显示按键设定的电压值,并经单片机将其转换为相对应数字量,送到DA,进行数模转换N 扫描键盘,YDAC0832工作,将数字量转换为模拟量,并输出至OP07,经OP07将电流转化为电压输出复位按键判断电压值是否等于5VYN11. 程序:#include#include#define timer0_count 0 xfc18/定时器的初始值,设置time0为每1/1000秒中断一次const Seven_seg10=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x

23、82,0 xf8,0 x80,0 x90;/数码管显示const Seven_seg_point10=0 x40,0 x79,0 x24,0 x30,0 x19,0 x12,0 x02,0 x78,0 x00,0 x10 ;/数码管显示带小数点字符扫描1=0,扫描2=0; /用来分别显示2个数码管无符号字符计数器8=0 x08,0 x04,0 x02,0 x01;无符号字符 j=0,vout=0; /j_chip select,vout_voltage outputstatic void timer0_isr(void) interrupt TF0_VECTOR using 1 /timer0

24、 中断/次要功能只用于LED数码管的动态显示TR0=0; /停止时钟0TL0=(timer0_count & 0 x00ff);TH0=(timer0_count8); /设置time0的初始值TR0=1; /打开时钟P2=计数器j;开关(j) case 0:P1=seven_segscan1;break;案例1:P1=seven_seg_pointscan2;break;默认值:中断; /j是在其他情况下跳出循环j+;如果(j=2)j=0;static void timer0_initialize(void)/timer0的初始化/初始化定时器EA=0; /中断控制器IE - 停止接受中断T

25、R0=0; /停止计时TMOD=0 x01; /设置工作模式为1TL0=(timer0_count & 0 x00ff);TH0=(timer0_count8); /设置time0的初始值PT0=1; /设置timer0高优先级ET0=1; /内容timer0中断TR0=1; /开始计时EA=1; /打开所有中断void delay(void) /由于按钮去抖动 无符号字符 i,j;对于(i=0;i200;i+)for(j=0;j250;j+);void delay_out(void) /D/A转换延迟无符号字符 i,j;对于(i=0;i10;i+)for(j=0;j20;j+);void d

26、elay_square(void) / 方波延迟无符号字符 i,j;对于(i=0;i100;i+)for(j=0;j200;j+);int keypressedup()/按键检测程序检测“升压按钮”P3_0是否被按下如果(P3_0=0) 延迟();如果(P3_0=0)延迟();如果(P3_0=0)返回(1); /这里使用了三个delay()延迟来消除P3_0按下时的弹跳时间否则返回(0);int keypresseddown()/按键检测程序检测“降压按钮”P3_1是否被按下如果(P3_1=0) 延迟();如果(P3_1=0)延迟();如果(P3_1=0)返回(1); /这里使用了三个dela

27、y()延迟来消除P3_1按下时的弹跳时间否则返回(0); int keypressedtriangle() / “三角形按钮”P3_2是否被按下/while(P3_1=1);/当P3_1=1时,不进行任何操作,程序一直处于等待状态/ 延迟();如果(P3_2=0) 延迟();如果(P3_2=0)延迟();如果(P3_2=0)返回(1); /两次delay()延迟的目的是为了消除P3_1按下时的弹跳时间否则返回(0);int keypressedsin() / “正弦波键”P3_3是否被按下/while(P3_1=1);/当P3_1=1时,不进行任何操作,程序一直处于等待状态/ 延迟();如果(

28、P3_3=0) 延迟();如果(P3_3=0)延迟();如果(P3_3=0)返回(1); /两次delay()延迟的目的是为了消除P3_1按下时的弹跳时间否则返回(0);int keypressedsquare() /“方波按钮”P3_4是否被按下/while(P3_1=1);/当P3_1=1时,不进行任何操作,程序一直处于等待状态/ 延迟();如果(P3_4=0) 延迟();如果(P3_4=0)延迟();如果(P3_4=0)返回(1); /两次delay()延迟的目的是为了消除P3_1按下时的弹跳时间否则返回(0);void vout_up_down(void) /增加或减少输出电压if(keypressedup() /“Key+”被有效按下扫描1+;如果(扫描1=10)扫描1=0;扫描2+;如果(扫描2=5)扫描2=0;if(keypresseddown() / Keypresseddown 被有效按下扫描1-; 如果(扫描1=-1)扫描1=9; 扫描2-;如果(扫描2=-1)扫描2=4;vout=255*(scan2*10+scan1)/50;/输出个数P0=输出;delay_out();/输出是有D/A转换时间差,所以需要延迟void vout_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论