📄 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 + -