标题: lcd1602.h单片机源代码 [打印本页]

作者: cqupt.qwert    时间: 2019-6-12 00:45
标题: lcd1602.h单片机源代码
这几天刚好用51做了一个lcd1602显示的温度器,过程还算顺利,现在附上1602的源代码
引脚都是根据开发板上定义的,lcd1602的显示较数码管可以说更为简单,在初始化之后,只要先写入指令,然后再直接写入数据就行,
相对于数码管需要段码和位码选择显示方便了很多,显示的功能也更为强大


lcd1602.h
#ifndef _1602_H_
#define _1602_H_

#include "reg52.h"

#define uint unsigned int
#define uchar unsigned char
#define LCD P0

sbit RS = P2^6;
sbit RW = P2^5;
sbit E = P2^7;

void delay(uint c);
void Init_1602();
void write_com(uchar com);   
void write_dat(uchar dat);   
void Init1();
void Init2();

#endif

lcd1602.c
#include"lcd1602.h"

void delay(uint c)
{
    uchar a,b;
    for (; c>0; c--)
    {
         for (b=199;b>0;b--)
         {
              for(a=1;a>0;a--);
         }      
    }
}

void write_com(uchar com)   
{
    E = 0;   
    RS = 0;   
    RW = 0;   
   
    LCD = com;   
    delay(1);
   
    E = 1;     
    delay(5);
    E = 0;
}

void write_dat(uchar dat)   
{
    E = 0;   
    RS = 1;   
    RW = 0;   
   
    LCD = dat;
    delay(1);
   
    E = 1;     
    delay(5);
    E = 0;
}

void Init_1602()
{
    delay(10);
    write_com(0x38);   
    delay(5);
    write_com(0x0c);   
    delay(5);
    write_com(0x06);   
    delay(5);
    write_com(0x01);   
    delay(5);
    write_com(0x80);   
    delay(5);
}

void Init1()
{
    write_com(0x80);
    write_dat('T');
    write_com(0x81);
    write_dat('e');
    write_com(0x82);
    write_dat('m');
    write_com(0x83);
    write_dat('p');
    write_com(0x84);
    write_dat(':');
}

void Init2()
{
    write_com(0xc1);
    write_dat('T');
    write_com(0xc2);
    write_dat('H');
    write_com(0xc3);
    write_dat(':');
    write_com(0xc8);
    write_dat('T');
    write_com(0xc9);
    write_dat('L');
    write_com(0xca);
    write_dat(':');
}


作者: 51hei团团    时间: 2019-6-12 06:53
楼主能分享下工程文件吗?
作者: abc111111    时间: 2019-6-12 09:22
谢谢,正需要
作者: rsx9583    时间: 2019-6-12 15:07
支持楼主!我也没怎么好好玩过1602.




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1