汉字与图形显示

汉字与图形显示,proteus实现12864,12864仿真,用单片机仿真12864,protues汉字与图形显示,单片机12864, 单片机实现汉字仿真

应用介绍

proteus实现12864,12864仿真,用单片机仿真12864,protues汉字与图形显示,单片机12864, 单片机实现汉字仿真

#include <intrins.h>
#include<ziku.c>

#define uchar unsigned char
#define uint unsigned int
uchar num[] = "0123456789";	
sbit REST = P2^0;			    											//Reset signal, active"L"
sbit C_D = P2^1;															//L:data   H:code
sbit C_E = P2^2;															//Chip enable signal, active"L"
sbit R_D = P2^3;															//read signal, active"L"
sbit W_R = P2^4;															//write signal, active"L"
#define width      				 15											//显示区宽度
#define Graphic          	     1
#define TXT           	    	 0
#define LcmLengthDots            128
#define LcmWidthDots             64                                                                                                                                                                                                                                       
/**************************12864液晶的相关函数**********************/         								  
void delay_nms(uint i)
{
	while(i)
	i--;
}
void write_commond(uchar com)												//对液晶写一个指令
{	 									 	
	C_E = 0;	
	C_D = 1;
	R_D = 1;
	P0 = com;
	W_R = 0;																// write	  
	_nop_();					
	W_R = 1;																// disable write
	C_E = 1;						   	   		
	C_D = 0;
}
void write_date(uchar dat)													//对液晶写一个数据
{
	C_E = 0;
	C_D = 0;
	R_D = 1;
	P0 = dat;
	W_R = 0;
	_nop_();
	W_R = 1;
	C_E = 1;
	C_D = 1;
}
 void write_dc(uchar com,uchar dat)											//写一个指令和一个数据
{
	write_date(dat);
	write_commond(com);
}
//写一个指令和两个数据
void write_ddc(uchar com,uchar dat1,uchar dat2)
{
	write_date(dat1);
	write_date(dat2);
	write_commond(com);
}
//LCD初始化函数
void F12864_init(void)
{	
	REST = 0;
	delay_nms(2000);					
	REST = 1;
	write_ddc(0x40,0x00,0x00);			     						 		//设置文本显示区首地址
	write_ddc(0x41,128/8,0x00);  											//设置文本显示区宽度
	write_ddc(0x42,0x00,0x08);			      								//设置图形显示区首地址0x0800
	write_ddc(0x43,128/8,0x00);  											//设置图形显示区宽度
	write_commond(0xA0);                     							   	//设置光标形状 8x8方块
	write_commond(0x80);                     							   	//显示方式设置 文本and图形(异或)
	write_commond(0x92);                     							   	//设置光标
	write_commond(0x9F);                     							   	//显示开关设置 文本开,图形开,光标闪烁关							 	
}
//**************************//清显示存储器函数
void F12864_clear(void)
{
	unsigned int i;
	write_ddc(0x24,0x00,0x00); 												//置地址指针为从零开始
   	write_commond(0xb0); 													//自动写
	for(i = 0;i < 128 * 64 ;i++)write_date(0x00); 							//清一屏
	write_commond(0xb2); 													//自动写结束
	write_ddc(0x24,0x00,0x00); 												//重置地址指针 
}
//设定显示的地址
void goto_xy(uchar x,uchar y,uchar mode)
{
     uint  temp;
     temp = 128 / 8 * y + x;
     if(mode)                                 								//mode = 1为Graphic
     {                                        								//如果图形模式要加上图形区首地址0x0800
         temp = temp + 0x0100;
     }
     write_ddc(0x24,temp & 0xff,temp / 256);	  							//地址指针位置
}
//显示一个ASCII码函数
void Putchar(uchar x,uchar y,uchar Charbyte)
{
     goto_xy(x,y,TXT);
     write_dc(0xC4,Charbyte-32);		     								//数据一次读写方式//查字符rom	 
}
void display_string(uchar x,uchar y,uchar *p)
{
	while(*p != 0)
	{
		if(x > 15 )                          								//自动换行	 128*64
		{										 	
			x = 0;
			y++;
		}
		Putchar(x,y,*p);
		++x;
		++p;
	}
}
void display_num(uchar x,uchar y,uchar z)
{
	uchar z1,z2;
	z1 = num[z / 10];
	z2 = num[z % 10];
	Putchar(x,y,z1);
	Putchar(x+1,y,z2);
}


//显示一串汉字,j = k + n为(n为要显示的字的个数),k为选择从哪个字开始
void dprintf_hanzi_string_1(struct typFNT_GB16 code *GB_16,uint X_pos,uint Y_pos,uchar j,uchar k)
{  
	unsigned int address;
	unsigned char m,n;
	while(k < j)
	{
		m = 0;
		address = LcmLengthDots / 8 * Y_pos + X_pos + 0x0800;
		for(n = 0;n < 16;n++)                                  			  	//计数值16
    	{
		   write_ddc(0x24,(uchar)(address),(uchar)(address>>8));  			//设置显示存储器地址
		   write_dc(0xc0,GB_16[k].Mask[m++]);                    			//写入汉字字模左部
		   write_dc(0xc0,GB_16[k].Mask[m++]);                 			    //写入汉字字模右部
		   address = address + 128/8;                           			//修改显示存储器地址,显示下一列(共16列)
	    }
		X_pos += 2;
		k++;
	}
}

文件列表(部分)

名称 大小 修改日期
Last Loaded 汉字与图形显示.DBK11.79 KB2019-09-03
汉字与图形显示.DSN11.79 KB2019-09-03
汉字与图形显示.pdsprj.J8X8KE978YQ8Z68.Administrator.workspace0.22 KB2019-09-03
汉字与图形显示.PWI0.36 KB2019-09-03
LCD12864.c1.59 KB2019-09-03
LCD12864.LST2.44 KB2019-09-03
LCD12864.OBJ4.04 KB2019-09-03
main.c0.29 KB2019-09-03
main.LST0.64 KB2019-09-03
main.OBJ4.52 KB2019-09-03
ziku.c0.48 KB2019-09-03
汉字与图形显示4.18 KB2019-09-03
汉字与图形显示.hex1.33 KB2019-09-03
汉字与图形显示.lnp0.03 KB2019-09-03
汉字与图形显示.M512.06 KB2019-09-03
汉字与图形显示.opt.bak0.53 KB2019-09-03
汉字与图形显示.plg0.17 KB2019-09-03
汉字与图形显示.Uv2.bak0.89 KB2019-09-03
汉字与图形显示.uvgui.Administrator4.84 KB2019-09-03
汉字与图形显示.uvopt1.55 KB2019-09-03
汉字与图形显示.uvproj2.87 KB2019-09-03
汉字与图形显示_Opt.Bak0.52 KB2019-09-03
汉字与图形显示_Uv2.Bak0.00 KB2019-09-03
汉字与图形显示_uvopt.bak5.84 KB2019-09-03
汉字与图形显示_uvproj.bak2.76 KB2019-09-03
仿真电路0.00 KB2019-09-03
程序0.00 KB2019-09-03
项目19- 汉字与图形显示0.00 KB2019-09-03

立即下载

相关下载

[这样的嵌入式经验,没十年,你悟的出来吗?] 嵌入式行业需要什么样的技术人才?仔细观察各种招聘的岗位要求吧,无非是两方面。
[用单片机实现温度远程显示资料] 此文档是用单片机实现温度远程显示资料。 文档介绍了用AT89S8252单片机的串行接口与智能温度巡回检测仪(XJ-08S)通过RS—485总线相互通讯实现热水温度远程显示的一种低成本解决方案,内容涉及RS—485总线通讯、单片机驱动数码管显示、数据转换以及键盘处理软硬件设计等内容。
[基于GSM短信模块的家庭防盗报警系统论文资料] 此文档是基于GSM短信模块的家庭防盗报警系统论文资料。 文档的系统主要由单片机和GSM短信模块组成,借助最可靠、最成熟的GSM移动网络,以最直观的中文短消息或电话形式,直接把报警地点的情况反映到您的手机屏幕上。
[基于单片机的简易逻辑分析仪设计论文资料] 此文档基于单片机的简易逻辑分析仪设计论文资料。
[多功能出租车计价器设计论文资料] 此文档是多功能出租车计价器设计论文资料。 文档讲解了用单片机技术来实现一台多功能出租车计价器,具有性能可靠、电路简单、成本低等特点。
[单片机C语言程序设计实训100例——基于8051+Proteus仿真] 此文档是单片机C语言程序设计实训100例——基于8051+Proteus仿真。 文档中包括:基础部分、硬件应用、综合设计、程序、基于8051+PROTEUS仿真100实例。

评论列表 共有 0 条评论

暂无评论

微信捐赠

微信扫一扫体验

立即
上传
发表
评论
返回
顶部