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


审核编辑 黄宇

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

    关注

    6019

    文章

    44339

    浏览量

    627900
  • 液晶
    +关注

    关注

    6

    文章

    601

    浏览量

    69488
  • PIC
    PIC
    +关注

    关注

    8

    文章

    506

    浏览量

    87201
收藏 人收藏

    评论

    相关推荐

    ds18b20温度传感器如何使用

    DS18B20是一款广泛使用的数字温度传感器,它具有高精度、低功耗和易于使用的特点。 DS18B20温度传感器简介 DS18B20是由Max
    的头像 发表于 09-03 16:51 208次阅读

    ds18b20温度传感器是什么类型

    DS18B20温度传感器是一种数字温度传感器,它属于单总线(One-Wire)数字温度传感器类型。这意味着它仅需要一根数据线(加上电源线和地线,共三根线)就能与微处理器或其他数字电路进
    的头像 发表于 09-03 16:46 266次阅读

    基于51单片机烟雾DS18B20温度采集光强检测设计

    本资源内容概要:       这是基于51单片机烟雾DS18B20温度采集光强检测设计包含了电路图源文件(Altiumdesigner软件打开)、C语言程序源代码(keil软件打开)、元件清单
    发表于 06-27 11:37 0次下载

    基于51单片机烟雾及DS18B20温度检测设计

    本资源内容概要:       这是基于51单片机烟雾及DS18B20温度检测设计包含了电路图源文件(Altiumdesigner软件打开)、C语言程序源代码(keil软件打开)、元件清单(excel
    发表于 06-27 11:33 0次下载

    基于51单片机DS18B20温度采集控制风扇设计

    本资源内容概要:       这是基于51单片机DS18B20温度采集控制风扇设计包含了电路图源文件(Altiumdesigner软件打开)、C语言程序源代码(keil软件打开)、元件清单
    发表于 06-26 10:43 0次下载

    基于51单片机DS18B20温度采集1602液晶显示报警设计

    本资源内容概要:       这是基于51单片机DS18B20温度采集1602液晶显示报警设计包含了电路图源文件(Altiumdesigner软件打开)、C语言程序源代码(keil软件
    发表于 06-25 10:16 0次下载

    基于51单片机采集DS18B20多点温度电路图及程序元件清单

    本资源内容概要:       这是基于51单片机采集DS18B20多点温度电路图及程序设计包含了电路图源文件(Altiumdesigner软件打开)、C语言程序源代码(keil软件打开)、元件清单
    发表于 06-24 17:30 0次下载

    基于51单片机DS18B20温度检测上下限报警proteus仿真

    本资源内容概要:       这是基于51单片机DS18B20温度检测上下限报警proteus仿真及电路图程序元件清单设计包含了电路图源文件(Altiumdesigner软件打开)、C语言程序源代码
    发表于 06-18 10:13 1次下载

    基于STC8H8K64U和DS18B20温度采集和LabVIEW上位显示

    之前通过 STC 单片机DS18B20 实现了环境温度采集并串口显示,后面进一步想要实现温度的实时监测和数据记录保存,因此编写了 Lab
    发表于 04-08 12:28

    基于51单片机的多点温度检测网络,DS18B20传感器,代码,仿真,原理图等资料

    设计概述 基于DS18B20的多点温度测量监控系统设计,以AT89C52单片机作为主控制器,不断循环读取4组DS18B20(T1、T2、T3和T4)
    发表于 03-24 22:08

    单片机如何将ds18b20测得的温度通过串口发送到电脑上边?

    单片机如何将ds18b20测得的温度通过串口发送到电脑上边,获取到的温度是十进制,但是串口只能发送16进制,请问怎么转换才能发送正确的温度
    发表于 11-03 06:58

    51单片机可以用DS18B20检测温度后,通过蓝牙串口发送给手机上显示吗?

    51单片机可以用DS18B20检测温度后,通过蓝牙串口发送给手机上显示吗?
    发表于 11-03 06:04

    基于STM32最小系统的双DS18B20检测温度并在OLED上显示

    基于STM32最小系统的双DS18B20检测温度并在OLED上显示
    发表于 10-30 15:13 6次下载

    基于51单片机DS18B20温度测量仿真设计

    运用所学单片机知识,完成温度信号的测量。要求如下:单片机系统选择使用AT89C51,温度传感器采用DS18B20,在LED
    的头像 发表于 10-22 17:47 1362次阅读
    基于51<b class='flag-5'>单片机</b><b class='flag-5'>DS18B20</b><b class='flag-5'>温度</b>测量仿真设计

    51单片机DS18B20温度报警器proteus仿真设计_可调上下限

    通过DS18B20温度传感器检测温度显示在数码管上;
    的头像 发表于 10-17 09:35 2338次阅读
    51<b class='flag-5'>单片机</b><b class='flag-5'>DS18B20</b><b class='flag-5'>温度</b>报警器proteus仿真设计_可调上下限