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

📄 lm19264.h

📁 这个文档程序主要应用了单片机的串行通讯部分
💻 H
📖 第 1 页 / 共 3 页
字号:
/********************************工程文件说明*******************************/
/*FileName:lm19264.h													   */
/*Author:烛光 															   */
/*Version:v1.0															   */
/*Data:2008年07月11日													   */
/*Description:工程显示程序文件,负责把必要内容显示到液晶屏上。			   */
/*Function List:														   */
/*    1.lcd_wait_free  验忙程序,查询液晶是否忙。						   */
/*	  2.lcd_wr_com  写指令函数,发送液晶指令							   */
/*	  3.lcd_wr_data  写数据函数,发送液晶数据							   */
/*	  4.……															   */
/*History:																   */
/*	  3.烛光  2008.09.13  v1.0  初步完成设计							   */
/*	  2.烛光  2008.09.13  v1.0  初步完成设计							   */
/*	  1.烛光  2008.07.11  v0.0  开始设计								   */
/*Copyright (c) 2008 烛光 All Rights Reserved							   */
/***************************************************************************/

#ifndef __lm19264_H__
#define __lm19264_H__

/***********************************硬件接口说明****************************/
/*
1、DB7--P0^7   5、DB3--P0^3   9、 EN--P2^5   13、VDD--VDD    17、VOUT--RP3 
2、DB6--P0^6   6、DB2--P0^2   10、RW--P2^4   14、VSS--GND    18、RSTB--P2^0  
3、DB5--P0^5   7、DB1--P0^1   11、RS--P2^3   15、CSA--P2^1   19、BLA--VDD  
4、DB4--P0^4   8、DB0--P0^0   12、VO--RP2    16、CSB--P2^2   20、BLK--GND  
*/
/************************************符号定义*******************************/
#define lcd_data_port P0
#define lcd_ctrl_port P2
#define lcd_busy_mark 0x90
sbit lcd_EN=P2^5;
sbit lcd_RW=P2^4;
sbit lcd_RS=P2^3;
sbit lcd_CSA=P2^1;
sbit lcd_CSB=P2^2;
sbit lcd_RSTB=P2^0;
/************************************变量定义*******************************/
uchar startposition=0;//显示开始位置

uchar code lcode[];
uchar code ccode[];
uchar code str0[];

/*******************************函数声明************************************/
void lcd_prt_char(uchar position,uchar cnumber);



/******************************以下为程序***********************************/
//验忙函数
void lcd_wait_free(void)
 {
  lcd_data_port|=lcd_busy_mark;//设置lcd_busy口为输入
  lcd_EN=0;//E=0,
  lcd_RS=0;//RS=0
  lcd_RW=1;//RW=1
  //delay_nus(1);//使用时如果判忙不成功(一直忙)则保留此语句
  lcd_EN=1;//E=1
  _nop_(); 
  while(lcd_data_port&lcd_busy_mark);//等待LCD_DB7为0
  lcd_EN=0;//重设E=0  
 }

//写指令函数
void lcd_wr_com(uchar command,uchar wait_en)
 {
    if(wait_en)lcd_wait_free();//若wait_en为1,则要检测LCD忙信号,等待其空闲	
    lcd_EN=0;//E=0,下面给LCD一个高脉冲
	lcd_RS=0;//RS=0
    lcd_RW=0;//RW=0    
    lcd_data_port=command;
    lcd_EN=1;//E=1
    _nop_();_nop_();
    lcd_EN=0;//下降沿,,数据送入液晶
	_nop_();_nop_();
	lcd_RS=0;//RS=0
  	lcd_RW=1;//RW=1	
 }

//写数据函数
void lcd_wr_data(uchar char_data)
 {
    lcd_wait_free();//等待LCD空闲
    lcd_EN=0;//E=0,下面给LCD一个高脉冲
	lcd_RS=1;//RS=1数据
    lcd_RW=0;//RW=0写    
    lcd_data_port=char_data;
    lcd_EN=1;//E=1
    _nop_();_nop_();
    lcd_EN=0;//下降沿,,数据送入液晶
	_nop_();_nop_();
	lcd_RS=0;//RS=0
  	lcd_RW=1;//RW=1
 }

//选择屏
void lcd_set_scr(uchar scr)
{
	lcd_CSA=0x01&scr;
  	scr>>=1;
  	lcd_CSB=0x01&scr;
}
//选择页
void lcd_set_page(uchar page)
{
	page&=0x07;
	page|=0xb8;
	lcd_wr_com(page,1);
}
//选择列
void lcd_set_column(uchar column)
{
	column&=0x3f;
	column|=0x40;
	lcd_wr_com(column,1);
		
}
//设置起始行
void lcd_set_line(uchar line)
{
	uchar i;
	for(i=0;i<3;i++)
	{
		lcd_set_scr(i);
		line&=0x3f;
		line|=0xc0;
		lcd_wr_com(line,1);		
	}
}

//清屏,和TC一样吧?
void clrscr(uchar scr)
 {
    uchar i,j;
	lcd_set_scr(scr);
	for(i=0;i<8;i++)
	{
		lcd_set_page(i);
		lcd_set_column(0);
		for(j=0;j<64;j++)
		{lcd_wr_data(0x00);}
	}
	    
 }
 
//液晶初始化
void lcd_init(void)
 { 
  //总复位
  lcd_RSTB=0;
  delay_nus(1);
  lcd_RSTB=1;
  //清屏开显示
  clrscr(0);lcd_wr_com(0x3f,1);lcd_set_line(0);
  clrscr(1);lcd_wr_com(0x3f,1);lcd_set_line(0);
  clrscr(2);lcd_wr_com(0x3f,1);lcd_set_line(0);  
 }

//显示一个字符
void lcd_prt_letter(uchar position,uchar lnumber,uchar contra)
{
	uchar scr,page,column,i;
	uint lcodeaddress;
	if(position>= 0&&position<= 7){scr=0;page=0;column=(position- 0)*8;}
	if(position>=24&&position<=31){scr=0;page=2;column=(position-24)*8;}
	if(position>=48&&position<=55){scr=0;page=4;column=(position-48)*8;}
	if(position>=72&&position<=79){scr=0;page=6;column=(position-72)*8;}
	if(position>= 8&&position<=15){scr=1;page=0;column=(position- 8)*8;}
	if(position>=32&&position<=39){scr=1;page=2;column=(position-32)*8;}
	if(position>=56&&position<=63){scr=1;page=4;column=(position-56)*8;}
	if(position>=80&&position<=87){scr=1;page=6;column=(position-80)*8;}
	if(position>=16&&position<=23){scr=2;page=0;column=(position-16)*8;}
	if(position>=40&&position<=47){scr=2;page=2;column=(position-40)*8;}
	if(position>=64&&position<=71){scr=2;page=4;column=(position-64)*8;}
	if(position>=88&&position<=95){scr=2;page=6;column=(position-88)*8;}

	if(lnumber>0x60&&lnumber<0x7b)lnumber-=0x20;//小写转化为大写
	
	if(lnumber>0x29&&lnumber<0x30)lcodeaddress=lnumber*16;
	else if(lnumber>0x40&&lnumber<0x5b)lcodeaddress=(lnumber-0x31)*16;
	else lcodeaddress=lnumber*16;

	lcd_set_scr(scr);
	//上半部分
	lcd_set_page(page);
	lcd_set_column(column);
	if(!contra)for(i=0;i<8;i++)lcd_wr_data(lcode[lcodeaddress+i]);//正常显示
	else       for(i=0;i<8;i++)lcd_wr_data(~(lcode[lcodeaddress+i]));//取反显示 
	//下半部分
	lcd_set_page(page+1);
	lcd_set_column(column);
	if(!contra)for(i=8;i<16;i++)lcd_wr_data(lcode[lcodeaddress+i]);//正常显示
	else       for(i=8;i<16;i++)lcd_wr_data(~(lcode[lcodeaddress+i]));//取反显示 
}



//显示字符串
/*lcd_prt_string(uchar position,uchar *str)
{
	while(*str!='\0'){lcd_prt_letter(position++,*str++-0x30);}
}
*/

//显示汉字
void lcd_prt_char(uchar position,uchar cnumber)
{
	uchar scr,page,column,i;
	uint ccodeaddress;
	if(position>= 0&&position<= 7){scr=0;page=0;column=(position- 0)*8;}
	if(position>=24&&position<=31){scr=0;page=2;column=(position-24)*8;}
	if(position>=48&&position<=55){scr=0;page=4;column=(position-48)*8;}
	if(position>=72&&position<=79){scr=0;page=6;column=(position-72)*8;}
	if(position>= 8&&position<=15){scr=1;page=0;column=(position- 8)*8;}
	if(position>=32&&position<=39){scr=1;page=2;column=(position-32)*8;}
	if(position>=56&&position<=63){scr=1;page=4;column=(position-56)*8;}
	if(position>=80&&position<=87){scr=1;page=6;column=(position-80)*8;}
	if(position>=16&&position<=23){scr=2;page=0;column=(position-16)*8;}

⌨️ 快捷键说明

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