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

📄 hanzi.c

📁 零基础单片机C语言设计全套教程
💻 C
字号:
#include<reg52.h>				//头文件
#include<stdio.h>

unsigned data i;
unsigned char *p;				 //建立数组指针
unsigned char wbyte;

sbit E=P3^2;					//读写使能信号,1有效
sbit R_W=P3^1;				//读写选择信号;1为读选通,0为写选通
sbit RS=P3^0;
sbit D_I=P3^0;					//数据指令选择信号;1为数据操作,0为写指令或读状态

char code Hanzi[32]=  			//汉字和字符数组
{
 0x02,0x03,					//笑脸,心
 0x03,						//心
 0xb1,0xb1,					//汉字"北"
 0xbe,0xa9,					//汉字"京"
 0xb0,0xc2,					//汉字"奥"
 0xd4,0xcb,					//汉字"运"
 0xbb,0xe1,					//汉字"会"
0x03,						//心
 0x03,0x02,					//心,笑脸
 0x30,0x31,					//0,1
 0x32,0x33, 					//2,3
 0x34,0x35,					//4,5
 0x36,0x37,					//6,7
 0x38,0x39,					//8,9
 0x41,0x42,					//A,B
 0x43,0x44,					//C,D
 0x45,0x46					//E,F
};
char code Hanzi1[28]=  			//汉字和字符数组
{
 0xbb,0xb6,					//汉字"欢"
 0xd3,0xad,					//汉字"迎"
 0xc4,0xfa,					//汉字"您"
 0xa3,0xa1,					//!
 0x20,0x20,					//空格
 0x20,0x20,
0x20,0x20,
0x20,
 0x32,0x30,					//2,0
 0x30,0x38,					//0,8
 0x2d,0x30,					//-,0
 0x38,0x2d,					//8,-
 0x30,0x38,					//0,8
0x20,0x20,					//空格
0x20,
};

unsigned char data j;
unsigned char data k;

void WCOM(unsigned char dcode);    	//指令操作子函数
void Dat(unsigned char ddata);			//数据操作子函数
void Imim();						//初始化子函数
void Clearlcd();						//基本指令集清屏子函数
void Hanz();						//汉字显示子函数


void main()
{
 Imim();						//初始化
 Clearlcd();

 p=Hanzi;						//指针指向数组的首地址*/
 j=32;	 					//所建立的第一个汉字数组中元素的个数
k=0x80;			 			//起始点:80h-8fh为在第一行显示
 Hanz();						//在1、3行写汉字程序

p=Hanzi1;
j=28;	  					//所建立的第二个汉字数组中元素的个数
k=0x92;						//起始点:90h-9fh为在第二行显示
 Hanz();						//在2、4行写汉字程序
 while(1)
{
}
}


void WCOM(unsigned char dcode)    	//写指令程序
{
unsigned char q;
 R_W=1;
 D_I=0;						//设置状态
Loop:
 P1=0xFF;
 E=1;						//使能有效
 q=P1;						//将P1口状态读入
 E=0;						//关闭使能信号
 if(q&0x80)					//判断屏幕是否忙
 {
 goto Loop;					//若忙,循环等待
 }
 R_W=0;
 D_I=0;						//写数据指令
 P1= dcode;					//将数据送入P1口
 E=1;						//使能信号开
 E=0;						//使能信号关
}


void Dat(unsigned char ddata)
{
unsigned char q;
 R_W=1;
 D_I=0;						//读状态指令
Loop:
 P1=0xFF;
 E=1;						//使能
 q=P1;
 E=0;
 if(q&0x80)					//判忙
 {
 goto Loop;
 }
 D_I=1;						//送数据指令
 R_W=0;
 P1= ddata;					//写入数据
 E=1;						//使能信号开
 E=0;						//使能信号关
}


void Clearlcd()
{
 D_I=0;
 R_W=0;
 P1=0x01;
 WCOM(0x01);					//清除显示
}

void Imim()
{
 P0=0xFF;					//初始化单片机端口
 P1=0xFF;
 P2=0xFF;
 P3=0xFF;
 E=0;
WCOM(0x38);					//功能设定
 WCOM(0x08);					//关显示指令
 WCOM(0x06);					//游标右移
 Clearlcd();					//清屏
 WCOM(0x0c);					//开显示指令
}


void Hanz()
{
 int i;
 WCOM(k);					//设置起始点
 for(i=0;i<j;i++,p++)
 {
  wbyte=*p;
  Dat(wbyte);					//将汉字数组数据送入
 }
}

⌨️ 快捷键说明

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