标题: 用单片机制作的数码管测试器 [打印本页]

作者: ztzp    时间: 2023-12-12 21:51
标题: 用单片机制作的数码管测试器
前几年制作过一个“直连”方式的数码管测试器,最近突发奇想,想用单片机再次制作一个数码管测试器,这个测试器要充分利用单片机功能,用多种方式对数码管进行测试,比如,先逐段点亮,然后再从0~9分别显示,周而复始。
用“Proteus 8”设计了电路原理图(PNP管驱动共阴数码管)。

考虑到库存有大量的拆机P-MOS管(型号为:A7SHB),所以,又设计了采用P-MOS管驱动的电路。

NPN管驱动共阳LED数码管电路原理图:

经实验,共阳数码管不需要三极管放大,直接通过I/O口驱动即可。由于单片机有多余的I/O口,所以共阴、共阳数码管合并在一起,共阴由P2口驱动,共阳由P3口驱动。

单片机采用“STC15F2K08S2”,该单片机有内部RC振荡器,可以省略外部晶振。
用面包板搭电路,运行正常。



用“立创”的EDA设计了PCB板:

焊接完成后的成品:

局部展示:

第一次焊接0402的电阻,这可能是我能焊接的最小电阻了。
LED数码管测试实例(0.56寸共阴数码管)。

LED数码管测试实例(1寸共阳数码管)。


代码:
  1. #include <STC15.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. void Delay1ms( uint k );
  6. uchar da = 0xFE; //11111110
  7. uchar code table[] ={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //共阳段码
  8. void main()
  9. {
  10.      while(1)
  11.      {
  12.           uchar i = 0;
  13.           for( i=0; i<8; i++ ) //依次显示各段:a~h
  14.           {
  15.                P2 = da; //共阴
  16.                P3 = da; //共阳             Delay1ms(500);
  17.                da = _crol_( da,1 );
  18.           }
  19.   
  20.           for( i=0; i<10; i++ ) //依次显示数字:0~9
  21.           {
  22.                P2 = table[i];
  23.                P3 = table[i];
  24.                Delay1ms(500);
  25.           }
  26.      }
  27. }
  28. void Delay1ms( uint n )  <a>//@12.000MHz</a>
  29. {
  30.      uint k;
  31.      for( k=0; k<n; k++ )
  32.     {
  33.         unsigned char data i, j;
  34.          i = 12;
  35.         j = 169;
  36.        do
  37.       {
  38.            while (--j);
  39.       } while (--i);
  40.     }
  41. }
复制代码


作者: wangxiangtan    时间: 2023-12-13 12:00
学习了,共阳极和共阴极的段码是一样的吗老哥
作者: ztzp    时间: 2023-12-13 12:26
wangxiangtan 发表于 2023-12-13 12:00
学习了,共阳极和共阴极的段码是一样的吗老哥

是一样的,因为共阳是I/O口直接驱动,低电平LED亮;共阴通过PNP管(或P-MOS管)驱动,还是低电平LED亮。
作者: mengsiu    时间: 2023-12-13 17:19
共阳的数码管虽然可以在单片机上直接点亮,但并不建议这么做。毕竟大量电流流经单片机并不是什么好事,尤其是测试大尺寸数码管的时候。
作者: ztzp    时间: 2023-12-13 19:55
mengsiu 发表于 2023-12-13 17:19
共阳的数码管虽然可以在单片机上直接点亮,但并不建议这么做。毕竟大量电流流经单片机并不是什么好事,尤其 ...

你说的对,当时就只想到点亮数码管,没有想这么多,今后会注意到这个问题的。
作者: lmn2005    时间: 2023-12-14 08:17
插座还得分共阳和共阴吗?
作者: ztzp    时间: 2023-12-14 20:29
lmn2005 发表于 2023-12-14 08:17
插座还得分共阳和共阴吗?

插座要分的,如果不分,你有什么好的方法?
我能想到的是用一个开关,通过I/O口判断高低电平,从而决定共阳和共阴。
作者: ztzp    时间: 2023-12-14 20:33
lmn2005 发表于 2023-12-14 08:17
插座还得分共阳和共阴吗?

想了想,觉得还是要分开,因为驱动的管子极性不同,同一个插座,电路会变得很复杂。
作者: 51hei**1140    时间: 2023-12-15 19:21
单片机是用什么工具焊的呢,焊台、热风器吗,什么型号的呢
作者: ztzp    时间: 2023-12-15 22:12
51hei**1140 发表于 2023-12-15 19:21
单片机是用什么工具焊的呢,焊台、热风器吗,什么型号的呢

是用“黄花907”调温烙铁,温度大约300℃左右。
烙铁头是这个样子:


作者: bxyyhan    时间: 2023-12-23 20:31
我是用74HC164做的,不需要区分共阳共阴,用IC锁紧座更方便,用锂电池供电,拿着也方便。

Snapshot000000.jpg (61.58 KB, 下载次数: 129)

Snapshot000000.jpg

作者: ztzp    时间: 2023-12-25 23:51
bxyyhan 发表于 2023-12-23 20:31
我是用74HC164做的,不需要区分共阳共阴,用IC锁紧座更方便,用锂电池供电,拿着也方便。

其实我也有锁紧插座,没想到利用它来做,这个接触良好。
为什么要用两个插座呢?




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1