一.硬件方案
本设计基于STC89C52单片机的一种电压测量电路,该电路采用ADC0832A/D转换芯片,实现数字电压表的硬件电路与软件设计。该系统的数字电压表电路简单, 可以测量0~9V的电压值,并在四位LED数码管上显示电压值。
二.设计功能
(1)ADC0832模数转换,0-9V电压测量;
(2)4位数码管显示测量电压值;
(3)10K可调电阻模拟电压测试;
(4)当提供电源电源为精准的5V电源时,精度为正负0.02V;
三.设计原理图
(1)原理图主要采用AD软件进行设计,如图:
(2)Protues仿真图如下:
四.软件设计
主程序源码
/*****************主函数********************/
void main()
{static uchar i,j;uint temp;while(1){display(); //数码管显示函数if(i % 3 == 0) //循环10次{ pingjun_zhi(p1); //把数从小到大排序p1[j++] = ad0832read(1,0); //循环255个周期读取一次0832,因CPU运行比较快,没必要每次循环都去读取,选择通过CH0输入 if(j >= 9){j = 0;temp = p1[3] ; //取个中间值 temp = temp * 100 / 255 * 4.5 * 2;dis_smg[2]=smg_du[temp/100%10] & 0xdf; //得到百位 dis_smg[1]=smg_du[temp/10%10]; //十位dis_smg[0]=smg_du[temp%10]; //个位 ADC0832为8位ADC,数值为0~255,我们将其分开放入l_tmpdate数组中显示}}i++;}
}/************ 排序***************/
void pingjun_zhi(uint *p)
{static uint value;static uchar i,j;for(j=1;j<9;j++) //先对整个数组的9个值进行从小到大的排列for(i=0;i<9 - j;i++){if(p[i] > p[i+1]){value = p[i];p[i] = p[i+1];p[i+1] = value; } }
}
链接:https://pan.baidu.com/s/1C4gM1O25vXmcElER6dSEhw?pwd=ou47