OpenEdv-开源电子网

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

液晶1602为什么没有显示?

[复制链接]

6

主题

21

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2018-11-2
在线时间
14 小时
发表于 2019-5-16 19:44:41 | 显示全部楼层 |阅读模式
本帖最后由 知行合sEyvH 于 2019-5-16 21:28 编辑

/* 主函数*/
int main(void)
{        
   
        u8 code_hot[8]={0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00 };  //??????
         u8 strMCU[]="hello world!";
         Delay_init(72);                     //???????         
//         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);         //??NVIC????2:2??????,2??????
//        LED_Init();                             //LED?????
         GPIO_Configuration();
         lcd1602_Init( );     
//        delay_ms(1000);
//        delay_ms(1000);
         //Write1602_Com(0x81);
         //LCD1602_ClearScreen();
//        LCD1602_Show_Str(2,0,"abcv");
         LCD1602_Show_Str(2,1,strMCU);
//         Write1602_One_Dat(2,1,'A');
         LCD1602_Show_Str(0x80,1,code_hot);                       //????
         LCD1602_Show_Str(0x80+0x40,0,strMCU);                    
         while(1)
         {               
                 Delay_ms(1000);
                 LED1=!LED1;
     // Write1602_One_Dat(2,1,'A');
      LCD1602_Show_Str(0x80,1,code_hot);  
      LCD1602_Show_Str(0x80+0x40,0,strMCU);
         }         
}
void GPIO_Configuration(void)
{
  GPIO_InitTypeDef  GPIO_InitStructure;
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);  
  GPIO_InitStructure.GPIO_Pin   =GPIO_Pin_0|GPIO_Pin_2| GPIO_Pin_3| GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6| GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;   
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   
  GPIO_Init(GPIOB, &GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_13 | GPIO_Pin_14| GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;   
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOC, &GPIO_InitStructure);
}
void LCD1602_Wait_Ready(void)
{
u8 sta;
DATAOUT(0xff);
LCD_RS_Clr();
LCD_RW_Set();
do
  {
  LCD_EN_Set();
  Delay_ms(5); //ÑÓʱ5ms£¬·Ç³£ÖØÒª
   sta = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_7);//¶Áȡ״̬×Ö
  LCD_EN_Clr();
}while(sta & 0x80);
}
/*дָÁî*/
void LCD1602_Write_Cmd(u8 cmd)
{
LCD1602_Wait_Ready();
LCD_RS_Clr();
LCD_RW_Clr();
DATAOUT(cmd);
LCD_EN_Set();
LCD_EN_Clr();

// DATAOUT(cmd<<4);
//  LCD_EN_Set();
// LCD_EN_Clr();
}
/*&ETH;&acute;&Ecirc;&yacute;&frac34;&Yacute;*/
void LCD1602_Write_Dat(u8 dat)
{
LCD1602_Wait_Ready();
LCD_RS_Set();
LCD_RW_Clr();
DATAOUT(dat);
LCD_EN_Set();
LCD_EN_Clr();

// DATAOUT(dat<<4);
//  LCD_EN_Set();
// LCD_EN_Clr();
}
/*&Ccedil;&aring;&AElig;&Aacute;*/
void LCD1602_ClearScreen(void)
{
  LCD1602_Write_Cmd(0x01);
}
/* &Eacute;è&Ouml;&Atilde;&Iuml;&Ocirc;&Ecirc;&frac34;RAM&AElig;&eth;&Ecirc;&frac14;&micro;&Oslash;&Ouml;·&pound;&not;&Ograve;à&frac14;&acute;&sup1;&acirc;±ê&Icirc;&raquo;&Ouml;&Atilde;&pound;&not;(x,y)-&para;&Ocirc;&Oacute;&brvbar;&AElig;&Aacute;&Auml;&raquo;&Eacute;&Iuml;&micro;&Auml;×&Ouml;·&ucirc;×&oslash;±ê */
void LCD1602_Set_Cursor(u8 x, u8 y)
{
u8 addr;

if (y == 0)
  addr = 0x00 + x;
else
  addr = 0x40 + x;
LCD1602_Write_Cmd(addr | 0x80);
}
/*&Ocirc;&Uacute;&Ograve;&ordm;&frac34;§&Eacute;&Iuml;×&Ouml;·&ucirc;&acute;&reg;*/
void LCD1602_Show_Str(u8 x,u8 y,u8 *str)
{
  LCD1602_Set_Cursor(x,y);
while(*str!='\0')
{
LCD1602_Write_Dat(*str++);
}
}
void lcd1602_Init(void)
{
GPIO_Configuration( );
LCD1602_Write_Cmd(0x38);
LCD1602_Write_Cmd(0x0c);
LCD1602_Write_Cmd(0x06);
  LCD1602_Write_Cmd(0x01);
}
void Write1602_One_Dat(u8 x,u8 y,u8 dat)
{
      x&=0x0f;
      y&=0x01;
      if(y)
      x|=0x40;
      x|=0x80;
      LCD1602_Write_Cmd(x);
      LCD1602_Write_Dat(dat);
}
#define LCD_RS_Set() GPIO_SetBits(GPIOC, GPIO_Pin_13)
#define LCD_RS_Clr() GPIO_ResetBits(GPIOC, GPIO_Pin_13)
//1602&Ograve;&ordm;&frac34;§&para;&Aacute;&ETH;&acute;&Ograve;&yacute;&frac12;&Aring;
#define LCD_RW_Set() GPIO_SetBits(GPIOC, GPIO_Pin_14)
#define LCD_RW_Clr() GPIO_ResetBits(GPIOC, GPIO_Pin_14)
//1602&Ograve;&ordm;&frac34;§&Ecirc;&sup1;&Auml;&Uuml;&Ograve;&yacute;&frac12;&Aring;
#define LCD_EN_Set() GPIO_SetBits(GPIOC, GPIO_Pin_15)
#define LCD_EN_Clr() GPIO_ResetBits(GPIOC, GPIO_Pin_15)
//1602&Ograve;&ordm;&frac34;§&Ecirc;&yacute;&frac34;&Yacute;&para;&Euml;&iquest;&Uacute; PD0~7
#define DATAOUT(x) GPIO_Write(GPIOB, x)
void lcd1602_Init(void);
void LCD1602_Show_Str(u8 x,u8 y,u8 *str);
void LCD1602_Write_Cmd(u8 cmd);
void LCD1602_Write_Dat(u8 dat);
void GPIO_Configuration(void);
void LCD1602_Wait_Ready(void);
void LCD1602_ClearScreen(void);
void LCD1602_Set_Cursor(u8 x, u8 y);
void Write1602_One_Dat(u8 x,u8 y,u8 dat);
#endif


0000.jpg 11111.jpg
实验1 1602.rar (2.61 MB, 下载次数: 2)
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

33

主题

215

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2036
金钱
2036
注册时间
2017-12-11
在线时间
454 小时
发表于 2019-5-16 19:48:02 | 显示全部楼层

回帖奖励 +10 金钱

可以把重点程序粘贴出来嘛?
回复 支持 反对

使用道具 举报

6

主题

21

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2018-11-2
在线时间
14 小时
 楼主| 发表于 2019-5-16 21:21:54 | 显示全部楼层
bootblack 发表于 2019-5-16 19:48
可以把重点程序粘贴出来嘛?

这个主函数有错吗
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 16:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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