基于PIC单片机温度-脉搏-DS18B20温度-液晶12864显示(proteus仿真+源程序)

一、系统方案
1、上电初始化液晶第一行显示脉搏,第二行显示温度,第三行显示模式,第四行显示强度;按下K1按键可以选择模式,催眼模式或治疗模式。
2、治疗模块下,可以通过K2、K3修改强度。
在这里插入图片描述
二、硬件设计
原理图如下:
在这里插入图片描述

三、单片机软件设计
1、首先是系统初始化
//lcdrw = 0; //关闭
TRISE = 0x00; //输出口
PORTE = 0x00;
TRISD = 0x00; // 输出口

TRISB = 0x0f; // 输入	
TRISC = 0x00; // 输出
TRISA=0x04;
PORTA=0;

Lcd_Initial(); //LCD初始化
Reset_DS18B20();

  T1CKPS0=1;           //定时器分频器8分频

T1CKPS1=1; //定时器分频器8分频
TMR1CS=0; //TMR1工作于定时器方式
TMR1L=(65536-100)%256; //定时12500个时钟初始值
TMR1H=(65536-100)/256; //定时12500个时钟初始值
GIE=1; //总中断允许
PEIE=1; //外围功能模块中断允许
TMR1IE=1; //TMR1中断允许
TMR1ON=1; //启动TMR1
pwm(20);
2、液晶显示程序
/********************************************************************************************

  • 函数名称:Lcd_Write_Command()

  • 功 能:写指令代码

  • 入口参数:无

  • 出口参数:无
    */
    void Lcd_Write_Command(uchar temp)
    {
    port=temp;
    rs=0;
    rw=0;
    e=1;
    e=0;
    }
    /

  • 函数名称:Lcd_Write_Byte()

  • 功 能:写数据

  • 入口参数:无

  • 出口参数:无
    ********************************************************************************************/
    void Lcd_Write_Byte(uchar temp)
    {
    port=temp;
    rs=1;
    rw=0;
    e=1;
    e=0;
    }
    3、按键程序
    void key()
    {
    if (RB0 == 0)//
    {
    delay(10); //延时
    if (RB0 == 0)//
    {
    while (RB0== 0);
    mode=!mode;
    if(mode0){ dangwei=2;pwm(20);}
    }
    }
    if (RB1 == 0)//
    {
    delay(10); //延时
    if (RB1
    0)//
    {
    while (RB1== 0);
    if(mode==1)
    {
    dangwei++;
    if(dangwei>6)dangwei=1;
    pwm(dangwei
    10);

               }
               }
          }
    

    if (RB2 == 0)//
    {
    delay(10); //延时
    if (RB2 == 0)//
    {
    while (RB2== 0);
    if(mode==1)
    {

                   if(dangwei>1)dangwei--;
                   pwm(dangwei*10);
                   
               }
         }
      }
    

}

4、核心算法程序
while (1)
{

     Lcd_Character_16X16(0,0,8,data_shuju[2]);	//显示温
    Lcd_Character_16X16(0,0,24,data_shuju[3]);	//显示度
     Lcd_Character_16X8( 0,0,40, data_shuju1[10]);//显示:
    Lcd_Character_16X8( 0,0,48, data_shuju1[ad/100]);//显示:
      Lcd_Character_16X8( 0,0,56, data_shuju1[ad%100/10]);//显示:
     Lcd_Character_16X8( 0,0,64, data_shuju1[ad%10]);//显示:
     
    
     
     
     Lcd_Character_16X16(0,2,8,data_shuju[0]);	//显示温
    Lcd_Character_16X16(0,2,24,data_shuju[1]);	//显示度
     Lcd_Character_16X8( 0,2,40, data_shuju1[10]);//显示:
    Lcd_Character_16X8( 0,2,48, data_shuju1[temp/10]);//显示:
    Lcd_Character_16X8( 0,2,56, data_shuju1[temp%10]);//显示:
   
         Lcd_Character_16X16(0,4,8,data_shuju[4]);	//显示温
    Lcd_Character_16X16(0,4,24,data_shuju[5]);	//显示度
     Lcd_Character_16X8( 0,4,40, data_shuju1[10]);//显示:
     if(mode==0)
     {
        Lcd_Character_16X16(0,4,48,data_shuju[6]);	//显示温
    Lcd_Character_16X16(0,4,64,data_shuju[7]);	//显示度  
     
     }
     else
     {
           Lcd_Character_16X16(0,4,48,data_shuju[8]);	//显示温
    Lcd_Character_16X16(0,4,64,data_shuju[9]);	//显示度  
     
         
     }
  
           Lcd_Character_16X16(0,6,8,data_shuju[10]);	//显示温
    Lcd_Character_16X16(0,6,24,data_shuju[11]);	//显示度
     Lcd_Character_16X8( 0,6,40, data_shuju1[10]);//显示
    Lcd_Character_16X8( 0,6,48, data_shuju1[dangwei]);//显示:
     
ad=get_ad();
 key();

 temp=DS18B20_Get();
if((ad>alarm)||(temp>th))  TMR1ON=1;
else { TMR1ON=0;RC7=1;}


}

四、proteus仿真设计
Proteus软件是一款应用比较广泛的工具,它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况,这样就可以通过软件仿真来验证我们设计的方案有没有问题,如果有问题,可以重新选择器件,连接器件,直到达到我们设定的目的,避免我们搭建实物的时候,如果当初选择的方案有问题,我们器件都已经焊接好了,再去卸载下去,再去焊接新的方案的器件,测试,这样会浪费人力和物力,也给开发者带来一定困惑,Proteus仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/99622.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Day5:react函数组件与类组件

「目标」: 持续输出!每日分享关于web前端常见知识、面试题、性能优化、新技术等方面的内容。 「主要面向群体:」前端开发工程师(初、中、高级)、应届、转行、培训、自学等同学 Day4-今日话题 react「函数组件和类组件」的区别&…

Spring-5.0.x源码下载及本地环境搭建

一、Spring源码下载 从github上下载Spring的源代码 下载地址:https://github.com/spring-projects/spring-framework 访问地址之后,打开Spring的代码页面找到你想下载的版本,如5.0.x,如下图所示: 下载方式一&#x…

多应用模式下,忽略项目的入口文件,重写Apache规则

多应用模式下,忽略项目的入口文件,重写Apache规则 首先,我的项目是具有两个应用,admin和index,同时给它们绑定了域名,但是每次访问时都需要加入项目的入口文件地址 index.php ,为了忽略这个入口文件,只能通…

Linux 进程

目录 进程与程序main()函数由谁调用?程序如何结束?何为进程?进程号 进程的环境变量应用程序中获取环境变量添加/删除/修改环境变量清空环境变量环境变量的作用 进程的内存布局进程的虚拟地址空间fork()创建子进程父、子进程间的文件共享系统调…

恢复已删除的git分支

1.打开对应项目文件夹目录,在目录下执行git命令 2.执行命令 git reflog --dateiso , 找到最后一次commit 的id 3. 执行git checkout -b 新建分支名称 commitId 就会基于commitId这次提交时工作区新建一个分支,就能达到我们找到删除分支的代码效果。 4.直接看ide…

HTTP协议详解:互联网通信背后的规则与秘密

个人主页:insist--个人主页​​​​​​ 本文专栏:网络基础——带你走进网络世界 本专栏会持续更新网络基础知识,希望大家多多支持,让我们一起探索这个神奇而广阔的网络世界。 目录 一、HTTP协议的基本概念 二、HTTP协议的主要特…

文件包含漏洞利用的几种方法

文章目录 安装环境启动环境漏洞花式利用蚁剑连接图片马读取敏感文件(hosts)读取该网站的php源码 代码审计 安装环境 安装phpstudy,下载MetInfo 5.0.4版本软件,复制到phpstudy目录下的www目录中。 打开phpstudy,访问浏…

【JavaSE】String类

两种创建String对象的区别 String s1 "hello"; String s2 new String("hello");s1是先查看常量池是否有 “hello” 数据空间,如果有就直接指向它,如果没有就创建然后指向它。s1最终指向的是常量池的空间地址。 s2是先在堆中创建空…

C++笔记之临时变量与临时对象与匿名对象

C笔记之临时变量与临时对象与匿名对象 code review! 文章目录 C笔记之临时变量与临时对象与匿名对象1.C中的临时变量指的是什么?2.C中的临时对象指的是什么?3.C中临时对象的作用是什么?什么时候要用到临时对象?4.给我列举具体的例子说明临…

问题记录:jenkins添加节点时Launch method没有Launch agents via SSH选项

jenkins问题记录 在jenkins主页,左侧点击Manage Jenkins,找到plugins选项,搜索如下插件安装: 安装完插件后,即可看到ssh选项出来了

NodeJS的简介以及下载和安装

本章节会带大家下载并安装NodeJs 以及简单的入门,配有超详细的图片,一步步带大家进行下载与安装 NodeJs简介关于前端与后端Node是什么?为什么要学习NodeNodeJS的优点: NodeJS的下载与安装NodeJS的下载: NodeJS的快速入…

浏览器端vscode docker搭建(附带python环境)

dockerfile from centos:7 #安装python环境 run yum -y install wget openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel zlib-devel libffi-devel gcc make run wget https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz run tar -xvf Python-3.9.…

Elasticsearch 7.6 - API高阶操作篇

ES 7.6 - API高阶操作篇 分片和副本索引别名添加别名查询所有别名删除别名使用别名代替索引操作代替插入代替查询 场景实操 滚动索引索引模板创建索引模板查看模板删除模板 场景实操一把索引的生命周期数据迁移APIGEO(地理)API索引准备矩形查询圆形查询多边形查询 自定义分词器…

【DB】Windows 环境修改MySql 8.0.x 密码

目录 一. 问题 二. 说明 三. 步骤 3.1 账户 3.2 服务 3.3 文件 四. 参考 一. 问题 好久没装数据了, 最近导入数据, 次哦,密码忘记了,网上搜了搜也不靠谱; 去管网上扒拉看看如何修改吧? 二. 说明 使用超级管理员模式, 看下本机 MySQL 版本号 $…

QA工具开发流程

前言 在项目上线前期,这边根据需求制作了一套QA测试工具。主要分为以下四个模块的测试**图1** **数值测试:**主要包括了角色的等级变更、游戏里货币的变更、(目前已制作的)游戏道具的数量变更。这些可能归一为一类测试模型**动画…

[管理与领导-60]:IT基层管理者 - 扩展技能 - 3 - 通过面试招到合适的人选

目录 前言: 一、招聘 1.1 什么是招聘 1.2 招聘 VS 招募 1.3 甄选 1.4 招聘中的重要原则 1.5 招聘的本质 1.6 人才匹配的维度 1.7 人员招聘中的误区 二、面试 2.1 何为面试 2.2 为什么面试 2.3 面试的注意事项 2.4 面试的误区 2.5 如何进行面试 前言…

lnmp架构-nginx

6.nginx基础配置 证书 重定向(80重定向到443) 当访问http时 直接到 https 自动索引: 下载方便 Nginx缓存配置 :缓存可以降低网站带宽,加速用户访问 日志轮询 禁用不必要的日志记录 以节省磁盘IO的消耗 监控的信息 监…

k8s的交付与部署案例操作

一 k8s的概念 1.1 k8s k8s是一个轻量级的,用于管理容器化应用和服务的平台。通过k8s能够进行应用的自动化部署和扩容缩容。 1.2 k8s核心部分 1.prod: 最小的部署单元;一组容器的集合;共享网络;生命周期是短暂的; …

Gazebo仿真环境下的强化学习实现

Gazebo仿真环境下的强化学习实现 主体源码参照《Goal-Driven Autonomous Exploration Through Deep Reinforcement Learning》 文章目录 Gazebo仿真环境下的强化学习实现1. 源码拉取2. 强化学习实现2.1 环境2.2 动作空间2.3 状态空间2.4 奖励空间2.5 TD3训练 3. 总结 1. 源码…

界面控件DevExpress WinForms(v23.2)下半年发展路线图

本文主要概述了官方在下半年(v23.2)中一些与DevExpress WinForms相关的开发计划,重点关注的领域将是可访问性支持和支持.NET 8。 DevExpress WinForms有180组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。同时能…