• PUDN用户
    了解作者
  • C/C++
    开发工具
  • 2KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 6
    下载次数
  • 2012-12-13 22:16
    上传日期
spi驱动lcd12864有详细的注释,使用c语言编程
spi_lcd12864.zip
  • spi_lcd12864.h
    5.6KB
内容介绍
#ifndef _LCD_12864_H #define _LCD_12864_H #include "LPC17xx.h" /* RE_LCD P1[23] CS_LCD P1[25] A0_LCD P1[22] ** SDI_LCD P1[24] SCK_LCD P1[20] */ #define RE_LCD (1<<22) #define CS_LCD (1<<25) #define SDI_LCD (1<<24) #define SCK_LCD (1<<20) #define SET_RE_LCD LPC_GPIO1->FIOSET |= RE_LCD #define CLR_RE_LCD LPC_GPIO1->FIOCLR |= RE_LCD #define SET_CS_LCD LPC_GPIO1->FIOSET |= CS_LCD #define CLR_CS_LCD LPC_GPIO1->FIOCLR |= CS_LCD /********************************************************************************************************* ** 函数名称:INI_SSP0 ** 功能说明:初始化LCD SSP。 ** 输入参数:无 ** 返 回 值:无 *********************************************************************************************************/ void INI_SSP0(void) { /* 设置硬件 SSP0 通讯脚 */ LPC_PINCON->PINSEL3 |= 0x03 << 16; /* P1.24功能设置MOSI0 (SDI_LCD) */ LPC_PINCON->PINSEL3 |= 0x03 << 8; /* P1.20功能设置SCK0 (SCK_LCD) */ /* 设置SSP0控制器1 */ LPC_SSP0->CR1 = (0x00<<0) | /* LBM = 0, 正常工作模式,不使用回写 */ (0x00<<1) | /* SSE = 0, SSP禁能用以配置SSP */ (0x00<<2) | /* MS = 0, SSP用作主机模式 */ (0x00<<3); /* SOD = 0, 从机模式禁能 */ /* 设置SSP0控制器0 */ LPC_SSP0->CR0 = (0x07<<0) | /* 控制器每次传输8位数据 */ (0x00<<4) | /* FRF = "00", SPI帧格式 */ (0x00<<6) | /* SPO = 1, 空闲时SCK为高 */ (0x00<<7) | /* SPH = 1, SCK第二个时钟沿采样 */ (0x00<<8); /* SCR,分频设置,CR0的高8位 */ /* Pssp = Pclk_ssp/SPSDVSR/(SCR+1) Pclk_ssp=24MHz */ LPC_SSP0->CPSR = 240; /* 8位预分寄存器SPSDVSR, 2~254中的一个偶数 */ LPC_SSP0->IMSC = 0x00; /* SSP中断禁止 */ LPC_SSP0->CR1 |= 0x01<<1; /* SSE = 1, SSP使能 */ } /********************************************************************************************************* ** 函数名称: Send_Byte_LCD ** 函数功能:SSP0发送一个字节数据 ** 输入参数: data要发送的数据, a指令判断0为指令 ** 返 回 值:无 *********************************************************************************************************/ void Send_Byte_LCD(uint8_t data) { LPC_SSP0->DR = data; while ( 0 == (LPC_SSP0->SR & 0x01)); /* 等待TEE置位,即发送FIFO空 */ } /********************************************************************************************************* ** 函数名称: Write_TO_LCD ** 函数功能:SSP0发送一个字节数据 ** 输入参数: data要发送的数据, RS指令判断0为指令,RW读写(1读,0写) ** 返 回 值:无 *********************************************************************************************************/ void Write_TO_LCD(uint8_t RS,uint8_t RW,uint8_t data) { uint8_t temp; SET_CS_LCD; temp=0xF8; if(RS) temp = temp | 0x02; if(RW) temp = temp | 0x04; Send_Byte_LCD(temp); //同步 及 RS RW temp=data&0xf0; Send_Byte_LCD(temp); //data高四位 temp=(data<<4)&0xf0; Send_Byte_LCD(temp); //data低四位 CLR_CS_LCD; // Delayus(); } /********************************************************************************************************* ** 函数名称: StringToLCD ** 函数功能:发送字符串到LCD显示 ** 输入参数: addr要显示的位置,*pa字符串指针,start字符串开始位置,length字符串长度 ** 返 回 值:无 *********************************************************************************************************/ void StringToLCD(uint8_t addr,uint8_t *pa) { uint8_t i; Write_TO_LCD(0,0,addr); for(i=0;pa[i]!='\0';i++) Write_TO_LCD(1,0,pa[i]); } /********************************************************************************************************* ** 函数名称: LengthStringToLCD ** 函数功能:根据长度发送字符串到LCD显示 ** 输入参数: addr要显示的位置,*pa字符串指针,start字符串开始位置,length字符串长度 ** 返 回 值:无 *********************************************************************************************************/ void LengthStringToLCD(uint8_t addr,uint8_t *pa,uint8_t start,uint8_t length) { uint8_t i; Write_TO_LCD(0,0,addr); for(i=start;i<length;i++) Write_TO_LCD(1,0,pa[i]); } /********************************************************************************************************* ** 函数名称:INI_LCD ** 功能说明:初始化LCD ** 输入参数:无 ** 返 回 值:无 *********************************************************************************************************/ void INI_LCD(void) { /* LCD驱动所使用到的端口的初始化(如果有必要的话)*/ LPC_PINCON->PINSEL3 &= ~(0x03 << 14); /* P1.23功能设置GPIO (RE_LCD) */ LPC_PINCON->PINSEL3 &= ~(0x03 << 18); /* P1.25功能设置GPIO (CS_LCD) */ LPC_PINCON->PINSEL3 &= ~(0x03 << 12); /* P1.22功能设置GPIO (A0_LCD) */ LPC_GPIO1->FIODIR |= RE_LCD; /* LCD 复位信号方向选择 */ LPC_GPIO1->FIODIR |= CS_LCD; /* LCD 片选信号方向选择 */ DelayNms(1); SET_RE_LCD; CLR_CS_LCD; DelayNms(50); //大于40ms INI_SSP0(); Write_TO_LCD(0,0,0x30); //功能设定 Write_TO_LCD(0,0,0x30); Write_TO_LCD(0,0,0x0C); //显示开关 Write_TO_LCD(0,0,0x01); //清屏 DelayNms(20); //大于10ms Write_TO_LCD(0,0,0x06); //进入设定点,游标右移,画面不移动 } void Clear_Screen() { Write_TO_LCD(0,0,0x01); DelayNms(11); //大于10ms } #endif
评论
    相关推荐
    • LCD12864_SPI.zip
      STM32F103驱动12864,无乱码,亲测可用,SPI通信
    • pic-lcd-spi-last.zip
      PIC单片机通过SPI通讯接口与LCD液晶屏连接,实现各种显示功能
    • SPI-LCD.rar
      支持LPC23XX芯片的硬件及模拟SPI接口驱动LCD源码程序。
    • LPC213X-SPI-LCD12864-CPP.rar
      LPC213X模拟SPILCD12864 C++代码
    • LCD12864_SPI协议,画图,
      基于STM32可以画点,画线,画圆,画矩形,插入任意大小的图片,通过输入(X,Y)可以点亮任意一个点等功能函数。移植需要注意液晶屏扫描的方式是否与本函数移植,否则需要改变画点函数算法。
    • LCD12864spi.rar
      串口方式液晶显示驱动源代码,8位单片机验证可运行
    • Lcd12864.zip
      这是arduino的显示屏库,非常的好用,欢迎大家使用
    • 2.8-spi-9341.zip
      2.8inch TOUCH TFT-LCD ILI8341 STM32 PROGRAM
    • ILI9325C-1.8Lcd-SPI.zip
      ILI9325C 1.8 inch tft Lcd SPI
    • Proteus7.12.rar
      Proteus7.12完美破解版.rar电路仿真软件很好用可以仿真单片数字模拟电路