专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
TI
【转】 LCD12864串行与并行的比较分析
2019-07-19 14:04
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
TI MCU
1360
0
974
LCD12864的通讯方式是串行、并口可选的,那么这两种有什么区别呢?
1)串行有查忙,需要加延时,否则会出现乱码;并行没有查忙,可以不用延时,但是反应慢。
2)串行速度相对较慢,但是占用的I/O口少;并行相对速度快,但是占用的I/O口多,需要8+3条I/O口。
3)串行CS要特殊处理一下.控制起来比较耗时占用单片机资源多,当然也有些小技巧解决,如在CS拉低以后要重新工作必须执行0x30指令(默认第一次上电是执行基本指令集的,在片选为0,以后再次选中则需要执行这个指令所以我的光标闪烁指令才能生效),以及在使用总线对其进行驱动的时候,并不是每次通信结束后都需要让CS置零。而并口读写快,特别适合图形方式。
因为我偏好用串行的方法,所以我就写出串行的相关功能代码:
[objc]
view plain
copy
/*****************************************
*文件名: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条回答
一周热门
更多
>
相关问题
CPLD的方波输出
4 个回答
11个版本Quartus II 软件下载,安装包网盘合集,附教程,47G!
20 个回答
请大家帮忙到21IC发展大家谈支持我申请新版面
20 个回答
【通知】21ic中国电子网服务条款 (所有人员必读)
1 个回答
满载而归乙亥年,大展鸿途庚子年---集签赢好礼
20 个回答
携手ADI,踏上电子工程师之巅—车辆电气化视频,答题领奖!
1 个回答
如何提升论坛质量,看你了!
20 个回答
【最终名单】二姨家喊你来拿100份新年大礼啦~
20 个回答
相关文章
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
TI
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
一周热门 更多>