资源预览内容
第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
亲,该文档总共8页全部预览完了,如果喜欢就下载吧!
资源描述
预习报告实验目的:1、熟练 ATmega16 内部的 ADC 特点;2、了解 ATmega16内部的 ADC 在数据采集中的相关操作和寄存器说明;3、熟练的应用 ATmega16 内部的 ADC 转换器主要实验仪器:1、计算机一台(安装有 PROTEUS 和 ICC 软件 )实验原理及主要工作:一、实验原理ATmega16 内部的 ADC 拥有很多的特点,更具这些特点可以知道本次实验的有些内容的要求。 本次试验是数据采集和显示, 用 ADC 转换器来进行数据的采集,并在 1602 的液晶显示屏上显示出数据采集的结果。要做本次实验还需了解 ATmega16 内部的 ADC 的寄存器, ADC 有以下几个寄存器:( 1)多路复用器选择寄存器 ADMUX :其中 REFS1/REFS0:参考电压源选择设置; ADLAR: ADC 转换结果 对齐选择位。( 2)ADC 数据寄存器 ADCL 及 ADCH :读取 ADCL 之后,ADC 数据寄存器一直要等到ADCH也被读出才可以进行数据更新。因此,如果转换结果为左对齐,且要求的精度不高于8 比特,那么仅需读取ADCH就足够了。否则必须先读出ADCL再读ADCH,其中MUX40:模拟通道与增益选择位。( 3)ADC 控制和状态寄存器 A ADCSRA :其中 ADEN: ADC 使能位;ADSC: ADC 转换启动位;ADATE: ADC 自动触发使能位;ADIF:ADC 中断标志; ADIE: ADC中断使能;ADPS20: ADC 预分频器选择位。( 4)特殊功能 IO 寄存器 SFIOR:其中 ADTS20: ADC 自动触发源; Res: 保留位。预习中遇到的问题及思考:1、怎样选择变阻器?实验原始数据记录:教师签字:实验报告请按以下几个部分完成实验报告。一、实验步骤二、实验原理图( proteus)三、程序流程图四、 C 程序代码全部五、调试结果截图六、实验总结及心得体会七、附件(原理图及程序压缩包)一、实验步骤1、ADC 端口初始化(设置为不带上拉电阻的输入口);2、基准电压源设置;(设置特殊功能寄存器 ADMUX 的位 REFS1、 REFS0 )3、转换结果对其方式设置: (设置特殊功能寄存器 ADMUX 的位 ADLAR )4 、输入通道选择设置: (设置特殊功能寄存器 ADMUX 的位 MUX4:0 )5、AD 使能、启动转换、中断设置:(设置特殊功能寄存器ADCSRA )6、触发源选择设置:(设置特殊功能寄存器SFIOR)二、实验原理图如下图,使用软件PROTEUS 画出原理图。因为在实际中没有AVR 的开发板,所以使用软件来模型出,来显示。当然也要了解这个软件的使用方法。因此,在下面的图形中能够显示出ADC 的数据采集与显示,所以如下图:三、程序流程图四、C 程序代码#include#include#define uint unsigned int#define uchar unsigned char#define RS_CLR PORTC&=BIT(0)#define RS_SET PORTC|=BIT(0)#define RW_CLR PORTC&=BIT(1)160检有开中断1602#define RW_SET PORTC|=BIT(1)#define E_CLR PORTC&=BIT(2)#defineE_SETPORTC|=BIT(2)biaoti=ADCTEST ;uintdelay_ms(uint t)uchar x,y;for(;t0;t-)for (x=0;x114;x+)for(y=0;y1;y+);constvalue=0;ucharvoid void WRITE_DATA(uchar data) E_CLR;RS_SET; RW_CLR; PORTD=data; E_SET; delay_ms(5); E_CLR; void WRITE_COM(uchar data) E_CLR;RS_CLR; RW_CLR; PORTD=data; E_SET;delay_ms(5);E_CLR; voidinit_1602(void )DDRC=0xFF;DDRD=0xFF;delay_ms(20);WRITE_COM(0x38);delay_ms(5);WRITE_COM(0x38);delay_ms(5);WRITE_COM(0x38);delay_ms(5);WRITE_COM(0x08);WRITE_COM(0x0c);WRITE_COM(0x06);WRITE_COM(0x84); voidADC_init(void)DDRA=0x00;PORTA=0x00;ADMUX=0x00;ADCSRA=0xe7;SFIOR=0x00; void main( void ) uchar i;uchar ADC_L,ADC_H;init_1602();for (i=0;i10;i+) WRITE_DATA(biaotii);ADC_init();while(1) ADC_init();ADC_L=ADCL;ADC_H=ADCH;value=(ADC_H*256+ADC_L)*5/10.24;WRITE_COM(0xc4);WRITE_DATA(0+value/100);WRITE_DATA(.);WRITE_DATA(0+value%100/10);WRITE_DATA(0+value%100%10);WRITE_DATA(V);五、调试结果截图1、在电阻的 %51 时的显示值。2、在电阻 %80 时的显示值。3、在电阻 %20 时的显示值。六、实验体会通过次的实验,我不但对 ADC转换的理论知识有了更加深刻的理解,对于实际的软件操作也有了质的飞跃。经过这次的实验,我们整体对 ATmega16的单片机中的ADC有了很大的提高,对AVR程序的设计也有了一定的了解和加以深刻的记忆,所以在这次实验中对AVR程序软件和 PROTEUS 软件的了解是至关重要的。七、附件工本费: 0.80 元
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号