STM32驱动12964串口通信没有显示是为什么?求大神指导一下

2019-07-14 20:55发布



/**************H头文件********************/
#ifndef __12864_H
#define __12864_H
#include "sys.h"
/*#define CS PAout(0)
#define SID PAout(1)
#define SCLK PAout(2)
#define RST PAout(3)
#define PSB PAout(4)*/
#define RS_ON      GPIO_SetBits(GPIOA,GPIO_Pin_0);
#define RS_OFF     GPIO_ResetBits(GPIOA,GPIO_Pin_0);
#define SID_ON      GPIO_SetBits(GPIOA,GPIO_Pin_1);
#define SID_OFF     GPIO_ResetBits(GPIOA,GPIO_Pin_1);
#define E_ON       GPIO_SetBits(GPIOA,GPIO_Pin_2);
#define E_OFF      GPIO_ResetBits(GPIOA,GPIO_Pin_2);
#define RST_ON     GPIO_SetBits(GPIOA,GPIO_Pin_3);
#define RST_OFF    GPIO_ResetBits(GPIOA,GPIO_Pin_3);

//sbit CS=P2^6;       //片选信号  RS
//sbit SID=P2^5;      //数据信号  R/W
//sbit SCLK=P2^7;     //时钟信号   E
//sbit RST=P3^4;      //复位信号  
//sbit PSB = P3^2;     //并行、串行选择信号

void Gpio_Init(void);//GPIO初始化函数

void sendbyte(u8 zdata); //发送数据
void write_com(u8 cmdcode);
void write_data(u8 Dispdata);
void LCD12864_Init(void);//初始化函数
void hzkdis(u8 *s);
void Test(void);//显示内容
#endif


/************************.C文件************************/

#include "12864.h"
#include "delay.h"



void Gpio_Init(void)
{
        GPIO_InitTypeDef GPIO_InitT;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);//使能GPIOA时钟
       
//        GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);
//        SystemInit();
       
        GPIO_InitT.GPIO_Mode=GPIO_Mode_Out_PP;//通用推挽输出
        GPIO_InitT.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4;
        GPIO_InitT.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOA,&GPIO_InitT);
        //GPIO_SetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4);
}
void sendbyte(u8 zdata) //发送数据
{  
        u8 i;  
    for(i=0; i<8; i++)  
    {  
        if((zdata << i) & 0x80)  
        {  
            SID_ON;  
        }  
        else   
        {  
            SID_OFF;  
        }  
        E_OFF;  
        E_ON;  
    }  
}
void write_com(u8 cmdcode)  
{  
         RS_ON;  
    sendbyte(0xf8);  
    sendbyte(cmdcode & 0xf0);  
    sendbyte((cmdcode << 4) & 0xf0);  
    delay_ms(10);  
}      
void write_data(u8 Dispdata) //写串口命令
{  
    RS_ON;  
    sendbyte(0xfa);  
    sendbyte(Dispdata & 0xf0);  
    sendbyte((Dispdata << 4) & 0xf0);  
    delay_ms(10);  
}
void LCD12864_Init(void)  
{   
         RST_OFF;  
    delay_ms(100);  
    RST_ON;  
    delay_ms(100);  
    write_com(0x30);  
    delay_ms(50);   
            write_com(0x0c);  
            delay_ms(50);  
}  
void hzkdis(u8 *s)  
{   
        while(*s > 0)  
    {   
                write_data(*s);  
        s++;  
        delay_ms(50);
    }  
}  
void Test(void)  
{   
        write_com(0x03);  
            delay_ms(50);     
    write_com(0x81);  
    hzkdis("语音录放系统");  
    write_com(0x92);  
    hzkdis("abcf");  
    write_com(0x88);  
    hzkdis("▲◆◆▲");  
    write_com(0x98);  
    hzkdis("作者:   ");  
}  


/**************主函数******************/
#include "delay.h"
#include "12864.h"
#include "sys.h"


int main(void)  
{
                LCD12864_Init();
         Gpio_Init();
        delay_init();
       
//        PSB= 0;  //只有在上面定义了以后才能用这句话,不然会报错没有接地时会出现乱码
//   LCD12864_Init();  
    delay_ms(10);  
    while(1)  
        {  
            Test();  
            delay_ms(5);  
        }
}





友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。