共2条
1/1 1 跳转至页
际踅涣?ST7920 求助:ST7920液晶的绘图功能怎么弄啊?都调了2天了,还是不行
问
求助:ST7920液晶的绘图功能怎么弄啊?都调了2天了,还是不行!都调晕了!大家知道的帮帮我吧!
谢谢了! 答 1: 我这两天刚好也在学习这个,有点资料不知道对你有用没这个是12864的程序
//延时子程序
void delay(unsigned int t)
{ unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<10;j++);
}
//写命令到LCD
void write_com(unsigned char cmdcode)
{ RS=0;
RW=0;
E=1;
Lcd_Bus=cmdcode;
E=0;
delay(5);
}
//写数据到LCD
void write_data(unsigned char Dispdata)
{ RS=1;
RW=0;
E=1;
lcd_Bus=Dispdata;
E=0;
delay(5);
}
//初始化LCD屏
void lcdinit()
{ delay(2000);
write_com(0x30); //选择基本指令集
delay(10);
write_com(0x30); //选择8bit数据流
delay(5);
write_com(0x0c); //开显示(无游标,不反白)
delay(10);
write_com(0x01); //清显示并设地址指针为00H
delay(500);
write_com(0x06); //指定在资料的读取及写入时设定游标的
//移动方向及指定显示的位移
delay(0);
}
//显示字符串
void hzkdis(unsigned char code *s)
{ while(*s>0)
{ wrire_data(*s);
s++;
delay(50);
}
}
//显示文本
void ceshi()
{ write_com(0x01);
delay(5);
write_com(0x82);
hzkdis("TOPWAY");
write_com(0x88);
hzkdis("LM3033 测试程序");
}
//显示图片
void Disp_Img(unsigned char code *img)
{ unsigned int j=0;
unsigned char x,y,i;
for(i=0;i<9;I+=8)
for(y=0;y<32;y++)
for(x=0;x<8;x++)
{ write_com(0x36);
write_com(y+0x80);
write_com(x+0x80+i);
write_com(0x30);
write_data(img[j++]);
write_data(img[j++]);
}
}
unsigned char code BMP[]={0x00,0x00,......}
void main()
{ lcdinit(); //初始化LCD屏
delay(10);
while(1)
{
cashi(); //显示文本
delay(5000);
write_com(0x01); //清屏
delay(10);
Disp_Img(BMP); //显示图画
delay(1000);
write_com(0x01); //清屏
delay(10);
}
} 答 2: 谢谢!谢谢!我找的就是 显示图片 这部分,文本都已经搞定!
我用的是串行通讯!我的显示是往指定的地址送数据
display(地址,数据1,数据2) 一般只刷新局部!
显示图画这部分调了两天了,没有什么进展!谢谢你哦!
答 3: 我的时序和你的一样的阿?怎么我的就不好用呢?晕倒!
我的时序和你的一样的阿?怎么我的就不好用呢?晕倒!
谢谢了! 答 1: 我这两天刚好也在学习这个,有点资料不知道对你有用没这个是12864的程序
//延时子程序
void delay(unsigned int t)
{ unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<10;j++);
}
//写命令到LCD
void write_com(unsigned char cmdcode)
{ RS=0;
RW=0;
E=1;
Lcd_Bus=cmdcode;
E=0;
delay(5);
}
//写数据到LCD
void write_data(unsigned char Dispdata)
{ RS=1;
RW=0;
E=1;
lcd_Bus=Dispdata;
E=0;
delay(5);
}
//初始化LCD屏
void lcdinit()
{ delay(2000);
write_com(0x30); //选择基本指令集
delay(10);
write_com(0x30); //选择8bit数据流
delay(5);
write_com(0x0c); //开显示(无游标,不反白)
delay(10);
write_com(0x01); //清显示并设地址指针为00H
delay(500);
write_com(0x06); //指定在资料的读取及写入时设定游标的
//移动方向及指定显示的位移
delay(0);
}
//显示字符串
void hzkdis(unsigned char code *s)
{ while(*s>0)
{ wrire_data(*s);
s++;
delay(50);
}
}
//显示文本
void ceshi()
{ write_com(0x01);
delay(5);
write_com(0x82);
hzkdis("TOPWAY");
write_com(0x88);
hzkdis("LM3033 测试程序");
}
//显示图片
void Disp_Img(unsigned char code *img)
{ unsigned int j=0;
unsigned char x,y,i;
for(i=0;i<9;I+=8)
for(y=0;y<32;y++)
for(x=0;x<8;x++)
{ write_com(0x36);
write_com(y+0x80);
write_com(x+0x80+i);
write_com(0x30);
write_data(img[j++]);
write_data(img[j++]);
}
}
unsigned char code BMP[]={0x00,0x00,......}
void main()
{ lcdinit(); //初始化LCD屏
delay(10);
while(1)
{
cashi(); //显示文本
delay(5000);
write_com(0x01); //清屏
delay(10);
Disp_Img(BMP); //显示图画
delay(1000);
write_com(0x01); //清屏
delay(10);
}
} 答 2: 谢谢!谢谢!我找的就是 显示图片 这部分,文本都已经搞定!
我用的是串行通讯!我的显示是往指定的地址送数据
display(地址,数据1,数据2) 一般只刷新局部!
显示图画这部分调了两天了,没有什么进展!谢谢你哦!
答 3: 我的时序和你的一样的阿?怎么我的就不好用呢?晕倒!
我的时序和你的一样的阿?怎么我的就不好用呢?晕倒!
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
vscode+cmake搭建雅特力AT32L021开发环境被打赏30分 | |
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 |