欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

LCD12864文字顯示程序

[復制鏈接]
跳轉到指定樓層
樓主
本帖最后由 ae43 于 2022-1-27 12:07 編輯


#include<reg51.h>
#include"AMPIRE128X64.h"
void LCDCheckBusy(){ //查忙
        LCDPORT=0xFF;
        LCD12864RW=1;
        LCD12864RS=0;
        LCD12864EN=1;
        LCD12864EN=0;
        return BUSYSTATUS;
}
void LCDWriteData(unsigned char Data) //寫數據
{
        //while( LCDCheckBusy() );
        LCDPORT=0xFF;
        LCD12864RW=0;
        LCD12864RS=1;
        LCDPORT=Data;
        LCD12864EN=1;
        LCD12864EN=0;
}
void LCDWriteCMD(unsigned char CMD)//寫指令
{
        //while(LCDCheckBusy());
        LCDPORT=0xFF;
        LCD12864RW=0;
        LCD12864RS=0;
        LCDPORT=CMD;
        LCD12864EN=1;
        LCD12864EN=0;
}

//LCD開顯示
void LCDTurnOn()
{
        LCDWriteCMD(0x3f);
}
//LCD頁地址設置
bit LCDSetPage(unsigned char nPage)
{
        bit stat=0;
        if(nPage<8)
        LCDWriteCMD(0xb8+nPage);
        else stat=1;
        return stat;
}
//LCD關顯示
void LCDTurnOff()
{
        LCDWriteCMD(0x3e);
}
//LCD列地址設置
bit LCDSetColumn(unsigned char nColumn)
{
        bit stat=0;
        if(nColumn<64)
        LCDWriteCMD(0x40+nColumn);
        else stat=1;
        return stat;
}
//LCD初始化
void LCD12864Init()
{
        LCD12864CS1 = 0;
        LCD12864CS2 = 0;
        LCDTurnOn();        
        //LCD開顯示
        ClearScreen(0);
        LCDSetPage(0);
        //LCD頁初始地址,共8頁
        LCDSetColumn(0);
        //LCD列初始地址,共64列
}
/*選擇屏幕screen: 0-全屏,1-左屏,2-右屏*/
void SelectScreen(uchar screen)   
{  
   switch(screen)
   { case 0: LCD12864CS1=0;//全屏
             _nop_(); _nop_(); _nop_();
             LCD12864CS2=0;
             _nop_(); _nop_(); _nop_();
             break;
     case 1: LCD12864CS1=0;//左屏
             _nop_(); _nop_(); _nop_();
             LCD12864CS2=1;
             _nop_(); _nop_(); _nop_();
             break;
     case 2: LCD12864CS1=1;//右屏
             _nop_(); _nop_(); _nop_();
             LCD12864CS2=0;
             _nop_(); _nop_(); _nop_();
             break;
   }
}
/*清屏screen: 0-全屏,1-左屏,2-右*/
void ClearScreen(uchar screen)
{  
     uchar i,j;
     SelectScreen(screen);
for(i=0;i<8;i++)  //控制頁數0-7,共8頁
     {
       LCDSetPage(i);
                         LCDSetColumn(0);
       for(j=0;j<64;j++)    //控制列數0-63,共64列
            {LCDWriteData(0x00); //寫點內容,列地址自動加1
              }
     }
}
/*延時程序*/
void delay(uchar z)
{
uchar i,j;
for(i=0; i<z; i++)
for(j = 0; j < 110; j++);
}

#include<reg51.h>
#include"AMPIRE128X64.h"
//---聲明一個全局變量---//
void Delay10ms(unsigned int c);
#define unchar unsigned char


uchar code HZ[]=
{
/*--  文字:  溫  --*/
/*--  宋體12;  此字體下對應的點陣為:寬x高=16x16   --*/
0x10,0x60,0x02,0x8C,0x00,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00,
0x04,0x04,0x7E,0x01,0x40,0x7E,0x42,0x42,0x7E,0x42,0x7E,0x42,0x42,0x7E,0x40,0x00,

/*--  文字:  度  --*/
/*--  宋體12;  此字體下對應的點陣為:寬x高=16x16   --*/
0x00,0x00,0xFC,0x24,0x24,0x24,0xFC,0x25,0x26,0x24,0xFC,0x24,0x24,0x24,0x04,0x00,
0x40,0x30,0x8F,0x80,0x84,0x4C,0x55,0x25,0x25,0x25,0x55,0x4C,0x80,0x80,0x80,0x00,

/*--  文字:  1  --*/
/*--  宋體12;  此字體下對應的點陣為:寬x高=16x16   --*/
0x00,0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  :  --*/
/*--  宋體12;  此字體下對應的點陣為:寬x高=16x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  溫  --*/
/*--  宋體12;  此字體下對應的點陣為:寬x高=16x16   --*/
0x10,0x60,0x02,0x8C,0x00,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00,
0x04,0x04,0x7E,0x01,0x40,0x7E,0x42,0x42,0x7E,0x42,0x7E,0x42,0x42,0x7E,0x40,0x00,

/*--  文字:  度  --*/
/*--  宋體12;  此字體下對應的點陣為:寬x高=16x16   --*/
0x00,0x00,0xFC,0x24,0x24,0x24,0xFC,0x25,0x26,0x24,0xFC,0x24,0x24,0x24,0x04,0x00,
0x40,0x30,0x8F,0x80,0x84,0x4C,0x55,0x25,0x25,0x25,0x55,0x4C,0x80,0x80,0x80,0x00,

/*--  文字:  2  --*/
/*--  宋體12;  此字體下對應的點陣為:寬x高=16x16   --*/
0x00,0x70,0x08,0x08,0x08,0x08,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  :  --*/
/*--  宋體12;  此字體下對應的點陣為:寬x高=16x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  溫  --*/
/*--  宋體12;  此字體下對應的點陣為:寬x高=16x16   --*/
0x10,0x60,0x02,0x8C,0x00,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00,
0x04,0x04,0x7E,0x01,0x40,0x7E,0x42,0x42,0x7E,0x42,0x7E,0x42,0x42,0x7E,0x40,0x00,

/*--  文字:  度  --*/
/*--  宋體12;  此字體下對應的點陣為:寬x高=16x16   --*/
0x00,0x00,0xFC,0x24,0x24,0x24,0xFC,0x25,0x26,0x24,0xFC,0x24,0x24,0x24,0x04,0x00,
0x40,0x30,0x8F,0x80,0x84,0x4C,0x55,0x25,0x25,0x25,0x55,0x4C,0x80,0x80,0x80,0x00,

/*--  文字:  3  --*/
/*--  宋體12;  此字體下對應的點陣為:寬x高=16x16   --*/
0x00,0x30,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x18,0x20,0x21,0x21,0x22,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

/*--  文字:  :  --*/
/*--  宋體12;  此字體下對應的點陣為:寬x高=16x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,


};
/*顯示全角漢字*/
void Display(uchar ss,uchar page,uchar column,uchar number)
{
        int i; //選屏參數,pagr選頁參數,column選列參數,number選第幾漢字輸出
        SelectScreen(ss);
        column=column&0x3f;
        LCDSetPage(page); //寫上半頁
        LCDSetColumn(column); //控制列
                for(i=0;i<16;i++)  //控制16列的數據輸出
                {
                LCDWriteData(HZ[i+32*number]); //i+32*number漢字的前16個數據輸出
                }
        LCDSetPage(page+1);  //寫下半頁
        LCDSetColumn(column);    //控制列
    for(i=0;i<16;i++)   //控制16列的數據輸出
                {
                                LCDWriteData(HZ[i+32*number+16]); //i+32*number+16漢字的后16個數據輸出
                }
}
/*******************************************************************************
* 函 數 名         : main
* 函數功能                   : 主函數
* 輸    入         : 無
* 輸    出         : 無
*******************************************************************************/

void main()
{
        uchar i;
        LCD12864RST=1;
        LCD12864Init();
                        
    ClearScreen(0);//清屏
        LCDSetColumn(0);
        LCDSetPage(0);
    while(1)
    {   
                         /* 可以單個顯示
                        Display(2,0,0*16,0);//
                        Display(2,0,1*16,1);//
                        Display(2,0,2*16,2);//
                        Display(2,0,3*16,3);//
                        Display(1,0,4*16,4);//
                        Display(1,0,5*16,5);//
                        Display(1,0,6*16,6);//*
                        /* 可以多個顯示,這里是4個一起顯示*/
                        /*for(i=0;i<4;i++)
                        {
                        Display(1,0,i*16,i);/*Display(選屏參數(CS2,CS1),pagr選頁參數,
                        column選列參數,number選第幾漢字輸出)
                        _nop_();
                        Display(2,0,i*16,i+4);
                        _nop_();
                        Display(1,0+2,i*16,i+8);
                        _nop_();
                        Display(2,0+2,i*16,i+12);
                        _nop_();
                        Display(1,0+2+2,i*16,i+16);
                        _nop_();
                        Display(2,0+2+2,i*16,i+20);
                                        }
                        */
                        for(i=0;i<4;i++)
                        Display(1,0,i*16,i);//溫度1
                        for(i=0;i<4;i++)
                        Display(1,0+2,i*16,i+4);//溫度2
                        for(i=0;i<4;i++)
                        Display(1,0+2+2,i*16,i+8);//溫度3
                        
                /*顯示八個字
                                        for(i=0;i<8;i++)
                                 {
                        Display(1,0+2+2+2,i*8,i);
                        _nop_(); ;
                        Display(2,0+2+2+2,i*8,i+8);
                                        }
                                        */
                                 
                }
        
}



/*******************************************************************************
* 函 數 名         : Delay10ms
* 函數功能                   : 延時函數,延時10ms
* 輸    入         : 無
* 輸    出         : 無
*******************************************************************************/

void Delay10ms(unsigned int c)   //誤差 0us
{
    unsigned char a,b;
    for(;c>0;c--)
        for(b=38;b>0;b--)
            for(a=130;a>0;a--);
}

//兩個文件以#include為分界

0XXISW294{{ZG}~{65[89P1.png (41.89 KB, 下載次數: 39)

0XXISW294{{ZG}~{65[89P1.png

評分

參與人數 1黑幣 +10 收起 理由
admin + 10

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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