?? main.c
字號(hào):
/************************************************************************************
* Copyright (c) 2004,西安銘朗電子科技有限責(zé)任公司
* All rights reserved.
*
* 文件名稱: Main.C
* 文件標(biāo)識(shí): none
* 適用器件: C8051F020
*
* 摘 要: 本文件是AD測試實(shí)驗(yàn);使用外部22.1184MHz晶振.
* 功能:開機(jī)顯示"銘朗科技,WWW.MLARM.COM"信息,為待機(jī)界面。
* 數(shù)秒后在LCD上顯示ADC1通道0和1電壓及溫度值,
*
* 當(dāng)前版本:1.1
* 作 者:劉大偉
* 完成日期:2007年2月10日
*
*************************************************************************************/
/*******************************引用外部頭文件***************************************/
#include "main.h"
/************************************************************************************/
#if LCDA|LCDB
/*************************************************************************************
* 函數(shù)名稱:Datashift;
*
* 函數(shù)功能描述:不同LCD顯示Flash字庫的數(shù)據(jù)順序調(diào)整;
*
* 輸入?yún)?shù):unsigned char類型i 取數(shù)據(jù)的相應(yīng)位,unsigned char指針類型;
*
* 返回?cái)?shù)據(jù):unsigned char類型 返回的顯示數(shù)據(jù);
*
* 注意: none;
*************************************************************************************/
unsigned char Datashift (unsigned char i,unsigned char *p)
{
unsigned char Datatemp[8];
switch(i)
{
case 0x80:
Datatemp[0]=((*p++)&i);
Datatemp[1]=((*p++)&i)>>1;
Datatemp[2]=((*p++)&i)>>2;
Datatemp[3]=((*p++)&i)>>3;
Datatemp[4]=((*p++)&i)>>4;
Datatemp[5]=((*p++)&i)>>5;
Datatemp[6]=((*p++)&i)>>6;
Datatemp[7]=((*p++)&i)>>7;
break;
case 0x40:
Datatemp[0]=((*p++)&i)<<1;
Datatemp[1]=((*p++)&i);
Datatemp[2]=((*p++)&i)>>1;
Datatemp[3]=((*p++)&i)>>2;
Datatemp[4]=((*p++)&i)>>3;
Datatemp[5]=((*p++)&i)>>4;
Datatemp[6]=((*p++)&i)>>5;
Datatemp[7]=((*p++)&i)>>6;
break;
case 0x20:
Datatemp[0]=((*p++)&i)<<2;
Datatemp[1]=((*p++)&i)<<1;
Datatemp[2]=((*p++)&i);
Datatemp[3]=((*p++)&i)>>1;
Datatemp[4]=((*p++)&i)>>2;
Datatemp[5]=((*p++)&i)>>3;
Datatemp[6]=((*p++)&i)>>4;
Datatemp[7]=((*p++)&i)>>5;
break;
case 0x10:
Datatemp[0]=((*p++)&i)<<3;
Datatemp[1]=((*p++)&i)<<2;
Datatemp[2]=((*p++)&i)<<1;
Datatemp[3]=((*p++)&i);
Datatemp[4]=((*p++)&i)>>1;
Datatemp[5]=((*p++)&i)>>2;
Datatemp[6]=((*p++)&i)>>3;
Datatemp[7]=((*p++)&i)>>4;
break;
case 0x08:
Datatemp[0]=((*p++)&i)<<4;
Datatemp[1]=((*p++)&i)<<3;
Datatemp[2]=((*p++)&i)<<2;
Datatemp[3]=((*p++)&i)<<1;
Datatemp[4]=((*p++)&i);
Datatemp[5]=((*p++)&i)>>1;
Datatemp[6]=((*p++)&i)>>2;
Datatemp[7]=((*p++)&i)>>3;
break;
case 0x04:
Datatemp[0]=((*p++)&i)<<5;
Datatemp[1]=((*p++)&i)<<4;
Datatemp[2]=((*p++)&i)<<3;
Datatemp[3]=((*p++)&i)<<2;
Datatemp[4]=((*p++)&i)<<1;
Datatemp[5]=((*p++)&i);
Datatemp[6]=((*p++)&i)>>1;
Datatemp[7]=((*p++)&i)>>2;
break;
case 0x02:
Datatemp[0]=((*p++)&i)<<6;
Datatemp[1]=((*p++)&i)<<5;
Datatemp[2]=((*p++)&i)<<4;
Datatemp[3]=((*p++)&i)<<3;
Datatemp[4]=((*p++)&i)<<2;
Datatemp[5]=((*p++)&i)<<1;
Datatemp[6]=((*p++)&i);
Datatemp[7]=((*p++)&i)>>1;
break;
case 0x01:
Datatemp[0]=((*p++)&i)<<7;
Datatemp[1]=((*p++)&i)<<6;
Datatemp[2]=((*p++)&i)<<5;
Datatemp[3]=((*p++)&i)<<4;
Datatemp[4]=((*p++)&i)<<3;
Datatemp[5]=((*p++)&i)<<2;
Datatemp[6]=((*p++)&i)<<1;
Datatemp[7]=((*p++)&i);
break;
default:
break;
}
return Datatemp[0]|
Datatemp[1]|
Datatemp[2]|
Datatemp[3]|
Datatemp[4]|
Datatemp[5]|
Datatemp[6]|
Datatemp[7];
}
#endif
/*************************************************************************************
* 函數(shù)名稱:Disp_Flash_Word;
*
* 函數(shù)功能描述:LCD單字顯示Flash字庫;
*
* 輸入?yún)?shù):unsigned char類型page頁,unsigned char類型local位置,BYTE類型坐標(biāo)x,y;
*
* 返回?cái)?shù)據(jù):none;
*
* 注意: none;
*************************************************************************************/
void Disp_Flash_Word (unsigned char page,local,x,y)
{
unsigned long addrtemp;
unsigned char xdata diptemp[32];
#if LCDA|LCDB
unsigned char xdata contemp[32];
unsigned char i,j,k;
#endif
page--;
local--;
addrtemp = (unsigned long)(page*94+local)*32;
Flash_DataRD (addrtemp, diptemp, 32);
#if LCDA
for(k=0;k<2;k++)
{
j=0;
for(i=0x80;i!=0;i>>=1)
{
contemp[31-16*(1-k)-2*j] = Datashift(i,&diptemp[16*k+8]);
contemp[31-16*(1-k)-2*j-1] = Datashift(i,&diptemp[16*k+0]);
j++;
}
}
LCDA_ShowHZxy(y, x, 16, 16, contemp);
#elif LCDB
for(k=0;k<2;k++)
{
j=0;
for(i=0x80;i!=0;i>>=1)
{
contemp[31-16*(1-k)-2*j] = Datashift(i,&diptemp[16*k+8]);
contemp[31-16*(1-k)-2*j-1] = Datashift(i,&diptemp[16*k+0]);
j++;
}
}
LCDB_ShowHZxy(y, x, 16, 16, contemp);
#elif LCDC
LCDC_DispFWord(x, y, diptemp, 2, 16, 1);
#endif
}
/*************************************************************************************
* 函數(shù)名稱
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -