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


审核编辑 黄宇

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

    关注

    6078

    文章

    45589

    浏览量

    673937
  • 液晶
    +关注

    关注

    6

    文章

    627

    浏览量

    71391
  • PIC
    PIC
    +关注

    关注

    8

    文章

    512

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    HJ18B20 数字单总线温度传感器

    HJ18B20 立即开始温度转换,当温度转换正在进行时,主机这 时读总线将收到 O;当温度转换结束时,主机这时读总线将收到 1。若用信号线给 HJ
    发表于 04-21 14:17

    PIC18FXX20系列闪存微控制器编程全解析

    PIC18FXX20系列闪存微控制器编程全解析 在电子设计领域,微控制器的编程是一项基础且关键的工作。今天我们聚焦Microchip的PIC18FXX20系列闪存微控制器,深入探讨其编程规范和相关
    的头像 发表于 04-08 10:55 237次阅读

    一文看懂常用传感器:温度、光照、气体全覆盖

    对照各类传感器。01温度传感器常用型号:DS18B20、LM35、NTC热敏电阻工作原理:通过电阻或半导体材料随温度变化改变电压或电流接口类型:模拟输出、数字接口
    的头像 发表于 01-09 19:03 1254次阅读
    一文看懂常用传感器:<b class='flag-5'>温度</b>、光照、气体全覆盖

    浮思特 | 电子温度单片机如何选型?ABOV单片机提供几点很关键!

    一个优秀的电子温度计,其核心往往在于内部单片机(MCU)的性能与匹配度。如何选择一款合适的单片机,实现精准、稳定、低功耗的温度测量与交互,是产品开发中的重要课题。本文将从技术维度,为大
    的头像 发表于 12-15 09:43 795次阅读
    浮思特 | 电子<b class='flag-5'>温度</b>计<b class='flag-5'>单片机</b>如何选型?ABOV<b class='flag-5'>单片机</b>提供几点很关键!

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

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

    单总线接口数字温度传感器芯片GX18E20

    成为分布式测温系统的核心选择。GX18E20作为一款基于单总线协议的数字温度传感器芯片,在实现-55℃至+125℃宽范围测温的同时,支持多点组网与报警设定,适用于HVAC、粮情监测、工业过程控制等复杂场景。
    的头像 发表于 11-11 15:22 650次阅读

    使用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 1046次阅读
    <b class='flag-5'>PIC18F16Q20</b> Curiosity Nano开发板技术解析与应用指南

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

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

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

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

    PIC18F97J60系列数据手册

    PIC单片机是Microchip公司生产的一类单片机,和冯-诺依曼结构不同的哈佛结构,中文手册对于大家来讲可以方便开发
    发表于 07-28 16:37 0次下载

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

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

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

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

    基于51单片机的多功能万年历设计

    DS1302DS18B20DHT11PCF8574AT24C02LCD1602MAX7221级联等模块,代码功能实现部分:通过按键实现界面切换,按键选择和修改时间,开机显示当前时间(北京时间),闹钟时间存储具有记忆性,蜂鸣器闹钟报警,温湿度检测等,当前信息主要
    发表于 06-03 17:17 1次下载

    可以满足不同的低功耗应用的PY32F002B单片机

    PY32F002B 系列单片机采用高性能的 32 位 ARM® Cortex®-M0+内核,宽电压工作范围的 MCU。嵌入了24Kbytes Flash 和 3Kbytes SRAM 存储器,最高
    发表于 05-29 16:57