数码管原理
共阴极
段码原理
显示字符 | 共阴极段码 |
---|---|
0 | 0x3f |
1 | 0x06 |
2 | 0x5b |
3 | 0x4f |
4 | 0x66 |
5 | 0x6d |
6 | 0x7d |
7 | 0x07 |
8 | 0x7f |
9 | 0x6f |
如何显示小数点
dp=1时,为小数点,在段码后+0x80也可以
共阳极
共阳极与共阴极相反(就不演示了)
显示字符 | 共阳极段码 |
---|---|
0 | 0xc0 |
1 | 0xf9 |
2 | 0xa4 |
3 | 0xb0 |
4 | 0x99 |
5 | 0x92 |
6 | 0x82 |
7 | 0xf8 |
8 | 0x80 |
9 | 0x90 |
单只数码管
共阴极
数码管从0-9
-
演示
-
用到的器件
数码管:7seg 然后找cat 74hc573
-
代码
#include<reg51.h> #include<intrins.h> #define uint unsigned int #define uchar unsigned char uchar code tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void delay(uint xms){ uint i,j; for(i=xms;i>0;i--){ for(j=110;j>0;j--); } } void main(){ while(1){ uint i; for(i=0;i<10;i++){ P2=tab[i]; delay(500); } } }
两个单只数码管从00-99
-
演示
由于P0口比较特殊,所以不能用74hc573器件,需要用上拉电阻(pullup)或者电阻(res)
-
代码
#include<reg51.h> #include<intrins.h> #define uint unsigned int #define uchar unsigned char void delay(uint xms){ uint i,j; for(i=xms;i>0;i--){ for(j=110;j>0;j--); } } void main(){ uint i,j; uchar code tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; while(1){ for(i=0;i<100;i++){ P0=tab[i/10]; delay(70); P2=tab[i%10]; delay(70); } } }
共阳极
数码管从0-9
-
演示
-
器件
数码管:7seg然后找道an 2n3702
-
代码
#include<reg51.h> #define uint unsigned int #define uchar unsigned char uchar code tab[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; sbit s=P3^0; void delay(uint xms){ uint i,j; for(i=xms;i>0;i--){ for(j=110;j>0;j--); } } void main(){ uint i; s=0; while(1){ for(i=0;i<10;i++){ P2=tab[i]; delay(500); } } }