51单片机:数码管c代码集合
/*
点亮第一个数码管,因为板子是自已做的,到电子城买数码管时说好要共阴的,拿来测时才发现是共阳的。
*/
//------------------------------------------------------------
/*
#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灯正流+倒流.
*/
#includereg52.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();
}
}
- 关于RTX51 TINY的分析与探讨(05-30)
- 浅析8051模块化编程技巧(05-28)
- 基于DSP和单片机通信的液晶显示设计方案(07-20)
- 锁相环控制及初始化简析(08-27)
- 基于MSP430自动胀管控制器的研究(09-07)
- 嵌入式C实现延时程序的不同变量的区别(03-01)