?? 動態顯示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 + -