OpenEdv-开源电子网

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

请各位帮忙看看1602的代码

[复制链接]

51

主题

340

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3275
金钱
3275
注册时间
2013-9-21
在线时间
281 小时
发表于 2014-5-23 21:45:36 | 显示全部楼层 |阅读模式
5金钱
请各位帮忙看看1602的代码
搞了一阵子了还是不显示
编译成功没有错误但下载还是不显示


#include "delay.h"

#include "sys.h"

                          

#define RS (1<<13)

#define RW (1<<14)

#define EN (1<<15)

 

#define RS_SET(x) GPIOB->ODR=(GPIOE->ODR&~RS)|(x ? RS:0)

#define RW_SET(x) GPIOB->ODR=(GPIOE->ODR&~RW)|(x ? RW:0)

#define EN_SET(x) GPIOB->ODR=(GPIOE->ODR&~EN)|(x ? EN:0)

 

#define DataPort(x)   GPIOA->ODR=(GPIOA->ODR&0xffffff00)|(x&0xff);//定义8位数据操作端口

 

 

/*------------------------------------------------

              写入命令函数

------------------------------------------------*/

 void LCD_Write_Com(unsigned char com)

 {

 delay_ms(5);

 RS_SET(0);

 RW_SET(0);

 EN_SET(1);

 DataPort(com);

 EN_SET(0);

 }

/*------------------------------------------------

              写入数据函数

------------------------------------------------*/

 void LCD_Write_Data(unsigned char Data)

 {

 delay_ms(5);

 RS_SET(1);

 RW_SET(0);

 EN_SET(1);

 DataPort(Data);

 EN_SET(0);

 }

 

/*------------------------------------------------

                清屏函数

------------------------------------------------*/

 void LCD_Clear(void)

 {

 LCD_Write_Com(0x01);

 delay_ms(5);

 }

/*------------------------------------------------

              写入字符串函数

------------------------------------------------*/

 void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s)

 {    

 if (y == 0)

       {    

        LCD_Write_Com(0x80 + x);     //表示第一行

       }

 else

       {     

       LCD_Write_Com(0xC0 + x);      //表示第二行

       }       

 while (*s)

       {    

 LCD_Write_Data( *s);    

 s ++;    

       }

 }

/*------------------------------------------------

              写入字符函数

------------------------------------------------*/

 void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data)

 {    

 if (y == 0)

       {    

       LCD_Write_Com(0x80 + x);    

       }   

 else

       {    

       LCD_Write_Com(0xC0 + x);    

       }       

 LCD_Write_Data( Data);

 }

/*------------------------------------------------

              初始化函数

------------------------------------------------*/

 void LCD_Init(void)

 {

   LCD_Write_Com(0x38);    /*显示模式设置*/

   delay_ms(5);

   LCD_Write_Com(0x38);

   delay_ms(5);

   LCD_Write_Com(0x38);

   delay_ms(5);

   LCD_Write_Com(0x38);

   LCD_Write_Com(0x08);    /*显示关闭*/

   LCD_Write_Com(0x01);    /*显示清屏*/

   LCD_Write_Com(0x06);    /*显示光标移动设置*/

   delay_ms(5);

   LCD_Write_Com(0x0C);    /*显示开及光标设置*/

   }

 

/*------------------------------------------------

                    主函数

------------------------------------------------*/

int main(void)

{

 

GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOE, ENABLE);//使能PORTA-E时钟

 GPIO_InitStructure.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;                      //GPIOA0-A7 端口配置

 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;              //推挽输出

 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;            //IO口速度为50MHz

 GPIO_Init(GPIOA, &GPIO_InitStructure);                              //根据设定参数初始化GPIOA

 

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;                      /GPIOE13-E15 端口配置

 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;              //推挽输出

 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;            //IO口速度为50MHz

 GPIO_Init(GPIOE, &GPIO_InitStructure);                              //根据设定参数初始化GPIOE          

 LCD_Init();

 LCD_Clear();//清屏

while (1)

 {

  LCD_Write_Char(7,0,'o');

  LCD_Write_Char(8,0,'k');

  LCD_Write_String(1,1,"www.google.com");

  while(1);

 }

}

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-5-23 22:44:13 | 显示全部楼层
参考论坛其他网友的吧.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

51

主题

340

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3275
金钱
3275
注册时间
2013-9-21
在线时间
281 小时
 楼主| 发表于 2014-5-24 09:20:43 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
好像都是51的1602代码
回复

使用道具 举报

8

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2013-8-5
在线时间
4 小时
发表于 2014-5-24 09:45:35 | 显示全部楼层
一般来说按照datasheet上的时序写出来就没有问题的,
如果看不出问题就参考别人的程序。
如果还看不出问题就先检测基本硬件,比如电源,连接问题,晶振等等
如果还是看不出问题,果断上示波器。
如果示波器确定波形没有问题,那么只能说有可能1602坏了
回复

使用道具 举报

51

主题

340

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3275
金钱
3275
注册时间
2013-9-21
在线时间
281 小时
 楼主| 发表于 2014-5-24 09:54:06 | 显示全部楼层
回复【4楼】KC_CEC:
---------------------------------
Good
回复

使用道具 举报

51

主题

340

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3275
金钱
3275
注册时间
2013-9-21
在线时间
281 小时
 楼主| 发表于 2014-5-24 09:57:27 | 显示全部楼层
回复【4楼】KC_CEC:
---------------------------------
现在问题在那里有完整的stm32实验1602代码可以参考…
回复

使用道具 举报

51

主题

340

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3275
金钱
3275
注册时间
2013-9-21
在线时间
281 小时
 楼主| 发表于 2014-5-24 10:00:16 | 显示全部楼层
回复【4楼】KC_CEC:
---------------------------------
如果用逻辑分析仪有帮助吗
回复

使用道具 举报

3

主题

10

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2013-10-3
在线时间
0 小时
发表于 2014-5-24 16:32:55 | 显示全部楼层
回复【7楼】hack906447:
---------------------------------
改了个了个很蹩脚的,给你。注意连接的引脚。用的是原子哥的工程。
/????  头文件 //////
/******************************************************************************************
说明:该文件定义了STM32F103RDT6对LCD1602操作相关的函数
******************************************************************************************/
#ifndef __LCD_H
#define __LCD_H

//-------------------------------------------------------------------
//                   该文件包含的头文件声明
//-------------------------------------------------------------------
#include "sys.h"
#include "delay.h"

//------------------------------/
extern const char ST1[];/*******/
extern const char ST2[];/*******/
//------------------------------/

//-------------------------------------------------------------------
//                    该文件用到的宏定义声明
//-------------------------------------------------------------------
#define RS_ENA Cout(8)=1 //RS使能
#define RS_DIS Cout(8)=0 //RS除能

#define RW_ENA Cout(7)=1   //RW使能
#define RW_DIS Cout(7)=0   //RW除能

#define EN_ENA Cout(6)=1   //EN使能
#define EN_DIS Cout(6)=0   //EN除能

//LCD1602的数据输出端口0-7
#define LCDData0 Bout(15)
#define LCDData1 Bout(14)
#define LCDData2 Bout(13)
#define LCDData3 Bout(12)
#define LCDData4 PBout(1)
#define LCDData5 PBout(0)
#define LCDData6 PCout(5)
#define LCDData7 PCout(4)

//-------------------------------------------------------------------
//                    该文件要定义的函数声明
//-------------------------------------------------------------------
//----------------------------------------------------------
// 函数名: LCD1602PortInit
// 功  能: 初始化LCD1602的控制端口
// 输  入: 无
// 输  出: 无
//----------------------------------------------------------
void LCD1602ControlPortInit(void);

//----------------------------------------------------------
// 函数名: DataPortCInit
// 功  能: 初始化单片机GPIOC上的LCD的数据端口
// 输  入: 无
// 输  出: 无
//----------------------------------------------------------
void DataPortCInit(void);

//----------------------------------------------------------
// 函数名: DataPortBInit
// 功  能: 初始化单片机GPIOB上的LCD的数据端口
// 输  入: 无
// 输  出: 无
//----------------------------------------------------------
void DataPortBInit(void);

//----------------------------------------------------------
// 函数名: LCD_WriteData
// 功  能: 单片机向LCD1602写数据
// 输  入: Data: 单片机向LCD写入的数据
// 输  出: 无
//----------------------------------------------------------
void LCD_WriteData(u8 Data);

//----------------------------------------------------------
// 函数名: LCD_WriteCommand
// 功  能: 单片机向LCD1602写命令
// 输  入: CMD: 单片机向LCD写入的命令
// 输  出: 无
//----------------------------------------------------------
void LCD_WriteCommand(u8 CMD);

//----------------------------------------------------------
// 函数名: LCD_WriteOneChar
// 功  能: 单片机向LCD1602指定的位置写入要显示的字符
// 输  入: X_Pos: X座标
//           Y_Pos: Y座标
//           CHAR: 要显示的字符
// 输  出: 无
//----------------------------------------------------------
void LCD_WriteOneChar(u8 X_Pos, u8 Y_Pos, unsigned char CHAR);

//----------------------------------------------------------
// 函数名: LCD_WriteOneChar
// 功  能: 单片机向LCD1602指定的位置写入要显示的字符串
// 输  入: X_Pos: X座标
//           Y_Pos: Y座标
//           *Add: 要显示的字符串的起始地址
//           Len: 字符串的长度
// 输  出: 无
//----------------------------------------------------------
void LCD_WriteOneString(u8 X_Pos, u8 Y_Pos, char *Add, u8 Len);

//----------------------------------------------------------
// 函数名: LCD1602Init
// 功  能: 单片机初始化LCD1602
// 输  入: 无
// 输  出: 无
//----------------------------------------------------------
void LCD1602Init(void);



#endif
  
/*****************************       end       *******************************************/



/******************************************************************************************
说明:该文件定义了STM32F103RDT6对LCD1602操作相关的函数
******************************************************************************************/
//-------------------------------------------------------------------
//                   该文件包含的头文件声明
//-------------------------------------------------------------------
#include "LCD.h"
//---------------------------------------------------
const char ST1[]="   ";/**************/
const char ST2[]=" ";/**************/
//---------------------------------------------------


//----------------------------------------------------------
// 函数名: LCD1602PortInit
// 功  能: 初始化LCD1602的控制端口
// 输  入: 无
// 输  出: 无
//----------------------------------------------------------
void LCD1602ControlPortInit(void)
{
GPIO_InitTypeDef  GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);  //使能PD和PC端口时钟

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8; //映射LCD1602的EN, RW, RS
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  //IO口速度为50MHz
GPIO_Init(GPIOC, &GPIO_InitStructure);  //根据设定参数初始化GPIOC
 
RS_DIS; //控制端口除能
RW_DIS;
EN_DIS;   
}

//----------------------------------------------------------
// 函数名: DataPortCInit
// 功  能: 初始化单片机GPIOC上的LCD的数据端口
// 输  入: 无
// 输  出: 无
//----------------------------------------------------------
void DataPortCInit(void)
{
GPIO_InitTypeDef  GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);  //使能PD和PC端口时钟

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5;      //映射LCD1602的bit7,bit6
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  //IO口速度为50MHz
GPIO_Init(GPIOC, &GPIO_InitStructure);  //根据设定参数初始化GPIOC

LCDData7 = 0;  //数据端口初始输出低电平
LCDData6 = 0;
}

//----------------------------------------------------------
// 函数名: DataPortBInit
// 功  能: 初始化单片机GPIOB上的LCD的数据端口
// 输  入: 无
// 输  出: 无
//----------------------------------------------------------
void DataPortBInit(void)
{
GPIO_InitTypeDef  GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);  //使能PD和PC端口时钟

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15|GPIO_Pin_14|GPIO_Pin_13
                              |GPIO_Pin_12|GPIO_Pin_1|GPIO_Pin_0;      //映射LCD1602的bit7,bit6
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  //IO口速度为50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure);  //根据设定参数初始化GPIOC

LCDData5 = 0;  //数据端口初始输出低电平
LCDData4 = 0;
LCDData3 = 0;
LCDData2 = 0;
LCDData1 = 0;
LCDData0 = 0;
}

//----------------------------------------------------------
// 函数名: LCD_WriteData
// 功  能: 单片机向LCD1602写数据
// 输  入: Data: 单片机向LCD写入的数据
// 输  出: 无
//----------------------------------------------------------
void LCD_WriteData(u8 Data)
{
LCDData0 = ((Data >> 0) & 0x01);
LCDData1 = ((Data >> 1) & 0x01); 
LCDData2 = ((Data >> 2) & 0x01); 
LCDData3 = ((Data >> 3) & 0x01); 
LCDData4 = ((Data >> 4) & 0x01); 
LCDData5 = ((Data >> 5) & 0x01); 
LCDData6 = ((Data >> 6) & 0x01); 
LCDData7 = ((Data >> 7) & 0x01); 
}

//----------------------------------------------------------
// 函数名: LCD_WriteCommand
// 功  能: 单片机向LCD1602写命令
// 输  入: CMD: 单片机向LCD写入的命令
// 输  出: 无
//----------------------------------------------------------
void LCD_WriteCommand(u8 CMD)
{
RS_DIS;
RW_DIS;
EN_DIS;
delay_ms(2);
EN_ENA;
LCD_WriteData(CMD);
delay_ms(2);
EN_DIS;
}

//----------------------------------------------------------
// 函数名: LCD_WriteOneChar
// 功  能: 单片机向LCD1602指定的位置写入要显示的字符
// 输  入: X_Pos: X座标
//           Y_Pos: Y座标
//           CHAR: 要显示的字符
// 输  出: 无
//----------------------------------------------------------
void LCD_WriteOneChar(u8 X_Pos, u8 Y_Pos, unsigned char CHAR)
{
    X_Pos &= 0x0f;  /* X位置范围 0~15 */
    Y_Pos &= 0x01;  /* Y位置范围 0~ 1 */
if(Y_Pos==1) 
X_Pos += 0x40;
X_Pos += 0x80;
LCD_WriteCommand(X_Pos);
delay_ms(2);
RS_ENA;
RW_DIS;
EN_DIS;
delay_ms(2);
EN_ENA;
LCD_WriteData(CHAR);
delay_ms(2);
EN_DIS;
}

//----------------------------------------------------------
// 函数名: LCD_WriteOneChar
// 功  能: 单片机向LCD1602指定的位置写入要显示的字符串
// 输  入: X_Pos: X座标
//           Y_Pos: Y座标
//           *Add: 要显示的字符串的起始地址
//           Len: 字符串的长度
// 输  出: 无
//----------------------------------------------------------
void LCD_WriteOneString(u8 X_Pos, u8 Y_Pos, char *Add, u8 Len)
{
u8 num;
for(num = 0; num<Len; num++)
{
LCD_WriteOneChar((X_Pos+num), Y_Pos, *(Add+num));
delay_ms(2);
}

}

//----------------------------------------------------------
// 函数名: LCD1602Init
// 功  能: 单片机初始化LCD1602
// 输  入: 无
// 输  出: 无
//----------------------------------------------------------
void LCD1602Init(void)
{
LCD1602ControlPortInit(); 
DataPortCInit();  //LCD的数据端口分别接在PORTC和PORTB上
DataPortBInit();
delay_ms(2);
/*延时等待是必要的*/
LCD_WriteCommand(0x38);
delay_ms(2);
LCD_WriteCommand(0x38);
delay_ms(2);
LCD_WriteCommand(0x38);
delay_ms(2);
LCD_WriteCommand(0x08);
delay_ms(2);
LCD_WriteCommand(0x01);
delay_ms(2);
LCD_WriteCommand(0x06);
delay_ms(2);
LCD_WriteCommand(0x0c);
delay_ms(2);
}

/*****************************       end       *******************************************/>
回复

使用道具 举报

51

主题

340

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3275
金钱
3275
注册时间
2013-9-21
在线时间
281 小时
 楼主| 发表于 2014-5-24 16:54:02 | 显示全部楼层
回复【8楼】榆生:
--------------------------------
先感谢你无私的分享
我在百度搜了许久很多人都称因为STM32是3.3V输出电平所以不能驱动1602LCD需要上拉10K电阻?
回复

使用道具 举报

51

主题

340

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3275
金钱
3275
注册时间
2013-9-21
在线时间
281 小时
 楼主| 发表于 2014-5-24 16:54:30 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
我在百度搜了许久很多人都称因为STM32是3.3V输出电平所以不能驱动1602LCD需要上拉10K电阻?
回复

使用道具 举报

51

主题

340

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3275
金钱
3275
注册时间
2013-9-21
在线时间
281 小时
 楼主| 发表于 2014-5-24 16:54:59 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
我在百度搜了许久很多人都称因为STM32是3.3V输出电平所以不能驱动1602LCD需要上拉10K电阻?
回复

使用道具 举报

3

主题

10

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2013-10-3
在线时间
0 小时
发表于 2014-5-24 17:44:55 | 显示全部楼层
电压绝对够了,上拉是考虑电流不够吧!上不了PCB图,我直接驱动的。
回复

使用道具 举报

3

主题

10

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2013-10-3
在线时间
0 小时
发表于 2014-5-24 17:48:24 | 显示全部楼层
引脚接对+给电正常+工程建好+编译正确+下载无误+LCD对比调好=LCD绝对显示出来。
回复

使用道具 举报

70

主题

6766

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13144
金钱
13144
注册时间
2012-11-26
在线时间
3815 小时
发表于 2014-5-24 20:50:32 | 显示全部楼层
楼主应该是时序没弄好!
也就是涉及到延迟时间的地方
学无止境
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-5-24 22:46:03 | 显示全部楼层
回复【11楼】hack906447:
---------------------------------
上拉10K电阻没用的...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

51

主题

340

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3275
金钱
3275
注册时间
2013-9-21
在线时间
281 小时
 楼主| 发表于 2014-5-27 12:37:24 | 显示全部楼层
谢谢受教了想问gpio速度50m想。会不会太快
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-5-27 23:27:00 | 显示全部楼层
回复【16楼】hack906447:
---------------------------------
不会了...实际上IO翻转,达不到这个速度...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

16

主题

253

帖子

0

精华

高级会员

Rank: 4

积分
565
金钱
565
注册时间
2013-10-16
在线时间
52 小时
发表于 2014-5-28 14:11:18 | 显示全部楼层
回复【8楼】榆生:
---------------------------------
谢谢楼主奉献分享,顶你
回复

使用道具 举报

16

主题

253

帖子

0

精华

高级会员

Rank: 4

积分
565
金钱
565
注册时间
2013-10-16
在线时间
52 小时
发表于 2014-5-28 16:55:58 | 显示全部楼层
回复【18楼】wyudcl:
---------------------------------
不能显示,用了你的程序,还没找出问题呢,不知道是哪里出问题了。
回复

使用道具 举报

51

主题

340

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3275
金钱
3275
注册时间
2013-9-21
在线时间
281 小时
 楼主| 发表于 2014-6-5 12:28:43 | 显示全部楼层
回复【19楼】wyudcl:
---------------------------------
你用了我的程序用嗎?
回复

使用道具 举报

16

主题

253

帖子

0

精华

高级会员

Rank: 4

积分
565
金钱
565
注册时间
2013-10-16
在线时间
52 小时
发表于 2014-6-5 14:21:14 | 显示全部楼层
回复【20楼】hack906447:
---------------------------------
没有,你的程序我试了不能实现,在网上找了一个
回复

使用道具 举报

51

主题

340

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3275
金钱
3275
注册时间
2013-9-21
在线时间
281 小时
 楼主| 发表于 2014-6-5 15:30:11 | 显示全部楼层
回复【21楼】wyudcl:
---------------------------------
那你找的可以用嗎可以分享給我嗎
回复

使用道具 举报

16

主题

253

帖子

0

精华

高级会员

Rank: 4

积分
565
金钱
565
注册时间
2013-10-16
在线时间
52 小时
发表于 2014-6-6 09:18:33 | 显示全部楼层
回复【22楼】hack906447:
---------------------------------
嗯,可以啊
回复

使用道具 举报

16

主题

253

帖子

0

精华

高级会员

Rank: 4

积分
565
金钱
565
注册时间
2013-10-16
在线时间
52 小时
发表于 2014-6-6 09:21:47 | 显示全部楼层
这个是我自己亲测的,可以显示

STM32的1602程序(可用).rar

9.2 KB, 下载次数: 91

回复

使用道具 举报

13

主题

185

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
272
金钱
272
注册时间
2014-4-9
在线时间
9 小时
发表于 2014-6-6 09:48:33 | 显示全部楼层
1602 2002 有很多版本的,如果VDD是5V的 逻辑H是0.7VDD的STM32就驱不了,你要确认你手头的是3.3VDD的,
还有如果你是移植51的程序要注意速度,在电平变化的地方适当加点延时,还有你初始化的时候延时是不是少了?因为很多驱动芯片都是山寨的,达不到datasheet上门时序图说的速度。我当时点某厂的2002,波形什么都测对了就是不出图,找FAE,“你降低10倍速度看看”,结果就出字了。

你的GPIO设置定义用的GPIOB,设置GPIOE!!!
大海啊,全是水; 骏马啊,四条腿。
回复

使用道具 举报

51

主题

340

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3275
金钱
3275
注册时间
2013-9-21
在线时间
281 小时
 楼主| 发表于 2014-6-11 15:13:07 | 显示全部楼层
回复【25楼】ArchiChain:
---------------------------------
对我程序对照很多次了~且波形也都有出来现在在怀疑时序跟速度问题
回复

使用道具 举报

51

主题

340

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3275
金钱
3275
注册时间
2013-9-21
在线时间
281 小时
 楼主| 发表于 2014-6-11 15:42:43 | 显示全部楼层
回复【24楼】wyudcl:
---------------------------------
可不可以发整个工程给我我编译有问题在想版本问题
回复

使用道具 举报

16

主题

253

帖子

0

精华

高级会员

Rank: 4

积分
565
金钱
565
注册时间
2013-10-16
在线时间
52 小时
发表于 2014-6-12 08:34:37 | 显示全部楼层
这个是C文件和H文件,在C文件里还有可运行的主程序文件

LCD1602.rar

3.21 KB, 下载次数: 77

回复

使用道具 举报

16

主题

253

帖子

0

精华

高级会员

Rank: 4

积分
565
金钱
565
注册时间
2013-10-16
在线时间
52 小时
发表于 2014-6-12 08:34:58 | 显示全部楼层
回复【27楼】hack906447:
---------------------------------
发了一个你看看,
回复

使用道具 举报

16

主题

253

帖子

0

精华

高级会员

Rank: 4

积分
565
金钱
565
注册时间
2013-10-16
在线时间
52 小时
发表于 2014-6-12 08:35:52 | 显示全部楼层
回复【27楼】hack906447:
---------------------------------
用的是正点原子工程。
回复

使用道具 举报

51

主题

340

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3275
金钱
3275
注册时间
2013-9-21
在线时间
281 小时
 楼主| 发表于 2014-6-14 21:53:45 | 显示全部楼层
回复【30楼】wyudcl:
---------------------------------
好我搞看看先谢了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-7 05:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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