本帖最后由 wenyangzeng 于 2014-12-23 22:43 编辑 手头有1片RA8835主控芯片的320X240图形液晶模块,决定拿它在STM32F072 Nucleo 开发板上试用看看。使用杜邦连接线进行连接,见下图: 进入STM32CubeMX 花费2分钟简单配置了相关GPIO口为推挽输出,导入MDK5。在MDK5中添加驱动RA8835的相关函数,,并为要显示的汉字提取了字模。显示效果见下图: 控制RA8835的GPIO口的位操作采用以下预定义: #define cs_H HAL_GPIO_WritePin(GPIOA,GPIO_PIN_10,GPIO_PIN_SET) #define cs_L HAL_GPIO_WritePin(GPIOA,GPIO_PIN_10,GPIO_PIN_RESET) #define a0_H HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_SET) #define a0_L HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_RESET) #define wr_H HAL_GPIO_WritePin(GPIOB,GPIO_PIN_3,GPIO_PIN_SET) #define wr_L HAL_GPIO_WritePin(GPIOB,GPIO_PIN_3,GPIO_PIN_RESET) #define rst_H HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_SET) #define rst_L HAL_GPIO_WritePin(GPIOA,GPIO_PIN_0,GPIO_PIN_RESET) #define rd_H HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_SET) #define rd_L HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_RESET) 而传送给RA8835数据总线的底层函数操作,找遍了STM32CubeMX生成的固件库竟然找不到诸如STM32F0固件库的16位的数据传输之类函数: GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal) 可供调用,使得用惯固件函数调用的习惯现在有点不适应了。只能采用寄存器操作方式进行: void write_cmda(uint8_t cm,uint8_t com) { cs_L; if(cm==0) a0_L; else a0_H; wr_L; GPIOC->ODR &=0xff00; GPIOC->ODR |=com; __nop();__nop(); __nop();__nop(); wr_H; __nop();__nop(); __nop();__nop(); __nop();__nop(); } int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); lcd_init(); lcd_clr(); Gotoxy(0x00,0x00); LCD_kuang(); disp_ascii0816("STM32F072-Nulceo",2006); display_hanzi(kai,1664); display_hanzi(fa,1667); display_hanzi(ban,1670); display_hanzi(qu,3406); display_hanzi(dong,3409); disp_ascii0816("320x240 LCM",3814); display_hanzi(mo,3466); display_hanzi(kuai,3469); display_hanzi(bian,5206); display_hanzi(cheng,5209); display_hanzi(huan,5212); display_hanzi(jing,5215); display_hanzi(maohao,5218); disp_ascii0816("STM32 CubeMX & MDK5",7010); while (1) { } } CubeMX爱你不容易! |
LCD320240 .rar
下载7 KB, 下载次数: 235, 下载积分: ST金币 -1
【STM32F0开发日志/评测/笔记】+互补PWM波的产生
STM32F030 PB14和PB15无法输出PWM求助
【STM32F030探索套件】序列之五 外部中断
【STM32F0开发日志---二】+ucosii.2.92移植在STM32F030
上传个STM32F0+5110+内部温度传感器的菜鸟实例
【STM32F030探索套件使用问题】STM32F030 SPI方式驱动ST7565LCD失败
求一份STM32F051 I2C驱动LCD 12864的例程
STM32F0 M0 向结构体赋值进入HardFault异常
STM32F0 ADC-DMA方式采集2路数据时出现问题
STM32F030C8T6,TIM16定时慢很多问题?
不明白楼上是在编程呢?还是让人代编程?整个RA8835最底层函数都共享了,应该自己消化吸收,化为自己的知识财富。要写好RA8835,楼主必须吃透RA8835工作原理,才可以自由发挥。比如RA8835显示方式与其他12864不同,它是每水平行8个Bit一次扫描,扫描40个字节完成1行,12864则是垂直扫描1列。工作原理不同。
楼主让我发送整个全部源代码给你。源代码全部也就显示帖子开头图片里的显示信息而已。如何套在您的应用中?
举个例子:你如何在实际应用中在任何位置显示16点阵、24点阵、32点阵、64点阵汉字?
编程过程参考别人的代码是正常的也是必须经过的过程,但是别人的代码只是参考借鉴。要自己深入进去研究,才能真正写出自己的财富!其实写LCD最主要的就是初始化代码,这些代码如果厂家不给你,你是无法成功的。请你珍惜楼主共享给你的RA8835底层原始代码,真正做到他为己用。将近4年前的帖子,全部源代码多次修改,实在无法完全还原,望谅!
祝楼上不断进步。
还有差点忘记:那个AsciiDot0816()故名思意是一个ASIIC 8×16点阵英文符号显示的函数而已,而ASIIC 8×16点字库应该到处DownLoad都找得到的。
1、无需检测忙;
2、8835是一次写8Bit,字库当然要自己做;
3、打点函数实际上还是一次写8Bit,经过与或得到某一点的写入
4、读数据估计是读方向旋转了90°所以不正常。
读数据手册说要不在繁忙才能读。。然后如果忽略繁忙直接读 ,0xff或0x00写全屏,读到的数据都一直变,所以我不清楚啥情况。。旋转90°啥意思
谢谢楼主分享~
https://www.stmcu.org.cn/module/forum/thread-598151-1-1.html
在1楼呀,下载次数66,楼上需要配眼镜了。
我知道1楼,下载次数72了,但是下载下来只有一个hex文件。所以我才说没有看到代码。
这个文件可供你参考:
谢谢!虽然我已经用FSMC驱动好了。还是非常感谢。
朋友你好,我最近也在调试RA8835的屏,用的也是FSMC模式,FSMC的时序用示波器看似乎没问题,就是不能显示,可以交流一下吗?