?? disp.c
字號:
/**********************************************************************************************
** 文件名稱: DISP.C
** 最后修改: 2009-11-9
** 版 本: 1.0
** 描 素: 氣體檢測系統OCM240128液晶顯示界面顯示程序
**---------------------------------------------------------------------------------------------
** 作 者: 李雪川
** 創作日期: 2009-11-9
** 文件描述: 驅動OCM240128顯示氣體檢測顯示界面
------------------------硬件端口連接定義-------------------------------------------------------
** OXM240128 MCU
** FS GND 字形選擇0: 8*8 1: 6*8
** C_D P2.6 =1選擇指令, =0選擇數據
** _CE P2.7 片選=0有效
** _RW P3.6(_RW) 總線控制讀寫
** _RD P3.7(_RD)
** PDAT P0 8位總線數據端口
----------------------------------------------------------------------------------------------
** 全局變量:
** 主要函數:
void Message_clr(void) 清除信息顯示區
void Disp_Arrow(uchar num) 顯示箭頭
void Disp_Alarm_num(uchar num, uchar bus) 顯示報警數量
void Disp_Alarm( struct alarm *info) 顯示詳細報警信息
void Disp_fault(struct fault *info) 顯示故障信息
void Disp_limit(struct limit *info) 顯示上下限信息
void Disp_shield(struct shield *info) 顯示屏蔽信息
void Disp_login(struct login *info) 顯示注冊信息
void Disp_Power(struct power *info) 上掉電信息
void Disp_Time(struct time * t) 顯示時間
void Disp_Year(uint year) 顯示年
void Disp_picture(uchar target, uchar mod) 圖標顯示
void Limit_change_ico(void) 上下限修改界面
void Linkage_change_ico(void) 聯動和屏蔽修改界面
void OCM_dispinit(void) 顯示初始化
**----------------------------------------------------------------------------------------------
** 硬件平臺: 51系列單片機,總線方式驅動
** 軟件平臺: Keil3.0
*************************************************************************************************/
#include "OCM240128.h"
#include "Disp.h"
unsigned char code DVO_tab[3][16][24 / 8] = {
/*-- 文字: D --*/
/*-- 黑體18; 此字體下對應的點陣為:寬x高=13x24 --*/
/*-- 寬度不是8的倍數,現調整為:寬度x高度=16x24 --*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x7F,0xC0,0x71,0xE0,
0x70,0xE0,0x70,0xF0,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,
0x70,0xF0,0x70,0xE0,0x71,0xE0,0x7F,0xC0,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
/*-- 文字: V --*/
/*-- 黑體18; 此字體下對應的點陣為:寬x高=13x24 --*/
/*-- 寬度不是8的倍數,現調整為:寬度x高度=16x24 --*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x38,0xF0,0x78,0x70,0x70,
0x70,0x70,0x70,0x70,0x38,0xE0,0x38,0xE0,0x38,0xE0,0x1D,0xC0,0x1D,0xC0,0x1D,0xC0,
0x0D,0x80,0x0F,0x80,0x0F,0x80,0x07,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
/*-- 文字: O --*/
/*-- 黑體18; 此字體下對應的點陣為:寬x高=13x24 --*/
/*-- 寬度不是8的倍數,現調整為:寬度x高度=16x24 --*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x80,0x1F,0xC0,0x3D,0xE0,
0x38,0xE0,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,
0x70,0x70,0x38,0xE0,0x3D,0xE0,0x1F,0xC0,0x0F,0x80,0x00,0x00,0x00,0x00,0x00,0x00}};
unsigned char code arrow_tab[2][12][16 / 8] = {
/*-- 文字: ▲ --*/
/*-- 黑體9; 此字體下對應的點陣為:寬x高=12x12 --*/
/*-- 寬度不是8的倍數,現調整為:寬度x高度=16x12 --*/
0x00,0x00,0x00,0x00,0x06,0x00,0x06,0x00,0x0F,0x00,0x1F,0x80,0x1F,0x80,0x3F,0xC0,
0x3F,0xC0,0x7F,0xE0,0x00,0x00,0x00,0x00,
/*-- 文字: ▼ --*/
/*-- 黑體9; 此字體下對應的點陣為:寬x高=12x12 --*/
/*-- 寬度不是8的倍數,現調整為:寬度x高度=16x12 --*/
0x00,0x00,0x00,0x00,0x7F,0xE0,0x3F,0xC0,0x3F,0xC0,0x1F,0x80,0x1F,0x80,0x0F,0x00,
0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00};
unsigned char code gImage_look[22][4] = {
/*-- 調入了一幅圖像:C:\Documents and Settings\Administrator\桌面\查看.bmp --*/
/*-- 寬度x高度=27x22 --*/
/*-- 寬度不是8的倍數,現調整為:寬度x高度=32x22 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x7F,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0x80,0x61,0xFD,0xFD,0x80,0x63,0xFF,0x87,0x80,
0x67,0xFF,0x03,0x80,0x67,0xFE,0x07,0x80,0x67,0xFE,0x07,0x80,0x6F,0xFE,0x07,0x80,
0x6F,0xFC,0x07,0x80,0x6F,0xFC,0x0D,0x80,0x7F,0xFC,0x0D,0x80,0x7F,0xF8,0x0D,0x80,
0x7F,0xF8,0x0D,0x80,0x7F,0xFF,0xFD,0x80,0x60,0x00,0x01,0x80,0x7F,0xFF,0xFF,0x80,
0x7F,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,};
unsigned char code gImage_time[22][4] = {
/*-- 調入了一幅圖像:C:\Documents and Settings\Administrator\桌面\時鐘.bmp --*/
/*-- 寬度x高度=27x22 --*/
/*-- 寬度不是8的倍數,現調整為:寬度x高度=32x22 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x7F,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0x80,0x61,0xDE,0xE1,0x80,0x63,0x8C,0x71,0x80,
0x63,0x0C,0x39,0x80,0x66,0x0C,0x19,0x80,0x66,0x0C,0x0D,0x80,0x6C,0x0C,0x0D,0x80,
0x6C,0x1F,0xFD,0x80,0x6C,0x1F,0xFD,0x80,0x66,0x1E,0x3D,0x80,0x66,0x0C,0x19,0x80,
0x67,0x00,0x19,0x80,0x63,0x00,0x31,0x80,0x61,0xC0,0xE1,0x80,0x7F,0xFF,0xFF,0x80,
0x7F,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,};
unsigned char code glmage_login[22][4] = {
/*-- 調入了一幅圖像:C:\Documents and Settings\Administrator\桌面\注冊_2.bmp --*/
/*-- 寬度x高度=27x22 --*/
/*-- 寬度不是8的倍數,現調整為:寬度x高度=32x22 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x7F,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0x80,0x60,0x7F,0x81,0x80,0x60,0xF0,0xC1,0x80,
0x61,0xC0,0xE1,0x80,0x67,0xFF,0xF1,0x80,0x67,0xFF,0xF1,0x80,0x61,0xFC,0x61,0x80,
0x60,0xFC,0x71,0x80,0x60,0x70,0x79,0x80,0x60,0x7E,0xF9,0x80,0x60,0x3F,0xF9,0x80,
0x60,0x03,0xF1,0x80,0x60,0x01,0xE1,0x80,0x60,0x00,0x01,0x80,0x7F,0xFF,0xFF,0x80,
0x7F,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,};
unsigned char code glmage_limit[22][4] = {
/*-- 調入了一幅圖像:C:\Documents and Settings\Administrator\桌面\上下限_3.bmp --*/
/*-- 寬度x高度=27x22 --*/
/*-- 寬度不是8的倍數,現調整為:寬度x高度=32x22 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x7F,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0x80,0x6F,0xF8,0x61,0x80,0x6F,0xF8,0x61,0x80,
0x60,0xC0,0x61,0x80,0x60,0xE0,0x61,0x80,0x61,0xE0,0x61,0x80,0x63,0xF0,0x61,0x80,
0x63,0xF1,0xF9,0x80,0x60,0xC1,0xF9,0x80,0x60,0xC1,0xF1,0x80,0x60,0xC0,0xF1,0x80,
0x60,0xC0,0xE1,0x80,0x60,0xC7,0xFD,0x80,0x60,0xC7,0xFD,0x80,0x7F,0xFF,0xFF,0x80,
0x7F,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,};
unsigned char code gImage_dis[22][4] = {
/*-- 調入了一幅圖像:C:\Documents and Settings\Administrator\桌面\繼電器聯動和屏蔽_4.bmp --*/
/*-- 寬度x高度=27x22 --*/
/*-- 寬度不是8的倍數,現調整為:寬度x高度=32x22 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x7F,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0x80,0x6F,0x0F,0x01,0x80,0x6C,0xF3,0xFF,0x80,
0x79,0xF9,0x8D,0x80,0x73,0xBD,0x8D,0x80,0x77,0x36,0xCD,0x80,0x76,0x76,0xCD,0x80,
0x76,0xE6,0xCD,0x80,0x76,0xC6,0xCD,0x80,0x73,0xC6,0xBF,0x80,0x7B,0xFD,0xF7,0x80,
0x7C,0xFB,0xE3,0x80,0x6E,0x07,0x63,0x80,0x67,0xFE,0x7F,0x80,0x7F,0xFF,0xFF,0x80,
0x7F,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,};
unsigned char code gImage_barr[20][4] = {
/*-- 調入了一幅圖像:C:\Documents and Settings\Administrator\桌面\電池符號_2.bmp --*/
/*-- 寬度x高度=27x20 --*/
/*-- 寬度不是8的倍數,現調整為:寬度x高度=32x20 --*/
0xFF,0xFF,0xFF,0xE0,0x83,0xE0,0xF8,0x20,0xBF,0xFF,0xFF,0xA0,0xBF,0xFF,0xFF,0xA0,
0xB0,0x00,0x01,0xA0,0xB0,0x00,0x01,0xA0,0xB0,0x00,0x21,0xA0,0xB0,0x00,0x21,0xA0,
0xB3,0xC0,0xF9,0xA0,0xB0,0x00,0x21,0xA0,0xB0,0x00,0x21,0xA0,0xB0,0x00,0x01,0xA0,
0xB0,0x00,0x01,0xA0,0xB0,0x00,0x01,0xA0,0xB0,0x00,0x01,0xA0,0xB0,0x00,0x01,0xA0,
0xBF,0xFF,0xFF,0xA0,0xBF,0xFF,0xFF,0xA0,0x80,0x00,0x00,0x20,0xFF,0xFF,0xFF,0xE0,
};
/********************************************************************************************
** 函數名稱: void Message_clr(void)
** 函數功能: 清除信息區
在切換界面時調用該函數,徹底清除上次的信息界面
** 調用模塊: 無
*********************************************************************************************/
void Message_clr(void)
{
uchar i;
for (i = 0; i < 8; i++)
{
OCM_line_clr(MESSAGE_ADDR1 + 30*i,0X00);
}
}
/*********************************************************************************************
** 函數名稱: void Disp_Line(uint addr)
** 功能描述: 任意地址畫一條線
** 輸入參數: addr:圖形地址(字節單位)
** 輸出參數:
** 調用模塊: 外部函數調用
*********************************************************************************************/
void Disp_Line(uint addr)
{
uchar i;
OCM_ac(2,Figure_Addr + addr); //設置地址
for (i = 0; i < 30; i++)
OCM_onewr(0,0XFF);
}
/*********************************************************************************************
** 函數名稱: void Disp_Arrow(uchar num)
** 功能描述: 顯示箭頭
** 輸入參數: num: =0 不顯示箭頭 =1 顯示向上箭頭 =2 顯示向下箭頭 =其他 兩個同時顯示
** 輸出參數:
** 調用模塊: 內部函數調用
*********************************************************************************************/
void Disp_Arrow(uchar num)
{
uchar h,w;
w = sizeof(arrow_tab[0][0]) * 8;
h = sizeof(arrow_tab[0]) / sizeof(arrow_tab[0][0]);
switch (num)
{
case 0:
/*void OCM_picture(uint addr, uchar w, uchar h, uchar *tab) */
OCM_picture_clr(Figure_Addr + 8 * 30 * 4, w, h);
OCM_picture_clr(Figure_Addr + 8 * 30 * 10, w, h);
break;
case 1:
OCM_picture(Figure_Addr + 8 * 30 * 4, w, h, &arrow_tab[0][0]); //顯示向上箭頭
OCM_picture_clr(Figure_Addr + 8 * 30 * 10, w, h);
break;
case 2:
OCM_picture_clr(Figure_Addr + 8 * 30 * 4, w, h);
OCM_picture(Figure_Addr + 8 * 30 * 10, w, h, &arrow_tab[1][0]); //顯示向下箭頭
break;
default: OCM_picture(Figure_Addr + 8 * 30 * 4, w, h, &arrow_tab[0][0]); //顯示向上箭頭
OCM_picture(Figure_Addr + 8 * 30 * 10, w, h, &arrow_tab[1][0]); //顯示向下箭頭
break;
}
}
/*********************************************************************************************
** 函數名稱: void Disp_Alarm_Figure(void)
** 功能描述: 報警圖形顯示
** 輸入參數: 無
** 輸出參數: 無
** 調用模塊: 內部函數調用
*********************************************************************************************/
void Disp_Alarm_Figure(void)
{
uchar i;
/* Alarm BUS 顯示 */
OCM_autwr(Text_Addr + (30 * 12 + 2),sizeof(ALARM_BUS_tab),ALARM_BUS_tab);
/* 顯示報警邊框 */
for (i = 0; i < 12; i++)
{
OCM_ac(2, Figure_Addr + (8 * 30 * 13) + 30 * (5+i) + 9);
OCM_onewr(2, 0X04); //地址不變
}
for (i = 0; i < 12; i++)
{
OCM_ac(2, Figure_Addr + (8 * 30 * 13) + 30 * (5+i) + 11);
OCM_onewr(2, 0X24);
}
for (i = 0; i < 12; i++)
{
OCM_ac(2, Figure_Addr + (8 * 30 * 13) + 30 * (5+i) + 13);
OCM_onewr(2, 0X20);
}
OCM_ac(2, Figure_Addr + (8 * 30 * 13) + 30 * 5 + 9); //顯示地址14行第15個開始顯示 //總線位置
OCM_onewr(0, 0X07);
OCM_onewr(0, 0XFF);
OCM_onewr(0, 0XE7);
OCM_onewr(0, 0XFF);
OCM_onewr(0, 0XE0);
OCM_ac(2, Figure_Addr + (8 * 30 * 15) + 30 * 1 + 9);
OCM_onewr(0, 0X07);
OCM_onewr(0, 0XFF);
OCM_onewr(0, 0XE7);
OCM_onewr(0, 0XFF);
OCM_onewr(0, 0XE0);
}
/*********************************************************************************************
** 函數名稱: void Disp_Alarm_num(uchar num, uchar bus)
** 功能描述: 顯示警告信息
** 輸入參數: num警告個數
bus總線 =0 不顯示總線 =1:顯示總線1 =2:顯示中線2 其他:顯示總線1和2
** 輸出參數:
** 調用模塊: 外部函數調用
*********************************************************************************************/
void Disp_Alarm_num(uchar num, uchar bus)
{
/* 顯示報警數 */
OCM_ac(2, Text_Addr + (30 * 14 + 3)); //顯示地址14行第6個字
OCM_onewr(0, num / 100 + 0X10);
OCM_onewr(0, (num % 100)/10 + 0X10);
OCM_onewr(0, num % 10 + 0X10);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -