找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3213|回复: 4
打印 上一主题 下一主题
收起左侧

51单片机做的L298两路PWM控制LED代码

[复制链接]
跳转到指定楼层
楼主
ID:202901 发表于 2017-5-21 15:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
前几天做的51单片机与L298两路PWM控制LED代码,给参考

单片机源程序如下:

  1. #include <reg51.h>

  2. typedef unsigned char uint8;
  3. typedef unsigned int  uint16;

  4. sbit down = P3^0;
  5. sbit up = P3^1;
  6. sbit down1 = P3^2;
  7. sbit up1 = P3^3;
  8. sbit led1 = P1^0;
  9. sbit led2 = P1^1;
  10. sbit led3 = P1^4;
  11. sbit led4 = P1^6;

  12. uint8 t = 0,t1=0;
  13. uint8 PWM_T = 0;   //占空比控制变
  14. uint8 PWM_T1 = 0;   //占空比控制变

  15. void delay_1ms(uint16 t)
  16. {
  17.         uint16 x,y;
  18.         for(x=t;x>0;x--)
  19.                 for(y=120;y>0;y--);
  20. }


  21.          
  22. /****************************************************
  23.                   主程序
  24. ****************************************************/
  25. void main(void)      
  26. {

  27.         TMOD = 0x22;   //定时器0,工作模式2,8位定时模式
  28.         TH0=180;     //写入预置初值(取值1-255,数越大PWM频率越高)
  29.         TL0=180;     //写入预置值 (取值1-255,数越大PWM频率越高)
  30.         TR0=1;       //启动定时器
  31.         ET0=1;       //允许定时器0中断
  32. //        EA=1;        //允许总中断
  33. //        led1=1;          //初始化P1,输出端口

  34.         TH1=180;     //写入预置初值(取值1-255,数越大PWM频率越高)
  35.         TL1=180;     //写入预置值 (取值1-255,数越大PWM频率越高)
  36.         TR1=1;       //启动定时器
  37.         ET1=1;       //允许定时器1中断
  38.         EA=1;        //允许总中断
  39. //        led2=1;          //初始化P1,输出端口
  40. //        led3=1;
  41.         led3=0;
  42.         led4=0;
  43.         PWM_T1=20;
  44.         PWM_T=20;
  45.          while(1)      
  46.        
  47.          {   
  48.                    if(!up)
  49.                          {
  50.                                 if(PWM_T<250)
  51.                                         {
  52.                                           PWM_T++;
  53.                                         }
  54.                                
  55.                                 delay_1ms(10);
  56.                         }
  57.                  if(!down)
  58.                          {
  59.                                 if(PWM_T>0)
  60.                                         {
  61.                                           PWM_T--;
  62.                                         }
  63.                                
  64.                                 delay_1ms(10);
  65.                         }

  66.                         if(!up1)
  67.                          {
  68.                                 if(PWM_T1<250)
  69.                                         {
  70.                                           PWM_T1++;
  71.                                         }
  72.                                
  73.                                 delay_1ms(10);
  74.                         }
  75.                  if(!down1)
  76.                          {
  77.                                 if(PWM_T1>0)
  78.                                         {
  79.                                           PWM_T1--;
  80.                                         }
  81.                                
  82.                                 delay_1ms(10);
  83.                         }
  84.        
  85.          }      
  86. }
  87. /****************************************************
  88.                /定时器0中断模拟PWM
  89. ****************************************************/
  90. timer0() interrupt 1  
  91. {
  92.          t++;    //每次定时器溢出加1
  93.          
  94.          if(t==250)   //PWM周期 100个单位
  95.                  {
  96.                           t=0;  //使t=0,开始新的PWM周期
  97.                           led1=0;  //输出端口
  98.                  }
  99.          
  100.          if(PWM_T==t)  //按照当前占空比切换输出为高电平
  101.                  {  
  102.                          led1=1;        //  
  103.                  }
  104. }
  105. ……………………

  106. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
L298 两路PWM.rar (21.8 KB, 下载次数: 42)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:89286 发表于 2017-5-21 21:03 | 只看该作者
thanks for sharing
回复

使用道具 举报

板凳
ID:200118 发表于 2017-5-21 21:36 | 只看该作者
谢谢分享
回复

使用道具 举报

地板
ID:394932 发表于 2018-9-11 14:55 | 只看该作者
有原理图吗?
回复

使用道具 举报

5#
ID:241550 发表于 2022-8-22 00:16 | 只看该作者
感谢分享,正在认真研究学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表