单片机原理及系统课程设计报告:基于89c51单片机的数字温度计设计内容摘要:

nop_()。 _nop_()。 //空操作两个机器周期,给硬件反应时间 P0=dictate。 //将数据送入 P0 口,即写入指令或地址 _nop_()。 _nop_()。 _nop_()。 _nop_()。 //空操作四个机器周期,给硬件反应时间 E=1。 //E 置高电平 _nop_()。 _nop_()。 _nop_()。 _nop_()。 //空操作四个机器周期,给硬件反应时间 E=0。 //当 E 由高电平跳变成低电平时,液晶模块开始执行命令 } void WriteAddress(unsigned char x) //指定字符显示的实际地址 的函数 { WriteInstruction(x|0x80)。 //显示位置的确定方法规定为 80H+地址码 x } void WriteData(unsigned char y) //将数据 (字符的标准 ASCII 码 )写入液晶模块 的函数 { while(BusyTest()==1)。 //液晶块是否忙碌 RS=1。 //RS 为高电平, RW 为低电平时,可以写入数据 RW=0。 E=0。 //让 E 从 0 到 1 发生正跳变,所以应先置 0 P0=y。 //将数据送入 P0 口,即将数据写入液晶模块 _nop_()。 _nop_()。 _nop_()。 _nop_()。 //空操作四个机器周期,给硬件反应时间 单片机原理及系统课程设计报告 11 E=1。 //E 置高电平 _nop_()。 _nop_()。 _nop_()。 _nop_()。 //空操作四个机器周期,给硬件反应时间 E=0。 //当 E 由高电平跳变成低电平时,液晶模块开始执行命令 } void LcdInitiate(void) //LCD 的显示模式进行初始化设置 { delaynms(15)。 //延时 15ms,首次写指令时应给 LCD 一段较长的反应时间 WriteInstruction(0x38)。 //设置 模式: 162 显示, 57 点阵, 8 位数据接 delaynms(5)。 //延时 5ms,给硬件一点反应时间 WriteInstruction(0x38)。 delaynms(5)。 //延时 5ms,给硬件一点反应时间 WriteInstruction(0x38)。 //连续三次,确保初始化成功 delaynms(5)。 //延时 5ms,给硬件一点反应时间 WriteInstruction(0x0c)。 //显示模式设置:显示开,无光标,光标不闪烁 delaynms(5)。 //延时 5ms,给硬件一点反应时间 WriteInstruction(0x06)。 //显示模式设置:光标右移,字符不移 delaynms(5)。 //延时 5ms,给硬件一点反应 时间 WriteInstruction(0x01)。 //清屏幕指令,将以前的显示内容清除 delaynms(5)。 //延时 5ms,给硬件一点反应时间 } sbit DQ=P3^3。 unsigned char time。 //设置全局变量,专门用于严格延时 bit Init_DS18B20(void) //DS18B20 传感器初始化,读取应答信号 函数 { bit flag。 //储存 DS18B20 存在的标志, flag=0 存在; flag=1 不存在 DQ = 1。 //先将数据线拉高 for(time=0。 time2。 time++) //略微延时约 6 微秒。 DQ = 0。 //再将数据线从高拉低,要求保持 480~960us for(time=0。 time200。 time++) //略微延时约 600 微秒。 //以向 DS18B20 发出一持续 480~960us 的低电平复位脉冲 DQ = 1。 //释放数据线(将数据线拉高) for(time=0。 time10。 time++)。 //释放总线后需等待 30us 让 其 输出存在脉冲 单片机原理及系统课程设计报告 12 flag=DQ。 //让单片机检测是否输出了存在脉冲( DQ=0 表示存在) for(time=0。 time200。 time++)。 //延时足够长时间,等待存在脉冲输出完毕 return (flag)。 //返回检测成功标志 } unsigned char ReadOneChar(void) //从 DS18B20 读取一个字节数据 的函数 { unsigned char i=0。 unsigned char dat。 //储存读出的一个字节数据 for (i=0。 i8。 i++) { DQ =1。 // 先将数据线拉高 _nop_()。 //等待一个机器周期 DQ = 0。 //单片机从 DS18B20 读数据时 ,将数据线 正跳便开始读 dat=1。 _nop_()。 //等待一个机器周期。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。