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

📄 main.c

📁 16x16x4点阵仿真演示范例
💻 C
字号:
#include <REG51.H>
#include "display.h"

#define FOSC	12				//定义晶振频率
#define	INIT_TH0 0x3C			//定时器T0初始值
#define	INIT_TL0 0xB0
#define	TMOD_T00 0x00			//定义T0为方式0,GATE=0,C/T=0,13位计数器
#define	TMOD_T01 0x01			//定义T0为方式1,GATE=0,C/T=0,16位计数器
#define	TMOD_T02 0x02			//定义T0为方式2,GATE=0,C/T=0,自动装入8位计数器
#define	TMOD_T03 0x03			//定义T0为方式3,GATE=0,C/T=0,定时器0分成两个8位计数器,定时器1停止计数

/*缩写定义*/   

#define uchar unsigned char
#define	uint unsigned int

/************位定义***************/
sbit STTP = P2^7;

/************函数声明*************/
void	delay(uint c);		        	//延时函数
void	out_rxd(uchar *d);				//汉字输出	

/************主函数***************/
void main()
{
	uchar i,j,k;	//i:每个字的显示循环;j每个字的显示码除以2;k每列刷新次数
	uint b=0;		//显示偏移控制,char类型最多只能显示14个汉字+一个空白位字符
	uchar a;		//控制移动间隔时间
	SCON = 0;
	while(1)
	{	
		j=0;
	  	if(a>1)		//移动间隔时间;取值0--255
		{
			a=0;
		  	b+=2;
		  	if(b>=288)	//显示到最后一个字,回头显示,判断值=字数*32
		   	{
		     	b=0;
		   	}	
		}

  	  	for(i=0;i<16;i++)
	  	{
	  		P1=i;
			STTP = 0;
			for(k=4;k>0;k--)
 	  		{		
				out_rxd(&hanzi[k][j+b+1]);
				out_rxd(&hanzi[k][j+b]);
			}
			STTP = 1;
			delay(15);
			j=j+2;
	  	}
	  	a++;
   	}
}

/************子函数**************/
void delay(uint c)
{
	int i,j;
	for(i=0;i<c;i++)
		for(j=0;j<10;j++);
}

void out_rxd(uchar *d)
{
	SBUF = *d;			//启动串行口传送
	while(TI==0);		//等待串口传送结束
	TI = 0;				//将串口中断标志位置0
}


⌨️ 快捷键说明

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