本帖最后由 多喝点 于 2020-2-7 16:45 编辑
- 动态控制:使用74HC573八个共阳极数码管依次显示0-7
仿真电路图:
C语言程序代码:
- #include <reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
-
- sbit we = P3^7;
- sbit du = P3^0;
- uchar code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8};
- uchar code tab[]={0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};
- void delay(uint z)
- {
- uint x,y;
- for(x = z; x > 0; x--)
- for(y =10; y>0 ; y--);
- }
- uchar num;
- void main()
- {
- du=0;
- we=0;
- while(1)
- {
- for(num=0;num<8;num++)
- {
-
- we=1;
- P1=tab[num];
- we=0;
-
-
- du=1;
- P2=table[num];
- du=0;
- delay(10);
- };
- }
- }
复制代码 2.动态控制:不使用74HC573使八个数码管依次显示0-7
仿真电路图:(请注意:在接实际电路时,在数码管管脚之前都要接上电阻,否则会烧坏电子器件)
C语言程序代码:
- #include <reg51.h>
- void delay(void)
- {
- unsigned char i, j;
- for (i=0; i<10; i++)
- for (j=0; j<10; j++);
- }
- unsigned char duanma[16] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8};
- unsigned char weima[8] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};
- void main(void)
- {
- while (1)
- {
- unsigned char i = 0;
- for (i=0; i<8; i++)
- {
- P2 = weima[i];
- P1 = duanma[i];
- delay();
- P0 = 0x00;
- }
- }
- }
复制代码
3、静态控制:8个数码管显示相同数字,自动从0开始切换,直到F
仿真电路图:
C语言程序代码:
- #include <reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define DELAY_TIME 1
- sbit we = P3^7;
- sbit du = P3^0;
- uchar code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
- void delay(uint z)
- {
- uint x,y;
- for(x = z; x > 0; x--)
- for(y =500; y>0 ; y--);
- }
- uchar num;
- void main()
- {
- we=1;
- P1=0xff;
- we=0;
- while(1);
- {
- for(num=0;num<16;num++)
- {
- du=1;
- P2=table[num];
- du=0;
- delay(100);
- };
-
- }
- }
复制代码
4、动态控制:使用74LS138译码器控制八位数码管依次显示0-7
仿真电路图:
C语言程序代码:
- #include <reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar code table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07};
- uchar code tab[]={0x00,0x01,0x02, 0x03, 0x04, 0x05, 0x06, 0x07};
- void delay(uint z)
- {
- uint x,y;
- for(x = z; x > 0; x--)
- for(y =10; y>0 ; y--);
- }
- uint i;
- void main()
- {
- for(i=0;i<8;i++)
- {
- P2=tab[i];
- P1=table[i];
- delay(50);
- }
-
- }
复制代码
5、动态控制:使用74LS138译码器和74LS247七段数码管译码器控制8位数码管依次显示0-7
仿真电路图:
C语言程序代码:
- #include <reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar code table[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};
- uchar code tab[]={0x00,0x01,0x02, 0x03, 0x04, 0x05, 0x06, 0x07};
- void delay(uint z)
- {
- uint x,y;
- for(x = z; x > 0; x--)
- for(y =10; y>0 ; y--);
- }
- uint i;
- void main()
- {
- for(i=0;i<8;i++)
- {
- P3=tab[i];
- P2=table[i];
- delay(30);
- }
-
- }
复制代码
|