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

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

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3336|回復(fù): 9
收起左側(cè)

為什么單片機(jī)數(shù)碼管只在第7個(gè)上面亮,流水燈也只在一個(gè)上亮

[復(fù)制鏈接]
ID:95352 發(fā)表于 2019-11-18 23:43 | 顯示全部樓層 |閱讀模式
http://www.iqiyi.com/w_19say7ygl1.html
目的是通過(guò)定時(shí)器中斷來(lái)讓流水燈和數(shù)碼管做出相應(yīng)的動(dòng)作;
流水燈每隔時(shí)間在第一個(gè)p10和第二個(gè)p11流水
數(shù)碼管從左邊到右邊分別顯示,并且由0-7變化,即第一個(gè)數(shù)碼管顯示0,第二個(gè)顯示1,第三個(gè)顯示2.。。。依次循環(huán)

單片機(jī)源程序如下:
#include<reg52.h>
#include<intrins.h>
int num=0;
int p=0;
int q=0;
sbit p20=P2^0;
sbit p21=P2^1;
sbit p22=P2^2;
char code table1[8]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07};
void init()
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
EA=1;//打開(kāi)總中斷
TMOD=0x01;
ET0=1;//打開(kāi)定時(shí)器中斷
TR0=1;//定時(shí)器中斷開(kāi)始
}
void delay0(int i)
{
while(i--);
}

void main()
{
init();

while(1)
{
  if(p==40)
  {
   if(num<8)
   {
       switch(num)
    {
        case 0:p20=0;p21=0;p22=0;P0=table1[num];P1=0xfe;
     case 1:p20=0;p21=0;p22=1;P0=table1[num];P1=0xfd;
     case 2:p20=0;p21=1;p22=0;P0=table1[num];P1=0xfe;
     case 3:p20=0;p21=1;p22=1;P0=table1[num];P1=0xfd;
     case 4:p20=1;p21=0;p22=0;P0=table1[num];P1=0xfe;
     case 5:p20=1;p21=0;p22=1;P0=table1[num];P1=0xfd;
     case 6:p20=1;p21=1;p22=0;P0=table1[num];P1=0xfe;
     case 7:p20=1;p21=1;p22=1;P0=table1[num];P1=0xfd;
    }
    num++;
   }
   else
   {
    num=0;
   }
      p=0;
  }
}
}
void delay1() interrupt 1
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
p++;
q++;
}


51hei圖片_20191118232916.png
51hei圖片_20191118232919.png
回復(fù)

使用道具 舉報(bào)

ID:25310 發(fā)表于 2019-11-19 08:18 | 顯示全部樓層
LED 亮后沒(méi)加延時(shí)就滅了。
回復(fù)

使用道具 舉報(bào)

ID:277550 發(fā)表于 2019-11-19 09:04 | 顯示全部樓層
void main(){
        init();

        while(1){
                if(p==40){
                        if(num<8){
                                switch(num){
                                case 0:p20=0;p21=0;p22=0;P0=table1[num];P1=0xfe;
                                case 1:p20=0;p21=0;p22=1;P0=table1[num];P1=0xfd;
                                case 2:p20=0;p21=1;p22=0;P0=table1[num];P1=0xfe;
                                case 3:p20=0;p21=1;p22=1;P0=table1[num];P1=0xfd;
                                case 4:p20=1;p21=0;p22=0;P0=table1[num];P1=0xfe;
                                case 5:p20=1;p21=0;p22=1;P0=table1[num];P1=0xfd;
                                case 6:p20=1;p21=1;p22=0;P0=table1[num];P1=0xfe;
                                case 7:p20=1;p21=1;p22=1;P0=table1[num];P1=0xfd;
                                }
                                num++;
                                delay(15);////////////////////////這一行,放在兩個(gè)if里面。
                        }else{
                                num=0;
                        }
                        p=0;
                }
        }
}
回復(fù)

使用道具 舉報(bào)

ID:277550 發(fā)表于 2019-11-19 09:13 | 顯示全部樓層
函數(shù)改成這樣

delay0(100);////////////////////////這一行,放在兩個(gè)if里面。
回復(fù)

使用道具 舉報(bào)

ID:95352 發(fā)表于 2019-11-19 09:30 | 顯示全部樓層
devcang 發(fā)表于 2019-11-19 09:04
void main(){
        init();

為啥加了還是只是p1.1這個(gè)燈在亮
  1.         if(num<8)
  2.                         {
  3.                             switch(num)
  4.                                 {
  5.                                     case 0:P1=0xfe;p20=0;p21=0;p22=0;P0=table1[num];
  6.                                         case 1:P1=0xfd;p20=0;p21=0;p22=1;P0=table1[num];
  7.                                         case 2:P1=0xfe;p20=0;p21=1;p22=0;P0=table1[num];
  8.                                         case 3:P1=0xfd;p20=0;p21=1;p22=1;P0=table1[num];
  9.                                         case 4:P1=0xfe;p20=1;p21=0;p22=0;P0=table1[num];
  10.                                         case 5:P1=0xfd;p20=1;p21=0;p22=1;P0=table1[num];
  11.                                         case 6:P1=0xfe;p20=1;p21=1;p22=0;P0=table1[num];
  12.                                         case 7:P1=0xfd;p20=1;p21=1;p22=1;P0=table1[num];
  13.                                 }
  14.                                
  15.                                 delay0(50000);
  16.                                 num++;
  17.                         }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

ID:95352 發(fā)表于 2019-11-19 09:38 | 顯示全部樓層
  1. void main()
  2. {
  3.         init();

  4.         while(1)
  5.         {
  6.                 if(p==40)
  7.                 {
  8.                         if(num<8)
  9.                         {
  10.                             switch(num)
  11.                                 {
  12.                                     case 0:P1=0xfe;p20=0;p21=0;p22=0;P0=table1[num];
  13.                                         case 1:P1=0xfd;p20=0;p21=0;p22=1;P0=table1[num];
  14.                                         case 2:P1=0xfe;p20=0;p21=1;p22=0;P0=table1[num];
  15.                                         case 3:P1=0xfd;p20=0;p21=1;p22=1;P0=table1[num];
  16.                                         case 4:P1=0xfe;p20=1;p21=0;p22=0;P0=table1[num];
  17.                                         case 5:P1=0xfd;p20=1;p21=0;p22=1;P0=table1[num];
  18.                                         case 6:P1=0xfe;p20=1;p21=1;p22=0;P0=table1[num];
  19.                                         case 7:P1=0xfd;p20=1;p21=1;p22=1;P0=table1[num];
  20.                                 }
  21.                                
  22.                                 delay0(50000);
  23.                                 num++;
  24.                         }
  25.                         else
  26.                         {
  27.                                 num=0;
  28.                         }
  29.                     p=0;
  30.                 }
  31.         }

  32. }
復(fù)制代碼



為啥加了延時(shí)之后還是一樣?
回復(fù)

使用道具 舉報(bào)

ID:277550 發(fā)表于 2019-11-19 09:57 | 顯示全部樓層
圖和程序,不對(duì)應(yīng)的。 。。。。。。
回復(fù)

使用道具 舉報(bào)

ID:277550 發(fā)表于 2019-11-19 14:27 | 顯示全部樓層
switch
每個(gè) case 后邊,加break   


。。。。。。。。。邏輯也要調(diào)整一下的,自己慢慢 調(diào)整 試試
回復(fù)

使用道具 舉報(bào)

ID:277550 發(fā)表于 2019-11-19 14:39 | 顯示全部樓層
罷了,不賣關(guān)子了,貼


        while(1){
                switch(num){
                case 0:p20=0;p21=0;p22=0;P0=table1[q];P1=0xfe; break;
                case 1:p20=0;p21=0;p22=1;P0=table1[q];P1=0xfd; break;
                case 2:p20=0;p21=1;p22=0;P0=table1[q];P1=0xfb; break;
                case 3:p20=0;p21=1;p22=1;P0=table1[q];P1=0xf7; break;
                case 4:p20=1;p21=0;p22=0;P0=table1[q];P1=0xef; break;
                case 5:p20=1;p21=0;p22=1;P0=table1[q];P1=0xdf; break;
                case 6:p20=1;p21=1;p22=0;P0=table1[q];P1=0xbf; break;
                case 7:p20=1;p21=1;p22=1;P0=table1[q];P1=0x7f; break;
                }
                delay0(30);
               
                num++;
                if(num==8){
                        num=0;
                }
               
                if(p==20){
                        p=0;
                        q++;
                        if(q>9) q=0;
                }
        }
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2019-11-19 15:23 | 顯示全部樓層
switch-case-break語(yǔ)句和位碼都錯(cuò)了,給你改成數(shù)碼管動(dòng)態(tài)顯示0~7+流水燈
無(wú)標(biāo)題.jpg

  1. #include<reg52.h>
  2. #include<intrins.h>
  3. sbit p20=P2^0;
  4. sbit p21=P2^1;
  5. sbit p22=P2^2;
  6. char num=0;
  7. int  q=0;
  8. bit  p=0;
  9. char code table1[8]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07};

  10. void init()
  11. {
  12.         TMOD=0x01;
  13.         TH0=(65535-1000)/256;//1ms
  14.         TL0=(65535-1000)%256;
  15.         TR0=1;//定時(shí)器中斷開(kāi)始
  16.         EA=1;//打開(kāi)總中斷
  17.         ET0=1;//打開(kāi)定時(shí)器中斷
  18. }
  19. /*
  20. void delay0(int i)
  21. {
  22.         while(i--);
  23. }
  24. */
  25. void main()
  26. {
  27.         init();
  28.         P1=0xfe;//初始化
  29.         while(1)
  30.         {
  31.                 if(p==1)
  32.                 {
  33.                         p=0;
  34.                         P0=0x00;//消隱
  35.                         switch(num)//送位碼
  36.                         {
  37.                                 case 0:p20=0;p21=0;p22=0;break;
  38.                                 case 1:p20=1;p21=0;p22=0;break;
  39.                                 case 2:p20=0;p21=1;p22=0;break;
  40.                                 case 3:p20=1;p21=1;p22=0;break;
  41.                                 case 4:p20=0;p21=0;p22=1;break;
  42.                                 case 5:p20=1;p21=0;p22=1;break;
  43.                                 case 6:p20=0;p21=1;p22=1;break;
  44.                                 case 7:p20=1;p21=1;p22=1;break;
  45.                         }
  46.                         P0=table1[num];//送段碼
  47.                         num++;
  48.                         num%=8;//0~7
  49.                         q++;
  50.                         if(q>=500)//0.5秒
  51.                         {
  52.                                 q=0;
  53.                                 P1=(P1<<1)+1;//左移1位補(bǔ)1
  54.                                 if(P1==0xff)
  55.                                         P1=0xfe;       
  56.                         }
  57.                 }
  58.         }
  59. }
  60. void delay1() interrupt 1
  61. {
  62.         TH0=(65535-1000)/256;
  63.         TL0=(65535-1000)%256;
  64.         p=1;
  65. }
復(fù)制代碼




回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久久久精品影院 | 精品免费在线 | 欧美国产日韩在线观看 | 色婷婷亚洲国产女人的天堂 | 97精品超碰一区二区三区 | 欧美乱大交xxxxx另类电影 | 91视频大全 | 久久人人网 | 亚洲自拍偷拍欧美 | 久久久综合久久 | 日韩精品中文字幕在线 | 精品一区av| 成人av一区 | 91日韩| 一区二区三区四区不卡视频 | 黄色国产视频 | 日本不卡高字幕在线2019 | 狠狠干天天干 | 国产97久久 | 成人在线播放 | 国产99小视频 | 国产精品亚洲综合 | 九九导航| 欧美日韩综合一区 | 日韩欧美在线一区 | 久久精品青青大伊人av | 这里只有精品999 | 国产亚洲一区二区三区 | 91精品国产91综合久久蜜臀 | 亚洲永久精品国产 | 精品少妇一区二区三区日产乱码 | 国产免费高清 | 久久久夜色精品亚洲 | 亚洲一区中文字幕 | 麻豆视频在线免费观看 | 国产成人av一区二区三区 | 亚洲视频在线一区 | 欧美综合久久 | 国产精品一区二区在线 | 日本中文字幕日韩精品免费 | 久久久九九 |