超声波测距报告

合集下载

超声波测距实验报告

超声波测距实验报告

超声波测距实验报告1. 实验目的1.掌握超声波测距的基本原理;2.熟悉超声波测距仪器的使用;3.培养实验操作能力和数据处理能力。

2. 实验原理超声波测距是利用超声波在空气中的传播速度和反射原理,通过测量超声波发射和接收之间的时间间隔来计算被测物体与测距仪之间的距离。

超声波在空气中的传播速度约为 340 m/s。

3. 实验器材与步骤3.1 器材1.超声波测距仪;2.连接线;3.测量物体。

3.2 步骤1.连接超声波测距仪与电源;2.打开超声波测距仪,进行自检;3.将测量物体放置在合适的位置;4.调整超声波测距仪的测量范围;5.记录测量数据;6.分析数据,计算距离。

4. 实验数据与分析本实验共进行五次测量,记录数据如下:序号 | 测量距离(cm) | 误差(cm) |— | ———— | ——– |1 | 150.0 | 2.0 |2 | 152.5 | 1.5 |3 | 148.0 | 2.0 |4 | 151.0 | 1.0 |5 | 149.5 | 1.5 |平均距离 = (150.0 + 152.5 + 148.0 + 151.0 + 149.5) / 5 = 150.0 cm最大误差 = 2.0 cm最小误差 = 1.0 cm5. 实验总结本次实验掌握了超声波测距的基本原理和操作方法,通过对测量数据的分析,得出被测物体与测距仪之间的平均距离为 150.0 cm,最大误差为 2.0 cm,最小误差为 1.0 cm。

实验结果表明,超声波测距技术在实际应用中具有较高的准确性和可靠性。

6. 建议与改进1.在实验过程中,要确保测量物体与测距仪之间的距离在测距仪的测量范围内;2.提高实验操作技巧,减小人为误差;3.后续可以尝试使用不同类型的超声波测距仪进行实验,比较其性能和精度。

7. 实验拓展7.1 超声波测距的应用领域超声波测距技术广泛应用于工业、农业、医疗、交通、安防等领域,例如:1.工业领域:测量物体的尺寸、厚度、距离等;2.农业领域:测量土壤湿度、作物高度等;3.医疗领域:测量人体内部器官的距离、厚度等;4.交通领域:车辆测距、速度检测等;5.安防领域:监控设备、报警系统等。

超声波雷达测距实训报告

超声波雷达测距实训报告

一、实训目的本次实训旨在通过实际操作,了解超声波雷达测距的原理和实现方法,掌握超声波传感器的基本使用技巧,并学会利用STM32单片机进行数据处理和显示,从而完成一个简单的超声波雷达测距系统。

二、实训器材1. STM32F103单片机开发板2. HC-SR04超声波传感器模块3. OLED显示屏4. 连接线5. 电源三、实训原理超声波雷达测距的原理是利用超声波在空气中的传播速度来测量距离。

当超声波传感器发射超声波时,它会遇到障碍物后反射回来,通过测量超声波从发射到接收的时间差,可以计算出障碍物与传感器之间的距离。

四、实训步骤1. 硬件连接:- 将HC-SR04超声波传感器模块的两个引脚分别连接到STM32单片机的GPIO引脚。

- 将OLED显示屏的相应引脚连接到STM32单片机的SPI或I2C接口。

- 将电源连接到STM32单片机和超声波传感器模块。

2. 软件设计:- 编写STM32单片机的初始化程序,配置GPIO引脚、SPI/I2C接口等。

- 编写超声波传感器的控制程序,用于控制超声波传感器的发射和接收。

- 编写数据处理程序,用于计算超声波从发射到接收的时间差,从而得到距离值。

- 编写OLED显示屏的显示程序,用于显示距离值。

3. 程序实现:- 使用STM32 HAL库函数或直接操作寄存器来实现程序。

- 通过定时器中断来实现超声波传感器的时序控制。

- 使用查表法或直接计算法来实现距离值的转换。

4. 系统测试:- 将系统放置在测试环境中,调整测试距离,观察OLED显示屏上显示的距离值是否准确。

- 分析测试结果,找出系统误差的来源,并进行优化。

五、实训结果与分析1. 测试结果:- 在不同的测试距离下,OLED显示屏上显示的距离值与实际距离基本相符,说明系统具有较高的测量精度。

2. 误差分析:- 超声波在空气中的传播速度受温度、湿度等因素的影响,导致测距误差。

- 超声波传感器的响应时间存在一定的延迟,也会导致测距误差。

超声波测距总结报告

超声波测距总结报告

电子技术实验课程设计超声波测距系统总结报告自03胡效赫2010012351一、课题内容及分析首先根据课程所给的几个题目进行选择,由于自己最近在做电子设计大赛的平台设计,希望对超声波测距在定位方面应用有更详尽的了解,所以选择课题三——超声波测距作为课程设计,内容如下:对课题进行分析:实验提供超声波传感器T40-16和R40-16,利用面包板和小规模芯片搭接电路,实现距离的测量及显示。

大致思路即驱动发射端发出超声波,接收端收到返回的脉冲进行处理与计算得到测量距离并通过数码管和蜂鸣器显示。

二、方案比较与选择由于超声波测距方案原理基本相同,只要能够检测出发射到接收的时间,并通过相应计算就可以得到所测距离。

所以问题大致分为驱动发射端、接收端检测、间隔时间计算与计算结果显示四部分。

具体的方案设计如下:闸门脉冲源产生基准宽度为T 的闸门脉冲,该脉冲一方面控制计数电路的计数启动和并产生计数器清零脉冲,使计数器从零开始对标准脉冲源输出的时钟脉冲(频率为17KHz)计数。

同时开启控制门,超声波振荡器输出的40kHz脉冲信号通过控制门,放大后送至超声波换能器,由发射探头转换成声波发射出去。

该超声波经过一定的传播时间,达到目标并反射回来,被超声波换能器的接收探头接收变成电信号,经放大、滤波、电压比较和电平转换后,还原成方波。

图中的脉冲前沿检测电路检测出第一个脉冲的前沿,输出控制信号关闭计数器,使计数器停止计数。

则计数器的计数值反映了超声波从发射到接收所经历的时间(或距离)。

三、模块化设计及参数估算1、闸门控制模块●设计思路555振荡电路产生频率为2Hz的脉冲,作为闸门脉冲源。

RC微分电路将输出的2Hz脉冲进行微分运算产生脉冲信号,作为计数启动和计数清零的信号,分别控制D触发器的置高端和74LS90的清零端。

●参数设计:555振荡电路T = (R1+2*R2)*C*ln2。

其中R1取4.7kΩ,R2接入10kΩ滑动变阻器,最后实测7.51kΩ,C取47uF。

超声波测距实验报告

超声波测距实验报告

目录1、课题设计的目的和意义 (3)2、课题要求 (3)2.1、基本功能要求 (3)2.2、提高要求 (4)3、重要器件功能介绍 (4)3.1、CX20106A红外线发射接收专用芯片 (4)3.2、AT89C51系列单片机的功能特点 (5)3.3、ISD1700优质语音录放电路 (6)4、超声波测距原理 (8)4.1、超声波测距原理图 (8)4.2、超声波测距的基本原理 (9)5、硬件系统设计 (10)5.1、超声波发射单元 (10)5.2、超声波接收单元 (11)5.3、显示单元 (11)5.4、语音单元 (12)5.5、硬件设计中遇到的难题: (12)6、系统软件设计 (14)7、调试与分析 (15)7.1调试 (15)7.2误差分析 (15)8、总结 (16)9、附件 (17)9.1、总电路 (17)9.2、主要程序 (18)10、参考文献 (22)1课题设计的目的及意义随着科学技术的快速发展,超声波在测距仪中的应用越来越广,但就目前技术水平而言,人们可以利用的测距技术还十分有限,因此,这是一个正在蓬勃发展而又有无限前景的技术及产业领域。

展望未来,超声波测距作为一种新型的非常重要有用的工具在各方面都有很大的发展空间,它将朝着更加高定位高精度的方向发展,以满足日益发展的社会需求。

如声纳的发展趋势:研究具体的高定位精度的被动测距声纳,以满足军事和渔业等的发展需求,实现远程的被动探测和识别。

毋庸置疑,未来的超声波测距仪将与自动化智能化接轨,与其他的测距仪集成和融合,形成多测距仪。

超声波测距在某些场合有着显著的优点,因为这种方法是利用计算超声波在被测物体和超声波探头之间的传输来测量距离的,因此它是一种非接触式的测量,所以他就能够在某些场合或环境比较恶劣的环境下使用。

比如测有毒或者有腐蚀性化学物质的液面高度或者高速公路上快速行驶汽车之间的距离。

随着测距仪的技术进步,测距仪将从具有单纯判断功能发展到具有学习功能,最注重发展到具有创造力。

超声波测距 实验报告

超声波测距 实验报告

Q1
40106
图 6
7490 芯片的时钟接前一位的 Q3。最低位 7490 芯片的时钟接 17kHz TTL 方波(由信号 发生器提供)和闸门波形相与(或者相与非)的结果。闸门波形由下图所示的电路产生:
1 发(Q1)
D
SET
Q
Q3
CLR

Q

图 7
4、报警电路。
图 8
此部分的功能是通过存储器(用 74161 芯片)保存计数值,在报警时间(如图 8)内用 组合逻辑电路对计数值进行比较。若计数值小于 30(cm) (且小于存储器中的值) ,则利用
实验日期 2010-7-13~2010-7-15
实验室
222
座位号
23
清华大学电子工程系
电子技术课程设计 实验报告
超声波测距系统
班级 无 82 学号 2008011098 姓名 刘硕 交报告日期 2010-7-17
【实验任务】
1. 测量距离不小于 0.5m 米,数字显示,动态更新测量结果,更新时间约 1 秒。测量精 度优于 0.05m,显示精度 0.01m。 2.测量距离不小于 1.0m 米,数字显示,动态更新测量结果,更新时间约 1 秒。测量精 度优于 0.01m,显示精度 0.01m 3.测量距离不小于 2.0m 米,数字显示,动态更新测量结果,更新时间约 1 秒。测量精 度优于 0.01m,显示精度 0.01m 距离小于 0.3m 时,用蜂鸣片发出间歇式的“嘀一嘀”声响报 警。 4*.显示无跳动、闪烁,距离小于 0.3m 且距离变近时,用蜂鸣片发出间歇式的“嘀一嘀” 声响报警。
Ix<30cm Q3 BDC
图 10
实现距离小于 30cm 且距离变近报警的电路:

超声测距实验报告

超声测距实验报告

超声测距实验报告一、实验目的本次超声测距实验的主要目的是研究和掌握利用超声波进行距离测量的原理和方法,并通过实际操作和数据分析,评估测量系统的精度和可靠性。

二、实验原理超声波是一种频率高于 20kHz 的机械波,其在空气中传播时具有良好的指向性和反射特性。

超声测距的基本原理是利用超声波在发射后遇到障碍物反射回来的时间差来计算距离。

具体计算公式为:距离=(超声波传播速度×传播时间)/ 2 。

在常温常压下,空气中超声波的传播速度约为 340 米/秒。

通过测量超声波从发射到接收的时间间隔 t,就可以计算出距离。

三、实验仪器与材料1、超声测距模块:包括发射探头和接收探头。

2、微控制器:用于控制超声模块的工作和处理数据。

3、显示设备:用于显示测量结果。

4、电源:为整个系统供电。

5、障碍物:用于反射超声波。

四、实验步骤1、硬件连接将超声测距模块的发射探头和接收探头正确连接到微控制器的相应引脚。

连接电源,确保系统正常供电。

将显示设备与微控制器连接,以便显示测量结果。

2、软件编程使用相应的编程语言,编写控制超声模块工作和处理数据的程序。

实现测量时间的计算和距离的换算,并将结果输出到显示设备。

3、系统调试运行程序,检查系统是否正常工作。

调整发射功率和接收灵敏度,以获得最佳的测量效果。

4、测量实验将障碍物放置在不同的距离处,进行多次测量。

记录每次测量的结果。

五、实验数据与分析以下是在不同距离下进行多次测量得到的数据:|距离(米)|测量值 1(米)|测量值 2(米)|测量值 3(米)|平均值(米)|误差(米)||||||||| 05 | 048 | 052 | 050 | 050 | 000 || 10 | 095 | 105 | 100 | 100 | 000 || 15 | 148 | 152 | 150 | 150 | 000 || 20 | 190 | 205 | 195 | 197 | 003 || 25 | 240 | 255 | 245 | 247 | 003 || 30 | 290 | 305 | 295 | 297 | 003 |通过对实验数据的分析,可以看出在较近的距离(05 米至 15 米)内,测量误差较小,基本可以准确测量。

超声波测距仪实训报告

超声波测距仪实训报告

超声波测距仪实训报告一、实训目的本次超声波测距仪实训的主要目的是让我们深入了解超声波测距的原理和应用,通过实际操作和调试,掌握超声波测距仪的设计、制作和调试方法,提高我们的实践动手能力和解决问题的能力,同时培养我们的团队合作精神和创新思维。

二、实训原理超声波测距的原理是利用超声波在空气中的传播速度和往返时间来计算距离。

超声波发生器向某一方向发射超声波,在发射的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。

已知超声波在空气中的传播速度为 340 米/秒,根据计时时间 t 就可以计算出发射点距障碍物的距离 s,即 s = 340t/2。

三、实训设备与材料1、超声波传感器模块(包括发射探头和接收探头)2、单片机开发板3、显示屏4、杜邦线若干5、面包板6、电源适配器四、实训步骤1、硬件电路设计将超声波传感器模块与单片机开发板进行连接,使用杜邦线将发射探头连接到单片机的某个输出引脚,接收探头连接到单片机的某个输入引脚。

将显示屏连接到单片机的相应引脚,以便显示测量到的距离值。

2、软件编程选择合适的编程语言和开发环境,如 C 语言和 Keil 软件。

编写初始化程序,包括单片机引脚的配置、定时器的设置等。

编写超声波发射和接收的控制程序,实现超声波的发射和接收,并计算往返时间。

根据距离计算公式,将计算得到的距离值转换为合适的格式,并通过显示屏进行显示。

3、系统调试硬件调试:检查电路连接是否正确,电源是否正常,传感器是否工作正常等。

软件调试:通过单步调试、设置断点等方式,检查程序的执行流程和计算结果是否正确。

综合调试:将硬件和软件结合起来进行调试,不断修改和优化程序,直到系统能够稳定准确地测量距离。

五、实训过程中遇到的问题及解决方法1、测量误差较大问题描述:测量得到的距离值与实际距离存在较大偏差。

原因分析:可能是由于超声波在空气中的传播受到温度、湿度等环境因素的影响,也可能是由于硬件电路的干扰或者软件算法的不完善。

超声波测距实训报告结尾

超声波测距实训报告结尾

首先,通过本次实训,我们明白了超声波测距技术的原理和应用。

超声波测距仪利用超声波的传播特性,通过测量声波在介质中传播的时间,从而计算出目标物体的距离。

这种非接触式的测量方法,具有精度高、速度快、不受光照和介质影响等优点,在工业、农业、医疗、科研等领域有着广泛的应用前景。

在实训过程中,我们首先学习了超声波测距仪的组成及工作原理。

通过阅读相关资料,我们了解了超声波传感器、单片机、显示屏等关键部件的功能和作用。

在此基础上,我们通过实验验证了超声波在空气中的传播速度,为后续的测距计算奠定了基础。

接下来,我们学习了超声波测距仪的设计与制作。

在老师的指导下,我们完成了电路图的绘制、元器件的选型、电路板的制作和焊接等工作。

在这个过程中,我们遇到了许多困难,如电路板焊接不良、传感器参数不匹配等。

但在老师和同学的帮助下,我们逐一解决了这些问题,最终成功制作出了自己的超声波测距仪。

在测试阶段,我们进行了多次实验,测试了测距仪在不同距离、不同角度、不同环境下的测量精度。

实验结果表明,我们的超声波测距仪在距离范围内具有较高的测量精度,且稳定性较好。

此外,我们还尝试了不同的超声波传感器和单片机,发现不同的组合会对测量结果产生一定影响,这为我们后续的优化工作提供了参考。

在实训过程中,我们还学习了如何利用单片机编程控制超声波测距仪。

通过学习C 语言编程,我们掌握了单片机的基本原理和编程方法。

在编程过程中,我们学会了如何读取传感器数据、计算距离、显示结果等。

这些技能对我们今后的学习和工作具有重要意义。

总结本次实训,我们有以下几点收获:1. 深入了解了超声波测距技术的基本原理和应用领域;2. 提升了动手能力和解决问题的能力;3. 掌握了电路设计、焊接、编程等技能;4. 增强了团队合作意识和沟通能力。

当然,在实训过程中我们也发现了一些不足之处:1. 测距仪的测量精度有待提高;2. 软件功能较为简单,有待进一步优化;3. 实验环境对测量结果有一定影响,需要进一步研究。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机原理及应用课程设计报告题目二十七:超声波测距系统设计学生姓名专业学号同组同学指导教师学院二〇一六年七月2015-2016学年第二学期成绩:一、设计要求1.搭建单片机的最小系统;(基本项)2.选用超声波模块,设计模块与单片机的接口;(基本项)3.采用LCD显示器显示测量结果;(基本项)4.编写相应的程序;(基本项)5.提高测量精度的方法。

(创新项)二、设计题目介绍及分析使用MCS-51 系列单片机作为控制器,选用超声波模块,组建测距系统并显示结果。

三、设计方案论证通过循环来时时的对目标进行测距。

四、具体硬件设计说明蜂鸣器:通过PNP三极管驱动。

接到P3^2引脚。

按键:有键按下时IO口变为低电平。

开始按键连接到P3^1,P3^2的按键控制中断。

超声波模块:选用HC-SR04。

提供一个10uS以上脉冲触发信号,该模块内部将发出8个40kHz周期电平并检测回波。

一旦检测到有回波信号则输出回响信号。

回响信号的脉冲宽度与所测的距离成正比。

由此通过发射信号到收到的回响信号时间间隔可以计算得到距离。

超声波TRIG连接到P1^0,ECHO连接到P1^1。

LCD的E,RW,RS引脚分别接到单片机P2^7,P2^5,P2^6,P0口作为数据输出、五、软件设计说明发出超声波信号时开启定时器0,通过定时器计算回波信号持续时间进而计算出距离。

/******************************************************************************** 单片机课程设计* 题号: 27题,超声波测距* 组员:马铭阳,程岩,孔维士* 学号?30222204 130222206 130222207* 日期:2016年6月30日* 说明 KEY_START按下,程序执行,KEY1按下显示题号,持续10秒*******************************************************************************/#include<reg51.h>#include<intrins.h>#include<lcd.h>sbit Trig = P1^0; //超声波发送sbit Echo = P1^1; //超声波接收sbit key_start=P3^1; //开始按键sbit key1=P3^2; //中断按键sbit buzzer=P1^5; //蜂鸣器按键unsigned char code TABLE[] = " DISTANCE: ";unsigned char code ASCII[] ={'0','1','2','3','4','5','6','7','8','9','.','-','C','M',' '};unsigned char code CLASS[] = " NO.27 ";static unsigned char DisNum = 0; // unsigned int time=0;unsigned int i=0;unsigned int key_flag=0;long S=0;bit flag =0; //成功标志位unsigned char disbuff[4] ={ 0,0,0,0,};/********************************************************************* ************************************************************************************ *********///延时函数void delayms(unsigned int ms){unsigned char i=100,j;for(;ms;ms--){while(--i){j=10;while(--j);}}}//计算距离void Conut(void){time=TH0*256+TL0;TH0=0;TL0=0;S=(long)(time*0.17);if((S>=700)||flag==1){flag=0;LcdWriteData( ASCII[11]);LcdWriteData( ASCII[10]);LcdWriteData(ASCII[11]);LcdWriteData( ASCII[11]);LcdWriteData( ASCII[12]);buzzer=0;delayms(50);buzzer=1;}else{disbuff[3]=S%10000/1000;disbuff[2]=S%1000/100;disbuff[1]=S%100/10;disbuff[0]=S%10/1;LcdWriteData( ASCII[disbuff[3]]);LcdWriteData( ASCII[disbuff[2]]);LcdWriteData( ASCII[disbuff[1]]);LcdWriteData( ASCII[10]);LcdWriteData( ASCII[disbuff[0]]);LcdWriteData( ASCII[12]);LcdWriteData( ASCII[13]);}}//定时器0void zd0() interrupt 1 //触发时说明超出范围 {flag=1; //成功标志位置1}void inter() interrupt 0 //外部中断{LcdWriteCom(0x01);LcdWriteCom(0x80);for (i=0;i<7;i++){LcdWriteData(CLASS[i]);delayms(5);}delayms(100);LcdWriteCom(0x80);for (i=0;i<11;i++){LcdWriteData(TABLE[i]);delayms(5);}LcdWriteCom(0x80+0x46);}//超声波发射void StartModule(){Trig=1; //发脉冲_nop_(); //用NOP函数时间更精准 _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();Trig=0;}void key_board0(void) //按键扫描程序{while(1){if(key_start==0){delayms(10);if(key_start==0){while(!key_start);key_flag=1;break;}}else if(key1==0){delayms(10);if(key1==0){while(!key1);key_flag=2;break;}}}void key_board1(void){if(key_start==0){delayms(10);if(key_start==0){while(!key_start);key_flag=1;}}if(key1==0){delayms(10);if(key1==0){while(!key1);key_flag=2;}}}void main(void){P1 = 0xF0; //低位拉低 TMOD=0x01;TH0=0;TL0=0;ET0=1; //定时器0中断IT0=1; //外部中断0EX0=1;EA=1;LcdInit();key_board0();//key_board1();//if(key_flag==1)//{LcdWriteCom(0x80);for (i=0;i<11;i++) //显示DISTANCE{LcdWriteData(TABLE[i]);delayms(5);}LcdWriteCom(0x80+0x46);while(1){StartModule();while(!Echo); //判断是否收到回波信号TR0=1; //收到时,开启定时器while(Echo); //回波信号结束后关闭定时器TR0=0; //关闭定时器Conut(); //计算距离LcdWriteCom(0x80+0x46); //设置数据指针起点,第二排第一个delayms(80);}}以下是LCD显示程序#include"lcd.h"/********************************************************************* *********** 函数名 : Lcd1602_Delay1ms* 函数功能 : 延时函数,延时1ms* 输入 : c* 输出 : 无* 说名 : 该函数是在12MHZ晶振下,12分频单片机的延时。

********************************************************************** *********/void Lcd1602_Delay1ms(uint c) //误差 0us{uchar a,b;for (; c>0; c--){for (b=199;b>0;b--){for(a=1;a>0;a--);}}}/********************************************************************* *********** 函数名 : LcdWriteCom* 函数功能 : 向LCD写入一个字节的命令* 输入 : com* 输出 : 无********************************************************************** *********/#ifndef LCD1602_4PINS //当没有定义这个LCD1602_4PINS时void LcdWriteCom(uchar com) //写入命令{LCD1602_E = 0; //使能LCD1602_RS = 0; //选择发送命令LCD1602_RW = 0; //选择写入LCD1602_DATAPINS = com; //放入命令Lcd1602_Delay1ms(1); //等待数据稳定LCD1602_E = 1; //写入时序Lcd1602_Delay1ms(5); //保持时间LCD1602_E = 0;}#elsevoid LcdWriteCom(uchar com) //写入命令{LCD1602_E = 0; //使能清零LCD1602_RS = 0; //选择写入命令LCD1602_RW = 0; //选择写入LCD1602_DATAPINS = com; //由于4位的接线是接到P0口的高四位,所以传送高四位不用改Lcd1602_Delay1ms(1);LCD1602_E = 1; //写入时序Lcd1602_Delay1ms(5);LCD1602_E = 0;// Lcd1602_Delay1ms(1);LCD1602_DATAPINS = com << 4; //发送低四位Lcd1602_Delay1ms(1);LCD1602_E = 1; //写入时序Lcd1602_Delay1ms(5);LCD1602_E = 0;}#endif/********************************************************************* *********** 函数名 : LcdWriteData* 函数功能 : 向LCD写入一个字节的数据* 输入 : dat* 输出 : 无********************************************************************** *********/#ifndef LCD1602_4PINSvoid LcdWriteData(uchar dat) //写入数据{LCD1602_E = 0; //使能清零LCD1602_RS = 1; //选择输入数据LCD1602_RW = 0; //选择写入LCD1602_DATAPINS = dat; //写入数据Lcd1602_Delay1ms(1);LCD1602_E = 1; //写入时序Lcd1602_Delay1ms(5); //保持时间LCD1602_E = 0;}#elsevoid LcdWriteData(uchar dat) //写入数据{LCD1602_E = 0; //使能清零LCD1602_RS = 1; //选择写入数据LCD1602_RW = 0; //选择写入LCD1602_DATAPINS = dat; //由于4位的接线是接到P0口的高四位,所以传送高四位不用改Lcd1602_Delay1ms(1);LCD1602_E = 1; //写入时序Lcd1602_Delay1ms(5);LCD1602_E = 0;LCD1602_DATAPINS = dat << 4; //写入低四位Lcd1602_Delay1ms(1);LCD1602_E = 1; //写入时序Lcd1602_Delay1ms(5);LCD1602_E = 0;}#endif/********************************************************************* *********** 函数名 : LcdInit()* 函数功能 : 初始化LCD屏* 输入 : 无* 输出 : 无********************************************************************** *********/#ifndef LCD1602_4PINSvoid LcdInit() //LCD初始化子程序{LcdWriteCom(0x38); //开显示LcdWriteCom(0x0c); //开显示不显示光标LcdWriteCom(0x06); //写一个指针加1LcdWriteCom(0x01); //清屏LcdWriteCom(0x80); //设置数据指针起点}#elsevoid LcdInit() //LCD初始化子程序{LcdWriteCom(0x32); //将8位总线转为4位总线LcdWriteCom(0x28); //在四位线下的初始化LcdWriteCom(0x0c); //开显示不显示光标LcdWriteCom(0x06); //写一个指针加1LcdWriteCom(0x01); //清屏LcdWriteCom(0x80); //设置数据指针起点}#endif六、测试及调试硬件调试:焊接前用恒流源供电测量每个元件是否工作正常。

相关文档
最新文档