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

📄 st7920_parallel.c

📁 12864液晶的驱动程序
💻 C
字号:
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define DATABUS P0 //数据总线为P0,并行方式
sbit RS = P2^0;
sbit RW = P2^1;
sbit EN = P2^2; 

void delay(uchar t) //延时子程序
{  uchar i,j;
   for(i=0;i<t;i++)
    for(j=0;j<10;j++)
     ;
}

void chk_busy() //测忙
{  RS=0;
   RW=1;
   EN=1;
   while((DATABUS&0x80)==0x80);
   EN=0;
}

uchar lcdrd()//读数据
{  uchar i;
   P2=0x07;
   _nop_();
   EN=1;
   delay(5);
   i=DATABUS;
   _nop_();
   EN=0;
   return i;
}

void lcdwd(uchar dispdata) //写数据
{  chk_busy();
   _nop_();
   RS=1;
   RW=0;
   EN=1;
   DATABUS=dispdata;
   delay(5);
   EN=0;
   _nop_();
   DATABUS=0xff;
}

void lcdwc(uchar cmdcode) //写指令代码
{  chk_busy();
   _nop_();
   RS=0;
   RW=0;
   EN=1;
   DATABUS=cmdcode;
   delay(5);
   EN=0;
   _nop_();
   DATABUS=0xff;
}

void lcd_init() //初始化lcd
{  delay(255);
   lcdwc(0x30);//选择基本指令集
   lcdwc(0x30);//选择8bit数据流
   delay(1);
   lcdwc(0x0c);//开显示(无游标、不反白)
   delay(1);
   lcdwc(0x01);//清除显示,并且设定地址指针为00H
   delay(1);
   lcdwc(0x06);//指定在资料的读取及写入时,设定游标的移动方向及指定显示的移位
}

void hzkdis(uchar code *s)
{  while(*s>0)
   {  lcdwd(*s);
      s++;
      delay(5);
   }
}

void display()
{  lcdwc(0x80);
   hzkdis("经度:108.5448 E");
   lcdwc(0x90);
   hzkdis("纬度: 34.1458 N");
   lcdwc(0x88);
   hzkdis("地区: 陕西西安");
   lcdwc(0x98);
   hzkdis("时间:21:12:20");
}

main()
{
   RW=0;
   lcd_init(); //初始化LCD
   lcdwc(0x01);//清屏
   while(1)
   {
     display();
   }
}

⌨️ 快捷键说明

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