基于单片机的数字电压表pcf8591..

合集下载

基于51单片机-PCF8591数字电压表课程设计

基于51单片机-PCF8591数字电压表课程设计

课程名称:微机原理课程设计题目:数字电压表ﻬ摘要单片微型计算机简称单片机,是典型的嵌入式微控制器,常用英文字母的缩写MCU表示单片机,单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。

单片机由运算器,控制器,存储器,输入输出设备构成,相当于一个微型的计算机(最小系统),和计算机相比,单片机缺少了外围设备等。

概括的讲:一块芯片就成了一台计算机。

它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。

同时,学习使用单片机是了解计算机原理与结构的最佳选择。

它最早是被用在工业控制领域。

其中我们用于学习用的最多的是STC89C52单片机,STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。

STC89C52使用经典的MCS-51内核,但也做了很多改进使得芯片具有传统51单片机不具备的功能。

STC89C52具有8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KB EE PROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构,全双工串行口。

本设计就是以单片机STC89C52为核心,附以外围电路,实现数字电压表的功能,并运用软件Proteus进行仿真来得到实验结果。

关键词:STC89C52单片机、仿真、中断、数字电压表、数码管显示ﻬ目录一、任务要求ﻩ错误!未定义书签。

1.1 设计任务ﻩ错误!未定义书签。

1.2设计要求ﻩ错误!未定义书签。

1.3发挥部分 ...................................................................................... 错误!未定义书签。

1.4 创新部分 ........................................................................................... 错误!未定义书签。

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

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

摘要单片机是一种集成电路芯片,采用超大规模技术把具有数据处理能力(如算术运算,逻辑运算、数据传送、中断处理)地微处理器(CPU).随着单片机技术地飞速发展,各种单片机蜂拥而至,单片机技术已成为一个国家现代化科技水平地重要标志.单片机可单独地完成现代工业控制所要求地智能化控制功能,这是单片机最大地特征.单片机控制系统能够取代以前利用复杂电子线路或数字电路构成地控制系统,可以软件控制来实现,并能够实现智能化.现在单片机控制范畴无所不在,例如通信产品、家用电器、智能仪器仪表、过程控制和专用控制装置等等,单片机地应用领域越来越广泛.本毕业设计地课题是“简易数字电压表地设计”.主要考核我们对单片机技术,编程能力等方面地情况.观察独立分析、设计单片机地能力,以及实际编程技能.本课题主要解决A/D转换、数据处理及显示控制等三个模块.控制系统采用A T89C52单片机,A/D转换采用ADC0809.关键字介绍:单片机,A T89C52,A/D转换,ADC0809,数据处理.AbstractChip Processor is a kind of chip of integrated circuit, adopt to exceed large-scale technology have data handling ability( such as arithmetic manipulation, logic is operational , data deliver andsuspend handling) tiny processor ( CPU ). Along with Chip Processor technology develop fast, various Chip Processor come in great numbers, Chip Processor technology has become a important sign of the national modern level of science and technology.Chip Processor can complete modern industrial control alone the intelligent control function that will beg, this is the feature of biggest Chip Processor. When Chip Processor control system can replace, using the control system that complex electronic line or digital circuit forms can software control come to realize, and can realize intelligence to melt. Now, Chip Processor control category is omnipresent , for instance communicate product, electric home appliances, intelligent instrument appearance, course control and the control equipment for special purpose and so on, the application field of Chip Processor is more and more extensive.Graduate the program of design is "the design of simple digital volmeter ". Check on our condition for the aspects such as Chip Processor technology and programming ability mainly. Observe actual programming ability as well as the ability of independent analysis and design Chip Processor.This program solves the data handling and conversion of A/D mainly and shows the 3 modulars such as control. Control system adopts AT89C52 only flat machine, the conversion of A/D adopts ADC0809.Keyword introduction: Chip Processor, AT89C52, A/D changes, ADC0809,Data handle.目录第一章绪论 (4)1.1 单片机简介 (4)1.2 单片机地应用领域 (5)1.3 单片机地发展趋势 (6)1.4 单片机应用系统地开发过程 (7)1.4.1 总体设计 (8)1.4.2 硬件电路设计 (8)1.4.3 软件设计 (8)第二章数字电压表 (8)2.1 数字电压表地特点 (9)2.2 数字仪表地发展趋势 (10)第三章系统设计 (11)3.1 功能要求及设计目标 (11)3.2 方案论证 (11)3.3 系统硬件电路设计 (12)3.4 系统程序地设计 (15)3.4.1 初始化程序 (15)3.4.2 主程序 (15)3.4.3 显示子程序 (16)3.4.4 模/数转换测量子程序 (16)3.5 性能分析 (17)第四章主要硬件功能及介绍 (18)4.1 ADC0809 (18)4.1.1 主要特性 (18)4.1.2 内部结构 (19)4.1.3 外部特性(引脚功能) (20)4.2 AT89C52 (21)4.2.1 主要性能 (21)4.2.2 引脚结构 (21)4.2.3 引脚功能说明 (23)4.2.4 特殊功能寄存器 (25)4.2.5 存储器结构 (26)4.2.6 定时器0和定时器1 (27)4.2.7 定时器2 (27)4.2.8 中断 (28)4.2.9 晶振特性 (30)4.2.10 空闲模式 (30)4.2.11 掉电模式 (31)4.2.12 程序储存器地加密 (31)4.2.13 Flash编程―并行模式 (32)4.2.14 编程方法 (32)第五章毕业设计总结 (32)附录 (34)附录一简易数字电压表地单片机控制源程序 (34)附录二参考文献 (43)附录三文献翻译 (44)第一章绪论1. 1 单片机简介单片机是一种集成电路芯片,采用超大规模技术把具有数据处理能力(如算术运算,逻辑运算、数据传送、中断处理)地微处理器(CPU),随机存取数据存储器(RAM),只读程序存储器(ROM),输入输出电路(I/O口),可能还包括定时计数器,串行通信口(SCI),显示驱动电路(LCD或LED驱动电路),脉宽调制电路(PWM),模拟多路转换器及A/D转换器等电路集成到一块单块芯片上,构成一个最小然而完善地计算机系统.这些电路能在软件地控制下准确、迅速、高效地完成程序设计者事先规定地任务.由此来看,单片机有着微处理器所不具备地功能,它可单独地完成现代工业控制所要求地智能化控制功能,这是单片机最大地特征. 然而单片机又不同于单板机,芯片在没有开发前,它只是具备功能极强地超大规模集成电路,如果赋予它特定地程序,它便是一个最小地、完整地微型计算机控制系统,它与单板机或个人电脑(PC机)有着本质地区别,单片机地应用属于芯片级应用,需要用户了解单片机芯片地结构和指令系统以及其它集成电路应用技术和系统设计所需要地理论和技术,用这样特定地芯片设计应用程序,从而使该芯片具备特定地功能.不同地单片机有着不同地硬件特征和软件特征,即它们地技术特征均不尽相同,硬件特征取决于单片机芯片地内部结构,用户要使用某种单片机,必须了解该型产品是否满足需要地功能和应用系统所要求地特性指标.这里地技术特征包括功能特性、控制特性和电气特性等等,这些信息需要从生产厂商地技术手册中得到.软件特征是指指令系统特性和开发支持环境,指令特性即我们熟悉地单片机地寻址方式,数据处理和逻辑处理方式,输入输出特性及对电源地要求等等.开发支持地环境包括指令地兼容及可移植性,支持软件(包含可支持开发应用程序地软件资源)及硬件资源.要利用某型号单片机开发自己地应用系统,掌握其结构特征和技术特征是必须地.单片机控制系统能够取代以前利用复杂电子线路或数字电路构成地控制系统,可以软件控制来实现,并能够实现智能化,现在单片机控制范畴无所不在,例如通信产品、家用电器、智能仪器仪表、过程控制和专用控制装置等等,单片机地应用领域越来越广泛. 诚然,单片机地应用意义远不限于它地应用范畴或由此带来地经济效益,更重要地是它已从根本上改变了传统地控制方法和设计思想.是控制技术地一次革命,是一座重要地里程碑.1. 2 单片机地应用领域单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备地智能化管理及过程控制等领域,大致可分如下几个范畴: 1.在智能仪器仪表上地应用单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型地传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量地测量.采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大.例如精密地测量设备(功率计,示波器,各种分析仪).2.在工业控制中地应用用单片机可以构成形式多样地控制系统、数据采集系统.例如工厂流水线地智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等.3.在家用电器中地应用可以这样说,现在地家用电器基本上都采用了单片机控制,从电饭褒、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花八门,无所不在.4.在计算机网络和通信领域中地应用现代地单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间地应用提供了极好地物质条件,现在地通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见地移动电话,集群移动通信,无线电对讲机等.5.单片机在医用设备领域中地应用单片机在医用设备中地用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等.此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛地用途.1. 3 单片机地发展趋势现在可以说单片机是百花齐放,百家争鸣地时期,世界上各大芯片制造公司都推出了自己地单片机,从8位、16位到32位,数不胜数,应有尽有,有与主流C51系列兼容地,也有不兼容地,但它们各具特色,互成互补,为单片机地应用提供广阔地天地.纵观单片机地发展过程,可以预示单片机地发展趋势,大致有: 1.低功耗CMOS化 MCS-51系列地8031推出时地功耗达630mW,而现在地单片机普遍都在100mW左右,随着对单片机功耗要求越来越低,现在地各个单片机制造商基本都采用了CMOS(互补金属氧化物半导体工艺).象80C51就采用了HMOS(即高密度金属氧化物半导体工艺)和CHMOS(互补高密度金属氧化物半导体工艺).CMOS虽然功耗较低,但由于其物理特征决定其工作速度不够高,而CHMOS则具备了高速和低功耗地特点,这些特征,更适合于在要求低功耗象电池供电地应用场合.所以这种工艺将是今后一段时期单片机发展地主要途径.2.微型单片化现在常规地单片机普遍都是将中央处理器(CPU)、随机存取数据存储(RAM)、只读程序存储器(ROM)、并行和串行通信接口,中断系统、定时电路、时钟电路集成在一块单一地芯片上,增强型地单片机集成了如A/D转换器、PMW(脉宽调制电路)、WDT(看门狗)、有些单片机将LCD(液晶)驱动电路都集成在单一地芯片上,这样单片机包含地单元电路就更多,功能就越强大.甚至单片机厂商还可以根据用户地要求量身定做,制造出具有自己特色地单片机芯片. 此外,现在地产品普遍要求体积小、重量轻,这就要求单片机除了功能强和功耗低外,还要求其体积要小.现在地许多单片机都具有多种封装形式,其中SMD(表面封装)越来越受欢迎,使得由单片机构成地系统正朝微型化方向发展.3.主流与多品种共存现在虽然单片机地品种繁多,各具特色,但仍以80C51为核心地单片机占主流,兼容其结构和指令系统地有PHILIPS公司地产品,ATMEL公司地产品和中国台湾地Winbond系列单片机.所以C8051为核心地单片机占据了半壁江山.而Microchip公司地PIC精简指令集(RISC)也有着强劲地发展势头,中国台湾地HOLTEK公司近年地单片机产量与日俱增,与其低价质优地优势,占据一定地市场分额.此外还有MOTOROLA公司地产品,日本几大公司地专用单片机.在一定地时期内,这种情形将得以延续,将不存在某个单片机一统天下地垄断局面,走地是依存互补,相辅相成、共同发展地道路.1.4 单片机应用系统地开发过程单片机地应用系统随着其用途不同,其硬件和软件均不相同,也即单片机地最初地选型都很重要,原则上是选择高性价比地单片机,硬件软件化是提供系统性价比地有效方法,尽量减少硬件成本,多用软件来实现相同地功能,这样也可大大提高系统地可靠性. 虽然单片机地硬件选型不尽相同,软件编写也千差万别,但系统地研制步骤和方法是基本一致地,一般都分为总体设计、硬件电路地构思设计、软件地编制和仿真调试几个阶段.1.4.1 总体设计确立功能特性指标不管是工程控制系统还是智能仪器仪表,都必须先分析和了解工程地总体要求,输入信号地类型和数量,输出控制地对象及数量,辅助外设(如传感器)地种类及要求,使用地环境及工作地电源要求,产品地成本,可靠性要求和可维护性及经济效益等等因素,必要时可参考同类产品地技术资料,制定出可行地性能指标.1.4.2 硬件电路设计总体设计中确立地功能特性要求,确定单片机地型号,所需外围扩展芯片、存储器、I/O电路、驱动电路、可能还有A/D和D/A转换电路以及其它模拟电路,设计出应用系统地电路原理图.1.4.3 软件设计系统资源在单片机应用系统地开发中,软件地设计是最复杂和困难地,大部分情况下工作量都较大,特别是对那些控制系统比较复杂地情况.如果是机电一体化地设计人员,往往需要同时考虑单片机地软硬件资源分配.第二章数字电压表数字电压表简称DVM,它是采用数字化测量技术,把连续地模拟量(直流输入电压)转换成不连续、离散地数字形式并加以显示地仪表.2.1 数字电压表地特点1.显示清晰直观,读数准确传统地模拟式仪表必须借助于指针和刻度盘进行读数,在读数过程中不可避免地会引入人为地测量误差.数字电压表则采用先进地数显技术,使测量结果一目了然,只要仪表不发生跳读现象,测量结果就是唯一地.新型数字电压表还增加了标志符显示功能,包括测量工程、符号单位和特殊符号、为解决DVM不能反映被测电压地连续变化过程以及变化趋势这一难题,一种"数字/模拟条图"仪表业已问世."模拟图条"(Anal of Bargraph)有双重含义:第一,被测量为模拟量;第二,利用条状图形来模拟被测量地大小及变化趋势.这类仪表将数字显示与高分辨率模拟条图显示集于一身,兼有DVM与模拟电压表之优点.智能数字电压表均带微处理器和标准接口,可配合计算机和打印机进行数据处理或自动打印,构成完整地测试系统.2.显示位数显示位数通常为31/2位、32/3位、33/4/位、41/2位、43/4位、51/2位、61/2位、71/2位、81/2位共9种.判定数字仪表地位数有两条原则:①能显示0~9所有数字地位是整数位;②分数位地数值是以最大显示值中最高位数字为分子,用满量程时最高数字作分母.例如,某数字仪表地最大显示值为1999,满量程计数值为2000,这表明该仪表有3个整数位,而分数位地分子为1,分母是2,故称之为31/2位,读作三位半.3.准确度高准确度是测量结果中系统误差与随机误差地综合.4.分辨率高数字电压表在最低电压量程上末位1个字所代表地电压值,称为仪表地分辨力,它反映仪表灵敏度地高低.分辨力随显示位数地增加而提高.分辨率是指所能显示地最小数字(零除外)与最大数字地百分比.例如31/2位DVM地分辨率为1/1999≈0.05%.需要指出,分辨力与准确度属于两个不同地观念.从测量角度看,分辨力是"虚"指标(与测量误差无关),准确度才是"实"指标(代表测量误差地大小).5.测量范围宽多量程DVM一般可测量0~1000V直流电压,配上高压探头还可测上万伏地高压.6.扩展能力强在数字电压表地基础上,还可扩展成各种通用及专用数字仪表、数字多用表(DMM)和智能仪表,以满足不同地需要.7.测量速度快数字电压表在每秒钟内对被测电压地测量次数,叫测量速率,单位是"次/S".它主要取决于A/D转换器地转换速率,其倒数是测量周期.8.输入阻抗高数字电压表具有很高地输入阻抗,通常为10MΩ~10000MΩ,最高可达1TΩ. 9.集成度高,微功耗新型数字电压表普遍采用CMOS大规模集成电路,整机功耗很低.10.抗干扰能力强51/2位以下地DVM大多采用积分式A/D转换器,其串模抑制比、共模抑制比各别可达100dB、80~120dB.高档DVM还采用数字滤波、浮地保护等先进技术,进一步提高了抗干扰能力,共模抑制比可达180dB.2.2 数字仪表地发展趋势采用新技术、新工艺,由LSI和VLSI构成地新型数字仪表及高档智能仪器地大量问世,标志着电子仪器领域地一场革命,也开创了现代电子测量技术地先河.1.广泛采用新技术,不断开发新产品2.模块化地发展方向新一代数字仪表正朝着标准模块化地方向发展.预计在不久地将来,许多数字仪表将由标准化、通用化、系列化地模块所构成,给电路设计和安装调试、维修带来极大方便.表面安装技术(SMT)和表面安装元器件(SMD)将获得普遍应用.这项技术被誉为世界电子工艺技术地一项重要突破.所谓表面安装是将微型化地表面安装集成电路(SMIC)和表面安装元件,用粘贴工艺直接安装在印刷板上,再用波峰焊接机焊接,由此取代传统地打孔焊接工艺,使印刷板安装密度大为增加,可靠性得到明显提高.3.多重显示仪表为彻底解决数字仪表不便于观察连续变化量地技术难题,"数字/模拟条图"双显示仪表已成为国际流行款式,它兼有数字仪表准确度高、模拟式仪表便于观察被测量地变化过程及变化趋势地两大优点.模拟条图大致分成三类:①液晶(LCD)条图,呈断续地条状,这种显示器地分辨力高、微功耗,体积小,低压驱动,适于电池供电地小型化仪表.②等离子体(PDP)光柱显示器,其优点是自身发光,亮度高,显示清晰,观察距离远,分辨力较高,缺点是驱动电压高,耗电较大.③LED光柱,它是由多只发光二极管排列而成.这种显示器地亮度高,成本低,但象素尺寸较大,功耗高,驱动电路复杂.4.安全性仪器仪表在设计和使用中地安全性,对于生产厂家和广大用户都是至关重要地问题.一方面厂家必须为仪表设计安全保护电路,并使之符合国际标准(例如美国UL认证,欧洲GS认证,ISO9001国际标准质量认证);另一方面用户必须安全操作,时刻注意仪表上地各种安全警告指示.仪表地保护电路在于最大限度地减小或防止因误操作而造成地危害.以DMM为例,常见地误操作是用电流档或电阻档去测量电压.5.操作简单化第三章系统设计3.1 功能要求及设计目标简易数字电压表可以测量0~5V地8路输入电压值,并在四位LED数码管上轮流显示或单路选择显示,测量最小分辨率为0.019V,测量误差约为±0.02V.3.2 方案论证按照系统功能实现要求,决定控制系统采用AT89C52单片机,A/D转换采用ADC0809.系统除能确保实现要求地功能外,还可以方便进行8路其他A/D转换量地测量、远程测量结果传送等扩展功能.数字电压表系统设计方框图如图2.1.图2.13.3 系统硬件电路设计简易数字电压测量电路由A/D转换、数据处理及显示控制等组成,A/D转换有集成电路0809完成.0809具有8路模拟输入端口,地址线(23~25脚)可决定对哪一路模拟输入作A/D转换.22脚为地址锁存控制,当输入为高电平时,对地址信号进行锁存.6脚为测试控制,当输入一个2us宽高电平时,就开始A/D转换.7脚为A/D转换结束标志,当A/D转换结束时,7脚输出高电平.9脚为A/D转换数据输出允许控制,当OE脚为高电平,A/D转换数据从该端口输出.10脚为0809地时钟输入端,利用单片机30脚地六分频晶振频率再通过分频器二分频得到1MHz时钟.单片机地P1、P3.0~P3.3端口作为四位LED数码管显示控制.P3.5端口用作单路显示/循环显示转换按钮,P3.6端口用作单路显示选择频道.P0端口作A/D转换数据读入用,P2端口用作0809地A/D转换控制.图2.2 系统电路图图2.3 52芯片与A/D模块连接电路图图2.4 2分频电路图分频器是由两块74S74芯片组成地二分频电路,也可由14024芯片单独完成.在本设计中采用了前者.引脚3接89C52地30脚.由晶振产生地12MHz晶振频率,利用单片机30脚地六分频晶振频率再通过分频器二分频得到1MHz时钟.引脚5连接0809地10脚.10脚为0809地时钟输入端.图2.5 晶振电路图晶振输入输出电路分别连接单片机18、19引脚.18脚XTAL2是振荡器反相放大器地输出端.19脚XTAL1是振荡器反相放大器和内部时钟发生电路地输入端.图2.6 RST引脚连接图当系统上电时,RST脚持续2个机器周期高电平将使单片机复位.3.4 系统程序地设计3.4.1 初始化程序系统上电时,初始化程序将70H~77H内存单元清0,P2口置0.3.4.2 主程序在刚上电时,系统默认为循环显示8个通道地电压值状态.当进行一次测量后,将显示每一通道地A/D转换值,每个通道地数据显示时间为1s左右.主程序在调用显示程序和测试子程序之间循环,主程序流程图见图2.3.图2.3 主程序流程图3.4.3 显示子程序显示子程序采用动态扫描法实现四位数码管地数值显示.测量所得地A/D转换数据放在70H~77H内存单元中,测量数据在显示时需转换为十进制BCD码放在78H~7BH单元中,其中7BH存放通道标志数.寄存器R3用作8路循环控制,R0用作显示数据地址指针.3.4.4 模/数转换测量子程序数转换测量子程序用来控制对0809八路模拟输入电压地A/D转换,并将对应地数值移入70H~77H内存单元.其程序流程见图2.4.图2.4 A/D转换测量程序流程图3.5 性能分析单片机为8位处理器,当输入电压为5.00时,输出数据值为255(FFH),因此单片机最大地数值分辨率为0.0196V(5/255).这就决定了该电压表地最大分辨率(精度)只能达到0.0196V.测试时电压数值地变化一般以0.02地电压幅度变化,如要获得更高地精度要求,应采用12位、13位地A/D转换器.ADC0809地直流输入阻抗为1M欧,能满足一般地电压测试需要.另外,经测试ADC0809可直接在2MHz地频率下工作,这样可省去分频器.第四章主要硬件功能及介绍系统所采用地硬件为: A/D转换器ADC0809以及单片机AT89C52.以下就对两块主要芯片地功能进行简单地介绍.4.1 ADC08094.1.1 主要特性1)8路8位A/D转换器,即分辨率8位.2)具有转换起停控制端.3)转换时间为100μs 4)单个+5V电源供电5)模拟输入电压范围0~+5V,不需零点和满刻度校准.6)工作温度范围为-40~+85摄氏度7)低功耗,约15mW.4.1.2 内部结构ADC0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图3.1所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型D/A转换器、逐次逼近寄存器、三态输出锁存器等其他一些电路组成.因此,ADC0809可处理8路模拟量输入,且有三态输出能力,既可与各种微处理器相连,也可单独工作.输入输出与TTL兼容.图3.1 ADC0809内部结构框图图3.2 ADC0809引脚图4.1.3外部特性(引脚功能)ADC0809芯片有28条引脚,采用双列直插式封装,如图3.2所示.下面说明各引脚功能.IN0~IN7:8路模拟量输入端.2-1~2-8:8位数字量输出端. ADDA、ADDB、ADDC:3位地址输入线,用与选通8路模拟输入中地一路.如表3.1所示.ALE:地址锁存允许信号,输入,高电平有效.START:A/D转换启动信号,输入,高电平有效.EOC:A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平).OE:数据输出允许信号,输入,高电平有效.当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量.CLK:时钟脉冲输入端.要求时钟频率不高于640KHZ.REF(+)、REF(-):基准电压.Vcc:电源,单一+5V.GND:地.ADC0809地工作过程是:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中.此地址经译码选通8路模拟输入之一到比较器.START上升沿将逐次逼近寄存器复位.下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行.直到A/D转换完成,EOC 变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请.当OE输入高电平时,输出三态门打开,转换结果地数字量输出到数据总线上.4.2 AT89C52AT89C52是ATMEL公司生产地低电压,高性能CMOS 8位单片机.片内含8kbtyes地可反复擦写地Flash只读程序储存器和256bytes地随即存取数据储存器(RAM),器件采用ATMEL公司高密度、非易失性储存技术生产,与标准MCS-51指令系统及8052产品引脚兼容.片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89C52单片机适合与许多较为复杂控制应用场合.4.2.1 主要性能与MCS-51单片机产品兼容8K字节可重擦写Flash闪速存储器1000次擦写周期全静态操作:0Hz~24Hz三级加密程序存储器256*8字节内部RAM32个可编程I/O口线三个16位定时器/计数器八个中断源可编程串行UART通道低功耗空闲和掉电模式4.2.2 引脚结构。

基于单片机的数字电压表 毕业设计论文

基于单片机的数字电压表 毕业设计论文

目录摘要 (I)Abstract (II)第一章绪论 (1)1.1 课题研究的背景及意义 (1)1.2 国内外研究现状和发展 (1)1.3 本文的研究内容 (2)第二章系统分析与设计方案 (3)2.1 系统分析 (3)2.1.1 功能及指标 (3)2.2 系统总体方案设计 (3)2.2.1 方案设计的基本思路 (3)2.2.2 数字电压表的两种设计方案 (3)2.2.3 A/D转换模块的选择 (4)2.2.4 接口模块的选择 (4)2.2.5 微控制器的选择 (5)2.3 系统硬件分析 (5)2.3.1 AT89S52单片机简介 (6)2.3.2 LCD1602显示器简介 (6)2.3.3 ADC0804转换芯片简介 (7)第三章系统硬件电路设计 (8)3.1系统组成 (8)3.2电源接口电路 (8)3.3 AT89S52单片机最小系统电路 (8)3.3.2 复位电路 (9)3.3.3 晶振电路 (10)3.4 LCD1602显示电路 (10)3.6 A/D转换电路 (11)3.7 量程转换电路 (11)第四章系统软件设计 (12)4.1 系统主程序流程图 (12)4.2 LCD1602液晶流程图 (12)4.3 ADC0804流程图 (13)第五章性能测试与分析 (14)5.1 各模块独立测试 (14)5.2 系统联合调试 (14)5.3 系统运行评估 (15)第六章总结 (16)参考文献(References) (17)致谢 (18)附录1: 系统原理图及实物图 (19)附录2: 系统主程序 (20)基于单片机的数字电压表专业:学号:摘要:在电路设计中我们时常会用到电压表,过去大部分电压表还是模拟的,虽然精度较高但模拟电压表采用用指针式,里面是磁电或电磁式结构,所以响应较慢。

为适应许多高速信号领域目前已广泛使用数字电压表。

数字电压表的诞生打破了传统电子测量仪器的模式和格局,它显示清晰直观、读数准确,采用了先进的数显技术,大大地减少了因人为因素所造成的测量误差事件,数字电压表是把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式,并加以显示的仪表。

基于单片机的数字电压表pcf8591

基于单片机的数字电压表pcf8591

XXXXXXX学生实习(实训)总结报告学院: XXXXXXXXXXXX专业班级: 测控学生姓名: xxxxxxx 学号: 2014000000 设计地点(单位) I001设计题目:单片机综合实训--基于单片机的电压表设计完成日期:年月日指导教师评语:成绩(五级记分制):指导教师(签字):前言本次单片机综合训练,我们做了一个基于单片机的数字电压表。

在设计这个电压表之前,指导老师给我们讲解了设计要求和步骤。

按照要求我们设计的数字电压表,通过A/D转换芯片实时采集输入端电压的变化,显示于数码管上。

可通过按键选择输入通道。

在芯片的选择上,单片机选用的是AT89C52芯片,A/D采样芯片片为PCF8591A/D转换芯片。

这个数字电压表除了测量电压的功能,还可以设置报警,超过上下限自动报警。

本次单片机综合训练,用到了单片机开发板、proteus软件等工具,运用了IIC总线、数码管显示等技术。

经历了一个从设计到产品的过程,学到了很多,也收获了很多。

目录前言 (I)一、实训的目的和任务 (1)1.1实训目的 (1)1.2实训任务 (1)二、设计总方案 (2)三、系统硬件设计 (3)3.1单片机最小系统 (3)3.2 A/D转换部分 (5)3.3数码管 (7)3.4四位独立按键及声光报警 (8)四、系统软件设计 (9)4.1软件实现流程图 (9)4.2 IIC总线在实训中的应用 (10)4.3完整程序见附录3 (12)五、调试及性能分析 (13)5.1调试效果图 (13)5.2性能分析 (13)心得体会 (14)致谢 (15)参考文献 (16)附录1 任务书 (17)附录2 自画原理图 (18)附录3 源程序: (19)一、实训的目的和任务1.1实训目的培养学生的单片机系统的实际应用能力,掌握单片机系统设计、调试技能。

通过实训,要求学生掌握单片机最小系统、定时器及中断的应用,掌握按键、LED显示等接口技术,了解proteus软件如何仿真,如何使用,完成一个单片机应用系统的设计,写出设计报告。

基于51单片机的PCF8591芯片电压表

基于51单片机的PCF8591芯片电压表

PCF8591芯片电压表一、功能1、用PCF8591芯片采集电压。

2、使用IIC通信协议进行通信。

3、四位数码管显示采集电压。

4、电压表有五个档位200MV、2V、20V、200V、500V。

5、四个按键进行档位切换。

6、五个LED指示灯1~5指示相应档位。

7、电压过大,继电器自动断开,保护电路。

8、滑动变阻器可以对电压表精确度进行调节,使测量更精确。

9、采用STC89RC52单片机。

10、电源供电采用USB电源头(发货中会赠送一根)供电,插到手机直充头上就可以正常使用。

二、硬件按键功能及说明档位1/2:200MV档位和2V档位切换,LED1/2亮。

档位3:切换到20V档位,LED3亮。

档位4:切换到200V档位,LED4亮。

档位5:切换到500V档位,LED5亮。

复位:对整个电路进行复位,回到初始化状态2V档位。

三、注意事项1、程序下载程序利用串口下载,首先将下载器正确连接(说明一下,板子上下载口从左到右依次接下载器的+5V、地、TX、RX,下载器上标的有),打开STC下载器如图。

选择STC89C52RC,点击“打开程序文件”选择程序文件夹中(Output-> 电压表.HEX)的温度控制.hex文件。

点击下载,当提示上电时拔下电源再插上就可以了。

2、按键使用如上图所示,档位1/2、档位3、档位4、档位5,以及复位五个按键。

具体按键功能在上边已经介绍。

3、使用说明刚开始使用是,不要测量高电压,应该先用低电压试试电压表好坏。

测量较高的电压时,要用最高档测量一下大致电压是多少,再换用合适档位进行精确测量。

因为不同型号的电源,导致单片机的工作电压和PCF8591芯片的基准电压,都不是标准的5V,所以在测量时会有误差,这时候就需要通过对电位器进行微调来调节误差,使测量更精确。

4、注意事项需要特别注意的是测量电压千万不要高于测量档位的电压,不然会因为瞬间电流过大,直接烧坏芯片,使电压表产生损坏。

因为操作不当造成的后果,我们一概不负责,一定要特别注意。

基于51单片机的数字电压表课程设计.

基于51单片机的数字电压表课程设计.

信息与电气工程学院电子应用系统CDIO一级项目设计说明书(2011/2012学年第二学期)题目:___ _数字电压表__________专业班级:电子信息0902班学生姓名:张文盛学号:090070213指导教师:贾少锐、李晓东、马永强李丽宏、贾东立、刘会军设计周数:设计成绩:2012年6月28日1、CDIO设计目的本次CDIO设计题目是:利用所学的51单片机,C语言,数字电路等知识,设计一个符合要求的数字电压表。

主控芯片可以是AT89C51,而采集电压的模拟量转换成数字量的芯片可以是ADC0804,也可以是PCF8591。

而显示模块可以是数码管,也可以是液晶LCD1602,从而展示给我们所得的电压值。

2、CDIO设计正文2.1 数字电压表系统设计框图本次数字电压表系统设计框图如图1所示:图1 数字电压表设计框图数字电压表主要由模/数转换电路、单片机控制电路、显示电路等三部分组成。

其中PCF8591等器件组成的转换电路,将输入的模拟量信号进行取样、转换、然后将转换的数字信号送进单片机。

单片机控制电路主要实现对数据进行程序处理;显示电路主要用于将单片机的信号数据转换后显示测量结果。

模拟信号产生模块:输入电源电路(变压器、整流电路、滤波电路、稳压电路组成)和分压电路(9万欧姆和1万欧姆的电阻分压)。

模数转换模块组成部分:PCF8591芯片程序处理的单片机控制模块:AT89C51芯片电压结果显示部分:LCD1602液晶2.2 各模块介绍2.2.1 AT89C51芯片介绍AT89S52 具有以下标准功能:8k 字节Flash,256 字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个 6 向量 2 级中断结构,全双工串行口,片内晶振及时钟电路。

另外,AT89S52 可降至0Hz 静态逻辑操作,支持2 种软件可选择节电模式。

空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。

基于PCF8591设计的数字电压表

基于PCF8591设计的数字电压表

学习情境1-数字电压表的设计之基于PCF8591设计的数字电压表☆点名,复习1、ADC0832的引脚及其功能,以及与单片机的硬件连接?2、ADC0808的引脚及其功能,以及与单片机的硬件连接?引言:PCF8591是一个单片集成、单独供电、低功耗、8-bit CMOS数据获取器件。

PCF8591具有4个模拟输入、1个模拟输出和1个串行I²C总线接口。

PCF8591的3个地址引脚A0, A1和A2可用于硬件地址编程,允许在同一个I²C总线上接入8个PCF8591器件,而无需额外的硬件。

在PCF8591器件上输入输出的地址、控制和数据信号都是通过双线双向I²C总线以串行的方式进行传输。

☆新课讲授3.3 基于PCF8591设计的数字电压表3.3.1 PCF8591简介PCF8591的功能包括多路模拟输入、内置跟踪保持、8-bit模数转换和8-bit数模转换。

PCF8591的最大转化速率由I²C总线的最大速率决定。

1、主要技术指标和特性∙单独供电∙PCF8591的操作电压范围2.5V-6V∙低待机电流∙通过I2C总线串行输入/输出∙PCF8591通过3个硬件地址引脚寻址∙PCF8591的采样率由I2C总线速率决定∙4个模拟输入可编程为单端型或差分输入∙自动增量频道选择∙PCF8591的模拟电压范围从V ss到V DD∙PCF8591内置跟踪保持电路∙8-bit逐次逼近A/D转换器∙通过1路模拟输出实现DAC增益2、PCF8591引脚功能图3-3-1 PCF8591引脚图AIN0~AIN3:模拟信号输入端。

A0~A3:引脚地址端。

VDD、VSS:电源端。

(2.5~6V)SDA、SCL:I2C 总线的数据线、时钟线。

OSC:外部时钟输入端,内部时钟输出端。

EXT:内部、外部时钟选择线,使用内部时钟时 EXT 接地。

AGND:模拟信号地。

AOUT:D/A 转换输出端。

VREF:基准电源端。

基于单片机的数字电压表的设计——文献综述

基于单片机的数字电压表的设计——文献综述
[9]扬吉祥,詹宏英,梅芍春.电子测量技术基础[பைடு நூலகம்].南京:东南大学出版社,1997.
[10]谭浩强.C程序设计教程[M].北京:清华大学出版社,2007.
[11] 赵波,杨迎春.基于A/D转换器件ADC0809的数字电压表设计[J].内蒙古石油化工,2010,(23)62-63.
[12]项丽萍,张志刚.基于51单片机的数字电压表的设计与仿真[J].洛阳师范学院学报,2012,3(02):39-41.
3.发展趋势
数字电压表是采用数字化测量技术,把连续的模拟量转换成不连续、离散的数字形式并加以显示的仪表。传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求。采用单片机的数字电压表,具有精度高、抗干扰能力强、可扩展性强、集成方便,可与PC进行实时通信等优点。由数字电压表扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。在现代电子科技的高速发展过程中,微型化、集成化、高密度化以及设备的高精度化已经成为一种长期的趋势,这就要求我们力求使用更精确的设备,其中当然包括测量工具。作为电子测量工具,对电压表的要求也越来越高。
由于数字电压表的原理是对连续的电压信号进行采样,所以采样的速度和对数据处理速度直接影响电压表的精度,对于连续性变化的电压信号的观测与模拟电压表相比还需要进一步提高。单片机技术发展速度快种类繁多,而目前又没有一个明确的适用的标准和规范,使得单片机的选择上自由度很大,加上高度集成化和一体化的发展趋势虽然降低了电压表的功耗和体积,但是同样给维修带来了极大的困难。
(2)智能化、复合型仪表
由CMOS数字IC、模拟IC及微处理器集成在一个超大规模集成电路内,只须在外围配置少量元器件,即可构成完整的智能仪表,可以完成存储、计算、比较、控制等多项功能。实际上数字电压表并不能完全取代指针式电压表,在反映电压的连续变化和变化趋势方面不如指针表直观。为克服这种缺憾,20世纪90年代初“一种数字/光柱”的双重显示仪表开始出现,并成功地应用于生产实践。

基于单片机的数字电压表的设计 毕业论文

基于单片机的数字电压表的设计 毕业论文

摘要单片机是一种集成电路芯片,随着计算机在社会领域的渗透,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。

在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。

由于单片机具有简单实用、高可靠性、良好的性能价格比以及体积小等优点,已经在各个技术领域得到了迅猛发展。

数字电压表(简称DVM),它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。

传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC进行实时通信。

目前,由各种单片A/D 转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力。

与此同时,由DVM扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。

本设计重点介绍单片A/D 转换器以及由它们构成的基于单片机的数字电压表的工作原理。

关键词:单片机,数字电压表, A/D 转换器,电压测量AbstractSCM is a kind of integrated circuit chips, along with the computer in the social sector penetration and MCU application is continuously to the deepening, and pushing the traditional control test on the new beneficial update. In real time detection and automatic control of the microcomputer application system, the microcontroller is often as a core component to use, only single chip microcomputer aspects knowledge is not enough, should according to the specific hardware structure, and the view of the specific application of the characteristics of the object software combination to be perfect. Because single chip has a simple practical, high reliability, good performance to price and the advantages of small size, had been in each technology has developed rapidly development.Digital voltmeter (hereinafter referred to as DVM), it is using digital measurement technique, the continuous analogue (dc input voltage) converted into digital form of discontinuous, discrete and to show appearance. The traditional pointer type voltmeter and low accuracy of single function, and can't meet the needs of the digital age, the digital voltmeter by single chip microcomputer, the high precision and strong anti-interference, extensibility, integration is convenient, still can and PC for real-time communication.At present, by all sorts of single piece of A/D converter in the composition of the digital voltmeter, has been widely used in the electronics and electrical measurement, industrial automation instrument, automatic test system, intelligent measurement field, shows A strong vitality. At the same time, the expansion of DVM into general and special digital instruments, the power and the power measurement technology to a new level.This design emphasis of single A/D converter and by they constitute of the digital voltmeter based on single chip microcomputer principle of work. Key words: SCM Digital voltmeter A/D converter V oltage measurement目录摘要 (i)Abstract (ii)1 绪论 (1)1.1 研究背景及意义 (1)1.2 单片机简介 (1)1.3 单片机的应用领域及发展趋势 (3)1.4 研究内容 (3)2 数字电压表 (4)2.1 数字电压表的特点 (4)2.2 数字仪表的发展趋势 (5)3 系统总体设计 (7)3.1 总体方案设计 (7)3.2 设计原理分析 (7)3.2.1 单片机AT89S51 (7)3.2.2 AT89S51的特点 (8)3.2.3 ADC0809工作原理 (8)3.3 硬件电路设计 (8)3.3.1 复位电路 (8)3.3.2 晶振电路 (9)3.3.3 测量、转换电路设计 (10)3.3.4 显示电路设计 (13)3.3.5 电源电路 (17)4 系统程序的设计 (18)4.1 主程序设计 (18)4.2 初始化程序 (18)4.3 显示子程序 (18)4.4 A/D转换测量子程序 (19)4.5 源程序 (20)结论 (21)参考文献 (22)致谢 (23)附录 (24)1 绪论1.1 研究背景及意义数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。

基于单片机的数字电压表设计-完整版

基于单片机的数字电压表设计-完整版

题目: 基于单片机的数字电压表设计数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。

传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC进行实时通信。

目前,由各种单片A/D 转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力。

与此同时,由DVM扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。

本章重点介绍单片A/D 转换器以及由它们构成的基于单片机的数字电压表的工作原理。

关键词:数字电压表 A/D 转换器 PC 电压测量AbstractDigital voltage meter (Digital V oltmeter) referred to as DVM, it is the use of digital measuring technology, the continuous analog (DC input voltage) into a non-continuous, discrete digital form and to display the instrument.Analog voltage meter features a traditional single, low accuracy, can not meet the digital age, using the single chip digital voltage meter, from the high precision, anti-interference ability, scalability, Ji Cheng convenience, and PC can communicate in real time.At present, by a variety of single A / D converter consisting of digital voltage meter, has been widely used in electronic and electrical measurement, industrial automation, instrumentation, automated test systems, intelligent measurement, showing strong vitality.At the same time, the DVM extension to the various general and specific digital instruments, but also the power and non-power measurement up to a new level.This chapter focuses on single-chip A / D converter, and they form by the microcontroller-based digital voltmeter works.Keywords: digital voltmeter A / D converter voltage measurement PC目录1 设计方案 (6)1.1 A/D转换部分 (6)1.2 电源部分 (7)2 系统硬件电路设计 (8)2.1 单片机芯片 (8)2.2 89C51与外围电路的接口 (10)3 详细设计 (14)3.1复位电路 (14)3.2电源电路 (16)3.3 程序框图 (17)3.4 源程序 (19)4 总结 (28)参考文献 (29)1 设计方案在电量的测量中,电压、电流和频率是最基本的三个被测量,其中电压量的测量最为经常。

基于单片机的数字电压表.

基于单片机的数字电压表.

1 前言 (1)2 总体方案设计 (2)2.1 方案论证 (2)2.2 方案比较及选择 (3)3 硬件电路设计 (4)3.1 AD转换电路 (4)3.2 复位电路 (4)3.3 时钟电路 (5)3.4 显示电路 (6)3.5 特殊器件介绍 (6)3.5.1 主控芯片AT89S51 (6)3.5.2 ADC0808 (7)3.5.3 LED (9)4 软件部分设计 (11)4.1 A/D转换子程序 (11)4.2 显示子程序 (12)5 电路仿真 (13)5.1 软件调试 (13)5.2 显示结果及误差分析 (13)6 系统功能 (17)小结 (18)参考文献 (19)附录1 基于单片机的数字电压表原理图 (20)附录2 基于单片机的数字电压表程序清单 (21)1 前言在电量的测量中,电压、电流和频率是最基本的三个被测量,其中电压量的测量最为经常。

而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。

数字电压表简称DVM,它是采用数字化测量技术,把连续的模拟量转换成不连续、离散的数字形式并加以显示的仪表。

由于数字式仪器具有读数准确方便、精度高、误差小、测量速度快等特而得到广泛应用。

传统的指针式刻度电压表功能单一,进度低,容易引起视差和视觉疲劳,因而不能满足数字化时代的需要。

采用单片机的数字电压表,将连续的模拟量如直流电压转换成不连续的离散的数字形式并加以显示,从而精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC实时通信。

数字电压表是诸多数字化仪表的核心与基础。

以数字电压表为核心,可以扩展成各种通用数字仪表、专用数字仪表及各种非电量的数字化仪表。

目前,由各种单片机和A/D转换器构成的数字电压表作全面深入的了解是很有必要的。

最近的几十年来,随着半导体技术、集成电路(IC)和微处理器技术的发展,数字电路和数字化测量技术也有了巨大的进步,从而促使了数字电压表的快速发展,并不断出现新的类型。

基于51单片机用PCF8591进行AD,DA转换用1602LCD显示的电流采样

基于51单片机用PCF8591进行AD,DA转换用1602LCD显示的电流采样

基于51单片机用PCF8591进行AD,DA转换用1602LCD显示的电流采样福州大学至诚学院本科生课程设计题目: 可编程序控制器实训姓名: 学号:系别:专业:年级: 指导教师:目录1、PCF8591概述 .....................................................3 2、芯片介绍.........................................................3 3、PCF8591的A/D 转换...............................................4 4、A/D转换程序设计流程 .............................................5 5、1602LCD主要技术参数 .............................................7 6、Proteus仿真原理图 . (10)7、程序代码........................................................108、结语............................................................17 9、参考文献.. (17)21、PCF8591 概述PCF8591 是一种具有 I2C 总线接口的 8 位 A/D D/A 转换芯片,在与 CPU的信息传输过程中仅靠时钟线 SCL 和数据线 SDA 就可以实现。

I2C 总线是Philips (飞利浦)公司推出的串行总线,它与传统的通信方式相比具有读写方便,结构简单,可维护性好,易实现系统扩展,易实现模块化标准化设计,可靠性高等优点。

2、芯片介绍2.1内部结构及引脚功能描述PCF8591 为单一电源供电(2.5 6 V)典型值为 5 V,CMOS 工艺 PCF8591 有 4 路 8 位 A/D 输入,属逐次比较型,内含采样保持电路; 1 路 8 位 D/A 输出,内含有 DAC的数据寄存器 A/D D/A 的最大转换速率约为 11 kHz,但是转换的基准电源需由外部提供 PCF8591 的引脚功能如图1所示图1 PCF8591引脚功能2.2片内可编程功能设置在 PCF8591 内部的可编程功能控制字有两个,一个为地址选择字,另一个为转换控制字 PCF8591 采用典型的I2C总线接口的器件寻址方法,即总线地址由器件地址引脚地址和方向位组成 Philips (飞利浦)公司规定 A/D器件高四位地址为1001,低三位地址为引脚地址A0A1A2,由硬件电路决定,地址选择字格式具体描述如表2 所示因此 I2C 系统中最多可接 23=8 个具有总线接口的 A/D 器件地址的最后一位为方向位 R/W,当主控器对 A/D 器件进行读操作时为 1,进行写操作时为 0 总线。

数字直流电压表的设计(附程序及电路图)

数字直流电压表的设计(附程序及电路图)

数字直流电压表的设计实验报告要求:设计一个能测量直流电压并显示的数字电压表。

直流电压输入范围:0V~5V,最小分辨率0.5V,准确率>80%,偏差<30%。

数码显示至少3位。

对于ad采样我们采取的是PCF8591,PCF8591是一个单片集成、单独供电、低功耗、8-bit CMOS数据获取器件。

PCF8591具有4个模拟输入、1个模拟输出和1个串行I2C总线接口。

PCF8591的3个地址引脚A0, A1和A2可用于硬件地址编程,允许在同个I2C总线上接入8个PCF8591器件,而无需额外的硬件。

在PCF8591器件上输入输出的地址、控制和数据信号都是通过双线双向I2C总线以串行的方式进行传输。

PCF8591的功能包括多路模拟输入、内置跟踪保持、8-bit模数转换和8-bit数模转换。

PCF8591的最大转化速率由I2C总线的最大速率决定。

具有以下特性:【1】单独供电【2】PCF8591的操作电压范围2.5V-6V【3】低待机电流【4】通过I2C总线串行输入/输出【5】PCF8591通过3个硬件地址引脚寻址【6】PCF8591的采样率由I2C总线速率决定【7】4个模拟输入可编程为单端型或差分输入【8】自动增量频道选择【9】PCF8591的模拟电压范围从VSS到VDD【10】PCF8591内置跟踪保持电路【11】8-bit逐次逼近A/D转换器【12】通过1路模拟输出实现DAC增益该电路的电路图如下图所示,由于proteus比较理想,单片机最小系统没有画出,实际中缺少,单片机是不能运行的。

PCF8591是八位的ad采样,最小分辨率可以达到0.02V。

配套实验程序:Ad_da.c/*-----------------------------------------------名称:IIC协议PCF8591ADDA转换内容:此程序通过IIC协议对DAAD芯片操作,读取电位器的电压通过液晶显示,并输出模拟量,用LED 亮度渐变指示------------------------------------------------*/#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include <intrins.h> //包含NOP空指令函数_nop_();#include<LCD1602.h>#define AddWr 0x90 //写数据地址#define AddRd 0x91 //读数据地址sbit Sda=P1^2; //定义总线连接端口sbit Scl=P1^1;bit ADFlag; //定义AD采样标志位//unsigned char code Datatab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//7段数共阴码管段码表//data unsigned char Display[8];//定义临时存放数码管数值/*------------------------------------------------延时程序------------------------------------------------*/void mDelay(unsigned char j){unsigned int i;for(;j>0;j--){for(i=0;i<125;i++){;}}}/*------------------------------------------------初始化定时器1------------------------------------------------*/void Init_Timer1(void){TMOD |= 0x10;TH1=0xff;/* Init value */TL1=0x00;//PT1=1; /* 优先级*/EA=1; /* interupt enable */ET1=1; /* enable timer1 interrupt */TR1=1;}/*------------------------------------------------启动IIC总线------------------------------------------------*/void Start(void){Sda=1;_nop_();Scl=1;_nop_();_nop_();Scl=0;}/*------------------------------------------------停止IIC总线------------------------------------------------*/ void Stop(void){Sda=0;_nop_();Scl=1;_nop_();Sda=1;_nop_();Scl=0;}/*------------------------------------------------应答IIC总线------------------------------------------------*/ void Ack(void){Sda=0;_nop_();Scl=1;_nop_();Scl=0;_nop_();}/*------------------------------------------------非应答IIC总线------------------------------------------------*/ void NoAck(void){Sda=1;_nop_();Scl=1;_nop_();_nop_();}/*------------------------------------------------发送一个字节------------------------------------------------*/ void Send(unsigned char Data){unsigned char BitCounter=8;unsigned char temp;do{temp=Data;Scl=0;_nop_();if((temp&0x80)==0x80)Sda=1;elseSda=0;Scl=1;temp=Data<<1;Data=temp;BitCounter--;}while(BitCounter);Scl=0;}/*------------------------------------------------读入一个字节并返回------------------------------------------------*/unsigned char Read(void){unsigned char temp=0;unsigned char temp1=0;unsigned char BitCounter=8;Sda=1;doScl=0;_nop_();Scl=1;_nop_();if(Sda)temp=temp|0x01;elsetemp=temp&0xfe;if(BitCounter-1){temp1=temp<<1;temp=temp1;}BitCounter--;}while(BitCounter);return(temp);}/*------------------------------------------------写入DA数模转换值------------------------------------------------*/void DAC(unsigned char Data){Start();Send(AddWr); //写入芯片地址Ack();Send(0x40); //写入控制位,使能DAC输出Ack();Send(Data); //写数据Ack();Stop();}/*------------------------------------------------读取AD模数转换的值,有返回值------------------------------------------------*/unsigned int ReadADC(unsigned char Chl){unsigned int Data;Start(); //写入芯片地址Send(AddWr);Ack();Send(0x40|Chl);//写入选择的通道,本程序只用单端输入,差分部分需要自行添加//Chl的值分别为0、1、2、3,分别代表1-4通道Ack();Start();Send(AddRd); //读入地址Ack();Data=Read(); //读数据Data=Data*196;//还原电压值近似Data=Data/100;Scl=0;NoAck();Stop();return Data; //返回值}/*------------------------------------------------主程序------------------------------------------------*/void main(){unsigned char num; //DA数模输出变量unsigned char ADtemp; //定义中间变量InitLcd();mDelay(20);Init_Timer1();while(1){DAC(num); //DA输出,可以用LED模拟电压变化num++; //累加,到256后溢出变为0,往复循环。

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

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

本文介绍的是数字电压表的发展背景和利用单片机,A/D 转换芯片结合的方法设计一个直流数字电压表。

它的具体功能是:最高量程为 200V,分三个档位量程,即2V,20V,200V,可以通过调档开关来实现各个档位,当测得电压的数值小于1V时,系统会自动的将电压数值转换为以mV为电压单位的电压值,并且通过按键的方法能够测得后五秒的平均电压值。

单片机是一种集成电路芯片,采用超大规模技术把具有数据处理能力(如算术运算,逻辑运算,数据传送,中断处理)的微处理器(CPU)。

随着单片机技术的飞速发展,各种单片机蜂拥而至,单片机技术已成为一个国家现代化科技水平的重要标志。

单片机可单独地完成现代工业控制所要求的智能化控制功能,这是单片机最大的特征。

单片机控制系统能够取代以前利用复杂电子线路或数字电路构成的控制系统,可以软件控制来实现,并能够实现智能化,现在单片机控制范畴无所不在,例如通信产品,家用电器,智能仪器仪表,过程控制和专用控制装置等等,单片机的应用领域越来越广泛。

本毕业设计的课题是"简易数字电压表的设计"。

主要考核我们对单片机技术,编程能力等方面的情况。

观察独立分析,设计单片机的能力,以及实际编程技能。

本课题主要解决A/D转换,数据处理及显示控制等三个模块。

控制系统采用AT89C52单片机,A/D转换采用TLC2543。

关键字介绍:单片机,AT89C52,A/D 转换,TLC2543,数据处理This 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, 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 voltage.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 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 system 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, intelligent 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 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 conversion using ADC0809.Keywords: A single-chip microcomputer, AT89C52, A/D conversion,ADC0809, data processing目录摘要 (1)Abstract (2)目录 (3)第一章数字电压表简介 (4)1.1设计背景 (4)1.2设计意义 (5)第二章数字电压设计两种方案简介 (6)2.1 由数字电路及芯片构建 (6)2.2 由单片机系统及 A/D 转换芯片构建 (6)第三章单片机简介及本设计单片机的选择 (7)3.1 常用单片机的特点比较及本设计单片机的选择 (7)3.2 本设计使用的单片机的简介 (7)第四章各种显示器件的介绍和选择 (8)4.1 常用显示器件简介 (8)4.2 1602液晶的参数资料 (8)第五章模数(A/D)转换芯片的选择 (11)5.1 常用的A/D芯片简介 (11)5.2 模数(A/D)芯片 TLC2543 的资料 (11)引脚说明: (12)第六章总体设计 (14)6.1 技术要求 (14)6.2 设计方案 (14)第七章硬件电路系统模块的设计 (15)7.1 单片机系统 (15)7.2 输入电路 (15)7.3 A/D 转换芯片与单片机的连接 (16)7.4 1602 液晶与单片机连接 (16)7.5 键盘与单片机的连接如下 (17)第八章系统软件的设计 (18)8.1 汇编语言和 C 语言的特点及选择 (18)8.2 主程序设计 (18)第九章系统的调试 (26)9.1 硬件调试 (26)9.2 软件调试 (26)第十章总结与展望 (27)参考文献 (28)第一章数字电压表简介数字电压表(Digital Voltmeter)简称DVM,作为智能仪表的一种,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转化成不连续,离散的数字形式并加以显示的仪表,传统的指针式电压表功能单一,精度低,不能满足数字化时代的需求采用单片机的数字电压表,精度高,抗干扰能力强,可扩展性强,集成方便。

pcf8591作为数字电压表

pcf8591作为数字电压表
return databyte;
}
void main()
{
unsigned int ad;
initi2c();
while(1)
{ adc=read_adc();//读AD结果
ad=adc*2;//由于是八位,且乘以2表示512数字表示5V电压,相当于1V用数字100表示
ledbuf[0]=ledmap[ad%10];//因此可以认为小数后面第二位是AD的个位数
//8位AD模块pcf8591作为数字电压表,且在数码管显示
#include <reg52.h>
#include <intrins.h>
sbit scl=P3^7;//pcf8591的SCL引脚
sbit sda=P3^6;//pcf8591的SDA引脚
unsigned char code ledmap[]=
delayus();
scl=1;
delayus();
}
scl=0;//写完要把SCL=0,
delayus();
sda=1;//写完要把SDA等于yi
delayus();
}
unsigned char i2cread(void)
{
unsigned char byte,i;
scl=0;
delayus();
i2cstart();
i2csend(0x90);//器件写地址为0x90
ack();
i2csend(0x40);//通道0 ad转换
ack();
i2cstart();
i2csend(0x91);//器件读地址0x91
ack();
databyte=i2cread();//读AD转换结果

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

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

本科课程设计论文题目:基于单片机的数字电压表设计姓名:学号:院(系、部):专业:自动化班级:指导教师:完成时间: 2014 年 11 月物理与电子工程学院课程设计任务书专业:自动化班级:学生姓名学号课程名称电子课程设计设计题目基于单片机的数字电压表设计设计目的、主要内容(参数、方法)及要求一、项目的目的:基于AT89C51单片机的数字电压表设计,强化动手能力,为毕业设计做准备。

二、项目任务的主要内容和要求:传统的指针式刻度电压表功能单一,进度低,容易引起视差和视觉疲劳,因而不能满足数字化时代的需要。

采用单片机的数字电压表,将连续的模拟量如直流电压转换成不连续的离散的数字形式并加以显示,从而精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC实时通信。

以AT89C51为对象,对单片机知识进行梳理,设计出快捷精确的数字电压表装置。

三、项目设计(研究)思路:网上查找资料,熟悉数字电压表基本原理和研究方法。

通过仿真软件PROTUES实现要求的硬件电路图,实现测量电路电压的功能。

四、具体成果形式和要求通过PROTUES仿真电路图展示项目主要功能。

工作量2周时间,每天3学时,共计42学时进度安排第1天:召开课程设计会议,下达设计任务。

针对课程设计题目进行设计思路、设计过程,设计要求说明。

第2-3天:根据自己选题情况,查阅相关文献资料。

第4-5天:确定总体方案。

第6-10天:仿真/制作。

第11-14:编写课程设计报告。

主要参考资料[1] 蒋廷彪,刘电霆,高富强,方华.单片机原理及应用.出版社:重庆大学出版社.出版时间:2005年1月第2次印刷[2] 8051实验指导书电子电气综合实训系统.出版社:北京精仪达盛科技有限公司[3] 徐爱钧.智能化测量控制仪表原理与设计(第二版)[M].北京:北京航空航天大学出版社,2004[4] 吴金戌,沈庆阳,郭庭吉.8051单片机实践与应用[M].北京:清华大学出版社,2002[5] 张国勋.缩短ICL7135A/D采样程序时间的一种方法[J].电子技术应用.1993.第一期[6] 高峰.单片微型计算机与接口技术[M].北京科学出版社,2003.指导教师签字教研室主任签字数字电压表的基本工作原理是利用A/D转换电路将待测的模拟信号转换成数字信号,通过相应换算后将测试结果以数字形式显示出来的一种电压表。

基于51单片机的PCF8591芯片电压表

基于51单片机的PCF8591芯片电压表

附录B:软件程序(1)主函数程序struct_parameter_state parameter; //结构体变量void main(void){uint ad_data,temp;uchar i;led_all_off();relay_all_off();key_init();time_init();ad_data = 0;parameter.mode = 1; //默认2V档位,然后进行相应配置RELAY1 = 1;LED2 = 0;while(1){iic_init();if(parameter.ad_flag) //AD采集标志允许采集{parameter.ad_flag = 0;temp = 0;for(i = 0;i < 5;i ++) //采集5次,取平均值{if(read_adc(0) > 245) //快要超出测量范围,断开{led_all_off();relay_all_off();parameter.limit = 1;}else{temp += read_adc(0);}}ad_data = temp / 5;}key_state(); //按键处理/* PCF8591采集电压范围是0~5V,当采集到5V时,读取到的ad_data是最大值255(8 bit),然后经过电压衰减和一些换算,求出要显示的数值*/switch(parameter.mode){case 0: //200MV档位{parameter.ad_dis = ad_data * 19.6; //data_buf = (ad_data / 255) * 5000if(parameter.ad_dis > 200) //超出测量范围,没超出最大测量电压,显示横杠parameter.limit = 1;elseparameter.limit = 0;}break;case 1: //2V档位{parameter.ad_dis = ad_data * 19.6; //data_buf = (ad_data / 255) * 5000if(parameter.ad_dis > 2000) //超出测量范围,没超出最大测量电压,显示横杠parameter.limit = 1;elseparameter.limit = 0;}break;case 2: //20V档位{parameter.ad_dis = ad_data * 11.91; //data_buf = (ad_data / 168) * 2000if(parameter.ad_dis > 1980) //快要超出最大测量电压,继电器跳开,保护电路,显示横杠parameter.limit = 1;elseparameter.limit = 0;}break;case 3: //200V档位{parameter.ad_dis = ad_data * 7.84; //data_buf = (ad_data / 255) * 2000if(parameter.ad_dis > 1998) //快要超出最大测量电压,继电器跳开,保护电路,显示横杠parameter.limit = 1;elseparameter.limit = 0;break;case 4: //500V档位{parameter.ad_dis = ad_data * 19.61; //data_buf = (ad_data / 255) * 5000if(parameter.ad_dis > 4998) //快要超出最大测量电压,继电器跳开,保护电路,显示横杠parameter.limit = 1;elseparameter.limit = 0;}break;}}}(2)结构体定义#ifndef __PARAMETER_STATE_H__#define __PARAMETER_STATE_H__#define uchar unsigned char#define uint unsigned inttypedef struct{uchar ad_flag; //A/D数据采集标志uchar limit; //电压值超出范围标志uchar mode; //电压档位uint ad_dis; //电压显示的数据}struct_parameter_state;extern struct_parameter_state parameter;#endif(3)PCF8591程序void iic_init(void) //IIC初始化{SDA = 1;_nop_();_nop_();_nop_();_nop_();}void start(void) //开始信号{SDA = 1; //发送起始条件的数据信号_nop_();SCL = 1;_nop_();_nop_();SDA = 0; //发送起始信号_nop_();SCL = 0; //钳住I2C总线,准备发送或接收数据_nop_();}void stop(void) //停止信号{SDA = 0; //发送结束条件的数据信号_nop_();SCL = 1; //发送结束条件的时钟信号_nop_();_nop_();_nop_();_nop_();_nop_();SDA = 1; //发送I2C总线结束信号_nop_();}void ack(void) //应答{SDA = 0;_nop_();_nop_();SCL = 1;_nop_();_nop_();_nop_();_nop_();_nop_();SCL = 0;_nop_();_nop_();}void no_ack(void) //不应答{SCL = 0;SDA = 1;_nop_();SCL = 1;_nop_();SCL = 0;_nop_();}void send_byte(uchar da) //发送一个字节{uchar i;for(i = 8;i >= 1;i --) //要传送的数据长度为8位{SCL = 0;_nop_();_nop_();_nop_();_nop_();_nop_();if(da & 0x80){SDA = 1;_nop_();_nop_();}else{SDA = 0;_nop_();_nop_();}SCL = 1;_nop_();_nop_();da = da << 1;}SCL = 0;}uchar read_byte(void) //读取一个字节{uchar temp,count = 8;while(count){temp <<= 1;SDA = 1; //置数据线为输入方式SCL = 0; //置时钟线为低,准备接收数据位_nop_();_nop_();_nop_();_nop_();_nop_();SCL = 1; //置时钟线为高使数据线上数据有效_nop_();_nop_();_nop_();_nop_();_nop_();if(SDA) //读数据位,接收的数据位放入temp中{temp |= 0x01;}else{temp &= 0xfe;}count --;}return temp;}uchar read_adc(uchar channel) //读取ADC相应通道的值{uchar temp;start();send_byte(ADDWR);ack();send_byte(0x40 | channel);ack();start();send_byte(ADDRD);ack();temp = read_byte();no_ack();stop();return temp;}(4)按键程序void key_init(void) //按键初始化,管脚置高{KEY1 = 1;KEY2 = 1;KEY3 = 1;KEY4 = 1;}void key_state(void){if(KEY1 == 0) //按键1按下{delay_ms(7); //消抖parameter.limit = 0;if(parameter.mode == 1) //档位1变为档位0{parameter.mode = 0;led_all_off();relay_all_off();RELAY1 = 1;LED1 = 0;parameter.ad_flag = 1;delay_ms(8);}else //其它档位变为档位1{parameter.mode = 1;led_all_off();relay_all_off();RELAY1 = 1;LED2 = 0;parameter.ad_flag = 1;delay_ms(8);}}if(KEY2 == 0) //按键2按下{parameter.mode = 2;parameter.limit = 0;led_all_off();relay_all_off();RELAY2 = 1;LED3 = 0;parameter.ad_flag = 1;delay_ms(8);}if(KEY3 == 0) //按键3按下{parameter.mode = 3;parameter.limit = 0;led_all_off();relay_all_off();RELAY3 = 1;LED4 = 0;parameter.ad_flag = 1;delay_ms(8);}if(KEY4 == 0) //按键4按下{parameter.mode = 4;parameter.limit = 0;led_all_off();relay_all_off();RELAY4 = 1;LED5 = 0;parameter.ad_flag = 1;delay_ms(8);}}(5)数码管程序/* 共阴数码管0~9 ------------------------------- */uchar code tube_data[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void display(void) //共阳数码管显示{uint ad_dis_num;uchar data1,data2,data3,data4;ad_dis_num = parameter.ad_dis;/* 因为用的是共阴数码管的数组,所以加了取反*/data1 = (~tube_data[ad_dis_num / 1000]);data2 = (~tube_data[ad_dis_num % 1000 / 100]);data3 = (~tube_data[ad_dis_num % 100 / 10]);data4 = (~tube_data[ad_dis_num % 10]);if((parameter.mode == 0) || (parameter.mode == 1)){data1 = data1 & 0x7f; //第一位有小数点}if(parameter.mode == 2){data2 = data2 & 0x7f; //第二位有小数点}if((parameter.mode == 3) || (parameter.mode == 4)){data3 = data3 & 0x7f; //第三位有小数点}if(parameter.limit == 0) //没有超出电压范围,正常显示{P0 = data1; //第一位SEL1 = 1;delay_ms(DELAY);P0 = 0xff;SEL1 = 0;P0 = data2; //第二位SEL2 = 1;delay_ms(DELAY);P0 = 0xff;SEL2 = 0;P0 = data3; //第三位SEL3 = 1;delay_ms(DELAY);P0 = 0xff;SEL3 = 0;P0 = data4; //第四位SEL4 = 1;delay_ms(DELAY);P0 = 0xff;SEL4 = 0;}else //超出电压范围,显示一排横杆{P0 = 0xbf;SEL1 = 1;SEL2 = 1;SEL3 = 1;SEL4 = 1;}}(6)延时void delay_ms(uchar x) //延时{uint i,j;for(j = x;j > 0;j --){for(i = 0;i < 110;i ++){;}}}(7)LED程序void led_all_off(void) //LED初始化,管脚置高,全灭{LED1 = 1;LED2 = 1;LED3 = 1;LED4 = 1;LED5 = 1;}(8)继电器程序void relay_all_off(void) //继电器初始化,管脚置低,全部断开{RELAY1 = 0;RELAY2 = 0;RELAY3 = 0;RELAY4 = 0;}(9)定时器程序void time_init(void) //按键初始化,管脚置高{TMOD = 0x11; //设置工作方式TH0 = (65536 - 46080) / 256;TL0 = (65536 - 46080) % 256;TH1 = (65536 - 1000) / 256;TL1 = (65536 - 1000) % 256;EA = 1; //开总中断ET0 = 1; //开定时器0中断ET1 = 1; //开定时器1中断TR0 = 1; //启动定时器0TR1 = 1; //启动定时器1}void T0_time(void) interrupt 1{static uint count1;TL0 = (65536 - 46080) % 256;TH0 = (65536 - 46080) / 256;count1 ++;if(count1 > 5) //20次产生一个中断,A/D采集标志置1 {parameter.ad_flag = 1;count1 = 0;}}void T1_time(void) interrupt 3{static uint count2;TL1 = (65536 - 1000) % 256;TH1 = (65536 - 1000) / 256;count2 ++;if(count2 > 2){display(); //2次产生一个中断,数码管显示count2 = 0;}}。

基于51单片机的PCF8591芯片电压表设计

基于51单片机的PCF8591芯片电压表设计
4
摘要
数字电压表简称 DVM,它是采用数字化测量技术设计的电压表。从 性能来看:数字电压表的发展从一九五二年美国 NLS 公司由四位电 子管数字电压表精度千分之一到现在已经出现 8 位数字电压表。参数 可测量直流电压、交流电压、电流、阻抗等。测量自动化程度不断提 高,可以和计算机配合显示、计算结果、然后打印出来。从发展过程 来看:数字电压表自 1952 年问世以来,已有 50 年多年的发展史,大 致经历了五代产品。第一代产品是 20 世纪 50 年代问世的电子管数字 电压表,第二代产品属于 20 世纪 60 年代出现的晶体管数字电压表, 第三带产品为 20 世纪 70 年代研制的中、小规模集成电路的数字电压 表。今年来,国内外相继推出有大规模集成电路(LSI)或超大规模 集成电路(VLSI)构成的数字电压表、智能数字电压表,分别属于 第四代、第五代产品。它们不仅开创了电子测量的先河,更以高准确 度、高可靠性、高分辨力、高性价比等优良特性而受到人民的青睐。
1.2 软件总体设计............................................................................. 10 第二章 硬件系统设计............................................................................. 11
2.1 硬件电路分析和设计报告......................................................... 11 2.1.1 单片机最小系统电路..................................................... 11 2.1.2 键盘电路......................................................................... 16 2.1.3 数码管显示电路............................................................. 16 2.1.4 外部电压采集部分电路.................................................17 2.1.5 PCF8591 芯片 AD 转换部分..........................................18

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

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

基于单片机的数字电压表设计在当今的电子世界中,电压表是一种必不可少的测量工具。

随着技术的进步,数字电压表因其精度高、易于读取、稳定性好等优点逐渐取代了传统的模拟电压表。

本文将探讨如何基于单片机设计数字电压表。

一、硬件设计1、1传感器模块传感器模块是数字电压表的重要组成部分,负责将输入的模拟电压转化为可被单片机处理的数字信号。

通常,我们使用ADC(模数转换器)来实现这一功能。

ADC的精度直接决定了电压表的测量精度。

1、2单片机模块单片机是数字电压表的“大脑”,负责控制整个系统的运行。

我们选择具有较高性能和可靠性的单片机,如Arduino、STM32等。

这些单片机都具有丰富的外设接口,便于实现复杂的控制逻辑。

1、3显示模块显示模块负责将单片机的处理结果呈现给用户。

常用的显示模块包括LED数码管、LCD液晶屏等。

选择适合的显示模块,可以大大提升电压表的易用性。

二、软件设计2、1数据采集与处理软件首先通过ADC从传感器模块读取模拟电压,然后对其进行处理,得到实际的电压值。

这一步的关键在于选择合适的ADC算法和设置合适的参考电压。

2、2数据输出与存储处理后的电压值需要被输出并存储起来。

通常,我们使用LCD液晶屏将电压值实时显示出来,同时也可以通过串口将数据传输到计算机或云端进行存储和分析。

三、精度与稳定性优化3、1硬件校准为了提高电压表的测量精度,我们可以在生产过程中对每一块电压表进行硬件校准。

通过调整ADC的参考电压或者在软件中进行校准算法的优化,可以有效提高电压表的测量精度。

3、2软件滤波在实际应用中,由于各种噪声和干扰的存在,电压表的读数可能会出现波动。

我们可以通过软件滤波算法,如平均滤波、卡尔曼滤波等,来减小这些干扰对测量结果的影响。

四、应用与扩展基于单片机的数字电压表不仅可以在实验室或工业现场使用,还可以扩展出更多的应用场景。

例如,通过加入无线通信模块,我们可以实现远程监控;通过加入更多的传感器,我们可以实现多通道的电压测量;通过与计算机或云端进行数据交互,我们可以实现大数据分析和预测。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

XXXXXXX学生实习(实训)总结报告学院: XXXXXXXXXXXX专业班级: 测控学生姓名: xxxxxxx 学号: 2014000000 设计地点(单位) I001设计题目:单片机综合实训--基于单片机的电压表设计完成日期:年月日指导教师评语:成绩(五级记分制):指导教师(签字):前言本次单片机综合训练,我们做了一个基于单片机的数字电压表。

在设计这个电压表之前,指导老师给我们讲解了设计要求和步骤。

按照要求我们设计的数字电压表,通过A/D转换芯片实时采集输入端电压的变化,显示于数码管上。

可通过按键选择输入通道。

在芯片的选择上,单片机选用的是AT89C52芯片,A/D采样芯片片为PCF8591A/D转换芯片。

这个数字电压表除了测量电压的功能,还可以设置报警,超过上下限自动报警。

本次单片机综合训练,用到了单片机开发板、proteus软件等工具,运用了IIC总线、数码管显示等技术。

经历了一个从设计到产品的过程,学到了很多,也收获了很多。

目录前言 (I)一、实训的目的和任务 (1)1.1实训目的 (1)1.2实训任务 (1)二、设计总方案 (2)三、系统硬件设计 (3)3.1单片机最小系统 (3)3.2 A/D转换部分 (5)3.3数码管 (7)3.4四位独立按键及声光报警 (8)四、系统软件设计 (9)4.1软件实现流程图 (9)4.2 IIC总线在实训中的应用 (10)4.3完整程序见附录3 (12)五、调试及性能分析 (13)5.1调试效果图 (13)5.2性能分析 (13)心得体会 (14)致谢 (15)参考文献 (16)附录1 任务书 (17)附录2 自画原理图 (18)附录3 源程序: (19)一、实训的目的和任务1.1实训目的培养学生的单片机系统的实际应用能力,掌握单片机系统设计、调试技能。

通过实训,要求学生掌握单片机最小系统、定时器及中断的应用,掌握按键、LED显示等接口技术,了解proteus软件如何仿真,如何使用,完成一个单片机应用系统的设计,写出设计报告。

1.2实训任务要求电压表完成以下功能:1.基本功能对输入的4路直流电压进行测量并显示出来;可以选择显示方式,轮流显示和指定通道显示;有报警功能,按键设定上下限报警。

2. 扩展功能实现历史数据的保存,可保存10组电压值3.参数设计1)测量精度5%2)测量范围0-5V4.其他要求及可参考资料,见附件1二、设计总方案系统整体结构如图所示:图2-1系统结构图根据系统功能要求,可将系统组成结构分成六大部分:单片机系统、PCF8591A/D转换芯片、LED数码管显示系统、LED和蜂鸣器报警系统、软件。

单片机采用STC89C52,系统的工作原理为:STC89C52单片机开关复位后,通过IIC总线给PCF8591发送相关指令,PCF8591收到指令开始工作,采集到数据后通过IIC总线发送给单片机,经过单片机处理后在数码管上显示相应电压值。

可以通过按键K1选择要采集的通道号,通过K4 进入电压阈值的设置,K2 设置上限K3 设置下限K1 确认。

当采集到电压超出上下限是,8个LED闪烁,蜂鸣器发出滴滴响声。

个模块的大致关系如图2-1。

三、系统硬件设计说明:本次综合实训虽然有电路的设计,但用的是现成实验板,故在介绍相关硬件系统时将按照成品的各个模块介绍及配套相应电路图,在附件2中将附上自己画的电路图。

3.1单片机最小系统3.3.1单片机最小系统图:图3-1单片机最小系统3.3.2单片机简介:STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash存储器。

STC89C52使用经典的MCS-51内核,但也做了很多改进使得芯片具有传统51单片机不具备的功能。

STC89C52具有8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构,全双工串行口。

图3-1加上电源及为单片机最小系统。

以下为STC89C52的管脚说明:1)P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P0口的管脚第一次写“1”时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。

在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。

2)P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为低八位地址接收。

3)P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH 编程和校验时接收高八位地址信号和控制信号。

4)P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL 门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

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

5)RST:复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

6)ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

7)/PSEN:外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

8)/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

9)XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

10)XTAL2:来自反向振荡器的输出。

振荡器特性:XTAL1和XTAL2分别为反向放大器的输入和输出。

该反向放大器可以配置为片内振荡器。

石晶振荡和陶瓷振荡均可采用。

如采用外部时钟源驱动器件,XTAL2应不接。

有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。

本次实验应用晶振为11.0592MHz。

3.2 A/D转换部分如图3-2所示,为A/D转换部分。

其中SW3和SW4为蓝白卧式电位器,调节电阻可使VO输入芯片的电压发生变化R11为LED的限流电阻,L3(红色)为电压大小体现的发光二极管。

图3-2 A/D转换部分PCF8591是一个单片集成、单独供电、低功耗、8-bit CMOS数据获取器件。

PCF8591具有4个模拟输入、1个模拟输出和1个串行I2C总线接口。

PCF8591的3个地址引脚A0,A1和A2可用于硬件地址编程,允许在同个I2C总线上接入8个PCF8591器件,而无需额外的硬件。

在PCF8591器件上输入输出的地址、控制和数据信号都是通过双线双向I2C总线以串行的方式进行传输。

PCF8591的功能包括多路模拟输入、内置跟踪保持、8-bit模数转换和8-bit 数模转换。

PCF8591的最大转化速率由I2C总线的最大速率决定。

如图3-3为PCF8591内部结构图:图3-3为PCF8591内部结构图如图3-4为PCF8591引脚图:图3-4为PCF8591引脚图AIN0~AIN3:模拟信号输入端。

A0~A3:引脚地址端。

VDD、VSS:电源端。

SDA、SCL:I2C总线的数据线、时钟线。

OSC:外部时钟输入端,内部时钟输出端。

EXT:内部、外部时钟选择线,使用内部时钟时EXT接地。

AGND:模拟信号地。

AOUT:D/A转换输出端。

VREF:基准电源端。

3.3数码管3.3.1数码管简介:数码管按段数可分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、3位、4位、5位、6位、7位等数码管;按发光二极管单元连接方式可分为共阳极数码管和共阴极数码管。

共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM接到地线GND 上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。

本实验用的是两个四位八段共阴数码管。

3.3.2数码管连接电路图3-5图3-5数码管显示3.4四位独立按键及声光报警3.4.1四位独立按键四位独立按键如电路图3-6,按键无动作,对应端口为高电平。

当按键按下,单片机检测到低电平,按程序实现相应动作。

图3-6独立按键3.4.2 led灯和蜂鸣器图3-7 8个共阳极led灯图3-8蜂鸣器当给测量电压超过上下限时8个led开始闪烁,同时,蜂鸣器发出滴滴的声音。

当看到这一现象是说明测量电压超限,应注意调节电压。

四、系统软件设计4.1软件实现流程图4.2 IIC总线在实训中的应用4.2.1单片机与PCF8591芯片之间IIC总线应用程序void init() //初始化总线 SCL 和SDA 都拉成高电平{SCL=1;//时钟线_nop();SDA=1;//数据线_nop();_nop();_nop();_nop();_nop();}void start()//开始信号{SDA=1;SCL=1;_nop();_nop();_nop();_nop();_nop();SDA=0;_nop();_nop();_nop();_nop();_nop();SCL=0;}void stop()//终止信号{SDA=0;SCL=1;_nop();_nop();_nop();_nop();_nop();SDA=1;_nop();_nop();_nop();_nop();_nop();SDA=0;}void ack()//发送应答{uchar i;SDA=0;SCL=1;_nop();_nop();_nop();_nop();while((SDA==1)&&(i<255))i++;SCL=0;_nop();_nop();_nop();_nop();}void noack()//发送非应答{SDA=1;SCL=1;_nop();_nop();_nop();_nop();SCL=0;SDA=0;}void sendbaty(uchar da)//发送字节{uchar i,temp;temp=da;for(i=0;i<8;i++){temp=temp<<1;SCL=0;_nop();_nop();_nop();_nop();SDA=CY;_nop();_nop();_nop();_nop();SCL=1;_nop();_nop();_nop();_nop();}SCL=0;_nop();_nop();_nop();_nop();SDA=1;_nop();_nop();_nop();_nop();}unsigned char readbaty()//读字节{uchar i,temp;SCL=0;_nop();_nop();_nop();_nop();SDA=1;for(i=0;i<8;i++){SCL=1;_nop();_nop();_nop();_nop();temp=(temp<<1)|SDA;SCL=0;_nop();_nop();_nop();_nop();}_nop();_nop();_nop();_nop();return temp;}void DAC(uchar Data){start();sendbaty(0x90); //写入芯片地址ack();sendbaty(0x40); //写入控制位ack();sendbaty(Data); //写数据ack();stop();}unsigned char ReadADC(uchar Chl){uchar Data;start(); //写入芯片地址sendbaty(0x90);ack();sendbaty(0x40|Chl);//写入选择的通道ch1(1.2.3.4通道)ack();start();sendbaty(0x91); //读入地址ack();Data=readbaty(); //读数据SCL=0;noack();stop();return Data; //返回值}4.3完整程序见附录3五、调试及性能分析5.1调试效果图从左到右依次是,通道号、上限、下限、电压值。

相关文档
最新文档