亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2564|回復: 10
收起左側

兩位半5引腳LED數碼管研究

  [復制鏈接]
ID:97023 發表于 2025-7-25 23:34 | 顯示全部樓層 |閱讀模式
本帖最后由 ztzp 于 2025-7-25 23:38 編輯

拆機獲得了幾片兩位半5引腳的LED數碼管。
01.jpg


02.jpg
剛看到這種數碼管時,有點蒙!總共16段LED,5個引腳怎么夠用嘛?!
后來,請教了本壇網友“f556”后,才知道LED內部大概是這樣連接的:
07 原理.jpg
又看了他發來的視頻,基本明白了原理。
這種數碼管與平常的“共陰”或“共陽”接線與驅動都不同,這種的外部接線簡單,但驅動復雜,看了視頻也沒看明白。
這幾天閑得無聊,就準備研究一下這種數碼管。
用一個5mA的恒流源窮舉了所有引腳,得到了如下引腳關系表:

03 表格.jpg
用最笨的辦法,要顯示0~9的數字,按下表驅動:
04 表格.jpg
每個字符驅動時,要將相關I/O口設置為“推挽”,不相關的I/O口設置為“高阻”;甚至同一字符,不同字段也要按圖中的色塊分開驅動,否則會點亮其它不相關的筆劃,這是我在實驗中發現的。
比如“十位”的0這個字符,就要先驅動黃色塊3段,然后重新設置I/O口,再驅動綠色塊那3段。
04 表格2.jpg
再比如“十位”的2這個字符,就要先驅動黃色塊3段,然后重新設置I/O口,再驅動綠色塊那1段,再重新設置I/O口,再驅動黃色塊那1段。
04 表格3.jpg
當然所有字符和塊都采用動態掃描。
電路原理圖:
05 原理圖.jpg
用面包板搭的電路,顯示:123:

06 電路.jpg

評分

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

查看全部評分

回復

使用道具 舉報

ID:97023 發表于 2025-7-26 01:22 | 顯示全部樓層
  1. #include <STC15.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. sbit L1 = P1^0;
  5. sbit L2 = P1^1;
  6. sbit L3 = P1^2;
  7. sbit L4 = P1^3;
  8. sbit L5 = P1^4;

  9. void DelayXms(int m);        //延時若干ms
  10. uchar t = 2;        //延時2ms

  11. //百位
  12. void show_100();

  13. //十位
  14. void show_10_0();
  15. void show_10_1();
  16. void show_10_2();
  17. void show_10_3();
  18. void show_10_4();
  19. void show_10_5();
  20. void show_10_6();
  21. void show_10_7();
  22. void show_10_8();
  23. void show_10_9();

  24. //個位
  25. void show_0();
  26. void show_1();
  27. void show_2();
  28. void show_3();
  29. void show_4();
  30. void show_5();
  31. void show_6();
  32. void show_7();
  33. void show_8();
  34. void show_9();

  35. void main()
  36. {
  37.         while(1)
  38.         {
  39.                 //顯示:123
  40.                 show_100();
  41.                 DelayXms(t);
  42.                
  43.                 show_10_2();
  44.                 DelayXms(t);
  45.                
  46.                 show_3();
  47.                 DelayXms(t);
  48.         }
  49. }

  50. void show_0()
  51. {
  52.     P1M0 = 0x1e; P1M1 = 0xe1;
  53.         L5=1;
  54.         L2=0;
  55.         L3=0;
  56.         L4=0;
  57.         DelayXms(t);

  58.         L5=0;
  59.         L2=1;
  60.         L3=1;
  61.         L4=1;
  62.         DelayXms(t);
  63. }

  64. void show_1()
  65. {
  66.     P1M0 = 0x18; P1M1 = 0xe7;
  67.         L4=1;
  68.         L5=0;
  69.         DelayXms(t);

  70.     P1M0 = 0x14; P1M1 = 0xeb;
  71.         L5=1;
  72.         L3=0;
  73.         DelayXms(t);
  74. }

  75. void show_2()
  76. {
  77.     P1M0 = 0x1a; P1M1 = 0xe5;
  78.         L5=1;
  79.         L2=0;
  80.         L4=0;
  81.         DelayXms(t);

  82.     P1M0 = 0x1d; P1M1 = 0xe2;
  83.         L1=1;
  84.         L3=1;
  85.         L4=1;
  86.         L5=0;
  87.         DelayXms(t);
  88. }

  89. void show_3()
  90. {
  91.     P1M0 = 0x1c; P1M1 = 0xe3;
  92.         L5=1;
  93.         L3=0;
  94.         L4=0;
  95.         DelayXms(t);

  96.     P1M0 = 0x1d; P1M1 = 0xe2;
  97.         L1=1;
  98.         L3=1;
  99.         L4=1;
  100.         L5=0;
  101.         DelayXms(t);
  102. }

  103. void show_4()
  104. {
  105.     P1M0 = 0x1b; P1M1 = 0xe4;
  106.         L1=1;
  107.         L2=1;
  108.         L4=1;
  109.         L5=0;
  110.         DelayXms(t);

  111.     P1M0 = 0x14; P1M1 = 0xeb;
  112.         L5=1;
  113.         L3=0;
  114.         DelayXms(t);
  115. }

  116. void show_5()
  117. {
  118.     P1M0 = 0x1c; P1M1 = 0xe3;
  119.         L5=1;
  120.         L3=0;
  121.         L4=0;
  122.         DelayXms(t);

  123.     P1M0 = 0x17; P1M1 = 0xe8;
  124.         L1=1;
  125.         L2=1;
  126.         L3=1;
  127.         L5=0;
  128.         DelayXms(t);
  129. }

  130. void show_6()
  131. {
  132.     P1M0 = 0x1e; P1M1 = 0xe1;
  133.         L5=1;
  134.         L2=0;
  135.         L3=0;
  136.         L4=0;
  137.         DelayXms(t);

  138.     P1M0 = 0x17; P1M1 = 0xe8;
  139.         L1=1;
  140.         L2=1;
  141.         L3=1;
  142.         L5=0;
  143.         DelayXms(t);
  144. }

  145. void show_7()
  146. {
  147.     P1M0 = 0x1c; P1M1 = 0xe3;
  148.         L3=0;
  149.         L4=0;
  150.         L5=1;
  151.         DelayXms(t);

  152.     P1M0 = 0x18; P1M1 = 0xe7;
  153.         L4=1;
  154.         L5=0;
  155.         DelayXms(t);
  156. }

  157. void show_8()
  158. {
  159.     P1M0 = 0x1e; P1M1 = 0xe1;
  160.         L5=1;
  161.         L2=0;
  162.         L3=0;
  163.         L4=0;
  164.         DelayXms(t);

  165.     P1M0 = 0x1f; P1M1 = 0xe0;
  166.         L1=1;
  167.         L2=1;
  168.         L3=1;
  169.         L4=1;
  170.         L5=0;
  171.         DelayXms(t);
  172. }

  173. void show_9()
  174. {
  175.     P1M0 = 0x1c; P1M1 = 0xe3;
  176.         L5=1;
  177.         L3=0;
  178.         L4=0;
  179.         DelayXms(t);

  180.     P1M0 = 0x1f; P1M1 = 0xe0;
  181.         L1=1;
  182.         L2=1;
  183.         L3=1;
  184.         L4=1;
  185.         L5=0;
  186.         DelayXms(t);
  187. }


  188. void show_10_0()
  189. {
  190.     P1M0 = 0x0f; P1M1 = 0xf0;

  191.         L3=0;
  192.         L4=1;
  193.         L1=1;
  194.         L2=1;
  195.         DelayXms(t);
  196.         
  197.         L4=0;
  198.         L3=1;
  199.         DelayXms(t);
  200. }

  201. void show_10_1()
  202. {
  203.     P1M0 = 0x0c; P1M1 = 0xf3;
  204.         L3=1;
  205.         L4=0;
  206.         DelayXms(t);
  207.         
  208.     P1M0 = 0x06; P1M1 = 0xf9;
  209.         L3=0;
  210.         L2=1;
  211.         DelayXms(t);
  212. }

  213. void show_10_2()
  214. {
  215.     P1M0 = 0x0f; P1M1 = 0xf0;
  216.         L4=0;
  217.         L1=1;
  218.         L2=1;
  219.         L3=1;
  220.         DelayXms(t);

  221.     P1M0 = 0x03; P1M1 = 0xfc;
  222.         L2=0;
  223.         DelayXms(t);
  224.         
  225.     P1M0 = 0x0c; P1M1 = 0xf3;
  226.         L3=0;
  227.         L4=1;
  228.         DelayXms(t);
  229. }

  230. void show_10_3()
  231. {
  232.     P1M0 = 0x0e; P1M1 = 0xf1;
  233.         L4=0;
  234.         L3=1;
  235.         DelayXms(t);
  236.         
  237.     P1M0 = 0x03; P1M1 = 0xfc;
  238.         L2=0;
  239.         L1=1;
  240.         DelayXms(t);
  241.         
  242.     P1M0 = 0x0e; P1M1 = 0xf1;
  243.         L3=0;
  244.         L4=1;
  245.         L2=1;
  246.         DelayXms(t);
  247. }        

  248. void show_10_4()
  249. {
  250.     P1M0 = 0x0c; P1M1 = 0xf3;
  251.         L3=1;
  252.         L4=0;
  253.         DelayXms(t);
  254.         
  255.     P1M0 = 0x07; P1M1 = 0xf8;
  256.         L1=1;
  257.         L2=1;
  258.         L3=0;
  259.         DelayXms(t);
  260.         
  261.         L2=0;
  262.         DelayXms(t);
  263. }

  264. void show_10_5()
  265. {
  266.     P1M0 = 0x0f; P1M1 = 0xf0;
  267.         L3=0;
  268.         L1=1;
  269.         L2=1;
  270.         L4=1;
  271.         DelayXms(t);
  272.         
  273.     P1M0 = 0x0a; P1M1 = 0xf5;
  274.         L4=0;
  275.         DelayXms(t);

  276.     P1M0 = 0x03; P1M1 = 0xfc;
  277.         L2=0;
  278.         DelayXms(t);
  279. }

  280. void show_10_6()
  281. {
  282.     P1M0 = 0x0d; P1M1 = 0xf2;
  283.         L4=1;
  284.         L1=1;
  285.         L3=0;
  286.         DelayXms(t);
  287.         
  288.     P1M0 = 0x03; P1M1 = 0xfc;
  289.         L2=0;
  290.         DelayXms(t);
  291.         
  292.     P1M0 = 0x0f; P1M1 = 0xf0;
  293.         L2=1;
  294.         L4=0;
  295.         DelayXms(t);
  296. }

  297. void show_10_7()
  298. {
  299.     P1M0 = 0x0c; P1M1 = 0xf3;
  300.         L3=1;
  301.         L4=0;
  302.         DelayXms(t);

  303.     P1M0 = 0x0e; P1M1 = 0xf1;
  304.         L3=0;
  305.         L2=1;
  306.         L4=1;
  307.         DelayXms(t);
  308. }

  309. void show_10_8()
  310. {
  311.     P1M0 = 0x0f; P1M1 = 0xf0;
  312.         L4=1;
  313.         L2=1;
  314.         L1=1;
  315.         L3=0;
  316.         DelayXms(t);
  317.         
  318.     P1M0 = 0x0b; P1M1 = 0xf4;
  319.         L2=0;
  320.         L4=0;
  321.         DelayXms(t);

  322.     P1M0 = 0x0e; P1M1 = 0xf1;
  323.         L2=1;
  324.         L3=1;
  325.         DelayXms(t);
  326. }        

  327. void show_10_9()
  328. {
  329.     P1M0 = 0x0f; P1M1 = 0xf0;
  330.         L4=1;
  331.         L1=1;
  332.         L2=1;
  333.         L3=0;
  334.         DelayXms(t);

  335.     P1M0 = 0x03; P1M1 = 0xfc;
  336.         L2=0;
  337.         DelayXms(t);

  338.     P1M0 = 0x0e; P1M1 = 0xf1;
  339.         L2=1;
  340.         L3=1;
  341.         L4=0;
  342.         DelayXms(t);
  343. }

  344. void show_100()        //顯示百位的1
  345. {
  346.     P1M0 = 0x0e; P1M1 = 0xf1;
  347.         L2=0;
  348.         L3=1;
  349.         L4=1;
  350. }

  351. void DelayXms(int m)        //@12.000MHz,延時Xms
  352. {
  353.         uint k;
  354.         for(k=0; k<m; k++)
  355.         {
  356.                 uchar data i, j;

  357.                 i = 12;
  358.                 j = 169;
  359.                 do
  360.                 {
  361.                         while (--j);
  362.                 } while (--i);
  363.         }
  364. }
復制代碼


評分

參與人數 1黑幣 +30 收起 理由
wpppmlah + 30 共享資料的獎勵!

查看全部評分

回復

使用道具 舉報

ID:72088 發表于 2025-7-27 09:06 | 顯示全部樓層
下功夫了,必須點贊,
回復

使用道具 舉報

ID:69038 發表于 2025-7-28 16:56 | 顯示全部樓層
這個方法確實有點復雜。
其實你可以開一塊顯示緩存,把要顯示的字符內容映射到緩存,然后定時器不停把緩存輸出到IO就行了。
不用管顯示什么內容。
回復

使用道具 舉報

ID:619259 發表于 2025-7-28 23:50 | 顯示全部樓層
可以歸納0-9的顯示子程序共性,寫成一個帶參數的子程序,顯示哪個數字就查找相應筆段代碼表和IO配置代碼表,實現程序簡化。
回復

使用道具 舉報

ID:97023 發表于 2025-7-31 23:54 | 顯示全部樓層
  1. #include <STC15.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. sbit L1 = P1^0;
  5. sbit L2 = P1^1;
  6. sbit L3 = P1^2;
  7. sbit L4 = P1^3;
  8. sbit L5 = P1^4;

  9. //段函數,w取:1、2、3,表示:百、十、個位。
  10. void a(uchar w);
  11. void b(uchar w);
  12. void c(uchar w);
  13. void d(uchar w);
  14. void e(uchar w);
  15. void f(uchar w);
  16. void g(uchar w);

  17. //數字函數,w同上。
  18. void n0(uchar w);
  19. void n1(uchar w);
  20. void n2(uchar w);
  21. void n3(uchar w);
  22. void n4(uchar w);
  23. void n5(uchar w);
  24. void n6(uchar w);
  25. void n7(uchar w);
  26. void n8(uchar w);
  27. void n9(uchar w);

  28. void DelayXms(int m);        //延時若干ms
  29. uchar t = 2;        //延時2ms

  30. void main()
  31. {
  32.         while(1)
  33.         {
  34.                 //顯示:173
  35.                 n1(1);
  36.                 n7(2);
  37.                 n3(3);
  38.         }
  39. }

  40. void a(uchar w)
  41. {
  42.         if(w==2)
  43.         {
  44.                 P1M0 = 0x0c; P1M1 = 0xf3;
  45.                 L4=1;
  46.                 L3=0;
  47.         }
  48.         else
  49.         {
  50.             P1M0 = 0x18; P1M1 = 0xe7;
  51.                 L5=1;
  52.                 L4=0;
  53.         }
  54.         DelayXms(t);
  55. }
  56.        
  57. void b(uchar w)
  58. {
  59.         if(w==1)
  60.         {
  61.             P1M0 = 0x06; P1M1 = 0xf9;
  62.                 L3=1;
  63.                 L2=0;
  64.         }
  65.         else if(w==2)
  66.         {
  67.                 P1M0 = 0x0c; P1M1 = 0xf3;
  68.                 L3=1;
  69.                 L4=0;
  70.         }
  71.         else
  72.         {
  73.             P1M0 = 0x18; P1M1 = 0xe7;
  74.                 L4=1;
  75.                 L5=0;
  76.         }
  77.         DelayXms(t);
  78. }
  79.        
  80. void c(uchar w)
  81. {
  82.         if(w==1)
  83.         {
  84.             P1M0 = 0x0a; P1M1 = 0xf5;
  85.                 L4=1;
  86.                 L2=0;
  87.         }
  88.         else if(w==2)
  89.         {
  90.             P1M0 = 0x06; P1M1 = 0xf9;
  91.                 L2=1;
  92.                 L3=0;
  93.         }
  94.         else
  95.         {
  96.             P1M0 = 0x14; P1M1 = 0xeb;
  97.                 L5=1;
  98.                 L3=0;
  99.         }
  100.         DelayXms(t);
  101. }
  102.        
  103. void d(uchar w)
  104. {
  105.         if(w==2)
  106.         {
  107.             P1M0 = 0x0a; P1M1 = 0xf5;
  108.                 L2=1;
  109.                 L4=0;
  110.         }
  111.         else
  112.         {
  113.             P1M0 = 0x14; P1M1 = 0xeb;
  114.                 L3=1;
  115.                 L5=0;
  116.         }
  117.         DelayXms(t);
  118. }
  119.        
  120. void e(uchar w)
  121. {
  122.         if(w==2)
  123.         {
  124.             P1M0 = 0x09; P1M1 = 0xf6;
  125.                 L1=1;
  126.                 L4=0;
  127.         }
  128.         else
  129.         {
  130.             P1M0 = 0x12; P1M1 = 0xed;
  131.                 L5=1;
  132.                 L2=0;
  133.         }
  134.         DelayXms(t);
  135. }
  136.        
  137. void f(uchar w)
  138. {
  139.         if(w==2)
  140.         {
  141.             P1M0 = 0x05; P1M1 = 0xfa;
  142.                 L1=1;
  143.                 L3=0;
  144.         }
  145.         else
  146.         {
  147.             P1M0 = 0x12; P1M1 = 0xed;
  148.                 L2=1;
  149.                 L5=0;
  150.         }
  151.         DelayXms(t);
  152. }
  153.        
  154. void g(uchar w)
  155. {
  156.         if(w==2)
  157.         {
  158.             P1M0 = 0x03; P1M1 = 0xfc;
  159.                 L1=1;
  160.                 L2=0;
  161.         }
  162.         else
  163.         {
  164.             P1M0 = 0x11; P1M1 = 0xee;
  165.                 L1=1;
  166.                 L5=0;
  167.         }
  168.         DelayXms(t);
  169. }

  170. void n0(uchar w)
  171. {
  172.         a(w);
  173.         b(w);
  174.         c(w);
  175.         d(w);
  176.         e(w);
  177.         f(w);
  178. }       

  179. void n1(uchar w)
  180. {
  181.         b(w);
  182.         c(w);
  183. }       

  184. void n2(uchar w)
  185. {
  186.         a(w);
  187.         b(w);
  188.         d(w);
  189.         e(w);
  190.         g(w);
  191. }       

  192. void n3(uchar w)
  193. {
  194.         a(w);
  195.         b(w);
  196.         c(w);
  197.         d(w);
  198.         g(w);
  199. }       

  200. void n4(uchar w)
  201. {
  202.         b(w);
  203.         c(w);
  204.         f(w);
  205.         g(w);
  206. }       

  207. void n5(uchar w)
  208. {
  209.         a(w);
  210.         c(w);
  211.         d(w);
  212.         f(w);
  213.         g(w);
  214. }       

  215. void n6(uchar w)
  216. {
  217.         a(w);
  218.         c(w);
  219.         d(w);
  220.         e(w);
  221.         f(w);
  222.         g(w);
  223. }       

  224. void n7(uchar w)
  225. {
  226.         a(w);
  227.         b(w);
  228.         c(w);
  229. }       

  230. void n8(uchar w)
  231. {
  232.         a(w);
  233.         b(w);
  234.         c(w);
  235.         d(w);
  236.         e(w);
  237.         f(w);
  238.         g(w);
  239. }       

  240. void n9(uchar w)
  241. {
  242.         a(w);
  243.         b(w);
  244.         c(w);
  245.         d(w);
  246.         f(w);
  247.         g(w);
  248. }       

  249. void DelayXms(int m)        //@12.000MHz,延時Xms
  250. {
  251.         uint k;
  252.         for(k=0; k<m; k++)
  253.         {
  254.                 uchar data i, j;

  255.                 i = 12;
  256.                 j = 169;
  257.                 do
  258.                 {
  259.                         while (--j);
  260.                 } while (--i);
  261.         }
  262. }
復制代碼
謝謝以上各位的回復,根據樓上的建議,重新改寫了代碼。


回復

使用道具 舉報

ID:1112603 發表于 2025-8-12 08:45 | 顯示全部樓層
學習5腳數碼管的使用,這個思路很好!下一步考慮獲取的數字怎么調取相應的函數顯示
回復

使用道具 舉報

ID:46004 發表于 2025-9-1 09:06 | 顯示全部樓層
4位半數碼管,7個引腳,同理
回復

使用道具 舉報

ID:71233 發表于 2025-9-1 13:17 | 顯示全部樓層
這個太復雜了!
回復

使用道具 舉報

ID:151348 發表于 2025-9-5 17:03 | 顯示全部樓層
這個可以,省了不少引腳
回復

使用道具 舉報

ID:584814 發表于 2025-10-9 08:54 | 顯示全部樓層
查理復用,便宜的產品上常見這東東,四位的也常見于收音機。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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