📄 lcd.h
字号:
/*
****************************************
//头文件名:LCD液晶驱动
//创建人 :hebei
//创建时间:2008-5-30
//芯片 : m16
//晶振 : 8.0000Mhz
//说明 : 为节省程序空间,尽量不用浮点型显示, 可以用条件编译去掉,可自行修改。
函数前带有使用例子。
//
// 注意 : 本驱动对以前版本做更新,带写负浮点数和写负整数(其实是从12864的驱动里拷贝过来而已)
如果没有必要不推荐使用此版本,因为在算法上增加额外时间与空间, 同一程序增加flash约为2%左右
****************************************
*/
/*------AVR与LCD连接信息-----------------------------------------
PA_2 ->RS
PA_3 ->EN
PA_4 ->D4
PA_5 ->D5
PA_6 ->D6
PA_7 ->D7 6根线
----------------------------------------------------------------*/
#ifndef _LCD_H_
#define _LCD_H_
#include "DELAY.H"
#include <string.h>
#include <stdlib.h>
//===============使用本驱动,改变下面配置信息即可==================
#define uint unsigned int
#define uchar unsigned char
#define LEFT 0
#define RIGHT 1
#define RS_SET PORTA |= (1 << 1)
#define RS_CLR PORTA &=~ (1 << 1)
#define EN_SET PORTA |= (1 << 3)
#define EN_CLR PORTA &=~ (1 << 3)
#define DB PORTA //定义数据口
#define DB_DDR_OUT { DDRA |= 0b11110000, DDRA |= 0b00001010; } //使用到的口线定义为1
//=================================================================
//===================函数说明======================================
void long_to_string( long int dataint, char *p ); //整型数据转化为字符串
void float_2_string( float dataf, char *datastr, uchar p ); // 浮点型数据转化为字符串
void LCD_en_write(void); //使能
void LCD_write_command(uchar command); //写指令
void LCD_write_data(uchar DATA); //写数据
void LCD_init( void ); //初始化
void LCD_set_rc( uchar r, uchar c ); //写位置
void LCD_write_string(uchar r, uchar c, uchar *s); //写字符串
void LCD_write_char(uchar r, uchar c, uchar DATA); //写字符
void LCD_write_chardata( uchar r, uchar c, uchar chardata[]); //写整型字符n
void LCD_write_array( uchar r, uchar c, uchar array[] ); //写字符数组
void LCD_write_datalongint( uchar r, uchar c, long int datalongint ); //写整数
void LCD_write_datafloat( uchar r, uchar c, float dataf, uchar p ); //写浮点型数据
//==================================================================
#endif
/*---------------------------------------例主程序--------------------------------------
#include <iom16v.h>
#include "lcd.h"
#include "delay.h"
void init_devices( void )
{
LCD_init();
}
void main( void )
{
long int i = 0;
float tmp_f = 0.00;
init_devices(); //目标板初始化
LCD_write_string( 1, 4, "TEST LCD" ); //写字符串
delay_ns( 1 ); //延时1S
LCD_write_string( 1, 0, " " ); //清第一行数据
for( i = 0; i < 1234; i++ ) //显示整数,小数
{
LCD_write_datalongint( 2, 1, i ); //显示正整数 i
LCD_write_datalongint( 1, 0, i*(-1) ); //显示负整数 -i
delay_nms( 10 );
tmp_f = 1.234 * i;
LCD_write_datafloat( 2, 8, tmp_f, 2 ); //显示正浮点数tmp_f, 小数位2位
LCD_write_datafloat( 1, 7, tmp_f*(-1), 2 ); //显示负浮点数-tmp_f, 小数位2位
if( i == 1233 )
{
LCD_write_string( 1, 0, " " ); //清第一行数据
LCD_write_string( 2, 0, " " ); //清第二行数据
i = 0;
}
}
}
*/
//--------------------------------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -