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

📄 lcd.c

📁 LCD屏的源程序,显示LCD屏,字库需要自己加入
💻 C
字号:



(1)yejing.c
(2)lcd.c
下面是各个程序内容:
(1)yejing.c
#include <reg52.h>
#include <intrins.h>

#define uchar unsigned char
#define ulong unsigned long
#define uint unsigned int

#define REFRESH_YES  0x25
#define REFRESH_NO   0x52
#define  WirlessbufLen 8
#define LCDCNT      0x04 

uchar jiffies;    //系统时钟
uchar KeyProcessnum;
sbit LED1 = P1^1;
sbit LED2 = P1^2;

////////////////////////////////////////////////////////////////////////
//LCD显示用到的三个变量:
////////////////////////////////////////////////////////////////////////
extern uchar lcdcodedsp[LCDCNT]; //显示存储数组
extern uchar lcdrefresh;  //是否需要刷新
extern uchar lcdsplycnt;  //指示显示存储数组循环指
extern bit bScanKey;     // 定时扫描标志位

extern void InitLcd();  //LCD显示初始化(00.00)
extern void lcddisply(); //LCD显示四个字节
extern void wcom(uchar);//命令,可以定点光标位置,范围80~87,90~97
extern void wdat(uchar);//当前位置显示一个字符
extern void ShowMessage(uchar ,uchar  ,uchar);//指定位置显示一串字符


void clock_init(void)
{
 jiffies = 0;
 TMOD=0x02;
 TH0=TL0=0xa3;
 EA=1;
 ET0=1;
 TR0=1;
}

sys_init()
{
 InitLcd();
 clock_init();
}

void clock_timer(void) interrupt 1 using 1
{
 jiffies++;
}

#define SCMD_READ_IIC 0x41
#define SCMD_WRITE_IIC 0x42

#define SCMD_SET_PORT 0x51
#define SCMD_GET_PORT 0x52

#define SCMD_RESET 0x61

#define SCMD_LCD_OUTNUM 0x70
#define SCMD_LCD_OUTNUM1 0x71
#define SCMD_LCD_OUTCHU 0x72
#define SCMD_LCD_OUTHEX 0x73
#define SCMD_LCD_RESET 0x74
#define SCMD_LCD_TEST 0x75
#define SCMD_LCD_CLEAR 0x76


unsigned int last1_jiffies=0;
unsigned int last2_jiffies=10;

void main()
{
    sys_init();
 LED1 = 0;
 LED2 = 1;
 while(1)
 {
     if (jiffies - last1_jiffies >= 20)  //每次中断为50us,所以要20次才为1ms
  {
   last1_jiffies = jiffies;
   if (last2_jiffies)
    last2_jiffies--;
  }
    } 
}


(2)lcd.c

#include <reg52.h>
#include <intrins.h>

#define uchar unsigned char
#define ulong unsigned long
#define uint unsigned int

/*12232f 管脚定义e*/
sbit sclk=P1^4;
sbit sid=P1^5;
sbit cs=P1^6;

////////////////////////////////////////////////////////////////////////
//LCD显示用到的三个变量:
////////////////////////////////////////////////////////////////////////
uchar lcdrefresh;  //是否需要刷新
//uchar lcdcodedsp[4]; //显示存储数组
uchar lcdsplycnt;  //指示显示存储数组循环指
///////////////////////////////////////////////////////////////////////
uchar bdata stu;
sbit  stu7=stu^7;
sbit  stu0=stu^0;

//----------------忙检测----------------------
void check()
{
 uchar i;
 do
 {
  cs=1;  
  sid=1;
    for(i=0;i<8;i++)
     {
     sclk=0;
     if(i<6)sid=1;
     else sid=0;
     sclk=1;   
     }
    for(i=0;i<16;i++)
       {
     sclk=0;
     sclk=1;
     if(i<=3||(i>=8&&i<=11))
       {
     stu<<=1;
     stu0=sid;
    }
   }
    cs=0;
 }while(stu7==1); 
}
//-----Z--------------------------------------
void wcom(uchar x)
{
 uchar i=0;
 check();
 cs=1;  
 for(i=0;i<8;i++)
 {
   if(i<5)sid=1;
   else sid=0;
    sclk=0;
    sclk=1; 
 } 
 for(i=0;i<16;i++)
 {
   if(i<4||(i>=8&&i<=11))
  {
   x<<=1;  
   sid=CY;
   }
    else sid=0;
  sclk=0; sclk=1;
 } 
 cs=0;
}
//****************************************
void wdat(uchar x)
{
 uchar i=0;
    stu=x;
 check();
 cs=1; 
 for(i=0;i<8;i++)
 {
     if(i<5||i==6)sid=1;
     else sid=0;
  sclk=0;
  sclk=1;
 } 
 for(i=0;i<16;i++)
 {
   if(i<4||(i>=8&&i<=11))
  {
   x<<=1;  
   sid=CY;
   }
    else sid=0;
  sclk=0; sclk=1;
 } 
    cs=0;
}
void ShowMessage(uchar addr,uchar num,uchar  *ptr)
{
 uchar i;
    wcom(addr);
 for (i=0;i<num;i++) wdat(ptr[i]);
}
/*-----------------------------------------------------------------------------
----------------------------------------------------------------------初始化*/
void InitLcd()
     {
   wcom(0X30);
   wcom(0X3C);
   wcom(0X38);
   wcom(0X01);
   wcom(0X80);
   check();
   lcdsplycnt=0;
      ShowMessage(0x80,13,"你好,小笨笨:");
      ShowMessage(0x90,15,"网助计划欢迎您!");
  }
/*-----------------------------------------------------------------------------
----------------------------------------------------------------------初始化*/

⌨️ 快捷键说明

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