?? 靜態顯示.c
字號:
/********************************************************************
* 文件名 : 數碼管顯示.c
* 描述 : 該程序為數碼管靜態顯示程序,并且通過實現鎖存器的功能。
如果按了P3.2口,P3.7口由高電平變到低電平后,鎖存器鎖存功能使能。再按P3.4口,數碼管的值就不會有所改變。
再按P3.2口,P3.7口電平由低變高,鎖存功能失效。數碼管的值又會改變。
* 創建人 : 東流,2009年8月27日
* 版本號 : 1.0
***********************************************************************/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit KEY = P3^4; //獨立按鍵的T0
sbit KEY_Lock = P3^2; //這里,按了該按鍵后,實現解鎖和開鎖。
sbit LOCK = P3^7; //鎖存功能
/*下一行你可以試著把 code 去掉看看試驗結果。 去掉后 table[] 會被存到 RAM 中,因為單片機的 RAM 比 ROM 小的多*/
/*所以,對于不會改變的值應該用 code 或者 #define 去定義,讓這些固定值存到 ROM 中去*/
uchar code table[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
/*下一行的數組可以顯示數值外,還可以顯示數碼管的點*/
uchar code table_d[16] = {0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1};
/********************************************************************
* 名稱 : Delay()
* 功能 : 延時,延時時間為 10ms * del
* 輸入 : del
* 輸出 : 無
***********************************************************************/
void Delay(uint del)
{
uint i,j;
for(i=0; i<del; i++)
for(j=0; j<1827; j++)
;
}
/********************************************************************
* 名稱 : Main()
* 功能 : 主函數
* 輸入 : 無
* 輸出 : 無
***********************************************************************/
void main()
{
uchar i = 0;
LOCK = 1;
//P2=0xff;
while(1)
{
P0 = table[i % 16]; //在這里取 i 的個位數,不帶點顯示
//P0 = table_d[i % 16]; //帶點顯示
if(KEY == 0)
{
Delay(1); //軟件消抖,試驗為20ms
if(KEY == 0)
{
i++;
}
Delay(50); //延時0.5秒后進行下一次的按鍵檢測
}
if(KEY_Lock == 0)
{
Delay(1); //軟件消抖,試驗為20ms
if(KEY_Lock == 0)
{
LOCK = !LOCK;
}
Delay(50); //延時0.5秒后進行下一次的按鍵檢測
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -