C8051F410的AD转换.docx
- 文档编号:3662676
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:13
- 大小:17.78KB
C8051F410的AD转换.docx
《C8051F410的AD转换.docx》由会员分享,可在线阅读,更多相关《C8051F410的AD转换.docx(13页珍藏版)》请在冰豆网上搜索。
C8051F410的AD转换
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitRST=P0^2;//3310//外部复位输入端
sbitDC=P0^3;//数据命令
sbitSDIN=P0^4;//串行数据输入端
sbitSCLK=P0^5;//串行时钟输入端
//***********************************ADC部分***********************
//***********************************LCD部分******************************
typedefstruct/*12*12汉字字模显示数据结构,一个汉字分为上下两层*/
{
charIndex[2];//一个汉字占两个字节
charMsk[12];//一个汉字的编码由24个十六进制数组成
charUnder[12];
}HZ_GB12;
ucharcodeHC[]={"0123456789"};
HZ_GB12codeGB_12[]={
":
",{0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x03,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*":
",0*/
"电",{0xFC,0x24,0x24,0x24,0xFF,0x24,0x24,0x24,0xFC,0x00,0x00,0x00,
0x03,0x01,0x01,0x01,0x07,0x09,0x09,0x09,0x09,0x08,0x0E,0x00},
"压",{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;i<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;
for(i=0;i<504;i++)
write_byte(0);
set_xy(0,0);
}
//*****************************************************************
voidwrite_char(ucharx)//3310写字符
{
uchari;
x-=32;
for(i=0;i<5;i++)
{
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 { if(hz[0]==GB_12[k].Index[0]&&hz[1]==GB_12[k].Index[1]) break; } set_xy(x,y);//光标定位 for(i=0;i<12;i++)//先写上半字节 write_byte(GB_12[k].Msk[i]); set_xy(x,y+1);//光标定位下一行 for(i=0;i<12;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; set_xy(x,y); write_char(HC[dis[0]]); write_byte(0); write_char(HC[dis[1]]); write_byte(0); write_char(HC[dis[2]]); write_byte(0); delay (1); write_char(HC[dis[3]]); write_byte(0); delay (1); write_char('.'); write_byte(0); delay (1); write_char(HC[dis[4]]); write_byte(0); delay (1); write_char(HC[dis[5]]); write_byte(0); delay (1); write_char('H'); write_byte(0); write_char('z'); write_byte(0); }*/ //***************************************************************** voidInit_5110()//3310初始化 { RST=0;//产生一个让LCD复位的低电平脉冲 delay (1); RST=1; delay (1); DC=0;//命令 write_byte(0x21);//使用扩展命令设置LCD模式 write_byte(0xc8);//设置偏置电压 write_byte(0x06);//温度校正 write_byte(0x11);//1: 48 write_byte(0x20);//使用基本命令 write_byte(0x0c);//设定显示模式,正常显示 DC=1;//数据 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; set_xy(x,y); write_char(HC[dis[0]]); write_byte(0); write_char(HC[dis[1]]); write_byte(0); write_char('.'); write_byte(0); write_char(HC[dis[2]]); write_byte(0); delay (1); write_char(HC[dis[3]]); write_byte(0); delay (1); write_char('V'); write_byte(0); } 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() { floatz; Init_410(); Init_ADC0(); Init_5110(); clear_screen(); display1(); while (1) { z=ADC0(); display2(30,0,z); delay(20000); } } //**************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C8051F410 AD 转换