完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
|
相关推荐
10个回答
|
|
带不带字库,如果带字库的话那就好办,直接在代码里面写入相关符号,或者写相关地址,如果没有,那么用相关软件自己写一个子库。
|
|
|
|
在网上下个小软件,把你要显示的图形转换成一堆16进制数,然后按行或按列送给显示器!
|
|
|
|
带字库,取模软件没法取形啊,这是我写的程序;下一个目的是用12864显示检测的波形。。。。没头绪。。。#include
#define uchar unsigned char #define LCMdata P0 #define Busy 0x80 ***it RS=P1^0; ***it RW=P1^1; ***it E=P1^2; ***it REST=P1^3; void Display_String(uchar line,uchar *string); void Wr_Data(uchar wrdata); //写数据 void Wr_Command(uchar wrcommand,busyc); //写指令 void RDbf(void);//读忙状态 void Lcm_Init(void);//液晶初始化 void Delay5Ms(void);//延时 5ms uchar code string_1[] = {"我是梁康 "}; uchar code string_2[] = {"同桌是小胖 "}; uchar code string_3[] = {"小胖同桌是曹林 "}; void main(void) { Lcm_Init(); Display_String(1,string_1); Display_String(2,string_2); Display_String(3,string_3); //Display_String(4,string_3); while(1); } void Display_String(uchar line,uchar *string)//显示字 { uchar addr,i; if(line==1) addr=0x80; //第一行地址 else if(line==2) addr=0x90; //第二行地址 else if(line==3) addr=0x88; //第三行地址 else if(line==4) addr=0x98; //第四行地址 Wr_Command(addr,1); for(i=0;i<16;i++) { Wr_Data(*string++); } } void Wr_Data(uchar wrdata) //写数据 { RDbf(); RS=1; RW=0; E=1; LCMdata=wrdata; E=0; } void Wr_Command(uchar wrcommand,busyc) //写指令 { if(busyc) RDbf(); RS=0; RW=0; E=1; LCMdata=wrcommand; E=0; } void RDbf(void) //读忙状态 { while(1) { RS=0; RW=1; E=0; LCMdata=0xFF; E=1; if((LCMdata&Busy)==0) break; } } void Lcm_Init(void) { Delay5Ms(); REST=1; REST=0; REST=1; Wr_Command(0x30,0); Delay5Ms(); Wr_Command(0x30,0); //2次显示模式设置,不用判忙 Delay5Ms(); Wr_Command(0x0C,1); //开显示及光标设置 Delay5Ms(); Wr_Command(0x01,1); //显示清屏 Delay5Ms(); Delay5Ms(); Wr_Command(0x06,1); //显示光标移动设置 Delay5Ms(); } void Delay5Ms(void) //延时 5ms { unsigned int TempCyc=5552; while(TempCyc--); } |
|
|
|
刚新下了个取模软件可以取图形的模,新问题是怎么送进去啊。像16*16点阵那样送也不知到他怎么接的电路啊。。。。。。纠结了。。。。
|
|
|
|
http://blog.sina.com.cn/s/blog_89cdc9200101723f.html 自己以前写的一个液晶程序 看看对你有没有帮助
|
|
|
|
#include
#define uchar unsigned char #define LCMdata P0 #define Busy 0x80 ***it RS=P1^0; ***it RW=P1^1; ***it E=P1^2; ***it REST=P1^3; void Display_String(uchar code *string); void Wr_Data(uchar wrdata); //写数据 void Wr_Command(uchar wrcommand,busyc); //写指令 void RDbf(void);//读忙状态 void Lcm_Init(void);//液晶初始化 void Delay5Ms(void);//延时 5ms void Delayms(uchar x); void photodisplay(uchar *bmp);//图形显示 uchar code string_1[] = {"有一商人到一个小镇去推销鱼缸,尽管鱼缸工艺精细,造型精巧,但问津者廖廖。于是,商人在鸟市场找了一个卖金鱼的老头,以很低的价格向他订购了500尾小金鱼,老头很高兴,—他在小镇上卖金鱼多年,生意一直惨淡。商人让担着金鱼的老头和他一起来到穿镇而,把这500尾金鱼全部都投进去!你只管放,买鱼的钱我一分不会少给你的。刚过半天,一条消息就传遍了小镇:水渠里,不可思议有了一尾尾漂亮又活泼的小金鱼!镇上的人们争先恐后的拥到渠边,许多人跳到渠里,小心翼翼地寻找和捕捉小金鱼。捕到小金鱼的人,立刻兴高彩烈地去没买鱼缸,那些还没有捕到的人,也纷纷拥上街头去抢购鱼缸,大家兴奋地想:既然渠里有了金鱼,虽然自己今天没有捕到,但总有一天会捕到的,那么买鱼缸早晚会派上用场。卖鱼缸的商人把售价抬了又抬,但他的几千个鱼缸很快就被人们抢购一空,欣喜若狂的商人想,如果不是自己灵机一动在水渠里放进区区500尾小金鱼。自己那几千个玻璃鱼缸不知卖到何年何月呢?"}; void main(void) { Lcm_Init(); Display_String(string_1); while(1); } void Display_String(uchar code *string)//显示字 { uchar addr,i,m; while(*string) { for(m=1;m<=4;m++) { if(m==1) addr=0x80; //第一行地址 else if(m==2) addr=0x90; //第二行地址 else if(m==3) addr=0x88; //第三行地址 else if(m==4) addr=0x98; //第四行地 Wr_Command(addr,1); for(i=0;i<=15;i++) { Delayms(100); Wr_Data(*string++); } } Lcm_Init(); } } void photodisplay(uchar *bmp) //图形显示 { uchar i,j; Wr_Command(0x34,1); //写数据时,关闭图形显示 for(i=0;i<32;i++) { Wr_Command(0x80+i,1); //先写入水平坐标值 Wr_Command(0x80,1); //写入垂直坐标值 for(j=0;j<16;j++) //再写入两个8位元的数据 Wr_Data(*bmp++); Delayms(1); } for(i=0;i<32;i++) { Wr_Command(0x80+i,1); Wr_Command(0x88,1); for(j=0;j<16;j++) Wr_Data(*bmp++); Delayms(1); } Wr_Command(0x36,1); //写完数据,开图形显示 } void Wr_Data(uchar wrdata) //写数据 { RDbf(); RS=1; RW=0; E=1; LCMdata=wrdata; E=0; } void Wr_Command(uchar wrcommand,busyc) //写指令 { if(busyc) RDbf(); RS=0; RW=0; E=1; LCMdata=wrcommand; E=0; } void RDbf(void) //读忙状态 { while(1) { RS=0; RW=1; E=0; LCMdata=0xFF; E=1; if((LCMdata&Busy)==0) break; } } void Lcm_Init(void) { Delay5Ms(); REST=1; REST=0; REST=1; Wr_Command(0x30,0); Delay5Ms(); Wr_Command(0x30,0); //2次显示模式设置,不用判忙 Delay5Ms(); Wr_Command(0x0C,1); //开显示及光标设置 Delay5Ms(); Wr_Command(0x01,1); //显示清屏 Delay5Ms(); Delay5Ms(); Wr_Command(0x06,1); //显示光标移动设置 Delay5Ms(); } void Delay5Ms(void) //延时 5ms { unsigned int TempCyc=5552; while(TempCyc--); } void Delayms(uchar x) { uchar i; while(x--)for(i=0;i<123;i++); } |
|
|
|
做着好玩的,事实证明人是会进步的
|
|
|
|
好东西自然要收藏 好东西与你共分享
|
|
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
205 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1253 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
848 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
853 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1073 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12013 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 01:41 , Processed in 0.598196 second(s), Total 58, Slave 52 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号