12864液晶显示程序

源代码在线查看: 12864.c

软件大小: 106 K
上传用户: luoxuetian
关键词: 12864 液晶显示 程序
下载地址: 免注册下载 普通下载 VIP

相关代码

				/****************************************************************************/
				/*
				    文 件 名: 12864.c
				    说	  明: 12864驱动程序
				    作    者: 郭天祥
				    日	  期: 2008.9
				*/
				/*****************************************************************************/
				
				#include "..\inc\12864.h"
				#include "..\inc\sysUtils.h"
				
				
				//总线地址声明
				volatile U8 * LCD12864_MAdd = (volatile U8 *)(0x6000000);
				#define LCD12864_WR_H() rPDATC|=0x01;
				#define LCD12864_WR_L() rPDATC&=~0x01;
				
				void lcd_wcmd(U8 cmd);
				void lcd_wdat(U8 dat);
				void lcd_init(void);
				void lcd_pos(U8 X,U8 Y);
				
				static U8 dis1[] = {"天祥电子"};
				static U8 dis2[] = {"www.txmcu.com"};
				static U8 dis3[] = {"TX-1C 学习板 "};
				static U8 dis4[] = {"是您最好的选择! "};
				
				U8 IRDIS[2];
				U8 IRCOM[4];
				
				/*******************************************************************/
				/*                                                                 */
				/*写指令数据到LCD                                                  */
				/*RS=L,RW=L,E=高脉冲,D0-D7=指令码。                             */
				/*                                                                 */
				/*******************************************************************/
				void lcd_wcmd(U8 cmd)
				{   
					sysUtilsUSecDelay(150000);                       
					LCD12864_WR_L();
					* LCD12864_MAdd=cmd;
					sysUtilsUSecDelay(15000);
				}
				/*******************************************************************/
				/*                                                                 */
				/*写显示数据到LCD                                                  */
				/*RS=H,RW=L,E=高脉冲,D0-D7=数据。                               */
				/*                                                                 */
				/*******************************************************************/
				void lcd_wdat(U8 dat)
				{  
					sysUtilsUSecDelay(150000);                        
					LCD12864_WR_H();
					* LCD12864_MAdd=dat;
					sysUtilsUSecDelay(15000);
				}
				/*******************************************************************/
				/*                                                                 */
				/*  LCD初始化设定                                                  */
				/*                                                                 */
				/*******************************************************************/
				void lcd_init(void)
				{ 
					//LCD_PSB = 1;          //并口方式  
					lcd_wcmd(0x34);         //扩充指令操作
					sysUtilsUSecDelay(5000);/*delay(5);*/
					lcd_wcmd(0x30);         //基本指令操作
					sysUtilsUSecDelay(5000);/*delay(5);*/
					lcd_wcmd(0x0C);         //显示开,关光标
					sysUtilsUSecDelay(5000);/*delay(5);*/
					lcd_wcmd(0x01);         //清除LCD的显示内容
					sysUtilsUSecDelay(5000);/*delay(5);*/
				}
				/*********************************************************
				函数:void LCD12864_Test(void)
				功能:LCD12864测试程序
				*********************************************************/
				void LCD12864_Test(void)
				{
				    U8 i;
				    sysUtilsUSecDelay(5000);/*delay(10);*/                 //延时
				    lcd_init();                //初始化LCD             
				    lcd_pos(0,0);              //设置显示位置为第一行的第1个字符
				    i = 0;
				    
				    while(dis1[i] != '\0')
				    {                         //显示字符
				    	lcd_wdat(dis1[i]);
				    	i++;
				    }
				    
				    lcd_pos(1,0);             //设置显示位置为第二行的第1个字符
				    i = 0;
				    while(dis2[i] != '\0')
				    {
				    	lcd_wdat(dis2[i]);      //显示字符
				    	i++;
				    }
				 	
				 	lcd_pos(2,0);             //设置显示位置为第三行的第1个字符
				    i = 0;
				    while(dis3[i] != '\0')
				    {
				        lcd_wdat(dis3[i]);      //显示字符
				        i++;
				    }
					
					lcd_pos(3,0);             //设置显示位置为第四行的第1个字符
				    i = 0;
				    while(dis4[i] != '\0')
				    {
				        lcd_wdat(dis4[i]);      //显示字符
				        i++;
				    }
				}
				
				/*********************************************************/
				/*                                                       */
				/* 设定显示位置                                          */
				/*                                                       */
				/*********************************************************/
				void lcd_pos(U8 X,U8 Y)
				{                          
				   U8  pos;
				   if (X==0)
				     {X=0x80;}
				   else if (X==1)
				     {X=0x90;}
				   else if (X==2)
				     {X=0x88;}
				   else if (X==3)
				     {X=0x98;}
				   pos = X+Y ;  
				   lcd_wcmd(pos);     //显示地址
				}			

相关资源