微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 数码管拉幕显示计数(C语言)

数码管拉幕显示计数(C语言)

时间:11-29 来源:互联网 点击:
/*数码管拉幕显示计数我以前初学数码管时就听说,

但是那时候因为基础不太好,一时没有想出来,今天
看到工厂样品室的恒温烙铁上面的(温度计)数码管
就是开机拉幕显示,感觉挺不错的,我就想了一下它程序

原理,然后真的就写出了我想要的效果,其实蛮简单的

,只要将要显示的数或运算一下就搞定了,哈

!数码管硬件显示原理我就不介绍了,下面将我写得

代码及实际视频效果分享一下,请大家指教!*/

一、视频效果参见以下地址:

http://www.tudou.com/programs/view/U89zcpfoUYk/

完整代码下载地址:http://www.51hei.com/f/lmsmg.rar

二、具体程序:

#include//头文件
#define uint unsigned int//整型宏定义
#define uchar unsigned char//字符型宏定义
uchar BUF[2];//两个缓存数组
sbit ge=P2^0;//数码管位选端个位控制IO口
sbit shi=P2^1;//数码管位选端十位控制IO口
uchar code table[]={
0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90,
0x88,0x83,0xc6,0xa1,0x86,
0x8e
};//数码管0--9数组代码
uchar code table1[]={
0xfe,0x9c,0x88,0x80
};//数码管拉幕方式代码,一共分4次
/**********************************/
/************延时子函数************/
/**********************************/
void delay(uchar z)
{
uchar x,y;//两个局部变量
for(x=50;x>0;x--)//外循环
for(y=z;y>0;y--);//内循环
}
/**********************************/
/************显示子函数************/
/**********************************/
void xian()
{
uchar i,y;//循环变量
uchar num;//计数变量
for(y=0;y<4;y++)//循环4次形成上下拉幕
{
for(i=0;i<100;i++)//每次显示完后停留的时间
{
BUF[0]=table[num/10];//得到个位数,然后存在缓存数据BUF[0]
P0=BUF[0]|table1[y];/***将缓存数与table1[y]中的数或,从而形成拉幕的关键****/
ge=0;//开个位显示
delay(2);
ge=1;
BUF[1]=table[num%10];//得到十位数,然后存在缓存数据BUF[1]
P0=BUF[1]|table1[y];/***将缓存数与table1[y]中的数或,从而形成拉幕的关键****/
shi=0;//开十位显示
delay(2);
shi=1;
}
}

for(i=0;i<250;i++)//拉幕完成后,将刚拉幕完的数停留一段时间
{
P0=BUF[0];//送数码管个位数
ge=0;
delay(2);
ge=1;
P0=BUF[1];//送数码管十位数
shi=0;
delay(2);
shi=1;
}
num++;//将计数器数加1
if(num>60)//如果计数变量大于60就清0,重新开始计数
num=0;
}
/**********************************/
/*****************主函数***********/
/**********************************/
void main()
{
while(1)
{
xian();//调用显示子函数
}
}

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

网站地图

Top