52单片机控制数码管显示数字
2011-10-10 17:27
495 查看
a#include<AT89x52.h>
unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};
sbit L1=P2^7;
sbit clk=P2^0;
sbit AB=P2^1;
sbit SA=P2^2;//数码管一的com端
sbit SB=P2^3;//数码管二的com端
sbit SC=P2^4;
sbit SD=P2^5;
void setTable(char num)
{
unsigned char c;
for(c=0;c<8;c++)
{
clk=0;
AB=num&0x01;
num=num>>1;
clk=1;
}
}
void delay2(void)
{
unsigned char c;
for(c=0;c<255;c++)
{
TF0=0;
TH0=(65536-55536)/256;
TL0=(65536-55536)%256;
}
}
void Light(void)
{
unsigned char x,a,b,c,j,z,count=0;
x=0xf8;
TMOD=0x01;//第一种工作方式 01、定时 0、TCON置0,低八位开始工作
TH0=(65536-55536)/256;
TL0=(65536-55536)%256;
TR0=1;
while(1)
{
for(c=0;c<6;c++)
{
for(b=0;b<10;b++)
{
for(z=0;z<6;z++)
{
x=0xf8;
for(j=0;j<10;j++)
{
//实现一行流水灯逐个闪亮
P1=x;
x=x<<1;
x=x|0x01;
L1=0;
if(j==9)
{
P1=0x00;
L1=0;
}
for(a=0;a<30;a++)
{ //千位上的数码管显示数字
setTable(table[c]);
SA=0;
SB=1;
SC=1;
SD=1;
delay2();
//百位上的数码管显示数字
setTable(table1[b]);
SB=0;
SC=1;
SD=1;
SA=1;
delay2();
//十位上的数码管显示数字
setTable(table[z]);
SC=0;
SD=1;
SB=1;
SA=1;
delay2();
//个位上的数码管显示数字
setTable(table[j]);
SD=0;
SC=1;
SB=1;
SA=1;
delay2();
L1=1 ;
}
}
}
}
}
}
}
void main(void)
{
Light();
}
unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};
sbit L1=P2^7;
sbit clk=P2^0;
sbit AB=P2^1;
sbit SA=P2^2;//数码管一的com端
sbit SB=P2^3;//数码管二的com端
sbit SC=P2^4;
sbit SD=P2^5;
void setTable(char num)
{
unsigned char c;
for(c=0;c<8;c++)
{
clk=0;
AB=num&0x01;
num=num>>1;
clk=1;
}
}
void delay2(void)
{
unsigned char c;
for(c=0;c<255;c++)
{
TF0=0;
TH0=(65536-55536)/256;
TL0=(65536-55536)%256;
}
}
void Light(void)
{
unsigned char x,a,b,c,j,z,count=0;
x=0xf8;
TMOD=0x01;//第一种工作方式 01、定时 0、TCON置0,低八位开始工作
TH0=(65536-55536)/256;
TL0=(65536-55536)%256;
TR0=1;
while(1)
{
for(c=0;c<6;c++)
{
for(b=0;b<10;b++)
{
for(z=0;z<6;z++)
{
x=0xf8;
for(j=0;j<10;j++)
{
//实现一行流水灯逐个闪亮
P1=x;
x=x<<1;
x=x|0x01;
L1=0;
if(j==9)
{
P1=0x00;
L1=0;
}
for(a=0;a<30;a++)
{ //千位上的数码管显示数字
setTable(table[c]);
SA=0;
SB=1;
SC=1;
SD=1;
delay2();
//百位上的数码管显示数字
setTable(table1[b]);
SB=0;
SC=1;
SD=1;
SA=1;
delay2();
//十位上的数码管显示数字
setTable(table[z]);
SC=0;
SD=1;
SB=1;
SA=1;
delay2();
//个位上的数码管显示数字
setTable(table[j]);
SD=0;
SC=1;
SB=1;
SA=1;
delay2();
L1=1 ;
}
}
}
}
}
}
}
void main(void)
{
Light();
}
相关文章推荐
- 一天:51单片机从入门到一个动态数码管显示数字控制
- 52单片机串口控制AD转换显示到共阳极数码管
- 单片机控制流水灯 数码管显示时间 蜂鸣器报警
- 并行口实现数字0~9、A~F、L、U、P、n总共19个键盘,将按键的结果用7段数码管(例如:7SEG-MPX-CA-BLUE)显示(可选——按键控制移位)出来
- 单片机控制的数码管显示
- 单片机:按键(使用中断)控制数码管的数字加减(c语言实现)
- 80C51 单片机 数码管显示循环数字
- 凌阳61单片机使用7段数码管显示数字时钟的程序
- 4位共阳数码管 显示数字,调节亮度,时钟调时,控制LED巧妙编程
- 单片机控制TFT液晶屏显示数字
- 定时器控制数码管动态显示(单片机)
- 单片机数码管时钟显示
- HT IDE 3000 VPM 软件仿真 按钮按下 数码管显示数字 电路搭建以及源代码 VPM 应用 系列之五
- 单片机控制数字光照强度传感模块GY-30(主芯片BH1750FVI)之模块化编程(持续更新中)
- 数码管数字显示 新
- 单片机—数码管静态显示
- 51单片机入门之五:数码管显示(动态)
- 单片机数码管显示
- 20141119 【 Arduino - DHT11 - 单片机 】 利用单片机数码管 显示 DHT11温湿度
- 51/52单片机 TCON控制字及TMOD寄存器