LCD12864串行与并行的比较分析
来源:互联网 发布:软件测试计划实例 编辑:程序博客网 时间:2024/06/05 11:36
LCD12864的通讯方式是串行、并口可选的,那么这两种有什么区别呢?
1)串行有查忙,需要加延时,否则会出现乱码;并行没有查忙,可以不用延时,但是反应慢。
2)串行速度相对较慢,但是占用的I/O口少;并行相对速度快,但是占用的I/O口多,需要8+3条I/O口。
3)串行CS要特殊处理一下.控制起来比较耗时占用单片机资源多,当然也有些小技巧解决,如在CS拉低以后要重新工作必须执行0x30指令(默认第一次上电是执行基本指令集的,在片选为0,以后再次选中则需要执行这个指令所以我的光标闪烁指令才能生效),以及在使用总线对其进行驱动的时候,并不是每次通信结束后都需要让CS置零。而并口读写快,特别适合图形方式。
因为我偏好用串行的方法,所以我就写出串行的相关功能代码:
/******************************************文件名:LCD12864.c*描述:该程序实现了LCD12864以串行的方式进行通信*创建人:Echo******************************************/#include "LCD12864.h"/*******************************************名称:LCD12864_Send_Byte()*功能:按照液晶的串口通信协议,发送数据*输入:zdata*输出:无*******************************************/void LCD12864_Send_Byte(unsigned char zdata){ unsigned int i; for(i = 0;i < 8;i++) { if((zdata << i) & 0x80){ SID = 1;}else{ SID = 0;}SCLK = 0;SCLK = 1;}}/*****************************************名称:LCD12864_Write_Com()*功能:写串口指令*输入:cmdcode*输出:无******************************************/void LCD12864_Write_Com(unsigned char cmdcode){ CS = 1; LCD12864_Send_Byte(0xf8); LCD12864_Send_Byte(cmdcode & 0xf0); LCD12864_Send_Byte((cmdcode << 4) & 0xf0); delay_us(200);}/******************************************功能:lcdinit()*功能:初始化函数*输入:cmdcode*输出:无*****************************************/void lcdinit(){ RST = 0; delay_ms(20); RST = 1; delay_s(4); LCD12864_Write_Com(0x30); delay_ms(10); LCD12864_Write_Com(0x0c); delay_ms(10);}/*****************************************名称:LCD12864_Write_Data()*功能:写数据*输入:cmdcode*输出:无******************************************/void LCD12864_Write_Data(unsigned char Dispdata){ CS = 1; LCD12864_Send_Byte(0xfa); LCD12864_Send_Byte(Dispdata & 0xf0); LCD12864_Send_Byte((Dispdata << 4) & 0xf0); delay_us(200);}/*****************************************名称:LCD12864_Dis_String()*功能:显示字符串*输入:*s*输出:无*****************************************/void LCD12864_Dis_String(unsigned char code *s){ while(*s > 0){ LCD12864_Write_Data(*s); s++; delay_ms(10);}}/*******************************************名称:LCD12864_Dis_Err()*功能:显示错误提示*输入:无*输出:无******************************************/void LCD12864_Dis_Err(void){ LCD12864_Write_Com(0x03); delay_ms(10); LCD12864_Write_Com(0x81); LCD12864_Dis_String("Err");}
0 0
- LCD12864串行与并行的比较分析
- LCD12864串行和并行显示
- 串行SCSI(SAS)与并行SCSI的比较串行SCSI(SAS)与并行SCSI的比较
- 串行IO与并行IO的效率比较
- 信号的完整性分析 串行端节与并行端接
- IBM服务器对串行SCSI(SAS)与并行SCSI的比较
- 串行通信与并行通信的区别
- 串行硬盘与并行硬盘的区别
- 计算机并行与串行数据的处理
- 同步、异步 与 串行、并行的区别
- 测试串行与并行的运行速度
- 并行与串行的基本思想
- 串行与并行
- 串行与并行
- 串行与并行
- GCD使用 串行并行队列 与 同步异步执行的各种组合 及要点分析
- GCD使用 串行并行队列 与 同步异步执行的各种组合 及要点分析
- 串行&并行程序在效率上的简单比较
- 自定义View之手绘时钟
- NS-3 源码修改--实现tcp数据包特征(大小和间隔)服从特定分布
- launchMode和Flag
- C++封装的日期和时间类
- MySQL之——提升Replication性能的两种架构方式
- LCD12864串行与并行的比较分析
- Thread线程之 多生产者与多消费者模拟生产消费
- Oracle BIEE (Business Intelligence) 11g 11.1.1.6.0 学习(4)创建多维钻取分析
- linux系统负载load average的含义
- Android与JS的交互(上)
- 消息邮箱及其操作_读书笔记_7
- 内核中的kmalloc函数详解
- 安卓apk反编译、修改、重新打包、签名全过程
- XML约束