原程序:
#include <reg51.h> #include <intrins.h> #define DATA P0 sbit RS=P2^6; sbit RW=P2^5; sbit EN=P2^7; unsigned charzifu[]={"Hello,World!0"}; unsigned charwangzhi[]={"shp108408772.xxxbao*com"}; void delayms(unsigned char m) //適當延時 {unsigned char i; while(m--) { for(i=0;i<=250;i++) {_nop_(); } } } void WRITE_BYTE(unsigned char canshu) //寫1個字節 { RW=0; _nop_(); _nop_(); EN=1; _nop_(); DATA=canshu; EN=0; _nop_(); _nop_(); } unsigned char READ_BYTE() //讀一個字節 { unsigned char temp; RW=1; _nop_(); EN=1; _nop_(); EN=0; temp=DATA; _nop_(); return temp; } void main() { unsigned char *point; RS=0; WRITE_BYTE(1); //清屏 delayms(10); //約延時23ms WRITE_BYTE(2); //光標歸位 delayms(10); WRITE_BYTE(6); // AC自動增1,屏幕不動 delayms(10); WRITE_BYTE(0x0F); //光標顯示閃爍 delayms(10); WRITE_BYTE(0x14); //光標右移 delayms(10); WRITE_BYTE(0x38); //兩行顯示,5X7字符 delayms(10); WRITE_BYTE(0x80); //設定DDRAM地址 delayms(10); _nop_(); point=wangzhi; while(*point!='\0') //Hello,world! {RS=1; _nop_(); WRITE_BYTE(*point); point=point+1; delayms(10); if(point==wangzhi+16) {RS=0; WRITE_BYTE(0xC0); //設定DDRAM地址為下行第一個字符處 delayms(10); } } while(1); } 這是一個1602屏分兩行顯示Hello,world!和shp108408772.xxxbao*com字符程序,我用在了40266液晶屏上,現在第一行顯示shp108408,第二行顯示772.xxxbao*com,Hello,world!這些字符沒有顯示這正常嗎?
在這個程序生如何改動可以每行顯示40個字符。
請高手給予指點,謝謝!
|