📄 test.c
字号:
ch = (i>>16)&0x0F;
ZLG7290_SendData(0x10+4, DISP_TAB[ch]);
ch = (i>>12)&0x0F;
ZLG7290_SendData(0x10+3, DISP_TAB[ch]);
ch = (i>>8)&0x0F;
ZLG7290_SendData(0x10+2, DISP_TAB[ch]);
ch = (i>>4)&0x0F;
ZLG7290_SendData(0x10+1, DISP_TAB[ch]);
ch = i&0x0F;
ZLG7290_SendData(0x10+0, DISP_TAB[ch]);
DelayNS(50);
}
cp++;
}
ZLG7290_SendData(0x10+2, DISP_TAB[0x0F]);
ZLG7290_SendData(0x10+1, DISP_TAB[0x0F]);
ZLG7290_SendData(0x10+0, DISP_TAB[0x0F]);
DelayNS(10);
}
/****************************************************************************
* 名称:SysCheck_NET()
* 功能:NET测试。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void SysCheck_NET(void)
{ uint8 i;
// 清除LED屏幕显示
for(i=0; i<8; i++) disp_buf[i] = 0x1F;
ZLG7290_SendBuf(disp_buf,8);
// 检测NET接口。显示"NEt....."或显示"NEt..Err"
ZLG7290_SendData(0x10+7, CHAR_N);
ZLG7290_SendData(0x10+6, CHAR_E);
ZLG7290_SendData(0x10+5, CHAR_t);
ZLG7290_SendData(0x10+4, CHAR_DOT);
if(NetTest() == 1)
{ ZLG7290_SendData(0x10+3, CHAR_DOT);
DelayNS(5);
ZLG7290_SendData(0x10+2, CHAR_DOT);
DelayNS(5);
ZLG7290_SendData(0x10+1, CHAR_DOT);
DelayNS(5);
ZLG7290_SendData(0x10+0, CHAR_DOT);
DelayNS(5);
}
else
{ ZLG7290_SendData(0x10+3, CHAR_DOT);
BeepRun(5);
ZLG7290_SendData(0x10+2, CHAR_E);
ZLG7290_SendData(0x10+1, CHAR_r);
ZLG7290_SendData(0x10+0, CHAR_r);
BeepRun(5);
DelayNS(50);
}
DelayNS(10);
}
/****************************************************************************
* 名称:SysCheck_USB()
* 功能:USB测试。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void SysCheck_USB(void)
{ uint8 i;
// 清除LED屏幕显示
for(i=0; i<8; i++) disp_buf[i] = 0x1F;
ZLG7290_SendBuf(disp_buf,8);
// 检测USB接口。显示"USb....."或显示"USb..Err"
ZLG7290_SendData(0x10+7, CHAR_U);
ZLG7290_SendData(0x10+6, CHAR_S);
ZLG7290_SendData(0x10+5, CHAR_b);
ZLG7290_SendData(0x10+4, CHAR_DOT);
if(D12Test() == 0)
{ ZLG7290_SendData(0x10+3, CHAR_DOT);
DelayNS(5);
ZLG7290_SendData(0x10+2, CHAR_DOT);
DelayNS(5);
ZLG7290_SendData(0x10+1, CHAR_DOT);
DelayNS(5);
ZLG7290_SendData(0x10+0, CHAR_DOT);
DelayNS(5);
}
else
{ ZLG7290_SendData(0x10+3, CHAR_DOT);
BeepRun(5);
ZLG7290_SendData(0x10+2, CHAR_E);
ZLG7290_SendData(0x10+1, CHAR_r);
ZLG7290_SendData(0x10+0, CHAR_r);
BeepRun(5);
DelayNS(50);
}
DelayNS(10);
}
/****************************************************************************
* 名称:SysCheck_E2PROM()
* 功能:E2PROM测试。
* 入口参数:无
* 出口参数:无
****************************************************************************/
void SysCheck_E2PROM(void)
{ uint8 data_buf[20];
uint8 err;
uint8 i;
// 清除LED屏幕显示
for(i=0; i<8; i++) disp_buf[i] = 0x1F;
ZLG7290_SendBuf(disp_buf,8);
// 检测NET接口。显示"C02....."或显示"C02..Err"
ZLG7290_SendData(0x10+7, CHAR_C);
ZLG7290_SendData(0x10+6, CHAR_0);
ZLG7290_SendData(0x10+5, CHAR_2);
ZLG7290_SendData(0x10+4, CHAR_DOT);
for(i=0; i<10; i++) data_buf[i] = i+'0';
ISendStr(CAT24WC02, 0x00, data_buf, 10); // 在0x00地址处写入10字节数据
DelayNS(5); // 等待写周期结束
ZLG7290_SendData(0x10+3, CHAR_DOT);
for(i=0; i<10; i++) data_buf[i] = 0;
IRcvStr(CAT24WC02, 0x00, data_buf, 10); // 在0x00地址处读出10字节数据
// 校验读出的数据
err = 0;
for(i=0; i<10; i++)
{ if(data_buf[i]!=(i+'0')) err = 1;
}
if(err == 0)
{ ZLG7290_SendData(0x10+2, CHAR_DOT);
DelayNS(5);
ZLG7290_SendData(0x10+1, CHAR_DOT);
DelayNS(5);
ZLG7290_SendData(0x10+0, CHAR_DOT);
DelayNS(5);
}
else
{ BeepRun(5);
ZLG7290_SendData(0x10+2, CHAR_E);
ZLG7290_SendData(0x10+1, CHAR_r);
ZLG7290_SendData(0x10+0, CHAR_r);
BeepRun(5);
DelayNS(50);
}
DelayNS(10);
}
/****************************************************************************
* 名称:main()
* 功能:EasyARM2200开发板出厂编程程序。(请使用RelOutChip生成目标)
* 说明:在STARTUP.S文件中使能IRQ中断(清零CPSR中的I位);
* 在CONFIG.H文件中包含I2CINT.H、ZLG7290.H等。
****************************************************************************/
int main(void)
{ uint8 i, j;
uint8 bak;
PINSEL0 = 0x00000000; // 设置管脚连接,使用I2C口
PINSEL1 = 0x00000000;
IO0DIR = SPI_IOCON|BEEPCON; // 设置SPI控制口和蜂鸣器控制口为输出
IO0SET = BEEPCON;
HC595_SendDat(0xFF); // LED1--LED8显示灭
I2C_Init(30000); // I2C配置及端口初始化
DelayNS(5);
SysCheck_RAM();
BeepRun(10);
SysCheck_NET();
SysCheck_USB();
SysCheck_E2PROM();
while(1)
{
// 全显示0、2、4、6、8测试
HC595_SendDat(0xFF); // LED1--LED8显示灭
for(i=0; i<=8; i=i+2)
{ for(j=0; j<8; j++) disp_buf[j] = i;
ZLG7290_SendBuf(disp_buf,8);
DelayNS(10);
}
// 显示一位8,然后从左到右移动,再从右到左移动
for(j=0; j<8; j++) disp_buf[j] = 0x1F; // 缓冲区填充0x1F (0x1F为不显示)
bak = 0x01;
disp_buf[7] = 0x08; // 显示第一位为8字
ZLG7290_SendBuf(disp_buf,8);
HC595_SendDat(~bak);
DelayNS(5);
for(i=7; i>0; i--)
{ disp_buf[i] = 0x1F;
disp_buf[i-1] = 0x08; // 显示第i-1位为8字
bak = bak<<1;
ZLG7290_SendBuf(disp_buf,8);
HC595_SendDat(~bak);
DelayNS(5);
}
for(i=0; i<7; i++)
{ disp_buf[i] = 0x1F;
disp_buf[i+1] = 0x08; // 显示第i+1位为8字
bak = bak>>1;
ZLG7290_SendBuf(disp_buf,8);
HC595_SendDat(~bak);
DelayNS(5);
}
// 显示流水灯,循环转动,LED1--LED8配合
for(i=0; i<20; i++)
{ for(j=0; j<8; j++)
{ ZLG7290_SendData(0x10+j, playled1[j]);
}
HC595_SendDat(~pled8a);
DelayNS(5);
for(j=0; j<8; j++)
{ ZLG7290_SendData(0x10+j, playled2[j]);
}
HC595_SendDat(~pled8b);
DelayNS(5);
}
HC595_SendDat(0xFF);
// 显示"7 6 5 4 3 2 1 0"
for(i=0; i<8; i++) disp_buf[i] = i;
ZLG7290_SendBuf(disp_buf,8);
DelayNS(50);
// 从右到左出现“LPC2210F”字样
for(i=0; i<8; i++) disp_buf[i] = 0x1F;
ZLG7290_SendBuf(disp_buf,8);
DelayNS(10);
DispDataBitLSL(0x14, 7, 1);
DispDataBitLSL(0x16, 6, 1);
DispDataBitLSL(0x0C, 5, 1);
DispDataBitLSL(0x02, 4, 1);
DispDataBitLSL(0x02, 3, 1);
DispDataBitLSL(0x01, 2, 1);
DispDataBitLSL(0x00, 1, 1);
DispDataBitLSL(0x0F, 0, 1);
DelayNS(50);
}
return(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -