12864带字库程序.docx

上传人:b****2 文档编号:25752683 上传时间:2023-06-12 格式:DOCX 页数:8 大小:15.15KB
下载 相关 举报
12864带字库程序.docx_第1页
第1页 / 共8页
12864带字库程序.docx_第2页
第2页 / 共8页
12864带字库程序.docx_第3页
第3页 / 共8页
12864带字库程序.docx_第4页
第4页 / 共8页
12864带字库程序.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

12864带字库程序.docx

《12864带字库程序.docx》由会员分享,可在线阅读,更多相关《12864带字库程序.docx(8页珍藏版)》请在冰豆网上搜索。

12864带字库程序.docx

12864带字库程序

12864带字库程序

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

/*TS12864A-3端口定义*/

#defineLCD_dataP0//数据口

sbitLCD_RS=P1^0;//寄存器选择输入

sbitLCD_RW=P1^1;//液晶读/写控制

sbitLCD_EN=P2^5;//液晶使能控制

sbitLCD_PSB=P1^2;//串/并方式控制

sbitwela=P2^6;

sbitdula=P2^7;

ucharcodedis1[]={"欢迎指导工作"};

ucharcodedis2[]={"淮南师范学院"};

ucharcodedis3[]={"罗雷雷"};

ucharcodedis4[]={"胡伟伟"};

#definedelayNOP();{_nop_();_nop_();_nop_();_nop_();};

ucharIRDIS[2];

ucharIRCOM[4];

voiddelay0(ucharx);//x*0.14MS

voidbeep();

voiddataconv();

voidlcd_pos(ucharX,ucharY);//确定显示位置

/*******************************************************************/

/**/

/*延时函数*/

/**/

/*******************************************************************/

voiddelay(intms)

{

while(ms--)

{

uchari;

for(i=0;i<250;i++)

{

_nop_();

_nop_();

_nop_();

_nop_();

}

}

}

/*******************************************************************/

/**/

/*检查LCD忙状态*/

/*lcd_busy为1时,忙,等待。

lcd-busy为0时,闲,可写指令与数据。

*/

/**/

/*******************************************************************/

bitlcd_busy()

{

bitresult;

LCD_RS=0;

LCD_RW=1;

LCD_EN=1;

delayNOP();

result=(bit)(P0&0x80);

LCD_EN=0;

return(result);

}

/*******************************************************************/

/**/

/*写指令数据到LCD*/

/*RS=L,RW=L,E=高脉冲,D0-D7=指令码。

*/

/**/

/*******************************************************************/

voidlcd_wcmd(ucharcmd)

{

while(lcd_busy());

LCD_RS=0;

LCD_RW=0;

LCD_EN=0;

_nop_();

_nop_();

P0=cmd;

delayNOP();

LCD_EN=1;

delayNOP();

LCD_EN=0;

}

/*******************************************************************/

/**/

/*写显示数据到LCD*/

/*RS=H,RW=L,E=高脉冲,D0-D7=数据。

*/

/**/

/*******************************************************************/

voidlcd_wdat(uchardat)

{

while(lcd_busy());

LCD_RS=1;

LCD_RW=0;

LCD_EN=0;

P0=dat;

delayNOP();

LCD_EN=1;

delayNOP();

LCD_EN=0;

}

/*******************************************************************/

/**/

/*LCD初始化设定*/

/**/

/*******************************************************************/

voidlcd_init()

{

LCD_PSB=1;//并口方式

lcd_wcmd(0x34);//扩充指令操作

delay(5);

lcd_wcmd(0x30);//基本指令操作

delay(5);

lcd_wcmd(0x0C);//显示开,关光标

delay(5);

lcd_wcmd(0x01);//清除LCD的显示内容

delay(5);

}

/*********************************************************/

/**/

/*主程序*/

/**/

/*********************************************************/

main()

{

uchari;

delay(10);//延时

wela=0;

dula=0;

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++;

}

while

(1);

}

 

/*********************************************************/

/**/

/*延时x*0.14ms子程序*/

/**/

/*********************************************************/

voiddelay0(ucharx)//x*0.14MS

{

uchari;

while(x--)

{

for(i=0;i<13;i++){}

}

}

/*********************************************************/

/**/

/*设定显示位置*/

/**/

/*********************************************************/

voidlcd_pos(ucharX,ucharY)

{

ucharpos;

if(X==0)

{X=0x80;}

elseif(X==1)

{X=0x90;}

elseif(X==2)

{X=0x88;}

elseif(X==3)

{X=0x98;}

pos=X+Y;

lcd_wcmd(pos);//显示地址

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 中职中专

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1