?? main.c
字號:
/*******************************************************************************************************
** File Name: main.c
** Last modified Date: 2006-01-13
** Last Version: v1.0
** Description: 控制LED數(shù)碼管顯示并接收鍵盤輸入。
** Note: 請短接實(shí)驗(yàn)箱上的JP9跳線。
********************************************************************************************************/
#include "config.h"
// 蜂鳴器控制
#define BEEP (1<<5) /* GPH10,低電平時(shí)蜂鳴 */
#define BEEP_MASK (~BEEP)
// 定義顯示緩沖區(qū)
uint8 disp_buf[50];
// ZLG7290控制LED數(shù)碼管閃爍命令
#define Glitter_COM 0x70
/*********************************************************************************************************
** Function name: DelayNS
** Descriptions: 長軟件延時(shí)。
** 延時(shí)時(shí)間與系統(tǒng)時(shí)鐘有關(guān)。
** Input: dly 延時(shí)參數(shù),值越大,延時(shí)越久
** Output: 無
********************************************************************************************************/
void DelayNS(uint32 dly)
{
uint32 i;
for(; dly>0; dly--)
for(i=0; i<50000; i++);
}
/*********************************************************************************************************
** Function name: RunBeep
** Descriptions: 控制蜂鳴器Be一聲音。
** Input: 無
** Output: 無
********************************************************************************************************/
void RunBeep(void)
{
rGPEDAT = rGPEDAT | BEEP; // BEEP = 1
DelayNS(20);
rGPEDAT = rGPEDAT & BEEP_MASK; // BEEP = 0
DelayNS(20);
}
/*********************************************************************************************************
** Function name: main
** Descriptions: 通過ZLG7290電路控制LED數(shù)碼管依次顯示數(shù)字0、2、4、6、8進(jìn)行檢測,然后顯示"87654321",
** 再讀取按鍵,按下1--8鍵時(shí)相應(yīng)位的字符會(huì)閃爍。按Enter鍵時(shí)蜂鳴器響一聲。
** Input: 無
** Output: 系統(tǒng)返回值0
********************************************************************************************************/
int main(void)
{
int i, j;
uint16 key;
// GPIO設(shè)置
rGPECON = (rGPECON & (~(0x03<<10))) | (0x01<<10); // rGPECON[11:10] = 01b,設(shè)置GPE5為I/O輸出模式
rGPEDAT = rGPEDAT & (~(1<<5));
// 初始化I2C接口
InitI2C();
RunBeep();
// 全顯示0、2、4、6、8測試
for(i=0; i<=8; i=i+2)
{
for(j=0; j<8; j++) disp_buf[j] = 0;
ZLG7290_SendBuf((uint8 *)disp_buf, 8);
DelayNS(100);
}
/* // 顯示"87654321"
for(j=0; j<8; j++) disp_buf[j] = j+1;
ZLG7290_SendBuf((uint8 *)disp_buf, 8);
DelayNS(100);
// 讀取按鍵,設(shè)置鍵值對應(yīng)的顯示位閃爍*/
while(1)
{
DelayNS(1);
key = ZLG7290_GetKey();
if((key&0xFF00) == 0)
{
key = key&0x00FF;
}
switch(key)
{
case 1:
case 9:
ZLG7290_SendCmd(Glitter_COM, 0x01);
RunBeep();
break;
case 2:
case 10:
ZLG7290_SendCmd(Glitter_COM, 0x02);
break;
case 3:
case 11:
ZLG7290_SendCmd(Glitter_COM, 0x04);
break;
case 4:
case 12:
ZLG7290_SendCmd(Glitter_COM, 0x08);
break;
case 17:
case 57:
ZLG7290_SendCmd(Glitter_COM, 0x10);
break;
case 18:
case 58:
ZLG7290_SendCmd(Glitter_COM, 0x20);
break;
case 19:
case 59:
ZLG7290_SendCmd(Glitter_COM, 0x40);
break;
case 20:
ZLG7290_SendCmd(Glitter_COM, 0x80);
break;
case 60: // 為Enter鍵,則蜂鳴器響一聲
RunBeep();
break;
default:
break;
} // end of switch(key)...
}
while(1);
return(0);
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -