单片机课程设计-无线报警器设计.doc_第1页
单片机课程设计-无线报警器设计.doc_第2页
单片机课程设计-无线报警器设计.doc_第3页
单片机课程设计-无线报警器设计.doc_第4页
单片机课程设计-无线报警器设计.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

单片机课程设计电子与电气工程学院课程设计报告课 程 名 称 单片机课程设计 设 计 题 目 无线报警器设计 专 业 名 称 班 级 学 号 学 生 姓 名 指 导 教 师 2016年 6月 电气学院单片机技术课程设计指导老师评价表院(部)电气学院年级专业学生姓名学生学号2题 目无线报警器设计指导老师评语指导老师签名: 年 月 日 成绩评定指导老师签名: 年 月 日 目录1课程设计的任务及要求21.1 课程设计的任务21.2 课程设计的要求22 SIM900系列模块开发板调试开发流程22.1 硬件连接说明22.1.1连接方式32.2 指令操作说明42.2.1短信的读取与发送42.2.2英文短信的读取52.2.5GPRS 通信62.3用单片机控制模块62.3.1 单片机连接SIM900A模块的TTL电平接口方法62.3.2 单片机与SIM900A模块使用一个5V 2A电源供电73 LCD160273.1 1602 字符型 LCD 简介83.2LCD1602 主要技术参数:83.3引脚功能说明93.4 LCD1602控制指令93.5读写操作时序103.6LCD1602 内部显示地址114 A/D 转换芯片 ADC0832114.1 ADC0832 特点114.2芯片顶视图124.2.1芯片接口说明:124.3 ADC0832 与单片机的接口电路:124.4单片机对 ADC0832 的控制原理:134.5 ADC0832 芯片接口程序的编写:135 运行程序14附录25附录一:25附录二:25附录三:26无线报警器设计摘要:利用SIM900A、LCD1602、ADC0832等物件组合完成一个无线报警器,利用103可调电位器实现数值的变化,当低于某一值时,将会出现报警现象,接着通过GPRS模块发送信息到用户的手机上,这一产品可用于空调检测、温度检测、风速检测等。该报警器具有误报率较低、安装和配置容易、成本低、使用非常方便的特点,具有一定的实用价值。关键词:无线报警器、GPRS、检测261课程设计的任务及要求1.1 课程设计的任务设计报告中,利用不同的元器件,组成一个无线报警设备,可以实现报警和无线发送信息的功能,使其满足工作要求。然后通过测试看是否可以完成要求,并且检查是否会出错,进行比较分析,给出参考资料、原理图和实物图,最后还应写出心得体会与参考文献等。1.2 课程设计的要求1、原理图设计要符合项目的工作原理,连线要正确,按所设计的原理图,在实验平台上连线,检查无误。2、图中所使用的元器件要合理选用,电阻,电容等器件的参数要正确标明。3、原理图要完整,外围器件,扩器接口,输入/输出装置要一应俱全。4、再程序设计中,将总体项能分解成若干个子功能模块,每个功能模块完成一个特定的功能。5、根据总体要求及分解的功能模块,确定各功能模块之间的关系,设直出完整的程序流程图。6、将汇编后生成的*OBJ文件传送到实验装置中,执行该程序,检查该程序、是否达到设计要求,若未达到,修改程序,直到达到要求为止。 2 SIM900系列模块开发板调试开发流程SIM900A模块采用串口(UART)通信,我们所有的SIM900A开发板都含有TTL接口(V3.7版本还含有一组RS232电平接口)。使用标准的AT指令对SIM900A模块进行控制,实现打电话发短信等功能。所以,将控制器(包括单片机、电脑等)连接到的SIM900A模块的TTL接口或是RS232接口。硬件连接完毕后,就可以通过串口来发送AT指令了。 2.1 硬件连接说明用电脑调试模块时需要用到一个将SIM900模块与电脑连接起来的设备,常见的调试设备有USB-TTL模块与USB-232串口线。实际中所有的USB设备都是需要驱动的,不同的系统所需的驱动也是不同。所以,在使用这些USB设备来调试模块时,一定先确定所安装的驱动是OK的。安装完驱动后需要先实验一下USB设备和对应的驱动是否OK。方法是,我的电脑-属性-硬件管理器-COM口,找到USB设备安装后系统为其生成的COM口(系统生成的COM口一般会含有USB设备芯片的名称,如果*CH340*COM2),注意,如果系统没有为此设备生成COM口,很可能安装的驱动不正确或是USB设备已损坏。此时需要重新安装驱动或是更换USB调试设备。如果找到对应的COM口后就可以用串口助手一类的软件来测试这个USB设备与驱动是否OK。方法是将USB设备的转换成的TTL接口或是RS232接口的收发用线连在一起,例如:将USB-TTL设备的TTL端的TXD与 RXD用线连在一起,或是将USB-232串口线的RS232端的2 3 针(接线端里面有标注2 3针对应的位置)连在一起。然后将串口助手页面配置完毕(包括选择对应的COM口和打开串口助手),然后发送任何数据,然后看是否能同样接受到发送的数据。如果发什么数据能接到什么数据就说明USB设备+驱动就是OK的,这样才可以继续对SIM900A模块进行测试;如果发的数据缺收不到或是接受不正确,那么就要重新检查USB设备和驱动。直到此方法测试通过后,才可以对SIM900A模块进行以下测试。2.1.1连接方式假设USB设备已经通过测试,那么就可以用USB设备对SIM900A模块进行测试了。USB-TTL模块与SIM900A模块的硬件连接为:l USB-TTL模块TTL端的TXD-SIM900A的TTL电平接口的RXDl USB-TTL模块TTL端的RXD-SIM900A的TTL电平接口的TXDl USB-TTL模块的GND-SIM900A的GNDUSB-232模块与SIM900A模块的硬件连接为:(此接法只适用V3系列SIM900A模块,因为此系列模块上带有一组RS232接口,RS232端口简化成3根针,即:PCRXD PCTXD GND)l USB-232模块232端的发送-SIM900A的232电平接口的接收l USB-232模块232端的接受-SIM900A的232电平接口的发送l USB-232模块的GND-SIM900A的GND此外还需要给SIM900A模块供电。此处注意:模块上的VCC_MCU管脚不是用来给模块供电的,此管脚是用来控制模块的TTL电平的高电压的。有些USB设备会提供一个5V电源,但是多数这样的5V电源并不能达到要求。当电源功率不足时,模块上的常亮的灯会闪烁起来,另一个闪烁灯可能常亮几秒钟然后又开始闪烁起来。如果给模块发指令时,模块回复的数据(可能是隔几条数据)会不在软件左侧对齐显示出来,因为模块上电后会主动发一些数据,如果功率达不到要求的话,模块会隔一段时间重启一次,那么就会通过串口发出数据来,这样模块对指令的回复的内容就在发出的数据的之后显示出来,最后的样子就是模块对每条指令的回复不在软件左侧对齐显示出来,这就是电源功率不足的很明显的表现。还可以给模块中的电话号拨打电话来判断,如果能拨通并且一直保持拨通中,说明模块正常工作,如果拨通后立马挂断,很可能是电源功率不足。如果无法拨通,说明模块根本没有正常工作。同时也可以根据模块上的网络指示灯(就是会一直闪烁的那个灯)来大致判断模块的工作状态。当供电没有问题时,如果还是发现模块网络指示灯还是快闪,那么可以更换一个正在使用的移动或联通卡再试试,考虑到可能是模块对SIM卡不兼容。(此种情况很少出现)2.2 指令操作说明2.2.1短信的读取与发送将要用到的指令有:AT+CNMI/AT+CMGF/AT+CSCS/AT+CSMP/AT+CMGR/AT+CMGS/AT+CPMS 等 7 条 AT 指令。AT+CNMI,用于设置新消息指示。发送:AT+CNMI=2,1,设置新消息提示,当收到新消息,且 SIM 卡未满的时候,SIM900A 模块会返回数据给串口,如:+CMTI:SM,2,表示收到接收到新消息,存储在 SIM卡的位置2;存满了就不会提示,可以通过删除短信来解决。AT+CMGF,用于设置短消息模式,SIM900A 支持 PDU 模式和文本(TEXT)模式等 2 种模式,发送:AT+CMGF=1,即可设置为文本模式。AT+CSCS,用于设置 TE 字符集,默认的为 GSM7 位缺省字符集,在发送纯英文短信的时候,发送:AT+CSCS=GSM,设置为缺省字符集即可。在发送中英文短信的时候,需要发送:AT+CSCS=UCS2,设置为 16 位通用 8 字节倍数编码字符集。AT+CSMP,用于设置短消息文本模式参数,在使用 UCS2 方式发送中文短信的时候,需要发送:AT+CSMP=17,167,2,25,设置文本模式参数。AT+CMGR,用于读取短信,比如发送:AT+CMGR=1,则可以读取 SIM 卡存储在位置 1 的短信。AT+CMGS,用于发送短信,在GSM字符集下,最大可以发送 180 个字节的英文字符,在UCS2字符集下,最大可以发送 70 个汉字(包括字符/数字)。该指令我们在后面详细介绍。AT+CPMS,用于查询/设置优选消息存储器,通过发送:AT+CPMS?,可以查询当前 SIM 卡最大支持多少条短信存储,以及当前存储了多少条短信等信息。如返回:+CPMS:用户手册SM,1,50,SM,1,50,SM,1,50,表示当前 SIM 卡最大存储 50 条信息,目前已经有 1 条存储的信息。2.2.2英文短信的读取将用其他手机先发送一条英文短信到 SIM900A 模块上,然后读取模块接收到的这条英文短信。 首先,我们发送:AT+CMGF=1,设置为文本模式,然后发送:AT+CSCS=GSM,设置GSM 字符集,然后发送:AT+CNMI=2,1,设置新消息提示。接着,我们用别的手机发送一条英文短信“SIM900AModule”到我们的模块上(如果不知道模块号码,可以发送:AT+CNUM,查询模块号码)。模块接收到短信后,会提示如:+CMTI:SM,2,表明收到了新的短信,存放在 SIM 卡位置 2。然后,我们发送 AT+CMGR=2,即可读取该短信。 注意:某些时候,模块收到了短信,但却不发送提示,原因是:模块存储容量有限,不能继续存储短信。解决方法:可以删除一些短信,例如发送:AT+CMGD=1,删除全部短信命令。 2.2.3英文短信的发送将利用 SIM900A 模块来给指定手机号码发送一条英文短信。这里,我们用到 AT+CMGS 指令来发送短信,发送全英文/数字短信的时候,我们先设置为:GSM字符集(AT+CSCS=GSM),文本模式(AT+CMGF=1)假设我们要给手机号:发送一条短信,则发送:AT+CMGS然后模块返回:,此时我们输入我们需要发送的内容:SIM900A TEST,注意,此可以不用发送回车了。在发送完内容以后,最后以十六进制(HEX)格式单独发送:1A(即 0X1A),即可启动一次短信发送.注 1:0X1A,“CTRL+Z”的键值,即用于告诉 SIM900A,要执行发送操作。另外还可以发送:0X1B,即“ESC”的键值,用于告诉 SIM900A,取消本次操作,不执行发送。稍等片刻,在短信成功发送后,模块返回如:+CMGS:156,的确认信息,表示短信成功发送,其中 156 为模块内部的短信计数器,一般不用理会。 2.2.4中英文短信的发送将利用 SIM900A 模块来给指定手机号码发送一条中英文短信。同样,我们用到 AT+CMGS 指令来发送中英文短信。还是采用文本模式发送,发送步骤如下: 首先,发送:AT+CMGF=1,设置为文本模式。然后,发送:AT+CSMP=17,167,2,25,设置文本模式参数。最后发送:AT+CSCS=UCS2,设置为 UCS2 编码字符集。此时,我们便可以发送 AT+CMGS 指令来发送中英文短信了,不过由于使用了 UCS2 字符集,所有字符/数字/汉字,都必须使用 UNICODE 编码。假定我们要给手机号发送一条中英文短信,内容为“SIM900A 中英文短信发送测试”。我们首先要用:汉字 UNICODE 互换工具.exe,这个软件将号码和发送内容转换为 UNICODE 字符串(需要手动去掉空格),得到转换后的 UNICODE 字符串为:00310035003100320034003500330032003600370032.SIM900A。 中英文短信发送测试,转换后的 UNICODE 字符串为:00530049004D00390030003000414E2D82F1658777ED 016D4B8BD5,然后,发送:AT+CMGS=003100350031003200340035003300320036003 70032,这个指令,然后模块返回:此时我们输入我们需要发送的内容:00530049004D0039 0030003000414E2D82F1658777ED4FE153D190016D4B8BD5,注意,此处不发送回车。在发送完内容以后,最后以十六进制(HEX)格式单独发送(不用添加回车):1A(即0X1A),启动一次短信发送。 短信的读取与发送,我们就介绍到这里,我们全部是使用文本(TEXT)模式来实现的,当然还可以用 PDU 模式,不过 PDU 模式稍微复杂点,有兴趣的朋友,可以参考相关资料自行研究下。2.2.5GPRS 通信 将介绍如何使用 SIM900A 模块进行 GPRS 通信,实现模块与电脑的 TCP 和UDP 数据传输。本节,将要用到的指令有AT+CGCLASS/AT+CGDCONT/AT+CGATT/AT+ CIPCSGP/AT+CLPORT/AT+CIPSTART/AT+CIPSEN/AT+CIPSTATUS/AT+CIPCLOSE/AT+CIPSHUT等10条AT指令AT+CGCLASS,用于设置移动台类别。SIM900A模块仅支持类别B和CC,发送:AT+CGCLASS=B,设置移动台类别为 B。即,模块支持包交换和电路交换模式,但不能同时支持。AT+CGDCONT,用于设置 PDP 上下文。发送:AT+CGDCONT=1,IP,CMNET,设置 PDP 上下文标志为 1,采用互联网协议(IP),接入点为CMNET。AT+CGATT,用于设置附着和分离 GPRS 业务。发送:AT+CGATT=1,附着 GPRS 业务。AT+CIPCSGP,用于设置 CSD 或 GPRS 链接模式。发送:AT+CIPCSGP=1,CMNET,设置为GPRS 连接,接入点为”CMNET”。AT+CLPORT,用于设置本地端口号。发送:AT+CLPORT=TCP,8888,即设置 TCP 连接本地端口号为 8888。AT+CIPSTART,用于建立 TCP连接或注册 UDP 端口号。发AT+CIPSTART=TCP,180.120.52.222,8086,模块将建立一个 TCP 连接,连接目标地址为:180.120.52.222,连接端口为 8086,连接成功会返回:CONNECTOK。AT+CIPSEND,用于发送数据。在连接成功以后发送:AT+CIPSEND,模块返回:,此时可以输入要发送的数据,最大可以一次发送 1352 字节,数据输入完后,同发短信一样,输入十六进制的:1A(0X1A),启动发送数据。在数据发送完成后,模块返回:SENDOK,表示发送成功。AT+CIPSTATUS,用于查询当前连接状态。发送:AT+CIPSTATUS,模块即返回当前连接状态。AT+CIPCLOSE,用于关闭 TCP/UDP 连接。发送:AT+CIPCLOSE=1,即可快速关闭当前 TCP/UDP 连接。AT+CIPSHUT,用于关闭移动场景。发送:AT+CIPSHUT,则可以关闭移动场景,关闭场景后连接状态为:IPINITIAL,可以通过发送:AT+CIPSTATUS,查询。另外,在连接建立后,如果收到:+PDP:DEACT,则必须发送:AT+CIPSHUT,关闭场景后,才能实现重连。2.3用单片机控制模块2.3.1 单片机连接SIM900A模块的TTL电平接口方法单片机TXD-模块5VR或SRXD单片机RXD-模块5VT或STXD单片机GND-模块GND模块的VCC(或VCC5V)接入DC5V模块的GND接入电源地如果单片机是TTL电平高电压为5V,那么模块上的VCC_MCU接DC5V如果单片机是TTL电平高电压为3.3V,那么模块上的VCC_MCU接DC3.3V如果单片机是TTL电平高电压为2.85V,那么模块上的VCC_MCU接DC2.85V 2.3.2 单片机与SIM900A模块使用一个5V 2A电源供电单片机TXD-模块5VR或SRXD单片机RXD-模块5VT或STXD模块的VCC(或VCC5V)接入DC5V单片机的电源和SIM900A模块的电源接入5V 2A电源如果单片机是TTL电平高电压为5V,那么模块上的VCC_MCU接DC5V如果单片机是TTL电平高电压为3.3V,那么模块上的VCC_MCU接DC3.3V如果单片机是TTL电平高电压为2.85V,那么模块上的VCC_MCU接DC2.85V3 LCD1602液晶显示器各种图形的显示原理 线段的显示:点阵图形式液晶由 MN 个显示单元组成,假设 LCD 显示屏有 64 行,每行有 128 列,每 8 列对应 1 字节的 8 位,即每行由 16 字节,共 168=128 个点组成,屏上 6416 个显示单元与显示 RAM区 1024 字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。例如屏的第一行的亮暗由 RAM 区的 000H00FH 的 16 字节的内容决定,当(000H)=FFH时,则屏幕的左上角显示一条短亮线,长度为 8 个点;当(3FFH)=FFH 时,则屏幕的右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H,(00EH)=00H,(00FH)=00H 时,则在屏幕的顶部显示一条由 8 段亮线和 8 条暗线组成的虚线。这就是 LCD 显示的基本原理。 字符的显示:用 LCD 显示一个字符时比较复杂,因为一个字符由 68 或 88 点阵组成,既要找到和显示屏幕上某几个位置对应的显示 RAM 区的 8 字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在 LCD 上开始显示的行列号及每行的列数找出显示 RAM 对应的地址,设立光标,在此送上该字符对应的代码即可。 汉字的显示:汉字的显示一般采用图形的方式,事先从微机中提取要显示的汉字的点阵码(一般用字模提取软件),每个汉字占 32B,分左右两半,各占 16B,左边为 1、3、5右边为 2、4、6根据在 LCD 上开始显示的行列号及每行的列数可找出显示 RAM 对应的地址,设立光标,送上要显示的汉字的第一字节,光标位置加 1,送第二个字节,换行按列对齐,送第三个字节直到 32B 显示完就可以 LCD上得到一个完整汉字 。3.1 1602 字符型 LCD 简介 字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式 LCD,目前常用 16*1,16*2,20*2 和 40*2 行等的模块。下面以长沙太阳人电子有限公司的 1602 字符型液晶显示器为例,介绍其用法。一般 1602 字符型液晶显示器实物如图: 图13.2 LCD1602 主要技术参数:显示容量:162 个字符 芯片工作电压:4.55.5V 工作电流:2.0mA(5.0V) 模块最佳工作电压:5.0V 字符尺寸:2.954.35(WH)mmLCD1602分为带背光和不带背光两种,基控制器大部分为 HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图:图23.3引脚功能说明 LCD1602 采用标准的 14 脚(无背光)或 16 脚(带背光)接口,各引脚接口说明如表 表 1 3.4 LCD1602控制指令LCD1602液晶模块内部的控制器共有 11 条控制指令,如下表所示 表23.5读写操作时序表3:基本操作时序表图3:读操作时序 图4:写操作时序3.6 LCD1602 内部显示地址LCD 1602的RAM 地址映射及标准字库表液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在,哪里显示字符,图是 1602 的内部显示地址。图5:LCD1602 内部显示地址例如第二行第一个字符的地址是 40H,那么是否直接写入 40H 就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位 D7 恒定为高电平 1 所以实际写入的数据应该是 01000000B(40H)+10000000B(80H)=11000000B(C0H)。4 A/D 转换芯片 ADC0832ADC0832 是美国国家半导体公司生产的一种 8 位分辨率、双通道 A/D 转换芯片。由于它体积小,兼容性强,性价比高而深受单片机爱好者及企业欢迎,其目前已经有很高的普及率。学习并使用 ADC0832 可是使我们了解 A/D 转换器的原理,有助于我们单片机技术水平的提高。4.1 ADC0832 特点1、8 位分辨率;2、双通道 A/D 转换;3、输入输出电平与 TTL/CMOS 相兼容;4、5V 电源供电时输入电压在 05V 之间;5、工作频率为 250KHZ,转换时间为 32S;6、一般功耗仅为 15mW;7、8P、14PDIP(双列直插)、PICC 多种封装;8、商用级芯片温宽为0C to +70C,工业级芯片温宽为40C to +85C;4.2芯片顶视图 图 1 图 24.2.1芯片接口说明:1、CS_:片选使能,低电平芯片使能。2、CH0:模拟输入通道 0,或作为 IN+/-使用。3、CH1:模拟输入通道 1,或作为 IN+/-使用。4、GND:芯片参考 0 电位(地)。5、DI:数据信号输入,选择通道控制。6、DO:数据信号输出,转换数据输出。7、CLK:芯片时钟输入8、Vcc/REF:电源输入及参考电压输入(复用)。4.3 ADC0832 与单片机的接口电路:ADC0832 为 8 位分辨率 A/D 转换芯片,其最高分辨可达 256 级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在 05V 之间。芯片转换时间仅为 32S,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。通过 DI 数据输入端,可以轻易的实现通道功能的选择。图 34.4单片机对 ADC0832 的控制原理:正常情况下 ADC0832 与单片机的接口应为 4 条数据线,分别是 CS、CLK、DO、DI。但由于 DO 端与 DI 端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将 DO 和 DI 并联在一根数据线上使用。(见图 3)当 ADC0832 未工作时其 CS 输入端应为高电平,此时芯片禁用,CLK 和DO/DI 的电平可任意。当要进行 A/D 转换时,须先将 CS 使能端置于低电平并且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟输入端 CLK 输入时钟脉冲,DO/DI 端则使用 DI 端输入通道功能选择的数据信号。在第 1 个时钟脉冲的下沉之前 DI 端必须是高电平,表示启始信号。在第 2、3 个脉冲下沉之前 DI 端应输入 2 位数据用于选择通道功能。4.5 ADC0832 芯片接口程序的编写:为了高速有效的实现通信,我们采用汇编语言编写接口程序。由于ADC0832 的数据转换时间仅为 32S,所以 A/D 转换的数据采样频率可以很快,从而也保证的某些场合对 A/D转换数据实时性的要求。数据读取程序以子程序调用的形式出现,方便了程序的移植。程序占用资源有累加器 A,工作寄存器 R7,通用寄存器 B 和特殊寄存器 CY。通道功能寄存器和转换值共用寄存器 B。在使用转换子程序之前必须确定通道功能寄存器 B 的值,其赋值语句“MOVB,#data”(00H03H)。运行转换子程序后的转换数据值被放入 B 中。子程序退出后即可以对 B 中数据处理。ADC0832 数据读取程序流程: 5 运行程序#include#include #define uint unsigned int#define uchar unsigned char#define yh 0x80 /LCD第一行的初始位置#define er 0x80+0x40 /LCD第二行初始位置#define FOSC_110592M/#define FOSC_12Muchar sms_text1 = Hello I am Yang yuting; sbit rs=P10;sbit en=P11;sbit speak=P37; / 蜂鸣器 sbit led=P12; / 蜂鸣器sbit CS=P20;sbit CLK=P22;sbit DO=P23;sbit DI=P24;/数据输入uchar flog4,temp,a;uchar code tab1=BrAC: m/s; /测量值显示的固定字符uchar MQ_data3;uchar temp,i;uint MQ,MQ1;void delay_1ms(uint xms)/延时函数,有参函数uint x,y;for(x=xms;x0;x-)for(y=124;y0;y-);void SerialInti()/初始化程序TMOD=0x21;/定时器1操作模式2:8位自动重载定时器#ifdef FOSC_12MTH1=0xf3;/装入初值,波特率2400TL1=0xf3;#elseTH1=0xfd;/装入初值,波特率9600TL1=0xfd;TR1=1;/打开定时器SM0=0;/设置串行通讯工作模式 SM1=1;/在此模式下,定时器溢出一次就发送一个位的数据REN=1;/串行接收允许位(要先设置sm0sm1再开串行允许)EA=1;/开总中断ES=1;/开串行口中断void Serial_interrupt() interrupt 4 /*串行通讯中断,收发完成将进入该中断*/a=SBUF;/P3=SBUF;RI=0;/接收中断信号清零,表示将继续接收/flag=1;/进入中断的标志符号void Uart1Send(uchar c)SBUF=c;while(!TI);/等待发送完成信号(TI=1)出现TI=0;void Uart1Sends(uchar *str) /串行口连续发送char型数组,遇到终止号/0将停止while(*str!=0)SBUF=*str;while(!TI);/等待发送完成信号(TI=1)出现TI=0;str+;void DelaySec(int sec)uint i , j= 0;for(i=0; isec; i+)for(j=0; j65535; j+)void write_1602com(uchar com) /*液晶写入指令函数*/rs=0;/数据/指令选择置为指令P0=com;/送入数据delay_1ms(12);en=1;/拉高使能端,为制造有效的下降沿做准备delay_1ms(12);en=0;/en由高变低,产生下降沿,液晶执行命令void write_1602dat(uchar dat) /*液晶写入数据函数*/rs=1;/数据/指令选择置为数据P0=dat;/送入数据delay_1ms(12);en=1; /en置高电平,为制造下降沿做准备delay_1

温馨提示

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

最新文档

评论

0/150

提交评论