久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3100|回復: 0
打印 上一主題 下一主題
收起左側

基于51單片機萬年歷LCD12864

[復制鏈接]
跳轉到指定樓層
樓主
ID:747099 發表于 2021-5-5 19:29 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include "stdio.h"
#include "math.h"
#include "macroconst.h"
#include "reg52.h"
#include "string.h"
#include "delay.h"


unsigned char code IC_DAT[];//----------------定義數組
unsigned char code pic1[];
unsigned char code pic2[];
unsigned char code pic3[];

sbit    RS =P1^0;//------------------------定義接口信息
sbit    WRD=P1^1;
sbit    E=  P1^2;
sbit    PSB=P2^7;
sbit    RES=P2^5;
                           
void    TransferData(char data1,bit DI); //-------------函數聲明
void    display(void);
void    display_grapic(void);
//void    delayms(unsigned int n);
void    DisplayLine(unsigned char line1,unsigned char line2);
void    DisplayGraphic(unsigned char code *adder);
//void    delay(unsigned int m);
void    lcd_mesg(unsigned char code *adder1);


//unsigned char code IC_DAT[]={
//"就辭白帝彩云間,"  
//"千里江陵一日還。"
//"兩岸猿聲啼不住,"
//"輕舟已三萬重山。"
//};
//unsigned char code IC_DAT2[]={
//"海納百川寬容為先"
//"欲成大業誠信為先"
//"游弋商海濟世為先"
//"人立于世守法為先"
//};

void    TransferData(char data1,bit DI)  //------------傳送數據或者命令,當DI=0是,傳送命令,當DI=1,傳送數據.
          {
            WRD=0;
            RS=DI;
            delay(1);
            P0=data1;
            E=1;
            delay(1);
            E=0;
           }

//void    delayms(unsigned int n)//--------------------延時10×n毫秒程序
//                   {
//                      unsigned int i,j;
//                      for(i=0;i<n;i++)
//                         for(j=0;j<2000;j++);
//                   }
//
//void    delay(unsigned int m)//----------------------延時程序
//                   {
//                      unsigned int i,j;
//                      for(i=0;i<m;i++)
//                         for(j=0;j<20;j++);
//                   }


void     initina1(void)           //------------LCD字庫初始化程序
          {
           delay(40);             //大于40MS的延時程序
           PSB=1;                 //設置為8BIT并口工作模式
           delay(1);              //延時
           RES=0;                 //復位
           delay(1);              //延時
           RES=1;                 //復位置高
           delay(10);
           TransferData(0x30,0);  //Extended Function Set :8BIT設置,RE=0: basic instruction set, G=0 :graphic display OFF
           delay(100);            //大于100uS的延時程序
           TransferData(0x30,0);  //Function Set
           delay(37);             ////大于37uS的延時程序
           TransferData(0x08,0);  //Display on Control
           delay(100);            //大于100uS的延時程序
           TransferData(0x10,0);  //Cursor Display Control光標設置
           delay(100);            //大于100uS的延時程序
           TransferData(0x0C,0);  //Display Control,D=1,顯示開
           delay(100);            //大于100uS的延時程序
           TransferData(0x01,0);  //Display Clear
           delay(10);             //大于10mS的延時程序
           TransferData(0x06,0);  //Enry Mode Set,光標從右向左加1位移動
           delay(100);            //大于100uS的延時程序
          }

void     initina2(void)           //-------------LCD顯示圖片(擴展)初始化程序
          {
           delay(40);             //大于40MS的延時程序
           PSB=1;                 //設置為8BIT并口工作模式
           delay(1);              //延時
           RES=0;                 //復位
           delay(1);              //延時
           RES=1;                 //復位置高
           delay(10);

           TransferData(0x36,0);  //Extended Function Set RE=1: extended instruction
           delay(100);            //大于100uS的延時程序
           TransferData(0x36,0);  //Extended Function Set:RE=1: extended instruction set
           delay(37);             ////大于37uS的延時程序
           TransferData(0x3E,0);  //EXFUNCTION(DL=8BITS,RE=1,G=1)
           delay(100);            //大于100uS的延時程序
           TransferData(0x01,0);  //CLEAR SCREEN
           delay(100);            //大于100uS的延時程序
          }

void Lcd_Set_Post(uchar y,uchar x)  //設置顯示位置
{
uchar Address;
if(y==1){Address = 0x80 + x;}
if(y==2){Address = 0x90 + x;}
if(y==3){Address = 0x88 + x;}
if(y==4){Address = 0x98 + x;}
TransferData(Address,0);
}

void LCD_WRITE_CHAR(uchar *Word)//------------------------寫字
{
while(*Word)
{
TransferData(*Word,1);
Word ++;
}
}


void DisplayGraphic(unsigned char code *adder)//-------畫數字 圖
{

   int i,j;
                                  //顯示上半屏內容設置
   for(i=16;i<32;i++)              //
    {
      TransferData((0x80 + i),0); //SET  垂直地址 VERTICAL ADD
      TransferData(0x80,0);       //SET  水平地址 HORIZONTAL ADD
      for(j=0;j<2;j++)
       {
         TransferData(*adder,1);
         adder++;
       }
    }
                                  //顯示下半屏內容設置
   for(i=0;i<16;i++)              //
    {
      TransferData((0x80 + i),0); //SET 垂直地址 VERTICAL ADD
      TransferData(0x88,0);       //SET 水平地址 HORIZONTAL ADD
      for(j=0;j<2;j++)
       {
         TransferData(*adder,1);
         adder++;
       }
    }
}


void display()                  //為反白做準備,目地是在圖形顯示時防止有噪點
{
  uchar i,j;
  TransferData(0x34,0);        //寫數據時,關閉圖形顯示

  for(i=0;i<32;i++)
  {
    TransferData(0x80+i,0);    //先寫入水平坐標值
    TransferData(0x80,0);      //寫入垂直坐標值
    for(j=0;j<16;j++)   //再寫入兩個8位元的數據   
    TransferData(0x00,1);     
    delay(1);
  }

  for(i=0;i<32;i++)
  {
    TransferData(0x80+i,0);    //先寫入水平坐標值
    TransferData(0x88,0);      //寫入垂直坐標值
    for(j=0;j<16;j++)   //再寫入兩個8位元的數據   
    TransferData(0x00,1);     
    delay(1);
  }
  TransferData(0x36,0);       //寫完數據,開圖形顯示
}


void white(uchar x,uchar y,uchar width)                //反白,X值為0-7,Y值為0-3,width為行反白格數
{
  uchar i,j,flag=0x00;
  display();
  if(y>1)
  {
   flag=0x08;
   y=y-2;
  }
//  TransferData(0x34,0);        //寫數據時,關閉圖形顯示,且打開擴展指令集
        for(i=0;i<16;i++)
        {
                TransferData((0x80+(y<<4)+i),0);
                TransferData((0x80+flag+x),0);
                for(j=0;j<width;j++)
                {
                TransferData(0xff,1);
                TransferData(0xff,1);
                }
                delay(1);
        }
//        TransferData(0x36,0);       //寫完數據,開圖形顯示
//        lcd_wcmd(0x30);       //從擴展指令到基本指令
}

51黑論壇_12864萬年歷.zip

227.32 KB, 下載次數: 30, 下載積分: 黑幣 -5

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕三区 | 国产免费自拍 | 国产精品色 | 黑人精品欧美一区二区蜜桃 | 久久九精品 | 亚洲精品在线观看视频 | 久久一二区 | 久久99国产精品久久99果冻传媒 | 欧美一区二区网站 | av不卡一区 | 九九九久久国产免费 | 黑人一级黄色大片 | 色婷婷激情 | 亚洲精品久久久久久久久久久 | 91黄色免费看 | 亚洲中午字幕 | 青春草91| 久久久久亚洲国产| 国产激情视频网址 | 91久久| 久久久蜜桃 | 蜜桃视频在线观看免费视频网站www | 日韩欧美精品一区 | 成人av电影免费在线观看 | 成人国产精品视频 | 国产高清精品一区二区三区 | 成人精品毛片国产亚洲av十九禁 | 欧美日韩专区 | 精品中文字幕一区二区 | 欧美一区二区在线播放 | 亚洲日本一区二区 | 91小视频在线 | 欧美精品在线一区二区三区 | 精品久久一区 | 日本不卡一区二区三区在线观看 | 九色网址 | 精品久久一区二区三区 | 中文字幕av网 | 中文字幕国产 | 久久a久久 | 亚洲国产成人精 |