- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
附录一:
//内部温度传感器调试程序//
//利用过采样实现16位精度//
//ADC0_TEMP_PRO.c
#include C8051F040.h
#define ADC0START temppage=SFRPAGE;SFRPAGE=0x00;AD0BUSY=1;SFRPAGE=temppage
#define STACK_LEN 128
//采样128次,再将128个数据总和除以8
//处理后的数据相当于16个原始数据之和,在数值表现形式上为16bit
typedef unsigned int uint;
typedef unsigned char uchar;
typedef unsigned long ulong;
sfr16 RCAP2=0xca;
sfr16 RCAP3=0xca;
sfr16 RCAP4=0xca;
sfr16 TMR4=0xcc;
sfr16 TMR3=0xcc;
sfr16 TMR2=0xcc;
sfr16 PCA0CP0=0xfb;
sfr16 PCA0CP1=0xfd;
sfr16 PCA0CP2=0xe9;
sfr16 PCA0CP3=0xeb;
sfr16 PCA0CP4=0xed;
sfr16 PCA0CP5=0xe1;
sfr16 ADC0VAL=0xbe;
sfr16 ADC0GT=0xc4;
sfr16 ADC0LT=0xc6;
uchar temppage;
bit isnewdata;
uint kk;
float temp;
uchar stack_index;
ulong total;
xdata float t[20];//存放温度检测数据,为20个数据
xdata uint mystack[STACK_LEN];//过采样数据数组
void adc0_mux(uchar type,uchar source);
void adc0_source(uchar source);
void p3anolog_ini(uchar port);
void HVDA_ini(uchar gaind);
void adc0_ini();
void delay1ms(uint time);
void config();
void adc0_mux(uchar type,uchar source){//type 配置测量方式为差动还是单端输入
//source 为ADC0通道选择(共有9个通道)
SFRPAGE=0x00;
AMX0CF=type;
AMX0SL=source;
}
void adc0_source(uchar source){//ADC0通道选择,为adc0_mux()的简化函数
SFRPAGE=0x00;
AMX0SL=source;
}
void p3anolog_ini(uchar port){//配置p3口模拟输入管脚
SFRPAGE=0x00;
AMX0PRT=port;
SFRPAGE=0x0f;
P3MDIN=~port;//将相应管脚配置成模拟输入口
}
void HVDA_ini(uchar gaind){//高压差动放大器配置
SFRPAGE=0x00;
HVA0CN=gaind;
}
void adc0_ini(){
SFRPAGE=0x00;
ADC0CF=0x80;//ADC0时钟为系统时钟17分频,PGA增益为1
ADC0CN=0x80;
/*AD0EN=1,ADC0模块使能
AD0TM=0,ADC0为连续跟踪模式
AD0CM1:AD0CM0=00b,为AD0BUSY启动方式
AD0LJST=0,数据存储格式右对齐,即ADC0H存放12bit高四位*/
REF0CN=0x0f;//AD0VRS=0,ADC0参考电压为VREFA
REF0CN|=0x07;//TEMPE=1,内部温度传感器工作
/*BIASE=1,偏移产生器工作
REFBE=1,内部参考电平工作,电路部分须将VREF参考输出(C8051F40的第12管脚)与VREF0(C8051F040的16管脚相连,并最好并联一个4.7uF和0.1uF的旁路电容以电平滤波*/
adc0_source(9);//选择第9通道,即选择温度信号为AD转换
EIE2 |= 0x02; //开ADC0中断
}
void delay1ms(uint time){//延迟1ms
uint i;
uint j;
for (i=0;itime;i++){
for(j=0;j300;j++);
}
}
void config(){//crossbar 使能,但并没有进行外围设备配置
WDTCN = 0x07; // Watchd
文档评论(0)