找回密码
 立即注册

QQ登录

只需一步,快速开始

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

LED灯渐亮与控制电机转速

[复制链接]
跳转到指定楼层
楼主
ID:373926 发表于 2018-7-18 11:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用PWM和定时器中断控制电机转速和LED灯渐亮,C语言52单片机程序
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. sbit P10=P1^0;
  4. sbit K1 =P3^4 ; //PWM值增加键
  5. sbit K2 =P3^5; //PWM值减少键
  6. sbit BEEP =P3^6; //蜂鸣器
  7. unsigned char PWM=0xff ; //赋初值

  8. void Beep();
  9. void delayms(unsigned char ms);
  10. void delay(unsigned char t);

  11. /*********************************************************/
  12. void main()
  13. {
  14. P1=0xff;
  15. TMOD=0x22 ;
  16. TH0=0xfc ; //1ms延时常数
  17. TL0=0x66 ; //频率调节

  18. TH1=PWM ; //脉宽调节
  19. TL1=0 ;

  20. EA=1;
  21. ET0=1;
  22. ET1=1;

  23. TR0=1 ;

  24. while(1)
  25. {
  26. do{
  27. if(PWM!=0xff)
  28. {PWM++ ;delayms(10);}
  29. else Beep() ;
  30. P10=1;
  31. }
  32. while(K1==1);

  33. do{
  34. if(PWM!=0x02)
  35. {PWM-- ;delayms(10);}
  36. else Beep() ;
  37. P10=0;
  38. }
  39. while(K2==1);
  40. }
  41. }

  42. /*********************************************************/
  43. // 定时器0中断服务程序 (频率)
  44. /*********************************************************/
  45. void timer0() interrupt 1
  46. {
  47. TR1=0 ;
  48. TH0=0xfc;
  49. TL0=0x66 ;
  50. TH1=PWM ;
  51. TR1=1 ;
  52. P1=0x00 ; //启动输出
  53. }

  54. /*********************************************************/
  55. // 定时器1中断服务程序 (脉宽)
  56. /*********************************************************/
  57. void timer1() interrupt 3
  58. {
  59. TR1=0 ;
  60. P1=0xff ; //结束输出
  61. }

  62. /*********************************************************/
  63. //蜂鸣器子程序
  64. /*********************************************************/

  65. void Beep()
  66. {
  67. unsigned char i ;
  68. for (i=0 ;i<100 ;i++)
  69. {
  70. delay(100) ;
  71. BEEP=!BEEP ; //Beep取反
  72. }
  73. BEEP=1 ; //关闭蜂鸣器
  74. delayms(100);
  75. }

  76. /*********************************************************/
  77. // 延时子程序
  78. /*********************************************************/
  79. void delay(unsigned char t)
  80. {
  81. while(t--) ;
  82. }

  83. /*********************************************************/
  84. // 延时子程序
  85. /*********************************************************/
  86. void delayms(unsigned char ms)

  87. {
  88. unsigned char i ;
  89. while(ms--)
  90. {
  91. for(i = 0 ; i < 120 ; i++) ;
  92. }
  93. }

  94. /*********************************************************/
复制代码

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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