`
insertyou
  • 浏览: 893267 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

MzLH04-12864 串行SPI字库LCD模块使用笔记

 
阅读更多

日前从淘宝上购买了2块12864串行SPI接口的模块,本想打算用7S64自带的SPI接口去接LCD,结果发现LCD的SPI不是标准的SPI接口。因此只能尝试用7s64的PIO口模拟SPI接口以满足LCD需要。

首先从"铭正同创"的官网上把LCD的驱动整下来。找到LCD_Config.h文件。修改里面的管角定义。(如下)


//#include "REG52.h"
#include <AT91SAM7S64.H> //加入AT91SAM7S64头文件
#include "../Board.h"

#define Dis_X_MAX128-1
#define Dis_Y_MAX64-1

//Define the MCU Register


#define LCD_SPI_CS (1<<0) /* PA0 */ SPI口定义
#define LCD_SPI_SDA (1<<31) /* PA31 */
#define LCD_SPI_SCK (1<<1) /* PA1 */
#define LCD_SPI_RES (1<<15) /* PA3 */

/*
sbit SPI_CS = P1^0;//定义CS接在P1.0端口
sbit SPI_SDA = P1^1;//定义SDA接在P1.1端口
sbit SPI_SCK = P1^2;//定义SCK接在P1.2端口
sbit SPI_RES = P1^3;//定义RESET接P1.3端口
*/

其次修改底层SPI接口操作代码,找到LCD_Dis.c 文件

(1) 在最顶上加入AT91SAM7S64头文件

#include <AT91SAM7S64.H> //此处加入
#include "LCD_Config.h"


unsigned char X_Witch=6;
unsigned char Y_Witch=10;
unsigned char X_Witch_cn=16;
unsigned char Y_Witch_cn=16;
unsigned char Dis_Zero=0;

(2)修改LCD初始化代码

void LCD_Init(void)
{
//SS和SCK预先设置为高电平
*AT91C_PIOA_SODR|=LCD_SPI_SCK;//SPI_SCK = 1;
*AT91C_PIOA_SODR|=LCD_SPI_CS; //SPI_CS = 1;
//复位LCD模块
*AT91C_PIOA_CODR|=LCD_SPI_RES;//SPI_RES = 0;
TimeDelay(50);
//保持低电平大概2ms左右
*AT91C_PIOA_SODR|=LCD_SPI_RES;//SPI_RES = 1;
TimeDelay(80); //延时大概10ms左右
}

(3)修改SPI置SS线状态代码

void SPI_SSSet(unsigned char Status)
{
if(Status)//判断是要置SS为低还是高电平?//SS置高电平
*AT91C_PIOA_SODR|=LCD_SPI_CS;//SPI_CS = 1;
else
*AT91C_PIOA_CODR|=LCD_SPI_CS; //SS置低电平 SPI_CS = 0;
}

(4)串行SPI口数据传输代码

void SPI_Send(unsigned char Data)
{
unsigned char i=0;
for(i=0;i<8;i++)
{
*AT91C_PIOA_CODR|=LCD_SPI_SCK;//SCK置低,SPI_SCK = 0;
if(Data&0x0080)
*AT91C_PIOA_SODR|=LCD_SPI_SDA;//SPI_SDA = 1;
else
*AT91C_PIOA_CODR|=LCD_SPI_SDA;//SPI_SDA = 0;
*AT91C_PIOA_SODR|=LCD_SPI_SCK;//SCK上升沿触发串行数据采样 SPI_SCK = 1;
Data = Data<<1;//数据左移一位
}
}

修改完成后,在主程序中,就可以直接使用LCD了。不过别忘了在主程序中加入

#include "LCD/LCD_Dis.h"

void main()

{

*AT91C_PMC_PCER = (1 << AT91C_ID_PIOA);

*AT91C_PIOA_PER=(LCD_SPI_CS|LCD_SPI_SDA|LCD_SPI_SCK|LCD_SPI_RES); //使能SPI对应的管脚的IO功能
*AT91C_PIOA_OER=(LCD_SPI_CS|LCD_SPI_SDA|LCD_SPI_SCK|LCD_SPI_RES); //使能LED对应的管脚的输出功能
*AT91C_PIOA_OWER=(LCD_SPI_CS|LCD_SPI_SDA|LCD_SPI_SCK|LCD_SPI_RES);

LCD_Init(); //LCD初始化

ClrScreen();


PutString_cn(10,0,"ADC转换---F6返回");
PutString(0,12,"CH0 CH1 CH2 CH3 CH4");
PutString(0,24,"3.3/3.3/3.3/3.3");
PutString(0,36,"CH0 CH1 CH2 CH3 CH4");
PutString(0,48,"3.3/3.3/3.3/3.3");

}

注意,在使用对应的PIO口之前,一定要对 *AT91C_PIOA_PER进行写入,使能I对应的管脚的IO打开

分享到:
评论

相关推荐

    MzLH01-12864 模组编程手册v1.0

    MzLH01-12864 模组编程手册v1.0

    MzLH04-12864代码

    【MzLH04-12864代码】是一个关于使用MCS51单片机进行12864液晶显示屏驱动的程序示例。这个代码集着重展示了如何在C语言环境下对MCS51系列单片机进行编程,以实现与12864图形点阵液晶屏的交互。 MCS51,也称为8051,...

    推箱子源代码(凌阳+MzLH01_12864液晶屏) (没有视屏附件)

    《推箱子源代码详解——基于凌阳微处理器与MzLH01_12864液晶屏》 推箱子是一款经典的逻辑益智游戏,它以其简单的规则和丰富的策略性吸引了众多玩家。本资源提供了推箱子游戏的源代码,特别之处在于其采用了凌阳微...

    mzlh04-12864液晶显示

    【标题】"mzlh04-12864液晶显示"涉及到的是电子硬件领域中的液晶显示屏技术,特别是针对微控制器(如51单片机)的应用。12864是液晶屏的一种规格,表示它有128行×64列的像素点阵,这种屏幕常用于嵌入式系统、物联网...

    MzLH04_12864_KeilC51_MCS51.rar

    在MzLH04项目中,12864 LCD被用作人机交互界面,开发者需要了解其接口协议、初始化过程以及数据传输方式,如SPI或I2C,以便编写驱动程序来控制显示内容。 接着,我们讨论Keil C51编译器。这是由Keil公司开发的一款...

    MzLH04 12864 液晶STM32驱动程序

    MzLH04 12864液晶屏是一种常用的显示设备,其特点在于拥有128x64像素的分辨率,支持SPI(Serial Peripheral Interface)通信协议。这种液晶屏在小型设备、嵌入式系统或物联网应用中非常常见,因其体积小、功耗低而受...

    串行通信 mfc串口程序 C语言51单片机程序 12864液晶显示

    常见的串行通信标准有UART(通用异步收发传输器)、SPI(串行外围接口)和I2C(集成电路间通信)等。在51单片机中,我们通常使用UART进行串行通信。 MFC中的串口程序设计,主要涉及到C++的CSocket类和CAsyncSocket...

    6_12864.rar_12864 串行 stm32_mzlh04 12864 stm_stm32 12864 串行_stm32

    用STM32驱动的12864程序,采用的是串行方式

    MzLH04的MCS51驱动演示说明

    MzLH04是一款由北京铭正同创科技有限公司提供的128x64点阵图形液晶显示模块,该模块集成了中文字库,特别适用于需要中文显示的应用场合。为了方便用户快速上手,该公司还提供了基于MCS51单片机的驱动函数库以及一...

    51单片机控制MzLH04模块的菜单程序范例

    总结,通过51单片机控制MzLH04模块实现菜单程序,我们需要理解51单片机的硬件结构和编程模型,熟悉MzLH04模块的特性,以及掌握LCD显示和按键处理的技术。在这个过程中,良好的软件设计和调试技巧也至关重要,以确保...

    串行12864资料

    MzLH03-12864是一款采用串行SPI接口的128x64点阵LCD显示模组,由北京铭正同创科技有限公司提供。该模组不仅具备标准的显示功能,还集成了多种高级功能,如汉字和ASCII码字符显示、图形绘制能力以及整型数字直接显示...

    v3_MzLH04 12864 的STM32 C8T6驱动

    MzLH04 12864的STM32F103C8T6的驱动,SPI串行接口,相当好用。程序还包含了一些常用的GUI操作函数。这个工程只包含了驱动和简单例程,如果需要SD卡与FATFS的全部例程,请发邮箱:mouseyy@126.com

    LCD_Driver.rar_12864 stm32f103_STM32F103_STM32F103 12864_stm32f1

    描述中的“MzLH03-12864 V1.0 液晶模块基本驱动例程(STM32F103系列)”表明这是一套用于MzLH03-12864液晶模块的V1.0版本驱动程序,主要服务于STM32F103系列芯片。基本驱动例程通常包含初始化、显示控制、字符或图形...

    MzLH03 12864液晶显示程序及资料

    MzLH03 12864液晶显示程序及资料 /* 液晶驱动程序 Beta1.2 */ #include #include /*参数定义*/ #define BEIGUANG 60 //设置背光灯亮度 sbit SPI_RES = P2^0; //定义RESET接P2.0端口 sbit SPI_CS = P2^1; //定义CS接...

    51单片机控制MzLH06模块的菜单程序范例

    在这个范例中,我们将探讨如何使用51单片机来控制MzLH06模块,并实现一个简单的菜单程序。 MzLH06模块通常是一个具有特定功能的嵌入式部件,可能是LCD显示模块、无线通信模块、传感器接口等。在本例中,我们假设...

    基于FSC7002的指纹锁的设计与实现

    其中,液晶显示模块采用MzLH04-12864,具有汉字显示和低功耗的优势,简化了电路设计。 指纹采集部分,系统采用光电式HV7131指纹光学采集仪,其专利光学微调距焦技术可以获取清晰的指纹图像,支持高达500分辨率的...

Global site tag (gtag.js) - Google Analytics