基于单片机数字电压表仿真设计资料
1489下载地址 https://docs.qq.com/doc/DWEpnR2pOWU91b3p4?pub=1&dver=2.1.0
前言:
数字电压表简称DVM,数字电压表基本原理是将输入的模拟电压信号转化为数字信号,再进行输出显示。而A/D转换器的作用是将连续变化的模拟信号量转化为离散的数字信号,器基本结构是由采样保持,量化,编码等几部分组成。因此AD转换是此次设计的核心元件。输入的模拟量经过AD转换器转换,再由驱动器驱动显示器输出,便得到测量的数字电压。
本次设计的作品要求制作数字电压表的量程为0到5v,由于用到的模数转换芯片是ADC0809,设计系统给的供电电压为+5v。同时设计的精度为小数点后两位,满足要求的两位小数的精度,在不考虑AD芯片的量化误差的前提下,此次设计的精度能够满足一般测量的要求。
基本功能:
利用51单片机作为主控芯片,模拟量输入范围直流0v-5v。模拟量经A/D(ADC0809)模数转换芯片,把模拟量转换为数字量输入到单片机的P0口,再由单片机控制LCD1602液晶显示模拟量输入的电压值。
#include"includes.h" #define TIME0H 0x3C #define TIME0L 0xB0 uchar uc_Clock=0; //定时器0中断计数 bit b_DATransform=0; //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<把电压显示在LCD上>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> void vShowVoltage(uint uiNumber) { uchar ucaNumber[3],ucCount; if(uiNumber>999) uiNumber=999; ucaNumber[0]=uiNumber/100; //把计算数字的每个位存入数组。 ucaNumber[1]=(uiNumber-100*(int)ucaNumber[0])/10; ucaNumber[2]=uiNumber-100*(int)ucaNumber[0]-10*ucaNumber[1]; for(ucCount=0;ucCount<3;ucCount++) { vShowOneChar(ucaNumber[ucCount]+48); //从首位到末位逐一输出。 if(ucCount==0) vShowOneChar('.'); } } //************************************************************************************************* //* * //* ********************************主函数****************************** * //* * //************************************************************************************************* void main() { TMOD=0x01; //定时器0,模式1。 TH0=TIME0H; TL0=TIME0L; TR0=1; //启动定时器。 ET0=1; //开定时器中断。 EA=1; //开总中断 vdInitialize(); vWriteCMD(0x84); //写入显示起始地址(第一行第4个位置)