永发信息网

ST7920汉字检索字库哪儿有啊?

答案:2  悬赏:60  手机版
解决时间 2021-02-27 20:51
  • 提问者网友:刺鸟
  • 2021-02-27 09:01
ST7920汉字检索字库哪儿有啊?
最佳答案
  • 五星知识达人网友:行雁书
  • 2021-02-27 09:06
下载字模软件~~~
全部回答
  • 1楼网友:酒者煙囻
  • 2021-02-27 10:17
#include<reg51.h> #include<intrins.h> #include<stdio.h> #defineucharunsignedchar #definefisrt_addr0//定义字符/汉字显示起始位置 typedefunsignedcharuint8; sbitlcd_rs=p2^2; sbitlcd_rw=p2^3; sbitlcd_e=p2^4; sbitpcb=p2^5; uchari,j; uint8ac_table[]={ 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,//第一行汉字位置 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,//第二行汉字位置 0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,//第三行汉字位置 0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,//第四行汉字位置 }; voiddelay(intms) { while(ms--) { for(j=0;j<120;j++); } } bitlcd_busy() {bitresult; lcd_rs=0; lcd_rw=1; lcd_e=1; result=(bit)(p0&0x80); lcd_e=0; returnresult; } voidlcd_wcmd(ucharcmd) { while(lcd_busy()); lcd_rs=0; lcd_rw=0; lcd_e=0; p0=cmd; lcd_e=1; lcd_e=0; } voidlcd_wdata(uchardat) { while(lcd_busy()); lcd_rs=1; lcd_rw=0; lcd_e=0; p0=dat; lcd_e=1; lcd_e=0; } voidlcd_initial() { lcd_wcmd(0x30); delay(1); lcd_wcmd(0x0c);//开显示,关光标,不闪烁 delay(1); lcd_wcmd(0x06);//指定在资料写入或读取时,光标的移动方向 delay(1); lcd_wcmd(0x01); delay(10);//这里要延时长一点,否侧会影响下面的操作 } voidclr_screen() { lcd_wcmd(0x30);//考虑到前面出现0x34 lcd_wcmd(0x01); delay(10); } //先写0x34关绘图,写地址数据,0x360x绘图 voidlcd_fill(uchardisdata) {ucharx,y;//参考pdf写gdram的步骤,显示坐标 for(y=0;y<32;y++) for(x=0;x<16;x++) {lcd_wcmd(0x34); lcd_wcmd(y+0x80);//行地址 lcd_wcmd(x+0x80);//列地址 lcd_wdata(disdata); lcd_wdata(disdata); lcd_wcmd(0x36); } lcd_wcmd(0x30);//考虑到前面出现0x34 } voidzi_fu(ucharcode*s) { while(*s!=0) {lcd_wdata(*s); s++; delay(10); } } //注意:中文显示时空格符或数字ascii码必需两个一起用,标点符号注意中英文 voidintruction() { clr_screen(); lcd_wcmd(0x80);//第一行(如果是地址是:80h,即lcd的第一行的第一个位置显示) zi_fu("我真的很爱你"); lcd_wcmd(0x90);//第二行(如果是地址是:90h,即lcd的第二行的第一个位置显示) zi_fu("很在乎很在乎你"); lcd_wcmd(0x88);//第三行(如果是地址是:88h,即lcd的第二行的第一个位置显示) zi_fu("我把我的心交给你"); lcd_wcmd(0x98);//第四行(如果是地址是:98h,即lcd的第二行的第一个位置显示) zi_fu("想你啦"); delay(1000); } voidfeeling1() { lcd_wcmd(0x30); zi_fu("我真的很爱你"); delay(300); lcd_wcmd(0x90+fisrt_addr); zi_fu("很在乎很在乎你"); delay(300); lcd_wcmd(0x88+fisrt_addr); zi_fu("我把我的心交给你"); delay(300); lcd_wcmd(0x98+fisrt_addr); delay(500); zi_fu("想你哦"); } voiddisp_img(ucharcode*bmp) { ucharcount=2,x=0x80; lcd_wcmd(0x34);//扩展指令 lcd_wcmd(0x36);//打开绘图 for(;count>0;count--) { for(i=0;i<32;i++) {lcd_wcmd(0x80|i); lcd_wcmd(x);//x地址坐标,自动加1. for(j=0;j<16;j++)//16*8=128 lcd_wdata(*bmp++); } x=0x88;//下半屏 } } voidzk(uchar*zk) { uchari,j; for(j=0;j<16;j++) { lcd_wcmd(0x34);//扩展指令 lcd_wcmd(0x36);//打开绘图 lcd_wcmd(0x80|j); lcd_wcmd(0x80);//x地址坐标,自动加1. for(i=0;i<2;i++) { lcd_wdata(*zk++); } } } voidlcd_write_poss(ucharx,uchary,uchar*zifu) { ucharaddr,i=0; if(x==1)addr=0x80; if(x==2)addr=0x90; if(x==3)addr=0x88; if(x==4)addr=0x98; addr=addr+y; lcd_wcmd(0x30); lcd_wcmd(addr); while(*zifu!='\0') { lcd_wdata(*zifu++); } } voidmain() { pcb=1; while(1) { lcd_initial(); delay(1000); clr_screen(); feeling1(); delay(3000); for(i=8;i>0;i--) { lcd_wcmd(0x18);//一二行与三四行调换了,液晶分为上下两个半屏, delay(1000);//有时会乱,与上面程序有关,要加lcd_wcmd(0x30),clrscreen(); } clr_screen();//清屏 feeling1(); lcd_wcmd(0x34); lcd_wcmd(0x04);//0x04第一行和第三行反白显示, delay(3000);//0x05第二行和第四行反白显示,与pdf不符 lcd_wcmd(0x04);//恢复正常 delay(3000); lcd_wcmd(0x34); lcd_wcmd(0x03);//允许输入滚动地址 for(i=0x40;i<0x7f;i++) { lcd_wcmd(i);//垂直滚动屏幕的内容 delay(500); } } }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯