标题:
菜鸟新学的51—C,编了一个数码管和流水灯同时显示的程序
[打印本页]
作者:
hsf123hsf
时间:
2017-7-6 19:24
标题:
菜鸟新学的51—C,编了一个数码管和流水灯同时显示的程序
希望大家不吝赐教,同时也希望自己的程序能帮助其他人。
数码管流水灯程序.zip
(24.05 KB, 下载次数: 18)
2017-7-6 19:23 上传
点击文件名下载附件
数码管流水灯程序
下载积分: 黑币 -5
/*
*******************************************************************************
* 本程序同时实现数码管计时和流水灯同时运行的效果。主要采用的定时器的1ms刷新功能,让眼睛产生的假象。
*******************************************************************************
*/
#include<reg52.h>
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;
unsigned char T0RH = 0;
unsigned char T0RL = 0;
unsigned int flag1s=0;
unsigned long sum = 0;
void ConfigTime(unsigned int ms); //定时函数
void ShowNumber(unsigned long sum); //数码管显示数字函数
unsigned char LedBuff[7]={0xff,0xff,0xff,0xff,0xff,0xff,0xff}; //数码管+独立流水灯显示缓冲区
unsigned char LedChar[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, //数码管显示字符转换表
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
void LedLiu(); //流水灯函数
void main()
{
EA = 1;
ADDR3 = 1;
ENLED = 0;
ConfigTime(1);
ShowNumber(0);
while(1)
{
if(flag1s)
{
sum++;
flag1s=0; //1s执行一次
ShowNumber(sum);
LedLiu();
if(sum>=999999) //数码管最大显示999999
{
sum = 0;
}
}
}
}
void ConfigTime(unsigned int ms)
{
unsigned long tmp;
tmp = 11059200/12;
tmp = (tmp*ms)/1000;
tmp = 65536-tmp;
tmp = tmp +12;
T0RH = (unsigned char)(tmp>>8);
T0RL =(unsigned char)tmp;
TMOD &= 0xf0;
TMOD |= 0x01;
TH0 = T0RH;
TL0 = T0RL;
ET0 = 1;
TR0 = 1;
}
void ShowNumber(unsigned long tmr)
{
unsigned char buf[6]={0,0,0,0,0,0};
signed char i= 0;
for(i=0;i<6;i++)
{
buf[i] = tmr%10;
tmr = tmr/10;
}
for(i=5;i>=1;i--)
{
if(buf[i]==0)
LedBuff[i]=0xff;
else
break;
}
for( ;i>=0;i--)
{
LedBuff[i]=LedChar[buf[i]];
}
}
void LedLiu()
{
static unsigned char i = 0; // 子函数中,如果变量一次执行不能执行完全部变量时,应该采用静态变量
LedBuff[6]=~(0x01<<i);
i++;
if(i>=8)
{
i=0;
}
}
void LedScan()
{
static unsigned char i=0;
P0 = 0xff;
P1=(P1&0xf8)|i;
P0 = LedBuff[i];
if(i<6)
{
i++;
}
else
{
i = 0;
}
}
void InterruptTime0() interrupt 1
{
static unsigned int tmr1s=0;
TH0 = T0RH;
TL0 = T0RL;
LedScan();
tmr1s++;
if(tmr1s>=1000) //定时器累计到1s归零,从新计时
{
tmr1s= 0;
flag1s = 1;
}
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1