欢迎来到天天文库
浏览记录
ID:30060299
大小:76.54 KB
页数:4页
时间:2018-12-26
《c8051f040_内部温度传感器c程序》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、附录一://内部温度传感器调试程序////利用过采样实现16位精度////ADC0_TEMP_PRO.c#include#defineADC0STARTtemppage=SFRPAGE;SFRPAGE=0x00;AD0BUSY=1;SFRPAGE=temppage#defineSTACK_LEN128//采样128次,再将128个数据总和除以8//处理后的数据相当于16个原始数据之和,在数值表现形式上为16bittypedefunsignedintuint;typedefunsignedcharuchar;typedefu
2、nsignedlongulong;sfr16RCAP2=0xca;sfr16RCAP3=0xca;sfr16RCAP4=0xca;sfr16TMR4=0xcc;sfr16TMR3=0xcc;sfr16TMR2=0xcc;sfr16PCA0CP0=0xfb;sfr16PCA0CP1=0xfd;sfr16PCA0CP2=0xe9;sfr16PCA0CP3=0xeb;sfr16PCA0CP4=0xed;sfr16PCA0CP5=0xe1;sfr16ADC0VAL=0xbe;sfr16ADC0GT=0xc4;sfr16ADC0LT=0xc6;ucharte
3、mppage;bitisnewdata;uintkk;floattemp;ucharstack_index;ulongtotal;xdatafloatt[20];//存放温度检测数据,为20个数据xdatauintmystack[STACK_LEN];//过采样数据数组voidadc0_mux(uchartype,ucharsource);voidadc0_source(ucharsource);voidp3anolog_ini(ucharport);voidHVDA_ini(uchargaind);voidadc0_ini();voiddelay
4、1ms(uinttime);voidconfig();voidadc0_mux(uchartype,ucharsource){//type配置测量方式为差动还是单端输入//source为ADC0通道选择(共有9个通道)SFRPAGE=0x00;AMX0CF=type;AMX0SL=source;}voidadc0_source(ucharsource){//ADC0通道选择,为adc0_mux()的简化函数SFRPAGE=0x00;AMX0SL=source;}voidp3anolog_ini(ucharport){//配置p3口模拟输入管脚SFR
5、PAGE=0x00;AMX0PRT=port;SFRPAGE=0x0f;P3MDIN&=~port;//将相应管脚配置成模拟输入口}voidHVDA_ini(uchargaind){//高压差动放大器配置SFRPAGE=0x00;HVA0CN=gaind;}voidadc0_ini(){SFRPAGE=0x00;ADC0CF=0x80;//ADC0时钟为系统时钟17分频,PGA增益为1ADC0CN=0x80;/*AD0EN=1,ADC0模块使能AD0TM=0,ADC0为连续跟踪模式AD0CM1:AD0CM0=00b,为AD0BUSY启动方式AD0L
6、JST=0,数据存储格式右对齐,即ADC0H存放12bit高四位*/REF0CN&=0x0f;//AD0VRS=0,ADC0参考电压为VREFAREF0CN
7、=0x07;//TEMPE=1,内部温度传感器工作/*BIASE=1,偏移产生器工作REFBE=1,内部参考电平工作,电路部分须将VREF参考输出(C8051F40的第12管脚)与VREF0(C8051F040的16管脚相连,并最好并联一个4.7uF和0.1uF的旁路电容以电平滤波*/adc0_source(9);//选择第9通道,即选择温度信号为AD转换EIE2
8、=0x02;//开ADC0中
9、断}voiddelay1ms(uinttime){//延迟1msuinti;uintj;for(i=0;i10、alueXBR2=0x40;//crossbar使能与否并不影响此程序运行XBR3=0x00;//XBAR3:Initia
10、alueXBR2=0x40;//crossbar使能与否并不影响此程序运行XBR3=0x00;//XBAR3:Initia
此文档下载收益归作者所有