📄 12864zkb.bak
字号:
/*
**长沙太阳人电子有限公司SMG12864ZK并行接口参考程序
**电话: 0731-4167806,4167808
**E-mail: www@sunman.cn
**Create by :谭超 E-mail: tanchao_1@126.com
**最后修改 : 2005年8月25日
*/
//#include "STC89C51RC.h"
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
//#include "d1820.h"
//float Read_Temperature(void);
//unsigned char Temp_a,Temp_b; //温度值
//union char_float
//{
// unsigned char TempChar[2];
// float TempFloat;
//}CharFloat;
/*
sbit RS = P3^0;
sbit RW = P3^3;
sbit E = P3^4;
sbit PSB = P3^1; //串并口选择
sbit RES = P3^5;
*/
//sbit RW = P2^1;
//sbit RS = P2^0;
//sbit E = P2^7;
//sbit CS_DS12C887=P2^3;
//sbit BEEP = P1^6;
//sbit CS_KEY_WR = P2^4;
//sbit CS_KEY_RD = P2^2;
#define LCD P0
uchar LCDdata;
sbit RS=P3^3;
sbit RW=P3^5;
sbit E=P3^7;
sbit RST=P3^6;
//sfr AUXR = 0x8e;
//sbit PSB = P3^1; //串并口选择
//sbit RES = P3^5;
#define FIRST_ADDR 0 //定义字符/汉字显示起始位置
//void delay(int useconds) {
//int s;
//for (s=0; s<useconds;s++);
//}
void delay(unsigned int t)
{ unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<10;j++)
;
}
//测忙
void chk_busy()
{ unsigned char State;
RS=0;
RW=1;
E=1;
// while((P0&0x80)==0x80);
delay(0);
E=0;
}
//读数据
unsigned char lcdrd()
{ unsigned char i;
P3=0xFB;
_nop_();
E=1;
delay(5);
i=P0;
_nop_();
E=0;
return i;
}
//写数据
void lcdwd(unsigned char dispdata)
{ chk_busy();
_nop_();
RS=1;
RW=0;
E=1;
P0=dispdata;
delay(5);
_nop_();
E=0;
_nop_();
P0=0xff;
}
//写指令代码
void lcdwc(unsigned char cmdcode)
{ chk_busy();
_nop_();
RS=0;
RW=0;
E=1;
P0=cmdcode;
delay(5);
_nop_();
E=0;
_nop_();
P0=0xff;
}
//初始化
void lcdreset()
{ delay(2000);
lcdwc(0x30); //选择基本指令集
lcdwc(0x30); //选择8bit数据流
delay(5);
lcdwc(0x0c); //开显示(无游标、不反白)
delay(5);
lcdwc(0x01); //清除显示,并且设定地址指针为00H
delay(5);
lcdwc(0x06); //指定在资料的读取及写入时,设定游标的移动方向及指定显示的移位
}
void hzkdis(unsigned char code *s)
{ while(*s>0)
{ lcdwd(*s);
s++;
delay(500);
}
}
void hzklib()
{
unsigned char TempString[16];
// sprintf(TempString,"温度:%f,",26.45);
lcdwc(0x80+FIRST_ADDR);
hzkdis(TempString);
lcdwc(0x80+FIRST_ADDR);
hzkdis("温度:Read_Temperature() ,");
lcdwc(0x90+FIRST_ADDR);
hzkdis("乡音无改鬓毛衰。");
lcdwc(0x88+FIRST_ADDR);
hzkdis("儿童相见不相识,");
lcdwc(0x98+FIRST_ADDR);
hzkdis("笑问客从何处来。");
}
//整屏显示
//当ii=0时显示上面128×32
//当ii=8时显示下面128×32
void lcdfill(unsigned char disdata)
{ unsigned char x,y,ii;
for(ii=0;ii<9;ii+=8)
for(y=0;y<0x20;y++)
for(x=0;x<8;x++)
{ lcdwc(0x36);
lcdwc(y+0x80); //行地址
lcdwc(x+0x80+ii); //列地址
lcdwc(0x30);
lcdwd(disdata);
lcdwd(disdata);
}
}
//当ii=0时显示上面128×32
//当ii=8时显示下面128×32
void lcdfill_upright(unsigned char disdata)
{ unsigned char x,y,ii;
unsigned char i,f,k;
for(ii=0;ii<9;ii+=8)
for(y=0;y<4;y++)
{ f=disdata;
for(i=0;i<8;i++)
{ if((f&1)==1)
k=0xff;
else
k=0;
for(x=0;x<8;x++)
{ lcdwc(0x36);
lcdwc(y*8+i+0x80);
lcdwc(x+0x80+ii);
lcdwc(0x30);
lcdwd(k);
lcdwd(k);
}
f>>=1;
}
}
}
main()
{
unsigned char i,t1;
//float t1;
// Read_Temperature();
/*union char_int
{
unsigned char TempChar[2];
UINT TempInt;
}CharInt;*/
AUXR =0;
// BEEP = 0;
// CS_KEY_RD =1;
// CS_KEY_WR =1;
i=0x55;
// RES=0;
_nop_();
// RES=1;
while(1)
{ // PSB=1;
/* E =0;
E= 1;
E = 0;
RW=1;
RW=0;
RS=0;
RS=1;
P0 = 0xAA;*/
// CS_DS12C887=1;
lcdreset(); //初始化LCD屏
lcdwc(0x01);
delay(1000);
lcdfill(0xff);
delay(6000);
lcdfill(i); //显示竖条
delay(6000);
lcdfill_upright(i); //显示横条
delay(6000);
lcdfill(0);
lcdwc(0x01);
delay(1000);
hzklib();
delay(4000);
i=~i;
for(;;){}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -