#include "STC12C5A60S2.h"
#include "12864.h"
#include "math.h"
#include "common.h"
#define LCD12864Para_dataplay P1
sbit RS = P3^2;
sbit RW = P3^1;
sbit EN = P3^0;
void delay(uint i) //延时函数
{
while(i--);
}
void read_busy() //
{
RS = 0;
RW = 1;
EN = 1;
while(LCD12864Para_dataplay&0x80); //
EN = 0;
}
//uchar ReadByte() //
//{ uchar dat;
// read_busy();
// LCD12864Para_dataplay=0xff; //
// RS = 1;
// RW = 1;
// EN = 0;
// EN = 1;
// dat=LCD12864Para_dataplay; //
// EN = 0;
// return dat;
//}
void write_LCD_command(uchar value) // 写指令
{
read_busy();
RS = 0;
RW = 0;
EN =1;
LCD12864Para_dataplay = value;
delay(100);
EN = 0;
}
void write_LCD_data(uchar value) // 写数据
{
read_busy();
RS = 1;
RW = 0;
EN = 1;
LCD12864Para_dataplay = value;
delay(100);
EN = 0;
}
void init_LCD() //初始化
{
write_LCD_command(0x01); //清除LCD的显示内容
delay(1000);
write_LCD_command(0x30); //基本指令操作
delay(1000);
write_LCD_command(0x03); //
delay(1000);
write_LCD_command(0x0c); //设置开显示,不显示光标
delay(1000);
write_LCD_command(0x01); //清除LCD的显示内容
delay(1000);
write_LCD_command(0x06); //写一个字符后地址指针加1
}
/**************************************************************************************************************
函数名称 :LCD_Word
函数功能:字符显示函数
入口参数: uchar addr:显示的地址 第一行0x80~0x87
第二行0x90~0x97
第三行0x88~0x8f
第四行0x98~0x9f
uchar *dat:显示的字符
unsigned char byte_length:字符长度
出口参数:无
备 注:无
**************************************************************************************************************/
void LCD_Word(uchar addr,uchar *dat)
{
unsigned char lcd_temp;
write_LCD_command(addr);
lcd_temp=*dat;
while(lcd_temp != 0x00)
{
write_LCD_data(lcd_temp);
lcd_temp=*(++dat);
}
}
/**************************************************************************************************************
函数名称 :LCD_Clr
函数功能:清屏清GDRAM函数
入口参数:无
出口参数:无
备 注:无
**************************************************************************************************************/
void LCD_Clr(void) //
{
uchar i,j;
write_LCD_command(0x36);
delay(100);
write_LCD_command(0x36);
delay(37);
write_LCD_command(0x3e);
delay(100);
write_LCD_command(0x01);
delay(100);
for(i = 0;i<32;i++)
{
write_LCD_command(0x80+i);//先送垂直地址
write_LCD_command(0x80);
for(j = 0;j<16;j++)
{
write_LCD_data(0x00);
}
}
for(i = 0;i<32;i++)
{
write_LCD_command(0x80+i);//先送垂直地址
write_LCD_command(0x88);
for(j = 0;j<16;j++)
{
write_LCD_data(0x00);
}
}
write_LCD_command(0x30);//回到普通模式
}
以上是lcd模块
主程序就一小段
#include
#include"common.h"
#include"12864.h"
void main()
{
init_LCD();
LCD_Clr();
LCD_Word(0x90,"1");
}大家帮忙看一下
你查一下这些乱码的ASCII值和你需要显示值的关系,可能你是如果你想显示48 直接写入48 而显示的却是ASCII值为48的0。仅仅是举一个例子