?? main.c
字號:
/*
程序名:
ZLG7289演示程序
文件名:
main.c
說明:
采用中斷方式讀取鍵盤值
*/
#include <reg52.h>
#include "ZLG7289.h"
//定義全局變量Key,用來保存按鍵值
volatile unsigned char Key = 0xFF; //0xFF表示未按鍵的狀態
/*
功能:ZLG7289鍵盤中斷服務程序
參數:
讀到的鍵盤值放在全局變量Key中
說明:
中斷觸發方式要設置成負邊沿觸發
*/
void INT0_SVC() interrupt 0
{
Key = ZLG7289_Key();
}
/*
功能:延時0.01~655.36s
晶振:12MHz
參數:
t>0時,延時(t*0.01)s
t=0時,延時655.36s
*/
void Delay(unsigned int t)
{
do
{
TH0 = 0xD8;
TL0 = 0xF0;
TR0 = 1;
while ( !TF0 );
TF0 = 0;
TR0 = 0;
} while (--t);
}
void main()
{
unsigned char mod;
unsigned char addr;
bit dp;
unsigned char dat;
unsigned char k;
unsigned char n;
TMOD = 0x01;
Delay(30); //延時300ms,等待ZLG7289復位完畢
ZLG7289_Init(); //調用ZLG7289的初始化函數
Delay(100);
//測試
ZLG7289_Test();
Delay(200);
//復位
ZLG7289_Reset();
Delay(100);
//用不同的模式下載數據,并顯示
for ( mod=0; mod<3; mod++ )
{
for ( dat=0; dat<16; dat++ )
{
dp = 0;
for ( addr=0; addr<8; addr++ )
{
ZLG7289_Download(mod,addr,dp,dat);
}
Delay(80);
dp = 1;
for ( addr=0; addr<8; addr++ )
{
ZLG7289_Download(mod,addr,dp,dat);
}
Delay(90);
}
Delay(100);
}
Delay(100);
//顯示0.1234567
ZLG7289_Download(1,7,1,0);
for ( addr=1; addr<8; addr++ )
{
dat = addr;
ZLG7289_Download(1,7-addr,0,dat);
}
Delay(100);
//循環左移
for ( n=0; n<8; n++ )
{
ZLG7289_ROL();
Delay(120);
}
Delay(100);
//循環右移
for ( n=0; n<8; n++ )
{
ZLG7289_ROR();
Delay(120);
}
//左移2位
for ( n=0; n<2; n++ )
{
ZLG7289_SHL();
Delay(150);
}
//右移3位
for ( n=0; n<3; n++ )
{
ZLG7289_SHR();
Delay(150);
}
//顯示01234567
for ( addr=0; addr<8; addr++ )
{
dat = addr;
ZLG7289_Download(1,7-addr,0,dat);
}
Delay(100);
//閃爍控制
dat = 0xFE;
for ( n=0; n<8; n++ ) //逐位閃爍
{
ZLG7289_Flash(dat);
dat <<= 1; dat++; //數據0xFE循環左移
Delay(150);
}
ZLG7289_Flash(0x5A); //多位可以同時閃爍
Delay(200);
ZLG7289_Flash(0xFF); //停止閃爍
Delay(100);
//消隱控制
dat = 0xFE;
for ( n=0; n<8; n++ )
{
ZLG7289_Hide(dat);
dat <<= 1; dat++; //數據0xFE循環左移
Delay(150);
}
ZLG7289_Hide(0x5A); //多位可以同時消隱
Delay(200);
ZLG7289_Hide(0xFF); //停止消隱
Delay(100);
//復位
ZLG7289_Reset();
Delay(100);
//段點亮
for ( n=0; n<64; n++ )
{
dat = n;
ZLG7289_SegOn(dat);
Delay(40);
}
//段關閉
for ( n=0; n<64; n++ )
{
dat = n;
ZLG7289_SegOff(dat);
Delay(40);
}
//鍵盤測試
EA = 0;
IT0 = 1; //負邊沿觸發中斷
EX0 = 1; //允許外部中斷
EA = 1;
ZLG7289_Reset();
for (;;)
{
k = Key; //Key保存鍵值,已經由INT0中斷服務程序得到
Key = 0xFF; //鍵值Key復制到臨時變量k后要恢復為無按鍵狀態
if ( k != 0xFF ) //如果有鍵按下,則顯示出來
{
dat = k / 10;
ZLG7289_Download(1,7,0,dat);
dat = k - dat * 10;
ZLG7289_Download(1,6,0,dat);
}
Delay(5);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -