课程设计论文-基于51单片机与ds18b20的数字温度计设计内容摘要:
即驱动蜂鸣器鸣叫、 8 个发光二极管发光 主程序流程图: 开始 显示实时温度 温度设定、报警 查询记录温度值 定时器初始化、启动 图 12 主程序流程图 读温度值模块 读温度值模块需要调用 4 个子程序,分别为: DS18B20 初始化子程序:让单片机知道 DS18B20 在总线上且已准备好操作 DS18B20 写字节子程序:对 DS18B20 发出命令 DS18B20 读字节子程序:读取 DS18B20 存储器的数据 延时子程序:对 DS18B20 操作时的时序控制 1. 读温度值模块流程图: 图 13 读温度值子程序流程图 DS18B20 初始化 跳过读序列号 启动温度转换 延时 DS18B20 初始化 跳过读序列号 读取温度值高低位 数据转换处理 返回 入口 2. DS18B20 初始化子程序流程图: N Y 图 14 DS18B20 初始化子程序流程图 3. DS18B20 写字节 和读字节 子程序 流程图 : DQ 置高电平 稍延时 DQ 复位 0 延时 480ms DQ 拉高电平 延时 15~60ms DQ 为低 电平。 返回 入口 图 15 DS18B20 写字节子程序流程图 图 16 DS18B20 读 字 节子程序流程图 中断模块 中断采用 T0 方式 1,初始值定时为 50ms。 中断模块需调用两个子程序: 读温度值子程序:定时读取温度值,实时更新温度值 记录温度值子程序:定时记录温度值,供查询使用 把这两个子程序放在中断的原因是,不会因为调整报警温度或查询历史温度值而停止更新温度值和记录温度值。 中断模块流程图: Y N 图 17 中断模块流程图 温度查询模块 温度查询模块需要接受按键输入,进入查询界面后,按加 减键分别查询上一个和下一个历史温度值,并驱动数码管显示需要查询的温度值。 温度查询模块流程图如下: N Y N Y 中断入口 定时器重置初值 计数值加 1 1 秒。 记录温度值 读温度值 中断返回 入口 功能键按下。 延时消抖 确认按下。 显示温度值与位次 N Y Y N N Y Y N N Y 图 18 温度查询模块 流程图 温度设定、报警模块 此模块跟温度查询模块类似,需要接受按键输入,进入模块界面后,按加减键分别上调 和下调设定报警温度值,当实时温度值超过设定值时驱动蜂鸣器发声,并点亮 8 位发光二极管,实现声光报警。 温度设定、报警模块流程图如下: 加键按下。 延时消抖 确认按下。 查询下一个值 减键按下。 延时消抖 确认按下。 查询上一个值 退出功能键按下。 返回 N Y N Y N Y Y N N Y Y N Y N N Y 入口 功能键按下。 延时消抖 确 认按下。 显示设定温度值 加键按下。 延时消抖 确认按下。 减键按下。 延时消抖 确认按下。 温度超出设定值。 取消报警 判断退出界面。 返回 上调设定值 下调设定值 声光报警 图 19 温度设定、报警模块流程图 数码管驱动模块 本设 计数码 管通过锁存器接单片机 P0 口,采用动态扫描驱动 7 段 LED 数码管进行显示,需调用延时子程序以稳定显示。 模块流程图如下: 图 20 数码管驱动模块流程图 入口 关段选 P0 置高 开位选 送位码 关位选 P0 清零 开段选 送段码 关段选 延时 返回 6 源程序 include define uchar unsigned char define uint unsigned int /*************************变量定义 ************************************/ sbit DQ=P2^2。 //ds18b20 端口 sbit beep=P2^3。 //蜂鸣器使能端 sbit dula=P2^6。 //数码管段选使能 sbit wela=P2^7。 //数码管位选使能 sbit add=P3^5。 //加键 sbit sub=P3^4。 //减键 sbit alarm=P3^6。 //设定报警 功能键 sbit record=P3^7。 //查询 温度 记录功能键 uchar code tabled[]={ 0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f, //0~9 的七段数码管段码 0x40,0x63,0x39}。 // c 的段码 uchar code tablew[]={0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f}。 //1~8 个数码管的位选码 uchar recordtable[10]。 //存储过去的十个温度值 uchar temperature。 //温度值 uchar countsec,recordnum,count。 //计数变量 uint countmin。 //计数变量 uchar alanum=30。 //报警温度值 ,初始值为 30 摄氏度 uchar z=65。 //消抖延时函数入口参数 /**********************函数声明 ***************************************/ void delay1(uchar MS)。 //动态扫描延时子程序 void delay(uchar i)。 //DS18B20 工作延时子程序 void Init_DS18B20()。 //DS18B20 初始化子程序 void WriteOneChar(unsigned char dat)。 //向 DS18B。课程设计论文-基于51单片机与ds18b20的数字温度计设计
相关推荐
if(s1==0) //功能键按下 { while(s1==0)。 //松手检测 s1num++。 //功能键按下计数 TR0=0。 //T0 定时停止,进入时间调整 switch(s1num) { case 1: write_(0x80+0x40+0x09)。 break。 //光标闪烁位定为秒个位 case 2: write_(0x80+0x40+0x06)。 break。
LCALL DL1MS LCALL DL1MS JNB , SSWAIT SSST: MOV TIME, TIMED0。 120S LCALL TUNBCD MOV SN, 99H MOV EW, 0AAH SETB EA。 总中断开放 SETB PX1 SETB EX1 SETB ET0。 允许 T0 中断 SETB TR0。 开启 T0 定时器 MOV R4, 14H。 1S 定时用初值(
的制作 本次设计的数字钟系统中由于频率不是特别高,所以在设计 PCB 板时不存在考虑走线之间频率干扰问题, 但由于设计规定了 PCB 板的大小为 7*9cM,并且是单面板,所以对我们的设计带来了一定的难度,在设计中不得不通过走飞线的方式完成 PCB 板的制作。 5. 1 PCB 板的制作规则 我在数字钟设计中采用 Orcad 软件平台, 完成了 PCB 的制作, 在 PCB
661 65235 2 RE 622 64732 高 6 LA 1760 65252 中 3 M 659 64777 6 1865 65268 中 4 FA 698 64820 高 7 SI 1967 65283 有了这张表,我们就可以顺利地完成发声程序的编写了。 根据以上的思路以及频率表可以写出发声程序如下: code unsigned char FH[]={ 0xFC,0xFC,0xFD
台阶高度内应分层浇捣,每浇注完一台阶应稍停 小时,待其初步获得陈实后,在浇注上层,以下台阶砼溢出,台阶表面应基本抹平。 基础上有插筋时,要加以加固,保证插筋位置正确,防止浇注砼发生位移,砼浇注完毕,外露表面应覆盖浇水养护。 四、质量控制和检验方法: 模版: 模版应有足够的强度和稳定性; 模版板缝应符合规定; 模版与砼接触面应清理干净并涂刷隔离剂; 钢筋 钢筋的品种质量、焊条的牌号应符合设计要求;
角色扮演法既是要求被试者扮演一个特定的管理角色来观察被试者扮演一个特定的管 理角色来观察被试者的多种表现,了解其心理素质和潜在能力的一种测评方法,又是通过情景模拟,要求其扮演指定行为角色,并对行为表现进行评定和反馈,以此来帮助其发展和提高行为技能最有效的一种培训方法。 它是一项参与性的活动,具有较高的灵活性。 角色扮演过程中,需要角色之间的配合、交流与沟通,因此可以增加角色之间的感情交流