微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > STC89C52单片机数码管静态显示

STC89C52单片机数码管静态显示

时间:11-21 来源:互联网 点击:
////////////////////////////////////////////////////////////////////////////

实现功能:在实验板静态的点亮数码管,实现从0到9每个数在数码管上显示,相互
之间切换的时间间隔为0.5秒
实验板型号:BS-XYD-C52
实验名称: 静态数码管
编写人: 谢应东
编写日期: 2012-4-25
////////////////////////////////////////////////////////////////////////////
#include
#include

#define uchar unsigned char //定义unsigned char 为 uchar
#define uint unsigned int

sbit Digital_tube_Duan_Enable=P2^6;
sbit Digital_tube_Wei_Enable=P2^7;

#define Digital_tube_Duan P0 //数码管段选端口

uchar code Dis_table[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00};

////////////////////////////////////////////////////////////////////////////
函数名称:毫秒延时函数
函数功能:实现毫秒级的延时
参数介绍:Delay_MS: 定义需要延时的毫秒的数值
iNumber: 记录Delay_MS的数值,以for语句实现所要求的延时
iValue: 要延时毫秒所要进行的循环数值,本数值为实际测得
返回值:
注意事项:本实验是在所用晶振为12M的前提下实现的毫秒延时,本函数是通过循环的形
式完成,所以如果改变了晶振的频率,请做相应的改变
////////////////////////////////////////////////////////////////////////////

void DelayMs(uint Delay_MS)
{
uint iNumber,iValue;
for(iNumber=0;iNumber{
iValue=107;
while(iValue--);
}
}
////////////////////////////////////////////////////////////////////////////
函数名称:数码管循环函数
函数功能:完成在数码管上显示数字的功能,每个显示数字之间时间间隔0.5秒,这样依
次循环
参数介绍:无
返回值:
注意事项:实验板上的数码管是共阴极的数码管,如果使用共阳极的数码管,请注意不
要弄反了
////////////////////////////////////////////////////////////////////////////
void Digital_tube_Cylcle()
{
uchar cNumber;
for(cNumber=0;cNumber<10;cNumber++)
{
Digital_tube_Duan=Dis_table[cNumber];
DelayMs(500);
}
}
////////////////////////////////////////////////////////////////////////////
函数名称:主函数
函数功能:在实验板上实现数码管从0到9的循环显示,每个数字之间的显示时间间隔为
0.5秒,然后切换到下个数字,这样依次循环
参数介绍:无
返回值:
注意事项:无
////////////////////////////////////////////////////////////////////////////
void main()
{
Digital_tube_Wei_Enable=1; //打开573所存器段选的使能端
P0=0x00; //开启所有数码管的段选
Digital_tube_Wei_Enable=0; //关闭573锁存器的使能端,以锁存数码管段选的电平
while(1)
{
Digital_tube_Cylcle(); //引用数码管循环函数
}
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top