实现的功能:实时测量交流电的电流和电压值,显示在数码管和虚拟终端上。
#include
#include
#define uchar unsigned char
#define uint unsigned int
/******六位七段共阴极数码显示管*******/
uchar code dispbitcode[] = { 0xdf, 0xef, 0xf7, 0xfb, 0xfd, 0xfe };
uchar code dispcode[] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x00, 0x76, 0x38 };
uchar dispbuf[8] = { 0, 0, 0, 0, 0, 0, 0, 0 };
void caiji();
void uart();
uint temp, temp1, temp2;
float getdata1, getdata2, max1, max2;
uint w; /* 电压值,电流值切换显示所需变量 */
uchar num = 0;
sbit dula = P2 ^ 0;
sbit wela = P2 ^ 1;
sbit vi = P2 ^ 2;
sbit xuan = P2 ^ 3;
sbit ST = P3 ^ 6;
sbit OE = P3 ^ 7;
sbit EOC = P3 ^ 4;
sbit clock = P3 ^ 2;
/******主函数********/
void main()
{
xuan = 0;
max1 = 0;
max2 = 0;
w = 0;
SCON = 0x80; /* 串行口初始化为方式2 */
PCON = 0x00;
EA = 1;
ES = 1;
ET0 = 1;
ET1 = 1;
TMOD = 0x11;
TH0 = (65535 - 10) / 256; /* adc0809时钟 */
TL0 = (65535 - 10) % 256;
TH1 = (65535 - 10000) / 256; /* 定时中断扫描时间 */
TL1 = (65535 - 10000) % 256;
TR0 = 1;
TR1 = 1;
while ( 1 )
{
caiji();
uart();
}
}
/********电压,电流传感器的数据采集*******/
void caiji()
{
uchar i, j;
/*电压传感器数据采集*/
for ( j = 0; j < 10; j++ )