/* 点亮第一个数码管,因为板子是自已做的,到电子城买数码管时说好要共阴的,拿来测时才发现是共阳的。 */ //------------------------------------------------------------ /* #include <reg52.h> #define uchar unsigned char sbit duan=P2^5 ; //注意,有分号 sbit wei=P2^6; //注意,有分号+P是大写的,若你写成小写的则会提示说找不到 const unsigned char table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E}; //共阳极数码管数组,请注意,我使用的共阳极的数码管,如果你是用买的现成板,一般是使用共阴极的 void main() { duan=1; P0=table[1]; duan=0; wei=1; P0=0x01; wei=0; while(1); } */ //----------------------------------------------------------------- /* //静态显示,第一个数码管显示1 #include <reg52.h> sbit duan=P2^5; sbit wei=P2^6; void main() { duan=1; P0=0xF9; //共阳极数码管 显示1的编码值是F9,如果你是买的开发板(共阴的数码管)则为0x06; duan=0; wei=1; P0=0x01; //选中第1个数码管 wei=0; while(1); //一直显示,以便我们观察 } */ //----------------------------------------------------------------- /* //静态显示,全为1 #include <reg52.h> sbit duan=P2^5; sbit wei=P2^6; void main() { duan=1; P0=0xF9; //共阳极数码管 显示1的编码值是F9,如果你是买的开发板(共阴的数码管)则为0x06; duan=0; wei=1; P0=0xff; //选中所有的数码管 wei=0; while(1); //一直显示,以便我们观察 } */ //----------------------------------------------------------------- //静态显示:从0到F (所有的数码管) #include <reg52.h> #define uchar unsigned char sbit duan=P2^5 ; //注意,有分号+P是大写的,若你写成小写的则会提示说找不到 sbit wei=P2^6; const unsigned char table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E}; //数码管数组 void delay(int x) { int a,b; for(a=x;a>0;a--) for(b=110;b>0;b--); } void main() { while(1) { uchar n=0; for(n=0;n<=9;n++) { duan=1; P0=table[n]; duan=0; wei=1; P0=0xff; //因为我的是共阳的,其数码管选中得高电平,如果你是共低的则为0x wei=0; delay(600); //一定要加延时否则看起来乱码实际上是闪烁太快了有余光 } } } //----------------------------------------------------------------- /* 数码管从0开始到9变化,同时LED灯正流+倒流. */ #include<reg52.h> #include <intrins.h> //LED灯用到移动关键字crol,调用此关键字 #define uchar unsigned char const unsigned char table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E}; //数码管数组 sbit wei=P2^6; sbit duan=P2^5; void delay(uchar x) { uchar a,b; for(a=x;a>0;a--) for(b=110;b>0;b--); } void LED() { uchar a,temp; temp=0xfe; for (a=8;a>0;a--) //循环8次,即流水灯8个循环8次即可点亮8个 { P1=temp; temp=_crol_(temp,1); //移动 delay(200); } delay(5); temp=0x7f; for (a=8;a>0;a--) //循环8次,即流水灯8个循环8次即可点亮8个 { P1=temp; temp=_crol_(temp,-1); //移动 delay(170); } } void scan() { uchar n=0; for(n=0;n<=9;n++) { duan=1; P0=table[n]; duan=0; wei=1; P0=0xff; wei=0; delay(1000); LED(); } if(n==9){delay(100000);} } void main() { while(1) { // LED(); scan(); } }