当前位置:   article > 正文

51单片机PWM

51单片机PWM

一、pwm概念

PWM(脉冲宽度调制)是一种常见的数字信号调制技术,广泛应用于单片机和嵌入式系统中。它通过调节脉冲信号的高电平时间(占空比)来控制电路中的电压或功率。在单片机中,PWM通常用来控制电机的转速、调节LED的亮度、以及实现数字信号转换为模拟信号等应用。

具体来说,单片机通过产生一个周期性的脉冲信号,其中脉冲的高电平时间(占空比)决定了输出信号的平均电压值。通过不同的占空比,可以实现对输出信号的精确控制。例如,当控制一个电机时,通过改变PWM信号的占空比,可以调节电机的转速;控制LED的亮度时,通过改变PWM信号的占空比,可以调节LED的亮度。

总之,PWM技术在单片机中是一种灵活、有效的控制技术,能够实现对各种电路元件的精确控制,是嵌入式系统设计中常用的技术之一。希望这个描述能够帮助你更好地理解单片机PWM的概念。如果有其他问题,欢迎随时提出。

二、实现PWM输出

2.1 SG90 的舵机

  1. #include "reg52.h"
  2. #include "intrins.h"
  3. sbit sg90_con = P3^6;
  4. int jd;
  5. int cnt =0;
  6. void Delay2000ms() //@11.0592MHz
  7. {
  8. unsigned char i, j, k;
  9. i = 15;
  10. j = 2;
  11. k = 235;
  12. do
  13. {
  14. do
  15. {
  16. while (--k);
  17. } while (--j);
  18. } while (--i);
  19. }
  20. void Delay300ms() //@11.0592MHz
  21. {
  22. unsigned char i, j, k;
  23. _nop_();
  24. i = 3;
  25. j = 26;
  26. k = 223;
  27. do
  28. {
  29. do
  30. {
  31. while (--k);
  32. } while (--j);
  33. } while (--i);
  34. }
  35. void Timer0Init(void) //500微秒@11.0592MHz
  36. {
  37. TMOD =0x01; //设置定时器模式
  38. TL0 = 0x33; //设置定时初值
  39. TH0 = 0xFE; //设置定时初值
  40. TF0 = 0; //清除TF0标志
  41. TR0 = 1; //定时器0开始计时
  42. EA =1;
  43. ET0 =1;
  44. }
  45. int main()
  46. {
  47. Delay300ms();
  48. Timer0Init();
  49. jd =1;
  50. cnt =0;
  51. sg90_con = 1;
  52. while(1) {
  53. jd =4;
  54. cnt =0;
  55. Delay2000ms();
  56. jd =1;
  57. cnt =0;
  58. Delay2000ms();
  59. }
  60. return 0;
  61. }
  62. void Time0Handler() interrupt 1
  63. {
  64. cnt ++;
  65. TL0 = 0X33;
  66. TH0 =0XFE;
  67. if(cnt < jd ) {
  68. sg90_con = 1;
  69. } else {
  70. sg90_con = 0;
  71. }
  72. if(cnt == 40) {
  73. cnt = 0;
  74. sg90_con =1;
  75. }
  76. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/163432
推荐阅读
相关标签
  

闽ICP备14008679号