⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1602.c

📁 液晶1602的驱动程序。 用的是勤正达的FM1602A--3。 MCU用51
💻 C
字号:
#include"reg51.h"
#define uchar unsigned char
#define uint  unsigned int
volatile char bf;

sbit rs=P3^0;
sbit rw=P3^1;
sbit e=P3^2;
sbit ds=P1;
#define bf P1^7

uchar code tab[]={"***fm1602a--3***"};
uchar code tab1[]={0x0f,0x09,0x0f,0x09,0x0f,0x09,0x0b,0x11};         //   月
uchar code fm[]={0x0F,0x1C,0x0F,0x1F,0x10,0x00,0x00,0x00,0x0F,0x1C,0x0C,0x19,0x10,0x00,0x00,0x00,
0x0C,0x00,0x0C,0x19,0x10,0x00,0x00,0x00,0x0F,0x1C,0x0C,0x19,0x10,0x00,0x00,0x00,
0x0F,0x1C,0x0C,0x19,0x12,0x07,0x0F,0x10,0x0C,0x00,0x0C,0x19,0x12,0x04,0x0A,0x10,
0x0C,0x00,0x0C,0x19,0x12,0x04,0x0A,0x10,0x0C,0x00,0x0C,0x19,0x13,0x17,0x0A,0x10
};   ///FM 64
uchar  code qin[]={
0x1F,0x11,0x11,0x11,0x11,0x11,0x11,0x1F, //方框
0x0E,0x0A,0x04,0x1F,0x04,0x0E,0x0A,0x1B,  //小人
0x0A,0x15,0x0A,0x15,0x0A,0x15,0x0A,0x15,   //黑白格子
0x1F,0x15,0x1F,0x1B,0x1B,0x1F,0x11,0x1F, //脸
0x0E,0x11,0x11,0x15,0x15,0x0E,0x04,0x04, //树
0x0f,0x09,0x0f,0x09,0x0f,0x09,0x0b,0x11, // 月
0x1F,0x00,0x1F,0x00,0x1F,0x00,0x1F,0x00, //黑白横条
0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15, //黑白竖条


}; 

void nop(){}

void delay(uint ms)               //延时
{uchar n;
while(ms--)
{for(n=0;n<24;n++){;;}}
}

void check()                       //    判忙
{

rs=0;
rw=1;
e=0;
P1=0xff;
e=1;
nop();
nop();

while(P&0x80){};


delay(10);
}

void sendc(uchar com)            //  发命令字
{check();
 
 
 rs=0;
 rw=0;
 e=1;
 P1=com;
 
 nop();
 e=0;
 nop();
 }

void sendd(uchar word)            // 发显示字
{check();
 
 
 rs=1;
 rw=0;
 e=1;
P1=word;
nop();
e=0;
 nop();
 }

void inti()                        // 初始化
{sendc(0x01);
 sendc(0x38);
 sendc(0x0f);
 sendc(0x06);
 delay(10);
 }

void setcgramP()
{uchar x1;
 uchar y;
 
 sendc(0x40);
 for(y=0;y<8;y++){for(x1=0;x1<8;x1++)
 {sendd(*(fm+8*x1+y));}}
}

void setcgram()
{uchar x; 
 sendc(0x40);
 for(x=0;x<64;x++)
 {sendd(*(qin+x));}
}

void key()
{while(P2^0){};
delay(5);}

void main()
{unsigned char i;
setcgram();
 inti();
 delay(1);
 
 sendc(0x80);
 delay(500);
 for(i=0;i<16;i++)
{sendd(*(tab+i));};
// {sendd(0xff);};
 
delay(500);
 sendc(0xc0);
 for(i=0;i<16;i++)
{sendd(0x00+i);};
//{sendd(0xff);};
 while(1){};
 
 }


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -