?? main2.c
字號:
/* 縱向取模,字節倒序 */
uint8 char_e_[]={
0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,
};
/*-- 文字: t --*/
/*-- 宋體12; 此字體下對應的點陣為:寬x高=8x16 --*/
/* 縱向取模,字節倒序 */
uint8 char_t_[]={
0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,
};
/* 開機畫面------斯凱科技 */
/*-- 寬度x高度=128x64 --*/
/* 縱向取模,字節倒序 */
/*uint8 ARMSKY_logo[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xE0,0x00,0x00,0x00,0x00,
0x00,0x00,0x80,0xC0,0x60,0x30,0x08,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0xF8,0x52,0xFE,0x08,0x00,
0xF0,0x90,0x8C,0xC0,0x40,0x40,0x00,0x00,0x00,0x40,0x70,0xA0,0xBC,0xA0,0x38,0x00,
0xE0,0x10,0xF0,0x30,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x90,0xF8,0x4C,0x40,0x00,
0x50,0x20,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x42,0xFC,0xA0,0x20,0x20,
0xFC,0xAC,0xA0,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x80,0x2E,0xF9,0x00,0x00,0xE0,0xF8,
0xFE,0xEE,0x63,0x70,0x38,0xB8,0x9C,0x0C,0x86,0x83,0x83,0xC1,0x41,0x00,0x20,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x24,0x12,0x0B,0x03,0x09,0x30,0x18,
0x07,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x24,0x52,0x31,0x10,0x0C,
0x03,0x00,0x1F,0x20,0x20,0x30,0x20,0x00,0x08,0x08,0x04,0x03,0x7F,0x01,0x03,0x02,
0x02,0x02,0xFF,0x01,0x01,0x01,0x00,0x00,0x04,0x04,0x02,0x22,0x3F,0x20,0x13,0x15,
0x08,0x16,0x31,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x11,0xDB,0x2D,0x60,0xD0,0x31,0x75,
0x77,0xE6,0xE3,0xC3,0x83,0x03,0x03,0x01,0x01,0x01,0x00,0x00,0x20,0xE0,0x00,0x20,
0xE0,0x20,0x80,0x60,0x20,0x20,0xE0,0x00,0x20,0xE0,0x20,0x80,0x60,0x20,0x20,0xE0,
0x00,0x20,0xE0,0x20,0x80,0x60,0x20,0x00,0x00,0x00,0x00,0x40,0xA0,0xA0,0xC0,0x00,
0x40,0xE0,0x40,0x20,0x40,0xE0,0x40,0x20,0xE0,0x40,0x20,0xC0,0x00,0x00,0xC0,0xA0,
0x20,0x60,0x00,0x08,0xFC,0x80,0x40,0x20,0x20,0x20,0xE0,0x20,0x00,0xA0,0x60,0x20,
0x00,0x00,0x00,0x40,0xE0,0x40,0x20,0x20,0xC0,0x00,0x00,0xC0,0xA0,0xA0,0xC0,0x00,
0x20,0xF8,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x0C,0x02,0x01,0x00,0x00,0x00,0x01,0x00,0x00,
0x00,0x00,0x01,0x01,0x03,0x01,0x03,0x02,0x02,0x04,0x00,0x00,0x00,0x01,0x06,0x01,
0x01,0x06,0x01,0x00,0x00,0x00,0x01,0x06,0x01,0x01,0x06,0x01,0x00,0x00,0x00,0x01,
0x06,0x01,0x01,0x06,0x01,0x00,0x00,0x00,0x04,0x00,0x00,0x03,0x04,0x04,0x07,0x04,
0x04,0x07,0x04,0x00,0x04,0x07,0x04,0x00,0x07,0x04,0x00,0x07,0x04,0x00,0x06,0x04,
0x05,0x03,0x00,0x04,0x07,0x04,0x01,0x06,0x04,0x10,0x10,0x13,0x0C,0x03,0x00,0x00,
0x00,0x04,0x00,0x04,0x07,0x04,0x00,0x04,0x07,0x04,0x00,0x03,0x04,0x04,0x02,0x00,
0x00,0x07,0x04,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xFE,0x28,
0x28,0xF8,0xAE,0x48,0xB8,0x28,0xAE,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x82,0x62,0x1C,0x60,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x48,0x48,0x48,0xC8,0x48,0x48,0xFE,0x08,0x0A,0x0C,0x08,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x04,0x94,0x94,0xDC,0xB4,0x92,0x92,0xCA,0x82,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x90,0xD8,0xB6,0x98,0x00,0x64,0xD4,0x4E,0xC4,0x64,0x44,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x05,
0x05,0x0F,0x08,0x04,0x03,0x02,0x04,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
0x04,0x02,0x01,0x00,0x00,0x00,0x01,0x02,0x04,0x08,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x08,0x08,0x08,0x07,0x04,0x04,0x00,0x03,0x04,0x08,0x0E,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x08,0x04,0x02,0x09,0x08,0x0F,0x00,0x01,0x02,0x04,0x08,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x02,0x0A,0x08,0x04,0x03,0x00,0x0F,0x08,0x0E,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xA0,0x98,0xA6,0xC8,0x90,0x02,0xFA,0x0E,0xEA,0x0A,
0xFA,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x4A,0x4A,0x4A,0x4A,0xCA,
0x4E,0x40,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0xBE,0x92,0x12,
0x92,0x92,0xBE,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x90,0x9E,0x90,
0x00,0x7C,0xD4,0x7E,0xD4,0x54,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x04,0x0A,0x01,0x08,0x05,0x02,0x03,0x04,
0x09,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x03,0x05,0x09,0x09,0x0F,
0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x04,0x04,0x0F,0x00,
0x0F,0x04,0x04,0x04,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x0F,
0x02,0x03,0x02,0x02,0x0F,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};*/
/********************************************************************************************
* 函數名稱:Delay()
* 功 能:軟件延時
* 入口參數:count 延時參數,值越大,延時越長
* 出口參數:無
*********************************************************************************************/
void Delay(uint16 count)
{
uint8 i;
while(--count != 0)
{
for(i = 0; i < 125; i++); // ";" 表示空語句,CPU空轉。
} // i 從0加到125,在12M晶體下CPU大概耗時1毫秒
}
/********************************************************************************************
* 函數名稱:LCM12864_TestBusy()
* 功 能:LCM12864測忙函數
* 入口參數:無
* 出口參數:無
*********************************************************************************************/
void LCM12864_TestBusy(void)
{
IO0SET=LCM12864_RW;
IO0CLR=LCM12864_RS;
IO0SET=LCM12864_E;
// while(((IO0PIN&LCM12864_DB7_DB0)>>8) & LCM12864_STATUS_BUSY);
}
/********************************************************************************************
* 函數名稱:LCM12864_WriteCMD()
* 功 能:寫命令到LCM12864
* 入口參數:LCM12864_command LCM12864的命令字節
* 出口參數:無
*********************************************************************************************/
void LCM12864_WriteCMD(uint8 LCM12864_command)
{
IO0CLR=LCM12864_RW;
IO0CLR=LCM12864_RS;
IO0SET=LCM12864_command<<8;
IO0CLR=((~LCM12864_command)<<8)&LCM12864_DB7_DB0;
IO0SET=LCM12864_E;
Delay(1);
IO0CLR=LCM12864_E;
LCM12864_TestBusy();
}
/********************************************************************************************
* 函數名稱:LCM12864_WriteData()
* 功 能:寫數據到LCM12864
* 入口參數:LCM12864 LCM12864的命令字節
* 出口參數:無
*********************************************************************************************/
void LCM12864_WriteData(uint8 LCM12864_data)
{
IO0CLR=LCM12864_RW;
IO0SET=LCM12864_RS;
IO0SET=LCM12864_data<<8;
IO0CLR=((~LCM12864_data)<<8)&LCM12864_DB7_DB0;
IO0SET=LCM12864_E;
Delay(1);
IO0CLR=LCM12864_E;
LCM12864_TestBusy();
}
/********************************************************************************************
* 函數名稱:LCM12864_ReadData()
* 功 能:從LCM12864讀一字節數據
* 入口參數:無
* 出口參數:返回值為從LCM12864讀出的一字節數據
*********************************************************************************************/
uint8 LCM12864_ReadData(void)
{
uint8 LCM12864_data;
IO0SET=LCM12864_RW;
IO0SET=LCM12864_RS;
IO0SET=LCM12864_E;
/* 按LCM12864數據手冊,先空讀一次 */
LCM12864_data = (IO0PIN&LCM12864_DB7_DB0)>>8;
LCM12864_TestBusy();
/* 按LCM12864數據手冊,再讀一次 */
LCM12864_data = (IO0PIN&LCM12864_DB7_DB0)>>8;
LCM12864_TestBusy();
return LCM12864_data;
}
/******************************************************************************************************************
* 函數名稱:LCM12864_Write1Byte_X_Y()
* 功 能:向LCM12864指定點寫一字節數據。
* 入口參數:x x坐標值(0-127)
* y y坐標值(0-63)
* LCM12864_data 所要寫的數據
* 出口參數:無
*******************************************************************************************************************/
void LCM12864_Write1Byte_X_Y(uint8 x, uint8 y, uint8 LCM12864_data)
{
/* 參數過濾 */
x = x&0x7f;
y = y&0x3f;
IO0CLR=LCM12864_CS1;
IO0CLR=LCM12864_CS2; // 不選中左半屏及右半屏
/* 更新LCD12864顯示 */
if(x<64) // 判斷選擇左、右半屏
{
IO0SET=LCM12864_CS1; // 選中左半屏
}
else
{
IO0SET=LCM12864_CS2; // 選中右半屏
x = x-64;
}
LCM12864_WriteCMD(LCM12864_COL_START_ADDR+x); // 設置當前列地址,即x坐標
LCM12864_WriteCMD(LCM12864_PAGE_START_ADDR+y); // 設置當前頁地址,即y坐標
LCM12864_WriteData(LCM12864_data); // 向LCM12864寫數據
}
/******************************************************************************************************************
* 函數名稱:LCM12864_Read1Byte_X_Y()
* 功 能:從LCM12864指定點上讀取一字數據。
* 入口參數:x x坐標值(0-127)
* y y坐標值(0-63)
* 出口參數:返回該點上的字節數據。
*******************************************************************************************************************/
uint8 LCM12864_Read1Byte_X_Y(uint8 x, uint8 y)
{
uint8 LCM12864_data;
/* 參數過濾 */
x = x&0x7f;
y = y&0x3f;
IO0CLR=LCM12864_CS1;
IO0CLR=LCM12864_CS2; // 不選中左半屏及右半屏
if(x<64) // 判斷選擇左、右半屏
{
IO0SET=LCM12864_CS1; // 選中左半屏
}
else
{
IO0SET=LCM12864_CS2; // 選中右半屏
x = x-64;
}
LCM12864_WriteCMD(LCM12864_COL_START_ADDR+x); // 設置當前列地址,即x坐標
LCM12864_WriteCMD(LCM12864_PAGE_START_ADDR+y); // 設置當前頁地址,即y坐標
LCM12864_data = LCM12864_ReadData(); // 向LCM12864寫數據
return LCM12864_data;
}
/********************************************************************************************
* 函數名稱:LCM12864_Init()
* 功 能:LCM12864初始化
* 入口參數:無
* 出口參數:無
*********************************************************************************************/
void LCM12864_Init(void)
{
IO0CLR=LCM12864_RESET;
IO0SET=LCM12864_RESET;
IO0SET=LCM12864_CS1;
IO0SET=LCM12864_CS2;
LCM12864_WriteCMD(LCM12864_DISP_OFF);
LCM12864_WriteCMD(LCM12864_PAGE_START_ADDR+0);
LCM12864_WriteCMD(LCM12864_START_ROW+0);
LCM12864_WriteCMD(LCM12864_COL_START_ADDR+0);
LCM12864_WriteCMD(LCM12864_DISP_ON);
// LCM12864_LEDK = 1;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -