1 / 10

6-2 、 5V 数字电压表设计

任务 6. 6-2 、 5V 数字电压表设计. 任务内容. 1 、 5V 数字电压表设计分析 2 、项目硬件电路设计 3 、项目软件设计 4 、功能验证、仿真. 1 、 5V 数字电压表设计分析. 功能: 数字电压表的功能是将连续的模拟电压信号经过 A/D 转换器转换成二进制数值,再由单片机软件编程转换成十进制数值显示。 。. ATmega16 单片机. 模拟电压. LCD 显示. 按键控制. 据设计要求,选用性价比较高的 ATmega16 单片机和 1602 液晶显示实现. 本实例共有 3 个功能模块,分别描述如下:

Download Presentation

6-2 、 5V 数字电压表设计

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 任务6 6-2、5V数字电压表设计

  2. 任务内容 1、5V数字电压表设计分析 2、项目硬件电路设计 3、项目软件设计 4 、功能验证、仿真

  3. 1、 5V数字电压表设计分析 功能:数字电压表的功能是将连续的模拟电压信号经过A/D转换器转换成二进制数值,再由单片机软件编程转换成十进制数值显示。 。

  4. ATmega16单片机 模拟电压 LCD显示 按键控制 据设计要求,选用性价比较高的ATmega16单片机和1602液晶显示实现 本实例共有3个功能模块,分别描述如下: ● 单片机系统:使用内部ADC转换功能 ● 外围电路:电压测量数值LCD显示电路。 ● 软件程序:熟悉掌握ATmega16单片机的ADC将模拟电压转换程序的编写。

  5. 2、项目硬件电路设计 ATmega16单片机、1602字符点阵液晶显示。仿真电路如下,用电位器RV1模拟产生一个变化的输入电压,这个电压也可以其他可变电源代替,这里电压不能高于单片机工作电压,考虑到试验操作中的意外干扰信号,AREF端通过一个0.1UF的电容连接到AVCC,AVCC为参考电压;输出电压由1602液晶显示模块显示

  6. 3、项目软件设计 (1)AD初始化设计 void ATmega16_ADC_Init(void) { ADCSRA=0x00; //关闭ADC ADMUX=0x41; //选择参考电压为AVCC、数据右对齐、通道1 ACSR=0x80; //关闭模拟比较器的电源 ADCSRA=0x87; //使能ADC、单次转换、ADC转换中断禁止、128分频 }

  7. (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; }

  8. (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;

  9. 4 、功能验证、仿真

More Related