⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zlg7289demo1.c

📁 使用89c51单片机实现单总线多个DS18B20测温
💻 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 + -