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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2110|回復: 6
收起左側

C51單片機數碼管刷新問題

[復制鏈接]
ID:611626 發表于 2023-7-30 10:06 | 顯示全部樓層 |閱讀模式
  1. //問題描述:當顯示到P2.2位時,P2.7也會顯示
  2. #include<reg51.h>
  3. #include <intrins.h>
  4. #define uint unsigned int
  5. #define uchar unsigned char
  6. uint Count;
  7. uint Set_Count;
  8. uchar code ledcode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};         //共陰數碼管編碼0-9
  9. uchar data Ledbuff[8]={1};//顯示緩沖區
  10. void delayms(uint ms)
  11.   {
  12.     uchar k;
  13.    while(ms--)
  14.         {
  15.           for(k = 0; k < 120; k++);
  16.          }
  17.    }
  18. void display()                        //顯示程序display(uchar a,b,c,d,e)        char i;
  19. {
  20. static unsigned char i = 0;         

  21.         Ledbuff[0]=Set_Count%10;  //提取設定個位編碼
  22.         Ledbuff[1]=Set_Count%100/10;   //提取設定十位編碼
  23.         Ledbuff[2]=Set_Count/100%10;  //提取設定百位編碼
  24.         Ledbuff[3]=Set_Count/1000;   //提取設定千位編碼 這里解碼錯誤P2.2計數百位通的時候同時亮了

  25.   Ledbuff[4]=Count%10;  //P2.0提取計數個位編碼
  26.         Ledbuff[5]=Count%100/10; //P2.1提取計數十位編碼
  27.         Ledbuff[6]=Count/100%10;//%1000/100 P2.2提取計數百位,這里
  28.         Ledbuff[7]=Count/1000;
  29.         for(i=0;i<8;i++)

  30.         {               
  31.         switch(i)         //使用多分支選擇語句 i=count display 0x代表16進制
  32.                 {
  33.                   
  34.                             //  位P2.4=1 段=字碼表 位選緩沖 設定值求余[((SD_count%1000)%100 )/ 10]]
  35.                         case(0):P2=0xef;P0=ledcode[Ledbuff[0]];break;//顯示第一個個位共陰P2.4=ef=1110 1111    共陽P2.4=10=1 0000
  36.                         case(1):P2=0Xdf;P0=ledcode[Ledbuff[1]];break;//顯示第二個十位P2.5=0xDF=1101 1111 20=0010 0000
  37.                         case(2):P2=0Xbf;P0=ledcode[Ledbuff[2]];break;//P2.6=0xbf=1011 1111   40=100 0000
  38.                   case(3):P2=0X7f;P0=ledcode[Ledbuff[3]];break;//顯示千位共陰P2.7=0x7f=0111 1111 0x80=1000 0000   
  39.                            
  40.             case(4):P2=0Xfe;P0=ledcode[Ledbuff[4]];break;//顯示第一個個位共陰P2.0=fe=1111 1110    共陽P2.0=1=0000 0001
  41.                         case(5):P2=0Xfd;P0=ledcode[Ledbuff[5]];break;//顯示第二個十位P2.1=0xfd=1111 1101 2=0000 0010
  42.                
  43.                  case(6):P2=0x7b;P0=ledcode[Ledbuff[6]];break;//P2.2=0x7b=1111 1011   4=0000 0100這里影響3
  44.                         
  45.                                  case(7):P2=0xf7;P0=ledcode[Ledbuff[7]];break;  //P2.3=0xf7=1111 0111   0x8=0000 1000
  46.                 default: break;        
  47.         
  48.                 }
  49.                 //  P0=ledcode[Ledbuff[i]];        
  50.                         delayms(1); //顯示2MS
  51.                   P0=0x00;  //消影0xff;共陽位選高電平,段選全部高電平
  52.         }
  53. }
  54. void main()
  55. {        
  56.         Set_Count=5678;
  57.         Count=1234;         //Count        
  58. while(1)
  59.                                 
  60.         display();               
  61.         
  62. }
復制代碼

gongyang.rar

19.96 KB, 下載次數: 3

仿真

回復

使用道具 舉報

ID:611626 發表于 2023-7-30 10:09 | 顯示全部樓層
問題描述:當顯示到P2.2位時,P2.7也會顯示
回復

使用道具 舉報

ID:1090026 發表于 2023-7-30 17:02 | 顯示全部樓層
case(6):P2=0x7b;P0=ledcode[Ledbuff[6]];break;//P2.2=0x7b=1111 1011   4=0000 0100這里影響3
更改
case(6):P2=0xfb;P0=ledcode[Ledbuff[6]];break;//                      P2.2=0xfb=1111 1011   4=0000 0100   這里影響3P2那里是控制顯示哪一個數碼管的,P2哪里有兩個0,可以同時控制兩位
回復

使用道具 舉報

ID:611626 發表于 2023-7-30 19:45 | 顯示全部樓層
AiChiTang 發表于 2023-7-30 17:02
case(6):P2=0x7b;P0=ledcode[Ledbuff[6]];break;//P2.2=0x7b=1111 1011   4=0000 0100這里影響3[/backcolor ...

P2,2是count百位,P2.7是設定千位
回復

使用道具 舉報

ID:332444 發表于 2023-7-30 20:06 | 顯示全部樓層
多參閱別人寫的代碼,尤其是不同思維的代碼,看我帖子有多荔枝。
回復

使用道具 舉報

ID:213173 發表于 2023-7-30 20:26 | 顯示全部樓層
宏達工控 發表于 2023-7-30 10:09
問題描述:當顯示到P2.2位時,P2.7也會顯示

無標題.jpg
  1. #include <reg51.h>
  2. #include <intrins.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. uint Count;
  6. uint Set_Count;
  7. uchar code ledcode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//共陰數碼管編碼0-9
  8. uchar data Ledbuff[8]={1};//顯示緩沖區
  9. void delayms(uint ms)
  10. {
  11.         uchar k;
  12.         while(ms--)
  13.         {
  14.                 for(k = 0; k < 120; k++);
  15.         }
  16. }
  17. void display() //顯示程序display(uchar a,b,c,d,e)
  18. {
  19.         static unsigned char i = 0;         
  20.         switch(i)//使用多分支選擇語句 i=count display 0x代表16進制
  21.         {
  22.                 case(0):Ledbuff[0]=Set_Count/1000;break;
  23.                 case(1):Ledbuff[1]=Set_Count/100%10;break;
  24.                 case(2):Ledbuff[2]=Set_Count/10%10;break;
  25.                 case(3):Ledbuff[3]=Set_Count%10;break;
  26.                 case(4):Ledbuff[4]=Count/1000;break;
  27.                 case(5):Ledbuff[5]=Count/100%10;break;
  28.                 case(6):Ledbuff[6]=Count/10%10;break;
  29.                 case(7):Ledbuff[7]=Count%10;break;
  30.         }
  31.         P0=0x00;
  32.         P2=~(0x01<<i);
  33.         P0=ledcode[Ledbuff[i]];
  34.         delayms(1); //顯示2MS
  35.         i=++i%8;
  36. }
  37. void main()
  38. {        
  39.         Set_Count=5678;
  40.         Count=1234;
  41.         while(1)
  42.         {
  43.                 display();
  44.         }
  45. }
復制代碼



回復

使用道具 舉報

ID:611626 發表于 2023-7-31 09:09 | 顯示全部樓層

謝謝。犯了個幼兒科的錯誤 P2.2=0xfb=1111 1011 0x7b應該是0xfb
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费成人av | 日韩在线一区二区 | 国产一区二区三区四区 | 最新中文字幕 | 国产亚洲成av人片在线观看桃 | 亚洲va国产日韩欧美精品色婷婷 | 精品成人在线视频 | 中文字幕一区二区三区日韩精品 | 久久久久国产一区二区三区四区 | 日韩欧美国产精品一区二区 | 国产午夜精品久久久 | 国产 日韩 欧美 制服 另类 | 国产精品免费在线 | 日韩av成人| 国产区精品在线观看 | 毛片一级黄色 | 国产片一区二区三区 | 免费av电影网站 | 久久6视频| 精品一区二区电影 | 欧美一区二区三区在线观看视频 | 午夜精品久久久久久久久久久久久 | 精品在线一区二区三区 | 国产视频福利 | 日日噜噜噜夜夜爽爽狠狠视频, | 亚洲激情在线观看 | 亚洲小视频在线播放 | 欧美日韩电影一区 | 九九久久精品 | 成人小视频在线免费观看 | 中国一级特黄毛片大片 | 欧美天堂一区 | 中文在线a在线 | 国产在线精品区 | 天天躁人人躁人人躁狂躁 | 国产亚洲一级 | 国产精品久久国产精品久久 | 黄色一级片在线播放 | 久久大香| 日本天堂视频在线观看 | 日韩一区在线观看视频 |