c语言数码管按键计数,数码管拉幕显示计数(C语言)

/*数码管拉幕显示计数我以前初学数码管时就听说,

但是那时候因为基础不太好,一时没有想出来,今天

看到工厂样品室的恒温烙铁上面的(温度计)数码管

就是开机拉幕显示,感觉挺不错的,我就想了一下它程序

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

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

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

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

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

二、具体程序:

#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();//调用显示子函数

}

}//作者:胡琴 2010-10-01 凌晨

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值