久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1473|回復: 8
收起左側

單片機呼吸燈流水程序如何改為呼吸一下右移一下?

[復制鏈接]
ID:978416 發表于 2022-3-30 21:53 | 顯示全部樓層 |閱讀模式
想問一下各位前輩,這個呼吸燈的程序,需要怎么改一下能變成八個io口控制八個小燈,呼吸一下右移一下,呼吸一下右移一下,程序最好簡潔點

單片機源程序如下:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int

sbit led=P1^0;
void pwm_led();
void delay(uint);

void main()
{
        while(1)
        {
                pwm_led();        
        }
}

void pwm_led()
{
        uint cycle=500,pwm=0;
                for(pwm=1;pwm<cycle;pwm++)
                {
                        led=0;                           
                        delay(pwm);                  
                        led=1;                           
                        delay(cycle-pwm);  
                }
                for(pwm=cycle-1;pwm>0;pwm--)
                {
                        led=0;
                        delay(pwm);               
                        led=1;
                        delay(cycle-pwm);        
                }        
}

void delay(uint t)
{
        while(--t);
}

51hei圖片_20220330215323.jpg
回復

使用道具 舉報

ID:161164 發表于 2022-3-31 09:56 | 顯示全部樓層
先弄個簡單的流水燈代碼

  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. void flow_led();
  5. void Delay500ms();

  6. void main()
  7. {
  8.         while(1)
  9.         {
  10.                 flow_led();        
  11.         }
  12. }

  13. void flow_led()
  14. {
  15.         uchar flow;
  16.                 for(flow=0;flow<8;flow++)
  17.                 {
  18.                                 P1=~(0x01 << flow);                           
  19.                                 Delay500ms();         
  20.                 }
  21. }

  22. void Delay500ms()                //@11.0592MHz
  23. {
  24.                 unsigned char i, j, k;

  25.                 _nop_();
  26.                 i = 4;
  27.                 j = 129;
  28.                 k = 119;
  29.                 do
  30.                 {
  31.                         do
  32.                         {
  33.                                 while (--k);
  34.                         } while (--j);
  35.                 } while (--i);
  36. }
復制代碼

再把它們結合起來就可以了

回復

使用道具 舉報

ID:860248 發表于 2022-3-31 20:46 | 顯示全部樓層
/***** 呼吸燈流水程序 呼吸一下右移一下 *****/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar i = 0;
uchar code LEDflow[8] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};

void delay(uint t)
{
        while(--t);
}

void pwm_led()
{
        for (i=0; i<8; i++)
        {
        uint cycle=500, pwm=0;
                for(pwm=cycle-1;pwm>0;pwm--)
                {
                        P1 = 0x00;
                        delay(pwm);               
                        P1 = LEDflow;
                        delay(cycle-pwm);        
                }        
                for(pwm=1;pwm<cycle;pwm++)
                {
                        P1 = 0x00;                           
                        delay(pwm);                  
                        P1 = LEDflow;                           
                        delay(cycle-pwm);  
                }
        }
}


void main()
{
        while(1)
        {
               pwm_led();        
        }
}

你好
按照你的意思只增加少許, 這樣可以嗎.

回復

使用道具 舉報

ID:517333 發表于 2022-3-31 21:37 | 顯示全部樓層
采用for循環和位移函數
回復

使用道具 舉報

ID:161164 發表于 2022-3-31 21:42 | 顯示全部樓層
kscheang 發表于 2022-3-31 20:46
/***** 呼吸燈流水程序 呼吸一下右移一下 *****/
#include
#define uchar unsigned char

去仿真或下到實機看看就知到啊~
回復

使用道具 舉報

ID:860248 發表于 2022-3-31 22:29 | 顯示全部樓層
我想過用FOR 和<<移位, 但會和樓主的設計概念和程序更改相差較遠, 用這個只加上數組作移位就可以
回復

使用道具 舉報

ID:978416 發表于 2022-4-1 16:47 | 顯示全部樓層
kscheang 發表于 2022-3-31 20:46
/***** 呼吸燈流水程序 呼吸一下右移一下 *****/
#include
#define uchar unsigned char

非常感謝,確實很簡潔,在P1=LEDflow;這里是不是低加上【i】;開始運行不行一看編碼我的是共陽的,再次感謝。
回復

使用道具 舉報

ID:978416 發表于 2022-4-1 16:55 | 顯示全部樓層
lkc8210 發表于 2022-3-31 09:56
先弄個簡單的流水燈代碼

再把它們結合起來就可以了

感謝
回復

使用道具 舉報

ID:978416 發表于 2022-4-1 16:58 | 顯示全部樓層

謝謝,施用FOR循環解決的uchar code table [8] = {0xFE,0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF,
for (i=0; i<8; i++)                         //....
        {
        uint cycle=500, pwm=0;
                       

                                 for(pwm=cycle-1;pwm>0;pwm--)
                {
                        P1 = 0xff;
                        delay(pwm);               
                        P1 = table;
                        delay(cycle-pwm);        
                }        


                                for(pwm=1;pwm<cycle;pwm++)
                {
                        P1 = 0xff;           //....               
                        delay(pwm);                  
                        P1 =table;                           
                        delay(cycle-pwm);  
                }                       
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩中文字幕在线观看 | 欧美在线视频一区二区 | 91久久国产精品 | 国产片淫级awww | 亚洲综合一区二区三区 | 黄网站涩免费蜜桃网站 | 大陆一级毛片免费视频观看 | 国产精品免费观看视频 | 日韩在线免费视频 | 天天色天天色 | 中文字幕 欧美 日韩 | 一级毛片视频 | 在线中文字幕视频 | 欧美一区二区三区在线播放 | 欧美男人天堂 | 中文天堂网| 精品久久久久久亚洲精品 | 日本字幕在线观看 | 亚洲电影第三页 | 精品福利一区二区三区 | 超碰成人在线观看 | 奇米久久久 | 色五月激情五月 | 一区二区三区精品视频 | 天天干天天玩天天操 | 国产精品国产三级国产aⅴ浪潮 | 欧美激情久久久 | 青青草这里只有精品 | 精品久久香蕉国产线看观看亚洲 | 久久国产成人精品国产成人亚洲 | 国产一区二区三区在线 | 欧美成人高清视频 | 日本不卡免费新一二三区 | 久久亚洲国产精品日日av夜夜 | 国产精品美女久久久久久免费 | 午夜久久久久久久久久一区二区 | 久久久久久网 | 国产精品电影在线观看 | 久久精品欧美一区二区三区不卡 | 精品久久久一区 | 亚洲精彩免费视频 |