单片机原理及系统课程设计报告:基于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_()。 //等待一个机器周期。单片机原理及系统课程设计报告:基于89c51单片机的数字温度计设计
相关推荐
转换数据放在数组中,测量数据在显示时须经过转换成为十进制 BCD 码放在对应的数组中。 主程序流程图 . A/D 转换测量子程序 A/D 转换测量子程序用来控制对 ADC0809 的 8路模拟输入电压的 A/D 转换,并将对应的数值放在数组中。 A/D 转换测量子程序流程图如图所示。 开始 初始化 调用 A/D 转换测量子程序 调用显示子程序 基于单片机的简易数字电压表设计
平,从而来控制相应 LED 灯的亮灭。 本次实验我们采用的是查 表法和循环移位法,这两个方法要比位控法要复杂些,但是程序要简略的多。 6 第四章 硬件系统设计 硬件系统是指构成微机系统的实体和装置,通常由运算器、控制器、存储器、输入接口电路和输入设备、输出接口电路和输出设备等组成。 单片机实质上是一个硬件的芯片,在实际应用中,通常很难直接和被控对象进行电气连接,必须外加各种扩展接口电路、外部设备
亦适于常规编程器。 在单芯片上, AT89S52 拥有灵巧的 8 位 CPU 和在系统可编程 Flash,使得 AT89S52 为 众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 复位电路设计 MCS52 单片机通常采用上电自动复位、按钮电平复位、外部脉冲复位、上电 +按钮电平复位、程序运行监视复位等方式。 AT89S52 需要外加复位电路,本设计采用按键 +上电复位
块 按 键 状 态 河南理工大学本科课程设计报告 8 LED 显示模块如图 22 所示,利用 AT89S51 单片机的 P0端口的 - 连接到一个 七段 数码管的 a- h 的笔段上,数码管的公共端接 电源。 矩阵扫描显示当前按键模块如 下: 2. 2. 2 子 系统 模块二 播放模块是 喇叭构 成。 它几乎不 存在噪声 , 音响效果较 好 , 而且 由于所需驱动功率较 小 , 且价格低廉 ,
LED 彩 灯 系统将暂停运行,全部的灯都被点亮; K7 弹起后,系统继续之前的运行状态。 8 第 4 章 软件设计 单片机的应用系统由硬件和软件组成,上述硬件原理图搭建完成上电之后,我们还不能看到多控制、多闪烁方式的 LED 灯系统循环点亮的现象,我们还需要编写程序控制单片机管脚电平的高低变化,来控制发光二极管的亮 灭。 软件编程是多控制、多闪烁方式的 LED灯系统中的一个重要的组成部分
REST91011121314151617XTAL218XTAL119GND20U1 AT89S51S1R10200R1410KC122uFVCC12MHz30pFC3 30pFC2图 27 CPU 最小系统图 8 第 3章 温度控制 输入输出接口电路 设计 温度 传感器的选择 传统的模拟式温度传感器,如热电阻、热敏电阻,在一些温度范围内线性不好,需要经行冷端补偿或引线补偿