基于单片机的数字电压表毕业设计_第1页
基于单片机的数字电压表毕业设计_第2页
基于单片机的数字电压表毕业设计_第3页
基于单片机的数字电压表毕业设计_第4页
基于单片机的数字电压表毕业设计_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

1、摘 要本文介绍的是数字电压表的发展背景和利用单片机,A/D 转换芯片结合的方 法设计一个直流数字电压表。它的具体功能是:最高量程为 200V,分三个档位量程,即2V,20V,200V,可以通过调档开关来实现各个档位,当测得电压的数值小于1V时,系统会自动的将电压数值转换为以mV为电压单位的电压值,并且通过按键的方法能够测得后五秒的平均电压值。 单片机是一种集成电路芯片,采用超大规模技术把具有数据处理能力(如算 术运算,逻辑运算,数据传送,中断处理)的微处理器(CPU)。随着单片机技术的 飞速发展,各种单片机蜂拥而至,单片机技术已成为一个国家现代化科技水平的 重要标志。 单片机可单独地完成现代工

2、业控制所要求的智能化控制功能,这是单片机最大的特征。单片机控制系统能够取代以前利用复杂电子线路或数字电路构成的控 制系统,可以软件控制来实现,并能够实现智能化,现在单片机控制范畴无所不在,例如通信产品,家用电器,智能仪器仪表,过程控制和专用控制装置等等,单片机的应用领域越来越广泛。 本毕业设计的课题是"简易数字电压表的设计"。主要考核我们对单片机技 术,编程能力等方面的情况。观察独立分析,设计单片机的能力,以及实际编程 技能。 本课题主要解决A/D转换,数据处理及显示控制等三个模块。控制系统采用AT89C52单片机,A/D转换采用TLC2543。关键字介绍:单片机,AT89

3、C52,A/D 转换,TLC2543,数据处理AbstractThis paper is the background of the development of digital voltmeter and using single chip computer, A/D conversion chip design method of the combination of the party A dc digital voltmeter. It is the specific function of: supreme range for 200 V, divide a gear range,

4、namely 2 V, 20 V, 200 V, can switch to achieve each by shifting gear gear, when the voltage of the numerical less than 1 V, the system will automatically will convert to mV voltage values for the voltage is the voltage unit, and through the key method can measure five seconds after the average volta

5、ge. MCU is a kind of integrated circuit chip, using the technology with large scale data processing ability (such as the art operations, logic operations, data transfer, interrupt handling) of the microprocessor (CPU). With the rapid development of the single chip microcomputer, all kinds of single

6、chip in great Numbers, microcontroller technology has become a national modernization level of science and technology. SCM can complete modern industrial control alone for the intelligent control function, it is the greatest feature of single chip microcomputer. Single-chip microcomputer control sys

7、tem can be replaced by complex electronic circuit or before digital circuit consists of the control system system, can control software to achieve, and to realize intelligent, now single-chip microcomputer control category is everywhere, such as communication products, household appliances, intellig

8、ent instruments, process control and special control device and so on, the application field of single chip microcomputer more and more widely. This graduate design topic is "simple digital voltmeter design". We mainly examine of single-chip processor technology technique, the programming

9、ability, etc. Observe independent analysis, design of the single chip microcomputer ability, and the actual programming skills. This subject mainly to solve A/D conversion, data processing and display control and so on three modules. The control system adopts AT89C52 single chip microcomputer, A/D c

10、onversion using ADC0809. Keywords: A single-chip microcomputer, AT89C52, A/D conversion, ADC0809, data processing 目 录摘 要1Abstract2目 录3第一章数字电压表简介41.1设计背景41.2设计意义5第二章数字电压设计两种方案简介62.1 由数字电路及芯片构建62.2 由单片机系统及 A/D 转换芯片构建6第三章单片机简介及本设计单片机的选择73.1 常用单片机的特点比较及本设计单片机的选择73.2 本设计使用的单片机的简介7第四章各种显示器件的介绍和选择84.1 常用显示

11、器件简介84.2 1602液晶的参数资料8第五章模数(A/D)转换芯片的选择115.1 常用的A/D芯片简介115.2 模数(A/D)芯片 TLC2543 的资料11引脚说明:12第六章总体设计146.1 技术要求146.2 设计方案14第七章硬件电路系统模块的设计157.1 单片机系统157.2 输入电路157.3 A/D 转换芯片与单片机的连接167.4 1602 液晶与单片机连接167.5 键盘与单片机的连接如下17第八章系统软件的设计188.1 汇编语言和 C 语言的特点及选择188.2 主程序设计18第九章系统的调试269.1 硬件调试269.2 软件调试26第十章总结与展望27参考

12、文献28第一章 数字电压表简介数字电压表(Digital Voltmeter)简称DVM,作为智能仪表的一种,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转化成不连续,离散的数字形式并加以显示的仪表,传统的指针式电压表功能单一,精度低,不能满足数字化时代的需求采用单片机的数字电压表,精度高,抗干扰能力强,可扩展性强,集成方便。目前,由各种单片A/D转换器构成的说字电压表,已经被广泛用于电子及电工测量,工业自动化仪表,自动测量系统等智能化测量领域,显示出强大的生命力。本文就数字电压表加以叙述。 1.1 设计背景数字电压表在1952年由美国NLS公司首次创造,它刚开始是4位,50多年来,

13、数字电压表有了不断的进步和提高。数字电压表是从电位差计的自动化过程中研制成 功的。开始是4位数码显示,然后是5位、6位显示,而现在发展到7位、8位数码显示;从最初的一两种类型发展到原理不同的几十种类型;从最早的采用继电器、电子 管发展到全晶体管、集成电路、微处理器化;从一台仪器只能测1-2 种参数到能测几十种参数的多用型;显示器件也从辉光数码管发展到等离子体管、发光二极管、液晶显示器等。数字电压表的体积和功耗越来越小,重量不断变轻,价格也逐步下降,可靠性越来越高,量程范围也逐步扩大。数字电压表出现在50年代初,60 年代末发起来的电压测量仪表。简称DVM,它采用的是数字化测量技术,把连续的模拟

14、量,也就是连续的电压值转变为不连续的数字量,加以数 字处理然后再通过显示器件显示。这种电子测量的仪表之所以出现,一方面是由于电子计算机的应用逐渐推广到系统的自动控制信实验研究的领域,提出了将各种被观察量或被控制量转换成数码的要求,即为了实时控制及数据处理的需要;另一方面,也是电子计算机的发展,带动了脉冲数字电路技术的进步,为数字化仪表的出现提供了条件。所以,数字化测理仪表的产生与发展与电子计算机的发展是密切相关的;同时,为革新电子测量中的烦锁和陈旧方式也催促了它的飞速发展。如今,它又成为向智能化仪表发展的必要桥梁。如今,数字电压表已绝大部分已取代了传统的模拟指针式电压表。因为传统的模拟指针式电

15、压表功能单一,精度低,读数的时候也非常不方便,很容易出错。而采用单片机的数字电压表由于测量精度高,速度快,读数时也非常的方便,抗干扰能力强,可扩展性强等优点已被广泛的应用于电子及电工的测量,工业自动化仪表,自动测试系统等智能化测量领域。显示出强大的生命力。数字电压表最初是伺服步进电子管比较式,其优点是准确度比较高,但是采样速度慢,重量达几十公斤,体积大,继之出现了斜波式电压表,它的速度方面稍有提高,但是准确度低,稳定性差,再后来出现了比较式仪表改进逐次渐近式结构,它不仅保持了比较式准确度高的优点,而且速度也有了很大的提高,但它有一缺点是抗干扰能力差,很容易受到外界各种因素的影响。随后,在斜波式

16、的基础上双引伸出阶梯波式,它的唯一的进步是成本降低了,可是准确宽,速以及抗干扰能力都未能提高。而现在,数字电压表的发展已经是非常的成熟,就原理来讲,它从原来的一,二种已发展到多种,在功能上讲,则从测单一参数发展到能测多种参数;从制作元件来看,发展到了集成电路,准确度已经有了很大的提高,精度高达3附录1NV;读数每秒几万次,而相对以前,它的价格也有了降低了很多。目前实现电压数字化测量的方法仍然模-数 (A/D)转换的方法,而数字电压表种类繁多,型号新异,目前国际仍未有统一的分类方法,而常用的分类方法有如下几种:1. 按用途来分:有直流数字电压表,交直流数字电压表,交直流万用表等。2. 按显示位数

17、来分:有4位,5位,6位,7位,8位等。 3. 按测量速度来分:有低准确度,中准确度,高准确度等,4. 按测量速度来分:有低速,中速,高速,超高速等。 但在日常生活中,数字电压表一般是按照原理不同进行分类的,目前大致分为以下几类:比较式,电压时间变换式,积分式等。在电量的测量中,压电流和频率是最基本的三个被测量。其中,电压所以数字电压表就成 为一种必不可少的测量仪器。另外,由于数字式仪器具有读数准确方便,精度高,误差小,灵敏度高和分辨率高,测量速度快等特点而倍受用户青睐,数字式电压表就是基于这种需求而发展起来的,是一种必不可少的电子测量仪表。1.2 设计意义这个课题的目的和意义在于使自己掌握对

18、数字电压表的理解,自己动手设计数字电压表与仿真,它可以广泛的应用于电压测量外,通过各种变换器还可以测量其他电量和非电量,测量是一种认识过程,就是用实验的方法将被测量和被选用的相同参量进行比较, 从而确定它的大小。 DVM广泛应用于测量领域每期测量的准确度和可信度取决于它的主要性能和技术指标。所示我们要学习和掌握如何设计DVM就显得十分重要。第二章 数字电压设计两种方案简介设计数字电压表有多种的设计方法,方案是多种多样的,由于大规模集成电路数字芯片的高速发展,各种数字芯片品种多样,导致对模拟数据的采集部分的不一致性,进而又使对数据的处理及显示的方式的多样性。又由于在现实的工作生活中,电压表的测量

19、测程范围是比较大的,所以必须要对输入电压作分压处理,而各个数据处理芯片的处理电压范围不同,则各种方案的分段也不同。下面介绍两种数字电压表的设计方案。2.1 由数字电路及芯片构建这种设计方案是由模拟电路与数字电路两大部分组成,模拟部分包括输入放大器。A/D 转换器和基准电压源;数字部分包括计数器,译码器,逻辑控制器,振荡器和显示器。其中,A/D转换器是它的核心器件,它将输入的模拟量转换成数字量。模拟电路和数字电路是相互联系的,由逻辑控制电路产生控制信号,按规定的时序将A/D转换器中个组模拟开关接通或4附录断开,保证A/D转换正常进行。A/D转换结果通过计数译码电路变换成段码,最后驱动显示器显示出

20、相应的数值。此方案设计其优点是,设计成本低,能够满足一般的电压测量。但设计不灵活,都是采用纯硬件电路,很难将其在原有的基础上进行扩展。2.2 由单片机系统及 A/D 转换芯片构建许多的应用电路这种方案是利用单片机系统与模数转换芯片,显示模块等的结合构建数字电压表。由于单片机的发展已经成熟,利用单片机系统的软硬件结合,可以组装出来。此方案的原理是模数(A/D)转换芯片的基准电压端,被测量电压输入端分别输入基准电压和被测电压。模数(A/D)转换芯片将被测量电压输入端所采集到的模拟电压信号转换成相应 的数字信号,然后通过对单片机系统进行软件编程,使单片机系统能按规定的时序来采集这些数字信号,通过一定

21、的算法计算出被测量电压的值。最后单片机系统将计算好了的被测电压值按一定的时序送入显示电路模块加以显示。此方案不仅能够继承上一种方案的各种优点,还能改进上一种设计方案设计不灵活,难与在原基础上进行功能扩展等不足。 第三章 单片机简介及本设计单片机的选择3.1 常用单片机的特点比较及本设计单片机的选择综合上一章提到的两种设计方案的各方面优点及其在现在的所设计电压表的实用性,我们选择第二种电压表设计方案,即由单片机系统及数字芯片构建的方法来我们本次设计。在这一设计中,我们涉及到了一个关键系统模块单片机系统模块,而目前单片机的种类是很繁多的,主要有主流的8位单片机和高性能的32位单片机,结合本设计各方

22、面因素,8位单片机对于本设计已经是绰绰有余了,但将用哪一种类8的单片机呢。在这里,不得不先简单的介绍一下几种常用的8单片机。单片机是指一个集成在一块芯片上的完整计算机系统,具有一个完整计算机5 系列单片机,AVR单片机,PIC单片机。应用最广的8位单片机还是intel的51系列单片机。51系列单片机的特点是:硬件结构合理,指令系统规范,加之生产历史悠久,世界有许多芯片公司都买了51的芯片核心专利技术,并在其基础上扩充其性能,使得芯片的运行速度变得更快,性价比更高。 AVR 单片机是atmel公司推出较新的单片机,它的显著特点是:高性能,低功能,高速度,指令单周期为主,但性格方面比51单片机要高

23、。有专门的I/O方向寄存器。虽然有转强的驱动电压,但I/O口使用不比51单片机方便。PIC单片机系列是美国微芯公司的产品,也是市面上增长最快的单片机之一,属精简指令集单片机,其特点是:高速度,高性能,但在性格方面比51单片机要高,也有专门的,I/O方向寄存器,I/O 口使用不比 51单片机方便综合以上各种单片机的基本性能及本设计的满足需要,我们将选择 51 系列单片机. 3.2 本设计使用的单片机的简介本设计中选用是51系列的AT89C52,它是低电压,低功耗,高性能的CMOS8 位单片机,片内含8KB的可反复擦写的只读程序存储器和256B的随机存取数据存储器,2个 I/O 口线, 3 个 1

24、6 位定时/计数器,片内振荡器及时钟电路,并与 MCS-51系列单片机兼容。在设计中,单片机起着连接硬件电路与程序运行及存储数据的任务,一方面,它将 A/D 转换器。显示器和语音芯片等通过I/O口地址线和数据线连接起来;另一方面, 它将用户下载的程序通过控制总线控制数据的输入输出,从而实现册电压的功能。第四章 各种显示器件的介绍和选择 4.1 常用显示器件简介本次设计中有显示模块,而常用的显示器件比较多,有数码管,LED点阵,1602液晶,12864液晶等。 数码管是最常用的一种显示器件,它是由几个发光二极管组成的8字段显示器件,其特点是价格非常的便宜,用也非常的方便,显示效果非常的清楚。小电

25、流下可以驱动发光,发光响应时间极短,体积小,重量轻,抗冲击性能好,寿命长。但数码管只能是显示09的数据。不能够显示字符,这也是数码管的不足之处。LED阵显示器件是由好多个发光二极管组成的。具有高亮度,功耗低,视角大,寿命长,耐湿,冷,热等特点,LED点阵显示器件可以显示数字,英文字符,中文字符等。但用LED点阵显示的软件程序设计比较麻烦32个字符。1602 液晶模块内部的字符发生存储器已经存储了160个不同的点阵字符图形,这些字这些字符有:阿拉伯数字,英文字母的大小写,常用的符号,和日文假名等,每一个字符都有一个固定的代码。使用时直接编写软件程序按一定的时序驱动即可。它的特点是显示字迹清楚,价

26、格相对便宜。12864液晶也是一种工业字符型液晶,它不仅能够显示1602液晶所可以显示的字符,数字等信息,而且还可以显示8*4个中文汉字和一些简单的图片,显示信息也非常的清楚。使用时也直接编写软件程序按一定的时序驱动即可。不过它的价格比1602液晶贵了很多。在本设计中,我们只需要显示最后电压的数字值和电压的单位,综合上面各种显示器件的特点:数码管只能显示数字,不能显示单位字符,不符合本设计的要求。而点阵显示器件驱动显示软件程序编写麻烦,占用的引脚相对也较多。也不是理解的显示器件。所以在本设计中,我们考虑用液晶显示器件,虽然12864 液晶比1602液晶的功能强,不过在价格方面贵了好多。而160

27、2液晶也足够满足本设计的需要。因此,在本设计实验我们选择1602液晶显示器件。4.2 1602液晶的参数资料示模块的显示器件。以下是1602液晶的各方面我们选择了1602液晶做为本设计的显参数: 接口信号说明: 编号符号引脚说明1VSS电源地2VDD电源正极3WL液晶显示偏压信号4RS数据/命令选择器5R/W读/写选择器6E使能信号7-14D0-D7Data I/015BLA背光源正极16BLK背光源负极基本操作时序: 1. 读状态:输入:RS=0,RW=1,E=1、输出:D0-D7为状态字 2. 写状态:输入:RS=0,RW=0,D0-D7为指令码,E为高脉冲、输出:无 3. 读数据:输入:

28、RS=1,RW=1,E=1。输出:D0-D7 为数据。4. 写数据:输入:RS=1,RW=0,D0-D7为数据,E为高脉冲。输出:无 状态字说明STA7STA6STA5STA4STA3STA2STA1STA0STA0-6当前数据地址指针的数值STA7读写操作使能1:禁止 0:允许指令的说明.显示模式设置指令码功能0011100设置16*2显示,5*7点阵,8位数据口显示开/关及光标设置指令码功能00001DCBD=1 开显示;D=0 关显示C=1 显示光标;C=0 不显示光标B=1 光标闪烁;B=0 光标不显示闪烁000001NSN=1 当读写一个字条款后地址指针加一,且光标加一。N=0 当读

29、或写一个字符后地址指针减一,且光标减一。S=1 当写一个字条款,整屏显示左移(N=1)或右移(N=0),以得到光标不移动而屏幕移动的效果。S=0 当写一个字符,整屏显示不移动。数据控制指令码功能80H+地址码 (0-27H,40H-67H)设置数据地址指针01H显示清屏:1.数据指针清0 2.所有显示清002H显示回车: 数据指针清0第五章 模数(A/D)转换芯片的选择在本设计中,模数(A/D)转换模块是一个重要的模块,它关系到最后数电压表电压值的精确度。所以,A/D 芯片的选择是设计过程中一个很重要的环节。5.1 常用的A/D芯片简介 常用的A/D芯片有AD0809,AD0832,LC254

30、3C等几种。下面简单介绍一下这三种芯片。AD0809是8位逐次逼近型A/D转换器,它是由一个8路的模拟开关,一个地址锁存译码器,一个A/D转换器和一个三态输出锁存器组成。多路开关可选通 8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。些A/D转换器是的特点是8位精度,属于并行口,如果输入的模拟量变化大快,必须在输入之前增加采样电路。AD0832也是8位逐次逼近型A/D转换器,可支持致命伤个单端输入通道和一个差分输 入通道。它易于和微处理器接口或独立使用;可满量程工作;可用地址逻辑多路器选通各输 入通道。TLC2543C是12位开关电容逐次逼近 A/D 转换,每个器件有三个控制输

31、入端,片选, 输入/输出时钟以及地址输入端。它可以从主机高速传输转换数据。它有高速的转换,通用的控制能力,具有简化比率转换,刻度以及模拟电路与逻辑电路和电源噪声隔离,耐高温等特点。 综合上述几种A/D转换芯片的特点,前两种芯片的性能和精度都不如第三种芯片。在本设计中,我们的目标是设计高精度的电压表,因此在此,我们选择精度为12位的TLC2543芯片。5.2 模数(A/D)芯片 TLC2543 的资料 综合本设计的各方面考虑,我们选了TLC2543模数转换芯片。下面就介绍此芯片的各方面资料。TLC2543 芯片的封装引脚图和引脚说明如下:引脚说明:引脚号名称I/0说明1-9, 11, 12AIN

32、O-AINIOI模拟输出端15CSI片选端17Data inputI串行数据输入端16Data out0用于A/D转换结果输出的3态串行输出端19EOC0转换结束端10GND接地端18I/0 clkI输入/输出时钟端11REF+I正基准电压端13REF-I负基准电压端20VCC正电压端各引脚的使用详细介绍 1. AIN0-AIN10 这 11 个模拟信号输入由内部多路选器选择。对4.1MHZ的 I/Oclk,驱动源阻抗必须小于或等于50欧并且能够将模拟电压由60PF的电容来限制其斜率。2. 在CS端的一个由高低低变化将复位内部计数器并控制使能data out,data input和I/O cl

33、k。一个由低至高的变化将在一个设置时间内禁止data input和I/O clk. 3. 串行数据输入端data input是一个4位的串行地址选择下一个即将被转换的所需的模拟输入或测试电压。串行数据以MSB为前导并在I/O clk的前4个上升沿被移入。4在个地址位被读入地址寄存器后,I/O clk将剩下的几位依次输入。4. Data out在CS为高时处于高阻抗状态,而当CS为低时处于激活状态。CS一旦有效,按照前一次转换结果的MSB/LSB值将data out从高阻抗状态转变成相应的逻辑电平,I/O clk的下一个下降沿将根据下一个MSB/LSB将data out 驱动成相应的逻辑电平,剩

34、下的各位依次移出。 5. EOC在最后的I/O clk下降沿之后,从高电平变为低电平并保持低直到转换完成及数据准备传输。6. GND端是内部电路的地回路端,除加有说明外,所有电压测量都相对于 GND。 7. I/O clk端串行输入并完成以下四个功能:第一,在 I/O clk 的前8个上升沿,它将8个输入数据信键入输入数据寄存器。在第4个上升沿之后为多路器的地址。第二,I/O在clk的第4个下降沿,在选定的多路器的输入端上的模拟输入电压开始和电容器充电并继续到I/O clk的最后一个下降沿。第三,它将前一次转换的数据的其余11位移出data out端。在I/O clk的下降沿时数据变化。第四,

35、在I/Oclk的最后一个下降沿它将转换的控制信号传送到内部的状态控制位。 8. REF+端通常接VCC,最大输入电压范围取决于加于本端与加于REF-端的电压差。9. REF-端通常接地。第六章 总体设计6.1 技术要求1) 最高量程为:200V。 2) 分为三档量程:2V,20V,200V。可以通过调档开关实现各档位。最高精度为 0.01mv。3) 被测电压的电压值小于1V时,有自动换以MV为单位显示。4) 通过按键可以显示5秒的平均电压的电压值。6.2 设计方案 根据上述,我们选择单片机与A/D转换芯片结合的方法实现本设计。使用的基本元器件是:AT89C51单片机。TLC2543模数转换芯片

36、,1602液晶显示器,开关,按键,电容,电阻,晶振,标准电源等等。 设计的基本框图如下: 第七章 硬件电路系统模块的设计根据上述选择的各元器件,各电路模块的电路图如下描述。7.1 单片机系统 单片机最小系统包括晶振电路,复位电路,电源.其原理图如下: 此模块中,单片机的晶振是12MHZ,C1和C2的电容是10UF,C3可选 1-10UF。R电阻为1K。7.2 输入电路 由于输入电路的电压比基准电压(2V)高很多,因此在输入电路必须加电压衰减器。衰减电路可由开关来选择不同的衰减率,从而切换档位。则完整输入电路如下: 通过计算,可知设计衰减器用的电阻R2,R3和R4分别为:9M,900K,100K

37、 控制档位的开关是双开关的,目地是能够使单片机CPU自动识别档位,即可用相应的档位的数据转换的算法计算出正确的电压值。被测电压输入端,整理过的模拟电压输入端,开关与单片机的连接如图所示。 7.3 A/D 转换芯片与单片机的连接 此设计中选择的是A/D转换芯片的通道0,A/D芯片的数据输入口连接单片机的P1.3口,数据输出口连接单片机的P1.4口,芯片使能端连接单片机的 P1.5 口,脉冲端连接单片机的P1.6口。模块连接如下图所示。7.4 1602 液晶与单片机连接 此模块液晶的 RS,RW 和E端分别连接单片机的 P1.2,P1.1 和 P1.0 口;液晶的数据各端口连接单片机的 P0 口。

38、具体如下图所示。7.5 键盘与单片机的连接如下 此键盘的一端与单片机的 P2.0 口连接,一端接地。原理图如下所示。该键盘的功能:当键盘被按下时,即可计算后5秒的平均电压值。第八章 系统软件的设计8.1 汇编语言和 C 语言的特点及选择 本设计是硬件电路和软件编程相结合的设计方案,选择合适的编程语言是一个重要的环节。在单片机的应用系统程序设计时,常用的是汇编语言和C语言。汇编语言的特点是占用内存单元少,执行效率高,执行速度快。但它依赖于计算机硬件,程序可读性和可移植性比较差。而C语言虽然执行效率没有汇编语言高,但语言简洁,使用方便,灵活,运算丰富,表达化类型多样化,数据结构类型丰富,具有结构化

39、的控制语句,程序设计自由度大,有很好的可重用性,可移植性等特点。由于现在单片机的发展已经达到了很高的水平,内部的各种资源相当的丰富,CPU的处理速度非常的快。用C语言来控制单片机无疑是一个理想的选择。所以在本设计中采用C语言编写软件程序。8.2 主程序设计主程序设计包括以下方面: 按照硬件电路对单片机位定义。 编写延时模块程序。 编写驱动 1602 液晶显示模块程序。 编写驱动 A/D 转换模块程序。编写键盘扫描模块程序。 主程序的总体流程如下图全部软件程序如下:#include<reg52.h>#define uchar unsigned char #define uint un

40、signed int #define key_state0 0 /键盘扫描的各个状态 #define key_state1 1 #define key_state2 2 #define key_state3 3 sbit rs=P12;/1602 液晶写命令/数据标志,0 时写命令 sbit rw=P11;/1602 液晶写入/读出标志,0 时写入数据 sbit ep=P10; sbit input=P24; sbit output=P23; sbit cs=P25; sbit clk=P26; sbit key=P20; sbit flag_1=P13;/定义电压表档位相关标志 sbit f

41、lag_2=P14; sbit flag_3=P15; sbit flag_4=P16; uchar code tab0="V " /显示的单位及有关的字符 uchar code tab1="MV" uchar code tab2="Power:" uchar code tab3="Aver_V:"/平均电压值标志符 uchar t; void delay(int z)/延时函数 int x,y; for(x=z;x>0;x-) for(y=10;y>0;y-); void write_com(ucha

42、r com)/往 1602 液晶写命令函数 rs=0; P0=com; delay(5); ep=1; delay(5); ep=0; void write_dat(uchar dat)/往 1602 液晶写数据函数 rs=1;P0=dat; delay(5); ep=1; delay(5); ep=0; void init_1602()/对 1602 液晶的初始化函数 rs=0; rw=0; write_com(0x38); delay(1); write_com(0x0c); delay(1); write_com(0x06); delay(1); write_com(0x01); del

43、ay(1); void init_timer0()/定时计数器0初值化函数, TMOD=0x01;/方式一 TH0=(65536-50000)/256;/每 50ms 中断一次 TL0=(65536-50000)%256; IE=0x82;/打开中断 TR0=0;/定时器首先不可工作 void display(uchar x,uchar y,uint dat)/显示电压值的函数,x 行 y 列开始显示 uint add; uchar i,a5; switch(x) case 0:add=0x80;break; case 1:add=0x80+0x40;break; add=add+y; wri

44、te_com(add); for(i=0;i<5;i+) ai=dat%10; dat=dat/10; write_dat(a4+0x30); write_dat(a3+0x30); write_dat(a2+0x30); write_dat('.'); write_dat(a1+0x30); write_dat(a0+0x30); void display_zifu(uchar x,uchar y,uchar *str)/显示字符函数,x 行 y 列开始显示 uint add; switch(x) case 0:add=0x80;break; case 1:add=0x

45、80+0x40;break;add=add+y; write_com(add); while(*str!='0') write_dat(*str); uint read2543(unsigned char port) /2543转换程序 unsigned int i; uint ad_value=0; clk=0; cs=0; eoc=1; port<<=4; for(i=0;i<12;i ) if(output) ad_value|=0x01; input=(bit)(port&0x80); clk=1; _nop_(); _nop_(); _nop

46、_(); clk=0; _nop_(); _nop_(); _nop_(); port=port<<1; ad_value=ad_value<<1; cs=1; ad_value=ad_value>>1; return ad_value; read_key()/当键盘按下时,计算后五秒的平均电压值if(flag=0)delay (10);-imer0()interrupt1;if(t=20) t=0; flag+; if(flag=1) dat1=dat; if(flag=2) dat2=dat; if(flag=3) dat3=dat; if(flag=4

47、) dat4=dat; if(flag=5) dat5=dat; dat_aver=(dat1+dat2+dat3+dat4+dat5)/5; display(1,7,dat_aver); display_zifu(1,13,tab0); dat_aver=0; if(flag=8) flag=0; write_com(0x01); TR0=0; void main() long float dat; long float dat_aver,dat1,dat2,dat3,dat4,dat5;/定义 5 个随机电压值变量 uchar flag;/后五秒取随机电压的标志 init_timer0()

48、; init_1602();delay(10); while(1) dat=read2543(0x01); if(dat>=100)/当电压值大于 1V 时,用 V 显示,否则用 mV 显示 display_zifu(0,1,tab2); display(0,7,dat); display_zifu(0,13,tab0); else display_zifu(0,1,tab2); display(0,7,dat*1000);display_zifu(0,13,tab1); read_key(); void timer0() interrupt 1/定时器中断函数 TH0=(65536-5

49、0000)/256;/重新放入初始值 TL0=(65536-50000)%256; t+; 第九章 系统的调试 完成了系统的硬件设计,制作和软件编程之后,要使系统能够按设计意图正常运行。必须进行系统调试.调试分了硬件和软件调试。 9.1 硬件调试 硬件调试的主要任务是排除硬件故障,其中包括设计的错误和工艺性故障等。 1. 检查所设计的硬件电路板所有的器件和引脚是否正确,尤其是电源的连接是否正确。 检查各总线是否有短路的故障,检查开关/按键是否正常,是否连接正确,为了保护芯片,应先对各 IC 座电位进行检查,确认无误后再插入芯片。2. 将40芯片的仿真插头插入单片机插座进行调试,检查各接口是否满足设计的要求,有正常的程序测试硬件电路的好坏。9.2 软件调试 软件调试的

温馨提示

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

评论

0/150

提交评论