📄 lcd1602.c
字号:
/*
* Copyright (C) 2007, 华中科技大学电气与电子科技创新中心
* All Rights Reserved.
*
* 文件名: lcd1602.h
* 文件描述: 1602LCD主程序
*
* 当前版本: 1.0
* 作者: Zuowenping(fmku007@163.com)
* 完成日期: 2007年12月17日
*
*/
#include "lcd1602.h"
#include "intrins.h"
#define CLR 0x01;
#define DIS_SW 0x0c;
#define FUNC 0x38
/**************************************
///////////////查忙
***************************************/
void check_busy()
{
BUSY=1;
RS=0;
RW=1;
E=1;
nop();
while(BUSY)
{
E=0;
nop();
E=1;
}
}
/**************************************
//////////////发送数据
***************************************/
void wr_data(unsigned char data1)
{
check_busy();
RS=1;
RW=0;
E=1;
P0=data1;
nop();
E=0;
nop();
E=1;
}
/**************************************
///////////////发送指令
***************************************/
void wr_code(unsigned char code1)
{
check_busy();
RS=0;
RW=0;
E=1;
P0=code1;
nop();
E=0;
nop();
E=1;
}
/**************************************
///////////////LCD初始化
***************************************/
void lcd_init(void)
{
wr_code(0x01); //清屏
wr_code(0x0c); //开显示器,关光标
wr_code(FUNC); //双行显示,八位数据,小字符
}
/**************************************
///////////////向LCD某位置写入字符; x:0-15 y:0-1
***************************************/
void put_char(unsigned char x,unsigned char y,unsigned char charin)
{
unsigned char addr;
if(y==0)
addr=0x80;
else
addr=0xc0;
addr=addr+x;
wr_code(addr);
wr_data(charin);
}
/**************************************
///////////////向LCD某行写入字符串;
***************************************/
void put_str(unsigned char *p,bit row)
{
unsigned char addr_st,i,len=0;
while (p[len] >31)
len++;
if(row==0)
addr_st=0x80;
else
addr_st=0xc0;
for(i=0;i<len;i++)
{ wr_code(addr_st);
wr_data(*p);
addr_st++;
p++;
}
}
/**************************************
///////////////延时;
***************************************/
void nop()
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -