• LCD1602显示温度源码程序---STC89C52实时用PCF8591采集温度LCD显示


    一、创建头文件lcd1602.h代码如下:

    #ifndef __LCD1602_H_
    #define __LCD1602_H_
    
    #include <reg52.h>
    #include <stdio.h>
    
    #define uint unsigned int    //定义常用数据类型替代码
    #define uchar unsigned char
    #define dat P0                        //定义LCD1602的数据口为P0
    
    sbit rs=P1^4;                        //定义RS口为P14
    sbit rw=P1^5;                        //定义RW口为P15
    sbit e=P1^6;                        //定义E口为P16
    
    void display(unsigned int temp);
    void int_1602(void);                    //启动LCM程序
    void dat_1602(uchar a);                //写数据到LCM程序
    void com_1602(uchar a);                //写指令到LCM程序
    void busy_1602(void);                //查询忙碌标志信号程序
    void delay_1ms(void);                //延时程序
    void Delay(unsigned int i);
    
    #endif

    二、创建编译文件lcd1602.c代码如下:

    #include "lcd1602.h"    //此文件中定义了单片机的一些特殊功能寄存器
    
    uchar busy;                         //1602判忙标志
    
    uint i=0;
    uint j=0;
    
    uint temp;
    
    void Delay(unsigned int i)            
    {
        while(i--);
    }
    
    void delay_1ms(void)                //延时程序
    {
        uchar i,j;
        for(i=0;i<10;i++)
        for(j=0;j<20;j++); 
    }
    
    void busy_1602(void)                //查询忙碌标志信号程序
    {
        do
        {
            e=0;
            rw=1;
            rs=0;
            e=1;
            busy=dat;
            e=0;    
            delay_1ms();
        } while(busy&&0x10==1);
    }
    
    void com_1602(uchar a)                //写指令到LCM程序
    {
           busy_1602();
           e=0;
           rw=0;
           rs=0;
           e=1;
           dat=a;
           e=0;
    }
    
    void dat_1602(uchar a)                //写数据到LCM程序
    {
           busy_1602();
           e=0;
           rw=0;
           rs=1;
           e=1;
           dat=a;
           e=0;
    }
    
    void int_1602(void)                    //启动LCM程序
    {
           com_1602(0x38); 
           com_1602(0x0c);
           com_1602(0x06);
    }
    
    void display(unsigned int temp)            //显示温度
    {
        uchar rev_data[16]={" -temperature!- "};
        com_1602(0x80);
        for(i=0;i<16;i++)                //发送数据第一行
        {
            dat_1602(rev_data[i]);
        }
        temp*=10;
        com_1602(0xc0);//第二行
        dat_1602('T');
        dat_1602('H');
        dat_1602('=');
        dat_1602(temp/100%10+0x30);
        dat_1602(temp/10%10+0x30);
        dat_1602('.');
        dat_1602(temp%10+0x30);
        dat_1602(0xdf);
        dat_1602('C');
    }

    三、主程序见:https://www.cnblogs.com/wlei5206/p/13023977.html

  • 相关阅读:
    ui自动化-则神第一天04-学习方法
    PHP unserialize()
    路径中 斜杠/和反斜杠 的区别
    PhpStorm 克隆下来的项目改动,版本控制不起效果
    PhpStorm 回到上次编辑位置的快捷键
    mysql max_allowed_packet查询和修改
    PHP大批量插入数据库的3种方法和速度对比
    mysql5.7.23安装详细过程
    JS 放大镜
    aviary 图片编辑器
  • 原文地址:https://www.cnblogs.com/wlei5206/p/13024011.html
Copyright © 2020-2023  润新知