找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1740|回復: 0
打印 上一主題 下一主題
收起左側(cè)

LCD12864顯示程序

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:932911 發(fā)表于 2021-6-12 20:13 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
#include <reg51.h>
#define lcd_data      P0
  sbit RS      = P2^0;
  sbit RW      = P2^1;
  sbit E       = P1^6;
  sbit PSB     = P2^2;


void delay(unsigned int k)
{  
      unsigned int i;
      unsigned char j;
      for(i=0;i<k;i++)
      {
           for(j=0;j<10;j++);
       }
}
//********************************************************
//延時1ms函數(shù)
//********************************************************
void delay_ms(unsigned int k)//延時0.994us,晶振12M
{
    unsigned int x,y;
    for(x=k;x>0;x--)
         for(y=121;y>0;y--);
}
//********************************************************
//寫命令函數(shù)
//********************************************************
void LcdWcom(unsigned char WCom)
{
      delay(1);
      RS=0;  //指明操作對象為指令寄存器
      RW=0; //指明為寫操作
      E=1;
      lcd_data=WCom; //將命令寫入總線
      E=0;
}
//********************************************************
//寫數(shù)據(jù)函數(shù)
//********************************************************
void LcdWdata(unsigned char WData)
{
     delay(1);
     RS=1; //指明操作對象為數(shù)據(jù)寄存器
     RW=0; //指明為寫操作
     E=1;
     lcd_data=WData; //將數(shù)據(jù)寫入總線
     E=0;
}
//********************************************************
//顯示初始化函數(shù)
//********************************************************
void Display_Init(void)
{
      delay_ms(45); //延時45ms
      PSB=1; //8位并行口
   
      //功能設定
      LcdWcom(0x30); //設置為8位并行口,基本指令集
      delay(10);
      LcdWcom(0x30); //再次設置為8位并行口,基本指令集
      delay(5);
//    //顯示開關(guān)控制
//    LcdWcom(0x0c); //游標顯示關(guān),正常顯示,整體顯示開
//    delay(10);
      //清除顯示
      LcdWcom(0x01);  
      delay_ms(12); //延時12ms
      //進入點設置
      LcdWcom(0x06); //設置為游標右移,DDRAM位地址加1,畫面不移動
      delay(5);
      LcdWcom(0x0C); //開顯示
}
  //********************************************************
//設置光標函數(shù)
//參數(shù)說明:x為行號,y為列號
//********************************************************
void Set_Cursor(unsigned char x, unsigned char y)
{
    unsigned char i;
    switch(x)//確定行號
    {
        case 0x00: i=0x80; break;//第一行
        case 0x01: i=0x90; break;//第二行
        case 0x02: i=0x88; break;//第三行
        case 0x03: i=0x98; break;//第四行
        default : break;
    }
    i = y+i;//確定列號
    LcdWcom(i);//寫地址
}
//********************************************************
//顯示字符函數(shù)
//********************************************************
void Display_Char(unsigned char Alphabet)
{
      delay(1);
      LcdWdata(Alphabet); //寫入需要顯示字符的顯示碼
}
/**********************顯示單個字符*************************/
void main()
{
    while(1)
    {
     Set_Cursor(0,0); //光標地址設定
Display_Char(0x21); //顯示字符!
    }
}


01.7z

15.72 KB, 下載次數(shù): 16, 下載積分: 黑幣 -5

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表