12864液晶ST7920控制器各种曲线显示仪文档格式.docx
《12864液晶ST7920控制器各种曲线显示仪文档格式.docx》由会员分享,可在线阅读,更多相关《12864液晶ST7920控制器各种曲线显示仪文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
/*--宽度x高度=128x64--*/
0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x1D,0xD0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x11,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x1D,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x05,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x15,0xD0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x15,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x05,0xD0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x05,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x10,0x04,0x01,0x00,0x40,0x10,0x04,0x01,0x00,0x40,0x10,0x04,0x01,0x00,0x40,
0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x01,0xC0,0x04,0x03,0x80,0xE0,0x28,0x0E,0x03,0x80,0xE0,0x38,0x0E,0x05,0xC0,0x90,
0x01,0x40,0x04,0x00,0x80,0x20,0x28,0x08,0x02,0x00,0x20,0x28,0x0A,0x05,0x40,0x90,
0x01,0x40,0x04,0x03,0x80,0xE0,0x38,0x0E,0x03,0x80,0x20,0x38,0x0E,0x05,0x40,0x90,
0x01,0x40,0x04,0x02,0x00,0x20,0x08,0x02,0x02,0x80,0x20,0x28,0x02,0x05,0x40,0x90,
0x01,0xC0,0x04,0x03,0x80,0xE0,0x08,0x0E,0x03,0x80,0x20,0x38,0x02,0x05,0xC0,0x90,
};
//温度坐标图
voiddelay(uintt)
while(t--);
}
voidmain()
{
ucharp=56;
LCD_Init();
LCD_SET_Disply(1,2,"
曲线显示器"
);
LCD_SET_Disply(3,0,"
制作者:
莫剑辉"
delay(50000);
Clear_DDRAM();
Clear_GDRAM();
//清除GDRAM,消除刚上电时GDRAM数据随机造成的花屏
while
(1)
{
Clear_GDRAM();
//清除显示
Delay_50us
(2);
//延时100us
Picture_Disp(pitch);
for(n=12;
n<
128;
n++)
{
LCD_SET_Dot(n,p);
p--;
if(p<
=0)
{
p=56;
}
delay(50000);
}
}
LCD12864.H文件程序:
/*****************************************************************************
程序调试员:
调试时间:
2011-3-7
*****************************************************************************/
#defineucharunsignedchar
#defineuintunsignedint
#defineLCD_DATAP0//数据输出端0~7
sbitLCD_RS=P2^7;
//LCD12864RS端
sbitLCD_RW=P2^6;
//LCD12864RW端
sbitLCD_EN=P2^5;
//LCD12864EN端
延时50us函数
voidDelay_50us(uintc)//误差-0.086805555556us
uchara,b;
for(b=c;
b>
0;
b--)
for(a=20;
a>
a--);
LCD12864液晶测忙函数(读状态)
voidLCD_Busy()
ucharbusy;
do
LCD_EN=0;
//关闭使能端
LCD_RS=0;
//选指令
LCD_RW=1;
//选读
Delay_50us
(1);
//读指令持续时间最小值1500ns
LCD_EN=1;
//拉高,数据开始读入
busy=LCD_DATA;
//读取数据口的数据
//延时50us,保证读取完成
//再次置低,准备下一次工作
}
while(busy&
0x80);
//判断BUSY位是否工作:
1为内部在工作,0为正常状态
LCD12864液晶数据读取函数
ucharRead_Data()
uchartemp;
LCD_Busy();
//测忙
P0=0xff;
//初始化数据端口全部置高
LCD_RW=1;
//选读
LCD_EN=0;
//关闭使能端
LCD_RS=1;
//选数据
Delay_50us
(1);
//读数据持续时间最小值1500ns
LCD_EN=1;
//拉高,数据开始读入
temp=LCD_DATA;
//读取数据口的数据
//延时50us,保证读取完成
//再次置低,准备下一次工作
returntemp;
//将读到的数据返回
LCD12864液晶数据写入函数
voidWrite_Data(uchardat)
LCD_RW=0;
//选写
LCD_DATA=dat;
//把数据送到数据口
//写数据持续时间最小值1500ns
//拉高,数据立马写入
//延时50us,保证写入完成
LCD12864液晶指令写入函数
voidWrite_Com(ucharcom)
LCD_RS=0;
//选指令
LCD_DATA=com;
//把指令送到数据口
//写指令持续时间最小值1500ns
//拉高,指令立马写入
LCD12864液晶任意位置打点函数
voidLCD_SET_Dot(ucharx,uchary)
ucharx_byte,x_bit;
//确定dot在横轴上的哪个字节内的哪个位
uchary_byte,y_bit;
//确定dot在竖轴上的哪个字节内的哪个位
ucharTempH,TempL;
//用来存放读出来的原始数据的高8位和低8位,
//目的是为了避免新的数据点写进去后覆盖掉前面的点
x=x&
0x7f;
//限制横坐标所在范围,为0-127
y=y&
0x3f;
//限制纵坐标所在范围,为0-31(上半屏)0-31(下半屏)
x_byte=x/16;
//确定该dot在哪一个字节
x_bit=x%16;
//确定该dot在哪一个点
y_byte=y/32;
//确定该dot在那个半屏,0:
上半屏1:
下半屏
y_bit=y%32;
//确定该dot在第几行(因为到了下半屏也是从0行开始到31行)
Write_Com(0x34);
//打开扩展指令集,关闭基本功能模式,绘图显示关闭
Write_Com(0x80+y_bit);
//先将光标纵坐标写到指定行
Write_Com(0x80+x_byte+8*y_byte);
//再将光标横坐标写到指定位置,若y_byte为1,则说明大于了31行(从0行算起)
//则需将AC指针写到0x88处即ST7920控制下的第3行
Read_Data();
//当下设定AC地址指令后,若要读取数据需要预先dummyread一次,才会读到正确数据
//第2