1602讲解的时候有个“基本操作时序逻辑电路基本单元”,基本操作时序逻辑电路基本单元是什么意思

用51单片机和1602液晶做的数字钟_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
用51单片机和1602液晶做的数字钟
上传于||文档简介
&&用1​单​片​机​和62​液​晶​做​的​数​字​钟​,​有​定​时​功​能
阅读已结束,如果下载本文需要使用
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩10页未读,继续阅读
你可能喜欢【教学】四位总线驱动LCD1602—详细教学
助理工程师
15:30:21  
四位总线驱动LCD1602很多人都因为在使用LCD1602的液晶屏做电子制作时都有这样一个烦恼,LCD占用的IO口太多了,传统的八位总线驱动加上三个控制位就占用了11个接口。往往都是因为这个问题导致原本20脚单片机能做的事情现在得用28脚或40脚的单片机做了。有什么解决方案吗?.......当然是有啦。如果你正在被以上的问题困扰着,或者你是追求电路精简、完美的DIYer,那就继续看下去。这篇文章将会教你怎么用四位总线驱动LCD1602液晶屏,从11个IO口控制LCD变成7个IO口控制LCD将会大大减少你电路上的复杂度。
1.jpg (40.1 KB, 下载次数: 0)
15:25 上传
接线图四位总线IO口改怎么驱动呢?&&看看下面的接线图, Px.4接DB4 Px.5接DB5以此类推,接到DB7时就用了4个IO口,是不是大大的减少了电路上的复杂哈。
2.jpg (27.4 KB, 下载次数: 4)
15:25 上传
这是LCD的接口定义。看看就行 ,主要看上面的接线图
3.jpg (38.34 KB, 下载次数: 6)
15:25 上传
4.jpg (19.51 KB, 下载次数: 4)
15:25 上传
DB7测忙:&&测忙就是看看LCD现在的状态看看他在不在忙处理你上次给他的命令,如果他忙完了,才可以给他发送下一个命令
5.jpg (9.69 KB, 下载次数: 5)
15:25 上传
注意:单片机每次对LCD进行读写时都需要对DB7进行监测,确保DB7为0才能读写。void read_busy()& && & //测忙的函数 看看LCD有空处理你的指令没,有空了,就可以给它发数据了{& && && && && &// 根据上面图片1.1读状态写函数。& && &&&RS=0;RW=1;//因为测忙是要从LCD读出状态,所以根据上面的操作时序表写程序就是这样,L就是0(低电平)H就是1(高电平)& && &&&DB7=1;& && &&&//如果LCD不忙的话他就会给出一个低电平在DB7,我们这先拉高电平,做准备接他的低电平& && &&&E=1;& && &&&//E=H所以拉高电平& && &&&while(DB7);& && &&&//等待返回一个低电平就可以执行下一步了。& && &&&E=0;& && && &//E置0,方便下面的函数用}函数里面的RS、RW、E、DB7需要定义sbit 根据上面的接线图定义应该是:& &&&sbit RW=P3^1;& &&&sbit RS=P3^0;& &&&sbit E =P3^5;& &&&sbit DB7=P1^7;void write_data(unsigned char c,unsigned char a)&&//发送指令函数。i=0写指令 i=1写数据& & 定义了两个子程序参数{& && & read_busy(); //先测忙,调用了上面那个函数& && & RS=a;RW=0;//根据基本操作时序图,RS=1 RW=0时是写数据,也就是你要显示在LCD上的数据。RS=0 RW=0时是写指令,指令就是让它对自己的一些处理,下面图是指令说明& && & P1=c/16*16;//这里就是到送指令的命令了,送高四位& && & E=1;//每次送完要给E一个脉冲& && & E=0;//要拉低为下面的做准备& && & P1=c%16*16;& & //送低四位& && && &&&& && & E=1;& && && && &//送完给E一个脉冲& && & E=0;& && && && &&&//拉低E}程序说明:P1=c/16*16;//这里就是到送指令的命令了,送高四位E=1;& && && && & //每次送完要给E一个脉冲E=0;& && && && & //要拉低为下面的做准备P1=c%16*16;& & //送低四位& && && &&&E=1;& && && && & //送完给E一个脉冲E=0;& && && && &&&//拉低EP1=c/16*16;//这里就是到送指令的命令了,送高四位P1=c%16*16;& & //送低四位& && & c/16*16&&这是把指令的高四位取出来 /就是整除比如说 指令是0xAF; 经过这个公式的运算就出来就是 0xA0;高四位就出来了;C%16*16&&这是把指令的低四位取出来 %就是除余 得的是余数经过这个公式的运算就出来就是 0xF0;低四位就出来了;在分两次送入LCD。送完一次要给E一个高脉冲就是E=1;E=0;指令说明:
6.jpg (11.82 KB, 下载次数: 5)
15:25 上传
7.jpg (53.74 KB, 下载次数: 5)
15:25 上传
说明一下上面这个图怎么用(会LCD 8位总线的可以跳过)比如4.1.2 显示开/关及光标设置指令码是: 0 0 0 0 1 D C B& & D是开液晶屏的显示 1为开 所以D我们把它置1就是 0 0 0 0 1 1 C B 这样设置例子:我要开显示,不显示光标,光标闪烁&&就是 D=1 C=0 B=1指令码就是 0 0 0 0 1 1 0 1 这是2进制数,在C语言里要用16进制数,所以转换成16进制数就是0x0D操作步骤:有了上面那两个低层的函数。我们就可以对LCD进行操作了。1、首先要多LCD进行初始化要用到上面write_data的函数。我们用一个函数把他再次封装起来void LCD_initialization(){& && &&&write_data(0x28,0);& && &&&//& && &&&告诉LCD我们要四位总线驱动 因为这是指令所有函数的参数就是(0x28,0)&&& && &&&write_data(0x01,0);& && &&&//让他清屏,数据指针清零& && &&&write_data(0x06,0);& && && && && & //这个是上面指令码是 000001NS的设置 大家自己上去看看& && &&&write_data(0x0f,0);& && && && && & //设置光标 开显示,显示光标,光标闪烁}//初始化用到的都是指令 所以write_data(&&,0);& && &&&函数的第二个参数都是02、初始化完后就可以送入要显示的函数了,用到的函数void print(unsigned char a,unsigned char *str)& & //送入显示的数据{//函数参数说明,a你要送入的地址,看下图 如果是在第一行第二个显示就是0x01,*str这个就填你要显示的字& & write_data(a | 0x80,0);& & while(*str != '\0')& & {& && &&&write_data(*str++,1);& && &&&//因为送入的是显示的字所以第二个参数为1& & }& & *str = 0;}
8.jpg (36.85 KB, 下载次数: 5)
15:25 上传
01.jpg (40.64 KB, 下载次数: 0)
15:25 上传
(935 Bytes, 下载次数: 215)
15:28 上传
点击文件名下载附件
QQ下载积分: 积分 -1 分
我学习这个是做的笔记,加了点内容就分享上来哈
助理工程师
15:27:40  
不错,正在看1602的资料,刚好看到你写的贴
20:25:59  
看完了,写的非常清楚啊,最重要是有注释!!
14:30:49  
支持,这样搭面包板方便很多
22:04:06  
测忙函数中的E=1;然后E=0;是什么意思啊;为什么先拉高电平后拉低电平?
10:00:31  
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
16:18:58  
写得很好,学习了。
20:36:31  
我对电子和编程一窍不通,但我对其产生的功能欣喜万分。所以我要成零开始入门
站长推荐 /5
Powered by 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
1602LCD显示的秒表单片机课程设计
下载积分:1000
内容提示:1602LCD显示的秒表单片机课程设计
文档格式:DOC|
浏览次数:391|
上传日期: 00:55:39|
文档星级:
该用户还上传了这些文档
1602LCD显示的秒表单片机课程设计
官方公共微信

我要回帖

更多关于 1602时序图 的文章

 

随机推荐