温室大棚卷帘机控制系统总体方案设计毕业论文内容摘要:

BUF ,75H ;发送地址低 8 位 WAT4: JNB TI,WAT4 CLR TI MOV IE,90H ;打开中断允许寄存器,采用中断方式发送数据 MOV DPH,78H MOV DPL,77H MOVX A,@DPTR MOV SBUF,A ;发送首个数据 WAIT: JNB F0,WAIT RET COM_INT: CLR TI ;关发送中断标志位 TI INC DPTR ;数据指针加 1,准备发送下一个数据 毕业论文 16 MOV A,DPH ;判断当前被发送的数据地址是不是末地址 CJNE A,76H,END1 ;不是末地址则跳转 MOV A,DPL CJNE A,75H,END1 SETE FO ;数据发送完毕,置 1标志位 CLR ES ;关串行口中断 CLR EA ;关中断 RETI ;中断返回 END1: MOVX A,@DPTR ;将要发送的数据送累加器,准备发送 MOV SBUF,A ;发送数据 RETI ;中断返回 DS18B20程序 设计 DS18B20 温度传感器 是 DALLAS 公司生产的单总线器件,在一根线上进行全部的信息传输,因为硬件简单,所以软件设计相对麻烦,对时序掌控精度要求较高。 写 18B20 程序设计 主机要生存一个写时间隙,必须把数据线拉低到低电平然后释放,写时间间隙开始后的 15us 内允许数据线拉倒高电平。 主机要生成一个写 0 间 隙,必须把数据线拉低电平并保持 60us,如图 所示。 ( 图 431 DS18B20 写时序图 ) 毕业论文 17 写 18b20 子程序的汇编程序如下:。 ========================================。 写 DS18B20 的子程序 (有具体的时序要求 )。 ======================================== WRITE_1820: MOV R2,8。 一共 8位数据 CLR C WR1: CLR DQ MOV R3, 6 DJNZ R3, $ RRC A MOV DQ, C MOV R3,23 DJNZ R3,$ SETB DQ NOP DJNZ R2,WR1 SETB DQ RET 读 18B20程序设计 主机生成读时间间隙,从 ds18b20 输出的数据在读间隙的下降沿出现的 15us内有效,因此主机停止 I/O 口的操作,以读取 I/O 口的值,如图 所示。 (图 432 DS18B20 读时序图 ) 毕业论文 18 读 18b20 子程序的汇编程序如下:。 ===========================================。 读 DS18B20 的程序。 ============================================ READ_18200: MOV R4,2。 将温度高位和低位从 DS18B20 中读出 MOV R1,TEMPER_L。 低位存入 TEMPER_L(TEMPER_L)。 高位存入 (TEMPER_H) RE00: MOV R2,8。 数据一共有 8 位 RE01: CLR C SETB DQ NOP NOP CLR DQ NOP NOP NOP SETB DQ MOV R3,9 RE10: DJNZ R3,RE10 MOV C,DQ MOV R3,23 RE20: DJNZ R3,RE20 RRC A DJNZ R2,RE01 MOV @R1,A DEC R1 DJNZ R4,RE00 毕业论文 19 RET 单线总线的空闲状态是高电平。 无论任何理由需要暂停某一执行过程时,如果还想恢复执行的话,总线必须停留在空闲状态。 在恢复期间,如果单线总线处于非活动(高电平)状态,位与位间的回复时间可以无限长。 如果总线停留在低电平超过 480us,总线上所有的器件都将复位。 执行序列通过单线总线端口访问 DS18B20 的协议 流程图 如下: (图 432 协议流程图 ) 1602液晶 程序 设计 液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此 指令失效。 要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图 是 1602 的内部显示地址。 ( 图 44 1602LCD 内部显示地址 ) 毕业论文 20 例如第二行第一个字符的地址是 40H,那么是否直接写入 40H 就可以将光标定位在第二行第一个字符的位置呢。 这样不行,因为写入显示地址时要求最高位 D7恒定为高电平 1 所以实际写入的数据应该是 01000000B( 40H)+10000000B(80H)=11000000B(C0H)。 1602 初始化的程序设计 在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。 每次输入指令前都要判断液晶模块是否处于忙的状态。 1602LCD 的一般初始化(复位)过程 延时 15mS 写指令 38H(不检测忙信号) 延时 5mS 写指令 38H(不检测忙信号) 延时 5mS 写指令 38H(不检测忙信号) 以后每次写指令、读 /写数据操作均需要检 测忙信号 写指令 38H:显示模式设置 写指令 08H:显示关闭 写指令 01H:显示清屏 写指令 06H:显示光标移动设置 写指令 0CH:显示开及光标设置 液晶初始化程序: ; =================================== ; 初始化 ; ==================================== INIT: MOV A,38H。 38HA LCALL WIR。 调写 IR子 程序 MOV A,0EH。 0EHA (显示开,光标开,光标闪烁) LCALL WIR。 调写 IR子程序 MOV A,06H。 06HA LCALL R。 调写 IR子程序 毕业论文 21 RET。 返回 1602 写指令与数据 的程序设计 因为本设计是显示温度值,所以不要读数据,只需写入指令与 数据 即可。 下面着重介绍一下 1602 写指令及 数据的时序特点; 如图 442 是 1602 写操作时序 ( 图 442 时序 图 ) 按照图 时序写 指令及数据 程序如下: ; ============================== ; 写指令 ; =============================== WIR: ACALL CKLCD。 调查空闲子程序 CLR E。 E 清 0 CLR RS。 RS 清 0 CLR RW。 RW 清 0 SETB E。 E 置 1 MOV P0,A。 AP0 CLR E。 E 清 0 毕业论文 22 RET。 返回 ; ===================================== ; 写数据 ; ===================================== WDR: ACALL CKLCD。 调查空闲子程序 CLR E。 E 清 0 SETB RS。 RS 置 1 CLR RW。 RW 清 0 SETB E。 E 置 1 MOV P0,A。 AP0 CLR E。 E 清 0 RET。 返回 矩阵键盘程序设计 矩阵键盘又称为行列式键盘,它是用 4 条 I/O 线作为行线, 4 条 I/O 线作为列线组成的键盘。 本模块设计是先 读取键盘的状态,然后得到按键的特征编码,再而让液晶显示。 下面介绍一下键盘扫描的过程。 先从 P2 口的高四位输出低电平,低四位输出高电平,从 P2 口的低四位读取键盘状态。 再从 P2 口的低四位输出低电平,高四位输出高电平,从 P2 口的高四位读取键盘状态。 将两次读取结果组合起来就可以得到当前按键的特征编码。 使用上述方法我们得到 16 个键的特征编码。 举例说明如何得到按键的特征编码: 假设 “1”键被按下,找其按键的特征编码。 从 P2 口的高四位输出低电平,即 - 为输出口。 低四位输出高电平,即 - 为输 入口。 读 P2 口的低四位状态为 “ 1101。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。