- 12位ADC模拟量输入配设置
- void ADC0_Init (void) //
- {
- char SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
- SFRPAGE = ADC0_PAGE;
- ADC0CN = 0x80; // ADC0 enabled; normal tracking 1000 0000 ADC0使能
- // mode; ADC0 conversions are initiated
- // when writing 1 to ad0busy flag; ADC0 data is
- // right-justified
- REF0CN = 0x03; // Enable on-chip VREF, 0011 电压基准寄存器 基准电压选择 内部基准电压到VREF引脚
- // and VREF output buffer
- AMX0CF = 0x00; // ALL inputs are single-ended (default) 信号采集单端输入 AMX0CF: AMUX0 配置寄存器
- AMX0SL = 0x06; // 选择P3偶数引脚
- AMX0PRT = 0x01; // 选择P3.0作为初始模拟输入
- ADC0CF = 0x98; // ADC conversion clock = 1.10592MHz, Gain=1 1001 1000 20分频 conversion转换 PGA放大增益为1 转换的时钟周期
- SFRPAGE = SFRPAGE_SAVE; // Restore SFR page
- }
- 模拟量采集
- SFRPAGE = SFRPAGE_SAVE;
- num++; //扫描6次,使用6个数码管
- count++;
- if(num==6)
- num=0;
- if(count == 5)
- {
- count = 0;
- SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page
- SFRPAGE = ADC0_PAGE;
- AMX0SL = 0x06; // 选择P3偶数引脚 0110 AMX0AD3-0 都配置为单端输入
- AMX0PRT = 0x01; // 选择P3.0作为初始模拟输入 0001
- for(t = 0;t<8;t++) // 第一路循环采样
- {
- AD0INT = 0;
- AD0BUSY = 1;//写1采样一次
- while(!AD0INT);
- accumulator += ADC0;
- for(s = 0; s<6;s++) //延时6个周期
- {
- ;
- }
- }
- real0 = (int)((accumulator >> 3)); //20190814
- PID1_OUT();
- accumulator = 0;
- AMX0SL = 0x06; // 选择P3偶数引脚 0110
- AMX0PRT = 0x04;
- 负压数据
- temp = (int)((1-real0/4096.0)*690); //20190426
- StrTab[0]=led_code[18]; //显示P
- StrTab[1]=led_code[0]; //显示0
- StrTab[2]=0xBF; //显示"-" 20190426
- StrTab[3]=led_code[temp/100] & 0X7F; //显示负压整数部分并且显示小数点
- StrTab[4]=led_code[(temp%100)/10];
- StrTab[5]=led_code[temp%10];
- break;
复制代码
【必读】版权免责声明
1、本主题所有言论和内容纯属会员个人意见,与本论坛立场无关。2、本站对所发内容真实性、客观性、可用性不做任何保证也不负任何责任,网友之间仅出于学习目的进行交流。3、对提供的数字内容不拥有任何权利,其版权归原著者拥有。请勿将该数字内容进行商业交易、转载等行为,该内容只为学习所提供,使用后发生的一切问题与本站无关。 4、本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。 5、本网站所有软件和资料均为网友推荐收集整理而来,仅供学习用途使用,请务必下载后两小时内删除,禁止商用。6、如有侵犯你版权的,请及时联系我们(电子邮箱1370723259@qq.com)指出,本站将立即改正。
|