找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2227|回復: 9
收起左側

單片機數(shù)碼管 為什么數(shù)字只顯示一半呢?

[復制鏈接]
ID:1068873 發(fā)表于 2023-3-29 11:23 來自觸屏版 | 顯示全部樓層 |閱讀模式
B2BAC526-F475-4698-A7FF-A370CA0F8AB9.png
  1. #include<reg51.h>
  2.   typedef unsigned int uint;
  3.   typedef unsigned char uchar;
  4.   uchar led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  5.   uchar a[3];
  6.   uchar b[]={0x01,0x02,0x04,};
  7.   uint second;
  8.   uchar key;
  9.   uint z;
  10.   uchar flag=0;
  11.   sbit keyif=P3^7;

  12.   void delay(uchar i){
  13.   uchar j;
  14.   for(;i>0;i--){
  15.   for(j=0;j<100;j++);
  16.   }
  17.   }

  18.   void init(void){
  19.   TMOD=0x02;
  20.   second=0;
  21.   EA=1;
  22.   ET0=1;
  23.   key=0;
  24.   z=0;
  25.   }

  26.    void display(void){
  27.   uchar i;
  28.   a[0]=led[second/100];
  29.   a[1]=led[second%100/10];
  30.   a[2]=led[second%10];
  31.   for(i=0;i<3;i++){
  32.   P2=b[i];
  33.   P0=a[i];
  34.   delay(10);
  35.   }
  36.   }
  37.    void main(){
  38. init ( ) ;
  39. P0 = led[0];
  40. P2 = 0;
  41. while(1){
  42.   if(keyif ==0){
  43.    key++;
  44.    switch(key){
  45. case 1:
  46.     second =0;
  47.     flag =0;
  48.     TH0 = 0x00;
  49.     TL0 = 0x00;
  50.     TR0 = 1;
  51.     break;
  52. case 3:
  53. second =0;
  54. P0 = led[0];
  55. P2 = 0;
  56. flag =2;
  57. break;
  58. }
  59. while(keyif ==0);
  60. }
  61. switch(key){
  62. case 2 :
  63. z = 0;
  64. TR0 = 0;
  65. display();
  66. break;
  67. case 4:
  68. second =404;
  69. flag =1;
  70. display();
  71. key = 0;
  72. break;

  73. }
  74. if(flag==1)
  75. display();
  76. }
  77. }

  78. void timer()interrupt 1 using 0
  79. {
  80. TR0 = 0;
  81. TH0 = 0x00;
  82. TL0 = 0x00;
  83. z++;

  84. display();
  85. if(z == 15) {
  86. display();
  87. second++;
  88. z = 0;
  89. }
  90. if (second ==999){
  91. TR0=0;
  92. second =0;
  93. key = 1;
  94. }
  95. TR0 = 1;
  96. }
復制代碼
回復

使用道具 舉報

ID:69038 發(fā)表于 2023-3-29 13:56 | 顯示全部樓層
都仿真了,就不能單步執(zhí)行一下,很快就能發(fā)現(xiàn)問題了
回復

使用道具 舉報

ID:69038 發(fā)表于 2023-3-29 14:01 | 顯示全部樓層
整個代碼邏輯有點亂~
寫代碼之前,先畫個流程吧~~
回復

使用道具 舉報

ID:1068873 發(fā)表于 2023-3-29 18:55 來自觸屏版 | 顯示全部樓層
zhuls 發(fā)表于 2023-3-29 14:01
整個代碼邏輯有點亂~
寫代碼之前,先畫個流程吧~~

謝謝!我更換了led,解決了問題!
回復

使用道具 舉報

ID:624769 發(fā)表于 2023-3-29 21:48 | 顯示全部樓層
不亮的地方,組成數(shù)字 721
所以,是共陰共陽搞錯了。
回復

使用道具 舉報

ID:332444 發(fā)表于 2023-3-31 09:19 | 顯示全部樓層
想看數(shù)碼管異常這里有幾張,能全部知道是怎么回事算本事.
1.png 1.png 1.png 1.png 1.png 1.png
回復

使用道具 舉報

ID:1070823 發(fā)表于 2023-4-11 12:06 | 顯示全部樓層
輸出取反,或者換個其他極性的數(shù)碼管
回復

使用道具 舉報

ID:291668 發(fā)表于 2023-4-11 12:50 | 顯示全部樓層
又是硬件問題嗎?
回復

使用道具 舉報

ID:1071090 發(fā)表于 2023-4-11 16:19 | 顯示全部樓層
電路連接錯誤:如果單片機數(shù)碼管顯示數(shù)字只有一半,可能是因為電路連接不正確。
程序問題:程序編寫不正確也會導致單片機的數(shù)碼管只顯示一半。程序設計時需要確保輸出控制信號的正確性以及程序流程的正確性。
回復

使用道具 舉報

ID:619259 發(fā)表于 2023-4-11 16:58 | 顯示全部樓層
xianfajushi 發(fā)表于 2023-3-31 09:19
想看數(shù)碼管異常這里有幾張,能全部知道是怎么回事算本事.

不消隱造成的顯示錯誤
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表