找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1041|回复: 3
收起左侧

单片机数码管显示电路问题 加上三极管显示就不正常

[复制链接]
ID:693230 发表于 2022-12-31 14:46 | 显示全部楼层 |阅读模式
为什么加上三极管显示就不正常,一个一个显示,但去掉三极管就显示正常了
)A}F)P4Y9H}BOSVGW{DVR1Z.png ]`YOQFIA))5MLPVT(GEQ.png OG{H5NP)TJL`(0M`3L{SX}7.png
单片机源程序如下:
  1. #include<reg51.h>

  2. #define uin unsigned int

  3. #define uchar unsigned char         

  4. unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

  5. unsigned char code tablet[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x08,0x03,0x46,0x21,0x06,0x0e};

  6. unsigned char code show[]={0x70,0xB0,0xD0,0xE0};//三极管换成0x10,0x20,0x40,0x80

  7. unsigned int count=0;

  8. unsigned char group[10]={0};

  9. sbit P3_2=P3^2;

  10. sbit P3_4=P3^4;

  11. sbit P3_5=P3^5;               

  12. sbit P3_6=P3^6;

  13. sbit P3_7=P3^7;



  14. uin math,i,j,k,g,special;

  15. uchar p=0,o=0,b=0,m=0,t=0,h=0,q=1;         

  16. void delay(unsigned int time)

  17. {

  18.        unsigned int j=0;

  19.                    for(;time>0;time--)

  20.               for(j=0;j<100;j++);         

  21. }

  22. key1() interrupt 2{

  23.         if(m==0){         

  24.           math=count;

  25.     group[p]=math;

  26.     p++;

  27.           o++;

  28.     if(p>=10) m=1;

  29.                 }}

  30. software() interrupt 1{

  31.         

  32.           t++;        

  33.                 if(t==2)

  34.                 {count++;t=0;}

  35.     TH0=0x3c;

  36.     TL0=0xb0;                  

  37.                 }

  38. void clr()

  39. { uchar c;

  40.    for(c=0;c<10;c++)

  41.    group[c]=0;}         



  42.          

  43. void main(){

  44.          

  45.     TMOD=0x01;

  46.     TH0=0x3c;

  47.     TL0=0xb0; P3_2=1;   

  48. IT0=1;EX0=1;EA=1;

  49. IT1=1;EX1=1;         

  50. TR0=0; ET0=1;         

  51. while(1)

  52.          { P3_2=1;

  53.                  

  54.                           if(b==0){                                                  

  55.          for(i=0;i<4;i++)

  56.                   { if(i==0)

  57.                                 {P2=show[i];

  58.                                  P0=table[p];



  59.                                 }

  60.                                 else if(i==1)

  61.                                 {P2=show[i];

  62.                                  P0=table[count/100];

  63.                

  64.                                 }

  65.                else if(i==2)

  66.         {P2=show[i];

  67.          P0=tablet[count/10];

  68.       

  69.                                 }

  70.                                 else  if(i==3)

  71.                                 {P2=show[i];

  72.                                  P0=table[count%10];                                

  73.                                 }

  74.                          delay(20);}}

  75.                         

  76.                  if(P3_7==0)

  77.      {delay(10);

  78.                          if(P3_7==0)

  79.        {TR0=1;b=0;m=0;

  80.                                 }        

  81.                  

  82.   if(P3_4==0)

  83.      {delay(10);

  84.                          if(P3_4==0)

  85.        {TR0=0;

  86.                                 }               

  87.                  

  88.                  if(P3_5==0)

  89.                   {delay(10);

  90.                          if(P3_5==0)

  91.                           { p=0;

  92.                                  b=1;

  93.                                  TR0=0;

  94.                                  count=0;

  95.                                 if(b==1){

  96.                                  for(k=0;k<o;k++)

  97.                                  { special=group[p];

  98.                                         for(g=0;g<20;g++)

  99.           {                                          

  100.                                         for(i=0;i<4;i++)

  101.                                         { if(i==0)

  102.                                 {P2=show[i];

  103.                                  P0=table[q];

  104.                                 delay(10);

  105.                                 }

  106.                else if(i==1)

  107.         {P2=show[i];

  108.          P0=table[special/100];

  109.         delay(10);        

  110.                                 }

  111.                                 else if(i==2)

  112.                                 {P2=show[i];

  113.                                  P0=tablet[special/10%10];

  114.          delay(10);}

  115.                                 else if(i==3)

  116.                                 {P2=show[i];

  117.                                  P0=table[special%10];

  118.          delay(10);}

  119.                                             

  120.                                 }}

  121.                           p++;

  122.                                 q++;

  123.                                 if(p==o)

  124.                                         {b=0;count=0;p=0;i=0;k=0;special=0;o=0;q=1;clr();P3_2=0;delay(10);}

  125.                           }

  126.                          }}

  127.      }



  128.           if(P3_6==0)

  129.      {delay(10);

  130.                          if(P3_6==0)

  131.        { P3_2=0;

  132.                                  delay(15);

  133.                                  

  134.                                  TR0=0;

  135.                                 count=0;b=0;p=0;i=0;m=0;special=0;q=1;clr();

  136.                                 

  137.                                 }        

  138.                                 }        

  139.                                 }

  140.                         }

  141.                 }

  142.         }
复制代码

原理图.7z (33.08 KB, 下载次数: 8)
回复

使用道具 举报

ID:88256 发表于 2022-12-31 17:55 | 显示全部楼层
三极管起反相作用的
回复

使用道具 举报

ID:94031 发表于 2022-12-31 19:47 | 显示全部楼层
加三极管会使信号倒相。
回复

使用道具 举报

ID:332444 发表于 2022-12-31 20:00 | 显示全部楼层
不讨论程序问题,就单三极管控制来说几个10K的电阻是多余的,从图上色点看似乎是共阳数码管,而控制似乎是低电平的,哪就是要用一个非门转换,可以用PNP也可以用NPN,也可以非门电路。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表