OpenEdv-开源电子网

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

再次求助,关于12864驱动程序,调试好久,总是不亮,排除硬件问题,请各位大神看看是不是程序的问题,因为调试很长时间了,完全没有反应,完全心累了

[复制链接]

2

主题

7

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2015-7-23
在线时间
0 小时
发表于 2015-7-25 15:24:15 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true]#include "stm32f10x.h" //RS C9 //RW C10 //EN C11 //PSB C13 //ret 悬空 //数据口 A0~A7 #define lcd_rs_h GPIO_SetBits(GPIOC,GPIO_Pin_9); #define lcd_rs_l GPIO_ResetBits(GPIOC,GPIO_Pin_9); #define lcd_rw_h GPIO_SetBits(GPIOC,GPIO_Pin_10); #define lcd_rw_l GPIO_ResetBits(GPIOC,GPIO_Pin_10); #define lcd_en_h GPIO_SetBits(GPIOC,GPIO_Pin_11); #define lcd_en_l GPIO_ResetBits(GPIOC,GPIO_Pin_11); void RCC_Configuration(void);//时钟初始化 void GPIO_Configuration(void);//管脚初始化 void Timer_Delay_ms(u32 nus); void LCD_position(u8 X,u8 Y);//位置函数 void write_com(u8 com);//写命令 void write_data(u8 data);//写数据 void init_LCD();//LCD初始化 int main(void) { RCC_Configuration(); GPIO_Configuration(); init_LCD(); LCD_position(0,8); Timer_Delay_ms(5); write_data(0x34); while(1); } void RCC_Configuration(void) { SystemInit(); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); } void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_Init_Structure; GPIO_Init_Structure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7; GPIO_Init_Structure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_Init_Structure.GPIO_Speed=GPIO_Speed_10MHz; GPIO_Init(GPIOA,&GPIO_Init_Structure); GPIO_Init_Structure.GPIO_Pin=GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_13; GPIO_Init_Structure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_Init_Structure.GPIO_Speed=GPIO_Speed_10MHz; GPIO_Init(GPIOC,&GPIO_Init_Structure); } void Timer_Delay_ms(u32 nus) { u32 temp; SysTick->LOAD=9000*nus; SysTick->VAL=0x00; SysTick->CTRL=0x01; do { temp=SysTick->CTRL; }while((temp&0x01)&&(!(temp&(1<<16)))); SysTick->CTRL=0x00; SysTick->VAL=0X00; } void write_com(u8 com) { Timer_Delay_ms(100); lcd_rs_l; lcd_rw_l; GPIO_Write(GPIOA,com); lcd_en_h; Timer_Delay_ms(5); lcd_en_l; } void write_data(u8 data) { Timer_Delay_ms(100); lcd_rs_h; lcd_rw_l; GPIO_Write(GPIOA,data); Timer_Delay_ms(5); lcd_en_h; Timer_Delay_ms(5); lcd_en_l; } void init_LCD() { GPIO_SetBits(GPIOC, GPIO_Pin_13);//开并口输入 Timer_Delay_ms(5); write_com(0x30);//基本指令操作 Timer_Delay_ms(5); write_com(0x0c);//开显示,关光标 Timer_Delay_ms(5); write_com(0x01);//清除LCD Timer_Delay_ms(5); } void LCD_position(u8 X,u8 Y) { u8 pos; if (X==0) {X=0x80;} else if (X==1) {X=0x90;} else if (X==2) {X=0x88;} else if (X==3) {X=0x98;} pos = X+Y ; write_com(pos); }[/mw_shl_code]

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

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2015-7-23
在线时间
0 小时
 楼主| 发表于 2015-7-25 15:24:33 | 显示全部楼层
再次跪求,谢谢各位大神
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2015-7-25 15:50:34 | 显示全部楼层
看了一下你的上一个帖子,论坛里大神级别的也给你提供了建议,钻牛角尖有意思么

想把自己写的程序纠正能够使用,你可以先通过别人的能够使用的程序测试通过后,慢慢向里添加自己的程序,看到底哪里出现问题,自己找答案,这样的过程你学到的东西会更多,而不这样做的原因极有可能是  懒

大家时间都是有限的,如我有时间宁愿多打几个字多看会新闻也懒得看你这程序,看了意义也不大,身边没有现成硬件去测试

站起来吧
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

3

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2012-10-8
在线时间
1 小时
发表于 2015-7-26 10:05:43 | 显示全部楼层
刚学的话还是先找些能用的例子,通过了自己在尝试改,然后看着时许自己写,像这些大家自己试过之后封装好,不会每次都去写,时间久了就忘了,也不想去看了(我只是建议而已)
大家好才是真的好
回复

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2015-7-23
在线时间
0 小时
 楼主| 发表于 2015-7-26 11:10:27 | 显示全部楼层
回复【3楼】龙之谷回复【3楼】龙之谷:
---------------------------------
我调这个LCD有一周多了,一直没有显示很是烦恼,可能就是钻牛角尖了,导致方法不对,我再跑跑其他人的程序,谢谢你!!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 11:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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