发一个自己写的2440驱动1602的资料(电路+代码)

来源:互联网 发布:阿里云搭建app服务器 编辑:程序博客网 时间:2024/05/31 19:06
上个星期把MINI2440板上的富余数据线引了出来,看着以前丢下的1602突然有了想用ARM9驱动它的冲动,于是就开始干了。
代码是从以前刚学C51的时候改的,呵呵,看见以前写的代码真觉得很烂,现在已经整理好了。

虽说有点牛刀杀鸡的味道,但驱动起来真的费了不少劲。如果有裤子穿就好了 ^_^

驱动方式:2440+HC595+LCD1602


电路图:

电路图 (原文件名:1602.jpg) 
全家福

全家福 (原文件名:moto_0009.jpg) 




LCD1602.H  头文件内容




#ifndef  __LCD1602_H__
#define  __LCD1602_H__

#include "./include/gpio.h"
#include "./include/def.h"
#include "./include/timer.h"


//------- 驱动方式 -----------//
#define    IO_WAY                  0                 //模拟IO
#define    SPI_WAY                  1                 //SPI

#define    LCDCTL_WAY    SPI_WAY                //使用SPI驱动



//------- 控制端口与控制引脚 ------//
#define    LCD1602_CTL_PORT    rGPFCON                        //GPF 端口

#define    LCD1602_RS  GPFPin0                                //RS引脚
#define    LCD1602_RW  GPFPin2                                //RW引脚
#define    LCD1602_E   GPFPin4                                //EN引脚

//------- 数据端口与数据引脚 ------//        (使用74HC595)
#define    LCD1602_DATA_PORT    rGPGCON                        //GPG 端口
#define    HC595_ST    GPGPin5                                //  SPI1MISO 引脚
#define    HC595_SH    GPGPin7                                //  SPI1CLK 引脚
#define    HC595_Ds    GPGPin6                                //  SPI1MOSI 引脚

#define    SPI1Baud           300000                                // 设置波特率为300 khz          (PCLK=50666666)


//-------- 自制字符 ---------
#define    SELF_SYMBOL                  1                        //  使能自制字符显示


#if SELF_SYMBOL
extern const U8 CGTAB[8][8];
#endif


//----- 延时函数 ----------//
#define   delay_ms(x)   TimerDelay(1000*x)
#define   delay_us(x)   TimerDelay(1*x)


//--------- 主函数 ----------//
void LCD1602_init(void);                                //1602初始化(带清屏)
void LCD1602_Clear(void);                                //1602清屏
void LCD1602_putchar(U8 number);                        //显示字符
void LCD1602_putcharXY(U8 number,U8 x,U8 y);            //在指定位置显示字符
void LCD1602_putstring(U8 *p);                        //显示字符串
void LCD1602_putstringXY(U8 *p,U8 x,U8 y);              //在指定位置显示字符串
#if SELF_SYMBOL
void LCD1602WriteRAM(U8 *Data,U8 tab_N);
#endif



//--------- 子函数 ----------//
void LCD1602Pin_init(void);
#if LCDCTL_WAY==SPI_WAY
void SPI1SendData(U8 Data);
#else
void  HC595SendData(U8 data);
#endif
void LCD1602WriteCMD(U8 CMD);
void LCD1602WriteDATA(U8 W_DATA);
void LCD1602SetPoint(U8 x,U8 y);



#endif        // __LCD1602_H__



代码与原理图ourdev_513387.rar(文件大小:298K) (原文件名:Up.rar)
收藏收藏0