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

📄 1602.c

📁 各种款式液晶显示程序
💻 C
字号:
#include<reg51.h>
#include<stdio.h>
#define uchar unsigned char
uchar *p,*p1;/*建立数组指针*/
uchar q;/*判忙*/
uchar data i;
uchar data wbyte;
sbit E=P3^4;/*读写使能信号,1有效*/
sbit R_W=P3^3;/*读写选择信号;1为读选通,0为写选通*/
sbit RS=P3^2;
sbit D_I=P3^2;/*数据指令选择信号;1为数据操作,0为写指令或读状态*/
char code Hanzi[16]=  /*汉字数组*/
{
 0x03,0x13,
 0x23,0x33,
 0x43,0x53,
 0x63,0x73,
 0x83,0x93,
 0xa3,0xb3,
 0xc3,0xd3,
 0xe3,0xf3,
};
char code Hanzi1[12]=  /*汉字数组*/
{
 0x14,0x24,
 0x34,0x44,
 0x54,0x64,
 0x74,0x84,
 0x94,0xa4,
 0xb4,0xc4,
};
uchar data j=16;/*所建立的第一个汉字数组中元素的个数*/
/*为在液晶中第一行得显示数据*/
uchar data j1=12;/*所建立的第二个汉字数组中元素的个数*/
/*为在液晶中第二行得显示数据*/
/**************************************************/
void WCom(uchar);/*写指令*/
void Clearlcd();/*清屏*/
void Imim();/*初始化*/
void Dat(uchar);/*送数据*/
void Delay();/*延时*/
void Hanz();/*写第一行汉字*/
void Hanz1();/*写第二行汉字*/
/********************主程序********************/
void main()
{
 Delay();/*延时*/
 Imim();/*初始化*/
 p=Hanzi;/*指针指向数组的首地址*/
 p1=Hanzi1;
 Hanz();/*写第一行汉字程序*/
 Hanz1();/*写第二行汉字程序*/
 loop:goto loop;
 }

/********************写指令子程序********************/
void WCOM(uchar d)    /*写指令程序*/
{
 R_W=1;
 D_I=0;/*设置状态*/
Loop:
 P1=0xFF;
 E=1;/*使能有效*/
 q=P1;/*将p1口状态读入*/
 E=0;/*关闭使能信号*/
 if(q&0x80)/*判断屏幕是否忙*/
 {
 goto Loop;/*若忙,循环等待*/
 }
 R_W=0;
 D_I=0;/*写数据指令*/
 P1=d;/*将数据送入p1口*/
 E=1;/*使能信号开*/
 E=0;/*使能信号关*/
}
/********************送数据子程序********************/
void Dat(uchar d)
{
 R_W=1;
 D_I=0;/*读状态指令*/
Loop:
 P1=0xFF;
 E=1;/*使能*/
 q=P1;
 E=0;
 if(q&0x80)
 {
 goto Loop;
 }/*判忙*/
 D_I=1;/*送数据指令*/
 R_W=0;
 P1=d;
 E=1;/*使能信号开*/
 E=0;/*使能信号关*/
}
/********************初始化子程序********************/
void Imim()
{
 P0=0xff;
 P1=0xff;
 P2=0xff;
 P3=0xff;
 E=0;
 Delay();
 WCOM(0x3f);/*功能设定*/
 WCOM(0x08);/*关显示指令*/
 WCOM(0x06);/*游标右移*/
 Clearlcd();/*清屏*/
 WCOM(0x0f);/*开显示指令*/
}
/********************延时子程序********************/
void Delay()
{
 uchar data i,j;
 for(i=0;i<255;i++)
  for(j=0;j<255;j++);
}
/********************基本指令集清屏子程序********************/
void Clearlcd()
{
 D_I=0;
 R_W=0;
 WCOM(0x01);/*清除显示*/
}
/********************写第一行汉字主程序********************/
void Hanz()
{
 WCOM(0x80);/*第一行首地址设定*/
 for(i=0;i<j;i++,p++)
 {
  wbyte=*p;
  Dat(wbyte);/*将汉字数组数据送入*/
 }
}
/********************写第二行汉字主程序********************/
void Hanz1()
{
  WCOM(0xc1);/*第二行首地址设定*/
  for(i=0;i<j1;i++,p1++)
 {
  wbyte=*p1;
  Dat(wbyte);/*将汉字数组数据送入*/
 }
}

⌨️ 快捷键说明

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