新手上路
- 积分
- 49
- 金钱
- 49
- 注册时间
- 2021-3-16
- 在线时间
- 8 小时
|
1金钱
屏上无显示,调了很久不知道问题在哪- //各位大神,我运行如下代码,怎么调液晶都没有显示,但是PB口像有数据在变化,导致PB5有个红灯有点闪烁
- #include "sys.h"
- #include "delay.h"
- #define RS PCout(0)
- #define RW PCout(1)
- #define EN PCout(2)
- //#define PSB PCout(3) 直接连VCC
- #define LINE1 0x80//第一行
- #define LINE2 0x90//第二行
- #define LINE3 0x88//第三行
- #define LINE4 0x98//第四行
- u16 temp;
- void IO_Init(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC,ENABLE);
-
- GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2| GPIO_Pin_3;
- GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
- GPIO_Init(GPIOC,&GPIO_InitStructure);GPIO_SetBits(GPIOC,GPIO_Pin_3);
-
- 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_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
- GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
- GPIO_Init(GPIOB,&GPIO_InitStructure);
-
- GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;//设为开漏输出,外接上拉电阻,形成准双向IO口
- GPIO_Init(GPIOB,&GPIO_InitStructure);
- }
- //LCD初始化
- void LCD_Init()
- {
- delay_ms(50); //等待液晶自检>40ms£
- LCD_wcmd(0x30); //选择基本指令集
- delay_ms(1);//Ñóê±>100us
- LCD_wcmd(0x30); //选择8bit数据
- delay_ms(1); //
- LCD_wcmd(0x0c); //开显示
- delay_ms(1); //>100us
- LCD_wcmd(0x01); //清屏
- delay_ms(30); //>10ms
- LCD_wcmd(0x06);
- }
- //忙检测
- void CheckBusy(void)
- {
- u8 status;//GPIO_InitTypeDef GPIO_InitStructure;
- /*GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//GPIO_Mode_IN_FLOATING,GPIO_Mode_IPU
- GPIO_Init(GPIOB,&GPIO_InitStructure);*/
- RS=0;
- RW=1;
- EN = 1;
- delay_us(2);
- GPIOB->ODR = 0x80;//ÏèÖÃ1£¬¾YËμàûóú¶áêy
- do
- {
- status = PBin(7);//ÅD¶ÏBFλ
- }while(status & 0x80);
- EN=0;
- }
- //LCD写命令
- void LCD_wcmd(u8 cmd)
- {
- CheckBusy();
- RS=0;
- RW=0;
- delay_ms(5);
- temp=(temp&0xff00)|cmd;
- GPIO_Write(GPIOB,temp);
- EN=1;
- delay_ms(5);
- EN=0;
- }
- //LCD写数据
- void LCD_wdat(u8 dat)
- {
- CheckBusy();
- RS=1;
- RW=0;
- delay_ms(5);
- temp=(temp&0xff00)|dat;
- GPIO_Write(GPIOB,temp);
- EN=1;
- delay_ms(5);
- EN=0;
- }
- //向12864写入一行数据
- void LCD_Wmessage(u8* message,u8 address)
- {
- LCD_wcmd(address);//显示位置
-
- while(*message>0)//判断数据是否结束
- {
- LCD_wdat(*message);
- message++;
- }
- }
- int main(void)
- {
- IO_Init();
- LCD_Init();
- while(1)
- {
- u8 str1[]="人面桃花相映红";
- LCD_Wmessage(str1,LINE1);
- }
- }
复制代码
|
|