普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 1888|回复: 2

51单片机使用按键控制LED灯亮度,要求使用PWM波完成,即更改PWM波的占空比

[复制链接]

1

主题

1

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2022-11-5 16:43:20 | 显示全部楼层 |阅读模式
急,朋友们,代码发一下谢谢了
回复

使用道具 举报

2

主题

16

帖子

58

积分

注册会员

Rank: 2

积分
58
发表于 2023-1-29 22:05:49 | 显示全部楼层
  1. #include <REGX52.H>
  2. #include <intrins.h>

  3. #define u8 unsigned char
  4. #define u16 unsigned int
  5.        
  6. sbit D1=P2^0;

  7. void Delay100us()                //@11.0592MHz
  8. {
  9.         unsigned char i;

  10.         _nop_();
  11.         i = 43;
  12.         while (--i);
  13. }

  14. void Delay5ms()                //@11.0592MHz
  15. {
  16.         unsigned char i, j;

  17.         i = 9;
  18.         j = 244;
  19.         do
  20.         {
  21.                 while (--j);
  22.         } while (--i);
  23. }

  24. u8 key()
  25. {
  26.         static u8 key_en=1;
  27.         u8 value;
  28.         value=0;
  29.         if(key_en==1&&(P3_0==0||P3_1==0))
  30.         {
  31.                 key_en=0;
  32.                 Delay5ms();
  33.                 if(P3_1==0)
  34.                         value=2;
  35.                 if(P3_0==0)
  36.                         value=1;
  37.                 Delay5ms();
  38.         }
  39.         else if(P3_0==1&&P3_1==1)
  40.                 key_en=1;
  41.         return value;
  42. }

  43. void main()
  44. {
  45.         u8 i;
  46.         u8 propor;        //&#213;&#188;&#191;&#213;±&#200;
  47.         u8 value;                //&#188;ü&#197;&#204;·&#181;&#187;&#216;&#214;&#181;
  48.         propor=5;
  49.         while(1)
  50.         {
  51.                 for(i=0;i<10;i++)
  52.                 {
  53.                         if(i<propor)
  54.                                 D1=0;
  55.                         else
  56.                                 D1=1;
  57.                         Delay100us();
  58.                 }
  59.                 value=key();
  60.                 if(value)
  61.                 {
  62.                         switch(value)
  63.                         {
  64.                                 case 1:propor++;break;                //&#212;&#246;&#188;&#211;&#193;&#193;&#182;&#200;
  65.                                 case 2:propor--;break;                //&#188;&#245;&#181;&#205;&#193;&#193;&#182;&#200;
  66.                                 default:break;
  67.                         }
  68.                         if(propor==10)
  69.                                 propor=9;
  70.                         if(propor==255)
  71.                                 propor=0;
  72.                 }
  73.         }
  74. }
复制代码
回复 支持 反对

使用道具 举报

2

主题

16

帖子

58

积分

注册会员

Rank: 2

积分
58
发表于 2023-1-29 22:07:22 | 显示全部楼层

刚开始弄这个,注释有乱码了
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-4-24 17:51 , Processed in 0.085571 second(s), 30 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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