C8051F410的AD转换Word文件下载.docx
《C8051F410的AD转换Word文件下载.docx》由会员分享,可在线阅读,更多相关《C8051F410的AD转换Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。
压"
{0x00,0xFE,0x02,0x42,0x42,0x42,0xFA,0x42,0x42,0x42,0x02,0x00,
0x08,0x07,0x08,0x08,0x08,0x08,0x0F,0x08,0x09,0x0A,0x08,0x00},
占"
{0x00,0xC0,0x40,0x40,0x40,0x7F,0x48,0x48,0x48,0xC8,0x08,0x00,
0x00,0x0F,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x0F,0x00,0x00},
空"
{0x0C,0xA4,0x94,0x8C,0x85,0x86,0x84,0x8C,0x94,0xA4,0x0C,0x00,
0x08,0x08,0x08,0x08,0x08,0x0F,0x08,0x08,0x08,0x08,0x08,0x00},
比"
{0x00,0xFF,0x10,0x10,0x10,0x00,0xFF,0x20,0x10,0x08,0x04,0x00,0x00,0x0F,0x04,0x02,0x01,0x00,0x07,0x08,0x08,0x08,0x0E,0x00},
频"
{0x10,0xDE,0x10,0xFF,0x12,0x92,0xF9,0x0D,0xEB,0x09,0xF9,0x00,
0x09,0x08,0x04,0x02,0x01,0x00,0x09,0x04,0x03,0x04,0x09,0x00},
率"
{0x02,0x8A,0x52,0x9A,0xD6,0xB3,0xD2,0x8A,0x52,0x8A,0x02,0x00,
0x02,0x02,0x02,0x02,0x02,0x0F,0x02,0x02,0x02,0x02,0x02,0x00},
};
//ASCII码编码表
ucharcodeASCII_MA[][5]=
0x00,0x00,0x00,0x00,0x00,//sp
0x00,0x00,0x2f,0x00,0x00,//!
0x00,0x07,0x00,0x07,0x00,//"
0x14,0x7f,0x14,0x7f,0x14,//#
0x24,0x2a,0x7f,0x2a,0x12,//$
0x62,0x64,0x08,0x13,0x23,//%
0x36,0x49,0x55,0x22,0x50,//&
0x00,0x05,0x03,0x00,0x00,//'
0x00,0x1c,0x22,0x41,0x00,//(
0x00,0x41,0x22,0x1c,0x00,//)
0x14,0x08,0x3E,0x08,0x14,//*
0x08,0x08,0x3E,0x08,0x08,//+
0x00,0x00,0xA0,0x60,0x00,//,
0x08,0x08,0x08,0x08,0x08,//-
0x00,0x60,0x60,0x00,0x00,//.
0x20,0x10,0x08,0x04,0x02,///
0x3E,0x51,0x49,0x45,0x3E,//0
0x00,0x42,0x7F,0x40,0x00,//1
0x42,0x61,0x51,0x49,0x46,//2
0x21,0x41,0x45,0x4B,0x31,//3
0x18,0x14,0x12,0x7F,0x10,//4
0x27,0x45,0x45,0x45,0x39,//5
0x3C,0x4A,0x49,0x49,0x30,//6
0x01,0x71,0x09,0x05,0x03,//7
0x36,0x49,0x49,0x49,0x36,//8
0x06,0x49,0x49,0x29,0x1E,//9
0x00,0x36,0x36,0x00,0x00,//:
0x00,0x56,0x36,0x00,0x00,//;
0x08,0x14,0x22,0x41,0x00,//<
0x14,0x14,0x14,0x14,0x14,//=
0x00,0x41,0x22,0x14,0x08,//>
0x02,0x01,0x51,0x09,0x06,//?
0x32,0x49,0x59,0x51,0x3E,//@
0x7C,0x12,0x11,0x12,0x7C,//A
0x7F,0x49,0x49,0x49,0x36,//B
0x3E,0x41,0x41,0x41,0x22,//C
0x7F,0x41,0x41,0x22,0x1C,//D
0x7F,0x49,0x49,0x49,0x41,//E
0x7F,0x09,0x09,0x09,0x01,//F
0x3E,0x41,0x49,0x49,0x7A,//G
0x7F,0x08,0x08,0x08,0x7F,//H
0x00,0x41,0x7F,0x41,0x00,//I
0x20,0x40,0x41,0x3F,0x01,//J
0x7F,0x08,0x14,0x22,0x41,//K
0x7F,0x40,0x40,0x40,0x40,//L
0x7F,0x02,0x0C,0x02,0x7F,//M
0x7F,0x04,0x08,0x10,0x7F,//N
0x3E,0x41,0x41,0x41,0x3E,//O
0x7F,0x09,0x09,0x09,0x06,//P
0x3E,0x41,0x51,0x21,0x5E,//Q
0x7F,0x09,0x19,0x29,0x46,//R
0x46,0x49,0x49,0x49,0x31,//S
0x01,0x01,0x7F,0x01,0x01,//T
0x3F,0x40,0x40,0x40,0x3F,//U
0x1F,0x20,0x40,0x20,0x1F,//V
0x3F,0x40,0x38,0x40,0x3F,//W
0x63,0x14,0x08,0x14,0x63,//X
0x07,0x08,0x70,0x08,0x07,//Y
0x61,0x51,0x49,0x45,0x43,//Z
0x00,0x7F,0x41,0x41,0x00,//[
0x55,0x2A,0x55,0x2A,0x55,//55
0x00,0x41,0x41,0x7F,0x00,//]
0x04,0x02,0x01,0x02,0x04,//^
0x40,0x40,0x40,0x40,0x40,//_
0x00,0x01,0x02,0x04,0x00,//'
0x20,0x54,0x54,0x54,0x78,//a
0x7F,0x48,0x44,0x44,0x38,//b
0x38,0x44,0x44,0x44,0x20,//c
0x38,0x44,0x44,0x48,0x7F,//d
0x38,0x54,0x54,0x54,0x18,//e
0x08,0x7E,0x09,0x01,0x02,//f
0x18,0xA4,0xA4,0xA4,0x7C,//g
0x7F,0x08,0x04,0x04,0x78,//h
0x00,0x44,0x7D,0x40,0x00,//i
0x40,0x80,0x84,0x7D,0x00,//j
0x7F,0x10,0x28,0x44,0x00,//k
0x00,0x41,0x7F,0x40,0x00,//l
0x7C,0x04,0x18,0x04,0x78,//m
0x7C,0x08,0x04,0x04,0x78,//n
0x38,0x44,0x44,0x44,0x38,//o
0xFC,0x24,0x24,0x24,0x18,//p
0x18,0x24,0x24,0x18,0xFC,//q
0x7C,0x08,0x04,0x04,0x08,//r
0x48,0x54,0x54,0x54,0x20,//s
0x04,0x3F,0x44,0x40,0x20,//t
0x3C,0x40,0x40,0x20,0x7C,//u
0x1C,0x20,0x40,0x20,0x1C,//v
0x3C,0x40,0x30,0x40,0x3C,//w
0x44,0x28,0x10,0x28,0x44,//x
0x1C,0xA0,0xA0,0xA0,0x7C,//y
0x44,0x64,0x54,0x4C,0x44,//z
0x00,0x08,0x36,0x41,0x00,//{
0x00,0x00,0x7F,0x00,0x00,//|
0x00,0x41,0x36,0x08,0x00,//}
0x08,0x10,0x08,0x04,0x08//~
//*****************************************************************
voiddelay(ucharx)
{
while(--x)
{
uinti;
for(i=0;
i<
115;
i++);
//1ms延时
}
}
voidwrite_byte(uchardat)
{//3310写字节
chari;
for(i=0;
8;
i++)
if(dat&
0x80)
SDIN=1;
else
SDIN=0;
SCLK=0;
dat<
<
=1;
SCLK=1;
}
}
voidset_xy(ucharX,ucharY)//3310设置坐标
DC=0;
write_byte(0x80|X);
write_byte(0x40|Y);
DC=1;
voidclear_screen()//3310清屏
uinti;
i<
504;
i++)
write_byte(0);
set_xy(0,0);
voidwrite_char(ucharx)//3310写字符
uchari;
x-=32;
5;
write_byte(ASCII_MA[x][i]);
//从ACSII码表中读取字节,然后写入液晶
voidwrite_english_string(ucharX,ucharY,char*s)//3310写字符串
set_xy(X,Y);
//光标定位
while(*s)
write_char(*s);
write_byte(0);
//字符间距
s++;
voidwrite_chinese(ucharx,uchary,uchar*hz)//3310写汉字
{
uchark,i;
for(k=0;
k<
sizeof(GB_12)/sizeof(GB_12[0]);
k++)//查找汉字编码表中的汉字
if(hz[0]==GB_12[k].Index[0]&
&
hz[1]==GB_12[k].Index[1])
break;
set_xy(x,y);
for(i=0;
12;
i++)//先写上半字节
write_byte(GB_12[k].Msk[i]);
set_xy(x,y+1);
//光标定位下一行
i++)//后写下半字节
write_byte(GB_12[k].Under[i]);
voidwrite_chinese_string(ucharx,uchary,uchar*string)//3310写汉字串
uchari=0,k=0;
while(string[i])
write_chinese(x,y,&
string[i]);
x=x+12;
i=i+2;
/*voiddisplay(ucharx,uchary,longuintnum)//数据处理
uchardis[6];
dis[0]=num/100000;
dis[1]=num/10000%10;
dis[2]=num/1000%10;
dis[3]=num/100%10;
dis[4]=num/10%10;
dis[5]=num%10;
write_char(HC[dis[0]]);
write_char(HC[dis[1]]);
write_char(HC[dis[2]]);
delay
(1);
write_char(HC[dis[3]]);
write_char('
.'
);
write_char(HC[dis[4]]);
write_char(HC[dis[5]]);
H'
);
z'
}*/
voidInit_5110()//3310初始化
RST=0;
//产生一个让LCD复位的低电平脉冲
RST=1;
DC=0;
//命令
write_byte(0x21);
//使用扩展命令设置LCD模式
write_byte(0xc8);
//设置偏置电压
write_byte(0x06);
//温度校正
write_byte(0x11);
//1:
48
write_byte(0x20);
//使用基本命令
write_byte(0x0c);
//设定显示模式,正常显示
//数据
clear_screen();
//清屏
voiddisplay1()
write_chinese_string(0,0,"
电压:
write_chinese_string(0,2,"
频率:
write_chinese_string(0,4,"
占空比:
voiddisplay2(ucharx,uchary,uintnum)
uchardis[4];
dis[0]=num/1000;
dis[1]=num/100%10;
dis[2]=num/10%10;
dis[3]=num%10;
V'
voidInit_410()
OSCICN=0x87;
//时钟不分频
P0MDOUT=0x7e;
P0MDIN=0x7F;
//选择AD输入端P0^7
P0SKIP=0x80;
P1MDOUT=0xff;
//
//P2MDOUT=0xff;
P1MDIN=0xfB;
//P1^2被交叉开关跳过
P1SKIP=0x04;
//P1^2被配置为模拟输入基准电压选择短
//P1SKIP=0x02;
//
XBR0=0x00;
XBR1=0x41;
//交叉开关使能
PCA0MD&
=~0x40;
//关闭看门狗
PCA0MD=0x00;
//*********************************
voidInit_ADC0()
ADC0MX=0x07;
//选择P0^7作为输入
ADC0CN=0x80;
//AD使能每向AD0BUSY写1时启动ADC0转换右对齐
ADC0TK=0xff;
//ACD0配置为前跟踪方式
ADC0CF=0xf8;
///转换时钟重复一次
REF0CN=0x13;
//基准电压为2.2V
floatADC0()
ucharx,y;
floatz;
AD0BUSY=1;
//写1方式使能AD
while(!
AD0INT);
//等待
x=ADC0H&
0x0F;
//读取ADC0高四位
y=ADC0L;
//读取低八位
z=(x*256+y)*0.053711;
returnz;
//****************************初始化部分********************************
//************************main部分*******************************
voidmain()
Init_410();
Init_ADC0();
Init_5110();
display1();
while
(1)
z=ADC0();
display2(30,0,z);
delay(20000);
//**************