第11章交流电压测量
11.3.2程序清单
该程序已在模板上调试通过,可作读者的参考。有关显示部分请读者参考本书相关章节,有关A/D转换的详细设置请参考前面章节。
#include <pic.h>
#include <math.h>
#include <stdio.h>
//该程序用于测电网的交流电压有效值,最后的结果将在4个LED上显示,保留
//1位小数。
//为了保证调试时数据运算的精确性,需要将PICC的double型数据选成32位
unionadres
{
inty1;
unsigned char adre[2];
}adresult; //定义一个共用体
bank3intre[40];//定义存放A/D转换结果的数组,在bank3中
unsigned char k,data;//定义几个通用寄存器
double squ ,squad;//平方寄存器和平方和寄存器,squ又通用为存储其
//它数值
intuo;
bank1unsignedchars[4]; //此数组用于存储需要显示的字符的ASII码
const chartable[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90};
//不带小数点的显示段码表
const chartable0[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//带小数点的显示段码表
//A/D转换初始化子程序
voidadinitial()
{
ADCON0=0x41;//选择A/D通道为RA0,且打开A/D转换器
//在工作状态,使A/D转换时钟为8Tosc
ADCON1=0X8E; //转换结果右移,及ADRESH寄存器的高6位为"0"
//把RA0口设置为模拟量输入方式
ADIE=1;&