找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1424|回复: 0
收起左侧

HC6800单片机实现呼吸灯源代码

[复制链接]
ID:313060 发表于 2019-1-18 21:29 | 显示全部楼层 |阅读模式
用定时器实现的呼吸灯(内有原理图

单片机源程序如下:
  1. #include <reg51.h>
  2. #define ON 1
  3. #define OFF 0
  4. #define STANYBY 2
  5. sbit EN1 = P2^0;
  6. sbit EN2 = P1^5;
  7. sbit K2 = P3^0;
  8. sbit K3 = P3^2;
  9. int pwm_val_left;
  10. int push_led=1;
  11. int dir=STANYBY;
  12. unsigned int count=0;
  13. void KeyScan(void);
  14. void pwm_val_left_moto(void);
  15. //延时函数
  16. void delay_ms(unsigned int xms)
  17. {
  18.         unsigned int i,j;
  19.         for(i=xms;i>0;i--)
  20.                 for(j=112;j>0;j--);
  21. }

  22. void main()
  23. {
  24.         TMOD = 0x11;
  25.         EA = 1;
  26.         ET0 = 1;
  27.         ET1 = 1;
  28.         TH0 = 0xFC;
  29.         TL0 = 0x66;
  30.         TH1 = (65535-50000)/256;
  31.         TL1 = (65535-50000)%256;
  32.         TR0 = 1;
  33.         TR1 = 1;
  34.         while(1)
  35.         {
  36.                 if(K2==0)
  37.                 {
  38.                         dir=ON;
  39.                 }
  40.                 if(K3==0)
  41.                 {
  42.                         dir=OFF;
  43.                 }
  44.         }
  45. }
  46. void timer0()interrupt 1
  47. {
  48.         TH0 = 0xFC;
  49.         TL0 = 0x66;
  50.         pwm_val_left++;
  51.         pwm_val_left_moto();
  52. }
  53. void pwm_val_left_moto(void)
  54. {
  55.         if(dir==ON || dir == OFF)
  56.         {
  57.                 if(pwm_val_left<=push_led)
  58.                 {
  59.                         EN1 = 0;
  60.                 }
  61.                 else
  62.                 {
  63.                         EN1 = 1;
  64.                 }
  65.                 if(pwm_val_left>=25)
  66.                         pwm_val_left=0;
  67.         }
  68. }
  69. void timer1()interrupt 3
  70. {
  71.         TH1 = (65535-50000)/256;
  72.         TL1 = (65535-50000)%256;
  73.         count++;
  74.         if(count%6)
  75.         {
  76.                 if(dir == ON)
  77.                 {
  78.                         if(push_led<25)
  79.                                 push_led++;
  80.                 }
  81.                 else
  82.                 {
  83.                         if(push_led>0)
  84.                                 push_led--;       
  85.                 }
  86.         }

  87.        
  88. }
复制代码

所有资料51hei提供下载:
呼吸灯.zip (263.45 KB, 下载次数: 7)


回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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