AVR单片机入门----C语言高效设计实践(九)
利用ATMEAG16L的功能实现数/模输出ATmega16L上的两个8位定时/计数器和一个16位定时/计数器都支持PWM(脉冲宽度)输出功能,利用这一功能,我们很容易实现数/模转换功能。
ATmega16L的定时/计数器的特性介绍见《AVR入门及C语言高效设计实践(六)》,这里我们主要利用它的比较匹配输出方式实现数/模转换,这种转换并行于一般程序执行,不需要额外的处理时间。
ATMEAG16L的PWM编程实践
1.定时/计数器2的PWM实验:用定时/计数器2以8位PWM方式产生调宽脉冲波,经有源LM358缓冲后,从PWM_OUT2端得到一锯齿波信号输出。
在我的文档中新建一个ac16的文件夹。建立一个ac16.prj的工程项目,最后建立源程序文件ac16.c。输入下面的程序:
编译通过后,将ac16.hex文件下载到AVR单片机综合试验板上进行实际演示。标示“PWM_IN”的双排针插上短路块,在标示“DC/AC9-15V”端输入12V(注意:绝对不要插到“DC5V”端,否则会烧毁芯片)。用的电压档测PWM_OUT2端,我们可看到电压会从OV线性上升到5V,然后重复这一过程,呈现一锯齿波信号输出。
2使用定时/计数器1产生o—5v的基准电压:我们使用INTO、INT1键调整并输出O~5V的基准电压,采用10位PWM,调整的分辨率约5mV。
在我的文档中新建一个ac17的文件夹。建立一个ac17.prj的工程项目,最后建立源程序文件acl7.c。输入下面的程序:
编译通过后,将ac17.hex文件下载到AVR单片机综合实验板上进行实际演示。标示“MOD_DISP”、“LEDMOD_COM”
及“PWM_IN”的双排针应插上短路块。在标示"DC/AC9-15V”
电源端输入12V电压(注意:绝对不要插到“DC5W'电源端,否则会烧毁芯片)。用的电压档测PWM_OUT1端,我们看到,4个显示0.000,同时万用表的电压显示为OV。按下INTO键,数码管显示开始增加(最大为5.000),万用表的电压显示也在增加。按下INT1键,数码管显示减少,万用表的电压显示也减少。停止按键后,电压显示及输出锁定。如果发现显示值与输出电压存在误差,我们可以修改“将脉宽系数(0~1023)转换成显示电压值(0—5000)”的有关计算项,以期显示值与输出值一致。
- 上一篇:新型平板显示器件OLED
- 下一篇:P111G多功能可编程控制器简介