📄 zlg7289demo1.c
字号:
/*
ZLG7289Demo1.c
ZLG7289 演示程序
说明:
采用查询INT 引脚状态的方式读取键盘值
新的版和旧的版有两处需要修改的:数组和数组变换的地方
*/
#include "ZLG7289.h"
#include<intrins.h>
#define NOP() _nop_()
/*
函数:Delay()
功能:延时0.01~655.36s
参数:
t>0 时,延时(t*0.01)s
t=0 时,延时655.36s
说明:
晶振采用11.0592MHz
*/
void Delay(unsigned int t)
{
do
{
TH0 = 0xDC;
TL0 = 0x00;
TR0 = 1;
while ( !TF0 );
TF0 = 0;
TR0 = 0;
} while (--t);
}
void main()
{
code char DispDat[16] =
{//字母AbCdEFgHIJkLoPqs 的字形数据
0x77,0x1F,0x4E,0x3D,0x4F,0x47,0x7B,0x37,
0x06,0x38,0x07,0x0E,0x1D,0x67,0x73,0x5B
};
//新的版
unsigned char ChangeSwitch[16]={0,1,2,3,7,4,5,6,8,9,10,11,15,12,13,14};
//旧的版
//unsigned char ChangeSwitch[16]={0x0e,0x0d,0x0c,0x0b,0x0a,0x09,0x08,0x0f,0x06,0x05,0x04,0x03,0x02,0x01,0x00,0x07};
unsigned char mod;
unsigned char x;
bit dp;
unsigned char dat;
unsigned char k;
unsigned char n;
TMOD = 0x01;
Delay(30); //延时300ms,等待ZLG7289 复位完毕
ZLG7289_Init(8); //调用ZLG7289 的初始化函数
Delay(100);
//测试
ZLG7289_Test();
Delay(200);
//复位
ZLG7289_Reset();
Delay(100);
for ( x=0; x<8; x++ )
{
ZLG7289_Download(1,x,1,x);
}
//用译码方式0 和方式1 下载数据,并显示
for ( mod=0; mod<2; mod++ )
{
for ( dat=0; dat<16; dat++ )
{
dp = 0;
for ( x=0; x<8; x++ )
{
ZLG7289_Download(mod,x,dp,dat);
}
Delay(80);
dp = 1;
for ( x=0; x<8; x++ )
{
ZLG7289_Download(mod,x,dp,dat);
}
Delay(90);
}
Delay(100);
}
//用不译码的方式显示自己定义的数据
for ( n=0; n<16; n++ )
{
dp = 0;
dat = DispDat[n];
for ( x=0; x<8; x++ )
{
ZLG7289_Download(2,x,dp,dat);
}
Delay(80);
}
Delay(100);
//显示0.1234567
ZLG7289_Download(1,0,1,0);
for ( x=1; x<8; x++ )
{
dat = x;
ZLG7289_Download(1,x,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 ( x=0; x<8; x++ )
{
dat = x;
ZLG7289_Download(1,x,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(30);
}
//段关闭
for ( n=0; n<64; n++ )
{
dat = n;
ZLG7289_SegOff(dat);
Delay(30);
}
//键盘测试
ZLG7289_Reset();
for (;;)
{
if ( ZLG7289_pinINT == 0 ) //有键按下
{
//读取按键值
k = ZLG7289_Key();
//显示按键值
//char ChangeSwitch[16]={0x0e,0x0d,0x0c,0x0b,0x0a,0x09,0x08,0x0f,0x06,0x05,0x04,0x03,0x02,0x01,0x00,0x07};
//int ChangeSwitch[16]={14,13,12,11,10,9,8,15,6,5,4,3,2,1,0,7};
//新的版
k=ChangeSwitch[k];
//旧的版
//k=ChangeSwitch[k-48];
dat = k / 10;
ZLG7289_Download(1,1,0,dat);
dat = k - dat * 10;
ZLG7289_Download(1,0,0,dat);
//等待按键抬起
while ( !ZLG7289_pinINT );
}
Delay(5);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -