当前位置:首页 >> 工学 >>

电子测量课程设计


成 绩 评 定 表
学生姓 名 专 业
测控技术与仪器

班级学号

课程设计题目 计 算 机 串 口 接 收
+LCD 距离显示



语 组长签字:

成绩

日期

2017 年 7 月 11 日

课程设计任务书
学 院 自动化与电气学院 专 业 班级学号 计算机串口接收+LCD 距离显示设计 测控技术与仪器

学生姓名 课程设计题目

实践教学要求与任务:
《电子测量技术》是测控技术与仪器专业的专业基础课。本设计是对该课程综合 应用能力的检验,在鼓励学生熟悉基本原理的前提下,注重与实际应用相联系,提出 自己的方案,完善设计。 1、熟悉被测对象的测量技术工作原理; 2、提出可行设计方案; 3、根据方案设计硬件电路,应用 Protel 绘制电路原理图; 4、软件编程并调试; 5、硬件焊接与调试; 6、完成课程设计报告。

工作计划与进度安排:
第 17 周(6 月 19 日-6 月 23 日) :布置设计任务,查资料,完成总体设计框架。 第 19 周(7 月 3 日-7 月 7 日) :完善设计内容,焊接调试,验收答辩。

指导教师:

专业负责人:

学院教学副院长:

2017 年 6 月 15 日

2017 年 6 月 16 日

2017 年 6 月 16 日

目录
一 设计要求............................................................................................................................. 1 二 设计方案与论证................................................................................................................. 1 2.1 主控系统..................................................................................................................... 1 2.2 信息采集模块............................................................................................................. 1 2.3 显示模块的选择......................................................................................................... 2 2.4 计算机串口................................................................................................................. 2 三 总体设计及电路图............................................................................................................. 3 3.1 主板总体设计框图..................................................................................................... 3 3.2 信号检测模块............................................................................................................. 3 3.3 显示模块..................................................................................................................... 6 四 元器件清单......................................................................................................................... 8 五 元器件识别与检测............................................................................................................. 8 5.1 电阻的识别与检测.................................................................................................... 8 5.2 二极管三极管识别与检测...................................................................................... 10 5.3 电容的识别与检测.................................................................................................. 11 5.4 单片机的识别与检测.............................................................................................. 11 六 硬件制作与调试............................................................................................................... 11 6.1 检查元件................................................................................................................... 11 6.2 焊接元件................................................................................................................... 12 6.3 电路的调试............................................................................................................... 12 6.4 结果显示.................................................................................................................. 12 七 设计心得........................................................................................................................... 13 八 参考文献........................................................................................................................... 14 附录一 整机电路图........................................................................................................... 15 附录二 程序....................................................................................................................... 16

一 设计要求
1.实现距离信号的采集和数字转换。 2.实现 LCD1602 液晶的数据显示 。 3.成和计算机的简单数据传送。

二 设计方案与论证
根据课设题目要求,确定如下方案,依靠 HC-SR04 超声波测距传感器来获取距离 信息。通过液晶 LCD1602 显示屏显示出来,同时通过计算机串口接收在计算机上显示 出来,实现实时同步传输。

2.1 主控系统
根据设计要求, 该设计属于多输入量的复杂程序控制问题。 综合各方面问题考虑, 51 单片机显现了巨大的优越性—控制简单,方便,快捷。 STC89C52RC 是采用 8051 核的 ISP(In System Programming)在系统可编程芯片, 最高工作时钟频率为 80MHz,片内含 8K Bytes 的可反复擦写 1000 次的 Flash 只读程序 存储器,器件兼容标准 MCS-51 指令系统及 80C51 引脚结构,芯片内集成了通用 8 位中 央处理器和 ISP Flash 存储单元,具有在系统可编程(ISP)特性,配合 PC 端的控制 程序即可将用户的程序代码下载进单片机内部,省去了购买通用编程器,而且速度更 快。STC89C52RC 系列单片机是单时钟/ 机器周期(1T)的兼容 8051 内核单片机,是高 速/ 低功耗的新一代 8051 单片机,拥有全新的流水线 / 精简指令集结构, 内部集成 MAX810 , 有较为强大的控制功能及可位寻址操作功能, 价格低廉等优点。 而且体积小, 程序空间大。综合考虑,最终决定采用 STC89C52 单片机。

2.2 信息采集模块
采用激光测距距离远,精度高,但是成本夜相应太高。故放弃该方案。 采用 HC-SR04 超声波传感器,将传感器置于前侧发射超声波信号,接受超声波信 号来感知障碍物,探测距离。由单片对距离进行判断,然后对采集的数据加以处理。
1

而且收发一体,控制简单,精度高,价格低廉。

2.3 显示模块的选择
采用字符液晶 LCD1602 显示信息,1602 是一款比较通用的字符液晶模块,能显示 字符和数字等信息,且价格便宜,容易控制。显示模块采用的是液晶 LCD1602 。也叫 1602 字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它 由若干个 5X7 或者 5X11 等点阵字符位组成,每个点阵字符位都可以显示一个字符,每 位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正 因为如此所以它不能很好地显示图形(用自定义 CGRAM,显示效果也不好) 。1602LCD 是指显示的内容为 16X2,即可以显示两行, 每行 16 个字符液晶模块 (显示字符和数字) 。

2.4 计算机串口
此次串口采用 51 单片机下载软件的串口调试助手, 设置波特率 4800, 数据位为 8, 停止位为 1.打开串口为接收模式,计算机串口就能接收到数据。点击清空接受区,能 将接收区清空,继续重新接收。如图 2-1 所示:

图 2-1 串口调试助手

2

三 总体设计及电路图 3.1 主板总体设计框图
该系统由五个部分组成:时钟电路、复位电路、驱动电路、检测电路、转向电路。 时钟电路和复位电路为单片机工作提供基本动力。驱动部分使小车能够运动起来。检 测电路对前方道路障碍情况。 ,其根本是对数据进行采集。智能车系统主框图和所需原 件清单如图 3-1 所示:
显示模块

时钟电路

STC89C52

距离检测电路

复位电路

数据传输部分

图 3-1 主板设计框图

3.2 信号检测模块
所用测距模块为 HC-SR04 超声波测距模块,通过发射超声波和接收超声波,利用 定时器计算路程时间来实现对障碍的普安段。实物和引脚如图 3-2 所示。工作原理的 时序图如图 3-3 和模拟工作图如图 3-4 所示.

3

图 3-2 HC-SR04 实物引脚图 1.引脚功能 .VCC .Trig .Echo .GND 电源端 控制端 接收端 公共地

图 3-3 超声波时序图

4

图 3-4 模拟工作图 2.工作原理: (1)采用 IO 口 TRIG 触发测距,给至少 10us 的高电平信号; (2)模块自动发送 8 个 40khz 的方波,自动检测是否有信号返回; (3)若有信号返回,通过 IO 口 ECHO 输出一个高电平,高电平持续的时间就是超声 波从发射到返回的时间 测试距离 = (高电平时间 * 声速(340M/S)/2); 超声波测距模块由单片机控制,分为发射和接受部分并由定时器进行驱动,每隔 一定的时间发射超声波。超声波信号遇到障碍物反射回来被接收器接收,通过放大处 理反馈到单片机进而完成测距任务。定时器流程图如图 3-5 所示。图 3-6 为超声波发 射和接收电路图。

图 3-5

定时器中断子程序
5

图 3-6

超声波发射和接收

3.3 显示模块
采用字符液晶 LCD1602 显示信息,1602 是一款比较通用的字符液晶模块,能显示 字符和数字等信息,且价格便宜,容易控制。引脚图如 3-7 所示:

图 3-7 液晶显示电路 LCD1602 的主要技术参数: 1、显示容量:16×2 个字符
6

2、芯片工作电压:4.5—5.5V 3、工作电流:2.0mA(5.0V) 4、模块最佳工作电压:5.0V 5、字符尺寸:2.95×4.35(W×H)mm 引脚功能说明 LCD1602 采用标准的 14 脚(无背光)或 16 脚(带背光)接口,各引脚接口说明如 表 3-1 所示:

编号 1 2 3 4 5 6 7 8

符号 VSS VDD VL RS R/W E D0 D1

引脚说明 电源地 电源正极 液晶显示偏压 数据/命令选择 读/写选择 使能信号 数据 数据

编号 9 10 11 12 13 14 15 16

符号 D2 D3 D4 D5 D6 D7 BLA BLK

引脚说明 数据 数据 数据 数据 数据 数据 背光源正极 背光源负极

表 3-1 引脚接口说明 引脚接口说明表: 第 1 脚:VSS 为地电源。 第 2 脚:VDD 接 5V 正电源。 第 3 脚:VL 为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度 最高,对比度过高时会产生“鬼影”,使用时可以通过一个 10K 的电位器调整对比度。 第 4 脚: RS 为寄存器选择, 高电平时选择数据寄存器、 低电平时选择指令寄存器。

7

第 5 脚:R/W 为读写信号线,高电平时进行读操作,低电平时进行写操作。当 RS 和 R/W 共同为低电平时可以写入指令或者显示地址,当 RS 为低电平 R/W 为高电平时可 以读忙信号,当 RS 为高电平 R/W 为低电平时可以写入数据。 第 6 脚:E 端为使能端,当 E 端由高电平跳变成低电平时,液晶模块执行命令。 第 7~14 脚:D0~D7 为 8 位双向数据线。 第 15 脚:背光源正极

四 元器件清单
元器件清单如表4-1所示: 元件序号 1 2 4 5 6 8 9 10 11 12 13 型号 STC89C52 LCD1602 HC-SR04 12M 晶振 22pf 电容 10uf 电容 10k 排阻 USB 线 自锁开关 六脚 DC-002 电源插座 杜邦线 数量(个) 1 2 1 1 2 1 8 1 1 1 若干 表4-1元件清单 主要参数 Ω HZ F F Ω -

五 元器件识别与检测 5.1 电阻的识别与检测
1.色环电阻的识别方法

8

色环电阻的识别方法是指电阻上面用了四道色环或者五道色环或者六道色环来表 示电阻值 。可以从任意角度一次性的读取代表电阻值的颜色信息。先找标志误差的色 环,从而排定色环顺序。最常用的表示电阻误差的颜色是:金、银、棕,尤其是金环 和银环,一般绝少用做电阻色环的第一环,所以在电阻上只要有金环和银环,就可以 基本认定这是色环电阻的最末一环。具体识别如图 5-1 所示:

图5-1 2.排阻的识别方法 在标示的三位数字中,从左至右的第一、第二位为有效数字,第三位表示前两位 数字乘 10 的 N 次方(单位为Ω )。如果阻值中有小数点,则用“R”表示,并占一位有 效数字。例如:标示为“103”的阻值为 10×10^3=10kΩ ;标示为“222”的阻值为 22 ×10^2=2.2kΩ ;标示为“105”的阻值为 10×10^5=1MΩ 。需要注意的是,要将这种标 示法与一般的数字表示方法区别开来,如标示为 220 的电阻器阻值为 22×10^0=22Ω , 只有标志为 221 的电阻器阻值才为 220Ω 。标示为“0”或?000”的排阻阻值为 OΩ , 这种排阻实际上是跳线(短路线)。一些精密排阻采用四位数字加一个字母的标示方法 (或者只有四位数字)。前三位数字分别表示阻值的百位、十位、个位数字,第四位数 字表示前面三个数字乘 10 的 N 次方,单位为欧姆;数字后面的第一个英文字母代表误 差(G=2%、F=1%、D=0.25%、B=O.1%、A 或 W=0.05%、Q=0.02%、T=0.01%、V=0.005%)。 如标示为“2341”的排阻的电阻为 234×10=2340Ω 。 3.电阻的检测方法 用万用表检测固定电阻器。在用表测量前,需对万用表调零,选择要使用的挡位, 将红、黑两根表笔短接,调节调零螺母使表头指针阻值为零,然后用表笔接被测固定 电阻器的两个引出端,此时表头指针偏转的指示值,即为被测电阻器的阻值。如果指 针不摆动,则可将万用表换到阻值较大挡位,并重新调零后再次测量。
9

注意:1.在路检测时,一定要切断机器的电源,否则测量不准.而且容易损坏万用表; 2.开检测时人体手指不要同时碰到万用表的两支表棒,也不要碰到被测固定电阻器的 两根引脚,以免影响测量结果。

5.2 二极管三极管识别与检测
1.常用三极管的识别 常用三极管封装形式有金属封装和塑料封装两大类,引脚的排列方式具有一定的 规律,对于金属外壳三极管,底视图位置放置,使三个引脚构成等腰三角形的顶点从 左向右依次为 e b c;对于塑料外壳三极管使其平面朝向自己,三个引脚从左到右依次 为 e b c。 2.二极管检测方法 利用数值万用表测电阻档,分别用红黑表笔接二极管两端,若电阻无穷大则红 笔为二极管负极,反之为正极。 3.三极管的检测方法 利用指针型万用表可以判三极管的类型和极性,其步骤如下: ①判断基极 B 和管型时万用表置 R×1K 档,先将红表笔接某一假定基极 B,黑表笔 分别接另两个极,如果电阻均很小(或很大) ,则假定的基极是正确的。基极确定后, 红笔接基极,黑笔分别接另外两个电极时测得的电阻均小,则此管为 NPN 型三极管, 反之为 PNP 型。②判断发射极 E。若被测管为 PNP 三极管,假定红笔接的是 C 极,黑笔 接的是 E 极。用手指捏住 B、C 两极(或在 B、C 间串接一个100KΩ 电阻)但不要使 B、 C 直接接触。若测得电阻较小,则红笔接的是集电极 C,黑笔接的是发射极 E。如果两 次测得的电阻相差不大说明管子的性能较差。按照同样方法可以判别 NPN 型三极管的 极性。③利用数字型万用表测量三极管的电流放大倍数β : 将功能开关置於 hFE 档。 对 NPN 三极管,将发射极(e) 、基极(b)和集电极(c)分别插入管插座 NPN 边的 e、 b 和 c 孔中,显示器显示的数字即是三极管的电流放大倍数β 。对 PNP 三极管,同样将 发射极(e) 、基极(b)和集电极(c)分别插入管插座 PNP 边对应的 e、b 和 c 孔中, 显示器显示的数字即是该管的电流放大倍数β 。

10

5.3 电容的识别与检测
电容器的好坏可用万用表的电阻挡检测。检测时,据电容器容量的大小,100μ F 以上的电容器用“R×100”挡,1~100μ F 的电容器用“R×1k”挡,1μ F 以下的电容 器用“R×10k”挡。用万用表的两表笔(不分正、负)分别去与电容器的两引线相接, 在刚接触的一瞬间,表针应向右偏转,然后缓慢向左回归。对调两表笔后再测,表针 应重复以上过程。电容器容量越大,表针右偏越大,向左回归也越慢。对于容量检测 时,如果万用表表针不动,说明该电容器已断路损坏;如果表针向右偏转后不向左回 归,说明该电容器已短路损坏;如果表针向左回归稳定后,阻值指示小于500kΩ ,说 明该电容器漏电较大,也不宜使用。

5.4 单片机的识别与检测
1.用万用表测量单片机的 Vcc 与 GND 两脚,测量工作电压是否正常,日前常用的 单片机电压一般为 5V 或者 3.3V,若电压不在这两个值可能是供电出现问题。 2.看单片机的复位电路,主要观察复位电路电容、电阻值是否与给定的相关数值 相符合。 3.观察晶振及两个电容, 看数值是否正确, 用万用表测量单片机晶振的两个管脚, 大约 2.092V 左右。一般来说,电源正常,复位电路正常,晶振起振,单片机都能正常 工作,但也不能排除单片机内部存在的问题,如果条件允许,可自行写个个小程序进 行测试。

六 硬件制作与调试 6.1 检查元件
按电路图买好元件后首先检查买回元件的好坏,按各元件的检测方法分别检测, 一定要仔细认真。而且要认真核对原理图是否一致,在检查好后才可上件,焊件,防 止出现焊错,虚焊。

11

6.2 焊接元件
按原理图的位置放置各元件,在放置过程中要先放置,焊接较低的元件,后焊较 高的和要求较高的元件。特别是容易损坏的元件要后焊,在焊集成芯片时连续焊接时 间不要超过 10s,注意芯片的安装方向。 在焊接最小系统完毕的时候,发现并不好用,但是检查发现并没有什么问题,后 来上网查了一下才知道原来是 P0 口没有接上拉电阻。然后进行了改进,最终实现了功 能。 还有一个问题就是 LCD 液晶的 VO 口要接一个电位器, 而且要调整好电位器的阻值, 不然很有可能出现液晶屏幕不显示的情况,即使你所有部分都没有问题。

6.3 电路的调试
首先烧入程序,液晶显示距离正常和计算机串口接收数据显示正常。说明实验是 成功的。调节传感器的位置,液晶屏显示不同的距离,计算机串口夜同步显示距离。 在调试程序时,发现有的指令用的不正确,导致电路功能不能够完全实现,另外软件 程序中的延时有的过长,有的过短以及其它一些可能产生影响的程序要注意一下。还 有就是注意液晶的电位器调节,否则可能显示不了数据。

6.4 结果显示
数据在液晶屏上显示结果,第一行显示‘the meter is; ’第二行显示数据和一个 ‘米’字。数据在小于 7 米的范围内会正常显示,大于这个范围,就会显示 Error 提 示测量超出范围。点击关闭会停止数据的传输和接收。结果如图 6-1 所示:

12

图 6-1 计算机串口数据显示

七 设计心得
经过几天的学习和研究,我明白了一些比较复杂的电路设计和基本原理,并且通 过自己亲手焊接电路板,提高了自己的动手能力。在今后的学习生活中,我定会更加 的努力,在老师的指导下学习更多的知识努力的培养自己各方面,尤其是独立思考的 能力,争取更好的成绩。 在后面的电路设计和程序设计过程中,虽然出现了一些大大小小的问题,但是最 终都得到了解决。 最大的体会就是进一步认识到了理论联系实践的重要性。 一份耕耘, 一份收获。通过这段时间的设计,让我明白科学的思维方法和学习方法是多么重要, 只有这样才能够有很高的效率,才能够让自己的工作更完美。总而言之,此次课程设 计让我学到了好多平时在课堂上学不到的东西,增加了我的知识运用能力,增强我的 实际操作能力。谢谢老师给我们提供这么好的机会,为我们之后走向社会奠定了一个 好的基础。 此次作品设计的成功离不开老师的指导和同学们的帮助, 。他们给我提了很多宝贵 的建议,指出了设计上的不足。尤其胡瑞感谢老师,在这一学期里给了我很多指导。 还有我的同学李浩斌,帮我解决了很多难题。在这里向所有帮助我的老师和同学们道
13

一声感谢。

八 参考文献
【1】 李群芳,张士军, 黄建.单片微型计算机与接口技术. 北京: 电子工业出版社, 2008 【2】李群芳.单片机原理接口与应用.北京:清华大学出版社,2005 【3】张迎新.单片微型计算机原理、应用及接口技术.北京:国防工业出版社,1999 【4】高峰.单片微机应用系统设计及使用技术.北京:机械工业出版社,2007 【5】 彭伟.单片机 c 语音程序设计实例基于 protues 仿真.北京: 电子工业出版社, 2007 【6】张冬林,李鑫,戴梅.基于 DHT11 的低成本蚕室温湿度自动控制系统设计[J].现 代农业科技,2010, (18):14-15 . 【7】徐春河.浅谈 AT89S51[J].制造业自动化,2010, (12) :80-82. 【8】吴汉清.常用的典型单片机资料[J].无线电,2007,(11):72-80. 【9】叶健斌.基于单片机嵌入式系统的 GPS 应用[J].电子质量,2008,(7):16-24.

14

附录一

整机电路图

15

* 函数功能

: 主函数 : 无 : 无

附录二

程序

* 输 * 输

入 出

主程序和超声波测距 #include<reg51.h> #include<intrins.h> #include"lcd.h" sbit Trig = P2^3; sbit Echo = P2^2;

*********************************** *********************************** *********/ void Conut(void) { unsigned char i; time=TH0*256+TL0; TH0=0;

uchar CNCHAR[6] = "米"; //void LcdDisplay(int); unsigned char PuZh[]=" The meter is "; unsigned char code ASCII[15] = 是 CM

TL0=0;

S=(time*1.7)/100;

// 算出来

{'0','1','2','3','4','5','6','7','8 ','9','.','-','M'};

if((S>=700)||flag==1) // 超 出 测 量范围显

static unsigned char DisNum = 0; // 显示用指针 unsigned int time=0;

示“-” { flag=0;

unsigned long S=0; bit flag =0; DisplayOneChar(0, ASCII[11]); SBUF = 'E';//将接收到的数据放 入到发送寄存器 while (!TI); 等待发送数据完成 TI = 0; DisplayOneChar(1, 1, ASCII[10]); * 函 数 名 : main
16

1,

unsigned char disbuff[4] ={ 0,0,0,0,}; /********************************** *********************************** **********

//

//显示点

SBUF = 'r';//将接收到的数据放 入到发送寄存器 while (!TI); 等待发送数据完成 TI = 0; DisplayOneChar(2, ASCII[11]); SBUF = 'r';//将接收到的数据放入 到发送寄存器 while (!TI); 等待发送数据完成 TI = 0; DisplayOneChar(3, ASCII[11]); SBUF = 'o';//将接收到的数据放 入到发送寄存器 while (!TI); 等待发送数据完成 TI = 0; DisplayOneChar(4, 1, ASCII[12]); //显示 M SBUF = 'r';//将接收到的数据放 入到发送寄存器 while (!TI); 等待发送数据完成 TI = 0; } else { disbuff[0]=S%1000/100;
17

disbuff[1]=S%1000%100/10; disbuff[2]=S%1000%10 %10;

//

DisplayOneChar(0, ASCII[disbuff[0]]);

1,

SBUF = '0'+disbuff[0];// 将接 1, 收到的数据放入到发送寄存器 while (!TI); 等待发送数据完成 TI = 0; // DisplayOneChar(1, 1, ASCII[10]); //显示点 SBUF = '.';//将接收到的数据放 1, 入到发送寄存器 while (!TI); 等待发送数据完成 TI = 0; // DisplayOneChar(2, ASCII[disbuff[1]]); SBUF = '0'+disbuff[1];// 将接 收到的数据放入到发送寄存器 while (!TI); 等待发送数据完成 TI = 0; // DisplayOneChar(3, ASCII[disbuff[2]]); SBUF = '0'+disbuff[2];// 将接 收到的数据放入到发送寄存器 while (!TI); 等待发送数据完成 TI = 0; // 1, // 1, // //

DisplayOneChar(4, 1, ASCII[12]); //显示 M

_nop_(); _nop_(); _nop_(); _nop_();

for(i=0; i<2; i++) { SBUF = CNCHAR[i];//将接收到的 数据放入到发送寄存器 while (!TI); //等待发送数据完成 TI = 0; }

_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();

} }

_nop_(); _nop_(); _nop_();

void zd0() interrupt 1

//T0 中

_nop_(); _nop_(); _nop_();

断用来计数器溢出,超过测距范围 { flag=1; //中断溢出标志 } }

Trig=0;

void

StartModule() void delayms(unsigned int ms) { Trig=1; unsigned char i=100,j; for(;ms;ms--) { while(--i)
18

//启动模块 {

//启动一次模块 _nop_(); _nop_();

{ j=10; while(--j); } } } InitLcd1602(); LcdShowStr(0,0,PuZh); while(1) { StartModule(); while(!Echo); void main(void) { SCON=0X50; 作方式 1 TMOD=0X21; 作方式 2 PCON=0X80; TH1=0XF3; //波特率加倍 // 计 数 器 初 计数 Conut(); delayms(80); } // 打 开 } // 打 开 //计算 // 设置计数器工 // 设 置 为 工 计数 while(Echo); 为 1 计数并等待 TR0=0; // 关 闭 // 当 RX 为零时等待 TR0=1; // 开 启 // 当 RX

始值设置,注意波特率是 4800 的 TL1=0XF3; // ES=1; 接收中断 // EA=1; 总中断 TR1=1; 器 //TMOD=0x01; 式 1,GATE=1; TH0=0; TL0=0; ET0=1; 断 EA=1; //开启总中断
19

// 打 开 计 数 液晶显示部分 //设 T0 为方 #include"lcd.h"

//允许 T0 中

void Read_Busy()

// 忙检测

函数,判断 bit7 是 0,允许执行;1 禁止 {

unsigned char sta; LCD1602_DB = 0xff; LCD1602_RS = 0; LCD1602_RW = 1; do {

//

LCD1602_RW = 0; LCD1602_DB = dat; LCD1602_EN = 1; LCD1602_EN = 0; }

void LCD1602_EN = 1; sta = LCD1602_DB; LCD1602_EN = 0; 用完就拉低,释放总线 }while(sta & 0x80); } // 使能,

LcdSetCursor(unsigned //坐标显示

char

x,unsigned char y) {

unsigned char addr; if(y == 0) addr = 0x00 + x; else addr = 0x40 + x;

void Lcd1602_Write_Cmd(unsigned char cmd) { Read_Busy(); LCD1602_RS = 0; LCD1602_RW = 0; LCD1602_DB = cmd; LCD1602_EN = 1; LCD1602_EN = 0; } //按指定位置显示一个字符 void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData) { Y &= 0x1; X &= 0xF; //限制 X 不能大于 15,Y 不能大于 1 void Lcd1602_Write_Data(unsigned //写数据 if (Y) X |= 0x40; //当要显示第二 行时地址码+0x40; X |= 0x80; //算出指令码 Read_Busy(); LCD1602_RS = 1;
20

//写命令 }

Lcd1602_Write_Cmd(addr|0x80);

char dat) {

Lcd1602_Write_Cmd(X); //发命令字 Lcd1602_Write_Data(DData); // 发

数据 }

#ifndef __LCD_H_ #define __LCD_H_ /********************************** 当使用的是 4 位数据传输的时候定义,

void

LcdShowStr(unsigned

char

使用 8 位取消这个定义 **********************************/ #define LCD1602_4PINS

x,unsigned char y,unsigned char *str) //显示字符串 { LcdSetCursor(x,y); 字符的坐标 while(*str != '\0') { Lcd1602_Write_Data(*str++); } } // 当前

/********************************** 包含头文件 **********************************/ #include<reg51.h>

//---重定义关键词---// #ifndef uchar #define uchar unsigned char

void //1602 初始化 {

InitLcd1602()

#endif

#ifndef uint Lcd1602_Write_Cmd(0x38); // #define uint unsigned int #endif

打开,5*8,8 位数据 Lcd1602_Write_Cmd(0x0c); Lcd1602_Write_Cmd(0x06); Lcd1602_Write_Cmd(0x01); 清屏 } //

/********************************** PIN 口定义 **********************************/ #define LCD1602_DB bus 数据总线 sbit LCD1602_RS = P2^6; P0 //data

头文件部分

sbit LCD1602_RW = P2^5; sbit LCD1602_EN = P2^7;
21

char dat); /********************************** 函数声明 **********************************/ /*在 51 单片机 12MHZ 时钟下的延时函数 */ void Lcd1602_Delay1ms(uint c); 误差 0us // void

//写数据 char

LcdSetCursor(unsigned //坐标显示

x,unsigned char y); void

LcdShowStr(unsigned

char

x,unsigned char y,unsigned char *str); //显示字符串 void //1602 初始化 void DisplayOneChar(unsigned char X, InitLcd1602();

void Read_Busy();

//忙检测

unsigned char Y, unsigned char DData);

函数,判断 bit7 是 0,允许执行;1 禁止 void Lcd1602_Write_Cmd(unsigned char cmd); void //写命令 Lcd1602_Write_Data(unsigned #endif

22


相关文章:
电子测量课程设计报告
电子测量课程设计报告_工学_高等教育_教育专区。电子测量课程设计报告学 院: 专业: 姓名: 班级: 学号: 指导教师: 电子电气工程学院 电子信息科学与技术 罗涛 ...
电子测量课程设计
电子测量课程设计_工学_高等教育_教育专区。目 录 一、设计要求...目 录 一、设计要求......
电子测量课程设计
七、设计心得通过本次的电子测量课程设计,折腾了我两天的时间去完成,本来心情很愉 快地以为不就是个数字电压表吗, 应该很容就会做成, 但是最终却以失败而告终。...
电子测量的课程设计
………..10 数字钟的设计 数字钟的设计一、 总述 随着电子技术飞速的发展,越来越多的电子产品应运而生,慢慢的简单、精确、 微小,一步一步接近于高新技术。...
电子测量课程设计
《电气测量技术课程设计》是继《电子技术》、和《单片机原理与 应用》课程之后开出的实践环节课程,其目的和任务是训练学生综合运用已学课程电气测量技术 的基本知识,...
电子测量课程设计
课程设计报告 题目: 题目: 直流数字电压表 院(系) 电气工程学院 :专业:电子 3 班 学生姓名:张 XX 学号: 2009447 指导教师:李老师 写作日期:2011 年 12 月...
电子测量与电子电路实验课程设计_图文
电子测量与电子电路实验课程设计_工学_高等教育_教育专区 暂无评价|0人阅读|0次下载|举报文档电子测量与电子电路实验课程设计_工学_高等教育_教育专区。电子测量与...
电子测量的课程设计
电子测量课程设计 电子测量方面的 设计数字钟的分析原理结合高等专科院校的电子测量方面的 知识设计出的关于数字钟的设计简单实用电子测量方面的 设计数字钟的分析原...
电子测量课程设计1
电子测量课程设计1_工学_高等教育_教育专区。电子测量实习课程设计《电子测量技术》课程实习指导书 电子测量技术》课程名称(中文) :电子测量技术 课程名称(英文) :...
电子测量课程设计
15 1 沈阳理工大学课程设计专用纸一、 设计要求 1, 学以致用。 2, 3, 4, 5, 6, 将电子测量课程所学的测量原理, 数据处理, 误差分析等知识用于实践, ...
更多相关标签: