毕业论文基于stc89c52和ds18b20的温度检测装置_第1页
毕业论文基于stc89c52和ds18b20的温度检测装置_第2页
毕业论文基于stc89c52和ds18b20的温度检测装置_第3页
毕业论文基于stc89c52和ds18b20的温度检测装置_第4页
毕业论文基于stc89c52和ds18b20的温度检测装置_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课程设计总结报告课程名称 单片机应用系统设计 设计题目 基于STC89C52和DS18B20的温度 检测装置专 业 电子信息工程 班 级 姓 名 学 号 指导教师 报告成绩 信息与工程学院二一三年六月十九日单片机应用系统设计课程设计任务书一、课题名称基于STC89C52和DS18B20的温度检测装置二、设计任务1、.功能要求基本任务:(1) 采用STC89C52单片机(可选用其他89C51系列的单片机)和DS18B20温度传感器,1602字符液晶设计;(2) 根据数据手册编程读取DS18B20,用1602字符液晶显示温度(3) 通过4个键实现温度上限和下限设置。发挥任务:实现一个时钟,显示时,分秒,并可以设置时间。2. 、设计要求(1) 熟悉STC89C52单片机及其开发环境;熟悉汇编语言或C51程序设计;(2) 掌握STC89C52单片机最小系统、按键电路、字符液晶显示电路的设计;掌握DS18B20编程方法,学会看数据手册;掌握1602字符液晶编程方法;掌握单片机时钟中断的编程方法;熟悉项目设计流程;(3) 熟悉硬件软件调试的方法;(4) 设计报告中详细写出硬件电路设计方案、画出软件流程图并总结调试中遇到的问题及解决方法。三、设计报告撰写规范单片微机应用系统设计总结报告正文,主要含以下内容(硬件、软件各部分内容也可组合起来进行撰写说明):1. 系统总体设计方案(画出系统原理框图、方案的论证与比较等内容);2. 硬件系统分析与设计(各模块或单元电路的设计、工作原理阐述、参数计算、元器件选择、完整的系统电路图、系统所需的元器件清单。等内容);3. 软件系统分析与设计(各功能模块的程序设计流程图与说明、软件系统设计、软件抗干扰措施、完整的程序等内容);4. 系统仿真调试与参数测量(使用仪器仪表、故障排除、电路硬件和软件调试的方法和技巧、指标测试的参数和波形、测量误差分析);5. 总结(本课题核心内容及使用价值、电路设计、软件设计的特点和选择方案的优缺点、改进方向和意见等);6. 按统一格式列出主要参考文献。基于STC89C52和DS18B20的温度检测装置课程设计总结报告一、系统总体方案 1.系统原理框图 2. 方案工作过程的论述本设计是一款简单实用的小型数字温度计,所采用的主要元件有传感器DS18B20,单片机STC89C52,LED1602字符液晶一个,电容电阻若干。传感器采用美国DALLAS半导体公司生产的智能温度传感器DS18B20,支持“一线总线”接口,测量温度范围-55C+125C。在-10+85C范围内,精度为0.5C。最高分辩率可达0.0625。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。主控制器即单片机部分,用于存储程序和控制电路;LED显示部分是用1602字符液晶显示温度;传感器部分,即温度传感器,用来采集温度,进行温度转换;复位部分,即复位电路。测量的总过程是,传感器采集到外部环境的温度,并进行转换后传到单片机,经过单片机处理判断后将温度传递到数码管显示。本设计能完成的温度测量范围是-55C+128C,精度为0.1C,支持温度正负提示,软件预设上限温度30C,下限温度20C,并支持硬件手动配置温度上下限,通过4个键实现温度上限和下限设置,超过此上下限即实现报警功能。附加功能:实现一个时钟,显示时、分、秒,并可以设置时间。3.整体设计电路图 4.单片机的造型二、单片机概述根据老师提供的元器件清单,选择采用STC89C52单片机进行使用。STC89C52介绍:STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。主要特点:1.8K字节程序存储空间;2.512字节数据存储空间;3.内带2K字节EEPROM存储空间;4.可直接使用串口下载;主要参数:1. 增强型8051单片机,6 时钟/机器周期和12 时钟/机器周期可以任意 选择,指令代码完全兼容传统8051.22. 工作电压:5.5V3.3V(5V单片机)/3.8V2.0V(3V 单片机)3.工作频率范围:040MHz,相当于普通8051 的080MHz,实际工作 频率可达48MHz4. 用户应用程序空间为8K字节5. 片上集成512 字节RAM6. 通用I/O 口(32 个),复位后为:P0/P1/P2/P3 是准双向口/弱上拉, P0 口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为 I/O 口用时,需加上拉电阻。7. ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无 需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程 序,数秒即可完成一片8. 具有EEPROM 功能9. 共3 个16 位定时器/计数器。即定时器T0、T1、T210.外部中断4 路,下降沿中断或低电平触发电路,Power Down 模式可 由外部中断低电平触发中断方式唤醒11. 通用异步串行口(UART),还可用定时器软件实现多个UART12. 工作温度范围:-40+85(工业级)/075(商业级)13. PDIP封装P1口各个引脚的第二功能介绍: P3口的第二功能介绍:单片机的最小系统中还包含了复位电路和晶振电路。晶振电路: 复位电路: 设计过程的注意点:1.考虑对速度的要求。单片机的运行速度首先看时钟频率,指令集,几个时钟为一个机器周期。在选用单片机时,要根据需要选择速度,不要片面追求高速,单片机的稳定性、抗干扰性的参数基本上跟速度成反比,另外速度越快功效也越大。2.考虑定时器/计数器的功能。大部分单片机提供了23个定时器/计数器,有些定时计数器还具有输入捕获、输出比较和PWM(脉冲宽度调制)功能,利用这些模块不仅可以简化软件设计,而且能少占用CPU的资源。现在还有不少单片机提供了看门狗定时器(WDT),当单片机“死机”后可以自动复位。选用时可根据自己的需要和编程要求进行选择。3.考虑I/O口的驱动能力。IO口的数量和功能是选用单片机时首先要考虑的问题之一,根据实际需要确定数量,IO多余不仅芯片的体积增大,也增加了成本。驱动电流大的单片机可以简化外围电路。51系列的单片机下拉(输出低电平)时驱动电流大,但上拉(输出高电平)时驱动电流很小。4.考虑工作电压与功耗的要求。单片机的工作电压最低可以达到1.8V,最高为6V,常见的是3V和5V。单片机的功耗参数主要是指正常模式、空闲模式、掉电模式下的工作电流,用电池供电的系统要选用电流小的产品,同时要考虑是否要用到单片机的掉电模式,如果要用的话必须选择有相应功能的单片机。5.单片机的串行接口。单片机常见的串行接口有:标准UART接口、TWI通讯接口、增强型UART接口、I2C总线接口、CAN总线接口、SPI接口、USB接口等。大部分单片机都提供了UART接口,也有部分单片机没有串行接口。三、温度检测电路根据所提供的材料以及对电路的分析,决定采用DS18B20作为温度检测部分特点: DS18B20是DALLAS公司最新推出的单线数字温度传感器,新的“一线器件”体积更小、适用电压更宽、更经济。 Dallas 半导体公司的数字化温度传感器DS1820是世界上第一片支持 “一线总线”接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。DS18B20、 DS1822 “一线总线”数字化温度传感器,测量温度范围为-55C+125C,在-10+85C范围内,精度为0.5C。DS1822的精度较差为 2C 。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新的产品支持3V5.5V的电压范围,使系统设计更灵活、方便。而且新一代产品更便宜,体积更小。 DS18B20、 DS1822 的特性 DS18B20可以程序设定912位的分辨率,精度为0.5C。可选更小的封装方式,更宽的电压适用范围。分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。DS18B20的性能是新一代产品中最好的! 1). 只要求一个端口即可实现通信; 2). 在DS18B20中的每个器件上都有独一无二的序列号; 3). 实际应用中不需要外部任何元器件即可实现测温; 4). 测量温度范围在55。C到125。C之间; 5). 数字温度计的分辨率用户可以从9位到12位选择; 6). 内部有温度上、下限告警设置; 温度测量电路的框图及其原理:低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器冲输入。计数器1和温度寄存器被预置在5所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。温度采集读写时序图: DS18B20电路图: 读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节。在读出时须进行CRC校验,校验有错时不进行温度数据的改写。流程图如下: 温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令。当采用12位分辨率时,转换时间约为750ms。在本程序设计中,采用1s显示程序延时法等待转换的完成。 流程图如下: DS18B20温度采集、转换程序:#include #include intrins.h#includeDS18B20.H#define uchar unsigned char#define uint unsigned intsbit DS=P10; /定义接口uint temp; /温度变量uchar flag1; /接收标志位extern delay_nms(uint nms);/*/功能:串行口初始化,波特率9600,方式1void Init_Com(void) TMOD = 0x20; /设定T1定时器的工作方式2 PCON = 0x00; /波特率不加倍 TH1 = 0xFd; /T1定时器装初值 TL1 = 0xFd; TR1 = 1; /启动T1定时器 REN=1; /允许接受串行口 SM0=0; /设定串口工作方式1 即8位异步通讯 SM1=1; tmpchange(); /读一次温度,防止运行程序时读出85摄氏度 delay_nms(400); /85度不显示(用延时跳过)/*/DS18B20复位,初始化函数void dsreset(void) uint i; DS=0; /数据线拉到低电平0 i=103; /延时850us(该时间范围可以在480960us) while(i0) i-; DS=1; /数据线拉到高电平1 i=4; /延时等待(如果初始化成功则在1560ms内产生一个由DS18B20返回的低电平0,据该状态可以确定它的存在) while(i0) i-; /*/读1位数据函数bit tmpreadbit(void) uint i; bit dat; /设置一位数据 DS=0; i+; /i+ 起延时作用 DS=1; i+;i+; dat=DS; i=8;while(i0)i-; return (dat);/*/读1字节函数uchar tmpread(void) uchar i,j,dat; dat=0; for(i=1;i=8;i+) j=tmpreadbit(); dat=(j1); /读出的数据最低位在最前面,这样刚好一个字节在DAT里 return(dat);/*/向DS18B20写一个字节数据函数void tmpwritebyte(uchar dat) uint i; uchar j; bit testb; for(j=1;j1; if(testb) /写 1 DS=0; i+;i+; DS=1; i=8;while(i0)i-; else DS=0; /写 0 i=8;while(i0)i-; DS=1; i+;i+; void tmpchange(void) /DS18B20 开始获取数据并转换 dsreset(); delay_nms(1); tmpwritebyte(0xcc); /写跳过读ROM指令 tmpwritebyte(0x44); /写温度转换指令 void tmp() /读取寄存器中存储的温度数据 float tt; uchar a,b; dsreset(); delay_nms(1); tmpwritebyte(0xcc); tmpwritebyte(0xbe); a=tmpread(); /读低8位 b=tmpread(); /读高8位 temp=b; temp0;i-) for(j = 90;j0;j-) _nop_ (); _nop_ (); _nop_ (); /*/函数功能:向1602写入指令(选择位置)void write_com(uchar com) RS = 0; /选择写命令模式 (RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。) P0 = com; /将要写的命令字送到数据总线上 LCD_EN = 0; /E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令 delay_nms(1); /稍作延时以待数据稳定 LCD_EN = 1; /使能端给一个高脉冲 delay_nms(1); /稍作延时 LCD_EN = 0; /将使能端置0以完成高脉冲/*/函数功能:向1602写入数据void write_date(uchar date) RS = 1; /选择写命令模式 (高电平时选择数据寄存器) LCD_EN = 0; P0 = date; delay_nms(1); LCD_EN = 1; delay_nms(1); LCD_EN = 0;/*/定行定列显示数组void write_stringtable(uchar h,uchar l,uchar *s) if(h = 0) /确定第几行 h = 0x80; /第一行的第一个地址 else h = 0xc0; /第二行的第一个地址 h = h+l; /行(列)加? write_com(h); /写一个字符地址 while(*s) /显示字符串 write_date(*s); s+; /*/1602初始化void LCD_Initial() write_com(0x38); /设置16*2显示,5*7点阵,8位数据接口delay_nms(1);write_com(0x0c); /设置开显示,不显示光标delay_nms(1);write_com(0x06); /写一个字符地址指针自动加1delay_nms(1);write_com(0x01); /显示清0,数据指针清0delay_nms(1); 5、 键盘电路键盘扫描概述:首先,确定键盘编码方案:采用编码键盘或非编码键盘。随后,确定键盘工作方式:采用中断或查询方式输入键操作信息。然后,设计硬件电路。非编码键盘系统中,键闭合和键释放的信息的获取,键抖动的消除,键值查找及一些保护措施的实施等任务,均由软件来完成。 1.监测有无键按下;键的闭合与否,反映在电压上就是呈现出高电平或低电平,所以通过电平的高低状态的检测,便可确认按键按下与否。 2.判断是哪个键按下。一.编程扫描方式:当单片机空闲时,才调用键盘扫描子程序,反复的扫描键盘,等待用户从键盘上输入命令或数据,来响应键盘的输入请求。二.定时扫描工作方式:单片机对键盘的扫描也可用定时扫描方式,即每隔一定的时间对键盘扫描一次。三.中断工作方式:只有在键盘有键按下时,才执行键盘扫描程序并执行该按键功能程序,如果无键按下,单片机将不理睬键盘 3.完成键处理任务。(二)从电路或软件的角度应解决的问题1.消除抖动影响。键盘按键所用开关为机械弹性开关,利用了机械触点的合、断作用。由于机械触点的的弹性作用,一个按键开关在闭合和断开的瞬间均有一连串的抖动、抖动时间的长短由按键的机械特性决定,一般为510ms,这是一个很重要的参数。抖动过程引起电平信号的波动,有可能令CPU误解为多次按键操作,从而引起误处理。为了确保CPU对一次按键动作只确认一次按键,必须消除抖动的影响。按键的消抖,通常有软件,硬件两种消除方法。 这种方法只适用于键的数目较少的情况。软件消抖:如果按键较多,硬件消抖将无法胜任,常采用软件消抖。通常采用软件延时的方法:在第一次检测到有键按下时,执行一段延时10ms的子程序后,再确认电平是否仍保持闭合状态电平,如果保持闭合状态电平,则确认真正有键按下,进行相应处理工作,消除了抖动的影响。(这种消除抖动影响的软件措施是切实可行的。)2.采取串键保护措施。串键:是指同时有一个以上的键按下,串键会引起CPU错误响应。通常采取的策略:单键按下有效,多键同时按下无效。 3.处理连击。连击:是一次按键产生多次击键的效果。要有对按键释放的处理,为了消除连击,使得一次按键只产生一次键功能的执行(不管一次按键持续的时间多长,仅采样一个数据)。否则的话,键功能程序的执行次数将是不可预知,由按键时间决定。连击是可以利用的。连击对于用计数法设计的多功能键特别有效。 按键电路图: 程序流程图: 六、串口电路MAX232电平转换、串口的硬件电路图和串口的程序下载功能MAX232电平转换:MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的接口电路,使用+5v单电源供电。内部结构基本可分三个部分:第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DP9插头;DP9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。第三部分是供电。15脚DNG、16脚VCC(+5v)。STC89C52RC是宏晶公司的产品 一个8位单片机,232在单片机上用作下载程序和电平转换,STC89C52RC就是控制器相当于人的大脑。串口硬件电路图:串口的程序下载功能: 先等待ISP提示MCU上电,然后再开启单片机电源,这时可能也不能连上,然后再关闭开启一次电源,这时就可以读出晶振频率,如果还是不能连上,再重复以上步骤,亦或是改变波特率(11.0592用19200成功率较大)。七、系统调试硬件调试比较简单,首先采用PROTELSE99软件绘制原理图,并进行了仿真,确认无误的情况下将图纸打印出来,以便电路的排布。由于前期对电路的分析不够彻底,导致电路图排版存在缺陷,最后导致焊接过程中出现很多差错,也贻误了许多的时间。焊接完毕,开始调试硬件,先按要求接入正5伏的电压,发现蜂鸣器会响,但是灯没有亮,先检查了下线路,发现无误,后检查了三极管,也没有发现烧坏,最后通过理论的计算,发现是与灯串联的电阻阻值不够,换了一个较大的电阻之后,灯泡亮了。然后是对串口电路进行检查,第一次发现程序始终无法写入单片机,经过仔细检查,发现是串口线路接错,重新修改之后,程序顺利写入。软件调试在编写显示程序并进行硬件的正确性检验之后进行,分别进行主程序、读出温度子程序、温度转换命令子程序、计算温度子程序和显示子程序等的编程及调试。由于DS18B20与单片机采用串行数据传送,因此,对DS18B20进行读/写编程时必须严格地保证读/写时序;否则将无法读取测量结果。本程序采用单片机c语言编写用Keil编译器编程调试。软件调试到能显示温度值,并且在有温度变化时显示温度能改变,温度的上下限可以设置,同时添加了附加功能,手动调整时间值,就基本完成。8、 总结本次的设计使我们进一步巩固了书本上的知识,做到了学以致用。这是我们第二次自己动手设计的电路,通过电路图绘制软件protel,系统仿真软件protues和编译软件keil,使我们进一步了解了单片机的设计制作过程,其中最为困难的是软件部分,即编程部分,我们上网找了好多资料,最终借助同学的帮助,经过自己的修改,基本上完成了功能,但还是有部分功能不能实现,最主要的温度显示始终存在问题。另外,对于程序中关于温度转换部分不清楚,在老师提问时没有办法进行回答解释。而在焊接硬件时也遇到了不少麻烦,如液晶显示引脚的对应焊接,max232的焊接,三极管的的极性识读等。总结经验的时候我们得出这样的结论,学习应该学以致用,有目的的去学习,如果学了不用等于没学。其次,要学以致用,理论联系实际,这样才会取得事半功倍的效果。 主要参考文献:1 周立功.ARM&WinCE实践与实验:基于S3C2410M北京:北京航空航天大学出版社,2007.2 李朝青.PC机及单片机数据通信技术M.北京:北京航空航天大学出版社,20003 马春华,于莉莉.SMS方式远程监控软件的设计与实现J.广东通信技术,2003,23 .附录:/头文件#include #include #include #define uchar unsigned char#define uint unsigned intsbit beep=P24;uchar keep=0;uint disdata18;uint t_value,tflag;uchar code str1=temperature: ;#defineNONE_KEY_CODE 0X0f#defineMODE_KEY_CODE 0X0e#defineINC_KEY_CODE 0X0d#defineDEC_KEY_CODE 0X0b#defineSET_KEY_CODE 0X07uint keyvalue2;uchar basetime,mode,flag,SET_mode,SET_flag; char timebuf5;uint funcode,key_timing,time;uchar TH=30,TL=20;/*#define lcd1602_Bus P0 /lcd1602定义sbit lcd1602_en=P25;sbit lcd1602_rs=P26; /*sbitDS= P2 0; /ds18B20定义/*ds18b20*void ds18b20_delay(unsigned int nus) while(nus-); /延时微秒/*void DS18B20_initial(void) /初始化ds1820unsigned char x=0;DS = 1; /DQ复位ds18b20_delay(8); /稍做延时DS = 0; /单片机将DQ拉低ds18b20_delay(80); /精确延时 大于 480usDS = 1; /拉高总线ds18b20_delay(14);x=DS; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败ds18b20_delay(20);/*unsigned char Readchar(void) /读一个字节unsigned char i=0;unsigned char dat = 0;for (i=8;i0;i-)DS = 0; / 给脉冲信号,读起始dat=1; /低位开始接收DS = 1; / 给脉冲信号if(DS) /若读出1dat|=0x80;ds18b20_delay(4);return(dat);/*void Writechar(unsigned char dat) /写一个字节unsigned char i=0;for (i=8; i0; i-)DS = 0;DS = dat&0x01;ds18b20_delay(5);DS = 1;dat=1;/*unsigned int readtemp(void) /读取温度 unsigned char a=0;unsigned char b=0;unsigned int t_value=0;float tt_value=0;DS18B20_initial();Writechar(0xCC); / 跳过读序号列号的操作Writechar(0x44); / 启动温度转换DS18B20_initial();Writechar(0xCC); /跳过读序号列号的操作Writechar(0xBE); /读取温度寄存器a=Readchar(); /读低8位b=Readchar(); /读高8位t_value=b;t_value0;i-)for(j=110;j0;j-);/* void write_lcd1602_com(uchar com) /写地址 lcd1602_Bus=com;delayms(5); lcd1602_rs=0; lcd1602_en=1; delayms(5);lcd1602_en=0;void write_lcd1602_dat(uchar dat) /写数据 lcd1602_Bus=dat;delayms(5); lcd1602_rs=1; lcd1602_en=1;delayms(5); lcd1602_en=0;/*void lcd1602_initial(void)/液晶初始化 /lcd1602_wr=0; lcd1602_en=0; write_lcd1602_com(0x01);/清屏 write_lcd1602_com(0x06);/指针加减与移动 write_lcd1602_com(0x0c);/光标 write_lcd1602_com(0x38);/液晶初始化命令 write_lcd1602_com(0x01);/清屏/*/*名称:lcd_string(uchar row,uchar cloum,uchar *p)功能:从第row行 ,第cloum列,把一串字符写入lcd输入:row cloum p*/void lcd1602_string(uchar row,uchar cloum, uchar *p) uchar row_flag; if(row=1) row_flag=0x80; if(row=2) row_flag=0xc0; row_flag=row_flag+cloum; write_lcd1602_com(row_flag); while(1) if(*p=0) break; write_lcd1602_dat(*p); p+; /*名称:lcd_char(uchar row ,uchar cloum,uchar dat)*功能:在lcd的第row行,第cloum列,写入数据dat*输入:row cloum dat*/ void lcd1602_char(uchar row ,uchar cloum,uchar dat) uchar row_flag; if(row=1) row_flag=0x80; write_lcd1602_com(row_flag+cloum); write_lcd1602_dat(dat)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论