標題: 采用單片機+74HC164的數碼管測試儀制作 附程序 [打印本頁]

作者: bxyyhan    時間: 2023-12-23 21:32
標題: 采用單片機+74HC164的數碼管測試儀制作 附程序
單片機采用8腳的STC15F104W單片機,驅動5個74HC164輪流點亮數碼管的段位,夾具用的是2個40腳的夾緊座,方便測試使用。供電采用的是鋰電池供電,采用TP4033作為電池的充電和升壓。已經用了2年了,很方便。

制作出來的數碼管測試儀實物圖如下:


電路原理圖如下:


單片機數碼管測試儀源程序如下:
  1. #include "CNT.H"
  2. #include "STC15.H"

  3. uchar_t dl = 0;        //當前點亮段 0-39
  4. bit led_zt = 0;        //當前共陽或共陰燈亮
  5. bit bzw = 0;


  6. void Timer0Init(void)                //400微秒@30.000MHz
  7. {
  8.         AUXR |= 0x80;        //定時器時鐘1T模式
  9.         TMOD &= 0xF0;        //設置定時器模式
  10.         TL0 = 0x20;                //設置定時初值
  11.         TH0 = 0xD1;                //設置定時初值
  12.         TF0 = 0;                //清除TF0標志
  13.         ET0 = 1;
  14.         TR0 = 1;                //定時器0開始計時
  15. }


  16. void LED1_Dl(void)        //共陰燈亮
  17. {
  18.         P34 = 1;        
  19.         P35 = 0;
  20. }
  21. void LED2_Dl(void)        //共陽燈亮
  22. {
  23.         P34 = 0;        
  24.         P35 = 1;
  25. }
  26. void KS_Init(void)
  27. {
  28.         P30 = 1;
  29.         P31 = 1;
  30.         P33 = 0;

  31.         LED1_Dl();
  32.         Timer0Init();                //400微秒@30.000MHz
  33. }
  34. void Delay15ms()                //@33.000MHz
  35. {
  36.         uchar_t i, j, k;
  37.         
  38.         i = 2;
  39.         j = 226;
  40.         k = 126;
  41.         do
  42.         {
  43.                 do
  44.                 {
  45.                         while (--k);
  46.                 } while (--j);
  47.         } while (--i);
  48. }
  49. void main(void)
  50. {
  51.         KS_Init();
  52.         EA = 1;
  53.         while(1)
  54.         {
  55.         
  56.         }
  57. }
  58. void Timer0_Rountine(void) interrupt 1
  59. {
  60.         //硬件清零
  61.         uchar_t x;
  62.         P34 = ~P34;
  63.         P35 = ~P35;
  64.         if(led_zt==0)        //共陰
  65.         {
  66.                 for(x=0;x<40;x++)
  67.                 {
  68.                         if(dl == x)
  69.                                 P30 = 0;
  70.                         else
  71.                                 P30 = 1;
  72.                         
  73.                         P31 = 0;        //上升沿
  74.                         P31 = 1;
  75.                 }
  76.         }
  77.         else
  78.         {
  79.                 for(x=0;x<40;x++)
  80.                 {
  81.                         if(dl == x)
  82.                                 P30 = 1;
  83.                         else
  84.                                 P30 = 0;
  85.                         
  86.                         P31 = 0;        //上升沿
  87.                         P31 = 1;
  88.                 }
  89.         }
  90.         dl++;
  91.         if(dl>=40)
  92.         {
  93.                 dl = 0;
  94.         }
  95. }
復制代碼

原理圖: 無
仿真: 無
代碼: 代碼.7z (17.42 KB, 下載次數: 22)


作者: joyb    時間: 2023-12-24 08:41
if(led_zt==0)        //共陰
是如何判斷的?
作者: 螞蟻科技    時間: 2024-3-31 18:39
共陰共陽怎么識別,還有數碼管的位和段是怎么識別的?
作者: zhuls    時間: 2024-4-1 09:51
共陰共陽好測,就是abcdefgh不能自動測。
作者: homedou    時間: 2024-4-7 16:39
好東西呀,要是PCB能開源就更好了。謝謝提供資料。
作者: smmj    時間: 2024-4-13 20:25
只測茶籽買專用的
作者: TP801    時間: 2024-4-16 12:34
為什么要用單片機呢?如果只是檢測筆段是否可以點亮,直接串電阻到電源上不就可以了?
作者: 螞蟻科技    時間: 2025-1-9 07:17
仿了一個,沒成功,不知道那里錯了
作者: gemxie    時間: 2025-1-16 08:19

好東西呀,要是PCB能開源就更好了。謝謝提供資料。
作者: mirage    時間: 2025-1-20 09:38
簡單的點亮測試變得復雜化了
作者: lmn2005    時間: 2025-1-20 15:28
TP801 發(fā)表于 2024-4-16 12:34
為什么要用單片機呢?如果只是檢測筆段是否可以點亮,直接串電阻到電源上不就可以了?

如果單獨檢測是否通電點亮,直接串幾個電阻就能搞定。如果想檢測腳位的順序是否為標準的順序就得用到單片貢,但這情況好像用得不多。
我認為,數碼管檢測儀最好能再檢測是共陽還是共陰比較好!




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1