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

📄 1602.c

📁 本系统的控制部分是以89C51为核心
💻 C
字号:
#include<reg51.h>
#include<stdio.h>
#define uchar unsigned char
uchar q;/*判忙*/
uchar data i;
uchar data wbyte;
sbit R_D=P3^7;
sbit E=P1^7;/*读写使能信号,1有效*/
sbit R_W=P1^6;/*读写选择信号;1为读选通,0为写选通*/
sbit D_I=P1^5;/*数据指令选择信号;1为数据操作,0为写指令或读状态*/
/**************************************************/
void WCOM(uchar);/*写指令*/
void Clearlcd();/*清屏*/
void IMIM();/*初始化*/
void DAT(uchar);/*送数据*/
void DELAY(unsigned char t);/*延时*/
void CHK_BUSY();/*测忙*/
void DISP();/*LCD显示初始化*/
void HZXS(unsigned char code *s);/*显示字符串*/
void SZXS(unsigned long e100);
void Disp_Img(unsigned char code *img);
unsigned long fd;
/********************主程序********************/
void MAIN()
{
//  PSB=1;//闭幕式串行接口选择:H-并行,L-串行
  //RST=0;复位,低电平
  //e245=0;
  DELAY(3);/*延时*/
  IMIM();/*初始化*/
   DISP();
   WCOM(0x85);
   fd=21327;
   SZXS(fd);
   WCOM(0x95);
   SZXS(5451);
   //Disp_Img(BMP);
  for(;;);
 }
 /********************LCD显示初始化********************/
void DISP()
{ WCOM(0x80);/*第一行首地址设定*/
 HZXS("即时功率:");
 WCOM(0X90);
 HZXS("用电度数:");
 WCOM(0X88);
 HZXS("峰电单价:0.23元");
 WCOM(0X98);
 HZXS("谷电单价:54.2元");
 }

/********************写指令子程序********************/
void WCOM(uchar d)    /*写指令程序*/
{
 DELAY(5);
 R_W=0;                     
 D_I=0;/*写数据指令*/
// DIR_RD=1;
 P0=d;/*将数据送入p1口*/
 //DIR_WR=1;
 E=1;/*使能信号开*/
 E=0;/*使能信号关*/
}
/********************送数据子程序********************/
void DAT(uchar d)
{
 DELAY(5);
 D_I=1;/*送数据指令*/
 R_W=0;
// DIR_RD=1;
 P0=d;
 //DIR_WR=1;
 E=1;/*使能信号开*/
 E=0;/*使能信号关*/
}
/********************初始化子程序********************/
void IMIM()
{//RST=0;
 //DELAY(3);
 //RST=1;
//  PSB=1; //闭幕式串行接口选择:H-并行,L-串行
 DELAY(0);
 WCOM(0x30);/*功能设定*/
 DELAY(0);
 WCOM(0x01);/*清屏指令*/
 DELAY(3);
 WCOM(0x06);/*游标右移*/
 DELAY(0);
 WCOM(0X0F);/*开显示,关光标,关闪烁*/
 DELAY(0);
}
/********************延时子程序********************/
void DELAY(unsigned char t)
{
unsigned char i,j;
 for(i=t;i>0;i--)
  for(j=255;j>0;j--);
}
/********************基本指令集清屏子程序********************/
void Clearlcd()
{
 D_I=0;
 R_W=0;
 WCOM(0x01);/*清除显示*/
}
/*================================================
===测忙碌子程序
===RS=0,RW=1,E=H,D0-D7=状态字


/*------------------显示字符串--------------------------*/
void HZXS(unsigned char code *s)
{  while(*s>0)
   {  DAT(*s);
      s++;
      DELAY(0);
   }
}
/*------------------显示5位数字543.21--------------------------*/
void SZXS(unsigned long e100)
{ unsigned char d,d1;
       d=e100/10000;
       e100=e100%10000;
       d1=d+48;
       DAT(d1);
       d=e100/1000;
       e100=e100%1000;
       d1=d+48;
       DAT(d1);
       d=e100/100;
       e100=e100%100;
       d1=d+48;
       DAT(d1);
       DAT(0X2E);
       d=e100/10;
       e100=e100%10;
       d1=d+48;
       DAT(d1);
       d1=e100+48;
       DAT(d1);
}

/*------------------显示图片------------------------2005.11.14.21:20修改---benladn911--- */
void Disp_Img(unsigned char code *img)
{  unsigned int j=0;
   unsigned char x,y,i;
       for(i=0;i<9;i+=8)
       for(y=0;y<32;y++)/*原来 为 y<26 ,上下两个半屏不能正常对接显示,导致显示的图片中间有空隙*/
         for(x=0;x<8;x++)
         {  WCOM(0x36);//功能设置---8BIT控制界面,扩充指令集
            WCOM(y+0x80);        //行地址
            WCOM(x+0x80+i);     //列地址
            WCOM(0x30);
            DAT(img[j++]);
            DAT(img[j++]);
         }

}

⌨️ 快捷键说明

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