先给大家讲点电压表、电容表程序中的稍微有点内涵的部分,让初学者明明白白,别搞成雾里看花就行
电压表Main中有如下几行
uiCH0_Value = ADConvert(0);
sprintf(ucResultString,"Ch0 = %drn",uiCH0_Value);
printf(ucResultString);
上面3行的功能就是将从AD转换芯片读取到的16进制送串口,通过电脑上的串口调试助手看十进值的电压值,通过电脑的串口检查十进值数据可以判断单片机与AD是否通讯正常,转换的结果是否正确,在没有仿真环境的系统中,将看不到却又非常想看的变量值发送到PC串口显示是很实用的调试手段。sprintf这个函数通吃所有类型的变量值转换成字符串,然后在电脑上看字符串就一目了然了。
ulCH0_Voltage = (uiCH0_Value * 5000l)/255; //求当前电压值,单位mV
uiCH0Integer = ulCH0_Voltage / 1000;
ulCH0Dim = ulCH0_Voltage % 1000;
sprintf(ucResultString,"V= %d.%ldV",uiCH0Integer,ulCH0Dim);
LCDLine1(ucResultString,0,0);
上面几行的功能是将程序内部的电压值(0-255)变换成0-5V的显示内容,比如显示出2.5V,1.8V,让当前电压采样值还原成大家习惯的明了的数据。因为uiCH0_Value的值为0-255,现在要将它变换0-5000之间的数,就是一个比例变换的问题,先乘5000,再除255就OK了。注意要在5000后面加个”L“字符哟,因为结果是长整数,不加时是两个短整型相乘,会出错的,加了字符”L“后,就变成1个短整形和1个长整形相乘了,就不会出现数据自动转换出错的现象了。
再来说说电容表吧,电容表是用1个555集成电路构成的多谐振荡器,充电和放电电容就是被测电容,电容越大,振荡频率就越低。设计时将电路分成了独立的两部分,555芯片完成电容测量转频率输出的功能后,此输出波形可以先供助专用的频率计(高级万用表有频率测量功能)来验证电路是否存在问题,然后再把这个已知频率的信号接入到单片机的测量引脚,测试出1S有多少个脉冲,就能反推出电容容值了。
呵呵,有人会问这个555振荡电路的输出信号频率是是怎么算的?查查《数字电路基础》的教课书吧,上面有介绍的。下面有个图,经常找不到书的电工就继续往下看图吧!