基于单片机的数字电压表设计

更新时间:2024-05-23 02:37:01 阅读量: 综合文库 文档下载

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

《单片机原理及应用A》课程设计

学 院: 电气工程学院

题 目: 基于51系列单片机的数字电压表设计

起止时间: 2016年8月22日至2016年9月9日

学 生 姓 名: 刘 洁 专 业 班 级: 本13通信工程03班 指 导 教 师: 黄 智 伟 教研室主 任: 邓 贤 君 院 长: 王 新 林

2016年9月9日

课程设计任务书

学 院: 电气工程学院

题 目: 基于51系列单片机的数字电压表设计 起止时间: 2016年8月22日至2016年9月9日

学 生 姓 名: 刘 洁 专 业 班 级: 本13通信工程03 班 指 导 教 师: 黄 智 伟 教研室主 任: 邓 贤 君 院 长: 王 新 林

2016年8月20日

一. 课程设计内容 题目:基于51系列单片机的数字电压表设计 课程设计内容如下: 数字电压表的设计: 1.设计要求 2.选择方案 3.硬件电路的设计 3.2 STC89C52 3.3 A/D转换电路 3.4 显示单元电路 3.5 电源模块 4.软件程序设计 4.1 ADC初始化 4.2 按键程序 4.3 数据读取 4.4 数据处理 4.5 显示程序 5.电路图及系统调试 5.1 系统总电路图 5.2 数字电压表PCB图 5.3 数字电压表仿真图 5.4 系统调试 6.收获与体会 7.参考文献 8.附录:源程序清单 8.1 附录1:原程序清单 8.2 附录2:制作实物照片 二. 课程设计要求 1. 课程设计报告写作请参考“课程设计报告写作的内容、要求与应注意的一些问题”。所有的文档和表格必须采用Word形式,格式按照“课程设计报告写作的内容、要求与应注意的一些问题”要求。 2. 设计报告中的电原理图,PCB图、元器件布局图必须采用自己画的图。不能够抄袭别人的应用电路、程序、PCB图,必须自己完成,抄袭者和被抄袭者都不及格。 3. 设计资料中的有关的公式可以直接采用。设计资料中有关的曲线图可以直接采用,成文时根据需要选用(可放大300倍后裁剪到Word文档中),以图文清晰为标准。 4. 英文资料中的图可以直接采用(可放大300倍后裁剪到Word文档中),图中的英文可以采用英文(中文)方式翻译在图下或者文章中。 5. 英文资料中的一些词,如果翻译拿不准,可以采用英文(中文)方式标注。 6. 课程设计报告需要写自己的收获和体会。不能够抄袭别人的收获和体会,雷同者不及格。 7. 每个人需要交文字稿和电子稿,采用2003Word(或者更高版本)文档形式。 三. 课程设计进度(时间)安排 课程设计进度(时间)安排如下: 1. 2016年8月22日—2016年8月24日 理解课程设计题目的设计要求,查阅相关资

料; 2. 2016年8月25日—2016年9月4日 完成各部分电路设计及系统调试; 3. 2016年9月5日—2016年9月6日 完成课程设计初稿; 4. 2016年9月7日—2016年9月8日完成完整的课程设计报告; 5. 2016年9月9日 上交课程设计作品并答辩。 四. 参考文献 (1) 黄智伟. 凌阳单片机课程设计指导[M].北京:北京航空航天大学出版社,2007 (2) 周航慈.单片机程序设计基础[M].北京:北京航空航天大学出版社,1997 (3) 求实科技.单片机典型模块设计实例导航[M].北京:人民邮电出版社,2004 (4) 余永权.89系列(MCS-51)Flash单片机原理及应用[M].北京:电子工业出版社,2003 (5) 王幸之.单片机应用系统电磁干扰与抗干扰技术[M].北京:北京航空航天大学出版社,2006 (6) 黄智伟.全国大学生电子设计竞赛技能训练[M].北京:北京航空航天大学出版社,2007 (7) 黄智伟.印制电路板(PCB)设计技术与实践(第二版)[M].北京:电子工业出版社,2012 (8) 郭天祥.新概念51单片机C语言教程:入门 提高 开发 拓展全攻略[M].北京:电子工业出版社,2009 (9) 陈洪中.数字电压表[M].北京:水利电力出版社,1999.33~40 (10) 周立功.单片机实验与实践[M].北京:北京航空航天大学出版社,2008.125~150 (11) 吴国经.单片机应用技术[M].北京:中国电力出版社,2003.76~98 (12) 阎石.数字电子技术基础[M].北京:高等教育出版社,2006.92~104 (13) 谭浩强.C程序设计[M].北京:清华大学出版社,2005.25~88 (14) 侯振鹏.嵌入式C语言程序设计[M].北京:人民邮电出版社,2006.30~45 (15) 李光飞 李良儿.单片机C程序设计[M].北京:北京航空航天大学出版社, 2005.105~122 (16) 王港元.电工电子实践指导[M].江西:江西科学技术出版社,2005.84~96 (17) 杨欣.电子设计从零开始[M].北京:清华大学出版社,2005.35~52 指导老师:黄智伟 2016年8月20日

南华大学电气工程学院课程设计

摘要:单片机是一种集成电路芯片,采用超大规模技术把具有数据处理能力(如算术运算、逻辑运算、数据传送、中断处理)集为一体的微处理器,随着单片机技术的飞速发展,各种单片机蜂拥而至,单片机技术成为一个国家现代化科技水平的重要标志。这次课程设计的目的就是完成基于51系列单片机的数字电压表设计。实现本设计的方法是硬件电路和软件程序的结合,而硬件电路又大体可分为单片机小系统电路、量程转换电路电路、A/D转换电路、数码管显示电路,其中主要用到了89C52单片机和ADC0804A/D转换芯片,各部分电路的设计及原理将会在硬件电路设计部分详细介绍;程序的设计使用C语言编程,利用Keil 软件对其编译和仿真。最终完成数字电压表的设计,能够实现测量0V~20V的电压,并且收获颇丰。

关键词:单片机 A/D转换 ADC0804

i

3 南华大学电气工程学院课程设计

(9)具有看门狗功能

(10)共3个16位定时器/计数器。即定时器T0、T1、T2

(11)外部中断4路,下降沿中断或低电平触发电路,Power Down模式可由外部中断低电平触发中断方式唤醒

(12)通用异步串行口(UART),还可用定时器软件实现多个UART (13)工作温度范围:-40~+85℃(工业级)/0~75℃(商业级) (14)PDIP封装,引脚封装图如下:

图3.1.1 STC89C52RC引脚图

3.1.2单片机最小系统

单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机

可以工作的系统。对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路。

当在STC89C52单片机的RST引脚引入高电平并保持2个机器周期时,单片机内部就执行复位操作,按键手动复位有电平方式和脉冲方式两种。其中电平复位是通过RST

第 3 页 共 27 页

4 南华大学电气工程学院课程设计

端经过电阻与电源VCC接通而实现的。

下面给出一个51单片机的最小系统电路图:

VCC1234567891011121314151617181920U3P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RSTP3.0(RXD)P3.1(TXD)P3.2(INT0)P3.3(INT1)P3.4(T0)P3.5(T1)P3.6(WR)P3.7(RD)XTAL2XTAL1GND89C51/C52VCC(AD0)P0.0(AD1)P0.1(AD2)P0.2(AD3)P0.3(AD4)P0.4(AD5)P0.5(AD6)P0.6(AD7)P0.7EA/VPPALE/PROGPSEN(A15)P2.7(A14)P2.6(A13)P2.5(A12)P2.4(A11)P2.3(A10)P2.2(A9)P2.1(A8)P2.04039383736353433323130292827262524232221VCCJ?123456789CON9KS+C110uF24RESETR2710KC2230C233012MHz13 图3.1.2 单片机的最小系统电路图

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

表3.1.1 P1.0和P1.1引脚复用功能

引脚号 P1.0 P1.1 功能特性 T2(定时器/计数器2外部计数输入),时钟输出 T2EX(定时器/计数器2捕获/重装触发和方向控制) P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。

第 4 页 共 27 页

5 南华大学电气工程学院课程设计

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

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

P3口也可作为STC89C52的一些特殊功能口,如下表所示:

表3.1.2 P3口功能复用

管脚 P3.0 RXD P3.1 TXD P3.2 /INT0 P3.3 /INT1 P3.4 T0 P3.5 T1 P3.6 /WR P3.7 /RD 备选功能 (串行输入口) (串行输出口) (外部中断0) (外部中断1) (记时器0外部输入) (记时器1外部输入) (外部数据存储器写选通) (外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

第 5 页 共 27 页

6 南华大学电气工程学院课程设计

/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。

STC89C52RC增加了一个定时器/计数器2的控制,具体如表3.1.3和表3.1.4.

表3.1.3 定时/计数器2控制寄存器各位功能说明

符号 TF2 功能 定时器2溢出标志。定时器2溢出时,又由硬件置位,必须由软件请0.当RCLK=1或TCLK=1时,定时器2溢出,不对TF2置位。 EXF2 定时器2外部标志。当EXEN2=1,且当T2EX引脚上出现负跳变而出现捕获或重装载时,EXF2置位,申请中断。此时如果允许定时器2中断,CPU将响应中断,执行定时器2 中断服务程序,EXF2必须由软件清除。当定时器2工作在向上或向下计数方式时(DCEN=1),EXF2不能激活中断。 RCLK TCLK EXEN2 接收时钟允许。RCLK=1时,用定时器2溢出脉冲作为串口(工作于工作方式1或3时)的接收时钟,RCLK=0,用定时器1的溢出脉冲作为接收脉冲 发送时钟允许。TCLK=1时,用定时器2溢出脉冲作为串口(工作于工作方式1或3时)的发送时钟,TCLK=0,用定时器1的溢出脉冲作为发送脉冲 定时器2外部允许标志。当EXEN2=1时,如果定时器2未用于作串行口的波特率发生器,在T2EX端口出现负跳变脉冲时,激活定时器2捕获或者重装载。EXEN2=0时,T2EX端的外部信号无效。 TR2 C/ 定时器2启动/停止控制位。TR2=1时,启动定时器2. 定时器2定时方式或计数方式控制位。C/=0时,选择定时方式,C/=1时,选择对外部事件技术方式(下降沿触发)。 CP/ 捕获/重装载选择。CP/=1时,如EXEN2=1,且T2EX端出现负跳变脉冲时发生捕获操作。CP/=1时,若定时器2溢出或EXEN2=1条件下,T2EX端出现负跳变脉冲,都会出现自动重装载操作。当RCLK=1或TCLK=1时,该位无效,在定时器2溢出时强制其自动重装载。

第 6 页 共 27 页

7 南华大学电气工程学院课程设计

表3.1.4 定时器2工作方式

RCLK+TCLK 0 0 1 X (1)复位电路:

CP/ 0 1 X X TR2 1 1 1 0 模式 16位自动重装 16位捕获 波特率发生器 (关闭) 在电路图中,电容的的大小是10uF,电阻的大小是10k。所以根据公式,可以算出电容充电到电源电压的0.7倍(单片机的电源是5V,所以充电到0.7倍即为3.5V),需要的时间是10K*10UF=0.1S。也就是说在单片机启动的0.1S内,电容两端的电压时在0~3.5V增加。这个时候10K电阻两端的电压为从5~1.5V减少(串联电路各处电压之和为总电压)。所以在0.1S内,RST引脚所接收到的电压是5V~1.5V。在5V正常工作的51单片机中小于1.5V的电压信号为低电平信号,而大于1.5V的电压信号为高电平信号。

所以在开机0.1S内,单片机系统自动复位(RST引脚接收到的高电平信号时间为0.1S左右)。

在单片机启动0.1S后,电容C两端的电压持续充电为5V,这是时候10K电阻两端的电压接近于0V,RST处于低电平所以系统正常工作。当按键按下的时候,开关导通,这个时候电容两端形成了一个回路,电容被短路,所以在按键按下的这个过程中,电容开始释放之前充的电量。随着时间的推移,电容的电压在0.1S内,从5V释放到变为了1.5V,甚至更小。根据串联电路电压为各处之和,这个时候10K电阻两端的电压为3.5V,甚至更大,所以RST引脚又接收到高电平。单片机系统自动复位。

图3.1.3 单片机上的复位电路图

第 7 页 共 27 页

8 南华大学电气工程学院课程设计

(2)晶振电路:

一般的晶振的负载电容为15pF或12.5pF,如果再考虑元件引脚的等效输入电容 则两个22pF的电容构成晶振的振荡电路就是比较好的选择。

如上图:晶振是给单片机提供工作信号脉冲的,这个脉冲就是单片机的工作速度 比如:12M晶振,单片机工作速度就是每秒12M。当然,单片机的工作频率是有范围的,不能太大,一般24M就不上去了,不然不稳定。

晶振与单片机的脚XTAL0和脚XTAL1构成的振荡电路中会产生偕波(也就是不希望存在的其他频率的波),这个波对电路的影响不大,但会降低电路的时钟振荡器的稳定性。为了电路的稳定性起见,ATMEL公司只是建议在晶振的两引脚处接入两个10pf-50pf的瓷片电容接地来削减偕波对电路的稳定性的影响,所以晶振所配的电容在10pf-50pf之间都可以的。

图3.1.4 单片机上的晶振电路

(3)上拉电阻:

其实排阻就是由8个电阻组成的,其中一端全部接在一起,103为8个10K电阻, 102为8个1K电阻,他们在电路中起到“上拉”的作用,又称上拉电阻。上拉就是将不确定的信号通过一个电阻嵌位在高电平,电阻同时起限流作用,下拉同理。 上拉是对器件注入电流,下拉是输出电流,弱强只是上拉电阻的阻值不同,没有什么严格区分,对于非集电极(或漏极)开路输出型电路(如普通门电路)提升电流和电压的能力是有限的,上拉电阻的功能主要是为集电极开路输出型电路输出电流通道。 上拉,就是把电位拉高,比如拉到VCC 下拉,就是把电压拉低,拉到GND

一般就是刚上电的时候,端口电压不稳定,为了让他稳定为高或低,就会用到上拉或下拉电阻。

有些芯片内部集成了上拉电阻(如单片机的P1、2、3口),所以外部就不用上拉电阻了。但是有一些开漏的(如单片机的P0口),外部必须加上拉电阻。

第 8 页 共 27 页

理图如下所示:

3.2 A/D转换电路

3.2.1 TL431的介绍

3.1.3 C52单片机模块电路原理图

如下为TL431的引脚封装图:

9 南华大学电气工程学院课程设计

图3.1.5 STC89C52单片机模块电路原理图

在本次设计中,需要用TL431给A/D芯片提供恒定且稳定的电压。

它代替稳压二极管,例如,数字电压表,运放电路,可调压电源,开关电源等。

在此次课程设计中,单片机模块结合了复位电路、晶振电路以及上来的那组的原

TL431是可控精密稳压源。它的输出电压用两个电阻就可以任意的设置到从

Verf(2.5V)到36V范围内的任何值。该器件的典型动态阻抗为0.2Ω,在很多应用中用

图3.2.1 TL431引脚封装

第 9 页 共 27 页

10 南华大学电气工程学院课程设计

3.2.2 ADC0804的介绍

ADC0804主要技术指标如下: (1)高阻抗状态输出 (2)分辨率:8位(0~255) (3)存取时间:135ms (4)转换时间:100ms (5)总误差:-1~+1LSB

(6)工作温度:ADC0804C为0度~70度;ADC0804L为-40度到80度 (7)模拟输入电压范围:0V~5V (8)参考电压:2.5V (9)工作电压:5V (10)输出为三态结构 ADC0804引脚功能:

1. PIN1 (CS ):Chip Select,与RD、WR 接脚的输入电压高低一起判断读取或写入与否,当其为低位准(low) 时会active。

2. PIN2 ( RD ):Read。当CS 、RD 皆为低位准(low) 时,ADC0804 会将转换后的数字讯号经由DB7 ~ DB0 输出至其它处理单元。

3. PIN3 (WR ):启动转换的控制讯号。当CS 、WR 皆为低位准(low) 时ADC0804 做清除的动作,系统重置。当WR 由0→1且CS =0 时,ADC0804会开始转换信号,此时INTR 设定为高位准(high)。

4. PIN4、PIN19 (CLK IN、CLKR):频率输入/输出。频率输入可连接处理单元的讯号频率范围为100 kHz 至800 kHz。而频率输出频率最大值无法大于640KHz,一般可选用外部或内部来提供频率。若在CLK R 及CLK IN 加上电阻及电容,则可产生ADC 工作所需的时序,其频率约为:

5. PIN5 ( INTR ):中断请求。转换期间为高位准(high),等到转换完毕时INTR 会变为低位准(low)告知其它的处理单元已转换完成,可读取数字数据。

6. PIN6、PIN7 (VIN(+)、VIN(-)):差动模拟讯号的输入端。输入电压VIN=VIN(+) -VIN(-),通常使用单端输入,而将VIN(-)接地。

7. PIN8 (A GND):模拟电压的接地端。

第 10 页 共 27 页

11 南华大学电气工程学院课程设计

8. PIN9 (VREF)

ADC0804的引脚封装如下图所示:

图3.2.2 ADC0804的引脚封装图

3.2.3 A/D转换电路原理

(1)由图6可知,需要给ADC0804的9脚提供一个稳定的2.5V电压,这里我们用

到了三极管TL431。

(2)ADC0804的6脚是读模拟电压的入口。但是,由ADC0804的电气特性可知,它只能采集0V~5V的电压,而本次设计的任务要求采集量程为0V到20V。所以,再6脚读取模拟电压的时候,我们利用串联电阻来增压。这里我用了502可调电阻和1K电阻来实现增压功能。

所以,可以画出该模块的原理图如下:

图3.2.3 A/D转换模块原理图

第 11 页 共 27 页

12 南华大学电气工程学院课程设计

3.3显示单元电路

本电路的显示模块主要由一个4位一体的7段LED数码管构成,用于显示测量到的电压值。它是一个共阳极的数码管,每一位数码管的a,b,c,d,e,f,g和dp端都各自连接在一起,用于接收单片机的P1口产生的显示段码。S1,S2,S3,S4引脚端为其位选端,用于接收单片机的P2口产生的位选码。

本系统采用动态扫描方式。扫描方式是用其接口电路把所有数码管的8个比划段a~g和dp同名端连在一起,而每一个数码管的公共极COM各自独立地受I/O线控制。CUP从字段输出口送出字型码时,所有数码管接收到相同的字型码,但究竟是哪个数码管亮,则取决于COM端。COM端与单片机的I/O接口相连接,由单片机输出位位选码到I/O接口,控制何时哪一位数码管被点亮。在轮流点亮数码管的位扫描过程中,每位数码管的点亮时间极为短暂。但由于人的视觉暂留现象,给人的印象就是一组稳定显示的数码。动态方式的优点是十分明显的,即耗电省,在动态扫描过程中,任何时刻只有一个数码管是处于工作状态的。

该4位数码管的引脚图如下:

图3.3.1 显示数码管引脚图

在显示模块的电路设计中,以C52单片机的P20至P23口,并结合的PNP型三极管9012的开关作用来控制显示。当P20~P23给低电平的时候,通过限流电阻连接三极

第 12 页 共 27 页

13 南华大学电气工程学院课程设计

管,三极管9012导通,电源则接入数码管。

具体的显示模块电路原理图如下所示:

图3.3.2 显示电路的原理图

3.4电源模块

在这次的电压表设计中,用了DC电源插口、自锁开关以及一个指示电源的LED

灯。具体的设计如下原理图所示:

图3.4.1 电源模块原理图

第 13 页 共 27 页

14 南华大学电气工程学院课程设计

4.软件程序设计

在本次设计中,需要软硬件结合,其中程序控制的流程图如下:

开始 定义变量 进入while循环 AD0804初始化 读取电压值并计算得到现在量程 循环扫描显示函数20次 结束

图4.1 程序流程图

由程序流程图可以写出如下的主程序:

图4.2 电压表主程序

可以从上图中看出,主程序中调用了多个子函数,其中包括ADC的初始化、

按键部分、显示部分、和数据的读取与处理。最后的显示函数循环20次,是防止电压

第 14 页 共 27 页

15 南华大学电气工程学院课程设计

值跳动。接下来,将分模块对程序进行解析。

4.1 ADC初始化

芯片ADC0804初始化程序如下图:

图4.1.1 ADC初始化程序

4.2 按键程序

如图12所示,按键子程序中,按下按键后,控制输出,直到按键释放。

图4.2.1 按键函数程序

4.3数据读取

图4.3.1 数据读取程序

该程序是读AD转换值,首先是P0口复位,然后由adc_rd的高低电平决定读数据,定义为adc_rd=P3^7,也就是读数据的接口,当为低电平的时候读P0数据,为高电平的时候,返回读到的数据。

第 15 页 共 27 页

16 南华大学电气工程学院课程设计

4.4 数据处理

在数据处理程序中,i=dat*7.84表示i=dat*0.0196*100*4,其含义为:数据最低位代表0.0196V,量程设定为20V,采用分压方式,将读到的电压值乘以4,然后再乘以100将小数位移到整数位即5*4=20.0V。

在这里Disbuf是连接数据显示的数组,分别为百位、十位、个位。

图4.4.1 数据处理程序

4.5 显示程序

在显示函数中,P1为连接数码管的显示。第一位是显示单位“V”,然后是显示电压值的个位和十位,若最高位等于0,则不显示,最高位不等于0的时候,则打开显示。由于此次设计中,电压表的量程上限是20V,所以最高一位不显示。Disbuf是提前定义的显示暂存空数组。

图4.5.1 显示函数程序

第 16 页 共 27 页

5.1 系统总电路图

最后的实物板子更美观。

5.电路图及系统调试

5.2 数字电压表PCB图

数字电压表系统的总电路原理图如下图所示:

17 南华大学电气工程学院课程设计

然后输出到显示模块,根据程序控制显示相应的电压数值。

图5.1.1 数字电压表原理图

本次课程设计中主要分为单片机模块、A/D转换模块和数码管显示模块。原理是

的手艺要求比较高。除此以外,还可以选择画PCB板,这种方法就显得非常高效,且

由A/D采集模拟电压信号后,转为数字信号传给单片机,单片机读取数据后进行处理,

虽然我最后没有选择做PCB板,但是有根据原理图画出PCB图,即如下所示:

在这次的课程设计中,我采用的是焊盘和跳线焊接板子来做的最后实物,对焊接

第 17 页 共 27 页

18 南华大学电气工程学院课程设计

图5.2.1 数字电压表PCB图

5.3 数字电压表仿真图

Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。 此次仿真就是运用了软件Proteus,仿真图如下: RV2(3)R21kRV1(2)U21RD2WR34INT0581091967CSRDWRCLK ININTRA GNDD GNDVREF/2CLK RVIN+VIN-ADC0804VCCDB0(LSB)DB1DB2DB3DB4DB5DB6DB7(MSB)2018171615141312113U7RV125%RV21k1TL4311kR110k2C11nFU1用滑动电位器分压来代替采集的电压信号19XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617ABCDEFGDPRP11RESPACK-823456789U6NOTU3NOTU4NOTU5NOT18XTAL2此处用非门代替三极管反向驱动9RST293031PSENALEEAABCDEFGDP12345678P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7AT89C51INT0WRRD 图5.3.1 数字电压表Proteus仿真

第 18 页 共 27 页

19 南华大学电气工程学院课程设计

5.4 系统调试

完成了系统的硬件设计,制作和软件编程之后,要使系统能够按设计意图正常运行,必须进行系件和软件调统调试。

5.4.1 硬件调试

硬件调试的主要任务是排除硬件故障,其中包括设计的错误和工艺性故障等。 (1)检查所设计的硬件电路板所有的器件和引脚是否正确,尤其是电源的连接是否正确;检查各总线是否有短路的故障。检查开关/按键是否正常,是否连接正确,为了保护芯片,应先对各IC座电位进行检查,确认无误后再插入芯片。

(2)将40芯片的仿真插头插入单片机插座进行调试,检查各接口是否满足设计的要求,有正常的程序测试硬件电路的好坏。

5.4.2 软件调试

软件调试的任务是利用开发工具进行在线仿真调试,发现和纠正程序的错误,同时也能发现硬件的故障。软件调试是一个模块一个模块进行的。首先单独调试各子程序是否能够按照预期的功能,接口电路的控制是否正常。最后调试整个程序。尤其注意的是各模块间能否正确的传递参数。

(1)检查LED显示模块程序。观察在LED上是否能够显示相应的字符。 (2)检查按键模块程序。

(3)检查A/D转换模块程序。可以在硬件电路的输入端输入已知的几个电压,分别观察LED上是否显示相应的电压值。

(4)检查数据的转换模块程序。

5.4.3 软硬件结合调试

该系统存在软件和硬件的紧密联系。软硬件都调试通过后,整个系统连接仍会存在很多麻烦。首先检查 A/D 部分,然后是单片机,最后是数码管,依次排除障碍。

总调试:当相应的各模块环节都正确后,可程序下载到单片机。接上电源运行。再检查所有功能,观察是否能预期的一样。如果一样,说明设计成功完成。

经调试,该课程设计满足数字电压表的设计要求,能实现电压表的功能。

第 19 页 共 27 页

20 南华大学电气工程学院课程设计

6.收获与体会

经过近段时间的努力,基于AT89C52单片机的数字电压表设计基本完成。但设计中仍然存在许多不足之处。

基于单片机的数字电压表使用性强、结构简单、成本低、外接元件少。在实际应用工作应能好,测量电压准确,精度高。系统功能、指标达到了论文的预期要求,本文设计主要实现了简易数字电压表测量一路电压的功能,详细说明了从原理图的设计、电路图的仿真再到软件的调试。

这次设计用Proteus实现了仿真。在这过程中,我对电路设计,单片机的使用等都有了新的认识。通过这次设计学会了Proteus、Keil以及DXP软件的使用方法,掌握了从系统的需要、方案的设计、功能模块的划分、原理图电路图的仿真的设计流程,积累了不少经验。

通过本次设计,我对单片机这门课有了进一步的了解。无论是在硬件连接方面还是在软件编程方面。

本次设计采用了AT89C52单片机芯片,设计中还用到了模/数转换芯片ADC0804,以前在学单片机课程时只是对其理论知识有了初步的理解。通过这次设计,对它的工作原理有了更深的理解。在调试过程中遇到很多问题,硬件上的理论知识学得不够扎实,对电路的仿真方面也不够熟练。

总之这次电路的设计和仿真,基本上达到了设计的功能要求。在以后的实践工作中,我将继续努力学习电路设计方面的理论知识,并理论联系实际,争取在电路设计方面能有所提升。

第 20 页 共 27 页

21 南华大学电气工程学院课程设计

7.参考文献

(1)黄智伟. 凌阳单片机课程设计指导[M].北京:北京航空航天大学出版社,2007

(2)周航慈.单片机程序设计基础[M].北京:北京航空航天大学出版社,1997 (3)求实科技.单片机典型模块设计实例导航[M]. 北京:人民邮电出版社,2004 (4)余永权.89系列(MCS-51)Flash单片机原理及应用[M]. 北京:电子工业出版社,2003

(5)王幸之.单片机应用系统电磁干扰与抗干扰技术[M]. 北京:北京航空航天大学出版社,2006

(6)黄智伟.全国大学生电子设计竞赛技能训练[M].北京:北京航空航天大学出版社,2007

(7)黄智伟.印制电路板(PCB)设计技术与实践(第二版)[M].北京:电子工业出版社,2012

(8)郭天祥.新概念51单片机C语言教程:入门 提高 开发 拓展全攻略[M].北京:电子工业出社,2009

(9)陈洪中.数字电压表[M].北京:水利电力出版社,1999.33~40

(10)周立功.单片机实验与实践[M].北京:北京航空航天大学出版社,2008.125~150 (11)吴国经.单片机应用技术[M].北京:中国电力出版社,2003.76~98 (12)阎石.数字电子技术基础[M].北京:高等教育出版社,2006.92~104 (13)谭浩强.C程序设计[M].北京:清华大学出版社,2005.25~88

(14)侯振鹏.嵌入式C语言程序设计[M].北京:人民邮电出版社,2006.30~45

(15)李光飞 李良儿.单片机C程序设计[M].北京:北京航空航天大学出版社,2005.105~122

(16)王港元.电工电子实践指导[M].江西:江西科学技术出版社,2005.84~96 (17)杨欣.电子设计从零开始[M].北京:清华大学出版社,2005.35~52

第 21 页 共 27 页

22 南华大学电气工程学院课程设计

8.附录

8.1 附录1:源程序清单

#include #include

sbit adc_rd=P3^7; //RD sbit adc_wr=P3^6; //WR

sbit s1=P2^0; sbit s2=P2^1; sbit s3=P2^2;

sbit s4=P2^3; //四个数码管位选端 sbit key=P2^4; sbit out=P2^5;

unsigned char Disbuf[]={0,0,0}; //显示暂存空数组

unsigned char code

tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//数字显示编码

void display(); void dsxms() //延时 {

unsigned char i; for(i=0;i<250;i++); }

void delay(unsigned int x) //延时函数 {

第 22 页 共 27 页

//包含头文件

//按键控制输出 //输出控制

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

Top