OpenEdv-开源电子网

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

原子哥,求助???为什么我的LCD1602不显示呢

[复制链接]

22

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
166
金钱
166
注册时间
2012-8-12
在线时间
2 小时
发表于 2012-10-19 20:43:20 | 显示全部楼层 |阅读模式

             这是我编的程序,麻烦帮忙看一下:

 

LCD1602C.txt

1.69 KB, 下载次数: 203

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-10-19 21:22:38 | 显示全部楼层
N年没用过了,参考我以前发过的avr源码。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

22

主题

59

帖子

0

精华

初级会员

Rank: 2

积分
166
金钱
166
注册时间
2012-8-12
在线时间
2 小时
 楼主| 发表于 2012-10-20 08:32:39 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------其实,我用库函数编写就能够显示,然而用寄存器编写就不能显示,悲剧呀
回复 支持 反对

使用道具 举报

4

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2012-9-16
在线时间
0 小时
发表于 2012-10-20 09:47:03 | 显示全部楼层
给你一个我用寄存器写的1602程序:#include<stm32f10x_lib.h>
#include"lcd.h"
#include"delay.h"
/********I/O口初始化**************************************************/
void  lcdport_init(void)
{

RCC->APB2ENR|=1<<3;
RCC->APB2ENR|=1<<4; //使能pb和pc端口
GPIOB->CRH&=0X00000000;
GPIOB->CRH|=0X33333333;//配置pB8-pB15为推挽输出
GPIOC->CRH&=0XFF0000FF;
GPIOC->CRH|=0X00333300;//配置pc10,pc11,pc12,pc13为推挽输出
GPIOC->ODR|=1<<10;
GPIOC->ODR|=1<<11;
GPIOC->ODR|=1<<12;
GPIOC->ODR|=1<<13;
}
//     
//
///********宏定义********************************************* **************/
#define LCD_Data (GPIOB->ODR)
//#define Busy   0x80        //用于检测LCD状态字中的Busy标识

/***********写数据********************************************************/
void WriteDataLCD(u8 WDLCD)
{
// ReadStatusLCD(); //检测忙
 LCD_RS = 1; //数据
 delay_us(5);
 LCD_RW = 0; //写入
 delay_us(10);
 LCD_Data =0xFF00&(WDLCD<<8);
 LCD_E = 1;
 delay_us(300);
 LCD_E = 0;
}

///***********写指令********************************************************/
void WriteCommandLCD(u8 WCLCD) //BuysC为0时忽略忙检测
{

 //ReadStatusLCD(); //根据需要检测忙
 LCD_RS = 0;//指令
 delay_us(5);
 LCD_RW = 0;//写入 
 delay_us(5);
 LCD_E = 0;//使能
 delay_us(300);
 LCD_Data =0xFF00&(WCLCD<<8);
 LCD_E = 1; 
 delay_us(300);
 LCD_E = 0;
}

/***********读数据********************************************************/
u8 ReadDataLCD(void)
{
 LCD_RS = 1; 
 LCD_RW = 1;
 LCD_E = 0;    
 LCD_E = 0;
 LCD_E = 1;
 return(LCD_Data);
}

/***********按指定位置读取一个字符*****************************************/
//u8 ReadOneChar(u8 x,u8 y)
//{
// y&= 0x1;
//  x &= 0xF; 
//  if(y)
//  {
//   x|=0xC0;
//  }
//  else
//  {
//   x|=0x80;  //算出指令码
//  }
//
//  WriteCommandLCD(x); //这里不检测忙信号,发送地址码
//  ReadDataLCD();
//}

///***********读状态*******************************************************/
//u8 ReadStatusLCD(void)
//{
//  LCD_Data = 0xFF; 
//  LCD_RS = 0;
//  LCD_RW = 1;
//  LCD_E = 1;
//  while (LCD_Data & Busy); //检测忙信号
//  return(LCD_Data);
//}

/***********初始化********************************************************/
void LCDInit(void)
{
 LCD_Data = 0;
 WriteCommandLCD(0x38);  //三次模式设置,不检测忙信号
 delay_ms(5);
 WriteCommandLCD(0x38);
 delay_ms(5);
 WriteCommandLCD(0x38); //显示模式设置,开始要求每次检测忙信号
 delay_ms(5); 
 WriteCommandLCD(0x08); //关闭显示
  delay_ms(10);
 WriteCommandLCD(0x01);  //显示清屏
 delay_ms(200);
 WriteCommandLCD(0x06);  //显示光标移动设置
 delay_ms(10);
 WriteCommandLCD(0x0C); //显示开及光标设置
   delay_ms(10);
}

/***********按指定位置显示一个字符*******************************************/
void DisplayOneChar(u8 X, u8 Y, u8 DData)
{
Y &= 0x1;
  X &= 0xF; 
 if(Y)
 {
  X|=0xC0;
 }
 else
 {
  X|=0x80;  //算出指令码
 }

 WriteCommandLCD(X); //这里不检测忙信号,发送地址码
 WriteDataLCD(DData);
}

/***********按指定位置显示一串字符*****************************************/
void DisplayListChar(u8 X, u8 Y,   u8 const *DData)
{
 u8 ListLength;

 ListLength = 0;
 Y &= 0x1;
 X &= 0xF;  //限制X不能大于15,Y不能大于1
 while (DData[ListLength]>=0x20) //若到达字串尾则退出
  {
   if (X <= 0xF)  //X坐标应小于0xF
    {
     DisplayOneChar(X, Y, DData[ListLength]); //显示单个字符
     ListLength++;
     X++;
    }
  }
}
能显示字符串和单个字符的。
回复 支持 反对

使用道具 举报

44

主题

128

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
498
金钱
498
注册时间
2012-9-13
在线时间
14 小时
发表于 2012-10-20 20:32:17 | 显示全部楼层
一般没有人会看程序的!
回复 支持 反对

使用道具 举报

8

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
128
金钱
128
注册时间
2013-9-19
在线时间
16 小时
发表于 2014-5-20 08:46:30 | 显示全部楼层
回复【3楼】黄河浪:
---------------------------------
哥们 能看看 你用库写的 程序吗 学习下 我写的 一直没结果 想排除问题 加qq 交个朋友可以吗 我的qq 是 1441576392
回复 支持 反对

使用道具 举报

16

主题

253

帖子

0

精华

高级会员

Rank: 4

积分
565
金钱
565
注册时间
2013-10-16
在线时间
52 小时
发表于 2014-5-29 16:03:33 | 显示全部楼层
回复【3楼】黄河浪:
---------------------------------
程序发上看看
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-7 19:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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