液晶只显示一半???

jiereliyi 2009-11-26 05:56:40
我写了不用操作系统的程序。把图像信息考到缓冲区后,只能显示一般的图像不知道为什么?
我的屏幕是320*240的
U8 ScreenBitmap[] = { 0X00,0X10,0X40,0X01,0XF0,0X00,0X01,0X1B,…………………………};
#define IMAGE_FRAMEBUFFER_DMA_BASE 0x30500000
memcpy((void *)IMAGE_FRAMEBUFFER_DMA_BASE, ScreenBitmap, 320*2*240);
这样改后:memcpy((void *)0x30519000, ScreenBitmap1, 320*2*80);
可以再中间显示,就是无法显示整个图像。
请高手赐教
...全文
453 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiereliyi 2009-11-28
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 meifenxiazai 的回复:]
有的屏是两个TCON, 硬件检查是否有一个没工作。
[/Quote]
怎么检查 ,TCON是什么?我用的LQ035NC212 3.5寸液晶
meifenxiazai 2009-11-28
  • 打赏
  • 举报
回复
有的屏是两个TCON, 硬件检查是否有一个没工作。
gooogleman 2009-11-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xuefeng_baggio 的回复:]
memcpy((void *)0x30519000, ScreenBitmap1, 320*2*80);这个应该是320*2*240吧??还有lcd寄存器计算对了吗??
[/Quote]

显示函数没有错,

关键是你的LCD控制器配置不行,有几个参数很重要,比如行开始,列开始等等
jiereliyi 2009-11-27
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 gooogleman 的回复:]
引用 1 楼 xuefeng_baggio 的回复:
memcpy((void *)0x30519000, ScreenBitmap1, 320*2*80);这个应该是320*2*240吧??还有lcd寄存器计算对了吗??


显示函数没有错,

关键是你的LCD控制器配置不行,有几个参数很重要,比如行开始,列开始等等
[/Quote]
我的设置是在操作系统的环境下移植过来的,操作系统下可以正常显示.
还需不需要设置查找表,TPAL寄存器。我用的LQ035NC212 3.5寸液晶
jiereliyi 2009-11-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 heyme 的回复:]
1,memcpy((void *)0x30519000, ScreenBitmap1, 320*2*80); 320*2*80这个size是不是小了?
2,既然地址变成了0x30519000,那么LCD寄存器buffer的start address有没有改成0x30519000?
3,是否是RGB565的16bit呢,要是24bit的话320*2*240就不对了

[/Quote]
2.开始地址没有边,我把现实区域分成了三部分,每一部分80行,这个显示在中间。所以开始地址不用改。
3.RGB565的
jiereliyi 2009-11-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xuefeng_baggio 的回复:]
memcpy((void *)0x30519000, ScreenBitmap1, 320*2*80);这个应该是320*2*240吧??还有lcd寄存器计算对了吗??
[/Quote]
这里我只让他显示了80行
HeyMe 2009-11-27
  • 打赏
  • 举报
回复
你想显示ScreenBitmap1[320*2*80]这个数组的数据,但现在只显示了40行?
屏幕什么状况呢,这40行图片显示在屏幕的中间,上下两边都没有显示?还是其他什么状态?
huabinsir 2009-11-26
  • 打赏
  • 举报
回复
顶一下. 应该是设置问题.
HeyMe 2009-11-26
  • 打赏
  • 举报
回复
1,memcpy((void *)0x30519000, ScreenBitmap1, 320*2*80); 320*2*80这个size是不是小了?
2,既然地址变成了0x30519000,那么LCD寄存器buffer的start address有没有改成0x30519000?
3,是否是RGB565的16bit呢,要是24bit的话320*2*240就不对了
博说医械研发 2009-11-26
  • 打赏
  • 举报
回复
主要应该是LCD控制寄存器配置问题
guopeixin 2009-11-26
  • 打赏
  • 举报
回复
1. 看你的ScreenBitmap,你的lcd应该是24bit深的吧
2。 timing不对也会造成这种情况
xuefeng_baggio 2009-11-26
  • 打赏
  • 举报
回复
memcpy((void *)0x30519000, ScreenBitmap1, 320*2*80);这个应该是320*2*240吧??还有lcd寄存器计算对了吗??
STM32单片机读写 ATGM336H(GPS)模块+液晶显示DEMO软件例程源码,可做为你的学习设计参考。 int main(void) { uint32_t lcdid; char cStr[100]; double deg_lat;//转换成[degree].[degree]格式的纬度 double deg_lon;//转换成[degree].[degree]格式的经度 nmeaINFO info; //GPS解码后得到的信息 nmeaPARSER parser; //解码时使用的数据结构 uint8_t new_parse=0; //是否有新的解码数据标志 nmeaTIME beiJingTime; //北京时间 /* 复位所有外设,初始化Flash接口和系统滴答定时器 */ HAL_Init(); /* 配置系统时钟 */ SystemClock_Config(); /* 初始化3.5寸TFT液晶模组,一般优先于调试串口初始化 */ lcdid=BSP_LCD_Init(); /* 初始化串口并配置串口中断优先级 */ MX_DEBUG_USART_Init(); MX_SPIFlash_Init(); MX_USARTx_Init(); /* 初始化LED */ LED_GPIO_Init(); /* 调用格式化输出函数打印输出数据 */ printf("LCD ID=0x%08X\n",lcdid); LCD_Clear(0,0,LCD_DEFAULT_WIDTH,LCD_DEFAULT_HEIGTH,BLACK); /* 开背光 */ LCD_BK_ON(); /* 设置用于输出调试信息的函数 */ nmea_property()->trace_func = &trace; nmea_property()->error_func = &error; nmea_property()->info_func = &gps_info; /* 初始化GPS数据结构 */ nmea_zero_INFO(&info); nmea_parser_init(&parser); /* 使用DMA传输数据到电脑端 */ HAL_UART_Receive_DMA(&husartx,gps_rbuff,GPS_RBUFF_SIZE); while(1) { if(GPS_HalfTransferEnd) /* 接收到GPS_RBUFF_SIZE一半的数据 */ { /* 进行nmea格式解码 */ nmea_parse(&parser, (const char*)&gps_rbuff[0], HALF_GPS_RBUFF_SIZE, &info); GPS_HalfTransferEnd = 0; //清空标志位 new_parse = 1; //设置解码消息标志 } else if(GPS_TransferEnd) /* 接收到另一半数据 */ { nmea_parse(&parser, (const char*)&gps_rbuff[HALF_GPS_RBUFF_SIZE], HALF_GPS_RBUFF_SIZE, &info); GPS_TransferEnd = 0; new_parse =1; } if(new_parse ) //有新的解码消息 { /* 对解码后的时间进行转换,转换成北京时间 */ GMTconvert(&info.utc,&beiJingTime,8,1); /* 输出解码得到的信息 */ printf("\r\n时间%d-%02d-%02d,%d:%d:%d\r\n", beiJingTime.year+1900, beiJingTime.mon,beiJingTime.day,beiJingTime.hour,beiJingTime.min,beiJingTime.sec); //info.lat lon中的格式为[degree][min].[sec/60],使用以下函数转换成[deg
《电子系统设计课程设计》 项目设计书 项目名称 打地鼠 小组成员1 小组成员2 小组成员3 专 业 任课教师 成都理工大学信科院电子系 2013年 6月 项目名称,并简要说明应用背景。 项目名称:打地鼠 应用背景:打地鼠游戏是人们生活中常见的一种休闲小游戏。此游戏玩法简单,考验人 们的反应速度。开发者可以根据人们兴趣开发出具有多功能的打地鼠游戏,比如升级、 道具、过关等,增加游戏的趣味性。 项目设计需求(包括功能描述和性能设计指标) 功能描述: 1.启动系统,液晶屏第一排随机显示一个1- 9的数字,显示地鼠(Ö)或地雷(*),中间显示剩余时间,右边显示分数;液晶屏第二 排显示游戏的英文名称——打地鼠。 2.开始游戏后,在背景音乐伴随下显示"Ready Go!!!",之后正式进入游戏游戏历时2min,随着时间的增加,数字显示速度加快,游戏中 课随时按K10键暂停,再次按则恢复游戏。 3.进入游戏界面后,随机产生地鼠和地雷(地雷产生的概率为10%),但随着时间的增加 ,地雷出现的概率会增加,数字更新的速度也越快。按键分别对应独立键盘的9个按键, 按下某个键即代表击打相应位置。 4.若击中地鼠:正常情况下分数加1,若在较短时间(实际为地鼠产生到消失的前一半时 间内)击中,则"快速反应,双倍加分",即分数加2。若击中地雷,则分数减1,若未按 下相应键,则分数加1。 5.游戏结束,背景音乐停止,保留最高分,分数和时间在按复位后刷新。 性能设计指标:能通过复位,玩家可以持续玩游戏。自动保存和人为清除游戏数据。 设计方案 1 系统设计框图及原理阐述 2 设计框图: 3 4 5 6 7 原理阐述: 1) 复位电路 复位条件:89C52单片机复位需要一个长达24个时钟周期的高电平才能复位,复位的作用 就是使程序的指针指向地址0,每个程序都是从地址0开始执行,所以复位的概念就是让 程序从头开始执行。 复位原理:该复位电路具有上电复位的功能,此功能是由C3实现的。当系统上电时C3有 一个充电放电的过程,放电过程会产生一个高电平,放电的时间根据公式()计算 。R为电阻R1的阻值,C为极性电容C3的大小。 系统正常运行时,按下按键K1时,RST端的电平为VCC*10/11,也是一个高电平,此时芯 片也会产生一个高电平复位信号。 2) 蜂鸣器 声音的产生是一种音频效果,振动的频率高,则为高音,频率低,则为低音,人耳比 较容易辨认的声音频率大概是0~20 kHz。在数字电路中,以脉冲信号驱动蜂鸣器,以产生声音,在同样频率下,人类的耳朵 是很难区别正弦信号或脉冲信号所产生的音效。 当P0.0 口输出1 时,内部的MOSFET 不导通,晶体管的BE 之间不会有输入电流,所以蜂鸣器上也不会有输出电流,蜂鸣器就不会激磁。当P0.0口 输出为0 时,蜂鸣器就会激磁。 3) 按键 独立式按键接口设计:独立式按键就是各按键相互独立,每个按键单独占用一根I/O 口线,每根I/O口线的按键工作状态不会影响其他I/O口线上的工作状态。因此,通过检 测输入线的电平状态可以很容易判断哪个按键被按下了。优点:电路配置灵活,软件结 构简单。缺点:每个按键需占用一根I/O口线,在按键数量较多时,I/O口浪费大,电路 结构显得复杂。因此,此键盘是用于按键较少或操作速度较高的场合。 矩阵式键盘接口设计:矩阵式键盘适用于按键数量较多的场合,由行线和列线组成, 按键位于行列的交叉点上。节省I/O口。 矩阵键盘工作原理:行线通过上拉电阻接到+5V上。无按键,行线处于高电平状态, 有键按下,行线电平状态将由与此行线相连的列线电平决定。列线电平为低,则行线电 平为低;列线电平为高,则行线电平为高。 4) 存储器 24C02特性: 1. 与400KHz I2C总线兼容 2. 1.8到6.0伏工作电压范围 3. 低功耗CMOS技术 4. 写保护功能当WP为高电平时进入写保护状态 5. 页写缓冲器 6. 自定时擦写周期 7. 1,000,000编程/擦除周期 8. 可保存数据100年 9. 8脚DIPSOIC或TSSOP封装 10. 温度范围商业级工业级和汽车级 串行E2PROM是基于I2C-BUS 的存储器件,遵循二线制协议,由于其具有接口方便,体积小,数据掉电不丢失等特点 ,在仪器仪表及工业自动化控制中得到大量的应用。 "管脚名称 "功能 " "A0、A1、A2 "器件地址选择 " "SDA "串行数据/地址 " "SCL "串行时钟 " "WP "写保护 " "Vcc "+1.8V~6.0V工作电压 " "Vss "地 " 5)液晶 1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型 液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧