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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

LCD12864串行代碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:446213 發表于 2019-5-3 23:36 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
/*
**********************************************************************
*                         頭文件包含
**********************************************************************
*/
#include "lcd12864.h"


/*
**********************************************************************
*                         本地全局變量
**********************************************************************
*/
sbit gLcd12864_E  = P2^7;                        // LCD12864控制總線的使能信號
sbit gLcd12864_RW = P2^6;                        // LCD12864控制總線的讀寫選擇信號,串行數據口
sbit gLcd12864_RS = P2^5;                        // LCD12864控制總線的數據/命令選擇信號
//sbit gLcd12864_PSB= P1^0;                        // PSB=1為并口,PSB=0為串口

/*
**********************************************************************
*                         內部函數原型聲明
**********************************************************************
*/
static void delay_1ms(u16 x);
//static void delay500ms(void);
/*********************************************************************
* 函 數 名       : delay_1ms
* 函數功能                 : 延時
* 參數列表       : x——設定延時時間
* 函數輸出             : 無
*********************************************************************/
static void delay_1ms(u16 x)
{
        u16 i,j;
        for(j=0;j<x;j++)
                for(i=0;i<110;i++);
}
/*********************************************************************
* 函 數 名       : delay500ms
* 函數功能                 : 單片機小精靈V1.3生成的延時500ms的精確延時函數
* 參數列表       : 無
* 函數輸出             : 無
*********************************************************************/
static void delay500ms(void)   //誤差 0us
{
    unsigned char a,b,c;
    for(c=23;c>0;c--)
        for(b=152;b>0;b--)
            for(a=70;a>0;a--);
}
/*********************************************************************
* 函 數 名       : sendbyte
* 函數功能                 : 讀一個字節
* 參數列表       : zdata
* 函數輸出             : 無
*********************************************************************/
static void sendbyte(u8 zdata)
{
   u8 i;
   for(i=0; i<8; i++)
        {
                if((zdata << i) & 0x80)           //一個字節與上10000000(0x80),如果字節最高位為1則數據線發1,反之發0
                {
                        gLcd12864_RW = 1;
                }
                else
                {
                        gLcd12864_RW = 0;
                }
                gLcd12864_E = 0;
                _nop_();                                         //一個正脈沖(可要可不要)
                gLcd12864_E = 1;
    }
}
/*********************************************************************
* 函 數 名       : Lcd12864WriteCmd
* 函數功能                 : 按照LCD12864低層時序向LCD內部寫入8位命令字
* 參數列表       : cmd - 待寫入的8位命令字
* 函數輸出             : 無
*********************************************************************/
static void Lcd12864WriteCmd(u8 cmd)
{  
   gLcd12864_RS=1;
   gLcd12864_E=0;
   sendbyte(0xf8);                     //第一個字節11111000——0xf8-寫指令

   sendbyte(cmd & 0xf0);
   sendbyte((cmd << 4) & 0xf0);
   gLcd12864_RS=0;                                 // 禁止LCD
   delay_1ms(1);
}
/*********************************************************************
* 函 數 名       : Lcd12864WriteData
* 函數功能                 : 按照LCD12864低層時序向LCD內部寫入8位數據
* 參數列表       : dat - 待寫入的8位命令字
* 函數輸出             : 無
*********************************************************************/
static void Lcd12864WriteData(u8 dat)                       
{
   gLcd12864_RS=1;
   gLcd12864_E=0;
   sendbyte(0xfa);                     //第一個字節11111000——0xf8-寫指令
   sendbyte(dat & 0xf0);
   sendbyte((dat << 4) & 0xf0);
   gLcd12864_RS=0;                                 // 禁止LCD
   delay_1ms(1);
}       
/************* 上面是底層時序函數,下面是高層時序函數 ***************/

/*********************************************************************
* 函 數 名       : Lcd12864Init
* 函數功能                 : 按照LCD12864低層時序進行初始化序列
* 參數列表       : 無
* 函數輸出             : 無
*********************************************************************/
void Lcd12864Init(void)                                               
{
        //gLcd12864_PSB = 1;                        // 選定8位并行模式

        // 發送初始化序列
        Lcd12864WriteCmd(0x30);          // 0x30為基本指令集
        Lcd12864WriteCmd(0x02);
        Lcd12864WriteCmd(0x0c);                // 整體顯示、游標關閉
        Lcd12864WriteCmd(0x01);                // 0x01為清屏指令
        Lcd12864WriteCmd(0x80);          // 地址自動加1
       
}
/*********************************************************************
* 函 數 名       : Lcd12864ShowStr
* 函數功能                 : 從坐標(x, y)開始顯示字符串str,注意這個函數不能跨行
*                                   顯示,因為顯存地址是不連續的。
* 參數列表       : x - 橫向坐標,范圍是0-7
*                                   y - 縱向坐標,范圍是0-3
*                                   pStr - 指向待顯示的字符串的指針
* 函數輸出             : 無
*********************************************************************/
void Lcd12864ShowStr(u8 x, u8 y, u8 *pStr)     //顯示字符串
{
        switch (y)
        {
                case 0:
                        x |= 0x80;        break;                          // 第一行
                case 1:
                        x |= 0x90;        break;                          // 第二行
                case 2:
                        x |= 0x88;        break;                          // 第三行
                case 3:
                        x |= 0x98;        break;                          // 第四行
                default:
                                                break;
        }
        Lcd12864WriteCmd(x);                         // 發送地址碼
          while (*pStr != '\0')                         // 若到達字串尾則退出
          {
             Lcd12864WriteData(*pStr); //
             pStr++;
                 delay_1ms(5);
          }
}
/*********************************************************************
* 函 數 名       : Lcd12864sleep
* 函數功能                 : 使液晶睡眠
* 參數列表       :
* 函數輸出             : 無
*********************************************************************/
void Lcd12864sleep(u8 x)
{
  if(x==0)
  {        Lcd12864WriteCmd(0x08);}        //進入睡眠
  if(x==1)
  {        Lcd12864WriteCmd(0x0c);}        //退出睡眠
}
/*********************************************************************
* 函 數 名       : Lcd12864ClearScreen
* 函數功能                 : 清屏,即清除屏幕整個顯示內容
* 參數列表       : 無
* 函數輸出             : 無
*********************************************************************/
void Lcd12864ClearScreen(void)                                               
{

        // 發送初始化序列
        Lcd12864WriteCmd(0x01);          // 0x01為清屏指令
//        Lcd12864WriteCmd(0x34);                // 0x34為擴充指令集
//        Lcd12864WriteCmd(0x30);          // 0x30為基本指令集
}


/*********************************************************************
* 函 數 名       : Lcd12864FlashScreen3
* 函數功能                 : 屏幕閃爍3次
* 參數列表       : 無
* 函數輸出             : 無
*********************************************************************/
void Lcd12864FlashScreen3(void)                                               
{
        u8 time = 0;

        for (time=0; time<3; time++)
        {
                Lcd12864WriteCmd(0x08);
                delay500ms();
                Lcd12864WriteCmd(0x0c);       
                delay500ms();               
        }
}
/*********************************************************************
* 函 數 名       : Lcd12864ShowImage
* 函數功能                 : 顯示圖片
* 參數列表       : *pData
* 函數輸出             : 無
*********************************************************************/
void Lcd12864ShowImage(u8 *pData)
{
        u8 x = 0, y = 0, i = 0;
         for(i=0;i<9;i=i+8)
         for(y=0;y<32;y++)
         {
                 for(x=0;x<8;x++)
                {
                 Lcd12864WriteCmd(0x36);
                 Lcd12864WriteCmd(0x80+y);
                 Lcd12864WriteCmd(0x80+x+i);
                 Lcd12864WriteData(*pData++);
                 Lcd12864WriteData(*pData++);
                 Lcd12864WriteCmd(0x30);
                }
         }
}
/*********************************************************************
* 函 數 名       : Lcd12864tiao
* 函數功能                 : 顯示圖片
* 參數列表       : *pData
* 函數輸出             : 無
*********************************************************************/
void Lcd12864tiao()
{
        u8 x = 0, y = 0, i = 0;
         for(i=0;i<9;i=i+8)
         for(y=0;y<32;y++)
         {
                 for(x=0;x<8;x++)
                {
                 Lcd12864WriteCmd(0x36);
                 Lcd12864WriteCmd(0x80+y);
                 Lcd12864WriteCmd(0x80+x+i);
                 Lcd12864WriteData(0x3c);
                 Lcd12864WriteData(0x3c);
                 Lcd12864WriteCmd(0x30);
                }
         }
}
/*********************************************************************
* 函 數 名       : Lcd12864heng()
* 函數功能                 : 顯示圖片
* 參數列表       : *pData
* 函數輸出             : 無
*********************************************************************/
void  Lcd12864heng()
{
        u8 x = 0, y = 0, i = 0,k;
         for(i=0;i<9;i=i+8)
         for(y=0;y<32;y++)
         {
         if((y%8)==1)k=0xff;
     else k=0;
                 for(x=0;x<8;x++)
                {
                 Lcd12864WriteCmd(0x36);
                 Lcd12864WriteCmd(0x80+y);
                 Lcd12864WriteCmd(0x80+x+i);
                 Lcd12864WriteData(k);
                 Lcd12864WriteData(k);
                 Lcd12864WriteCmd(0x30);
                }
         }
}

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

使用道具 舉報

沙發
ID:1 發表于 2019-5-5 01:52 | 只看該作者
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: caoporn免费 | 亚洲欧美日韩成人在线 | 天天曰夜夜操 | 精品日韩一区 | 99视频免费在线观看 | 久久人爽爽人爽爽 | 一区二区三区免费 | 国产成人综合亚洲欧美94在线 | 久久久国产精品网站 | a级片在线观看 | 午夜在线视频一区二区三区 | 福利片在线观看 | 国精日本亚洲欧州国产中文久久 | 狠狠操狠狠操 | 欧美精品在线播放 | 精品久久影院 | 国产日韩欧美二区 | 777zyz色资源站在线观看 | 久久久久久亚洲精品不卡 | 国产欧美精品一区二区 | 一区二区三区四区在线视频 | 亚洲欧美日韩网站 | 欧美一区二区三区国产 | 国产一级在线观看 | 高清一区二区 | 亚洲人在线观看视频 | 欧产日产国产精品视频 | 69av网| 欧美成人精品一区 | 亚洲一av| 国产成人一区二区三区久久久 | 午夜影院在线观看视频 | 91网视频| 一区二区av | 亚洲精品一区二区三区在线 | 在线一区二区三区 | 精品一区av | 天天操天天操 | 久久亚洲春色中文字幕久久久 | 成人免费福利 | 久久精品综合 |