字符型液晶12864(ST7290)驱动模块
扫描二维码
随时随地手机看文章
/*******************************************************************************
** 测试芯片:M16
** 晶振 : 8.000000
** 名称 : ST7290驱动模块
** 总结 : 主要是要在void LCM_write_byte( uchar byte )此函数后加一个延时。最小5us
** 说明 : 本驱动配合延时驱动 delay.h, 用到string.h
** 用到 uchar 和 uint 和 long int 和 float 类型 , 请注意使用
*******************************************************************************/
#ifndef _LCM12864_H_
#define _LCM12864_H_
#include "DELAY.H"
#include
/*------LPC2148与LCM连接信息-----------------------------------------
PC_0 -> CS
PC_1 -> SID
PC_2 -> SCLK
RESET -> 悬空
PSB -> 低电平
------------------------------------------------------------------*/
#include "stdlib.h"
#include "stdio.h"
#include "string.h"
#define uchar unsigned char
#define uint unsigned int
#define CS_SET PORTC |= (1 << 0) /******** 第四脚CS -- PC_0 **********/
#define CS_CLR PORTC &=~ (1 << 0)
#define SID_SET PORTC |= (1 << 1) /******** 第五脚SID -- PC_1 **********/
#define SID_CLR PORTC &=~ (1 << 1)
#define SCLK_SET PORTC |= (1 << 2) /******** 第六脚SCLK -- PC_2 **********/
#define SCLK_CLR PORTC &=~ (1 << 2)
#define PORT_DDR_OUT { DDRC = ( 1 << 0 ) | ( 1 << 1 ) | ( 1 << 2 ); } //在LCM_init()函数里使用
//---------------------------------------------------------------------------------
/****************************函数声明****************************************/
void long_to_string( long int dataint, char *p ); //整型数据转化为字符串
void float_2_string( float dataf, char *datastr, uchar p ); // 浮点型数据转化为字符串
void LCM_write_byte( uchar byte ); //单线写一个字节
void LCM_write_command( uchar command ); //写指令
void LCM_write_data( uchar data ); //写数据
void LCM_init( void ); //LCM初始化
void LCM_set_rc( uchar r, uchar c ); //设置液晶显示位置
void LCM_write_string( uchar r, uchar c, char *string ); //写中文汉字串
void LCM_write_datalongint( uchar r, uchar c, long int datalongint ); //写整数
void LCM_write_datafloat( uchar r, uchar c, float dataf, uchar p ); //写浮点型数据
#endif
#define _ARMLCM12864_C_
#include "LCM12864.H"
/*****************************************
** 将一个整型数据转化为字符串
** 入口参数 要转换的整型数: dataint, 数组p[10]
** 改变思路:整数 -->字符串-->加字符串结束标志
** 可以转换小于0的整数
*****************************************/
void long_to_string( long int dataint, char *p )
{
long int datainttmp;
char *p1; //指向转换成为数组时用到
char datachar1[10];
char datachar2[10];
uchar n = 0; //取整型数据的位数
uchar i = 0;
uchar k1 = 0; //取字符个数
uchar k2 = 0; //取字符个数
if( dataint >= 0 )
datainttmp = ( long int )dataint;
else datainttmp = ( long int )dataint * ( -1 );
p1 = datachar2;
while( datainttmp != 0 )
{
datachar1[n++] = ( datainttmp % 10 ) + 0x30; //转换为字符并取得这个整型数据的位数 n
datainttmp /= 10;
}
if( dataint > 0 ) //如果要转换的整型数据>0
{
k1 = n - 1;
k2 = n;
for( i = 0; i < k2; i++, k1-- )
{
datachar2[k1] = datachar1[i]; //将数字符串倒过来
}
datachar2[n] = '