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

📄 text1.c

📁 一个用51单片机驱动12864LCD的例子
💻 C
字号:
//proteus仿真论坛:http://proteus.5d6d.com 
#include<reg51.h>
#include<lcd drive.h>
#include<hzcl.c>
#define ulong unsigned long
#define uchar unsigned char
#define uint unsigned int

void delay(uint);

main()
{   uchar xdata* addx=0;		//初始值指向U6的开始,用于读取U6中天龙八部的内码
	ulong addf;				//算得特定汉字在U0-U5中的位置
    uint i;		//存放汉字点阵的片内偏移地址
	ulong k,l;	//k存放内码的高8位,l存放内码的低八位
	uchar phang=0,plie=0;	//用于存放已显示汉字的个数
	uchar* hzdot;//用于存放调整好的汉字点阵的数组首地址,直接用于显示的输入

	E=1;
	dspon();
	cls();
	sets(0);
	cls();								    //lcd初始化

	do
	{		

		P1=5;	//选中U6,装天龙八部的内码的
		while(((k=*addx)&0x80)==0x0) //识别该字符是ASCII码还是汉字码,ASCII码的最高位为0
		{
		if(k==0) while(1);//读到末尾标记/0的时候停止,死机
		if(k==0x0d)
			{plie=0;
			 phang++;
			 if(phang>3) {phang=0;delay(1000);cls();}
			 addx+=2;
			}
		}
		addx++;
		l=*addx;
		addx++;		//一个汉字的内码包括2个字节,下面的算法是根据汉字的内码来计算其在字库点阵中的位置
		addf=((k-161)*94+(l-161))*32;		//由内码计算汉字点阵首地址,k存放内码的高8位,l存放内码的低8位
		P1=addf/0x10000;	//计算汉字点阵所在的rom,片选
		i=(addf%0x10000);	//计算在汉字点阵被选中rom中的偏移地址地址
		hzdot=hz32(i);		//汉字点阵转向,转好后把调整好的汉字点阵放在全局变量graph32[]中
		wrhz(hzdot,phang,plie,0);	//显示汉字
		plie++;				
		if(plie>7) 
			{phang++;plie=0;}	//列满7则行加1
		if(phang>3) 			//行满3则翻屏
			{phang=0;delay(1000);cls();}	
	 }while(1);

}

void delay(uint msecond)
{
	uint n;
	for(;msecond>0;msecond--)
		for(n=300;n>0;n--);
}

⌨️ 快捷键说明

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