0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于PIC单片机温度-脉搏-DS18B20温度-液晶12864显示

bbxyliyang 来源:bbxyliyang 作者:bbxyliyang 2023-08-25 16:36 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群


一、系统方案
1、上电初始化液晶第一行显示脉搏,第二行显示温度,第三行显示模式,第四行显示强度;按下K1按键可以选择模式,催眼模式或治疗模式。
2、治疗模块下,可以通过K2、K3修改强度。

wKgaomToaAOAJ_FjAAAUph4x0OE297.png


二、硬件设计
原理图如下:

wKgZomToaAqAO4-qAAINhA7wPXo324.png


三、单片机软件设计
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(mode==0){ 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仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。

wKgZomToaBSAXU_6AAI5AXfitJE374.png


审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6074

    文章

    45340

    浏览量

    663452
  • 液晶
    +关注

    关注

    6

    文章

    626

    浏览量

    71074
  • PIC
    PIC
    +关注

    关注

    8

    文章

    511

    浏览量

    90436
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    要做一个DS18B20的读取程序,单总线需要配置为输入或者输出,怎么配置好?

    目前要做一个DS18B20的读取程序,单总线需要配置为输入或者输出。怎么配置好
    发表于 11-18 06:30

    使用18b20软件包报错怎么解决?

    In file included from ../packages/ds18b20-latest/src/dallas_ds18b20_sensor_v1.c:12:0: C
    发表于 10-14 06:49

    PIC18F16Q20 Curiosity Nano开发板技术解析与应用指南

    Microchip Technology PIC18F16Q20 Curiosity Nano套件提供用于评估PIC18-Q20系列微控制器的硬件平台。PIC18F16Q20微控制器安装在电路板上
    的头像 发表于 10-10 10:31 433次阅读
    <b class='flag-5'>PIC18F16Q20</b> Curiosity Nano开发板技术解析与应用指南

    STM32项目分享:矿井环境监测系统

    01—项目简介1.功能详解STM32矿井环境监测系统功能如下:STM32F103C8T6单片机作为主控制器DS18B20测量环境温度
    的头像 发表于 08-16 10:03 703次阅读
    STM32项目分享:矿井环境监测系统

    液体介电常数测试仪中的温度控制与热漂移抑制

    55。同时,温度波动会使电阻、电容等无源元件参数改变,晶体管等有源器件工作点偏移,最终影响测量精度。 温度控制方案设计 温度测量模块 常用温度传感器中,热电偶测量范围广但需冷端补偿;
    的头像 发表于 07-31 13:23 444次阅读
    液体介电常数测试仪中的<b class='flag-5'>温度</b>控制与热漂移抑制

    给予单片机温度控制系统设计

    、执行机构、显示模块和电源模块组成。单片机是系统的核心,负责处理温度信息并发出控制指令;温度传感器用于实时采集环境或物体的温度数据,将物理量
    的头像 发表于 07-16 10:57 452次阅读

    单片机实例项目:DS18B20温度传感器

    单片机实例项目:DS18B20温度传感器,推荐下载!
    发表于 06-03 20:59

    血泪教训总结:Air780EPM的LuatOS二次开发——OneWire协议调试注意事项

    的OneWire通信,大幅提升项目开发效率。 一、LuatOS 及 OneWire 说明   LuatOS 支持 OneWire 通信协议,本文以 DS18B20 温度传感器和 Air780EPM 搭配
    的头像 发表于 03-20 17:52 905次阅读
    血泪教训总结:Air780EPM的LuatOS二次开发——OneWire协议调试注意事项

    最佳实践指南:Air780EPM的LuatOS二次开发——OneWire协议调试的注意事项

    在物联网设备开发中,精准且稳定的数据传输是构建智能系统的核心。 一、LuatOS 及 OneWire 说明   LuatOS 支持 OneWire 通信协议,本文以 DS18B20 温度传感器
    的头像 发表于 03-17 16:57 578次阅读
    最佳实践指南:Air780EPM的LuatOS二次开发——OneWire协议调试的注意事项

    基于FPGA的DS18B20数字温度传感器测温实例

    本文将使用三段式状态(Moore型)的写法来对DS18B20进行测温操作,以便了解DS18B20和熟悉三段式状态的写法。
    的头像 发表于 03-17 11:06 2084次阅读
    基于FPGA的<b class='flag-5'>DS18B20</b>数字<b class='flag-5'>温度</b>传感器测温实例

    DS18B20实时温度传感器中文资料

    DS18B20 是一种单总线数字温度传感器,它被广泛应用于各种领域,例如气象监测、室内温度控制、工业自动化等。DS18B20 采用了单总线接口(One-Wire Interface),
    发表于 02-28 17:02 5次下载

    基于FPGA的温度传感器(ds18b20)驱动设计

    本篇主要讨论基于FPGA的温度传感器(ds18b20)驱动设计---第一版 设计实现:利用FPGA驱动DS18b20,读取到温度数值显示到数
    的头像 发表于 01-16 14:08 2044次阅读
    基于FPGA的<b class='flag-5'>温度</b>传感器(<b class='flag-5'>ds18b20</b>)驱动设计

    【正点原子STM32H7R3开发套件试用体验】DS18B20、DHT11温湿度采集

    错误。 检测到 DS18B20 后,开始读取温度显示在 LCD,每隔 100ms 读取并显示,串口发送温度值。 LED0 闪烁,指示程序运
    发表于 01-01 11:16

    51单片机温度报警器

    电子发烧友网站提供《51单片机温度报警器.zip》资料免费下载
    发表于 12-30 14:16 4次下载

    《DNESP32S3使用指南-IDF版_V1.6》第二十九章 DS18B20实验

    DS18B20的通信,并把从温度传感器得到的温度显示在LCD上。本章分为如下几个小节:29.1 DS18B20简介29.2 硬件设计29.3
    发表于 12-25 09:43