PIC单片机用软件产生PWM与按键实时处理PIC12C508.docVIP

PIC单片机用软件产生PWM与按键实时处理PIC12C508.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PIC单片机用软件产生PWM与按键实时处理PIC12C508

PIC单片机用软件产生PWM与按键实时处理. 假设现在有个产品,要实现一个按键调节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 //脚位定义*********************************************************** #define key RA3 //按键输入 #define led RB0 //输出指示 //******************************************************************* //函数名称:port_init(); //输入参数:无 //输出参数:无 //功能描述:端口设置 //建造日期:2008.06.03 //***************************************************************** void PortInit(void) { PORTA = 0xfd; // TRISA = 0xfd; //A 口设置 PORTB = 0x00; // TRISB = 0x00; //B 口设置 } //******************************************************************* //函数名称:KeyInt(*p); //输入参数:占空比地址 //输出参数:无 //功能描述:按键处理函数 //建造日期:2008.06.03 //******************************************************************* void KeyInt(unsigned char *p) { static bit valid = 0; //有效标志 static bit finish = 0;

文档评论(0)

almm118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档