100 likes | 260 Views
任务 6. 6-2 、 5V 数字电压表设计. 任务内容. 1 、 5V 数字电压表设计分析 2 、项目硬件电路设计 3 、项目软件设计 4 、功能验证、仿真. 1 、 5V 数字电压表设计分析. 功能: 数字电压表的功能是将连续的模拟电压信号经过 A/D 转换器转换成二进制数值,再由单片机软件编程转换成十进制数值显示。 。. ATmega16 单片机. 模拟电压. LCD 显示. 按键控制. 据设计要求,选用性价比较高的 ATmega16 单片机和 1602 液晶显示实现. 本实例共有 3 个功能模块,分别描述如下:
E N D
任务6 6-2、5V数字电压表设计
任务内容 1、5V数字电压表设计分析 2、项目硬件电路设计 3、项目软件设计 4 、功能验证、仿真
1、 5V数字电压表设计分析 功能:数字电压表的功能是将连续的模拟电压信号经过A/D转换器转换成二进制数值,再由单片机软件编程转换成十进制数值显示。 。
ATmega16单片机 模拟电压 LCD显示 按键控制 据设计要求,选用性价比较高的ATmega16单片机和1602液晶显示实现 本实例共有3个功能模块,分别描述如下: ● 单片机系统:使用内部ADC转换功能 ● 外围电路:电压测量数值LCD显示电路。 ● 软件程序:熟悉掌握ATmega16单片机的ADC将模拟电压转换程序的编写。
2、项目硬件电路设计 ATmega16单片机、1602字符点阵液晶显示。仿真电路如下,用电位器RV1模拟产生一个变化的输入电压,这个电压也可以其他可变电源代替,这里电压不能高于单片机工作电压,考虑到试验操作中的意外干扰信号,AREF端通过一个0.1UF的电容连接到AVCC,AVCC为参考电压;输出电压由1602液晶显示模块显示
3、项目软件设计 (1)AD初始化设计 void ATmega16_ADC_Init(void) { ADCSRA=0x00; //关闭ADC ADMUX=0x41; //选择参考电压为AVCC、数据右对齐、通道1 ACSR=0x80; //关闭模拟比较器的电源 ADCSRA=0x87; //使能ADC、单次转换、ADC转换中断禁止、128分频 }
(2)AD转换结果处理 unsigned int ATmega16_ADC_Convert(void) { unsigned int adc_value; ATmega16_AD_Start; //启动AD转换 while(!(ADCSR&(1<<ADIF))); //等待AD转换结束 adc_value=(unsigned int)ADCL; //读取低8位 adc_value|=((unsigned int)(ADCH&0x03))<<8; //读取高2位 NOP(); return adc_value; }
(3)、数据处理 temp_float=ATmega16_ADC_Convert()*0.0048875855327468230694037145650049; temp_int=(unsigned int)(temp_float*100); if(temp_int>9999) temp_int=9999; temp_char[0]=temp_int/1000; temp_char[1]=(temp_int%1000)/100; temp_char[2]=((temp_int%1000)%100)/10; temp_char[3]=((temp_int%1000)%100)%10;