?? 123.c
字號(hào):
#include<reg51.h>
#include<stdio.h>
#include <intrins.h>
#include<stdlib.h>
#define uchar unsigned char
#define uint unsigned int
#define E2 P3^5
#define E1 P3^6
#define A0 P3^7
#define DATA P2
/*----------------------------------------------------------------------------
調(diào)用方式:void OutMI(uchar i)
函數(shù)說明:發(fā)指令i到主窗口。(內(nèi)函數(shù),私有,用戶不直接調(diào)用)
------------------------------------------------------------------------------*/
void OutMI(uchar i)
{
E1=1;
_nop_();
_nop_();
A0=0;_nop_();_nop_();
DATA=i;_nop_();_nop_();
E1=0;_nop_();_nop_();
}
/*------------------------------------------------------------------------------
--
調(diào)用方式:void OutMD(uchar i)
函數(shù)說明:發(fā)數(shù)據(jù)i到主窗口。(內(nèi)函數(shù),私有,用戶不直接調(diào)用)
--------------------------------------------------------------------------------
-*/
void OutMD(uchar i)
{
E1=1;_nop_();_nop_();
A0=1;_nop_();_nop_();
DATA=i;_nop_();_nop_();
E1=0;_nop_();_nop_();
}
/*------------------------------------------------------------------------------
--
調(diào)用方式:void OutSI(uchar i)
函數(shù)說明:發(fā)指令i到從窗口。(內(nèi)函數(shù),私有,用戶不直接調(diào)用)
--------------------------------------------------------------------------------
-*/
void OutSI(uchar i)
{
A0=0;_nop_();_nop_();
E2=1;_nop_();_nop_();
DATA=i;_nop_();_nop_();
E2=0;_nop_();_nop_();
}
/*------------------------------------------------------------------------------
--
調(diào)用方式:void OutSD(uchar i)
函數(shù)說明:發(fā)數(shù)據(jù)i到從窗口。(內(nèi)函數(shù),私有,用戶不直接調(diào)用)
--------------------------------------------------------------------------------
-*/
void OutSD(uchar i)
{
A0=1;_nop_();_nop_();
E2=1;_nop_();_nop_();
DATA=i;_nop_();_nop_();
E2=0;_nop_();_nop_();
}
/*------------------------------------------------------------------------------
--
調(diào)用方式:void LcdIni(void)
函數(shù)說明:12232點(diǎn)陣液晶初始化,開機(jī)后僅調(diào)用一次。
--------------------------------------------------------------------------------
-*/
void LcdIni(void)
{
OutMI(0XE2);OutSI(0XE2);//復(fù)位
OutMI(0XAE);OutSI(0XAE);//POWER SAVE
OutMI(0XA4);OutSI(0XA4);//動(dòng)態(tài)驅(qū)動(dòng)
OutMI(0XA9);OutSI(0XA9);//1/32占空比
OutMI(0XA0);OutSI(0XA0);//時(shí)鐘線輸出
OutMI(0XEE);OutSI(0XEE);//寫模式
OutMI(0X00);OutMI(0XC0);
OutSI(0X00);OutSI(0XC0);
OutMI(0XAF);OutSI(0XAF);
}
/*------------------------------------------------------------------------------
--
調(diào)用方式:void SetPage(uchar page0,uchar page1)
函數(shù)說明:同時(shí)設(shè)置主從顯示頁為0-3頁。(內(nèi)函數(shù),私有,用戶不直接調(diào)用)
--------------------------------------------------------------------------------
-*/
void SetPage(uchar page0,uchar page1)
{
OutMI(0xB8|page1);OutSI(0xB8|page0);
}
/*------------------------------------------------------------------------------
--
調(diào)用方式:void SetAddress(uchar address0,uchar address1)
函數(shù)說明:同時(shí)設(shè)置主從列地址為0-121。(內(nèi)函數(shù),私有,用戶不直接調(diào)用)
--------------------------------------------------------------------------------
-*/
void SetAddress(uchar address0,uchar address1)
{
OutMI(address1&0x7F);OutSI(address0&0x7F);
}
/*------------------------------------------------------------------------------
--
調(diào)用方式:void PutChar0(uchar ch)
函數(shù)說明:在左頁當(dāng)前地址畫一個(gè)字節(jié)8個(gè)點(diǎn)。(內(nèi)函數(shù),私有,用戶不直接調(diào)用)
--------------------------------------------------------------------------------
-*/
void PutChar0(uchar ch)
{
OutSD(ch);
}
/*------------------------------------------------------------------------------
--
調(diào)用方式:void PutChar1(uchar ch)
函數(shù)說明:在右頁當(dāng)前地址畫一個(gè)字節(jié)8個(gè)點(diǎn)。(內(nèi)函數(shù),私有,用戶不直接調(diào)用)
--------------------------------------------------------------------------------
-*/
void PutChar1(uchar ch)
{
OutMD(ch);
}
/*------------------------------------------------------------------------------
--
調(diào)用方式:void DrawBmp(uchar x,bit layer,uchar width,uchar *bmp)
函數(shù)說明:畫一個(gè)圖,橫坐標(biāo)是x,layer表示上下層,width是圖形的寬,高都是16,bmp是
圖形指針
使用zimo21軟件,采用縱向取模得到bmp數(shù)據(jù)。
--------------------------------------------------------------------------------
-*/
void DrawBmp(uchar x0,bit layer,uchar width,uchar *bmp)
{
uchar x,address,i=0; //address表示顯存的物理地址
uchar page=0;
bit window=0; //page表示上下兩頁,window表示左右兩頁
if (layer) page=2;
for (x=x0;x<x0+width;x++)
{
if (x>60) {window=1;address=x%61;}
else address=x;
SetPage(page,page);
SetAddress(address,address);
if (window) PutChar1(bmp[i]);
else PutChar0(bmp[i]);//畫上層
SetPage(page+1,page+1);
SetAddress(address,address);
if (window) PutChar1(bmp[i+width]);
else PutChar0(bmp[i+width]);//畫下層
i++;
}
}
/*------------------------------------------------------------------------------
--
調(diào)用方式:void clrscr(void)
函數(shù)說明:清屏
--------------------------------------------------------------------------------
-*/
void clrscr(void)
{
uchar i;
uchar page;
for (page=0;page<4;page++)
{
SetPage(page,page);
SetAddress(0,0);
for (i=0;i<61;i++){PutChar0(0);PutChar1(0);}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -