This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

【已解决】串行12864显示程序



程序是根据430的更改的。移植过来发现不能用。又可耻的上来寻求帮助了

 

后来自己调好了,现在能用了。就是下面这个程序。

 

以下是程序:

#include <stdint.h>
#include <stdbool.h>
#include "inc/hw_ints.h"
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/sysctl.h"
#include "driverlib/interrupt.h"
#include "driverlib/gpio.h"
#include "driverlib/timer.h"

#define uchar unsigned char
#define uint  unsigned int

#define Delay_us(x)    SysCtlDelay((long)(SysCtlClockGet( )*(double)x /3000000 ))
#define Delay_ms(x)    SysCtlDelay((long)(SysCtlClockGet( )*(double)x /3000 ))

#define SCLK_H     GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_4,0Xff )
#define SCLK_L       GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_4,0x00 )
#define CS_H         GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_2,0xFF )
#define CS_L         GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_2,0x00 )
#define SID_H        GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_3,0xff )
#define SID_L        GPIOPinWrite(GPIO_PORTA_BASE, GPIO_PIN_3,0x00 )
#define SID          GPIOPinRead(GPIO_PORTA_BASE, GPIO_PIN_3)

/********************************************************************
*名称: sendbyte()
*功能:按照液晶的串口通信协议,发送数据
*输入: zdata
*输出:无
***********************************************************************/
void sendbyte(unsigned char zdata)
{
 unsigned int i;
 for(i=0;i<8;i++)
 {
  if((zdata << i) & 0x80)
  {
   SID_H;//SID=1;
  }
  else
  {
   SID_L;//SID=0;
  }
  SCLK_L;//SCLK= 0;
  SCLK_H;//SCLK=1;
 }
}


/********************************************************************
*名称: write_com()
*功能:写串口指令
*输入: cmdcode
*输出:无
**********************************************************************/
void write_com(unsigned char cmdcode)
{
 CS_H;//CS=1;
 sendbyte(0xf8); //告诉12864接下来传送指令
 sendbyte(cmdcode & 0xf0);
 sendbyte((cmdcode << 4) & 0xf0);
 Delay_us(200);
}


/********************************************************************
*名称: write_data()
*功能:写串口指令
*输入: cmdcode
*输出:无
***********************************************************************/
void write_data(unsigned char Dispdata)
{
 CS_H;//CS=1;
 sendbyte(0xfa); //告诉12864接下来传送数据
 sendbyte(Dispdata & 0xf0);
 sendbyte((Dispdata << 4) & 0xf0);
 Delay_us(200);
}

/********************************************************************
*名称: lcdinit()
*功能:初始化函数
*输入: cmdcode
*输出:无
***********************************************************************/
void lcdinit()
{

 Delay_ms(20);
 write_com(0x30); //基本指令操作
 Delay_ms(5) ;
 write_com(0x0c); //显示开关闭光标
 Delay_ms(5) ;

}


/********************************************************************
*名称: hzkdis()
*功能:显示字符串
*输入: *s
*输出:无
*********************************************************************/
void hzkdis(char *s)
{
 while(*s > 0)
 {
  write_data(*s);
  s++;
  Delay_ms(5);
 }
}

/********************************************************************
*名称: Test()
*功能:显示子函数
*输入:无
*输出:无
***********************************************************************/
void Test()
{
 write_com(0x03); //地址归为
 Delay_ms(5);
 write_com(0x81); //显示第一行
 hzkdis("555");
 write_com(0x91); //显示第二行
 hzkdis("5");
}

/********************************************************************
*名称: Main()
*功能:主函数
*输入:无
*输出:无
**********************************************************************/
int main(void)
{
 SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);
 SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
 SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
 GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3);
 GPIOPinTypeGPIOOutput(GPIO_PORTA_BASE, GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4);
 GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3, 0x08);


 Delay_ms(20);
 lcdinit();
 Delay_ms(20);
 while(1)
 {
  Test();
  Delay_ms(50);
 }

}