数码管拉幕显示计数_已调试.docVIP

  • 1
  • 0
  • 约1.75千字
  • 约 6页
  • 2016-10-07 发布于重庆
  • 举报
数码管拉幕显示计数_已调试

数码管拉幕显示计数(C语言)/*数码管拉幕显示计数我以前初学数码管时就听说, 但是那时候因为基础不太好,一时没有想出来,今天 看到工厂样品室的恒温烙铁上面的(温度计)数码管 就是开机拉幕显示,感觉挺不错的,我就想了一下它程序 原理,然后真的就写出了我想要的效果,其实蛮简单的 ,只要将要显示的数或运算一下就搞定了,哈 !数码管硬件显示原理我就不介绍了,下面将我写得 代码及实际视频效果分享一下,请大家指教!*/ 一、视频效果参见以下地址: /programs/view/U89zcpfoUYk/ 完整代码下载地址:/f/lmsmg.rar 二、具体程序: #includereg52.h//头文件 #define u16 unsigned int//整型宏定义 #define u8 unsigned char//字符型宏定义 u8 BUF[2];//两个缓存数组 sbit ge=P2^0;//数码管位选端个位控制IO口 sbit shi=P2^1;//数码管位选端十位控制IO口 u8 code table[]={ 0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90, 0x88,0x83,0xc6,0xa1,0x86, 0x8e };//数码管0--9数组代码 u8 code table1[]={ 0xfe,0x9c,0x88,0x80 };//数码管拉幕方式代码,一共分4次 1111 1110 1001 1100 1111 1111 1111 0000 /**********************************/ /************延时子函数************/ /**********************************/ void delay(u8 z) { u8 x,y;//两个局部变量 for(x=50;x0;x--)//外循环 for(y=z;y0;y--);//内循环 } /**********************************/ /************显示子函数************/ /**********************************/ void xian() { u16 i,y;//循环变量 u8 num;//计数变量 num++;//将计数器数加1 for(y=0;y4;y++)//循环4次形成上下拉幕 { for(i=0;i160;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;i500;i++)//拉幕完成后,将刚拉幕完的数停留一段时间 { P0=BUF[0];//送数码管个位数 ge=0; delay(2); ge=1; P0=BUF[1];//送数码管十位数 shi=0; delay(2); shi=1; } if(num60)//如果计数变量大于60就清0,重新开始计数 num=0; } /**********************************/ /*****************主函数***********/ /**********************************/ void main() { while(1) { xian();//调用显示子函数 } }//作者:胡琴 2010-10-01 凌晨

文档评论(0)

1亿VIP精品文档

相关文档