发一个自己写的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)
代码是从以前刚学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
- 发一个自己写的2440驱动1602的资料(电路+代码)
- 发一个自己写的服务程序
- 发一个我自己写的RSA加密算法!
- 电路学习的一个资料,还不错!
- 发一个c语言写的俄罗斯方块的代码 [
- 发一下我写的deep learning中的一个代码
- 用简单的驱动,自己写一个连接池
- Boost电路的驱动电路
- 自己写的代码
- 内核裁剪,将自己写的驱动加入内核及按键驱动的代码(arm TQ2440)
- ::自己写的一个超简单的ASP分页代码::
- 自己写的一个用DES加密的java代码
- 自己写的一个关于线段树的代码
- 自己写的一个简单的BP神经网络代码
- 自己写的一个计算代码执行时间的函数
- 发一个自己用JS写的实用看图工具
- 发一个自己用JS写的实用看图工具
- 发一个自己用JS写的实用看图工具
- Alice and Bob(长春)
- ACE中的Double Checked Locking 模式
- python 网络编程基础 笔记
- 一位大牛整理的python资料
- 关于通达OA某平台版本的函数混淆处理诀窍
- 发一个自己写的2440驱动1602的资料(电路+代码)
- 黑客榜中榜第二期过关方法
- Ubuntu apt-get 安装软件报错
- 如何减小Exe, DLL 的大小
- POJ 3225
- Java中ArrayList类的用法(转)
- 哈夫曼树详解<续>
- 源码安装和配置apache(httpd)和 PHP 和 mysql全过程(一)
- cat more等打开文件的方式 与awk的连用 [大三TJB_708]