當前位置:編程學習大全網 - 編程語言 - 求壹YM12864J液晶(帶字庫)顯示程序

求壹YM12864J液晶(帶字庫)顯示程序

看來我用的和妳不壹樣。

不知道妳的液晶模塊是不是帶兩個片選口的,我這裏有壹個液晶模塊只帶壹個片選口,數據接口支持串行、4位並行和8位並行,以下使用了8位並行接口,用作測試時只用了最基本的指令來實現漢字的顯示,默認從最左上角開始顯示,未支持自定義位置顯示功能,如果還要其他功能,可參考技術資料去模塊寫入相應的指令,不會復雜的。希望對妳有所幫助。

#include <reg52.h>

#define DB P0

sbit LCD_RS = P1^0;//選擇指令寄存器或數據寄存器

sbit LCD_RW = P1^1;//控制讀、寫

sbit LCD_E = P1^2;//片選、使能

sbit buzy_test = DB^7;//8位數據接口

void byzy_wait(void)//液晶模塊內部忙檢測

{

DB=0xff; //為了讀出狀態,IO口必須先寫入1,否則讀取的狀態會錯誤

LCD_RS=0;

LCD_RW=1;

LCD_E=1;

_nop_();

while(buzy_test);

}

void write_char(unsigned char d)//向模塊寫入1字節數據

{

byzy_wait();

LCD_RS=1;

LCD_RW=0;

DB=d;

LCD_E=1;

_nop_();

LCD_E=0;

}

void write_code(unsigned char d)//向模塊寫入壹條指令

{

byzy_wait();

LCD_RS=0;

LCD_RW=0;

DB=d;

LCD_E=1;

_nop_();

LCD_E=0;

}

void write_string(unsigned char *str)//顯示字符串

{

while(*str!='\0')

{

write_char(*str);

str++;

}

}

main()

{

delay_ms(500);//自定義壹個毫秒級的延時,這裏延時了500ms

write_code(0x30);//通過寫入指令,選擇8位並行接口模式

write_code(0x01);//清除顯示

write_code(0x0c);//開啟顯示狀態,允許整體顯示

write_code(0x02);//地址歸位

write_code(0x80);//設定顯示起始位置為第壹行行首

write_string("液晶演示");

while(1)

{}

}

  • 上一篇:山東現代學院食堂飯菜如何?師資怎麽樣?
  • 下一篇:大學生兼職有哪些
  • copyright 2024編程學習大全網