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

上个星期把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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/436367.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】10.Qt编程涉及的术语和名词

本节我们来介绍一下使用 Qt 编程过程中常用的术语和名字,它们不一定专属于 Qt,在其它的 C/C 开发过程中也会使用到。 Project Project 的中文翻译是“项目”或者“工程”,这里的项目是指为实现某个相对独立功能的程序代码合集,这…

【转】17.Qt界面布局管理详解

在上一节,通过一个简单的应用程序,分析了 Qt 创建的 GUI 应用程序中各个文件的作用,剖析了可视化设计的UI文件是如何被转换为 C 的类定义,并自动创建界面的。这些是使用 Qt Creator 可视化设计用户界面,并使各个部分融…

SQL Server 清空或删除所有数据库表中的数据

方法一&#xff1a; --生成数据库脚本的方法最快,处理的也最好 sql2000企业管理器 --右键要清理的数据库 --所有任务 --生成SQL脚本 --<常规>里选择"生成全部对象脚本"","在脚本文件中包含说明性标题&quo…

【转】QT介绍

一、Qt介绍 Qt&#xff0c;坦白来说&#xff0c;并不只是一个界面库&#xff0c;他是C编程思想的集大成者。它是一个经过完善的C应用程序框架。使用Qt&#xff0c;在一定程度上你获得的是一个“一站式”、“全方位”的解决方案&#xff0c;STL、string、XML、数据库、网络这些…

二叉树序列化

文件的大小尽可能的小。 想了四种方法&#xff1a; 第一种方法&#xff1a;把二叉树按前序和中序遍历一遍&#xff0c;存两次二叉树。 第二种方法&#xff1a;将二叉树按左枝为0&#xff0c;右枝为1进行路径编码&#xff0c;那么每个节点都可以表示成&#xff0c;节点信息和路径…

【转】OWIN是什么?

OWIN的英文全称是Open Web Interface for .NET。 如果仅从名称上解析&#xff0c;可以得出这样的信息&#xff1a;OWIN是针对.NET平台的开放Web接口。 那Web接口是谁和谁之间的接口呢&#xff1f;是Web应用程序与Web服务器之间的接口&#xff0c;OWIN就是.NET Web应用程序与W…

java 切换panel会闪烁_【19期】为什么Java线程没有Running状态?

Java虚拟机层面所暴露给我们的状态&#xff0c;与操作系统底层的线程状态是两个不同层面的事。具体而言&#xff0c;这里说的 Java 线程状态均来自于 Thread 类下的 State 这一内部枚举类中所定义的状态&#xff1a;什么是 RUNNABLE&#xff1f;直接看它的 Javadoc 中的说明&am…

【转】PSTools工具使用方法

转自&#xff1a;https://blog.csdn.net/hongkaihua1987/article/details/85230082 https://blog.51cto.com/winhe/1742633 本篇文章是基于pstools 2.7版本。pstools是sysinternals出的一个功能强大的nt/2k远程管理工具包。 它的主页为http://www.sysinternals.com/ 下载地址…

多标签文本分类数据集_标签感知的文档表示用于多标签文本分类(EMNLP 2019)...

原文&#xff1a;Label-Specific Document Representation for Multi-Label Text Classification&#xff08;EMNLP 2019&#xff09;多标签文本分类摘要&#xff1a;本文使用标签相关的注意力网络学习文档表示。该方法在构建文档表示时使用了标签的语义信息来决定标签和文档的…

a.pop啥意思python_python中pop什么意思

python中pop什么意思,赋值,移除,元素,位置,变量python中pop什么意思易采站长站&#xff0c;站长之家为您整理了python中pop什么意思的相关内容。python中pop()将列表指定位置的元素移除&#xff0c;同时可以将移除的元素赋值给某个变量&#xff0c;不填写位置参数则默认删除最后…

【转】CAN 通信测试工具 canutils

转自&#xff1a;https://blog.csdn.net/engrossment/article/details/105222753 概述 CAN&#xff0c;Controller Area Network&#xff0c;控制器局域网&#xff0c;一种高可靠性的现场总线。广泛用于汽车电子、工业控制通信。 canutils 工具包内含 5 个独立的程序&#x…

【转】VS技巧—任务列表Task List(ToDoList)

写代码难免有些地方需要以后修改&#xff0c;或者有些地方需要以后晚上。比如我想以后修改此函数&#xff0c;有人会使用注释来提醒自己&#xff0c;比如会写上 //zhangsantodo it is a test function //zhangsantodo it not good 然后在需要修改时全局搜索“zhangsantodo”…

哈希桶 entry_哈希表代码实现

哈希表的主要用处&#xff1a;快速的数据存储和查找。例如&#xff0c;在我们日常上网过程中搜索某条信息的时候&#xff0c;信息的存储方式决定了查找该信息的速度&#xff0c;哈希表结合了数组的便捷访问和链表的便捷查找和删除的特点。实现方式&#xff1a;通过哈希函数获取…

投标报价得分计算程序_什么是投标报价?怎么计算呢?

投标价格是投标文件中的实质性内容&#xff0c;也是评审因素中的核心内容。在招标采购活动中&#xff0c;由于投标人的疏忽&#xff0c;经常出现投标报价遗漏、书写错误、前后不一等问题。今天保标招标网小编就跟大家一起来看看什么是投标报价&#xff1f;招投标中复价是什么意…

设备I/O之OVERLAPPED

OVERLAPPED,顾名思义为重叠,乍一看会很奇怪,重叠?谁跟谁重叠?似乎在WIN32的Programming中没有这个概念呀?要讨论这个问题就要追溯到对设备I/O的访问中。 在WIN32中,用户不能象以前那样直接对硬件进行访问,使得这一层对开发者而言是个"黑盒",而提供了一组对应的API…

【转】在windows上安装VTK

看了很多教程&#xff0c;花了1天半的时间装上了&#xff0c;记录下。 前置条件&#xff1a;我安装了VS2015&#xff0c;用来编译工程。 参考资料 官方&#xff1a;http://www.vtk.org/Wiki/VTK/Building 安装&#xff1a;http://blog.csdn.net/Chinamming/article/details/1…

映射网络驱动器后为什么每次都要重新连接_如何映射网络驱动器?

有些设备的电脑需要处理一些共享资料或者需要一些外部资料才能生产运行&#xff0c;但是这些资料在本电脑没有&#xff0c;要去企业的公共盘&#xff08;共享磁盘&#xff09;里面获取&#xff0c;公共盘是网络上驱动器&#xff0c;这时候我们就要把公共盘映射到本地电脑。PCB厂…

解析 Linux 中的 VFS 文件系统机制

简介&#xff1a; 本文阐述 Linux 中的文件系统部分&#xff0c;源代码来自基于 IA32 的 2.4.20 内核。总体上说 Linux 下的文件系统主要可分为三大块&#xff1a;一是上层的文件系统的系统调用&#xff0c;二是虚拟文件系统 VFS(Virtual Filesystem Switch)&#xff0c;三是挂…

去除分页预览

有时我们在打开一个Excel表的时候,会出现如下图样式: 此为作了"分页预览"设置,取消方法如下图: 选择"普通"即可转载于:https://www.cnblogs.com/wxbbk/archive/2007/10/07/915773.html

【转】VTK + QT + VS 编译安装配置

VTK Vtk&#xff0c;&#xff08;visualization toolkit&#xff09;是一个开源的免费软件系统&#xff0c;主要用于三维计算机图形学、图像处理和可视化。Vtk是在面向对象原理的基础上设计和实现的&#xff0c;它的内核是用C构建的&#xff0c;包含有大约250,000行代码&#…