📄 动态显示v1.1.c
字号:
/*********************************************
* Emusic WorkRoom *
* *
* *
* 模块名: 数码管动态显示演示 *
* 文件名:动态显示V1.1.C *
* 作者: LJZ *
* 日期: 2007-1-27日 *
* 功能描述: 数码管动态显示1-255 *
* 版本:V1.1 *
*********************************************/
#define uchar unsigned char /*方便以后定义*/
#define uint unsigned int
#define ulong unsigned long
#include <reg51.h> /*51头文件*/
void delay(void); /*函数说明*/
void display(uchar a_bit[]);
main()
{
uchar data sum_bit[3] = {0,0,0};
uchar data i,sum = 0,mid;
SP = 0x30;
P1 = 0x00;
P2 = 0x00;
while (1)
{
display (sum_bit);
sum = sum + 1 ;
mid = sum;
for (i=2; i>0; i--)
{
sum_bit[i] = mid % 10;
mid = mid/10;
}
sum_bit[0] = mid;
}
}
/*********************************************
* 函数名: 延时函数 *
* 函数说明: 使用定时器定时延时 *
* 作者: LJZ *
* 日期: 2007-1-27日 *
* 版本:V1.0 *
*********************************************/
void delay(void) /*延时程序*/
{
uchar j; /*循环变量*/
for (j=0; j<5; j++)
{
TMOD = 0x01;
TH0 = 0x03C;
TL0 = 0x0B0;
TR0 = 1;
while (!TF0) /*等待溢出*/
{
;
}
TR0 = 0;
TF0 = 0;
}
}
/*********************************************/
/* 函数名: 显示程序 */
/* 函数说明: 把数据输出到数码管 */
/* 作者: LJZ */
/* 日期: 2007-1-27日 */
/* 版本:V1.0 */
/*********************************************/
void display(uchar a_bit[3])
{
uchar i;
if (a_bit[0] == 0x00)
{
a_bit[0] = 10;
if (a_bit[1] == 0x00)
{
a_bit[1] = 10;
if (a_bit[2] == 0x00)
{
a_bit[2] = 10;
}
}
}
P2 = 0x04;
for (i=0; i<3; i++)
{
switch (a_bit[i])
{
case 0: P1 = 0x03F;
break;
case 1: P1 = 0x06;
break;
case 2: P1 = 0x05B;
break;
case 3: P1 = 0x04F;
break;
case 4: P1 = 0x066;
break;
case 5: P1 = 0x06D;
break;
case 6: P1 = 0x07D;
break;
case 7: P1 = 0x07;
break;
case 8: P1 = 0x07F;
break;
case 9: P1 = 0x06F;
break;
case 10:P1 = 0x00;
break;
}
delay();
P2 = P2 << 1;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -