基于STC12C5A60S2单片机数字电压表的设计
智能仪器仪表基于单片机的电压表的设计
智能仪器原理与应用题目基于单片机的电压表设计班级姓名指导教师年月日目录第1章设计背景 (1)第2章系统总体方案设计 (2)第3章系统硬件电路设计 (3)3.1 系统控制器的设计 (3)3.2 电压数据采集模块 (4)3.3 LCD1602显示电路 (5)3.4 按键设置模块 (6)3.5 报警电路模块 (7)3.6 上位机通信模块 (7)3.7 温度采集模块 (8)第4章软件电路设计 (9)4.1 主程序流程图 (9)4.2 量程自动切换子程序流程图 (9)4.3 A/D转换子程序流程图 (10)4.4 温度测量子程序流程图 (11)心得体会 (12)参考文献 (13)附录 (14)基于单片机的电压表设计第1章设计背景随着科学技术的发展,人们对宏观和微观世界逐步了解,越来越多的微弱信号需要被检测,例如:弱磁、弱光、微震动、小位移、心电、脑电等。
测控技术发展到现在,微弱信号检测技术已经相对成熟,基本上采用以下两种方法来实现:一种是先将信号放大滤波,再用低或中分辨率的ADC进行采样,转化为数字信号后,再做信号处理,另一种是使用高分辨率ADC,对微弱信号直接采样,再进行数字信号处理。
两种方法各有千秋,也都有自己的缺点。
前一种方法,ADC要求不高,特别是现在大部分微处理器都集成有低或中分辨率的ADC,大大节省了开支,但是增加了繁琐的模拟电路。
后一种方法省去了模拟电路,但是对ADC性能要求高,虽然∑-△ADC发展很快,已经可以做到24位分辨率,价格也相对低廉,但是它是用速度和芯片面积换取的高精度,导致采样率做不高,特别是用于多通道采样时,由于建立时间长,采样率还会显著降低,因此,它一般用于低频信号的单通道测量,满足大多数的应用场合。
在对采样精度要求不断提升的情况下,科技工作者也在其他方面对智能仪表的发展提出了新的要求,如:良好的人机界面、数据存储和通讯、阈值报警和较低的功耗等,同时还要求仪表具有较高的性价比。
毕业设计-基于STC12C5A60S2单片机的数字温湿度计设计
东莞理工学院本科毕业设计毕业设计题目:温湿度控制器学生姓名:学号:系别:专业班级:指导教师姓名及职称:刘华珠高级工程师起止时间:2011年11月—— 2012年6月摘要本论文介绍了一种以单片机STC12C5A60S2为主要控制器件,以PT100,SHT15分别为温,湿度传感器。
本设计主要包括硬件电路的设计和系统软件的设计。
硬件电路主要包括控制器,测温湿控制电路和显示电路等。
控制器用带有AD转换的单片机,温度传感器PT100,湿度传感器采用SHT15,显示电路采用1个8位共阴极LED数码管,用锁存器是显示效果更好。
测温湿控制电路由温湿度传感器和预置温湿度值比较报警电路组成,当实际测量温湿度值大于预置温湿度值时,发出报警信号(发光二极管点亮)而且使外电路驱动(继电器动作)。
软件部分主要包括主程序,测温湿度子程序,显示子程序和按键子程序等。
本次设计采用的SHT15湿度传感器包括一个电容式聚合体测湿元件和一个能隙式测温元件,并与一个14位的A/D器以及串行接口电路在同一芯片上实现无缝链接,从而具有超快响应,抗干扰能力强,性价比高等优点。
而且PT100在要求的范围内线性度很好。
关键词:温度测量, 湿度测量,温度算法,PT100,SHT15ABSTRACTThis paper presents a new design of digital thermometers and hygrometer. It includes a main control device-microcontroller STC12C5A60S2 and a temperature and humidity sensor. This design includes hardware and system software .The hardware design includes a main controller circuit, Temperature and Humidity measurement and control circuits and show circuit. Main controller uses SCM STC12C5A60S2,temperature sensor uses PT100,and humidity sensor uses SHT15,Show circuit is a total of eight circuits using digital LED of the Altogether. Driver show circuit uses atches (74573). Temperature and Humidity control circuit includes the temperature and humidity sensor and preset temperature and humidity values compared alarm circuit. When the actual measurement of temperature or humidity values is greater than the preset temperature or humidity values, the alarm signal (Light emitting diode is lit) is sent. And output circuit will be sent(Relay action) .The major software includes the main routines, temperature and humidity routines, show routines and digital-to-analog routines.The humidity sensor (SHT15) in this design includes a capacitive polymer sensing element for power consumption makes it the ultimate choice for even relative humidity and a band gap temperature sensor. Both the most demanding applications are seamlessly coupled to a 14bit analog to digital converter with a 14 and the A / D, as well as serial interface circuits in the same chip on the realization of a Gap link to a super-fast response, anti-interference capability and cost-effective advantages.And PT100 within the required range linearity is very good.The design of digital thermometers and hygrometer with STC12C5A60S2 and PT100 and SHT15, not only has a simple external circuit, but also has a high-precision measurement.KEY WORDS: temperature measurement, humidity measurements, PT100,SHT15目录前言 (1)一设计任务要求和温湿度计的发展史 (1)1.1 设计任务及要求 (1)1.2 设计温湿度计的依据和意义 (1)1.3 温度计的发展史 (2)1.4 湿度计的由来 (3)1.5 露点意义 (3)二设计任务分析及方案论证 (4)2.1 设计总体方案及方案论证 (4)2.2 元器件的选择 (5)2.2.1 主控制器芯片 (5)2.2.2 温湿度传感器 (7)2.2.3 驱动显示电路 (8)2.3 温湿度测量的方法及分析 (9)三硬件电路的设计 (10)3.1 主控制电路和测温湿控制电路 (10)3.2 驱动显示电路 (12)四软件设计及分析 (13)4.1 SHT15传输时序和指令集]7[与测温模块 (13)4.1.1通讯复位时序 (13)4.1.2启动传输时序 (14)4.1.3 数据传输和指令集 (14)4.1.4湿度的测量时序 (15)4.1.5 输出转换为物理量 (15)4.1.6 SHT15的DC特性 (17)4.2 程序流程图 (19)4.3 程序的设计 (20)4.3.1 SHT15的初始化程序 (20)4.3.2 毕业设计.c是主函数,做了温度的算法 (26)4.3.3 AD转换子程序 (35)4.3.4 LED显示子程序 (36)4.3.5 软件在硬件上的调试分析 (45)结论 (46)参考文献 (47)致谢 (48)附录 (48)引言温度与湿度与人们的生活息息相关。
基于单片机的数字电压表的课程设计
基于单片机的数字电压表的课程设计一、引言在电子测量领域,电压表是一种常见且重要的测量工具。
传统的模拟电压表存在精度低、读数不直观等缺点,而数字电压表则凭借其高精度、高稳定性和直观的数字显示等优势,在电子测量中得到了广泛的应用。
本课程设计旨在基于单片机设计一款数字电压表,以实现对直流电压的准确测量和数字显示。
二、设计要求1、测量范围:0 5V 直流电压。
2、测量精度:优于 01V 。
3、显示方式:四位数码管显示。
4、具备超量程报警功能。
三、系统总体设计本数字电压表系统主要由单片机最小系统、A/D 转换模块、数码管显示模块和报警模块组成。
单片机最小系统作为控制核心,负责整个系统的运行和数据处理。
A/D 转换模块将输入的模拟电压转换为数字量,供单片机读取。
数码管显示模块用于显示测量的电压值。
报警模块在测量电压超过设定范围时发出报警信号。
四、硬件设计1、单片机最小系统选用 STC89C52 单片机,其具有性能稳定、价格低廉等优点。
最小系统包括单片机芯片、晶振电路和复位电路。
2、 A/D 转换模块采用 ADC0809 芯片进行 A/D 转换。
ADC0809 是 8 位逐次逼近型A/D 转换器,具有 8 个模拟输入通道,能够满足本设计的需求。
3、数码管显示模块使用四位共阳极数码管进行电压显示。
通过单片机的 I/O 口控制数码管的段选和位选,实现数字的显示。
4、报警模块采用蜂鸣器作为报警元件,当测量电压超过 5V 时,单片机输出高电平驱动蜂鸣器发声报警。
五、软件设计软件部分主要包括主程序、A/D 转换子程序、数据处理子程序和显示子程序等。
1、主程序负责系统的初始化,包括单片机端口设置、A/D 转换器初始化等。
然后循环调用 A/D 转换子程序、数据处理子程序和显示子程序,实现电压的测量和显示。
2、 A/D 转换子程序控制 ADC0809 进行 A/D 转换,并读取转换结果。
3、数据处理子程序将 A/D 转换得到的数字量转换为实际的电压值,并进行精度处理。
数码管显示的直流电压检测电路设计-课程设计论文
目录第一章设计任务及要求 (1)1.1 设计任务 (1)1.2 设计思路 (1)1.3 设计的目的与意义 (1)第二章设计总体方案 (2)2.1 设计要求 (2)2.2 设计方案 (2)第三章硬件电路设计 (3)3.1 A/D转换器 (3)3.1.1 ADC0808主要特性 (3)3.1.2 ADC0808的外部引脚特征 (3)3.1.3 ADC0808的工作流程 (3)3.2单片机系统 (4)3.2.1 AT89C51性能 (4)3.2.2 AT89C51各引脚功能 (4)3.3 LED显示系统设计 (5)3.3.1 LED基本结构 (5)3.3.2 LED显示器的选择 (5)3.3.3 LED译码方式 (5)3.3.3 LED显示器与单片机接口设计 (5)3.4 总体电路设计 (6)第四章课程设计进度安排 (7)第五章程序设计 (8)5.1 程序设计总方案 (8)5.2 系统子程序设计 (8)5.2.1 初始化程序 (8)5.2.2 A/D转换子程序 (8)5.2.3 显示子程序 (9)第六章使用说明与调试结果 (10)课设心得 (11)参考文献...................................................... 错误!未定义书签。
第一章设计任务及要求1.1 设计任务STC12C5A60S2(引脚排序及基本功能同AT89S51)作为主控芯片,设计0-5V直流电压检测电路。
一是利用单片机内部的A/D转换器测量外接直流电压;二是利用MAX7219驱动LG3641AH(或同型号共阴极)数码管,显示当前信号的电压值;三是根据需要扩展相应的外围电路。
1.2 设计思路(1)根据设计要求,选择AT89C51单片机为核心控制器件。
(2)A/D转换采用ADC0808实现,与单片机的接口为P1口和P2口的高四位引脚。
(3)电压显示采用4位一体的LED数码管。
(4)LED数码的段码输入,由并行端口P0产生:位码输入,用并行端口P2低四位产生。
简易数字万用表的方案设计书11
目录摘要1一.设计任务2二.系统方案3三.理论分析与计算43.1器件的选择与比较43.2 测量电路的设计和分析43.2.1 模数(A/D)转换与数字显示电路43.2.2 多量程数字电压表原理43.2.3 多量程数字电流表原理53.2.4 电阻的测量原理63.2.5 电容测量原理7四.电路设计与程序设计84.1 直流电压测量电路84.2 直流电流测量电路84.3 电阻测量电路94.4 测电容电路94.5 测试切换指示电路104.6 最小系统电路10五.测试方案及结果115.1 硬件调试111.测试仪器112.测试方法115.2 软件调试115.3 硬件软件联合调试11模块程序设计法的主要优点是:115.4测试流程125.4.1 整体测试流程125.4.2电压测试流程125.4.3 电阻测量流程135.4.4 电流测试流程13 5.5 测试结果135.5.1 电流测试结果135.5.2 电阻测试结果145.5.3 电压测试结果14参考文献14附录一:15摘要本次设计用单片机芯片STC12C5A60S2设计一个数字万用表,能够测量直流电压值、直流电流、直流电阻以及电容和电感,四位数码显示。
此系统由分流电阻、分压电阻、基准电阻、555振荡电路、51单片机最小系统、显示部分、AD转换和控制部分组成。
为使系统更加稳定,使系统整体硬件更简单,本电路使用了STC12C5A60S2自带的AD,它单片机系统设计采用STC12C5A60S2单片机作为主控芯片,配以RC上电复位电路和11.0592MHZ震荡电路,显示用四位数码管。
程序每执行周期耗时缩到最短,这样保证了系统的实时性。
关键字:数字万用表;单片机;AD转换一.设计任务1.设计并制作一台支持直流电压、直流电流、电阻测量的数字万用表。
2.测量范围:直流电压0.1V-100V;直流电流10mA-500mA;电阻100Ω-1MΩ。
3.使用按键或者拨码开关进行测量类型选择,并用数码管显示器显示测量数值,发光二极管指示测量类型与单位。
基于单片机的数字电压表设计
基于单片机的数字电压表设计数字电压表在电子技术中使用非常广泛,可以用来测量电路中的直流电压、交流电压以及各种信号的幅度等等。
基于单片机的数字电压表实现了数字电压的读取和显示,具有精确、稳定、易操作等特点,下面将介绍基于单片机的数字电压表的设计原理及实现方法。
一、系统结构基于单片机的数字电压表主要是由程序控制模块、模数转换模块和数字显示模块组成。
程序控制模块主要用来完成开机、校准、测试、功能选择等功能;模数转换模块主要将电压信号转换成数字量,供数字显示模块使用;数字显示模块主要将转换后的数字量显示在LCD液晶屏上。
二、硬件设计1.电源电路电源电路主要用来为电路提供稳定的电压和电流,本电路采用稳压电源芯片LM7805实现,稳压芯片输入端连接外部DC12V/1A电源,输出端连接电路板上的整个电路。
2.输入电路输入电路主要用来将被测电源的电压传递给单片机,常规情况下采用分压电路实现。
在本电路中,电阻R1和电容C1为RC滤波电路,起到滤波作用,防止干扰信号的影响;电阻R2是分压电路中的电阻,它根据电压值的不同设置不同的值,以保证被测电压在单片机内部转换过程中不会对单片机产生影响。
3.单片机模块单片机模块是系统的核心部分,本电路中选用STM32F103C8T6单片机实现模数转换和数码管控制,使用C 语言编写程序,通过模拟输入端口读取电压并进行模数转换,将得到的数字使用查表法将其转换为数码管控制脉冲,控制数码管的亮灭实现数字显示。
4.数字显示模块数字显示模块主要由七段数码管、LCD液晶屏幕、导线和电容等器组成,七段数码管用于展示测量到的电压大小,LCD 液晶屏用于展示功能选项、单位等信息。
导线是电路板内部连接线路,电容等器用来平滑电压波动。
三、软件设计1.引脚定义在程序中首先定义STM32F103C8T6单片机内存地址、输入输出引脚和电平状态,其中A0口用来读取被测电压;B0-B7口用来控制七段数码管的亮灭;C0口用来输出PWM,控制风扇的旋转速度;D0口用来控制蜂鸣器的开启和关闭。
基于STC12C5A60S2的数字示波表的设计与实现
万方数据
Dianli Xitong!皇垄圣竺l
图2金榜变禾金J路B相一不合格的保护器击穿烧毁
高于地网的电势,所以,要求电缆运行部门将类似裸露的尾锥铜管 进行包扎,绝缘等级等同于所在电缆外护套的绝缘等级。
(2)厦禾变其余的7回电缆护层在变电站端采用直接接地方 式,已安装的7套高压带电显示装置整套设备的上下端之间不存 在电势差,所以可继续使用。但对靠近电缆的传感线,采用穆皮金 属软管做护套的。一律换成具有较强绝缘水平的阻燃颦料软管,以 防止地位不一致时发生放电。
经过此次经验教训我局生产技术管理电缆运行维护变电站运行维护以及安全监督人员进行了充分的沟通使得处于交界边缘状态的电缆设备的有关专业技术知识得以普及和推广在未损及主设备的情况下及时发现了存在的隐患并在技术和管理上加强了相关措施
基于STCl2C5A60S2的数字示波表的设计与实现
高凯
(安徽淮北矿业集团铁路运输处,安徽淮北235139)
出版社,1991 [23李华等编著.McS-5l系列单片机实用接口技术[M].北京:北京航空
航天大学出版社,1993 [3]谭浩强著.C程序设计[岫.北京:清华大学出版社,1991
收稿日期:2010-03-24 作者简介:高凯(1985-),男,安徽淮北人,通信助理工程师,研究 方向:电子通讯系统。
随着高压电缆线路在厦门地区的大量使用,电缆系统特别是 护层接地系统相对于变电站运维人员,存在运维知识的盲点.需要 对其进行补充培训。认真执行反措和安措的同时,不能疏忽了在主 设备上加装附加安措元件本身所处系统环境的充分技术评估和必 要的安全论证,否则,解决了一个安全问题又会带来新的隐患。经 过此次经验教训,我局生产技术管理、电缆运行维护、变电站运行 维护以及安全监督人员进行了充分的沟通,使得处于交界边缘状 态的电缆设备的有关专业技术知识得以普及和推广,在未损及主 设备的情况下,及时发现了存在的隐患,并在技术和管理上加强了 相关措施。矿
STC12C5A60S2单片机课程设计报告
一、课程设计基本情况介绍课程设计的基本目的与任务本课程设计旨在驾驭本专业学生理论指导实践能力以及电子产品工程设计与开发能力。
本实践课所要达到的主要目的是:1、通过本次课程设计,是对学生综合能力的检,提高学生综合运用专业知识,强化单片机应用系统设计与防震能力。
2、本次课程设计是在生产实习所完成的“单片机核心板+电子钟模块+MP3模块+RFID模块+无线传输模块+GPS模块+脉搏传感模块”的基础上设计该硬件系统的工作程序。
课程设计的基本内容1、在生产实习设计单片机硬件系统的基础上,设计相应的应用软件系统。
2、在LCD1602上显示学号程序设计。
3、基于DS1302的实时时钟软件设计。
4、基于DS18B20的温度测量软件设计。
5、基于TL1838A的红外遥控解码软件设计。
6、设计应用软件系统框图和流程图,完成所设计软件的调试。
课程设计的教学要求1、通过资料查阅及学习了解单片机应用系统的软件设计方法及单片机编程、软硬件联机调试技巧。
2、独立设计并编写下列应用程序:(1)LCD1602学号显示程序;(2)DS1302实时时钟程序;(3)DS18B20温度测量程序;(4)TL1838A红外遥控解码程序;3、独立完成所设计程序与硬件系统的联机仿真。
二、整机系统框图(硬件、软件)该设计方案是以STC12C5A60S2单片机为核心,采用LCD液晶屏幕显示模块、实时时钟模块、温度测量模块、红外遥控解码等模块所构建的系统,能在LCD1602液晶屏上显示当前的日期(年、月、日)、时间(时、分、秒)数据、当前环境温度值和红外遥控解码值。
用户可通过遥控器或单片机核心板上的按键来进行日期和时间的设置。
本系统设计大部分功能由软件来实现,电路简单明了,系统稳定性也得到大大提高。
1、总体硬件设计框架图:2、总体软件设计框架图图为电子时钟程序设计流程图。
图电子时钟程序设计流程图 2、温度测量模块温度测量程序主要包括主程序,读出温度子程序,温度转换子程序,计算温度子程序,显示数据子程序等。
基于STC12C5A60S2单片机的温度监测系统设计
基于STC12C5A60S2单片机的温度监测系统设计摘要在机械、化工、纺织等行业,随着生产规模的不断扩大,以及对生产过程集中监控的迫切要求,现场总线技术应运而生,并成为了当今测控领域研究的热点之一。
在实际的生产实验环境下,由于系统内部和外界的热量交换是很难控制的,而且其他干扰因素也是无法去精确计算的,因此温度量的变化往往受到不可精确预计的外界环境扰动的影响。
但是正常工业生产过程中,对生产中的温度要求又是相对精确和苛刻的,工业生产中经常要保持反应炉中保持一定的温度,来促进反应的持续快速进行,同时,以前的温度控制大多是人工通过仪表的显示来调节温度的模式,然而人工控制温度的精确度不高,而且反应不灵敏,存在较大误差,因此需要更好的测温控温方法。
Modbus协议作为现场总线的一种,以其开发成本低,简单易用等诸多优点己被工业领域广泛接受。
温度作为工业中重要的测量参数之一,本课题选择了温度作为测量的对象,并设计了基于Modbus协议的温度测控节点。
本设计采用TC1047A传感器采集现场温度,由STC12C5A60S2单片机进行AD 转换和Modbus协议通讯。
通讯的物理层采用RS485接口,并增加了光电隔离、抗雷击和短路保护等功能。
最后实现了单个节点和PC机的Modbus协议通讯,并通过控制蜂鸣器和继电器来模拟工业现场控制。
本文分别从硬件和软件上阐述了该温度测控节点的实现方法。
关键词温度测控Modbus协议RS485 STC12C5A60S2The Design of Temperature Measuring and ControllingNodeBased to Modbus ProtocolABSTRACTWith the continuous expansion of production scale, and the urgent requirements in centralized monitoring of the production process in mechanical, chemical, textile and other industries. Fieldbus technology came into being, and become one of hot research field of measurement and control today. As one of field bus, Modbus protocol have been widely accepted because of low development cost, easy to use and many other advantages in industry.The temperature is one of the important parameters measured in industry,so it has been chosen a measurement of the object,temperature measurement and control nodes has been designed based on Modbus protocol.This design uses TC1047A sensor to collect on-site temperature,AD conversion and Modbus protocol communications can be done by STC12C5A60S2 microcontroller.The physical layer of communication adopts RS485 interface, and have optical isolation, anti-lightning and short circuit protection in addition. Finally, achieved the Modbus protocol communication between a single node and the PC, and simulate industrial control by controlling the buzzer, and relay. This paper describes the implementation of temperature control node from hardware and software.KEY WORDS Temperature Monitoring Modbus protocol RS485 STC12C5A60目录中文摘要 (Ⅰ)英文摘要 (Ⅱ)1 绪论 (1)2 设计方案 (3)2.1方案概述 (3)2.2方案论证 (3)2.2.1 通讯可靠性 (4)2.2.2 温度检测电路选择 (4)2.2.3 系统电源稳定性 (5)3 硬件电路设计 (6)3.1最小系统电路 (6)3.2温度检测电路 (6)3.3电源电路 (7)3.4报警控制电路 (9)3.5通讯电路 (10)3.6显示电路 (13)3.7硬件抗干扰的设计 (14)4 MODBUS协议概述与应用 (16)4.1MODBUS协议概述 (16)4.1.1 总体描述 (16)4.1.2 MODBUS数据单元 (17)4.1.3 MODBUS通信原理 (17)4.2M两种传输方式 (19)4.2.1 ASCll模式 (20)4.2.2 RTU模式 (20)4.3MODBUS消息帧 (21)4.3.1 ASCll帧 (21)4.3.2 RTU帧 (21)4.3.3 字符的连续传输 (22)4.5错误检测方法 (23)4.5.1 LRC检测 (24)4.5.2 CRC检测 (24)5 软件设计 (25)5.1AD采集程序设计 (26)5.2串口中断处理程序设计 (27)5.3MODBUS协议程序设计 (29)5.4CRC计算及校验程序设计 (29)6 总结 (33)致谢............................................................ 错误!未定义书签。
简易数字万用表的方案设计书
2013年江西省大学生电子设计简易数字万用表(C 题)2013年5月28日目录摘要0一.设计任务1二.系统方案2三.理论分析与计算33.1器件的选择与比较33.2 测量电路的设计和分析33.2.1 模数(A/D)转换与数字显示电路33.2.2 多量程数字电压表原理33.2.3 多量程数字电流表原理43.2.4 电阻的测量原理53.2.5 电容测量原理6四.电路设计与程序设计74.1 直流电压测量电路74.2 直流电流测量电路74.3 电阻测量电路84.4 测电容电路84.5 最小系统电路9五.测试方案105.1 硬件调试101.测试仪器102.测试方法105.2 软件调试105.3 硬件软件联合调试10模块程序设计法的主要优点是:105.4测试流程115.4.1 整体测试流程115.4.2电压测试流程115.4.3 电阻测量流程115.4.4 电流测试流程12 参考文献13摘要本次设计用单片机芯片STC12C5A60S2设计一个数字万用表,能够测量直流电压值、直流电流、直流电阻以及电容和电感,四位数码显示。
此系统由分流电阻、分压电阻、基准电阻、555振荡电路、51单片机最小系统、显示部分、AD转换和控制部分组成。
为使系统更加稳定,使系统整体硬件更简单,本电路使用了STC12C5A60S2自带的AD,它单片机系统设计采用STC12C5A60S2单片机作为主控芯片,配以RC上电复位电路和11.0592MHZ震荡电路,显示用四位数码管。
程序每执行周期耗时缩到最短,这样保证了系统的实时性。
关键字:数字万用表;单片机;AD转换一.设计任务1.设计并制作一台支持直流电压、直流电流、电阻测量的数字万用表。
2.测量范围:直流电压0.1V-100V;直流电流10mA-500mA;电阻100Ω-1MΩ。
3.使用按键或者拨码开关进行测量类型选择,并用数码管显示器显示测量数值,发光二极管指示测量类型与单位。
4.测量精度:±5%。
基于STC12C5A60S2单片机数字电压表的设计.
数字电压表的设计第1章引言在电量的测量中,电压、电流和频率是最基本的三个被测量,其中电压量的测量最为经常。
而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。
数字电压表简称DVM,它是采用数字化测量技术,把连续的模拟量转换成不连续、离散的数字形式并加以显示的仪表。
由于数字式仪器具有读数准确方便、精度高、误差小、测量速度快等特而得到广泛应用。
传统的指针式刻度电压表功能单一,精度低,容易引起视差和视觉疲劳,因而不能满足数字化时代的需要。
采用单片机的数字电压表,将连续的模拟量如直流电压转换成不连续的离散的数字形式并加以显示,从而精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC实时通信。
数字电压表是诸多数字化仪表的核心与基础。
以数字电压表为核心,可以扩展成各种通用数字仪表、专用数字仪表及各种非电量的数字化仪表。
目前,由各种单片机和A/D转换器构成的数字电压表作全面深入的了解是很有必要的。
目前,数字电压表的内部核心部件是A/D转换器,转换的精度很大程度上影响着数字电压表的准确度,因而,以后数字电压表的发展就着眼在高精度和低成本这两个方面。
本文是以简易数字直流电压表的设计为研究内容,本系统主要包括三大模块:转换模块、数据处理模块及显示模块。
第2章系统总体方案设计选择与说明2.1 设计要求1、增强型MCS-51系列单片机STC12C5A60S2为核心器件,组成一个简单的直流数字电压表。
2、采用1路模拟量输入,能够测量0-10V之间的直流电压值。
3、电压显示采用LCD1602显示。
4、尽量使用较少的元器件。
2.2 设计思路1、根据设计要求,选择STC12C5A60S2单片机为核心控制器件。
2、A/D 转换采用STC12C5A60S2内部自带A/D 实现。
3、电压显示采用LCD1602显示。
2.3 设计方案硬件电路设计由7个部分组成:STC12C5A60S2单片机系统,数码管显示系统、时钟电路、复位电路档位调节电路以及测量电压输入电路。
基于STC12C5A60S2单片机数字电压表的设计
基于STC12C5A60S2单片机数字电压表的设计专业班级:电子信息工程二班学号:xxx姓名:xxx指导教师:xxx基于STC12C5A60S2单片机数字电压表的设计实训目的:1、对安全用电知识的基本了解1) 了解一般情况下对人体的安全电流和电压,了解触电事故的发生原因及安全用电的原则。
2) 掌握用电安全操作技术。
3) 培养严谨的科学作风和良好的工作作风。
2、常用工具的基本使用1) 了解常用电工电子工具的用途、规格;2) 掌握常用电工电子工具的使用方法和注意事项。
3 、数字电压表的组装1) 了解电路的原理,掌握数字电压表的作用。
2) 注意安全,先接线,在通电。
4、一般室内电气线路的安装1) 了解室内电路的原理,掌握各个元件的作用。
2) 注意电器间的连接,注意安全。
3) 增强动手、合作能力。
5、常用电子仪器的使用1) 了解直流稳压电源、万用表、信号发生器、示波器等常用电子仪器的功能。
2) 掌握直流稳压电源、万用表、信号发生器、示波器的基本操作方法,为后续实习打下基础。
6、常用电子元器件的认识和检测1) 通过实物认识各种常用的电子元器件。
2) 掌握常用电子元器件参数的识读方法。
3) 掌握使用万用表测量常用电子元器件参数的方法。
4) 通过简单的实验,了解常用电子元器件的功能。
7、常用工具的使用(二)1) 了解常用电工电子工具的用途、规格;2) 掌握常用电工电子工具的使用方法和注意事项。
8、焊接工艺焊接训练1) 掌握焊接工艺的方法,了解焊接工具的原理。
2) 安全用电和注意事项9、电子整机产品装配(数字电压表的制作)1) 掌握数字电压表的电路原理、元件的作用。
2) 学会检测各个元件的好坏、3) 独立动手能力10、印制电路板(PCB)的制作1) 了解印制电路板的功能和种类。
2) 了解PCB板的快速制作方法。
3) 简单了解专业电路板厂PCB板制作的流程和工艺。
11、电路组装及调试1) 了解热转印法制作PCB板的工艺流程;2) 掌握使用热转印法来制作PCB板的技能。
《单片机应用技术(C语言)》实训课件—7.1 简易数字电压表设计
}
开始 变量声明 初始化 ADC
读取 AD 转换 数据处理 数据显示
//函数名: ADC_STC12C5
//函数功能:取AD结果函数
//形式参数:第ch路通路
//返回值:A/D转换结果0~255
unsigned char ADC_STC12C5(unsigned char ch)
{
ADC_RES = 0;
三、数字电压表控制程序设计
//声明与ADC 有关的特殊功能寄存器
sfr P1_ASF = 0x9D; //A/D转换模拟功能控制寄存器
sfr ADC_CONTR = 0xBC; //A/D转换控制寄存器
sfr ADC_RES = 0xBD;
//A/D转换结果寄存器
sfr ADC_RESL = 0xBE;
//形式参数:输入数据
//返回值:无,实际电压值分离后存放在全局数组disp[]中
void data_process(unsigned char value)
{ unsigned int temp;
为什么?
temp = value *196;
//0~255转换为0~50000
disp[3]=temp/10000;
模拟信号输入
硬 件 电 路 图
三极管8050起到 开关作用,并为 每个数码管提供 必要的驱动电流。
数字信号显示
0 5 4 0 Q8 5 + vcc 6 0 5 3 0 Q8 vcc 8 0 DISPLAY 5 2 0 Q8 vcc 9 0 5 1 0 Q8 vcc 1 2 P fgedcDba 512437 01 11 6543210 11111119 0 0 1 1 R 1K×4 12345678 V 5 + 09098765432123456781 42333333333222222223 C A N E E C ALE S P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7 V P STC12C5A60S2 D N12 GRSTXXP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7 912345678 09801234567 21111111111 12MHz VV FF 55 pp 32 ++ K 22 P F CC 0 22 K 2 R u 1 1 0 2 R 1C 2
毕业论文基于stc12le5a60s2单片机的电压表设计
毕业论文基于stc12le5a60s2单片机的电压表设计职业技术学院毕业设计,论文,论文题目: 基于单片机的电压表设计所属学院: 电子工程学院指导老师: 余平生职称: 副教授学生姓名: 吴美班级、学号: 12011310专业: 应用电子技术职业技术学院制2015年 1 月 12 日职业技术学院毕业设计,论文,任务书题目: 基于单片机的电压表设计任务与要求:任务:设计一款便携式数字电压表要求:测量范围0-400V直流电压~有量程切换和超量程报警功能~能够显示电池电量。
时间: 2013 年 11月18 日至 2015 年 1 月12 日共 8 周所属学院: 电子工程学院号:12011310 学生姓名: 吴美学专业: 应用电子技术指导单位或教研室: 电子工程学院指导教师: 余平生职称: 副教授职业技术学院制2015年 1 月 12 日毕业设计(论文)进度计划表指导教师日期工作内容执行情况签字2013.11.02 查找资料~了解相关知识完成2013.11.03 方案选择完成 2013.11.04 基础LCD驱动程序编写完成2013.11.06 硬件电路焊接调试完成 2013.11.08 整体程序编写完成 2013.11.10 软硬件连调完成 2013.11.13 整机性能测试完成教师对进度计划实施情况总评签名年月日本表作评定学生平时成绩的依据之一。
基于单片机的电压表设计【摘要】论文主要阐述了基于STC12LE5A60S2低压单片机便携式电压表的设计,系统以STC12LE5A60S2低压单片机为主控芯片,以16位AD芯片AD7705为AD转换芯片,以DS18B20为温度传感器对温度进行测量,以1.8寸TFT彩屏为显示模块。
该系统能实时测量输入电压和当前温度,并能对供电电池的电压进行测量,并在屏幕上显示出当前电量。
系统测量电压范围为0—400V直流电压,分为7个档位,当输入电压超量程时通过蜂鸣器报警。
系统设计了相关的硬件电路和相关应用程序。
基于单片机的数字电压表的设计
基于单片机的数字电压表的设计数字电压表是一种在电子领域中广泛应用的测试设备,用于测量电路中的电压值。
基于单片机的数字电压表拥有计算精度高、体积小、成本低等特点,成为了当今市场上最为流行的一种数字电压表测量方法。
设计基于单片机的数字电压表需要确定一些关键元件和电路,如ADC(模数转换器)、指示器、单片机等,以下是具体步骤和流程:1. 定义参数和需求:在设计数字电压表时,首先要明确测试电压的量程、测试精度、满量程等,只有清晰地定义这些参数,才能确定适合的元器件和电路。
2. 选取ADC:ADC是数字电压表的核心元件之一,它将模拟电压转换为数字信号。
对于基于单片机的数字电压表,通常采用内置于单片机的ADC或外置的一些通用的ADC 芯片。
选取ADC时需要考虑其分辨率、转换速度等性能指标,以满足设计的要求。
3. 选取指示器:指示器是用来显示测试结果的设备,一般有数字显示器和模拟表两种。
数字电压表通常使用数字显示器作为指示器,具有体积小、显示清晰、功耗低等特点。
4. 选取单片机:单片机是数字电压表中非常重要的元器件,它可以实现ADC的引脚控制和数据处理。
在选取单片机时,需要考虑其存储器大小、处理能力、功耗等方面,以保证测试结果精确。
5. 实现电路:将选定的元器件按照电路原理图进行连线,设计好合适的滤波电路、参考电压等,保证测试结果的精度和稳定性。
6. 软件编写:通过单片机自带的编程软件或其他编程软件编写单片机的程序,实现ADC数据采集、数据处理、数字显示等功能,同时实现测试参数的设定和调整。
7. 测试和优化:在电路和程序编写完成后,需要进行测试和评估,根据测试结果进行优化和调整,提高数字电压表的测量精度和可靠性。
基于单片机的数字电压表具有较高的灵活性和可扩展性,可以通过增加外部接口实现更多的测量功能。
同时,单片机的应用还可以实现自动校准、自动调零等功能,为测试工作提供更多的便利。
因此,基于单片机的数字电压表在电子测试领域中得到广泛应用,成为了数字电压表的一种重要类型。
用stc12c5a60s2单片机采集交流电压并计算其有效值(普中科技hc6800为硬件)
用stc12c5a60s2单片机采集交流电压并计算其有效值(普中科技hc6800为硬件)//******P1^7为参考电压,P1^2为待测电压接口#include<reg51.h>#include<math.h>#define bianshu 1#define qshu 50#define buchangTH1 0Xfe#define buchangTL1 0X0c //1000us 1000hz 10000us 考虑给取值过程留点时间(200us) 用700us 65536-700=64836 //与ad相关的特殊功能寄存器sfr ADC_CONTR =0XBC; //定义ad相关特殊功能寄存器地址sfr ADC_RES =0XBD;sfr ADC_RESL =0XBE;sfr P1ASF =0X9D;sbit EADC=IE^5;//ad中断允许位//配合ADC_CONTR置相应位因为ADC_CONTR不可位寻址,所以采用与或方式置相应位#define ADC_POWER 0X80#define ADC_FLAG 0X10#define ADC_START 0X08#define ADC_SPEEDLL 0X00#define ADC_SPEEDL 0X20#define ADC_SPEEDH 0X40#define ADC_SPEEDHH 0X60unsigned char CH2=2;//通道 p1^2unsigned char CH7=7;//通道 p1^7//***步长所用变量int Gbuchang,Lbuchang;//***遍数,取数个数,开断及等待控制部分所用变量char N=qshu,M=bianshu;char kd,bx;char flag1; //等待标志位,用作等待开断、定时//***取数部分所用变量float bus,zhi[qshu],cankao;char i,geshu;//***处理数据部分所用变量char u,v,w;//for循环控制位float zhi1[qshu],zhi2[qshu],sum;//改成float了,少占点内存要取的 n个数(转换完的整数)float junzhi;int zhenzhi,zhi3[qshu];//***显示部分所用变量char j,k,s;//for循环控制位int LedNumVal;char LedOut[8]; //取要显示数的个十百... 数码管8位unsigned char code Disp_Tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //段码sbit LS138A = P2^2; //定义138译码器的输入A脚由P2.2控制控制8个数码管sbit LS138B = P2^3; //定义138译码器的输入脚B由P2.3控制sbit LS138C = P2^4; //定义138译码器的输入脚C由P2.4控制//***查错部分所用变量sbit cha1=P2^0;sbit cha2=P2^1;sbit cha3=P2^7;sbit cha4=P2^6;void delay(int q);void main(){while(1){//***遍数,取数个数,开断及等待控制部分所用变量M=bianshu;N=qshu;bx=0;//显示遍数标志位kd=0;//开断标志位flag1=1;//用“1”符合逻辑!控制开始与结束标志位CH2=2;//通道 p1^2 辅助置ADC_CONTR的通道位CH7=7;//通道 p1^2 辅助置ADC_CONTR的通道位//***取数部分所用变量bus=0;//数据传输媒介(实数)数据区cankao=0;geshu=0;sum=0;junzhi=0;zhenzhi=0;i=0;//i是取数中的变量u=0;//j,k,s都是显示程序中的变量v=0;w=0;j=0;//j,k,s都是显示程序中的变量k=0;s=0;LedNumVal=0;//**********zhi[i]清零************for(i=0;i<N;i++){zhi[i]=0;zhi1[i]=0;zhi2[i]=0;zhi3[i]=0;}//********ad初始化********EADC=1; //允许ad中断P1ASF=0x84; //通道1000 0100ADC_RES=0; //寄存器清零ADC_CONTR=ADC_POWER|ADC_SPEEDHH|CH2;//设置电源速度通道2 注意此处不开启ADC_START 取完数之后每次都需要再置位delay(1); //第一次需要时间来置位//********外部中断1初始化********EX1=1; //外部中断1允许中断号2 引脚P3^3IT1=1; //设置为下降沿触发//********定时器1初始化(采用查询方式)所以没有开启定时器1的中断允许位ET1位TMOD=0X11; //0001 0001 定时1,0 方式1 16位Gbuchang=buchangTH1;Lbuchang=buchangTL1;TH1=Gbuchang;TL1=Lbuchang; //1000us 无定时器中断允许采用查询方式控制步长// 用定时器0来查看一下取数时间TH0=0;TL0=0;//*****取数要求:ad从零点开始,按相同步长取到确定的N个数***************************EA=1;//等待外部中断1来开启ad与定时器1//****flag1=1(等待同步方波下降沿开启)>>flag1=0(采集数据)>>flag1=1(等待同步方波下降沿关闭)>>//*******ad取数阶段**********要保证下次循环不被打扰//通道二:取zhi[i](要为小数),由同步方波确定取值“geshu”个//通道七:取cankao,cankao为标准电压的数字量//涉及数据:zhi[i],geshu,cankaowhile(flag1==1);TR0=1;cha3=0;while(flag1==0){cha4=0;for(i=0;i<N;i++) //ad转换完一次后ADC_START会自动清零{TR1=1; //此处开启定时器开始定时器控制步长ADC_CONTR|=ADC_START; //此处开启ad转换统一开始时间开始ad 时间很短while(TF1==0); //因为步长大于ad采集时间,所以此处会进入ad中断取!!ADC_RES》bus!!等待定时器控制步长完再把数bus>>zhi[i]TF1=0;//软件查询,需软件清中断申请位TR1=0;//此处关闭为了不让它再计时***定时器计满溢出回零之后(方式0、1、3)会重新开始从零计数所以要先关闭再说 **** TH1=Gbuchang;TL1=Lbuchang;zhi[i]=bus;//zhi[i]为初始取的数字量bus=0;//清零geshu=i+1;//指向i的下一个数标if(flag1==1)// 此处本意是想:用同步方波来控制取数的结束时间,而不是以前的固定取N个数在等待结束break;}TR0=0;//取完通道二(一个周期后)就要关闭定时器0的TR0ADC_CONTR=ADC_POWER|ADC_SPEEDHH|CH7;//待通道二取完数字量之后,重置取通道七的标准电压的数字量delay(1); //第一次需要时间来置位以防万一TR1=1; //此处开启定时器开始定时器控制步长ADC_CONTR|=ADC_START; //此处开启ad转换统一开始时间开始ad 时间很短while(TF1==0); //因为步长大于ad采集时间,所以此处会进入ad中断取!!ADC_RES》bus!!等待定时器控制步长完再把数bus>>zhi[i]TF1=0;//软件查询,需软件清中断申请位TR1=0;//此处关闭为了不让它再计时***定时器计满溢出回零之后(方式0、1、3)会重新开始从零计数所以要先关闭再说****TH1=Gbuchang;TL1=Lbuchang;cankao=bus;//cankao为标准电压的数字量bus=0;//清零}EA=0;flag1=1;zhi3[geshu+2]=geshu;//显示个数zhi3[geshu+4]=256*TH0+TL0;//显示时间,看看取数时间是否超过20000uszhi3[geshu+6]=cankao;//显示标准参考电压数字量cha4=0;//ADC_CONTR&=!ADC_POWER; //ad电源的开断会使内部电压不稳,导致数值不稳//************循环M遍显示取到的N个数值*************************************while(M--){//****处理数据:【zhi[i],zhi1[u],zhi2[v],sum,zhi2】均为小数,zhenzhi,geshu,时间,zhi3[w]为整数//****涉及变量:zhi1[u],zhi2[v],zhi3[w]// u,v,w,sum,zhi2,zhenzhifor(u=0;u<geshu;u++) //只处理geshu以前的数{zhi1[u]=zhi[u]*3/cankao;//此处用(暂选3V)精确电压确定的单个位电压来计算}for(v=0;v<geshu;v++){zhi2[v]=zhi1[v]*zhi1[v];//小数sum+=zhi2[v];//平方和此处bus已经乘了1000,可以说已经取了4位有效数字}junzhi=sum/(geshu);//junzhi为小数值,zhenzhi=sqrt(junzhi)*1000;//zhenzhi为整数值此处已经*1000提取了有效数字zhi3[geshu+8]=zhenzhi;for(w=0;w<geshu;w++)//仅对geshu前的数处理zhi3[w]=zhi1[w]*1000;}//显示程序只显示zhi3[N]的整数值for(j=0;j<N;j++) //循环显示N个数{LedNumVal=zhi3[j];LedOut[0]=Disp_T ab[LedNumVal%100000000/10000000]; //取各个位LedOut[1]=Disp_T ab[LedNumVal%10000000/1000000];LedOut[2]=Disp_T ab[LedNumVal%1000000/100000];LedOut[3]=Disp_T ab[LedNumVal%100000/10000];LedOut[4]=Disp_T ab[LedNumVal%10000/1000]|0x80; //千位LedOut[5]=Disp_T ab[LedNumVal%1000/100]; //百位LedOut[6]=Disp_T ab[LedNumVal%100/10];//十位LedOut[7]=Disp_T ab[LedNumVal%10]; //个位//EA=0; //此处关中断有效的解决了ad打断程序进行的问题去掉它就可以循环了!!for(k=0;k<125;k++) //循环显示这个数300次,为了能看清它大点 cha2就不亮了到了200以上怎么就那么长时间??{cha1=1;for(s=0;s<8;s++) //只显示8个数字{P0=LedOut[s];switch(s) //使用switch 语句控制位选也可以是用查表的方式学员可以试着自己修改{case0:LS138A=0; LS138B=0; LS138C=0; break;case 1:LS138A=1; LS138B=0; LS138C=0; break;case 2:LS138A=0; LS138B=1; LS138C=0; break;case 3:LS138A=1; LS138B=1; LS138C=0; break;case 4:LS138A=0; LS138B=0; LS138C=1; break;case 5:LS138A=1; LS138B=0; LS138C=1; break;case 6:LS138A=0; LS138B=1; LS138C=1; break;case 7:LS138A=1; LS138B=1; LS138C=1; break;}delay(5);cha1=0;}cha2=1; //}cha2=0; //每换数一次显示一下}bx++;P0=Disp_Tab[bx]; //显示管显示为“0”delay(2000);//搞清楚此处延时的影响!!}cha3=1;cha4=1;//delay(10000);}}//**********外部中断1控制取数从零点开始flag1和flag3的作用仅仅是控制完整周期(不再开启和关闭中断或定时器)**********// void adc_kai() interrupt 2//外部中断1 中断号2 3^3引脚{// flag1=!flag1;// if(flag1==1)// flag1=0;// else flag1=1;kd++;if(kd==1){flag1=1;}if(kd==2){kd=0;flag1=0;}//**********ad中断程序定时器查询和再置数(控制步长) ad取数**********//void adc_qushu() interrupt 5{ADC_CONTR&=!ADC_FLAG; //每次都要用软件清中断标志位bus=ADC_RES;ADC_RES=0;ADC_CONTR=ADC_POWER|ADC_SPEEDHH|CH2; //?是否需要每次都上电选速度和通道}//**********延时**********//void delay(int q){int z;while(q--){z=100;while(z--);}}。
用单片机制作电压表
元器件清单
品名
型号
数量
备注
单片机
STC12C5A60S2
1
大约11元/片
芯片座
管孔式40PIN-DIP
1
可以用普通40PIN的芯片座替代
电容
30Pf
2
大约8元/包,瓷片电容
晶体振荡器
12MHz
1
大约1元/个,普通的直插式晶体即可
数码管
SR430563K
1
4位共阳,数码管中间带冒号显示
5V稳压电源
1
为单片机提供工作电压
电路原理图
显示部分:
电压值是用数码管显示出来的,非常直观,本制作采用的是四位数码管。采用动态显示,相比静态显示。动态显示方式不论是多少位的数码管,在同一时刻内只有其中一位被点亮,所以比较省电,要加上100欧的限流电阻来保护数码管。
注意事项:
1.在使用ADC功能时,应将其输入端的I/O接口设置为高阻输入工作方式。
电阻
10K 1/4W
1
电阻
100欧1/4W
3
万能实验板
2.54mm间距
1
尺寸可按喜好选择
原理:
主要运用到了A/D转换原理,将连续变化的模拟信号转化为数字信号,STC12C5A60S2自带A/D转换,省去了A/D转换芯片,A/D转换接口在P1口(P1.7-P1.0),有8位10路A/D转换器,速度可达250KHz,上电复位后P1口为弱上拉I/O口,可设置8路中任何一路为A/D转换,不需要作为A/D使用的可继续作为I//O使用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字电压表的设计第1章引言在电量的测量中,电压、电流和频率是最基本的三个被测量,其中电压量的测量最为经常。
而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。
数字电压表简称DVM,它是采用数字化测量技术,把连续的模拟量转换成不连续、离散的数字形式并加以显示的仪表。
由于数字式仪器具有读数准确方便、精度高、误差小、测量速度快等特而得到广泛应用。
传统的指针式刻度电压表功能单一,精度低,容易引起视差和视觉疲劳,因而不能满足数字化时代的需要。
采用单片机的数字电压表,将连续的模拟量如直流电压转换成不连续的离散的数字形式并加以显示,从而精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC实时通信。
数字电压表是诸多数字化仪表的核心与基础。
以数字电压表为核心,可以扩展成各种通用数字仪表、专用数字仪表及各种非电量的数字化仪表。
目前,由各种单片机和A/D转换器构成的数字电压表作全面深入的了解是很有必要的。
目前,数字电压表的内部核心部件是A/D转换器,转换的精度很大程度上影响着数字电压表的准确度,因而,以后数字电压表的发展就着眼在高精度和低成本这两个方面。
本文是以简易数字直流电压表的设计为研究内容,本系统主要包括三大模块:转换模块、数据处理模块及显示模块。
第2章系统总体方案设计选择与说明2.1 设计要求1、增强型MCS-51系列单片机STC12C5A60S2为核心器件,组成一个简单的直流数字电压表。
2、采用1路模拟量输入,能够测量0-10V 之间的直流电压值。
3、电压显示采用LCD1602显示。
4、尽量使用较少的元器件。
2.2 设计思路1、根据设计要求,选择STC12C5A60S2单片机为核心控制器件。
2、A/D 转换采用STC12C5A60S2内部自带A/D 实现。
3、电压显示采用LCD1602显示。
2.3 设计方案硬件电路设计由7个部分组成:STC12C5A60S2单片机系统,数码管显示系统、时钟电路、复位电路档位调节电路以及测量电压输入电路。
硬件电路设计框图如图1所示。
图2.1 数字电压表系统硬件设计框图第3章 硬件电路设计3.1 STC12C5A60S2单片机图3.1 STC12C5A60S2单片机引脚图及实物图3.2 STC12C5A60S2系列单片机主要性能1)高速:1个时钟/机器周期,增强型8051内核,速度比普通8051快6~12倍。
2)宽电压:5.5~3.3V,2.2~3.6V(STC12LE5A60S2系列)。
3)增加第二复位功能脚/P4.6(高可靠复位,可调整复位门槛电压,频率<12MHz时,无需此功能)。
4)增加外部掉电检测电路/P4.6,可在掉电时,及时将数据保存进EEPROM,正常工作时无需操作EEPROM。
5)低功耗设计:空闲模式(可由任意一个中断唤醒)。
6)低功耗设计:掉电模式(可由外部中断唤醒),可支持下降沿/上升沿和远程唤醒。
7)支持掉电唤醒的管脚:INT0/P3.2,INT1/P3.3,T0/P3.4,T1/P3.5,RxD/P3.0,CCP0/P1.3(或P4.2),CCP1/P1.4(或P4.3),EX_LVD/P4.6。
8) 工作频率:0~35MHz,相当于普通8051:0~420MHz。
9) 时钟:外部晶体或内部RC振荡器可选,在ISP下载编程用户程序时设置。
10) 8/16/20/32/40/48/52/56/60/62K字节片内Flash程序存储器,擦写次数10万次以上。
11) 1280字节片内RAM数据存储器。
12) 芯片内EEPROM功能,擦写次数10万次以上。
13) ISP / IAP,在系统可编程/在应用可编程,无需编程器/仿真器。
14) 8通道,10位高速ADC,速度可达25万次/秒,2路PWM还可当2路D/A使用。
15) 2通道捕获/比较单元(PWM/PCA/CCP),也可用来再实现2个定时器或2个外部中断(支持上升沿/下降沿中断)。
16) 4个16位定时器,兼容普通8051的定时器T0/T1,2路PCA实现2个定时器。
17) 可编程时钟输出功能,T0在P3.4输出时钟,T1在P3.5输出时钟,BRT在P1.0输出时钟。
18) 硬件看门狗(WDT)。
19) 高速SPI串行通信端口。
20) 全双工异步串行口(UART),兼容普通8051的串口。
21) 通用I/O口(36/40/44个),复位后为:准双向口/弱上拉(普通8051传统I/O 口)。
可设置成四种模式:准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏。
每个I/O口驱动能力均可达到20mA,但整个芯片最大不得超过120mA。
3.3 STC12C5A60S2系列单片机的A/D转换器的结构STC12C5A60S2系列单片机的A/D转换口在P1口(P1.7-P1.0),有8路10位高速A/D转换器,速度可达到250KHz(25万次/秒)。
8路电压输入型A/D,可做温度检测、电源电压检测、按键扫描、频谱检测等。
上电复位后P1口为弱上拉型I/O口,用户可以通过软件设置将8路中的任何一路设置为A/D转换,不需作为A/D使用的I/O口可以继续作为I/O口使用。
STC12C5A60S2系列单片机ADC的结构如下图所示图3.2 STC12C5A60S2系列单片机ADC的结构图3.3 当AUXR.1/ADRJ=0时,A/D转换结果寄存器格式图3.4 当AUXR.1/ADRJ=1时,A/D转换结果寄存器格式STC12C5A60S2系列单片机ADC由多路选择开关、比较器、逐次比较寄存器、10位ADC转换寄结果存器(ADC_RES和ADC_RESL)以及ADC_CONTR构成。
STC12C5A60S2系列单片机的ADC是逐次比较型ADC,逐次比较型ADC由一个比较D/A转换器构成,通过逐次比较逻辑,从最高位(MSB)开始,顺序地对每一输入电压与内置D/A转换器输出比较,经过多次比较,使转换所得的数字量逐次比逼近输入模拟量对应值。
逐次比较型A/D转换器具有速度高,功耗低等特点。
从上图可以看出,通过模拟多路开关,将通过ADC0-ADC7的模拟量输入送给比较器。
用数/模转换器(DAC)转换的模拟量与本次输入的模拟量通过比较器进行比较,将比较结果保存到逐次比较器,并通过逐次比较寄存器输出转换结果。
A/D转换结束后,最终的转换结果保存到ADC转换结果寄存器ADC_RES和ADC_RESL,同时,置位ADC控制寄存器ADC_CONTR中的A/D转换结束标志位ADC_FLAG,以供程序查询或发出中断申请。
模拟通道的选择控制由ADC控制寄存器ADC_CONTR中的CHS2~CHS0确定。
ADC的转换速度由ADC控制寄存器中的SPEED1和SPEED0确定。
在使用ADC之前,应先给ADC上电,也就是置位ADC控制寄存器中的ADC_POWER位。
当ADRJ=0时,如果取10位结果,则按下面公式计算:10-bitA/D Conversion Result:(ADC_RES[7:0],ADC_RESL[1:0])=1023*Vin/Vcc当ADRJ=0时,如果取8位结果,则按下面公式计算:8-bitA/D Conversion Result:(ADC_RES[7:0])=255*Vin/Vcc当ADRJ=1时,如果取10位结果,则按下面公式计算:10-bitA/D Conversion Result:( ADC_RESL[1:0] ,ADC_RES[7:0])=1023*Vin/Vcc当ADRJ=1时,如果取8位结果,则按下面公式计算:8-bitA/D Conversion Result:( ADC_RESL[1:0] ,ADC_RES[7:2])=255*Vin/Vcc式中,Vin为模拟输入电压,Vcc为单片机实际工作电压,用单片机工作电压作为模拟参考电压。
3.4 与A/D 转换相关的寄存器及说明与STC12C5A60S2系列单片机A/D转换相关的寄存器表3.1 A/D转换相关的寄存器1.P1口模拟功能控制寄存器P1ASFSTC12C5A60S2系列单片机的A/D转换通道与P1(P1.7-P1.0)复用,上电复位后P1为弱上拉型I/O口,用户可以通过将8路中的如何一路设置为A/D转换,不需作为A/D使用的P1口可继续作为I/O口使用(建议只作为输入)。
需作为A/D 使用的口需要先将P1ASF特殊功能寄存器中的相应位置为“1”,将相应的口设置为模拟功能。
P1ASF寄存器的格式如下:P1ASF:P1口模拟功能控制寄存器(只读)表3.2 P1ASF寄存器当P1口中的相应位作为A/D使用时,要将P1ASF中的相应位置“1”表3.3 P1ASF寄存器设置2.ADC控制寄存器ADC_CONTRADC_CONTR寄存器的格式如下:ADC_CONRTR:ADC控制寄存器表3.4 ADC控制寄存器对ADC_CONTR寄存器进行操作,建议直接用MOV赋值语句,不要用“与”和“或”语句。
ADC_POWER:ADC电源控制位。
0:关闭A/D转换电源;1:打开A/D转换电源;建议进入控模式前,将ADC电源关闭,即ADC_POWER=0.启动A/D转换前一定要确认A/D电源已打开,A/D转换结束后关闭A/D电源可决定功耗,也可以不关闭。
初次打开内部A/D转换模拟电源,需适当延时,等内部模拟电源稳定后,再启动A/D转换。
建议启动A/D转换后,在A/D转换结束之前,不要改变任何I/O口的状态,有利于高精度A/D转换,若能将定时器/串行口/中断系统关闭更好。
SPEED1,SPEED0:模数转换速度控制位表3.5 模数转换速度控制位设置STC12C5A60S2系列单片机的A/D转换模块所使用的时钟时内部(或外部石英晶体)所产生的系统时钟,不使用时钟分频寄存器CLK_DIV对系统分频后所产生的供给CPU工作的时钟。
(好处:这样可以让ADC用较高频率工作,提高A/D的转换速度。
让CPU工作工作在较低频率,降低系统功耗)。
ADC_FLAG: 模数转换结束标志位,当A/D转换完成后,ADC_FLAG=1,要由软件清零。
不管是A/D转换完成后由该位申请中断,还是由软件查询该标志A/D转换是否结束,当A/D转换完成后,ADC_FLAG = 1,一定要软件清零。
ADC_START: 模数转换器(ADC)转换启动控制位,设置为“1”时,开始转换,转换结束后ADC_START = 1;CHS2/CHS1/CHS0:模拟输入通道选择表3.6模拟输入通道选择设置ADC_CONTR控制寄存器后,要加4个空操作延时后才能正确度到ADC_CONTR寄存器的值。
原因是设置ADC_CONTR控制寄存器的语句执行后,要经过4个CPU时钟的延时,其值才能够保证被设置进ADC_CONTR控制寄存器。