单片机课程设计说明书(word文档+全!) - 图文

更新时间:2024-05-08 22:24:01 阅读量: 综合文库 文档下载

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

单片机课程设计说明书

用ADC0832设计的两路电压表

(用LCD1602显示)

专业 新能源科学与工程

2015年 1 月 28 日

学生姓名 班学

级 号

指导教师 完成日期

盐城工学院课程设计说明书(2015)

用ADC0832设计的两路电压表(用LCD1602显示)

摘 要:本设计是简易两路数字电压表,数字电压表是采用数字化测量设计的电压仪表。随着电子科学技术的发展,电子测量成为广大电子工作者必须掌握的手段,对测量的精度和功能的要求也越来越高,而电压的测量甚为突出,因为电压的测量最为普遍。

本设计利用单片机STC89C52借助软件实现数字显示功能、自动校准、LED显示,A/D转换器采用ADC0832构成数模转换电路。该电压表测量范围在0~5V。由于采用高性能的单片机芯片为核心,同时利用LED数码管为显示设备,这样就使显示清晰直观、读数准确,减少了因为人为因素所造成的测量误差事件,同时提高了测量的准确度。

根据电压表的主要功能,提出了设计方案并进行了论证。设计包括硬件设计和软件设计两大部分。硬件部分包括单片机最小系统、数模转换电路、显示模块四个部分。首先在Proteus中设计并绘制了电路图,并编写程序使仿真正确。然后便根据设计的电路在万能板上制作完成了实物并调试成功。接着在SD301学习板上完成了同样的功能。接着画了电路原理图,制作了小视频,完成了课程设计。

关键词:单片机,ADC0832,LCD1602,A/D转换,电压表

盐城工学院课程设计说明书(2015)

目 录

1 概述 ................................................................................................................................... 1

1.1 课程设计研究背景与意义 ..................................................................................... 1 1.2 课程设计内容 ......................................................................................................... 2 2 设计方案论证与方案选择 ............................................................................................... 2

2.1 方案论证 ................................................................................................................. 2 2.2 方案选择 ................................................................................................................. 2 3 系统硬件电路设计 ........................................................................................................... 3 3.1 单片机最小系统 ..................................................................................................... 3 3.2 模数转换电路 ......................................................................................................... 5 3.3 显示电路 ................................................................................................................. 7 4 系统软件设计 ................................................................................................................. 10

4.1 主程序 ................................................................................................................... 10 4.2 A/D转换程序 ......................................................................................................11 4.3液晶显示子程序 .....................................................................................................11 5 系统调试 ......................................................................................................................... 13 6 结束语 ............................................................................................................................. 15 参考文献 ............................................................................................................................. 16 附 录 ............................................................................................................................. 17 附录1 ADC0832设计的两路电压表电路原理图 ......................................................... 18 附录2 ADC0832设计的两路电压表Proteus仿真电路图 ........................................... 19 附录3 ADC0832设计的两路电压表元器件清单 ......................................................... 20 附录4 ADC0832设计的两路电压表程序清单 ............................................................. 21

盐城工学院课程设计说明书(2015)

用ADC0832设计的两路电压表(用LCD1602显示)

1 概述

1.1 课程设计研究背景与意义

近年来计算机技术及微电子器件在工程技术中应用十分广泛。在此基础上发展起来的智能仪表,无论是在测量的准确性、灵敏度、可靠性、自动化程度、运用功能方面还是在解决测量技术与控制技术问题的深度及广度方面都有了很大的发展,以一种崭新的面貌展现在人们的面前。

数字电压表(Digital Voltmeter)简称DVM,它是智能仪器中最常见的,是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。这种电子测量的仪表之所以出现,一方面是由于电子计算机的应用逐渐推广到系统的自动控制实验研究的领域,提出了将各种被观测量或被控制量转换为数码的要求,即为了实时控制及数据处理的需要;另一方面,也是电子计算机的发展,带动了脉冲数字电路技术的进步,为数字化仪表的出现提供了条件。所以,数字化测量仪表的产生与发展与电子计算机的发展是密切相关的;同时,为革新电子测量中的繁琐和陈旧方式也催促了它的飞速发展。如今,它又成为向智能化仪表发展的必要桥梁。

数字电压表已绝大部分取代了传统的模拟指针式电压表。因为传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求。数字电压迄今已有40多年的发展史。目前,由各种单片机、A/D转换器构成的数字电压表,已被广泛应用于电子及电子测量、工业自动化仪表、自动测试的系统等领域,显示出强大的生命力。

由于电子技术、大规模集成电路及计算机的发展,人们不久就研制出微处理器数字电压表,实现了DVM数据处理自动化和可编程序。因为带有存储器并使用软件支持,所以可以进行信息处理,可通过标准接口组成自动测试系统。除了完成原有DVM的各种功能外,还能够自校、自检,保证了自动测量的高标准确度,实现了仪器、仪表的智能化。当前,智能化仪表法十分速度,而微处理式DVM在智能仪表中占的比重最大,智能化的DVM为实现各种物理量的动态测量提供了可能。

与此同时,由DVM扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平数字电压表的特点:显示清晰直观,读书准确。传统的模拟式仪表必须借助于指针和刻度盘进行读数,在读数过程中不可避免地会引入认为的测量误差,并且容易造成视觉疲劳。数字电压表则采用先进的数显技术,使测量结果一目了然,只要仪表不发生跳数现象,测量结果就是唯一的。不仅保证读数的客观性与准确性,还符合人们的读数习惯,能缩短读数和记录的时间。

在电量的测量中,电压、电流和频率是最基本的三个被测量。其中,电压量的测量最为经常。随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。另外,由于数字式仪器具有读数准确方便、精度高、误差小、灵敏度高、分辨率高、测量速度快等特点而倍受用户青睐。数字电压表就是基于这种需求而发展起来的,是一种必不可少的电子仪器仪表。

1

盐城工学院课程设计说明书(2015)

1.2 课程设计内容

利用单片机STC89C52与ADC0832设计一个两路电压表,将模拟信号0~5V之间的电压值转换成数字量信号,并在LCD1602显示屏上显示,通过虚拟电压表观察ADC0832模拟量输入信号的电压值,LCD1602实时显示相应的数值量。设计两路电压表的硬件电路与软件程序,给出硬件系统的电路原理图与PCB图,对硬件电路与软件分别进行调试,得到调试成功的两路电压表。

2 设计方案论证与方案选择

2.1 方案论证

1.由数字电路及芯片构建

这种设计方案是由模拟电路与数字电路两大部分组成,模拟部分包括输入放大器、A/D转换器和基准电压源;数字部分包括计数器、译码器、逻辑控制器、振荡器和显示器。其中,A/D转换器是它的核心器件,它将输入的模拟量转换成数字量。模拟电路和数字电路是相互联系的,由逻辑控制电路产生控制信号,按规定的时序将A/D转换器逐个组模拟开关接通或断开,保证A/D转换正常进行。A/D转换结果由计数译码电路变成段码,最后驱动显示器显示出相应的数值。此方案设计其优点是:设计成本低,能够满足一般的电压测量。但设计不灵活,都是采用纯硬件电路,很难将其在原有的基础上进行扩展。

2.由单片机系统及A/D转换芯片构成

这种方案是利用单片机系统与模数转换芯片、显示模块等的结合后,组成数字电压表。由于单片机的发展已经成熟,利用单片机系统的软硬件结合,可以组装出应用电路来。此方案的原理是模数(A/D)转换芯片的基准电压端,被测量电压输入端分别输入基准电压和被测电压。模数(A/D)转换芯片将被测量电压输入端所采集到的模拟电压信号转换成相应的数字信号,然后通过对单片机系统进行软件编程,使单片机系统能按规定的时序来采集这些数字信号,通过一定的算法计算出被测量电压的值,最后单片机系统将计算好了的被测电压值按一定的时序送入显示电路模块加以显示。此方案不仅能够继承上一种方案的各种优点,还能改进上一种设计方案设计不灵活。 2.2 方案选择

方案2不仅能够继承方案1的各种优点,还能改进方案1设计方案设计不灵活,难于在原基础上进行功能扩展等不足。

经过以上方案设计,决定采用如图2-1所示方案。即利用单片机系统与模数转换芯片、显示模块等的结合后,组成数字电压表。电路流程图设计如图2-1所示。

2

盐城工学院课程设计说明书(2015)

LCD显示晶振电路单片机复位电路A/D转换输入电路 图2-1 方案设计

以单片机STC89C52芯片为核心的简单电压测量电路,它由5V直流电源供电。在硬件方面,通过可变电阻调节输入电压的变化来反映检测到的电压变化。通过A/D转换后数字量在单片机STC89C52处理在转换成相应的实际电压,通过LCD1602显示器进行显示。LCD显示电压实现零辐射、低功耗、散热小、体积小、图像还原精确、字符显示锐利等。

3 系统硬件电路设计

根据第2节总体设计方案,进行了两路电压表的设计,总电路原理图如附录1所示。

3.1 单片机最小系统

本次选用的主控芯片为单片机STC89C52。其引脚图如图3-1所示。

图3-1 STC89C52引脚图

3

盐城工学院课程设计说明书(2015)

STC89C52是一个低电压,高性能CMOS 8位单片机带有8K字节的可反复擦写的程序存储器(PENROM)。和128字节的存取数据存储器(RAM),这种器件采用ATMEL公司的高密度、不容易丢失存储技术生产,并且能够与MCS-51系列的单片机兼容。片内含有8位中央处理器和闪烁存储单元,有较强的功能的STC89C52单片机能够被应用到控制领域中。

STC89C52提供以下的功能标准: ①8K字节闪烁存储器

②256字节随机存取数据存储器

③32个I/O口,2个16位定时/计数器 ④1个5向量两级中断结构, ⑤1个串行通信口,片内震荡器和时钟电路。 另外,STC89C52还可以进行0HZ的静态逻辑操作,并支持两种软件的节电模式。闲散方式停止中央处理器的工作,能够允许随机存取数据存储器、定时/计数器、串行通信口及中断系统继续工作。掉电方式保存随机存取数据存储器中的内容,但震荡器停止工作并禁止其它所有部件的工作直到下一个复位。

要使单片机工作,必须提供复位电路和晶体振荡电路,即组成单片机最小应用系统,使其正常工作。采用的复位方法是自动复位,单片机复位满足的条件为:RST引脚上出现10ms(T=RC)以上的高电平,所以当电容值取C=10UF时,电阻R=10K才会满足要求。

STC89C52单片机最小系统如图3-2所示。

图3-2 STC89C52单片机最小系统

4

盐城工学院课程设计说明书(2015)

单片机内部每个部件要想协调一致地工作,必须在统一口令——时钟信号的控制下工作。单片机工作所需要的时钟信号有两种产生方式,即内部时钟方式和外部时钟方式。单片机内部有一个构成振荡器的增益反相放大器,引脚XTAL1和XTAL2分别是此放大器的输入端和输出端,这个放大器与作为反馈元件的片外晶振一起构成自激振荡器。在该图中,电容C1和C2取22pF,晶体的震荡频率取12Mhz,晶体震荡频率高,则系统的时钟频率也高,单片机运行速度也就快。晶振选用12MHZ。 3.2 模数转换电路

本次A/D转换器采用集成电路选用芯片ADC0832。其引脚图如图3-3所示。

图3-3 ADC0832引脚图

CS:片选使能,低电平有效

CH0:模拟输入通道0,或作为IN+/-使用 CH1:模拟输入通道1,或作为IN+/-使用 GND:芯片参考0电位(地)

DI:数据信号输入,选择通道控制 DO:数据信号输出,转换数据输出 CLK:芯片时钟输入 VCC:电源输入

ADC0832为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间。芯片转换时间仅为32μS,具有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。通过DI数据输入端,可以轻易的实现通道功能的选择。正常情况下ADC0832与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI。但由于DO端与DI端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将DO和DI并联在一根数据线上使用。

与DS1302非常相似,CS作为选通信号,在时序图中可以看到,从CS置为低电平开始,一直到置为高电平结束。CLK提供时钟信号。当ADC0832未工作时其CS

5

盐城工学院课程设计说明书(2015)

输入端应为高电平,此时芯片禁用,CLK和DO/DI的电平可任意。当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。在第1个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号。在第2、3个脉冲下沉之前DI端应输入2位数据(SGL、Odd)用于选择通道功能,当此2位数据为“1”、“0”时,只对CH0进行单通道转换。当2位数据为“1”、“1”时,只对CH1进行单通道转换。当2位数据为“0”、“0”时,将CH0作为正输入端IN+,CH1作为负输入端IN-进行输入。当2位数据为“0”、“1”时,将CH0作为负输入端IN-,CH1作为正输入端IN+进行输入。在完成输入启动位、通道选择之后,到第3 个脉冲的下沉之后DI端的输入电平就失去输入作用,此后DO/DI端则开始利用数据输出DO进行转换数据的读取。从第4个脉冲下沉开始由DO端输出转换数据最高位DATA7,随后每一个脉冲下沉DO端输出下一位数据。直到第11个脉冲时发出最低位数据DATA0,一个字节的数据输出完成。也正是从此位开始输出下一个相反字节的数据,即从第11个字节的下沉输出DATA0。随后输出8位数据,到第19 个脉冲时数据输出完成,也标志着一次A/D转换的结束。最后将CS置高电平禁用芯片,此时就可以开始读出数据,转换得到的数据会被送出二次,一次高位在前传送,一次低位在前传送,连续送出。

作为单通道模拟信号输入时ADC0832的输入电压是0~5V且8位分辨率时的电压精度为19.53mV。如果作为由IN+与IN-输入的输入时,可将电压值设定在某一个较大范围之内,从而提高转换的宽度。但值得注意的是,在进行IN+与IN-的输入时,如果IN-的电压大于IN+的电压,则转换后的数据结果始终为00H。

图3-4 ADC0832时序图

集成模数转换芯片ADC0832实现的A/D转换电路如图3-5所示。被测信号由ADC0832模拟输入端输入,完成A/D转换后送入单片机,经相应处理后送出显示。

6

图3-6 1602液晶显示电路

图3-5 A/D转换电路

盐城工学院课程设计说明书(2015)

3.3 显示电路

此次使用LCD1602液晶显示屏,其电路图如3-6所示。

7

盐城工学院课程设计说明书(2015)

1602液晶显示器也叫1602字符液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它有若干个5*7或者5*11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,不能显示图形和汉字。其为5V电压驱动,带背光,可显示两行,每行16个字符,内置含128个字符的ASC?字符集字库,只有并行接口,无串行接口。1602液晶显示电路如图3-6所示。其中D0~D7与单片机的P0.0~P0.7相连接,RS与单片机的P2.0相连接,R/W与单片机的P2.1相连,E与单片机P2.2相连。

VO为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。

1602型液晶接口信号说明如表3-1所示。

a)本操作时序为:

读状态 输入:RS=L,R/W=H,E=H 输出:D0~D7=状态字 读数据 输入:RS=H,R/W=H,E=H 输出:无

写指令 输入:RS=L,R/W=L,D0~D7=指令码,E=高电平 输出:D0~D7=数据

写数据 输入:RS=H,R/W=L,D0~D7=指令码,E=高电平 输出:无

表3-1 1602液晶接口信号说明 引脚号 1 2 3 4 5 6 7~14 15 16 名称 VSS VDD VO RS R/ W功能说明 电源地 电源正极 液晶显示对比度调节端 数据/命令选择端(H/L) 读/选择端(H/L) 使能信号 8位数据口 背光电源正极 背光电源正极 E D0~D7 BLA BLK

b) 状态字说明见表3-2。

表3-2 状态字说明 STA7 D7 读/写使能 STA6 D6 STA5 D5 当前地址指针的数值 STA4 D4

8

盐城工学院课程设计说明书(2015)

原则上每次对控制器进行读写操作之前,都必须进行读/写检测,确保SAT7为0。实际上,由于单片机的操作速度慢于液晶控制器的反应速度,因此可以不进行读/写检测,或只进行简短的延时即可。

c)数据指针设置见表3-3。

控制器内部设有一个数据地址指针,用户可以通过它们访问内部的全部80B的RAM。

表3-3 数据指针设置 指令码 80H+地址码(0~27H, 40~67H) 功能 设置数据地址指针

d)其他指针设置见表3-4。

表3-4

其他设置

指令码 01H 02H 功能 显示清屏:1.数据指针清0

2.所有显示清0 显示回车:数据指针清0

e)初始化设置

显示模式设置见表3-5。

表3-5 显示模式设置 指令码 0 0 1 1 1 0 0 0 功能 设置16×2显示,5×7点阵,8位数据接口

显示开/关及光标设置见表3-6。

表3-6 显示开/关及光标设置 指令码 功能 D=1开显示;D=0关显示 C=1显示光标;C=0不显示光标 B=1光标闪烁;B=0光标不闪烁 N=1当读或写一个字符后地址指针加1,且光标加1;N=0当读或写一个字符后地址指针减1,且光标减1 S=1当写一个字符时,整屏显示左移(N=1)或右移(N=0),以得到光标不移动而整屏移动的效果;S=0当写一个字符时,整屏显示不移动 0 0 0 0 1 D C B 0 0 0 0 0 1 N S 9

盐城工学院课程设计说明书(2015)

0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 光标左移 光标右移 整屏左移,同时光标跟随移动 整屏右移,同时光标跟随移动 f)写操作时序

通过RS确定是写数据还是写命令。写命令包括使液晶的光标显示或不显示、光标闪烁或不闪烁、需或不需要移屏、在液晶的什么位置显示,等等。写数据是指要显示什么内容;读/写控制端设置为写模式,即低电平;将数据或命令送达数据线上;给E一个高脉冲将数据送入该控制器,完成写操作。

4 系统软件设计

本设计系统软件分为主程序、A/D转换子程序、液晶显示子程序三部分。 4.1 主程序

主程序主要负责各个模块的初始化工作:设置定时器、寄存器的初值,启动A/D转换,读取转换结果,控制数码管显示等,其流程图如图4-1所示。

开始

选择ADC0832的转换通道 设置定时器,提供时钟信号 启动A/D转换 N 转换是否结束 Y 输出转换结果 数值转换 显示 图4-1 主程序流程图

10

盐城工学院课程设计说明书(2015)

4.2 A/D转换程序

A/D转换程序的功能是采集数据。在整个系统设计中占有很高的地位。当系统设置好后,单片机扫描转换结束管脚P2.6的输入电平状态,当输入为高电平,则转换完成,将转换的数值转换并显示输出。若输入为低电平,则继续扫描。程序流程图如图4-2所示。

开始 设置模拟输入口 启动转换 N 转换完? Y 输出数值处理

图4-2 A/D转换程序流程图

4.3液晶显示子程序

1602液晶显示子程序主要是对内部控制指令进行指定如液晶初始化,显示空白,读,写,判断液晶是否忙及指定字符的位置等函数构成。液晶显示子程序流程图如图4-4所示。首先进行液晶初始化,再写地址命令到LCD,然后放发送字符串,最终液晶显示。

图4-3 液晶显示子程序流程图

11 盐城工学院课程设计说明书(2015)

开始

写显示地址

写到结束标志?

Y 将字符写入LCD

调用显示电压小数点的函数

调用函数显示电压的单位

图4-4 电压显示流程图

设置参数 N 显示电压的整数部分 显示电压的小数部分 将模拟信号转换成数字信号 返回

12

盐城工学院课程设计说明书(2015)

5 系统调试

单片机应用系统的调试包括硬件和软件两部分,但是它们并不能完全分开。一般的方法就是排除明显的硬件故障,再进行综合调试,排除可能的软硬件故障。总之,调试过程是一个软硬件相结合调试的过程,硬件电路是基础,软件是检测硬件电路和实现其功能的关键。本设计是在单片机最小系统的基础上建立起来的,所以必须先确定单片机最小系统能否正常工作。为了能够正确实现电压表的功能,接下来还要确定A/D转换电路和液晶显示电路有无错误,并对各个模块进行调试。硬件调试结束后,最主要的就是软件的调试。对各个模块的软件通过Keil等仿真编辑器进行编程,确认编程无误后然后与上位机通信,下载程序。然后进行软硬件联调,直至调试成功,得到完整的两路电压表。

实验结果如下:

图5-1 未通电前电路板正面

13

盐城工学院课程设计说明书(2015)

图5-2 通电后两路电压表电路板

14

盐城工学院课程设计说明书(2015)

6 结束语

15

盐城工学院课程设计说明书(2015)

参考文献

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

[2] 彭伟 单片机C语言程序设计实训100例—基于8051+Proteus仿真[M] 北京:电子工业出版社 ,2010.6.

[3] 张齐,朱宁西. 单片机应用系统设计技术—基于C51的Proteus仿真 [M].北京:化学工业出版社,2004.

[4] 冯育长 .单片机系统设计与实例分析.[M].西安:西安电子科技大学出版社,2007. [5] 晁阳. 单片机MCS-51原理及应用开发教程[M].北京:清华大学出版社,2009. [6] 张兰红 单片机原理及应用[M]. 机械工业出版社,2012.

[7] 黄惟公, 邓成中, 王燕. 单片机原理与应用技术[M]. 西安:西安电子科技大学出版社,2009。

16

盐城工学院课程设计说明书(2015)

附 录

附录1 ADC0832设计的两路电压表电路原理图

附录2 ADC0832设计的两路电压表Proteus仿真电路图 附录3 ADC0832设计的两路电压表元器件清单 附录4 ADC0832设计的两路电压表程序清单

17

-

附录1 ADC0832设计的两路电压表电路原理图

盐城工学院课程设计说明书(2015)

18

盐城工学院课程设计说明书(2015)

附录2 ADC0832设计的两路电压表Proteus仿真电路图 LM016L LCD1 C1 U122pF1939X1XTAL1P0.0/AD0 3812MP0.1/AD1C237P0.2/AD21836RV2 XTAL2P0.3/AD335P0.4/AD43422pFP0.5/AD533 R1P0.6/AD6932RSTP0.7/AD710k RS21P2.0/A8C3RW22P2.1/A91kE23+2.45 P2.2/A102924PSENP2.3/A11302510uFALEP2.4/A12 3126EAP2.5/A1327P2.6/A1428P2.7/A15 110P1.0P3.0/RXD211 RV1U2P1.1P3.1/TXD312P1.2P3.2/INT018413CSVCCP1.3P3.3/INT127 514CH0CLKP1.4P3.4/T035615CH1DIP1.5P3.5/T146716GNDDO P1.6P3.6/WR817P1.7P3.7/RD1kADC0832 STC89C51+1.75

VSSVDDVEERSRWE12345649x91011121314D0D1D2D3D4D5D6D7RP1123456789RESPACK-8Volts35%Volts 19

盐城工学院课程设计说明书(2015)

附录3 ADC0832设计的两路电压表元器件清单

序号 1 2 3 4 5 6 7 8 9

元器件 U1 U2 U3 C1,C2 C3 R1 R2,R3 RV1 X1 数量 1 1 1 2 1 1 1 1 1 型号(数值) 单片机STC89C52 ADC0832 LCD1602显示器 22pf电容 10uf/25V电解电容 电阻10K 可调节电阻10K 排阻 1K 晶振12M

20

盐城工学院课程设计说明书(2015)

附录4 ADC0832设计的两路电压表程序清单

程序如下:

#include #include

#define uchar unsigned char #define uint unsigned int

#define IO_1602 P0 // IO口

sbit RS_1602=P2^0; // 1602 RS引脚接P2.0 sbit RW_1602=P2^1; // 1602R/W引脚接P2.1 sbit E_1602=P2^2; // 1602 E引脚接P2.2

sbit CS=P1^0; //ADC0832个引脚 sbit CLK=P1^1; sbit DIO=P1^2;

void delay_ms(unsigned int t)// 延迟子函数11.0592MHz {

uchar x,y; for(t;t>0;t--) {

for(x=0;x<114;x++) for(y=0;y<1;y++); } }

void Wr1602Cmd(unsigned char dat) //写命令函数

{ E_1602=0; IO_1602=dat; RS_1602=0; RW_1602=0; E_1602=1;

21

1ms 盐城工学院课程设计说明书(2015)

delay_ms(1); E_1602=0; delay_ms(1); }

void Wr1602Dat(unsigned char dat) //写数据函数

{ E_1602=0; IO_1602=dat; RS_1602=1; RW_1602=0; E_1602=1; delay_ms(1); E_1602=0; delay_ms(1); }

void Init1602(void) {

delay_ms(20);

Wr1602Cmd(0x38); delay_ms(5);

Wr1602Cmd(0x38); delay_ms(5);

Wr1602Cmd(0x06); Wr1602Cmd(0x0c);

Wr1602Cmd(0x01);//清屏 Wr1602Cmd(0x80);//设置地址 }

uchar RdAdc0832(bit Hx) {

uchar value0,value1,i;

CS=1;CLK=0;DIO=1; CS=0;

DIO=1;_nop_();_nop_();_nop_();_nop_();//写ST位

22

盐城工学院课程设计说明书(2015)

CLK=1;_nop_();_nop_();_nop_();_nop_(); CLK=0;_nop_();_nop_();_nop_();_nop_();

DIO=1;_nop_();_nop_();_nop_();_nop_();//写SGL位 CLK=1;_nop_();_nop_();_nop_();_nop_(); CLK=0;_nop_();_nop_();_nop_();_nop_();

DIO=Hx;_nop_();_nop_();_nop_();_nop_();//写通道号位 CLK=1;_nop_();_nop_();_nop_();_nop_(); CLK=0;_nop_();_nop_();_nop_();_nop_();

DIO=1;

for(i=0;i<8;i++) {

CLK=1;_nop_();_nop_();_nop_();_nop_(); CLK=0;_nop_();_nop_();_nop_();_nop_(); value0<<=1;

if(DIO==1) value0|=0x01; else

value0&=0xfe;

}

for(i=0;i<8;i++) {

value1>>=1;

if(DIO==1) value1|=0x80; else value1&=0x7f;

CLK=1;_nop_();_nop_();_nop_();_nop_(); CLK=0;_nop_();_nop_();_nop_();_nop_(); }

CS=1;

if(value0!=value1) P1&=0X7F; else P1|=0X80; return value0; }

void main()

23

盐城工学院课程设计说明书(2015)

{

unsigned long i; Init1602(); while(1) {

Wr1602Cmd(0x80); i=RdAdc0832(0); i=(i*5000/255);

Wr1602Dat('C'); //在LCD显示屏上显示CH0= Wr1602Dat('H');

Wr1602Dat('0'); Wr1602Dat('=');

Wr1602Dat('0'+i/1000);//个位 Wr1602Dat('.');

Wr1602Dat('0'+i00/100);//小数点后一位 Wr1602Dat('0'+i000/10);//小数点后两位 Wr1602Dat('0'+i000);//小数点后三位 Wr1602Dat('V');

Wr1602Cmd(0xC0);//第二路电压显示 引脚CH3 i=RdAdc0832(1); i=(i*5000/255); Wr1602Dat('C'); Wr1602Dat('H'); Wr1602Dat('1'); Wr1602Dat('=');

Wr1602Dat('0'+i/1000); Wr1602Dat('.');

Wr1602Dat('0'+i00/100); Wr1602Dat('0'+i000/10); Wr1602Dat('0'+i000); Wr1602Dat('V'); } }

24

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

Top