课程设计基于单片机的8路输入模拟信号数值显示电路设计.doc

上传人:laozhun 文档编号:4150514 上传时间:2023-04-07 格式:DOC 页数:29 大小:313.50KB
返回 下载 相关 举报
课程设计基于单片机的8路输入模拟信号数值显示电路设计.doc_第1页
第1页 / 共29页
课程设计基于单片机的8路输入模拟信号数值显示电路设计.doc_第2页
第2页 / 共29页
课程设计基于单片机的8路输入模拟信号数值显示电路设计.doc_第3页
第3页 / 共29页
课程设计基于单片机的8路输入模拟信号数值显示电路设计.doc_第4页
第4页 / 共29页
课程设计基于单片机的8路输入模拟信号数值显示电路设计.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《课程设计基于单片机的8路输入模拟信号数值显示电路设计.doc》由会员分享,可在线阅读,更多相关《课程设计基于单片机的8路输入模拟信号数值显示电路设计.doc(29页珍藏版)》请在三一办公上搜索。

1、单片机课程设计8路输入模拟信号数值显示电路姓 名: 李 花 同 组 人: 赵 家 专业班级: 电信0204班 学 号: 020910164 指导老师: 付永红 职 称: 副教授 计算机与电子工程系教务办制二00五年十二月 摘 要本系统是基于AT89S52单片机设计的,由具有8通道的模数转换芯片ADC0809采集模拟信号,并将采集到的数据送入AT89S52进行处理,其中ADC0809的1MHZ时钟脉冲直接由单片机的ALE脚输出的六分频时钟信号经过74LS74二分频得到。在设计中采用了精简电路及充分利用软件资源为原则,采用了软件译码,并利用三极管扩流来驱动数码管。同时兼顾系统的性能指标,采用了四位

2、数码管进行动态显示,分别显示模拟通道数以及采集到的模拟电压的数值。本系统经设计调试达到了预期的设计要求,能够标准地自动轮流显示8路模拟电压数值量,精度为0.02V,误差系数为0.01。关键词:模拟信号; AT89S52; ADC0809; 数值显示目 录一、设计任务及要求5二、 总体设计方案5三、 硬件电路设计61、模拟信号采集电路:62、数据处理模块电路73、数码显示模块电路8四、 软件设计91、主程序92、初始化程序93、显示子程序94、模数转换测量子程序9五、 检测与调试10六、 系统改进设想11七、 总结12参考文献12附件一:总的电路原理图13附件二:程序清单14附件三:数值量模拟量

3、转换对照表(ADC0809的参考电压为5V)19附件四:元件清单21一、 设计任务及要求设计一个8路输入模拟信号数值显示电路,具体要求如下:a.8路模拟信号输入;b.自动轮流显示8个通道模拟信号的数值;c.最小分辨率为0.02V;d.最大显示数值为255;f.测量电压最大值为5V。二、 总体设计方案8路输入模拟信号数值显示电路由A/D转换、数据处理及显示控制等组成。根据设计要求,要求能同时输入8路模拟信号,故在本设计中采用了8路的模数转换器AD0809;由单片机AT89C52提供控制信号控制AD0809,并对采集到的数据进行处理,通过软件编程实现8路模拟信号电压数值自动轮流显示;为得到8路模拟

4、信号的数值进行轮流显示,本设计中采用了四个数码管,通过软件直接译码,间接驱动4个共阳极数码管,并通过动态显示来轮流显示4个数码管。系统总体框图设计如下图所示:AD08098路模拟信号采集AT89C52控制信号数据信号数值显示电路图一 系统总体设计框图三、 硬件电路设计1、模拟信号采集电路:模拟信号采集需要用到模数转换器,而ADC0809具有较高的转换速度和精度,分辨率为8位,且受温度影响较小,能较长时间保证精度,重现性好,功耗较低,且具有8路模拟开关,满足本电路的设计要求,故在该电路模块中采用了ADC0809进行8路模拟信号采集,模数转换器ADC0809各引脚功能如图二所示:IN7IN0:8个

5、模拟量输入端;START:启动信号,当START为高电平时,A/D转换开始;EOC:转换结束信号,当A/D转换结束后,发出一个正脉冲,表示A/D转换完毕。此信号可用做A/D转换是否结束的检测信号,或向CPU申请中断的信号;ENABLE:输出允许信号。当此信号有效时,允许从A/D转换器的锁存器中读取数字量。此信号可作为ADC0809的片选信号,高电平有效;CLOCLK:实时时钟,可通过外接RC电路改变时钟频率; ALE:地址锁存允许,高电平有效。当ALE为高电平时,允许C,B,A所示的通道被选中,并把该通道的模拟量接入A/D转换器;C,B,A:通道号选择端子。C为最高位,A为最低位;D7D0:数

6、字量输出端;VREF(+),VREF(-):参考电压端子。用以提供D/A转换器权电阻的标准电平。对于一般单极性模拟量输入信号,VREF(+)=+5V,VREF(-)=0V;VCC:电源端子,接+5V;GND:接地端。ADC0809是由单一电源,+5V供电,模拟电压的输入范围为05V,故本设计允许输入的模拟电压最大值为5V。该电路模块的工作过程:第22脚ALE为地址锁存控制,当输入为高电平时,对地址信号进行锁存;6脚START为测试控制,当输入一个2us宽高电平脉冲时,就开始A/D转换;7脚EOC为A/D转换结束标志,当A/D转换结束时,7脚输出高电平;9脚ENABLE为A/D转换数据输出允许控

7、制,当ENABLE脚为高电平时,A/D转换数据从端口输出;则可读出数据。ADC0809的转换速度取决于芯片的时钟频率,要求时钟频率范围为:101280KHZ,在本设计中我们采用了由单片机ALE脚的六分频晶振信号再通过14024二分频得到,故ADC0809的工作频率为1MHZ,转换时间为1US。 图二 模拟信号采集电路2、数据处理模块电路该电路主要完成将接受到的ADC0809转换输出的二进制数值进行BCD码的转换,并根据设计要求完成8路数值轮流显示的功能,故需借助单片机来完成编程功能。在本设计中,采用了AT89S52单片机,AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统

8、可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,由单片机P0口接收二进制数据。设计中单片机中的I/O口都用做普通的输入输出口,由P1口接受AD0809送来的二进制数值,P0口是数码管数值输出口,P3.0P3.3作为数码管的位驱动口。为得到AD0809的时钟信号,在设计中,利用了单片机的ALE端口。ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8 位地址的输出脉冲。在一般情况下,

9、ALE 以晶振六分之一的固定频率输出脉冲, 为了得到1MHZ的时钟频率,在电路中采用了74LS74带预置和清除端的双D触发器74LS74,通过总原理图的接法,可以得到二分频器,连接至ALE端之后,可以得到满足AD0809转换的时钟脉冲。74LS74的引脚功能表如下表一所示。表一 74LS74功能表单片机的P2口输出控制信号,以此来控制ADC0809的转换。具体的数据处理过程,将在软件设计中进行详细介绍。3、数码显示模块电路根据设计要求,要求自动轮流显示模拟通道数,以及8路模拟电压数值,根据功能要求,结合实际的布局布线复杂程度及调试的难易程度,为简化电路起见,在设计中我们采用了动态显示,并用四个

10、连接的共阳数码管取代了单个的数码管,以做到调试简单,实现容易。由于根据数码管的参数要求,要求其驱动电流在10MA20MA之间,在电路中采用9012三极管进行扩流来驱动四个数码管;在本设计中段码显示是由P0口进行输出,为防止数码管灌入单片机的电流超出了允许的电流范围,在数码管与单片机的P1口之间接入了510欧姆的电阻。硬件电路图如图 所示。同样为了简化电路,且充分利用单片机的资源,采用了软件译码代替硬件译码的方式,来进行数值显示。由于人眼的视觉暂留时间为0.1S(100MS),所以每位显示的间隔不能超过20MS,并保持延时一段时间,以造成视觉暂留效果,给人看上去每个数码管总在亮,在本设计中每位数

11、值的显示时间为1MS,一个通道的数值显示包括了通道数及电压数值轮流显示,共轮番显示255次,所以每个通道的停留时间为1S。图三 数码显示模块电路 由于本设计中显示的数值不是实际的模拟电压值,而只是由AD0809采集的到模拟电压显示的二进制数,为使使用者能够通过数值得到实际的模拟电压数值,可以通过下表进行查阅,例如:如果数码管显示的数值为2136,则表示,模拟通道IN2的电压值为由数值量136代表的模拟电压2.6656V。详细转换情况见附件三。四、 软件设计1、主程序当进行一次测量后,将显示出每一通道的A/D转换值。每个通道的数据显示时间在1s左右。主程序在调用显示程序和测试程序之间循环,其流程

12、图如图四所示。2、初始化程序系统上电时,将70H77H内存单元清零,P2口置零。3、显示子程序采用动态扫描法实现四位数码管的数值显示。测量所得的A/D转换数据放在70H77H内存单元中。测量数据在显示时需经过转换成为十进制BCD码放在78H7BH中,其中7BH存放通道标志数。寄存器R3用来作为8路循环控制,R0用做显示数据地址指针。 4、模数转换测量子程序 模数转换测量子程序是用来控制对0809 8路模拟输入电压的A/D转换,并将对应的数值移入70H77H内存单元,其程序流程如图五所示。具体程序清单见附件二。启动测试取数据(P2.5=1)开始A/D转换结束p3.7=1?0809地址加1地址数小

13、于8?结束开始初始化调用A/D转换子程序调用显示子程序图四 主程序流程图 图五 A/D转换测量程序流程图 程序的资源分配:内部RAM70H77H是8路模拟信号经过AD转换得到的二进制数存储单元,78H7BH是分别作为数码管的的模拟通道数,电压数值的百位、十位、个位。五、 检测与调试按照总的电路图进行布局和布线,焊接完成之后,进行了系统检测,本电路的检测步骤如下:a.在通电之前,先检查电源与地端之间的电阻大小,在正常情况下,电阻值为无穷大,但实际情况为几千欧姆。如果电阻小,则说明电路中存在短路现象,可通过定点与动点结合的试触法进行测试,检查短路的引脚,并矫正。b.通电之后,检测单片机是否工作正常

14、,通过检测单片机的30脚ALE看是否有正弦波输出,且其电压值是否为电源电压的一半。如果单片机没工作,则看振荡电路是否正常,检测18,19脚的电压是否在2.2V左右。c.检测复位电路是否工作正常,按下复位开关之后,单片机的第9脚是否有高电平。如果没有,则检查复位电路是否连接正确。d.检测各集成芯片是否工作正常,即检测各芯片的电源端是否有电压。经检测完毕无异常情况之后,可以通过烧写器下载程序进行调试。以下是在本次调试过程当中遇到的问题:a.数码管只亮了后面两个,经检测数码管是好的,通过检测电路焊接情况,由于存在虚焊的情况,经矫正之后数码管亮了三个,为检查唯一一个不亮的数码管,采用了程序检测与硬件检

15、测相结合的方法,最后得出结论三极管是坏的,换掉三极管之后,数码管工作完全正常。b.在数码管显示时,发现数码管在初次采样显示为00,经调节程序的顺序并修改,从程序上电之初就开始轮流采集八路模拟电压,通过数码管显示,可以得到标准的电压数值量。c.为检测得到的电压数值量与其代表的模拟电压是否相一致,用数字电压表测量模拟量与理论计算得到的模拟量进行比较,在开始检测时出现了较大的差值,经过检测发现,电压输入端存在虚焊的现象,经矫正,得到的测量值与理论值之间的误差为0.01左右,满足题目的精度要求。六、 系统改进设想本设计可进一步进行指标和性能的完善,比如:可以扩大电压的量程范围,可以通过自动量程转换来实

16、现;可以采用C语言来编写,提高显示数值显示精度,并可显示模拟电压的实际值。七、 总结在本系统的设计制作过程中,经过两人的合作与努力,虽然在设计与制作过程中出现了各种各样的问题和情况,但是我们都能够冷静地进行硬件和软件检测,并针对性地进行纠正,在进行了全面检测及反复调试之后,该系统已经完全实现了所有功能,并达到了预期的所有指标。参考文献1李朝青单片机原理及接口技术北京1998166。2阎石数字电子技术基础北京1998.12150。3藩新民,王燕芳微型计算机控制技术北京2005.352。附件一:总的电路原理图附件二:程序清单主程序和中断程序入口 ORG 0000H ;程序执行开始地址 LJMP S

17、TART ;跳至START执行 ORG 0003H ;外中断0中断入口地址 RETI ;中断返回(不开中断) ORG 000BH ;定时器T0中断入口地址 RETI ;中断返回(不开中断) ORG 0013H ;外中断1中断入口地址 RETI ;中断返回(不开中断) ORG 001BH ;定时器T1中断入口地址 RETI ;中断返回(不开中断) ORG 0023H ;串行口中断入口地址 RETI ;中断返回(不开中断) ORG 002BH ;定时器T2中断入口地址 RETI ;中断返回(不开中断);初始化程序中的各变量CLEARMEMIO:CLR A ; MOV P2,A ;P2口置0 MOV

18、 R0,#70H ;内存循环清0(70H7BH) MOV R2,#0CH LOOPMEM: MOV R0,A INC R0 DJNZ R2,LOOPMEM MOV A,#0FFH MOV P0,A ;P0,P1,P3端口置1 MOV P1,A MOV P3,A RET ;子程序返回;主程序START: LCALL CLEARMEMIO ;初始化MAIN: LCALL TEST ;测量一次 LCALL DISPLAY ;显示数据一次 AJMP MAIN ;返回MAIN循环 NOP ;PC值出错处理 NOP ;空操作 NOP ;空操作 LJMP START ;重新复位启动DISPLAY: MOV

19、R3,#08H ;8路信号循环显示控制 MOV R0,#70H ;显示数据初址(70H77H) MOV 7BH,#00H ;显示通道路数(07)DISLOOP1: MOV A,R0 ;显示数据转为三位十进制BCD码存入 MOV B,#100 ;7AH,79H,78H显示单元内 DIV AB ;显示数据除100 MOV 7AH,A ;商入7AH MOV A,#10 ;A放入数10 XCH A,B ;余数与数10交换 DIV AB ;余数除10 MOV 79H,A ;商入79H MOV 78H,B ;余数入78H MOV R2,#0FFH ;每路显示时间控制4ms*255DISLOOP2: LCA

20、LL DISP ;调四位LED显示程序 DJNZ R2,DISLOOP2 ;每路显示时间控制 INC R0 ;显示下一路 INC 7BH ;通道显示数值加1 DJNZ R3,DISLOOP1 ;8路显示未完转DISLOOP1再循环 RET ;8路显示完子程序结束;LED共阳显示子程序,显示内容在78H7BH,数据在P1输出,列扫描在P3.0P3.3口DISP: MOV R1,#78H ;赋显示数据单元首址 MOV R5,#0FEH ;扫描字PLAY: MOV P1,#0FFH ;关显示 MOV A,R5 ;取扫描字 ANL P3,A ;开显示 MOV A,R1 ;取显示数据 MOV DPTR,

21、#TAB ;取段码表首址 MOVC A,A+DPTR ;查显示数据对应段码 MOV P1,A ;段码放入P1口 LCALL DL1MS ;显示1ms INC R1 ;指向下一地址 MOV A,P3 ;取P3口扫描字 JNB ACC.3,ENDOUT ;四位显示完转ENDOUT结束 RL A ;扫描字循环右移 MOV R5,A ;扫描字放入R5暂存 MOV P3,#0FFH ;显示暂停 AJMP PLAY ;转PLAY循环ENDOUT: MOV P3,#0FFH ;显示结束,端口置1 MOV P1,#0FFH RET ;子程序返回;LED数码显示管用共阳段码表,分别对应09,最后一个是熄灭符TA

22、B:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH;1ms延时子程序,LED显示用DL1ms: MOV R6,#14HDL1: MOV R7,#19HDL2: DJNZ R7,DL2 DJNZ R6,DL1 RET;模数转换测量子程序TEST: CLR A ;清累加器A MOV P2,A ;清P2口 MOV R0,#70H ;转换值存放首址 MOV R7,#08H ;转换8次控制 LCALL TESTART ;启动测试WAIT: JB P3.7,MOVD ;等A/D转换结束后转MOVD AJMP WAIT ;P3.7为0等待TESTAR

23、T: SETB P2.3 ;锁存测试通道地址 NOP ;延时2us NOP CLR P2.3 ;测试通道地址锁存完毕 SETB P2.4 ;启动测试,发开始脉冲 NOP ;延时2us NOP CLR P2.4 ;发启动脉冲完毕 NOP ;延时4us NOP NOP NOP RET ;子程序调用结束;取A/D转换数据至70H77H内存单元MOVD: SETB P2.5 ;0809输出允许 MOV A,P0 ;将A/D转换值移入A MOV R0,A ;放入内存单元 CLR P2.5 ;关闭0809输出 INC R0 ;内存地址加1 MOV A,P2 ;通道地址移入A INC A ;通道地址加1 M

24、OV P2,A ;通道地址送0809 CLR C ;清进位标志 CJNE A,#08H,TESTCON ;通道地址不等于8转TESTCONT再测试 JC TESTCON ;通道地址小于8转TESTCONT再测试 CLR A ;大于或等于8,A/D转换结束,恢复端口 MOV P2,A ;P2口置1 MOV A,#0FFH ; MOV P0,A ;P0置1 MOV P1,A ;P1置1 MOV P3,A ;P3置1 RET ;取A/D转换数据结束TESTCON: LCALL TESTART ;再发测试启动脉冲 LJMP WAIT ;跳至WAIT等待A/D转换结束信号 END ;程序结束附件三:数值

25、量模拟量转换对照表(ADC0809的参考电压为5V)数值量模拟量数值量模拟量数值量模拟量数值量模拟量数值量模拟量数值量模拟量10.0196510.99961011.97961512.95962013.93962514.919620.0392521.01921021.99921522.97922023.95922524.939230.0588531.03881032.01881532.99882033.97882534.958840.0784541.05841042.03841543.0184待添加的隐藏文字内容22043.99842544.978450.098551.0781052.05815

26、53.0382054.0182554.99860.1176561.09761062.07761563.05762064.037670.1372571.11721072.09721573.07722074.057280.1568581.13681082.11681583.09682084.076890.1764591.15641092.13641593.11642094.0964100.196601.1761102.1561603.1362104.116110.2156611.19561112.17561613.15562114.1356120.2352621.21521122.19521623

27、.17522124.1552130.2548631.23481132.21481633.19482134.1748140.2744641.25441142.23441643.21442144.1944150.294651.2741152.2541653.2342154.214160.3136661.29361162.27361663.25362164.2336170.3332671.31321172.29321673.27322174.2532180.3528681.33281182.31281683.29282184.2728190.3724691.35241192.33241693.312

28、42194.2924200.392701.3721202.3521703.3322204.312210.4116711.39161212.37161713.35162214.3316220.4312721.41121222.39121723.37122224.3512230.4508731.43081232.41081733.39082234.3708240.4704741.45041242.43041743.41042244.3904250.49751.471252.451753.432254.41260.5096761.48961262.46961763.44962264.4296270.

29、5292771.50921272.48921773.46922274.4492280.5488781.52881282.50881783.48882284.4688290.5684791.54841292.52841793.50842294.4884300.588801.5681302.5481803.5282304.508310.6076811.58761312.56761813.54762314.5276320.6272821.60721322.58721823.56722324.5472330.6468831.62681332.60681833.58682334.5668340.6664

30、841.64641342.62641843.60642344.5864350.686851.6661352.6461853.6262354.606360.7056861.68561362.66561863.64562364.6256370.7252871.70521372.68521873.66522374.6452380.7448881.72481382.70481883.68482384.6648390.7644891.74441392.72441893.70442394.6844400.784901.7641402.7441903.7242404.704410.8036911.78361

31、412.76361913.74362414.7236420.8232921.80321422.78321923.76322424.7432430.8428931.82281432.80281933.78282434.7628440.8624941.84241442.82241943.80242444.7824450.882951.8621452.8421953.8222454.802460.9016961.88161462.86161963.84162464.8216470.9212971.90121472.88121973.86122474.8412480.9408981.92081482.

32、90081983.88082484.8608490.9604991.94041492.92041993.90042494.8804500.981001.961502.942003.922504.9附件四:元件清单元件类型名 称数 量集成芯片AT89S52一片ADC0809一片74LS74一片数码管动态显示四位(共阳)一个电阻(欧姆)4.7K4个8.2K1个5107个1K8个2001个独石电容30PF2个10UF1个电解电容22PF1个三极管90124个石英晶振12MHZ1个其他按钮开关1个万用板(小号)1块底座40脚2个28脚1个14脚1个BZ EQU 34HORG 0000H AJMP ST

33、ARTORG 0030HSTART:MOV 34H,#88HMOV 30H,#00HMOV 31H,#00HMOV 32H,#00HMOV 33H,#00HST:ACALL YKJMMOV A,BZCJNE A,#00H,ST1;电源按钮CPL P2.4SETB P2.5SETB P2.6SETB P2.7CPL P1.2AJMP STST1:CJNE A,#11H,ST2CLR P2.4CLR P2.5SETB P2.6SETB P2.7CLR P1.2AJMP STST2:CJNE A,#22H,ST3CLR P2.4SETB P2.5CLR P2.6SETB P2.7AJMP STST3

34、:CJNE A,#33H,STCLR P2.4SETB P2.5SETB P2.6CLR P2.7AJMP STYKJM:JB P1.0,$;等待遥控信号出现MOV R6,#9SB: ACALL YS1;调用882微秒延时子程序JB P1.0,YK1;延时882微秒后判断P3.2脚是否出现高电平如果有就退出解码程序AJMP YK2YK1:AJMP YKENDYK2:DJNZ R6,SB;重复10次,目的是检测在8820微秒内如果出现高电平就退出解码程序;以上完成对遥控信号的9000微秒的初始低电平信号的识别。JNB P1.0, $ ;等待高电平避开9毫秒低电平引导脉冲ACALL YS2 ;延时

35、4.74毫秒避开4.5毫秒的结果码MOV R1,#30H ;设定1AH为起始RAM区MOV R2,#4 PP: MOV R3,#8JJJJ: JNB P1.0,$;等待地址码第一位的高电平信号LCALL YS1;高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态MOV C,P1.0;将P3.2引脚此时的电平状态0或1存入C中JNC UUU;如果为0就跳转到UUUJB P1.0,$;如果为1就等待高电平信号结束UUU: MOV A,R1;将R1中地址的给ARRC A;将C中的值0或1移入A中的最低位MOV R1,A;将A中的数暂时存放在R1中DJNZ R3,JJJJ;接收地址码的高8位INC R1;对R1中的值加1,换成下一个RAMDJNZ R2,PP ;接收完16位地址码和8位数据码和8位数据反码,存放在1AH/1BH/1CH/1DH的RAM中;以下对代码是否正确和定义进行识别;MOV A,1AH;比较高8位地址码;RL A,#00000000

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号