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

📄 main.c

📁 32*16点阵显示例程 模拟奥运会开幕式的
💻 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)/32	//自动计算字数
uchar m=0,n=0;						//m为扫描过程中的中间变量,n为显示指针
uchar a,b;							//a、b分别为左半屏、右半屏的扫描变量

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

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

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

/*****计数器中断程序*****/
void timer0(void) interrupt 1    	//中断处理
{
	uchar k;						//定义变量k
 	TH0=0xfc;
 	TL0=0x18;
 	k++;							//定时时间到,初始变量加1
	if(k>speed) {m++;k=0;}

	if(m<=16) {a=m;b=0;}			//扫描左半屏,不扫描右半屏		
	else {a=16;b=m-16;}				//全屏扫描左半屏,扫描右半屏

	if(m>32) b=16;					//全屏扫描右半屏
									//中间这段时间是为了看清楚整屏画面内容,稍作停顿
	if(m==40) {m=0;n++;}			//一幅画面卷动显示过程结束,载入下一幅画面

	if(n>num/2-1) n=0;				//所有汉字显示完毕,回到第一个汉字				     	
}

/*****显示子程序*****/
void display(void)
{
	uchar i,j;
	CS2=1;							//关右屏
	CS1=0;							//开左屏							
	for(i=0;i<a;i++)				//变量a决定了一次扫描左半屏列数
	{
		lie=i;						//左屏列扫描信号输出
		hang1=hanzi[i+64*n];		
		hang2=hanzi[i+64*n+16];		//行信号输出
		delay();				
		hang1=0;					
		hang2=0;					
	}	
	CS1=1;							//关左屏
	CS2=0;							//开右屏
	for(j=0;j<b;j++)				//变量b决定了一次扫描右半屏列数
	{	 	
		lie=j<<4;					//右屏列扫描信号输出
	 	hang1=hanzi[j+64*n+32];		
	 	hang2=hanzi[j+64*n+48];		//行信号输出
	 	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 + -