课程设计(论文)-多路数据采集系统.doc_第1页
课程设计(论文)-多路数据采集系统.doc_第2页
课程设计(论文)-多路数据采集系统.doc_第3页
课程设计(论文)-多路数据采集系统.doc_第4页
课程设计(论文)-多路数据采集系统.doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

西华大学课程设计说明书 1前言 单片机自20世纪70年代问世以来,作为微机算机一个很重要的分支,应用广泛,发展迅速,已对人类社会产生了巨大的影响。尤其是美国Intel公司产生的MCS-51系列单片机,由于其具有集成度高,处理功能强,可靠性好,系统结构简单,价格低廉,易于使用等优点,在我国已经得到广泛的应用,在智能仪器仪表,工业检测控制,电力电子,机电一体化等方面取得了令人瞩目的成果。尽管目前已有世界各大公司研制的各种高性能的不同型号的单片机不断问世,但由于MCS-51单片机易于学习,掌握,性能价格比高,另外,以MCS-51单片机基本内核为核心的各种扩展型,增强型的单片机不断推出,所以在今后若干年内,MCS-51系列单片机仍是我国在单片机应用领域首选的机型。在单片机的实时控制和智能仪表等应用系统中,控制或测量对象的有关变量,往往是一些连续变化的模拟量,如温度,压力,流量,速度等物理量。这些模拟量必须转换成数字量后才能输入到单片机中进行处理。单片机处理的结果,也常常需要转换为模拟信号。若输入的是非电信号,还需要经过传感器转换成模拟电信号。实现模拟量转换成数字量的器件称为模数转换器(ADC),数字量转换成模拟量的器件称为数模转换器(DAC)。在大规模集成电路技术迅速发展的今天,对于单片机应用系统的设计人员来说。只需要合理地选用商品化的大规模A/D,D/A集成电路芯片,了解他们的引脚,功能以及与单片机的接口方法。 本设计将着重从应用的角度,介绍典型的D/A,A/D集成电路芯片同MCS-51的硬件接口设计及软件的设计。2总体方案设计2.1方案论证 AD590温度转换系统ADC0809模数转换器AT89S51单片机采集系统DAC0832数模转换器CD4511译码器译码电路LED显示电路 图2.1 方案一原理图AD590温度转换系统AT89S51单片机采集系统频率电压转换器CD4511译码器译码电路LED显示电路LM331N电压频率转换器图2.2方案二原理图方案一:本方案以单片机为核心系统,工作原理是首先用温度传感器AD590把现场温度转变成与现场温度成线性关系的电压,转变的电压再由ADC0809模数转换器转换成数字量,再通过AT89S51单片机采集数字量并存储起来,单片机把采集回来的数据经过处理又再次传送到DAC0832模数转换器进行转换,把数字量转变成模拟量。并同时把采集的数据通过LED显示电路显示出来!方案二:本方案跟方案一一样同样以AT89S51单片机为核心,工作原理大致一样都是先用温度传感器AD590把现场温度转变成与现场温度成线性关系的电压,转变的电压通过LM331N电压频率转换器转变成频率,利用AT89S51单片机内部的计数器对频率进行计数,通过计数的大小来确定采集的温度大小,并同样单片机把采集回来的数据经过处理又再次传送到DAC0832模数转换器进行转换,把数字量转变成模拟量。并同时把采集的数据通过LED显示电路显示出来!2.2方案比较选择 方案一和方案二的工作原理大致一样,不同之处是采用ADC0809模数转换器还是LM331N电压频率转换器对温度的转换。两方案的成本大致一样,但是使用方案一可以采集8路数据,并且采集速度,精度都相对方案二高。所以本次设计选择方案一。3单元模块设计3.1测温电路 图3.1测温电路如图3.1所示,电位器R2用于调整零点,R4用于调整运放LF355的增益。调整方法如下:在0时调整R2,使输出V0=0,然后在100时调整R4使V0=100mV。如此反复调整多次,直至0时,V0=0mV,100时V0=100mV为止。最后在室温下进行校验。例如,若室温为25,那么V0应为25mV。冰水混合物是0环境,沸水为100环境。因为流过AD590的电流与热力学温度成正比,当电阻R1和电位器R2的电阻之和为1k时,输出电压V0随温度的变化为1mV/K。但由于AD590的增益有偏差,电阻也有偏差,因此应对电路进行调整,调整的方法为:把AD590放于冰水混合物中,调整电位器R2,使V0=273.2+25=298.2(mV)。但这样调整只保证在0或25附近有较高的精度。3.2复位电路 图3.2复位电路复位是单片机的初始化操作,只要给RESET引脚加上2个机器周期以上的高电平信号,就可使MCS51单片机复位。复位的主要功能是把PC初始化为0000H,使MCS51单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态,为摆脱死锁状态,也需按复位键重新启动。单片机的复位电路通常采用上电复位和按钮复位的两种方式。本设计采用图3.4上电复位电路.上电自动复位是通过外部复位电路的电容充电来实现的。只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。除PC之外,复位操作还对其它寄存器有影响,他们的复位状态如表3.1所示,由表可以看出来,复位时,SP = 07H;4个I/O端口P0-P3的引脚均为高电平,这在某些控制应用中,要考虑到引脚的高电平对外部控制电路的影响。寄存器复位状态寄存器复位状态PC0000HTMOD00HAcc00HTCON00HPSW00HTH000HB00HTL000HSP07HTH100HDPTR0000HTL100HP0-P3FFHSCON00HIPXXX00000BSBUFXXXXXXXXBIE0XX00000BPCON0XXX0000B 表3.1复位时片内各寄存器的状态 3.3时钟电路 图3.3时钟电路时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊地一拍一拍地工作。因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。单片机内部有一个用于构成振荡器的高增益反相放大器,该高增益反相放大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。这两个引脚跨接石英振荡器和微调电容,就构成一个稳定的自激振荡器,图3.3为单片机内部时钟方式的振荡器电路。晶体的频率越高,则系统的时钟频率也就越高,单片机的运行速度也就越快。但反过来运行速度快对储存器的速度也就越高。本设计为何采用6MHZ的晶振将在单片机与ADC0809接口电路中介绍。3.4LED显示电路 图3.4显示电路本设计使用动态扫描方法来显示温度的大小,在多位LED显示时,为了简化硬件电路,通常将所有位的段选线相应地并联在一起,由一个8位I/O口控制,形成段选线的多路复用。而各位的共阳极或共阴极分别由相应的I/O线控制,实现各位的分时选通。图3.4所示位一个4位7段LED动态显示器电路原理图。由于考虑到单片机的I/O口有限所以使用了CD4511译码器进行扩张I/O口。其中段选线占用一个8位I/O口,而位选线占用一个4位I/O口。由于各位的段选线并联,段码的输出对各位来说都是相同的。因此,同一时刻,如果各位位选都处于选通状态的话,4位LED将显示相同的字符。若要各位LED能够显示出与本位相应的显示字符,就必须采用扫描显示方式,即在某一时刻,只让某一位的位选线处于选通状态,而其他各位的位选线处于关闭状态,同时,段选线上输出相应位要显示字符的段码。这样同一时刻,4位LED中只有选通的那一位显示字符,而其他三位则是熄灭的。同样,在下一时刻,只让下一位的位选线处于选通状态,而其他各位的位选线处于关闭状态,同时,在段选线上输出相应位将要显示字符的段码,则同一时刻,只有选通位显示出相应的字符,而其他各位则是熄灭的。如此循环下去,就可以使各位显示出将要显示的字符,虽然这些字符是在不同时刻出现的,而同一时刻,只有以为显示,其他各位熄灭,但由于LED显示器的余辉和人眼的视觉暂留作用,只要每位显示间隔足够短,则可造成多为同时亮的假象,达到同时显示的目的。LED不同位显示的时间间隔不能太短,因为发光二极管从导通到发光有一定的延时,导通时间太短,发光太弱人眼无法看清。但也不能太长,因为毕竟要受限于临界闪烁频率,而且时间越长,占用CPU时间也越多。另外,显示位增多,也将占用大量的CPU时间,因此动态显示实质是以牺牲CPU时间来换取元件的减小。3.5单片机与ADC0809、DAC0832接口电路 图3.5单片机与ADC0809、DAC0832接口电路3.5.1单片机与ADC0809接口电路 用单片机控制ADC时,多数采用查询和中断控制两种方法。查询法是在单片机把启动命令送到ADC之后,执行别的程序,同时对ADC的状态进行擦互训,以检查ADC变换是否已经结束,如查询到变换已结束,则读入转换完毕的数据。 ADC0809与AT89S51片内无时钟,可利用AT89S51提供的地址锁存允许信号ALE经D触发器二分频后获得,ALE脚的频率是8051单片机时钟频率的1/6(但要注意的是,每当访问外部数据存储器时,将少一个ALE脉冲)。如果单片机时钟频率采用6MHZ,则ALE脚的输出频率为1MHZ,再二分频后为500KHZ,恰好符合ADC0809对时钟频率的要求。由于ADC0809具有输出三态锁存器,其八位数据输出引脚可直接与数据线总线相连。地址译码引脚A,B,C分别与地址总线的低三位A0,A1,A2相连,以选通IN0IN7中的一个通路。将P2.7(地址总线A15)作为片选信号,在启动和START连在一起,因此ADC0809在锁存通道地址的同时,启动并进行转换。在读取转换结果时,用低电平的读信号和P2.7脚经一级或非门后,产生的正脉冲作为OE信号,用以打开三态输出锁存器。由以上分析可知:在软件编写时,应令P2.7=A15=0;A0,A1,A2给出被选择的模拟通道的地址;执行一条输出指令,启动A/D转换;执行一条输入指令,读取转换结果。3.5.2单片机与DAC0832接口电路 单片机与DAC0832接口时,可以有三种方式:直通方式,单缓冲方式和双缓冲。单缓冲方式是指DAC0832内部的两个数据缓冲器有一个处于直通方式,另一个处于受单片机控制的锁存方式。在实际应用中,如果只有一路模拟量输出,或虽是多路模拟量输出但并不要求多路输出同步的情况下,就可采用单缓冲方式,本设计采用单缓冲方式。由图3.5可知,WR2和XFER接地,故DAC0832的八位DAC寄存器工作于直通方式。八位输入寄存器受CS和WR1端信号控制,而且CS由P2.6口来控制。举个例子,当单片机执行如下两条指令就可在WR1和CS上产生低电平信号,使DAC0832接收8031送来的数字量。指令:MOV R0 ,#BFH ;MOVX R0,A 3.6程序设计3.6.1程序流程图 程序初始化初设要转换的通道数启动A/D转换器等待A/D转换结束读取转换结果转存数据指向下一个通道LCD显示启动D/A转换器是否所有的A/D通道都转换完?从一号通道开始是否按了退出键退出程序否是否是3.6.2主程序 #include #include unsigned char xdata *adcpoint ;unsigned char xdata *dacpoint ;unsigned char idata *cunshu;unsigned char idata *cunshuer;unsigned char gewei,shiwei,baiwei,qianwei;unsigned int freq;unsigned char shu;unsigned char i;sbit LEDdian = P30; /小数点显示控制位unsigned int code zibiao256 =0,20,39,59,78,98,118,137,157,176,196,216,235,255,275,294,314,333,353,373,392,412,431,451,471,490,510,529,549,569,588,608,627,647,667,686,706,725,745,765,784,804,824,843,863,882,902,922,941,961,980,1000,1020,1039,1059,1078,1098,1118,1137,1157,1176,1196,1216,1235,1255,1275,1294,1314,1333,1353,1373,1392,1412,1431,1451,1471,1490,1510,1529,1549,1569,1588,1608,1627,1647,1667,1686,1706,1725,1745,1765,1784,1804,1824,1843,1863,1882,1902,1922,1941,1961,1980,2000,2020,2039,2059,2078,2098,2118,2137,2157,2176,2196,2216,2235,2255,2275,2294,2314,2333,2353,2373,2392,2412,2431,2451,2471,2490,2510,2529,2549,2569,2588,2608,2627,2647,2667,2686,2706,2725,2745,2765,2784,2804,2824,2843,2863,2882,2902,2922,2941,2961,2980,3000,3020,3039,3059,3078,3098,3118,3137,3157,3176,3196,3216,3235,3255,3275,3294,3314,3333,3353,3373,3392,3412,3431,3451,3471,3490,3510,3529,3549,3569,3588,3608,3627,3647,3667,3686,3706,3725,3745,3765,3784,3804,3824,3843,3863,3882,3902,3922,3941,3961,3980,4000,4020,4039,4059,4078,4098,4118,4137,4157,4176,4196,4216,4235,4255,4275,4294,4314,4333,4353,4373,4392,4412,4431,4451,4471,4490,4510,4529,4549,4569,4588,4608,4627,4647,4667,4686,4706,4725,4745,4765,4784,4804,4824,4843,4863,4882,4902,4922,4941,4961,4980,5000;void DELAY(void);void DISPLAY(void);void CHULI(unsigned char);unsigned char DAC(void);void main(void) while(1) adcpoint =0x7FF8; dacpoint =0xBFFF; LEDdian = 0; for (i =0 ; i 2;i+) DAC(); CHULI(shu); DISPLAY(); unsigned char DAC(void) /DAC和ADC转换函数 *adcpoint =0x00; DELAY(); shu = *adcpoint; *cunshu = shu ; *dacpoint = shu; cunshu+; adcpoint+; return shu ;void DELAY(void)/延时程序 static unsigned char x,y; for(x=0;x 20;x+) for(y=0;y 20;y+); void CHULI(unsigned char xunzhi) /调用显示函数时先 freq = zibiaoxunzhi; /对输出数据处理gewei = freq%10;shiwei = (freq/10)%10;baiwei = (freq/100)%10;qianwei = freq/1000;gewei = gewei | 0x10;shiwei= shiwei | 0x20;baiwei = baiwei | 0x40;qianwei = qianwei | 0x80; void DISPLAY(void)/显示函数P1 = gewei; DELAY(); P1 = shiwei; DELAY(); P1 = baiwei; DELAY(); P1 = qianwei; LEDdian = 1; DELAY();4特殊器件4.1DAC0809数模转换器 图4.1ADC0809引脚图ADC是一种逐次逼近式八路模拟输入,八位数字量输出的A/D转换器。其引脚图如图4.1所示。ADC0809共有28引脚,采用双列直插式封装。1.IN0IN7是八路模拟信号输入端。2.D0D7是八位数字量输出端。3.A,B,C与ALE控制八路模拟通道的切换,A,B,C分别与三根地址线或数据线相连,三者编码对应八个通道地址口。C,B,A = 000 111分别对应IN0IN7通道地址。4.OE,START,CLK为控制信号端,OE为输出允许端,START为启动信号输入端,CLK为时钟信号输入端。5.Vr+ ,Vr-为参考电压输入端。 ADC0809的结构框图如图4.2所示。0809是采用逐次逼近的方法完成A/D转换的。由单一的+5V电源供电;片内带有锁存功能的八路选一的模拟开关,由C,B,A的编码来决定所选的通道。0809完成一次转换需100us左右。输出具有TTL三态锁存缓冲器,可直接连到单片机的数据总线上。通过适当的外接电路,0809可对0到5V的模拟信号进行转换。ADC0809工作过程如下:首先用指令选择0809的一个模拟输入通道,当执行MOVX DPTR ,A时产生一个启动信号给START引脚送入脉冲,开始对选中通道转换。当转换结束后发出结束信号,置EOC脚为高电平,该信号可作为中断申请对选中通道转换。当读允许信号到,OE端有高电平,则可以读出转换的数字量。利用MOVX A,DPTR把该通道转换结果读到A累加器中。 图4.2ADC0809结构图4.2DAC0832模数转换器 图4.3DAC0832引脚图 图4.4DAC0832原理框图4.2.1DAC0832其主要特性如下1. 分辨率8位;2. 电流输出,稳定时间位12us;3. 可双缓冲,单缓冲或直接数字输入;4. 只需在满量程下调整其线性度;5. 单一电源供电(+5V+15V);6. 低功耗,20mv。4.2.2各引脚功能如下 DI0DI7为8位数字信号输入端,与CPU数据总线相连,用于输入CPU送来的待转换数字量,DI7为最高位。CS:片选端,当CS为低电平时,本芯片被选中工作。ILE:数据锁存允许控制端,高电平有效。WR1:第一级输入寄存器写选通控制,低电平有效,当CS=0,ILE=1,WR1=0时,数据信号被锁存到第一级8位输入寄存器中。XFER:数据传送控制,低电平有效。WR2:DAC寄存器写选通控制端,低电平有效,当XFER=0,WR1=0,输入寄存器状态传入8位DAC寄存器中。Iout1:D/A转换器电流输出1端,输入数字量全“1”时,Iout1最大,输入数字量全为“0”时,Iout1最小。Iout2:电流输出2端,Iout1 + Iout2=常数。Rfb:外部反馈信号输入端,内部已有反馈电阻,根据需要也可外接反馈电阻。Vcc:电源输入端,可在(+5V+15V)范围内。Vref:参考电压输入端,电压范围(-10V+10V)之间。DGND:数字信号接地端。AGND:模拟信号接地端,最好也参考电压共地。DAC0832内部由三部分电路组成,如图4.4所示。“8位输入寄存器”用于存放CPU送来的数字量,使输入数字量得到缓冲和锁存,由LE1加以控制。“8位DAC寄存器”用于存放待转换数字量,由LE2控制。“8位D/A转换电路”由8位T型电阻网络和电子开关组成,电子开关受“8位DAC寄存器”输出控制,T型电阻网络能输出和数字量成正比的模拟电流。因此,DAC0832通常需要外接运算放大器才能得到模拟输出电压。 4.3温度传感器集成温度传感器AD590 是美国模拟器件公司生产的集成两端感温电流源。一 主要特性AD590是电流型温度传感器,通过对电流的测量可得到所需要的温度值。根据特性分挡,AD590的后缀以I,J,K,L,M表示。AD590L,AD590M一般用于精密温度测量电路,其电路外形如图3-2所示,它采用金属壳3脚封装,其中1脚为电源正端V;2脚为电流输出端I0;3脚为管壳,一般不用。集成温度传感器的电路符号如图3-2所示。图3-2 AD590外形(图1)及电路符号(图2)1、流过器件的电流(A)等于器件所处环境的热力学温度(开尔文)度数,即:I T/T=1A /K式中:IT 流过器件(AD590)的电流,单位A。T热力学温度,单位K。2、 AD590的测温范围-55- +150。3、 AD590的电源电压范围为4V-30V。电源电压可在4V-6V范围变化,电流IT变化1A,相当于温度变化1K。AD590可以承受44V正向电压和20V反向电压,因而器件反接也不会损坏。4、输出电阻为710M。5、精度高。AD590共有I、J、K、L、M五档,其中M档精度最高,在-55+150范围内,非线形误差0.3。2 AD590的工作原理在被测温度一定时,AD590相当于一个恒流源,把它和530V的直流电源相连,并在输出端串接一个1k的恒值电阻,那么,此电阻上流过的电流将和被测温度成正比,此时电阻两端将会有1mVK的电压信号。其基本电路如图3-3所示。图3-3 AD590内部核心电路图3-3是利用UBE特性的集成PN结传感器的感温部分核心电路。其中T1、T2起恒流作用,可用于使左右两支路的集电极电流I1和I2相等;T3、T4是感温用的晶体管,两个管的材质和工艺完全相同,但T3实质上是由n个晶体管并联而成,因而其结面积是T4的n倍。T3和T4的发射结电压UBE3和UBE4经反极性串联后加在电阻R上,所以R上端电压为UBE。因此,电流I1为: I1UBER(KTq)(lnn)R对于AD590,n8,这样,电路的总电流将与热力学温度T成正比,将此电流引至负载电阻RL上便可得到与T成正比的输出电压。由于利用了恒流特性,所以输出信号不受电源电压和导线电阻的影响。图3中的电阻R是在硅板上形成的薄膜电阻,该电阻已用激光修正了其电阻值,因而在基准温度下可得到1AK的I值。4.4单片机AT89S51AT89S51是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4k bytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中。 图4.1 AT89S51原理图4.4.1引脚功能说明Vcc:电源电压GND:地P0口:P0口是一组8位漏极开路型双向I0口,也即地址数据总线复用口。作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“l”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在F1ash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。P1口:Pl 是一个带内部上拉电阻的8位双向IO口,Pl的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“l”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。Flash编程和程序校验期间,Pl接收低8位地址。P2 口:P2 是一个带有内部上拉电阻的8 位双向IO 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVXDPTR指令)时,P2口送出高8位地址数据。在访问8 位地址的外部数据存储器(如执行MOVXRi 指令)时,P2 口线上的内容(也即特殊功能寄存器(SFR)区中P2寄存器的内容),在整个访问期间不改变。Flash编程或校验时,P2亦接收高位地址和其它控制信号。端口引脚第二功能P1.5MOSI(用于ISP编程)P1.6MISO(用于ISP编程)P1.7SCK (用于ISP编程) 图4.2 P1口引脚功能表P3 口:P3 口是一组带有内部上拉电阻的8 位双向I0 口。P3 口输出缓冲级可驱动(吸收或输出电流)4 个TTL逻辑门电路。对P3口写入“l”时,它们被内部上拉电阻拉高并可作为输入端口。作输入端时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。P3口除了作为一般的I0口线外,更重要的用途是它的第二功能,如下表所示:P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。 端口引脚第二功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INT0(外中断0)P3.3INT1(外中断1)P3.4T0(定时计数器0外部输入)P3.5T1(定时计数器1外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通) 图4.2 P3口引脚功能表RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。WDT 溢出将使该引脚输出高电平,设置SFR AUXR的DISRT0 位(地址8EH)可打开或关闭该功能。DISRT0位缺省为RESET输出高电平打开状态。ALEPROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE 仍以时钟振荡频率的16 输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对F1ash存储器程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH 单元的D0 位置位,可禁止ALE 操作。该位置位后,只有一条M0VX和M0VC指令ALE才会被激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S51 由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。当访问外部数据存储器,没有两次有效的PSEN信号。EAVPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000HFFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。F1ash存储器编程时,该引脚加上+12V的编程电压Vpp。XTALl:振荡器反相放大器及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。4.4.2特殊功能寄存器电源空闲标志:电源空闲标志(POF)在特殊功能寄存器SFR 中PCON的第4 位(PCON.4),电源打开时POF 置“1,它可由软件设置睡眠状态并不为复位所影响。存储器结构:MCS-51单片机内核采用程序存储器和数据存储器空间分开的结构,均具有64KB外部程序和数据的寻址空间。程序存储器:如果EA引脚接地(GND),全部程序均执行外部存储器。在AT89S51,假如EA接至Vcc(电源+),程序首先执行地址从0000H0FFFH(4KB)内部程序存储器,再执行地址为1000HFFFFH(60KB)的外部程序存储器。数据存储器:AT89S51 的具有128字节的内部RAM,这128字节可利用直接或间接寻址方式访问,堆栈操作可利用间接寻址方式进行,128字节均可设置为堆栈区空间。看门狗定时器(WDT):WDT是为了解决CPU程序运行时可能进入混乱或死循环而设置,它由一个14bit计数器和看门狗复位SFR(WDTRST)构成。外部复位时,WDT默认为关闭状态,要打开WDT,用户必须按顺序将01EH和0E1H写到WDTRST寄存(SFR地址为0A6H),当启动了WDT,它会随晶体振荡器在每个机器周期计数,除硬件复位或WDT 溢出复位外没有其它方法关闭WDT,当WDT溢出,将使RST引脚输出高电平的复位脉冲。使用看门狗(WDT):打开WDT需按次序写01EH和0E1H到WDTRST寄存器(SFR的地址为0A6H),当WDT打开后,需在一定的时候01EH 和0E1H 到WDTRST 寄存器以避免WDT 计数溢出。14 位WDT 计数器计数达到16383(3FFFH),WDT 将溢出并使器件复位。WDT 打开时,它会随晶体振荡器在每个机器周期计数,这意味着用户必须在小于每个16383 机器周期内复位WDT,也即写01EH和0E1H到WDTRST寄存器,WDTRST为只写寄存器。WDT计数器既不可读也不可写,当WDT溢出时,通常将使RST引脚输出高电平的复位脉冲。复位脉冲持续时间为98Tosc,而Tosc=1Fos(晶体振荡频率)。为使WDT工作最优化,必须在合适的程序代码时间段周期地复位WDT防止WDT溢出。掉电和空闲状态时的WDT:掉电时期,晶体振荡停止,WDT也停止。掉电模式下,用户不能再复位WDT。有两种方法可退出掉电模式:硬件复位或通过激活外部中断。当硬件复位退出掉电模式时,处理WDT 可象通常的上电复位一样。当由中断退出掉电模式则有所不同,中断低电平状态持续到晶体振荡稳定,当中断电平变为高即响应中断服务。为防止中断误复位,当器件复位,中断引脚持续为低时,WDT并未开始计数,直到中断引脚被拉高为止。这为在掉电模式下的中断执行中断服务程序而设置。为保证WDT在退出掉电模式时极端情况下不溢出,最好在进入掉电模式前复位WDT。在进入空闲模式前,WDT 打开时,WDT 是否继续计数由SFR 中的AUXR 的WDIDLE 位决定,在IDLE 期间(位WDIDLE=0)默认状态是继续计数。为防止AT89S51从空闲模式中复位,用户应周期性地设置定时器,重新进入空闲模式。位WDIDLE被置位,在空闲模式中WDT将停止计数,直到从空闲(IDLE)模式中退出重新开始计数。定时器0和定时器1:AT89S51 的定时器0 和定时器1 操作与AT89C51 一样。 中断:AT89S51共有5个中断向量:2个外中断(INT0和INT1),2个定时中断(Timer0和Timer1)和一个串行中断。这些中断源各自的禁止和使能位参见特殊功能寄存器的IE。IE也包含总中断控制位EA,EA清0,将关闭所有中断。值得注意的是表4中的IE.6和IE.5没有定义,用户不要访问这些位,它是保留为以后的AT89产品作扩展用途。定时器0和定时器1 的中断标志TF0和TF1,它是定时器溢出时的S5P2时序周期被置位,该标志保留至下个时序周期。空闲节电模式:在空闲工作模式状态,CPU保持睡眠状态而所有片内的外设仍保持激活状态,这种方式由软件产生。此时,片内RAM和所有特殊功能寄存器的内容保持不变。空闲模式可由任何允许的中断请求或硬件复位终止。需要注意的是,当由硬件复位来终止空闲工作模式时,CPU 通常是从激活空闲模式那条指令的下一条指令开始继续执行程序的,要完成内部复位操作,硬件复位脉冲要保持两个机器周期(24个时钟周期)有效,在这种情况下,内部禁止CPU 访问片内RAM,而允许访问其它端口。为了避免在复位结束时可能对端口产生意外写入,激活空闲模式的那条指令后一条指令不应是一条对端口或外部存储器的写入指令。掉电模式:在掉电模式下,振荡器停止工作,进入掉电模式的指令是最后一条被执行的指令,片内RAM和特殊功能寄存器的内容在终止掉电模式前被冻结。退出掉电模式的方法是硬件复位或由处于使能状态的外中断INT0和INT1激活。复位后将重新定义全部特殊功能寄存器但不改变RAM 中的内容,在Vcc恢复到正常工作电平前,复位应无效,且必须保持一定时间以使振荡器重启动并稳定工作。5系统调试 首先检查设计电路原理图的接线是否合理,各连接点是否准确无误。使用仿真软件ISIS软件先对本设计的各模块进行理论仿真,在对温度传感器电路进行仿真时,因为软件不能模拟出真实的温度环境,所以该模块不能得到有效的理论数据。使用单片机Keil Cx51 软件编写设计所需要的程序,并通过Keil软件对程序进行编译查错。打开Keil 软件选择DEBUG中的star/stop debug signed按钮进行单步运行仿真。调出P0,P1,P2,P3的窗口,查看各接口的状态是否符合理论所期待的值。分配ADC0809和DAC0832的物理地址,以免产生地址重叠。考虑到ADC0809的转换时间,因此要适当地调试延时程序,延时时间不能太长也不能太短,延时时间过长会使得采集速度过慢,

温馨提示

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

评论

0/150

提交评论