C8051F040内部温度传感器C程序.docVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
附录一: //内部温度传感器调试程序// //利用过采样实现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)

ktj823 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档