|
這幾天剛好用51做了一個(gè)lcd1602顯示的溫度器,過(guò)程還算順利,現(xiàn)在附上1602的源代碼
引腳都是根據(jù)開(kāi)發(fā)板上定義的,lcd1602的顯示較數(shù)碼管可以說(shuō)更為簡(jiǎn)單,在初始化之后,只要先寫(xiě)入指令,然后再直接寫(xiě)入數(shù)據(jù)就行,
相對(duì)于數(shù)碼管需要段碼和位碼選擇顯示方便了很多,顯示的功能也更為強(qiáng)大
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(':');
}
|
評(píng)分
-
查看全部評(píng)分
|