数码管拉幕显示计数(C语言)
但是那时候因为基础不太好,一时没有想出来,今天
看到工厂样品室的恒温烙铁上面的(温度计)数码管
就是开机拉幕显示,感觉挺不错的,我就想了一下它程序
原理,然后真的就写出了我想要的效果,其实蛮简单的
,只要将要显示的数或运算一下就搞定了,哈
!数码管硬件显示原理我就不介绍了,下面将我写得
代码及实际视频效果分享一下,请大家指教!*/
一、视频效果参见以下地址:
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();//调用显示子函数
}
}
数码管拉幕显示计 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)