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

📄 main.c

📁 周立功7289在cortex stm32上的一直
💻 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 + -