找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1416|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

HC6800單片機(jī)實(shí)現(xiàn)呼吸燈源代碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:313060 發(fā)表于 2019-1-18 21:29 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
用定時(shí)器實(shí)現(xiàn)的呼吸燈(內(nèi)有原理圖

單片機(jī)源程序如下:
  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. //延時(shí)函數(shù)
  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. }
復(fù)制代碼

所有資料51hei提供下載:
呼吸燈.zip (263.45 KB, 下載次數(shù): 7)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表