OpenEdv-开源电子网

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

QC1602a显示问题

[复制链接]

2

主题

4

帖子

0

精华

新手入门

积分
32
金钱
32
注册时间
2013-8-8
在线时间
0 小时
发表于 2013-8-8 23:28:48 | 显示全部楼层 |阅读模式

如题,我用stm32f103c8t6来控制qc1602a的显示,但是一直显示不出来,贴出代码帮我看看问题在哪,谢了
#include "stm32f10x.h"
/***********LED下管脚定义及初始化**************/
//  接线说明     端口    接线颜色
// VSS       GND        绿
// VDD       V3.3      蓝
// V0        GND      红
// RS       PB0      灰
// RW       PB1      白
// E       PB2      黑
// D0       PA0      褐
// D1       PA1      红
// D2       PA2      橙
// D3        PA3      黄
// D4       PA4      绿
// D5       PA5      蓝
// D6       PA6      紫
// D7       PA7      灰
// A       V3.3      白
// K          GND      黑
/************************************************/

/**********宏定义*****************/
#define uchar unsigned char
#define uint unsigned int


/******定义函数****************/
void LCD_init(void);//初始化函数
void LCD_write_command(uchar command);//写指令函数
void LCD_write_data(uchar dat);//写数据函数
void LCD_disp_char(uchar x,uchar y,uchar dat);//在某个屏幕位置上显示一个字符,X(0-16),y(1-2)
void delay_n40us(uint n);//延时函数
void GPIO_Configuration(void);//管脚初始化
void Data_Transfer(uchar data);//基本输出传输函数

/*********主函数*****************/
int main(void)
{
 LCD_init();
 LCD_disp_char(0,1,'A');
 while(1);
}

//*******初始化函数***************
void LCD_init(void)
{
 GPIO_Configuration();

 LCD_write_command(0x38);//设置8位格式,2行,5x7
 LCD_write_command(0x0c);//整体显示,关光标,不闪烁
 LCD_write_command(0x06);//设定输入方式,增量不移位
 LCD_write_command(0x01);//清除屏幕显示
 delay_n40us(300);//实践证明,我的LCD1602上,用for循环200次就能可靠完成清屏指令。
}

/********写指令函数************/
void LCD_write_command(uchar dat)
{
 Data_Transfer(dat);
 
 //LCD_RS=0;//指令
 GPIO_ResetBits(GPIOB,GPIO_Pin_0);
 //LCD_RW=0;//写入
 GPIO_ResetBits(GPIOB,GPIO_Pin_1);
 //LCD_E=1;//允许
 GPIO_SetBits(GPIOB,GPIO_Pin_2);
 //LCD_E=0;
 GPIO_ResetBits(GPIOB,GPIO_Pin_2);
 delay_n40us(300);//实践证明,我的LCD1602上,用for循环1次就能完成普通写指令。
}

/********写数据函数*************/
void LCD_write_data(uchar dat)
{
 Data_Transfer(dat);
 //LCD_RS=1;//数据
 GPIO_SetBits(GPIOB,GPIO_Pin_0);
 //LCD_RW=0;//写入
 GPIO_ResetBits(GPIOB,GPIO_Pin_1); 
 //LCD_E=1;//允许
 GPIO_SetBits(GPIOB,GPIO_Pin_2);
 //LCD_E=0;
 GPIO_ResetBits(GPIOB,GPIO_Pin_2);
 delay_n40us(300);
}

/*******显示一个字符函数*********/
void LCD_disp_char(uchar x,uchar y,uchar dat)
{
 uchar address;
 if(y==1)
  address=0x80+x;
 else
  address=0xc0+x;
 LCD_write_command(address);
 LCD_write_data(dat);
}


/********延时函数***************/
void delay_n40us(uint n)
{
 uint i;
    uchar j;            
    for(i=n;i>0;i--)
  for(j=0;j<2;j++);          //在这个延时循环函数中我只做了2次循环,
}                                         //实践证明我的LCD1602上普通的指令只需1次循环就能可靠完成。

/**********管脚初始化***********/
void GPIO_Configuration()
{
 GPIO_InitTypeDef GPIO_InitStructure;
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
 /*数据传输管脚定义初始化*/
 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;
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
 GPIO_Init(GPIOA, &GPIO_InitStructure);
 
 /*显示控制管脚定义初始化*/
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2;
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
 GPIO_Init(GPIOB, &GPIO_InitStructure);
}

/*********基本输出传输函数*******/
void Data_Transfer(uchar data)
{
 GPIO_ResetBits(GPIOA,GPIO_Pin_All);
 GPIO_SetBits(GPIOA,data);
}

跪谢了

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

使用道具 举报

8

主题

42

帖子

0

精华

初级会员

Rank: 2

积分
128
金钱
128
注册时间
2013-9-19
在线时间
16 小时
发表于 2014-5-20 08:57:49 | 显示全部楼层
你的解绝没  我的也是 不显示
回复 支持 反对

使用道具 举报

16

主题

253

帖子

0

精华

高级会员

Rank: 4

积分
565
金钱
565
注册时间
2013-10-16
在线时间
52 小时
发表于 2014-5-29 10:49:46 | 显示全部楼层
我的也没有显示呢,你们解决了吗?
回复 支持 反对

使用道具 举报

4

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2014-4-24
在线时间
0 小时
发表于 2014-5-29 11:51:37 | 显示全部楼层
回复【3楼】wyudcl:
--------------------------
怎么这么复杂啊    我的很简单就可以显示啊
回复 支持 反对

使用道具 举报

16

主题

253

帖子

0

精华

高级会员

Rank: 4

积分
565
金钱
565
注册时间
2013-10-16
在线时间
52 小时
发表于 2014-5-29 16:00:27 | 显示全部楼层
回复【4楼】Lengghk:
---------------------------------
程序发上来看看
回复 支持 反对

使用道具 举报

16

主题

253

帖子

0

精华

高级会员

Rank: 4

积分
565
金钱
565
注册时间
2013-10-16
在线时间
52 小时
发表于 2014-5-30 01:03:25 | 显示全部楼层
可以了,我的LCD1602也可以显示了,搞定。
回复 支持 反对

使用道具 举报

16

主题

253

帖子

0

精华

高级会员

Rank: 4

积分
565
金钱
565
注册时间
2013-10-16
在线时间
52 小时
发表于 2014-5-30 01:06:06 | 显示全部楼层
这个程序是我网上找的,我在硬件试过了,可以显示,和你们共享。

STM32的1602程序(可用).rar

12.37 KB, 下载次数: 1057

回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2016-9-13
在线时间
0 小时
发表于 2016-9-13 20:12:54 | 显示全部楼层
wyudcl 发表于 2014-5-30 01:03
可以了,我的LCD1602也可以显示了,搞定。

你好,我的MINISTM32也是连1602LCD,但是就是显示不出,请问你的是怎么显示的?
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-25 18:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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