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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11664|回復: 31
收起左側

為什么單片機流水燈這樣寫,只能亮4個LED。我要亮8個燈

  [復制鏈接]
ID:427818 發表于 2018-11-16 16:55 | 顯示全部樓層 |閱讀模式
        while(1)
        {
           led = 0x01;
           delay(50000);
           led = 0x02;
           delay(50000);
           led = 0x03;
           delay(50000);
           led = 0x04;
           delay(50000);
           led = 0x11;
           delay(50000);
           led = 0x12;
           delay(50000);
           led = 0x13;
           delay(50000);
           led = 0x14;
           delay(50000);
回復

使用道具 舉報

ID:155507 發表于 2018-11-16 17:07 | 顯示全部樓層
給你改了一下試試。

        while(1)
        {
           led = 0x01;
           delay(50000);
           led = 0x02;
           delay(50000);
           led = 0x04;
           delay(50000);
           led = 0x08;
           delay(50000);
           led = 0x10;
           delay(50000);
           led = 0x20;
           delay(50000);
           led = 0x40;
           delay(50000);
           led = 0x80;
           delay(50000);



回復

使用道具 舉報

ID:427831 發表于 2018-11-16 17:14 | 顯示全部樓層
led是8位IO口嗎?沒太看懂你的代碼
回復

使用道具 舉報

ID:295874 發表于 2018-11-16 17:22 | 顯示全部樓層
你目前的位操作就只操作到了四個IO口,所以。。。。。。
回復

使用道具 舉報

ID:379730 發表于 2018-11-16 17:29 | 顯示全部樓層
本帖最后由 MMU_FS 于 2018-11-16 17:37 編輯

這樣是不對的,要按十六進制來,假設led映射的P0,應該這樣寫uint8_t temp = 0x01 , i = 0;
led = temp;

while(1)
{      temp = 0x01;
    for(i = 0 ; i < 8 ;  i ++)
    {
        led =(temp << 1) | temp;
        delay(50000);
    }
    temp = 0x7F;
    for(i = 0 ; i < 8 ;  i ++)
    {
l        ed =(temp >> 1) & temp;
        delay(50000);
    }

}
         


回復

使用道具 舉報

ID:427839 發表于 2018-11-16 17:42 | 顯示全部樓層
你的數值都不對,一個是8421,8421.
回復

使用道具 舉報

ID:423511 發表于 2018-11-16 17:49 | 顯示全部樓層
把led后邊的數改為:0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80。試一下。
回復

使用道具 舉報

ID:389298 發表于 2018-11-16 18:10 | 顯示全部樓層
有沒有圖
回復

使用道具 舉報

ID:63351 發表于 2018-11-16 18:48 | 顯示全部樓層
你是要做流水燈呢還是,讓8個常亮呢?  我默認你的led是低電平有效的, 如果是8個燈常亮,led = 0x00;  如果要依次點亮8個燈,你可以采用循環語句 led=0xff ;for(i=0;i<8; i++){led &= (0xfe<<i);  delay(50000); }
回復

使用道具 舉報

ID:427818 發表于 2018-11-16 22:10 | 顯示全部樓層
我就是想用最原始的方法試試,才開始學不久。各位大神的我都試試再說哈
回復

使用道具 舉報

ID:427818 發表于 2018-11-16 22:17 | 顯示全部樓層
angmall 發表于 2018-11-16 17:07
給你改了一下試試。

        while(1)

大神,我的為什么程序出現了什么問題呢?
回復

使用道具 舉報

ID:427818 發表于 2018-11-16 22:18 | 顯示全部樓層
kr123crg 發表于 2018-11-16 17:14
led是8位IO口嗎?沒太看懂你的代碼

是8位的IO
回復

使用道具 舉報

ID:427818 發表于 2018-11-16 22:18 | 顯示全部樓層
liyongan_1985 發表于 2018-11-16 17:22
你目前的位操作就只操作到了四個IO口,所以。。。。。。

的確是這樣,為什么呢?出錯在那呢?
回復

使用道具 舉報

ID:410399 發表于 2018-11-17 08:32 | 顯示全部樓層
0x01  ->  0000 0001
0x02  ->  0000 0010
0x03  ->  0000 0011
0x04  ->  0000 0100
0x11  ->  0000 1011
0x12  ->  0000 1100
0x13  ->  0000 1101
0x14  ->  0000 1110
你的是低電平有效還是高電平有效,怎么流水燈法,沒明白。
你程序對應2進制是這樣,對應輸出,最多就控制了4位LED
回復

使用道具 舉報

ID:427818 發表于 2018-11-17 16:14 | 顯示全部樓層
mosqu 發表于 2018-11-17 08:32
0x01  ->  0000 0001
0x02  ->  0000 0010
0x03  ->  0000 0011

噢噢,明白了
回復

使用道具 舉報

ID:392042 發表于 2018-11-17 17:43 | 顯示全部樓層
這個和iIO的定義有關系
回復

使用道具 舉報

ID:428347 發表于 2018-11-17 19:05 | 顯示全部樓層
十六進制有abcdef的才能控制到高4位,肯定不能控制8個
回復

使用道具 舉報

ID:300347 發表于 2018-11-17 23:08 | 顯示全部樓層
你可以使用51里的移位函數,只要讓一個IO口的燈亮,接下來對這個IO口進行位移
回復

使用道具 舉報

ID:428719 發表于 2018-11-18 15:44 | 顯示全部樓層
改成0xff試試
回復

使用道具 舉報

ID:428557 發表于 2018-11-18 20:24 | 顯示全部樓層
如果樓主的LED燈共陰的話
回復

使用道具 舉報

ID:428557 發表于 2018-11-18 20:27 | 顯示全部樓層
如果樓主LED共陰的話while(1)         {            led = 0x01;            delay(50000);            led = 0x02;            delay(50000);            led = 0x04;            delay(50000);            led = 0x08;            delay(50000);            led = 0x10;            delay(50000);            led = 0x20;            delay(50000);            led = 0x40;            delay(50000);            led = 0x80;            delay(50000);如果共陽的話while(1)         {            led = 0x01;            delay(50000);            led = 0x02;            delay(50000);            led = 0x04;            delay(50000);            led = 0x08;            delay(50000);            led = 0xfe;            delay(50000);            led = 0xfd;            delay(50000);            led = 0xfb;            delay(50000);            led = 0xf7;            delay(50000);
回復

使用道具 舉報

ID:422467 發表于 2018-11-19 16:15 | 顯示全部樓層
8421,8421
回復

使用道具 舉報

ID:407083 發表于 2018-11-19 18:38 | 顯示全部樓層
你LED賦值不對,當然不能亮8個啊
回復

使用道具 舉報

ID:429435 發表于 2018-11-19 19:50 | 顯示全部樓層
#include<reg52.h> #define uint unsigned int #define uchar unsigned char uint i,j,z,; uchar a; void main(){ a=0xfe; for(z=0;z<8;z++){ P1=a; a=~a; a=a<<1; a=~a; for(i=150;i>0;i--) for(j=110;j>0;j--);  } }這樣也可以
回復

使用道具 舉報

ID:255398 發表于 2018-11-20 09:28 | 顯示全部樓層
你的電路圖?是高電平,還是 低電平點亮?把你的賦值寫成16進制,就明白為何只亮四個燈了。
回復

使用道具 舉報

ID:255398 發表于 2018-11-20 09:49 | 顯示全部樓層
先弄清楚16進制與二進制的關系,你知道只亮四個燈了
回復

使用道具 舉報

ID:168851 發表于 2018-11-20 10:55 | 顯示全部樓層
你的程序只是動作了4個IO口,具體的可以看看這個哈,你需要將十六進制轉換為二進制,轉換后如下(8421轉換哈)
0x01 --> 0000 0001 --->只亮最后1個燈珠
0x02 --> 0000 0010 --->只亮倒數第2個燈珠
0x03 --> 0000 0011 --->只亮最后2個燈珠
0x04 --> 0000 0100 --->只亮倒數第3個燈珠
0x11 --> 0001 0001 --->只亮第4個和第8個燈珠
0x12 --> 0001 0010 --->只亮第4個和第7個燈珠
0x13 --> 0001 0011 --->只亮第4個、第7個和第8個燈珠
0x14 --> 0001 0100 --->只亮第4個和第6個燈珠
你仔細觀察哈,其中1就是你變換的位,所以你整個過程總共就只變換了4位,即4個LED燈點亮(主要是第4顆、第6顆、第7顆、第8顆,這幾顆燈珠),所以你應該是高電平點亮LED燈珠。
最后給你個建議,可以看看郭天祥的單片機視頻教程,講得比較好,聽了就懂了哈
回復

使用道具 舉報

ID:429759 發表于 2018-11-20 11:07 | 顯示全部樓層
需要控制到高4位
回復

使用道具 舉報

ID:429813 發表于 2018-11-20 12:46 | 顯示全部樓層

十六進制有abcdef的才能控制到高4位,肯定不能控制8個
回復

使用道具 舉報

ID:432415 發表于 2018-11-24 16:04 | 顯示全部樓層
你這個管腳是不是定義的有問題
回復

使用道具 舉報

ID:910589 發表于 2021-4-22 22:46 | 顯示全部樓層
xqj777 發表于 2018-11-16 18:48
你是要做流水燈呢還是,讓8個常亮呢?  我默認你的led是低電平有效的, 如果是8個燈常亮,led = 0x00;  如 ...

你好,試了一下你的流水燈的程序,只有前7個LED會工作,最后一個一直不亮。還有用了幾個其他的流水燈的實驗也是這樣的情況。不知道是為什么?請問您知道嗎?求解答
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产在线观看一区二区三区 | 欧美日韩国产中文字幕 | 国产人久久人人人人爽 | 久久国产精品一区二区三区 | 国产午夜精品一区二区三区四区 | 欧美高清成人 | 国产精品久久久亚洲 | 国产伦精品一区二区三区视频金莲 | 成年无码av片在线 | 亚州精品天堂中文字幕 | 欧美福利精品 | 亚洲精品久久久一区二区三区 | a网站在线观看 | 爱综合 | 国产99久久精品 | 91久久精品 | 国产欧美精品一区二区三区 | av一二三区 | 在线一区 | 人人澡人人爱 | 久久久久香蕉视频 | 国产一区二区三区高清 | 一区二区在线看 | 久久久国产精品视频 | 久久精品黄色 | 国产精品一区一区三区 | 成人午夜影院 | 亚洲一区二区免费 | 国产电影一区二区 | 成人av网站在线观看 | 精品无码久久久久久国产 | 中文字幕在线三区 | 欧美日韩精品专区 | 精品国产乱码久久久久久1区2区 | 在线视频一区二区 | 国产二区视频 | 久久国产精品久久久久 | 最新中文字幕在线播放 | 一区二区三区四区视频 | 欧洲成人免费视频 | 九九亚洲 |