找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 7536|回復(fù): 1
收起左側(cè)

51單片機(jī)之三極管控數(shù)碼管源程序+電路-初學(xué)者

[復(fù)制鏈接]
ID:439613 發(fā)表于 2019-7-27 08:59 | 顯示全部樓層 |閱讀模式
程序包含靜態(tài)顯示 和 計數(shù)  消隱問題都在程序中解決(本程序是用共陽數(shù)碼管)一原理圖
1.1數(shù)碼管引腳圖
20.png

2.2關(guān)于共陽與共陰的區(qū)別
21.png   //共陽數(shù)碼管 段位全部接正極  段位數(shù)碼管 置零亮
2.3電路圖
23.png 程序使用的是共陽數(shù)碼管

二程序
主程序解釋:共陽數(shù)碼管,三極管控制,通過先關(guān)閉數(shù)碼管的位選,為什么要關(guān)閉位選呢?是因為要去消隱,因為數(shù)碼管利用的是余暉效應(yīng) 他們并不是同時顯示的而是一個接著一個顯示的,
例如 你打開一個數(shù)碼管 延時1ms,人眼是看不到的,所以看的時候是同時顯示的。
2.1延時函數(shù)
31.png 使用的是0us,防止數(shù)碼管過快

2.2數(shù)碼管程序 33.png 圖上有解釋
2.3主程序 30.png 利用的是定時器,在后面有程序源碼。

單片機(jī)源程序如下:
  1. #include <reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. uchar code ddata[]={             //共陽數(shù)碼管 段位全部接正極  段位數(shù)碼管 置零亮  
  5.                                                 0xc0,//0                                
  6.                                                 0xf9,//1
  7.                                                 0xa4,//2
  8.                                                 0xb0,//3
  9.                                                 0x99,//4
  10.                                                 0x92,//5                  1001 0000
  11.                                                 0x82,//6
  12.                                                 0xf8,//7
  13.                                                 0x80,//8
  14.                                                 0x90,//9
  15.                                                 0x88,//A          10
  16.                                                 0x83,//b          11
  17.                                                 0xc6,//C          12
  18.                                                 0x86,//E        13
  19.                                                 0x9c,//F        14
  20.                                                 0x89,//H        15
  21.                                                 0xc7,//L        16
  22.                                                 0xab,//n        17
  23.                                                 0xe3,//u        18
  24.                                                 0x8c,//P        19
  25.                                                 0xbf,//-        20
  26.                                                 0xa3,//o        21
  27.                                                 0xff,
  28.                                                 0x00} ;
  29. uchar code wdata[]={          //位選 是讓第幾個數(shù)碼管亮 從左到右  
  30.                                                 0xfe,//0
  31.                                                 0xfd,//1
  32.                                                 0xfb,//2
  33.                                                 0xf7,//3                                       
  34.                                         };
  35. int a = 5210,count0;

  36.                                        
  37. void delay1(uint z)  //延時函數(shù)
  38. {
  39.         uint x,y;
  40.         for(x = z;x > 0;x --)
  41.                 for(y = 12;y > 0;y --);

  42. }
  43. void time_ds()  //定時器配置函數(shù)
  44. {
  45.         TMOD = 0x01; //0x89 只能字節(jié) 定時器0 16模式定時器
  46.         TH0 = 0x4b;//50ms
  47.         TL0 = 0xfe;
  48.         TR0 = 1;  //打開定時器
  49. }

  50. void delay(void)   //誤差 0us 數(shù)碼管延時專用
  51. {
  52.         unsigned char a,b,c;
  53.         for(c=1;c>0;c--)
  54.                         for(b=222;b>0;b--)
  55.                                 for(a=5;a>0;a--);
  56. }

  57. void display(int a) //數(shù)碼管顯示函數(shù)
  58. {
  59.            int g,s,b,q;  
  60.                         g = a % 10;    //取走形參的個位十位百位,千位
  61.                         s = a / 10 % 10;
  62.                         b = a / 100 % 10;
  63.                         q = a / 1000 % 10;
  64.         
  65.                         P2 = 0xff;  //關(guān)閉數(shù)碼管的位選 全部  防止產(chǎn)生重影
  66.                         P0 = ddata[g]; //為數(shù)碼管的段位賦值
  67.                         P2 = wdata[0];  // 接通數(shù)碼管的位選
  68.                         delay();  //延遲   延遲不要過大 防止重影
  69.         
  70.                         
  71.                         P2 = 0xff;
  72.                         P0 = ddata[s];
  73.                         P2 = wdata[1];
  74.                         delay();
  75.         

  76.                         P2 = 0xff;
  77.                         P0 = ddata[b];
  78.                         P2 = wdata[2];
  79.                         delay();

  80.                         P2 = 0xff;
  81.                         P0 = ddata[q];
  82.                         P2 = wdata[3];
  83.                         delay();



  84. }
  85. /*
  86.         共陽數(shù)碼管 ,三極管空  通過先關(guān)閉數(shù)碼管的位選
  87. 為什么要先關(guān)閉位選  ,是因為要去“消影”,因為數(shù)碼管利用余暉效應(yīng) 他們并不是同時顯示的而是一個接著一個顯示的  
  88. 例如 你打開一個數(shù)碼管 延時1ms 人眼是看不到的 ,所以人看的時候是同時顯示的 。
  89.         不懂可以看        鎖存器控制 http://www.torrancerestoration.com/bbs/dpj-10971-1.html

  90. */
  91. void main()
  92. {
  93.         time_ds();
  94.         while(1)
  95.         {
  96.                 display(a);  //數(shù)碼管顯示函數(shù)
  97.         //        delay1(); //延遲 496+4 0.5秒
  98.                 if(TF0 ==1) // 溢出 則TF = 0
  99.                 {
  100.                         TF0 = 0;
  101.                         TH0 = (65535 - 46082)/256;        //50ms 兩種書寫方法 一種十六進(jìn)制 一種這個
  102.                         TL0 = (65535 - 46082)%256;
  103.                         count0++;
  104.                 }
  105.                 if(count0 == 20) //溢出等于0  50*20一秒走一次
  106.                 {
  107.                         count0 = 0;
  108.                         a--;
  109.                 }
  110.                 if(a == 0)   //如果a減到0則 賦初值 5210
  111.                         a = 5210;
  112.         }
  113.         
  114. }
復(fù)制代碼

所有資料51hei提供下載:
數(shù)碼管.zip (45.08 KB, 下載次數(shù): 19)



評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:21104 發(fā)表于 2019-9-11 11:15 | 顯示全部樓層
標(biāo)記參考
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表