锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

基于C8051F的金鹏LCD19264(带字库)程序

时间:2024-05-10 17:07:10

//-------------------------------------------------------------------------*
//文件名: .h (LCD头文件) *
//-------------------------------------------------------------------------*
#include "C8051F340.h"
#include
#define uint unsigned int
#define uchar unsigned char

sbit rw = P2^1; //H=read; L=write;
//sbit e1 = P2^2; //up input enable;
sbit e2 = P2^2; //down input enable;
sbit rs = P2^0; //H=data; L=command;
//sbit rst= P3^0; //Reset Signal 低电平有效
void init_lcd ();
void clrram ();
void string_disp (uchar up,uchar down,uchar addr,uchar length,uchar code *pp); //显示字符串
void number_disp (uchar up,uchar down,uchar addr,uchar length,uchar number1,uchar number2); //显示数字

//up:上半屏 down:下半屏
//up为1,控制上半屏,down为1,控制下半屏
uchar Math_Subwith(uchar dat) //线序反转
{
uchar i,temp;
temp = 0x00;
for(i=0;i<8;i++)
{
temp >>= 1;
if((dat< {
temp |= 0x80;
}
else
{
temp &= 0x7F;
}
}
return temp;
}
//*******************************
//判忙
//*******************************
void chk_busy (uchar up,uchar down)
{
if(up==1)
{
P1 = Math_Subwith(0xff);
rs=0;
rw=1;
//e1=1;
P4 = P4|0x01;
while(P1 & 0x01);
//e1=0;
_nop_();_nop_();_nop_();_nop_();
P4 = P4&0xfe;
}
if(down==1)
{
P1 =Math_Subwith(0xff);
rs=0;
rw=1;
e2=1;
while(P1& 0x01);
_nop_();_nop_();_nop_();_nop_();
e2=0;
}
}
//********************************************
//写命令
//********************************************
void send_c (uchar up,uchar down,uchar comm)
{
chk_busy (up,down);
rs=0; //command
rw=0; //write
if(up==1)
{
P1 = Math_Subwith(comm); //output comm
//e1=1;
P4 = P4|0x01;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
//e1=0;
P4 = P4&0xfe;
}
if(down==1)
{
P1 = Math_Subwith(comm); //output comm
e2=1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
e2=0;
}
}
//********************************************
//写数据
//********************************************
void send_d (uchar up,uchar down,uchar dat)
{
chk_busy (up,down);
rs=1; //data
rw=0; //write
if(up==1)
{
P1 = Math_Subwith(dat); //output data
//e1=1;
P4 = P4|0x01;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
//e1=0;
P4 = P4&0xfe;
}
if(down==1)
{
P1 = Math_Subwith(dat); //output data
e2=1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
e2=0;
}
}
/*------------------初始化-----------------*/
void init_lcd (void)
{

send_c (1,1,0x30); /*30---基本指令动作*/

send_c (1,1,0x01); /*清屏,地址指针指向00H*/

send_c (1,1,0x06); /*光标的移动方向*/

send_c (1,1,0x0c); /*开显示,关游标*/

}
/*---------------显示汉字或字符----------------*/
/*void chn_disp (uchar code *chn)
{
uchar i;
send_c (1,1,0x30); //第一行
send_c (1,0,0x80);
for (i=0;i<24;i++)
send_d (1,0,chn[i]);

send_c (1,0,0x90); //第二行
for (i=0;i<24;i++)
send_d (1,0,chn[24+i]);

send_c (0,1,0x80); //第三行
for (i=0;i<24;i++)
send_d (0,1,chn[48+i]);

send_c (0,1,0x90); //第四行
for (i=0;i<24;i++)
send_d (0,1,chn[72+i]);
}*/
/*---------------任意位置显示汉字或字符----------------*/
void string_disp (uchar up,uchar down,uchar addr,uchar length,uchar code *pp)//地址,长度,数据
{
uchar i;
send_c (1,1,0x30);
send_c (up,down,addr); //第一行
for (i=0;i send_d (up,down,pp[i]);
}
void number_disp (uchar up,uchar down,uchar addr,uchar length,uchar number1,uchar number2)//地址,长度,数据
{
uchar i;
send_c (1,1,0x30);
send_c (up,down,addr); //第一行
for (i=0;i send_d (up,down,number1);
for(i=1;i<(length+1);i++)
send_d (up,down,number2);
}
/*--------------清D------------------*/
void clrram (void)
{
send_c (1,1,0x30);
send_c (1,1,0x01);
}


-电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。
锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章