|
发表于 2020-3-2 16:30:27
|
显示全部楼层
我算半个新手吧,毕竟有点硬件基础,昨天刚开始学,今天刚好看到着,就顺便做了,还望采纳。 我的是A2开发板的,下面是我的代码: #include "reg52.h" typedef unsigned char u8; typedef unsigned int u16; sbit LSA = P2^2; sbit LSB = P2^3; sbit LSC = P2^4; u8 i; u8 code smgduan[]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d, // 数码管显示0~f *16位进制 0011 1111 0x7d,0x07,0x7f,0x6f,0x77, 0x7c,0x39,0x5e,0x79,0x71}; void delay(u16 i) { while(i--); } void DigDisplay() //第几位数码管亮 { switch(i) { case(0): LSA= 0;LSB= 0; LSC= 0; break; case(1): LSA= 1;LSB= 0; LSC= 0; break; case(2): LSA= 0;LSB= 1; LSC= 0; break; case(3): LSA= 1;LSB= 1; LSC= 0; break; case(4): LSA= 0;LSB= 0; LSC= 1; break; case(5): LSA= 1;LSB= 0; LSC= 1; break; case(6): LSA= 0;LSB= 1; LSC= 1; break; case(7): LSA= 1;LSB= 1; LSC= 1; break; } } void Love() //数码管显示数字 { switch(i) { case(0): P0 = smgduan[0]; break; case(1): P0 = smgduan[2]; break; case(2): P0 = smgduan[5]; break; case(3): P0 = 0x40 ; break; // 0100 0000 case(4): P0 = smgduan[4]; break; case(5): P0 = smgduan[1]; break; case(6): P0 = smgduan[3]; break; case(7): P0 = smgduan[1]; break; } delay(100); P0= 0x00; } void main() { while(1) { for(i=0;i<8;i++) { DigDisplay(); Love(); } } } |
|