飞思卡尔单片机应用实验指导书(5)

2020-02-20 21:11

General.C

#include \ //包含通用函数头文件

//-------------------------------------------------------------------------*

// 函数名: Delay() // 功 能: 延时 // 参 数: count(小于65535) // 返 回: 无 //-------------------------------------------------------------------------* void delay(uint16 count) { uint16 i,j; for(j=0; j

实验六 AD转换与PWM综合实验

一、实验目的:

1.熟练运用嵌入式开发系统环境、C语言及调试方式; 2.理解定时器模块及AD模块工作原理;

3.初步掌握定时器PWM输出功能及程序设计方法;

4.初步掌握AD模块进行单通道AD转换功能及程序设计方法; 5.进一步熟悉LED数码块显示编程原理及方法。

二、实验要求:

1.仔细阅读本实验指导书。 2.复习有关的定时器及AD转换章节。

3.熟悉定时器模块的原理及PWM功能及编程方法。 4.熟悉AD模块原理、结构、AD转换功能和编程方法。 4.根据实验内容要求编写好程序,为实验做充分地准备。

三.实验设备及其连接

1.PC机

一台

2.飞思卡尔嵌入式实验开发系统 一台

3.PE2(定时器1通道)接口连接到一个LED灯,观察PWM输出占空比变化的PWM时,LED灯的变化。

4.通过实验箱上电位器输出插孔将电位器电压输入到AD转换模块的15号通道PTD7,对电位器输出电压进行AD转换,并将转换后得到的数值再还原为电压值在LED数码块上显示。

四.实验内容

1.理解并运行PWM例程序(经PTD0上插孔连接一个LED灯,当接在定时器1通道0上的开关上下拨动时,捕捉通道上的上升沿与下降沿,捕捉到时让LED灯亮一会然后熄灭);

2.理解并运行AD转换样例程序(将用测试线连接电位器输出插也及PTD7,旋转电位器调节其输出电压,在LED数码块上显示对应的电压值。);

3.在理解上面两个样例程序的基础上,自行设计用电位器控制PWM占空比,PWM输出接在一个LED灯上,并在LED数据块电位器输出电压值,观察LED灯的亮度与电压值的关系。

五.编程提示

1.在改变PWM的周期和占空比之前要禁止使用TPM(TPMxSC的CLKSB、CLKSA为00),然后设置占空比、周期等,再重新写TPMxSC,否则改变不起作用。

2.实验箱上的LED数码块的接口连接是固定的,要注意AD转换通道与LED数码块接口不要

冲突。

3.当GPIO作为LED输出段码驱动接口时,共阴级数码块可考虑在输出接口上加上位电阻增强驱动能力。

六.实验报告要求

1.按实验报告格式认真完成实验报告,要求画出工程的总体流程图; 回答下列问题: 2.回答下列问题

(1)定时器通道的PWM输出与输出比较有什么共同及不同处?如果用于小直流电机的速度控制,应该用什么方式?

(2)在本实验中,如果AD转换中需要有数值比较功能,当通道送入电压超过4.5V时需要报警,即让一个LED灯闪烁,应该如何设计?

七.参考例程:

PWM输出程序: Main.c

//总头文件

#include \void main(void) { DisableInterrupts;

MCUInit(); //MCU初始化 TPM1PWMInit(0); //定时器1初始化 EnableInterrupts;

while(1){ uint8 i;

for(i=0;i<=200;i++){

if (i<=100) TPM1PWMRun(0,i,0x0998); else TPM1PWMRun(0,200-i,0x0998); delay(100); } } } TMP.c

void TPM1PWMInit(uint8 CHn)

{

//分频因子64,设置为系统时钟,禁止溢出中断,清溢出标志 TPM1SC=0b00000110; TPM1CNTH=0x00; TPM1CNTL=0x00;

TPM1MODH=0x10; //预置寄存器设定值 = 0x1012 TPM1MODL=0x12; if (CHn>5) CHn=5; switch(CHn){

case 0:TPM1C0SC=0b00110100;break; case 1:TPM1C1SC=0b00110100;break; case 2:TPM1C2SC=0b00110100;break; case 3:TPM1C3SC=0b00110100;break; case 4:TPM1C4SC=0b00110100;break; case 5:TPM1C5SC=0b00110100;break; } }

void TPM1PWMRun(uint8 CHn,uint8 percent,uint16 ModP){ uint16 duty,MP; uint8 dutyH,dutyL; MP=ModP ; TPM1SC=0x00; TPM1CNTH=0x00; TPM1CNTL=0x00;

TPM1MODL=(uint8)(ModP); TPM1MODH=(uint8)(ModP>>8); duty=(uint16)((MP/100)*percent); dutyL=(uint8)(duty); dutyH=(uint8)(duty>>8); if (CHn>5) CHn=5;

switch(CHn){

case 0:

TPM1C0VH=dutyH;TPM1C0VL=dutyL;TPM1C0SC=0b00111100;break;

case 1:

TPM1C1VH=dutyH;TPM1C1VL=dutyL;TPM1C1SC=0b00111100;break; case 2:

TPM1C2VH=dutyH;TPM1C2VL=dutyL;TPM1C2SC=0b00111100;break; case 3:

TPM1C3VH=dutyH;TPM1C3VL=dutyL;TPM1C3SC=0b00111100;break; case 4:

TPM1C4VH=dutyH;TPM1C4VL=dutyL;TPM1C4SC=0b00111100;break; case 5:

TPM1C5VH=dutyH;TPM1C5VL=dutyL;TPM1C5SC=0b00111100;break; }

TPM1SC=0b00001110; }

Generalfun.c

void delay(uint16 count) { }

AD转换例程: Main.c //总头文件

#include \void main(void) {

uint8 V1Value; DisableInterrupts; LEDBUF[0]=0; LEDBUF[1]=0; LEDBUF[2]=0; LEDBUF[3]=0;

uint8 i; uint16 j;

for(j=0; j


飞思卡尔单片机应用实验指导书(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:广东省高级人民法院 广东省人民检察院 广东省公安厅印发关于核实

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: