课程设计正文

更新时间:2024-06-12 00:15:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1 设计课题任务、功能要求说明及设计方案介绍

1.1 设计课题任务

(1)该数字电压表能够测量电压范围0—5V,测量精度小数点后两位。 (2)该电压表按键复位后能自动显示系统提示符“P.”,进入测量准备状态。 (3)按测量开始键开始测量,并将测量值显示在数码管显示器上。 (4)按测量结束键则自动返回“P.”状态。

1.2 功能要求说明

电路通电或按复位键时,显示“P.\字符,再按功能键键1,进入电压测试状态,通过改变电位器的阻值改变模拟输入电压,不断的将模拟电压转换成数字量,通过数码管显示出所测得的模拟电压。再按功能键键2退出电压测试状态,同时显示字符“P.”。在测试中测试的电压值必须和实际的电压值不超过0.02V的电压。在改变电压时,能够准确的侧量出电压的变化值。

1.3 设计方案

要实现电压的测试有多种方案,其中两种比较简单的且精确度比较高的可以分别采用并行ADC0809芯片和TLC549芯片,其中各芯片都有可取之处。

方案一:用TLC549串行芯片作模数采样芯片,占用的单片机的I/O口线少,且占用电路面积小,只是编程复杂点。

方案二:用ADC0809并行芯片作模数采样芯片,需要占用一个I/O口,不过可以循环采样8路模拟通道,占用板子的面积大,编程相对来说简单点。

本次课程设计采用方案二,采用常用的AT89S52单片机作为控制芯片,ADC0809并行芯片作模数采样芯片, ADC0809的CLOCK时钟信号脚接单片机的ALE脚经过74LS74双D触发器4分频后的信号,OE脚反接一个或非门到单片机的P3.7脚,ALE和START脚反接一个或非门到单片机的P3.6脚,EOC脚顺接一个非门到单片机的P3.2脚,ADC0809的3个通道选通地址端都接地,使芯片选通通道IN0,IN0脚接输入电压(及测试电压),ADC0809通过采样进来的数据信号送给单片机,再通过数据计算可以得到电压值,再通过显示电路,将所求得的电压值显示出来。通过调节连接IN0引脚的电位器及可调电压是在0~5V左右变化。

- 1 -

1.4 数字电压表工作原理

数字电压原理:这里主要是利用ADC0809模数芯片,ADC0809芯片的基准电压脚外接电压为5V,则最大可以测得的电压为5V,ADC0809芯片的模拟输入脚通过电位器接5V电压,进行模拟采样,通过调整电位器的值改变模拟量。输入的模拟量经过ADC0809芯片内部的8位逐次逼近A/D转换器,转换成8为二进制数,其最小的分辨率为0.0196(VREF=0.0196V,即5v进行256等份),D为转化的数字量,再通过 VIN?D?VREF/255可以求得模拟电压,最后通过数码管就可将所测得电压显示出来。数字电压表系统整体框图如下图1所示。

AT89S52 单 片 机 时钟电路 A/D转换电路 测量电压输入 复位电路 显示系统 按键电路

图1 整体框图

- 2 -

2 硬件系统设计

2.1 单片机系统

接口分配电路设计如右图2所示: P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/ 地址的第八位。在这里P0口作为输入与输出分别与ADC0809的输出端和数码管显示的输入端相连,且P0外部被阻值为470?的电阻拉高。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”

时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89S52的一些特殊功能口,在这里用到了P3.2 /INT0(外部中断0)、 P3.6 /WR(外部数据存储器写选通)、P3.7 /RD(外部数据存储器读选通)。

- 3 -

2.2 A/D转换模块

接口分配电路设计如图3所示: IN0~IN7为8路模拟量输入端,这里只接一路电压信号,其输入信号是由直流电源及可调电阻提供。

OUT1~OUT8为8位二进制数字量输出端,其另一端连接到AT89S52单片机进行数值转换。

ADDA、ADDB、ADDC为3位片选地址输入线,用于选通8路模拟输入中的一路。

ALE为地址锁存允许信号,由单片机P3.6口写信号与接地信号相或取反输入,高电平有效。

CLOCK为时钟信号输入端,在这里要经过单片机的ALE脚4分频后接入信

图3 A/D转换电路

号频率就为500KHz,分频电路见图5总电路图上的接法。

START为 A/D转换启动脉冲输入端,由单片机P3.6口写信号与接地信号或取反输入一个正脉冲使其启动(脉冲上升沿使0808复位,下降沿启动A/D转换)。

EOC为 A/D转换结束信号,当A/D转换结束时,此端输出一个高电平取反给P3.2口(转换期间一直为低电平)。

OE为数据输出允许信号,高电平有效。当A/D转换结束时,此端由单片机P3.7读信号与接地信号相或后取反输入一个高电平,才能打开输出三态门,输出数字量。

2.3复位电路和时钟电路及按键

单片机在启动运行时都需要复位,使CPU和系统中的其他部件都处于一个确定的初始状态,并从这个状态开始工作。复位完成后,如果RST端继续保持高电平,单片机就一直处于复位状态,只要RST恢复低电平后,单片机才能进入其他工作状态。单片机的复位方式有上电自动复位和手动复位两种,是单片机统常用的上电复位和手动复位组合电路,只要Vcc上升时间不超过1ms,它们都能很好的工作[1]。

- 4 -

单片机中CPU每执行一条指令,都必须在统一的时钟脉冲的控制下严格按时间节拍进行,而这个时钟脉冲是单片机控制中的时序电路发出的。单片机芯片内部有一个高增益反相放大器,用于构成震荡器,XTAL1为该放大器的输入端,XTAL2为该放大器输出端,但形成时钟电路还需附加其他电路[1]。

在测量时需要按键选择,本设计直接在单片机的P1.0和P1.1口上接上两个按键分别做测量开始键和测量结束键。

本设计系统采用内部时钟方式,利用单片机内部的高增益反相放大器,外部电路简,只需要一个晶振和 2个电容即可,电路中的器件选择可以通过计算和实验确定,也可以参考一些典型电路的参数,电路中,电容器C1和C2对震荡频率有微调作用,通常的取值范围是30±10pF,在这个系统中选择了33pF;石英晶振选择范围最高可选24MHz,它决定了单片机电路产生的时钟信号震荡频率,在本系统中选择的是12MHz,因而时钟信号的震荡频率为12MHz。复位电路和时钟电路及按键图如图4所示。

图4 复位电路和时钟电路及按键

2.4 数码管显示系统设计

由于单片机的并行口不能直接驱动LED显示器,所以,在一般情况下,必须采用专用的驱动电路芯片,使之产生足够大的电流,显示器才能正常工作[7]。如

- 5 -

果驱动电路能力差,即负载能力不够时,显示器亮度就低,而且驱动电路长期在超负荷下运行容易损坏,因此,LED显示器的驱动电路设计是一个非常重要的问题。

在实物LED驱动电路的设计上,可以利用单片机P0口上外接的上拉电阻来实现,即将LED的A-G段显示引脚和DP小数点显示引脚并联到P0口与上拉电阻之间,这样,就可以加大P0口作为输出口德驱动能力,使得LED能按照正常的亮度显示出数字。为了简化数字式直流电压表的电路设计,这里直接将数码管接在P0口和P2口上,如图5所示。

图5数码管显示电路图

2.5 总体电路设计

经过以上的设计过程,可设计出基于单片机的简易数字直流电压表硬件电路原理图如图6所示。

图6 数字电压表电路图

简易数字直流电压表的硬件电路已经设计完成,就可以选取相应的芯片和元器件,利用Proteus软件绘制出硬件的原理,并仔细地检查修改,直至形成完善

- 6 -

的硬件原理图。但要真正实现电路对电压的测量和显示的功能,还需要有相应的软件配合,才能达到设计要求。

2.6 PCB图及元器件面板布局图和清单

元器件清单见附录1 电路原理图见附录2

PCB图及元器件布局图见附录3

- 7 -

3 软件系统设计

3.1 程序设计思路及流程图

整个系统软件设计分为两个部分,作为主控的单片机的软件设计及作为数据采集器ADC0809的软件设计。系统采用模块化编程,将各部分功能分别实现,主要的功能子程序有:键盘扫描,数据采集及转换、数值显示。主程序流程图如图7所示。

开始系统初始化显示提示符调用键扫子程序是否测量NY取相应通道数据进行数据转换调用电压数值显示子程序结束

图7 主程序流程图

- 8 -

3.2 键盘扫描子程序

当单片机开始工作时,扫描键盘,当P1.0电位变为0后,是测量开始键按下,则去执行测量程序,若在测量的过程中P1.1的电位变为0,是测量结束键按下,则去执行结束显示程序,键盘扫描程序流程图如图8所示。

开始读取键盘数据测量开始键按下Y测量开始N测量结束键按下YN显示提示符结束

图8 键盘扫描程序

3.3 数据采集及转换子程序

用查询方式查询ADC0809的EOC脚的电位是否为1,若为1则转换结束。在测量程序中,选择通道0,向ADC0809发出启动转换信号后。当查询到EOC电位变为1后,转换结束,读取转换结果,并将数据转化成数码管显示的电压量,调用显示程序,最后又回到开始的启动转换信号继续循环进行数据的转换与显示,在这个过程还要检查是否有测量结束的信号,如果有则执行结束信号,若没有就继续测量,数据采集及转换程序流程图如图9所示。

- 9 -

开始选择通道开始转换查询转换是否完成?Y读取转换结果N进行数据转化保存数据转化结果结束

图9 数据采集及转换

3.4 数值电压显示子程序

电压显示子程序采用动态扫描实现四位数码管的数值显示,在采用动态扫描显示方式时,要使得LED显示的比较均匀,又有足够的亮度,需要设置适当的扫描频率,当扫描频率在70HZ左右时,能够产生比较好的显示效果,一般可以采用延时,每位LED延时3ms左右。本设计为了简化程序,在每位LED点亮时延时2.5ms左右。用内部RAM 30H~32H单元保存要显示的数值,当程序调用显示程序时,就从这三个单元中取出数据转换后BCD数值,进行查表后,将通过P0口送到数码管上作为段控显示,同时还要在P2口设置相应的位控一起点亮数码管就得到了显示的电压值,数值电压显示流程图如图10所示。

- 10 -

开始读取保存数据按位查表将查得数据送数码管段控送入相应的位控返回

图10 数值电压显示流程图

3.5 软件系统程序清单

程序清单见附录4

- 11 -

4 设计结论、设计结果及误差分析

4.1 硬件及软件调试

(1)硬件调试

硬件调试的主要任务是排除硬件故障,包括设计错误及人为接线错误。 用万用表逐步检查电路线路及元器件是否连接正确或短路,首先确保芯片的连接不会出错,不会因为电压过高而烧毁芯片,在检查确定没有错误后方能连接电源开始测试,在测试过程中又错误的要认真检查数据连线是否正确,观察数码管显示的数字是否正常。 (2)软件调试

软件调试的任务是利用开发工具进行仿真调试,发现和改正程序的错误,同时也能检查硬件的错误。程序调试首先要进行每个模块的检查,调试各项子程序是否功能正确,有错误的可以单步调试认真对比软件中个寄存器、RAM等数据的变化。

在测试程序系统的时候,按键一则是开始测量,显示出电压值;按键二则是结束测量,显示提示符。

4.2 软件仿真及实物测试

- 12 -

1.软件仿真

(1)当IN0口输入电压值为0V时,显示结果如图11所示,测量误差为0。

图11 输入电压为0V时,LED的显示结果

(2)当IN0口输入电压值2.45V时,显示结果如图12所示,测量误差为0.4%。

图12 输入电压为2.45V时,LED的显示结果

(3)当IN0口输入电压值为3.50V时,显示结果如图12所示,测量误差为0。

- 13 -

图13 输入电压为3.50V时,LED的显示结果

(4)当按结束键或复位键后,显示结果如图14所示。

图14 按结束键或复位键后,LED的显示结果

- 14 -

2.实物测试

通过实物测试可得到简易数字电压表与“标准”数字电压表对比测试表,如下表1所示:

表1 简易数字电压表与“标准”数字电压表对比测试表

标准电压简易电压表绝对误差/V 值/V 测量值/V 0.00 0.00 0.00 1.70 1.72 0.01 2.43 2.44 0.004 3.55 3.56 0.003 4.16 4.16 0.00 4.52 4.52 0.00 5.00 5.00 0.00

4.3 设计结果误差分析

由于单片机AT89S52为8位处理器,当输入电压为5.00V时,ADC0809输出数据值为255(FFH),因此单片机最高的数值分辨率为0.0196V(5/255)。这就决定了电压表的最高分辨率只能到0.0196V,从上表可看到,测试电压一般以0.02V的幅度变化。

从上表可以看出,简易数字电压表测得的值基本上比标准电压值偏大0-0.01V,这可以通过校正ADC0809的基准电压来解决。因为该电压表设计时直接用5V的供电电源作为电压,所以电压可能有偏差。当要测量大于5V的电压时,可在输入口使用分压电阻,而程序中只要将计算程序的除数进行调整就可以了。

4.4 设计重点、难点和不足之处及设计体会

重点:理论与实践的结合能力。Proteus和Keil软件的使用方法,掌握从系统的需要、方案的设计、功能模块的划分、原理图的设计和电路图的仿真的设计流程。

难点:实物的制作,硬件电路的检测,程序的调试及误差原因的分析。实物制作时要准备好每一步流程需要的工具及材料,心里要有计划的去制作;硬件电路的检查时要清楚每一条线路的功能及作用,这样有错误的话才会很容易发现;调试程序时,必须对每条指令的功能要清楚,对各程序模块要对照流程图仔细检查;误差原因可能有很多方面,这就要靠自己的分析能力,各个方面都要顾及到才行。

- 15 -

不足之处:不足之处主要在于电压测量的精度不够高,精度约为0.02V,测量时只能显示到偶数部分,奇数电压不能显示,若要更精确点只有换模数转换器,用位数高于8位的芯片代替ADC0809,这样就能解决精度不高的问题。

设计体会:经过一段时间的努力,基于单片机的直流稳压数字电压表基本完成。但设计中的不足之处仍然存在。这次设计是我第二次设计电路,并用Proteus实现了仿真。在这过程中,我对电路设计,单片机的使用等都有了新的认识,积累了不少经验。

基于单片机的数字电压表使用性强、结构简单、成本低、外接元件少。在实际应用工作应能好,测量电压准确,精度高。系统功能、指标达到了课题的预期要求、系统在硬件设计上充分考虑了可扩展性,经过一定的改造,可以增加功能。本文设计主要实现了直流稳压数字电压表测量一路电压的功能,详细说明了从原理图的设计、电路图的仿真再到软件的调试。

通过本次设计,我对单片机这门课有了进一步的了解。无论是在硬件连接方面还是在软件编程方面。本次设计采用了AT89S52单片机芯片,与以往的单片机相比增加了许多新的功能,使其功能更为完善,应用领域也更为广泛。设计中还用到了模/数转换芯片ADC0809,以前在学单片机课程时只是对其理论知识有了初步的理解。通过这次设计,对它的工作原理有了更深的理解。在调试过程中遇到很多问题,硬件上的理论知识学得不够扎实,对电路的仿真方面也不够熟练。 总之这次电路的设计和仿真,基本上达到了设计的功能要求。在以后的实践中,我将继续努力学习电路设计方面的理论知识,并理论联系实际,争取在电路设计方面能有所提升。

- 16 -

教学建议

从本期学习单片机的感受来看,单片机是实用性非常强的一门课程,教学必须将理论与实践相结合。另外我觉得学习这门课程最主要的是要激发和培养学生的兴趣,让学生知道单片机的应用范围之广,作用之大;其次在理论环节和实践环节就要不断加强和激发学生的创新思维,可以从实验课程内容的设计性和综合性来强化学生自己动手完成实验设计内容的要求,这样才能调动了学生参与实验的主动性,提高了其自学能力和创新能力。

还有就是老师应该加强和学生对这门课程一些方面的交流,学生不懂的要积极请教老师,有自己独特的想法的也可以咨询老师是否可行等等。

- 17 -

参考文献

[1] 马忠梅,单片机的C语言Windows环境编程宝典[M], 北京:北京航空航天

大学出版社,2003.6

[2] 李光飞,单片机C程序设计指导[M],北京:北京航空航天大学出版社,

2003.01

[3] 李光飞,单片机课程设计实例指导[M],北京:北京航空航天大学出版社,

2004.9

[4] 单片机基础/李广第,朱月秀,冷祖祁编著.-3版,北京:北京航空航天大

学出版社,2007.6

[5] 数字电子技术基础/阎石主编;清华大学电子学教研组编.-5版.-北京:高

等教育出版社,2006.5

- 18 -

附录1

元器件清单

元器件名称 AT89S52加底座 四位一体共阳数码管加底

规格 双列直插式 0.5寸 数量 1 2 座 晶振 发光二极管 单排插针 三极管 蜂鸣器 小按键 下载口座子 六脚按键开关 Usb电源线加接口

电阻 电阻 电阻 电阻 短路冒 电解电容 瓷片电容 排阻 ADC0809 74LS74 74LS02 74LS04 电位器

12MHz 0.5mm 40脚 9012 5V 6*6*4.3mm 十芯 (FC-10P) 8.5*8.5mm

1m 200 4.7K 1K 470 22uf 33pf 10k 双列直插式 双列直插式 双列直插式 双列直插式

2K

- 19 -

1 10 1 9 1 9 1 1 1 1 1 3 24 3 1 2 2 1 1 1 1 1

1174211053117421105P078acefacbdgbddpP178egJP3JP4P20VCCd1d2d3d4d1P211P30P22J21986122P311d2d3P244P25S2S4S5S6S8S99P14P14R2025P10P12P13P14P16P175678P17P252122232425262728R26470R27470P2010113029PSENALEPP31P30P27P21470P26R25P25P22470P24R24P23P23470P22R23P21P24470P20R22INT1INT0P22T1T0P25EAVPP27X1X2P26AT89S52P24P23P21P20P074701312151431X1X1Y112MHZX2RESETTXDRDWRPSENALEPRXDRET912VCC40P34498P2734678P13P13P04P05P0632P07R2133P06P2634470P0535P04P27P15P16P03P15P16P17436P03P12P02BEC7S3U1P10P11P123P1137P021Q19012Q29012P01Q390122P1038P01PNPPNPPNPP00139P00385P377P1128CON8S7P15CON8PNPQ4901212P26P36PNPQ59012PNPQ69012PNPQ790126C6P3556d4P233P322P333dpCON8CON8f流水灯电路LEDXXXLED13A1D9121LED191833PFX2222K200C21112SS21P361633PF2GND122B2R1111R2JX221CON22GNDP311KB212021EC21321

23456J5P30P31P32P33P34P35P36P372LEDXXX211470RP7KAVCCCON22LDE8DJP5R071470RP6KAP07R06LEDD7P06470470R05470RP5VCCP05R04LDE6D10K470P04470R03470RP4P031R02LEDD5P024702R01470470RP3P07P013R00LEDD4P06470P004470470RP2P055LDE3DP04D6RP1P03D272P0218470RP0KAP019D1P001D数码管电路JP1JP2P00P011P10P022P111P033P122P044P133P055P144P066P1557P1667LED2单片机控制系统CPNPQ89012单排插10K附录2

电路原理图

VCC图15 数码管系统原理图

- 20 -

独立键盘电路P33P32P35P34C1212VCCP3717VCCVCCS1+C322ufB1KRETR13晶振电路短路帽VCC下载口P1512Q99012PNPRETP17LS11212P16345612677ISP34588910WE910ABELLTeVCC复位电路B211KR121BJ1CON2AJU2USB蜂鸣电路电源SzeBDaeFe2345NumberRevson31-Dec-2011SheeofCDocumensandSengsAdmnsraor桌面ShumaguaDnraSwhnumByaguanddb61

MOV P0,A CLR P0.7/* LCALL DELAY CLR P2.1 RET

DELAY:MOV R7,#10 /*延时2.5ms*/ LOOP:MOV R6,#250

DJNZ R6,$ DJNZ R7,LOOP RET

TAB:DB 0C0H,0F9H,0A4H,0B0H,99H

DB 92H,82H,0F8H,80H,90H

END

将小数点点亮*/

- 26 -

本文来源:https://www.bwwdw.com/article/7sp6.html

Top