资源描述:
《数码管拉幕显示计数_已调试》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、数码管拉幕显示计数(C语言)/*数码管拉幕显示计数我以前初学数码管时就听说,但是那时候因为基础不太好,一时没有想出来,今天看到工厂样品室的恒温烙铁上面的(温度计)数码管就是开机拉幕显示,感觉挺不错的,我就想了一下它程序原理,然后真的就写出了我想要的效果,其实蛮简单的,只要将要显示的数或运算一下就搞定了,哈!数码管硬件显示原理我就不介绍了,下面将我写得代码及实际视频效果分享一下,请大家指教!*/一、视频效果参见以下地址:http://www.tudou.com/programs/view/U89zcpfoUYk/完整代码下载地址:http://www.51hei.com/f/
2、lmsmg.rar二、具体程序:/****追问拉幕原理,和拉幕方式代码的由来****/#include//头文件#defineu16unsignedint//整型宏定义#defineu8unsignedchar//字符型宏定义u8BUF[2];//两个缓存数组sbitge=P2^0;//数码管位选端个位控制IO口sbitshi=P2^1;//数码管位选端十位控制IO口u8codetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
3、//数码管0--9数组代码u8codetable1[]={0xfe,0x9c,0x88,0x80};//数码管拉幕方式代码,一共分4次11111110100111001111111111110000/**********************************//************延时子函数************//**********************************/voiddelay(u8z){u8x,y;//两个局部变量for(x=50;x>0;x--)//外循环for(y=z;y>0;y--);//内循环}/*************
4、*********************//************显示子函数************//**********************************/voidxian(){u16i,y;//循环变量u8num;//计数变量num++;//将计数器数加1for(y=0;y<4;y++)//循环4次形成上下拉幕{for(i=0;i<160;i++)//每次显示完后停留的时间{BUF[0]=table[num/10];//得到个位数,然后存在缓存数据BUF[0]P0=BUF[0]
5、table1[y];/***将缓存数与table1[y]中的数或,从而形
6、成拉幕的关键****/ge=0;//开个位显示delay(2);ge=1;BUF[1]=table[num%10];//得到十位数,然后存在缓存数据BUF[1]P0=BUF[1]
7、table1[y];/***将缓存数与table1[y]中的数或,从而形成拉幕的关键****/shi=0;//开十位显示delay(2);shi=1;}}for(i=0;i<500;i++)//拉幕完成后,将刚拉幕完的数停留一段时间{P0=BUF[0];//送数码管个位数ge=0;delay(2);ge=1;P0=BUF[1];//送数码管十位数shi=0;delay(2);shi=1;}if(n
8、um>60)//如果计数变量大于60就清0,重新开始计数num=0;}/**********************************//*****************主函数***********//**********************************/voidmain(){while(1){xian();//调用显示子函数}}//作者:胡琴2010-10-01凌晨