前幾年制作過一個“直連”方式的數碼管測試器,最近突發奇想,想用單片機再次制作一個數碼管測試器,這個測試器要充分利用單片機功能,用多種方式對數碼管進行測試,比如,先逐段點亮,然后再從0~9分別顯示,周而復始。
用“Proteus 8”設計了電路原理圖(PNP管驅動共陰數碼管)。
00 電路原理圖(共陰 PNP驅動).jpg (500.64 KB, 下載次數: 48)
下載附件
2023-12-12 21:47 上傳
考慮到庫存有大量的拆機P-MOS管(型號為:A7SHB),所以,又設計了采用P-MOS管驅動的電路。
01 電路原理圖(共陰 P-MOS驅動).jpg (495.49 KB, 下載次數: 34)
下載附件
2023-12-12 21:47 上傳
NPN管驅動共陽LED數碼管電路原理圖:
02 電路原理圖(共陽 NPN驅動).jpg (489.03 KB, 下載次數: 34)
下載附件
2023-12-12 21:47 上傳
經實驗,共陽數碼管不需要三極管放大,直接通過I/O口驅動即可。由于單片機有多余的I/O口,所以共陰、共陽數碼管合并在一起,共陰由P2口驅動,共陽由P3口驅動。
03 完整電路.jpg (531.02 KB, 下載次數: 38)
下載附件
2023-12-12 21:47 上傳
單片機采用“STC15F2K08S2”,該單片機有內部RC振蕩器,可以省略外部晶振。
用面包板搭電路,運行正常。
04 面包板實驗.jpg (343.31 KB, 下載次數: 40)
下載附件
2023-12-12 21:47 上傳
05 面包板實驗.jpg (300.67 KB, 下載次數: 34)
下載附件
2023-12-12 21:47 上傳
用“立創”的EDA設計了PCB板:
08 PCB設計(紅 正).jpg (218.65 KB, 下載次數: 39)
下載附件
2023-12-12 21:47 上傳
焊接完成后的成品:
10 成品.jpg (205.26 KB, 下載次數: 38)
下載附件
2023-12-12 21:47 上傳
局部展示:
IMG_20230804_230146.jpg (1.13 MB, 下載次數: 32)
下載附件
2023-12-12 21:47 上傳
第一次焊接0402的電阻,這可能是我能焊接的最小電阻了。
LED數碼管測試實例(0.56寸共陰數碼管)。
IMG_20230804_233554.jpg (168.61 KB, 下載次數: 41)
下載附件
2023-12-12 21:47 上傳
LED數碼管測試實例(1寸共陽數碼管)。
IMG_20230804_233640.jpg (172.89 KB, 下載次數: 42)
下載附件
2023-12-12 21:47 上傳
代碼:
- #include <STC15.h>
- #include <intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- void Delay1ms( uint k );
- uchar da = 0xFE; //11111110
- uchar code table[] ={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //共陽段碼
- void main()
- {
- while(1)
- {
- uchar i = 0;
- for( i=0; i<8; i++ ) //依次顯示各段:a~h
- {
- P2 = da; //共陰
- P3 = da; //共陽 Delay1ms(500);
- da = _crol_( da,1 );
- }
-
- for( i=0; i<10; i++ ) //依次顯示數字:0~9
- {
- P2 = table[i];
- P3 = table[i];
- Delay1ms(500);
- }
- }
- }
- void Delay1ms( uint n ) <a>//@12.000MHz</a>
- {
- uint k;
- for( k=0; k<n; k++ )
- {
- unsigned char data i, j;
- i = 12;
- j = 169;
- do
- {
- while (--j);
- } while (--i);
- }
- }
復制代碼
|