完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
刚上电显示正常,20秒后出现乱码,程序驱动240x160显示正常,设置改动如下,请老师们不吝赐教,感激不尽啊!!!!/*******************************************************
延时程序 *******************************************************/ void delay(uint ms) { uint i,j; for(i=0;i } /******************************************************* 定义指令代码、参数 *******************************************************/ #define systemset 0x40 //初始化设置,后续8字节参数串systemset_P8[] uchar code systemset_P8[] = {0x30, 0x87, 0x87, 0x27, 0x3f, 0xef, 0x28, 0x00}; //P1 P2 P3 P4 P5 P6 P7 P8 #define scroll 0x44 //设定显示起始地址和显示范围,后续10字节参数串scroll_P10[] #define basepart1 0x00 #define basepart2 0x28 #define basepart3 0x50 #define basepart4 0x00 uchar code scroll_P10[] = { 0x00, basepart1, 0xf0, //第一显示区RAM,10KB,160行 0x00, basepart2, 0xf0, //第二显示区RAM,10KB,160行 0x00, basepart3, //第三显示区RAM,10KB 0x00, basepart4}; //第四显示区RAM,32KB #define sleepin 0x53 //休闲模式设置 后续参数:无 #define csrdirr 0x4c //光标向右方向移动 后续参数:无 #define csrdirl 0x4d //光标向左方向移动 后续参数:无 #define csrdiru 0x4e //光标向上方向移动 后续参数:无 #define csrdird 0x4f //光标向下方向移动 后续参数:无 #define dispoff 0x58 //显示关闭 后续参数1字节 #define dispon 0x59 //显示状态打开 后续参数1字节 #define hdotscr 0x5a //点位移量设置 后续参数1字节 #define ovlay 0x1b //显示合成设置 后续参数1字节 #define cgramadr 0x5c //CGRAM首地址设置 后续参数2字节 #define csrform 0x5d //光标形状设置 后续参数2字节 #define csrw 0x46 //设置光标地址 后续参数2字节 #define csrr 0x47 //读出光标地址 后续参数2字节 #define mwrite 0x42 //显示数据写入 后续参数N字节 #define mread 0x43 //显示数据读取 后续参数N字节 #define busy 0x40 //忙信号D6 0100 0000 #define AP (systemset_P8[6])//一行所占显示存储单元的字节数 #define width 32 //图像宽度大小 #define height 96 //图像高度大小 /******************************************************* 写指令代码 *******************************************************/ void write_cmd(unsigned char cmd) { cs = 0; rd = 1; P1 = cmd; a0 = 1; //指令 wr = 0; //上升沿写入 wr = 1; cs = 1; } /******************************************************* 写指令参数、显示数据 *******************************************************/ void write_dat(unsigned char dat) { cs = 0; rd = 1; P1 = dat; a0 = 0; //数据 wr = 0; //上升沿写入 wr = 1; cs = 1; } /******************************************************* 读出数据 *******************************************************/ /*uchar read_dat(void) { uchar temp=0; cs = 0; a0 = 1; wr = 1; rd = 0; temp = P1; rd = 1; cs = 1; return (temp); } /******************************************************* 液晶清屏, 10KB RAM 清零 part = 0 清所有显示区 32KB RAM part = 1 清显示区1 part = 2 清显示区2 part = 3 清显示区3 part = 4 清显示区4 *******************************************************/ void lcd_cls(uchar part) { uint i = 10240; //10240 = 0x2800 10KB RAM write_cmd(csrw); //写入光标地址 write_dat(0x00); //先写低八位 if(part == 1) write_dat(0x00); //显示区1 else if(part == 2) write_dat(basepart2);//显示区2 else if(part == 3) write_dat(basepart3);//显示区3 else if(part == 4) write_dat(basepart4);//显示区4 else {i = 32768; write_dat(0x00);} //所有显示区 32KB RAM write_cmd(csrdirr); //光标向右方向移动 write_cmd(mwrite); //显示数据写入 while(i--) write_dat(0x00);//写入0 } /******************************************************* 开启显示 *******************************************************/ void show_on(void) { write_cmd(dispon); //显示状态开启 write_dat(0x57); //显示图像,光标1Hz闪烁 } /******************************************************* 关闭显示 *******************************************************/ void show_off(void) { write_cmd(dispoff); //显示状态关闭 write_dat(0x57); //显示图像,光标1Hz闪烁 } /******************************************************* 光标定位 x横坐标: 0~39 240/8=40 y纵坐标: 0~29 240/8=30 文本调用 *******************************************************/ /*void locate_xy1(uchar x, uchar y) { uint addr; addr =(uint)(y) * AP + x; write_cmd(csrw); //写入光标地址 write_dat((uchar)(addr & 0xff)); //先写低八位 write_dat((uchar)(addr >> 8)); //后写高八位 } /******************************************************* 光标定位 x横坐标: 0~319 320 y纵坐标: 0~239 240 图层2 点线圆调用 *******************************************************/ /*void locate_xy2(uint x, uchar y) { uint addr; addr = (uint)(y) * AP + x /8; write_cmd(csrw); //写入光标地址 write_dat((uchar)(addr & 0xff)); //先写低八位 write_dat((uchar)(addr >> 8) + basepart2); //后写高八位 } /******************************************************* 光标定位2 x横坐标: 0~319 320 y纵坐标: 0~239 240 图层2 汉字图形调用 *******************************************************/ void locate_xy22(uint x, uchar y) { uint addr; addr = (uint)(y) * AP + x;//AP=240/8=30=0X1E write_cmd(csrw); //0x46 //设置光标地址 写入光标地址 write_dat((uchar)(addr & 0xff)); //先写低八位 write_dat((uchar)(addr >> 8) + basepart2); //后写高八位 } /********************************************************************** 液晶初始化 ***********************************************************************/ void lcd_init(void) { uchar i; // reset=0; // delay(10); // reset=1; write_cmd(systemset);//初始化设置0x40 for(i=0;i<8 ;i++) write_dat(systemset_P8[i]); write_cmd(scroll); //设定显示起始地址和显示范围0x44 for(i=0;i<10;i++) write_dat(scroll_P10[i]); write_cmd(hdotscr); //点位移量设置 write_dat(0x00); //不移动 write_cmd(ovlay); //显示合成设置 write_dat(0x00); //二重合成,文本显示,逻辑或 show_off(); //关闭显示 lcd_cls(0); //液晶清屏,32KB RAM 清零 show_on(); //开启显示 }
|
|
相关推荐
1个回答
|
|
回帖奖励 +5 分积分 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
238 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
629 浏览 0 评论
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】(第三篇)ADC采集+PWM输出
552 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十五章 人脸识别实验
552 浏览 0 评论
1074 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11763 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 21:40 , Processed in 0.504770 second(s), Total 73, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号