OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9414|回复: 3

菜鸟初尝LCD失败

[复制链接]

4

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2012-2-16
在线时间
4 小时
发表于 2012-5-4 04:48:52 | 显示全部楼层 |阅读模式

各位别见笑
我是个没有什么基础的菜鸟
对于正点原子哥的寄存器的代码看的是又亲切 又迷糊。
无奈只能从固件库开始弄……
废话多了点 进入正题吧
首先就是拿LCD开刀, 根据本菜鸟看各种教程 根据自己天才般的理解能力
始终是没办法让LCD现实
想实现的目的很简单,就是初始化LCD 然后全屏写成各种颜色
全部代码都由自己参照各类教程 一点一点的写了出来
 
先定义各IO口
#define lcdsetled GPIO_SetBits(GPIOC, GPIO_Pin_10); //定义LCD背光
#define lcdclsled GPIO_ResetBits(GPIOC, GPIO_Pin_10);

#define lcdsetcs GPIO_SetBits(GPIOC, GPIO_Pin_9); //定义片选
#define lcdclscs GPIO_ResetBits(GPIOC, GPIO_Pin_9);

#define lcdsetrs GPIO_SetBits(GPIOC, GPIO_Pin_8);  //定义标志
#define lcdclsrs GPIO_ResetBits(GPIOC, GPIO_Pin_8);

#define lcdsetwr GPIO_SetBits(GPIOC, GPIO_Pin_7); //定义写入标志
#define lcdclswr GPIO_SetBits(GPIOC, GPIO_Pin_7);

#define lcdsetrd GPIO_SetBits(GPIOC, GPIO_Pin_6); //定义读取标志
#define lcdclsrd GPIO_SetBits(GPIOC, GPIO_Pin_6);

#define lcdwrite(lcddata){GPIO_Write(GPIOB,lcddata);} // 写入数据
#define lcdread() (GPIO_ReadInputData(GPIOB)); // 读入数据


然后初始化LCD
 GPIO_InitTypeDef GPIO_InitStructure; // 设置初始化组
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//开启GPIOC的时钟
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10;   //配置IO 组
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 GPIO_Init(GPIOC,&GPIO_InitStructure);//初始化IO组
==================================
以上是读标志 写标志 还有片选,命令与数据 还有LED背光 的端口

然后就是 D0~D15 的初始化
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//开启GPIOB的时钟
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;   //配置IO 组
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 GPIO_Init(GPIOB,&GPIO_InitStructure);//初始化IO组
=================================
下面就是开启了背光 简单的设置了一下LCD
lcdsetled;
 lcdwritereg(0x0000,0X0001);

然后迫不及待的就开始了 主函数上的
lcdclear(Black);
想把背景设置成黑色
void lcdclear(u16 Color)
{
 u32 index=0;
 lcdwritereg(R32,0);
 lcdwritereg(R33,0);
 lcdwreg(R34);
 lcdclscs
 for(index=0;index<76800;index++)
   {
      lcdclswr
      lcdwrite(Color);
      lcdsetwr
   }
   lcdsetcs
}
==============================
编译出来0错误。
结果背光是亮了,但是一直都没有见背景变黑的效果。
以上就是没基础 没文化的菜鸟摸爬滚打的艰辛路程
历时一个通宵,完全未果,唯一欣慰的是LCD的背光亮了……
还请各位看官指点一二

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-5-4 09:30:59 | 显示全部楼层
我没有库函数的代码啊.参考下吧.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2012-2-16
在线时间
4 小时
 楼主| 发表于 2012-5-7 20:16:54 | 显示全部楼层
自己找到原因了……
#define lcdsetwr GPIO_SetBits(GPIOC, GPIO_Pin_7); //定义写入标志
#define lcdclswr GPIO_ResetBits(GPIOC, GPIO_Pin_7);

#define lcdsetrd GPIO_SetBits(GPIOC, GPIO_Pin_6); //定义读取标志
#define lcdclsrd GPIO_ResetBits(GPIOC, GPIO_Pin_6);
自己粗心 没改好 自找麻烦
回复 支持 反对

使用道具 举报

22

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
150
金钱
150
注册时间
2012-3-18
在线时间
0 小时
发表于 2012-5-13 21:18:20 | 显示全部楼层

哥们   你写的这个lcd程序  能否让给看看  小弟摸索几天啦  也不见进展

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-25 23:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表