C8051F040 内部温度传感器C程序.doc_第1页
C8051F040 内部温度传感器C程序.doc_第2页
C8051F040 内部温度传感器C程序.doc_第3页
C8051F040 内部温度传感器C程序.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

附录一:/内部温度传感器调试程序/利用过采样实现16位精度/ADC0_TEMP_PRO.c#include #define ADC0START temppage=SFRPAGE;SFRPAGE=0x00;AD0BUSY=1;SFRPAGE=temppage#define STACK_LEN 128/采样128次,再将128个数据总和除以8/处理后的数据相当于16个原始数据之和,在数值表现形式上为16bittypedef 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 t20;/存放温度检测数据,为20个数据xdata uint mystackSTACK_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增益为1ADC0CN=0x80;/*AD0EN=1,ADC0模块使能AD0TM=0,ADC0为连续跟踪模式AD0CM1:AD0CM0=00b,为AD0BUSY启动方式AD0LJST=0,数据存储格式右对齐,即ADC0H存放12bit高四位*/REF0CN&=0x0f;/AD0VRS=0,ADC0参考电压为VREFAREF0CN|=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)/延迟1msuint i;uint j;for (i=0;itime;i+)for(j=0;j300;j+);void config()/crossbar 使能,但并没有进行外围设备配置WDTCN = 0x07;/ Watchdog Timer Control Register WDTCN = 0xDE; / Disable WDT WDTCN = 0xAD;SFRPAGE = 0x0F;XBR0 = 0x00;/ XBAR0: Initial Reset ValueXBR1 = 0x00;/ XBAR1: Initial Reset ValueXBR2 = 0x40;/ crossbar使能与否并不影响此程序运行 XBR3 = 0x00; / XBAR3: Initial Reset Value SFRPAGE = 0x0F; P0MDOUT = 0x00; / Output configuration for P0 P1MDOUT = 0x00; / Output configuration for P1 P2MDOUT = 0x00; / Output configuration for P2 P3MDOUT = 0x00; / Output configuration for P3 P4MDOUT = 0x00; / Output configuration for P4P5MDOUT = 0x00; / Output configuration for P5P6MDOUT = 0x00; / Output configuration for P6P7MDOUT = 0x00; / Output configuration for P7 P1MDIN = 0xFF; / Input configuration for P1P2MDIN = 0xFF; / Input configuration for P2P3MDIN = 0xFF; / Input configuration for P3SFRPAGE = 0x0F; CLKSEL = 0x00; / Oscillator Clock SelectorOSCXCN = 0x00;/ EXTERNAL Oscillator Control RegisterOSCICN = 0x84;/ Internal Oscillator Control Registervoid main()char i;config();adc0_ini();/ADC0初始化ADC0START;/ADC0启动EA=1;i=0;stack_index=0;while(1)if(isnewdata)/由该位查询ADC0转化值是否更新if(stack_index=STACK_LEN)for(i=0,total=0;i19)i=0;/在此设断点,观察程序运行结果delay1ms(100);ADC0START;void ADC0_ISR() interrupt 15/ADC0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论