📄 main.c
字号:
/*******************************************************************************************************
** File Name: main.c
** Last modified Date: 2006-01-13
** Last Version: v1.0
** Description: 控制LED数码管显示并接收键盘输入。
** Note: 请短接实验箱上的JP9跳线。
********************************************************************************************************/
#include "config.h"
// 蜂鸣器控制
#define BEEP (1<<5) /* GPH10,低电平时蜂鸣 */
#define BEEP_MASK (~BEEP)
// 定义显示缓冲区
uint8 disp_buf[50];
// ZLG7290控制LED数码管闪烁命令
#define Glitter_COM 0x70
/*********************************************************************************************************
** Function name: DelayNS
** Descriptions: 长软件延时。
** 延时时间与系统时钟有关。
** Input: dly 延时参数,值越大,延时越久
** 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数码管依次显示数字0、2、4、6、8进行检测,然后显示"87654321",
** 再读取按键,按下1--8键时相应位的字符会闪烁。按Enter键时蜂鸣器响一声。
** Input: 无
** Output: 系统返回值0
********************************************************************************************************/
int main(void)
{
int i, j;
uint16 key;
// GPIO设置
rGPECON = (rGPECON & (~(0x03<<10))) | (0x01<<10); // rGPECON[11:10] = 01b,设置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);
// 读取按键,设置键值对应的显示位闪烁*/
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
********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -