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

📄 main.c

📁 DIY小型LED点阵显示系统.rar
💻 C
字号:
/*********************************************************
程序名称:LED3216点阵交替变化显示汉字
简要说明:本程序只利用左半屏显示
          P0口接上行线,P2口接下行线,P3口接扫描线
		  P3.0接左屏译码器使能端(CS1)
		  P3.1接右屏译码器使能端(CS2)
编    写:JiangX.net
*********************************************************/
#include<AT89X52.h>
#include<ziku.h>				
#define uchar unsigned char			//宏定义			
#define hang1   P0					//上半屏行线
#define hang2   P2					//下半屏行线
#define lie     P1					//扫描列线
#define CS1   	P3_0				//接左屏154译码器使能端,低电平使能
#define	CS2   	P3_1			    //接右屏154译码器使能端,低电平使能
#define num		sizeof(hanzi)/16	//自动计算字数
uchar a=0,b=0;						//全局变量用于汉字切换

/*****参数调整项*****/
#define speed   100					//变化速度调节
#define light   120					//显示亮度调节,数值不可过大,以不感到屏幕闪烁为准

/*****延时子程序*****/
void delay(void)					//专门设置的延时程序用来改变扫描速度以方便调节亮度
{
	uchar i;
	for(i=0;i<light;i++);
}

/*****初始化子程序*****/
void init(void)	              		//定时器初始化,设置定时器0工作方式1,定时时间5ms
{			 
 	TMOD=0x1;
 	TH0=0xec;
 	TL0=0x78;
}

/*****定时器中断服务程序*****/
void time0(void)interrupt 1
{
 	TH0=0xec;
 	TL0=0x78;;	
	a++;		   		   
	if (a==speed){a=0;b++;}
	if(b>num/2-1) b=0;				//所有汉字显示完毕,回到第一个汉字
}

/*****显示子程序*****/
void display(void)
{
	uchar i;					   	//关右屏
	CS2=1;						   	//开左屏
	CS1=0;
	for(i=0;i<16;i++)
	{
		lie=i;					   	//列扫描信号输出
		hang1=hanzi[32*b+i];	   
		hang2=hanzi[32*b+i+16];	   	//行信号输出
		delay();				   
		hang1=0;
		hang2=0;					
	}
}

/*****主程序*****/
void main(void)
{
	init();
	TR0=1;
	ET0=1;
	EA=1;				   			//开中断
	while(1)
	{
		display();
	}			
}

/*****END*****/
/*****欢迎到作者博客交流:http://www.jiangx.net*****/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -