织梦CMS - 轻松建站从此开始!

电子芯片网

芯片datasheet查询
当前位置: 主页 > 嵌入式设计 > MCU >

PIC单片机用软件产生PWM的方法

时间:2012-02-10 19:27来源:未知 作者:admin 点击:
假设现在有个产品,要实现一个按键调节LED的亮度(PWM六档调光)。要以最低成平,体积要小,抗干扰最好。用PIC12C508A,最适合不过了。 方案实现如下: 按键功能: 一个普通的IO口接上

假设现在有个产品,要实现一个按键调节LED的亮度(PWM六档调光)。要以最低成平,体积要小,抗干扰最好。用PIC12C508A,最适合不过了。

方案实现如下:

按键功能:
一个普通的IO口接上拉电阻输入,通过按键拉地。按键低电平有效,高电平无效。
每按一下占空比增加一档。长按无效,第次增加一档。要防止干扰。

调光功能:
一个普通的IO口外接三极管驱动LED,由于单片机没有PWM模块,没有中断功能。只能用软件产生PWM信号。


我们都知道用软件产生PMW是占用单片机太多的时间,系统很难做其它工作。要如何实时处理按键功能,要多下
功夫才行。

编译软件为HI-PICC。

为了方面调试,先使用可擦写的PIC16F84A调试源程序,成功后再移值到PIC12C508A单片机系统。

《按键实时处理流程》

声明申请两个标志1,有效标志2,完成标志为静态私有,初始化只清零一次。

一,判断有效标志是否等于1。是,向下执行。否,跳到二处。

判断按键是否等于0。是,向下执行。否,跳到三处。

判断完成标志是否等于0。是,向下执行。否,按键长按,无效退出。

按键有效,增加占空比。完成标志置为1。退出。

二,判断按键是否等于0。是,置有效标志为1。否,没有按键退出。

三,按键受干扰,或按键弹开。清所有标志,退出。

《软件产生PWM流程》

一,根据占空比计算高电平延时,低电平延时。
输出高电平,软件产生高电平延时。
输出低电平,软件产生低电平延时。
二,循环执行约20毫秒,后退出。

《主程序主作流程》

一,调用初始化子程序.
二,调用按键处理子程序。
三,调用软件产生PWM子程序。
四,循环执行二,三。


C源程序

/引入头文件*********************************************************
#include<pic1684.h>

//脚位定义***********************************************************
#definekeyRA3//按键输入
#defineledRB0//输出指示

//*******************************************************************
//函数名称:port_init();
//输入参数:无
//输出参数:无
//功能描述:端口设置
//建造日期:2008.06.03
//*****************************************************************
voidPortInit(void)
{
PORTA=0xfd;//
TRISA=0xfd;//A口设置

PORTB=0x00;//
TRISB=0x00;//B口设置
}

//*******************************************************************

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
用户名: 验证码: 点击我更换图片