📄 sino_mos_disp.c
字号:
#include "public.h"
unsigned char Seg7_Num_Array[]={
CHAR_NUM_0,
CHAR_NUM_1,
CHAR_NUM_2,
CHAR_NUM_3,
CHAR_NUM_4,
CHAR_NUM_5,
CHAR_NUM_6,
CHAR_NUM_7,
CHAR_NUM_8,
CHAR_NUM_9,
};
unsigned char Seg7_Offset[]={
SEG7_A_ADDR,
SEG7_B_ADDR,
SEG7_C_ADDR,
SEG7_D_ADDR,
SEG7_E_ADDR,
SEG7_F_ADDR,
SEG7_G_ADDR
};
unsigned int Seg_Offseg[]={
M_SEG_A_OFFSET,
M_SEG_B_OFFSET,
M_SEG_C_OFFSET,
M_SEG_D_OFFSET,
M_SEG_E_OFFSET,
M_SEG_F_OFFSET,
M_SEG_H_OFFSET,
M_SEG_I_OFFSET,
M_SEG_J_OFFSET,
M_SEG_K_OFFSET,
M_SEG_L_OFFSET,
M_SEG_M_OFFSET,
M_SEG_N_OFFSET,
};
unsigned char Char_Addr[MAX_CHAR_NUM] ={
TITLE_HIGH_ADDR, TITLE_LOW_ADDR, HOUR_HIGH_ADDR,HOUR_LOW_ADDR ,
MIN_HIGH_ADDR, MIN_LOW_ADDR,SEC_HIGH_ADDR, SEC_LOW_ADDR
};
unsigned int Num_Array[]={
M_CHAR_NUM_0,
M_CHAR_NUM_1,
M_CHAR_NUM_2,
M_CHAR_NUM_3,
M_CHAR_NUM_4,
M_CHAR_NUM_5,
M_CHAR_NUM_6,
M_CHAR_NUM_7,
M_CHAR_NUM_8,
M_CHAR_NUM_9,
};
unsigned int Char_Array[]={
M_CHAR_A,
M_CHAR_B,
M_CHAR_C,
M_CHAR_D,
M_CHAR_E,
M_CHAR_F,
M_CHAR_G,
M_CHAR_H,
M_CHAR_I,
M_CHAR_J,
M_CHAR_K,
M_CHAR_L,
M_CHAR_M,
M_CHAR_N,
M_CHAR_O,
M_CHAR_P,
M_CHAR_Q,
M_CHAR_R,
M_CHAR_S,
M_CHAR_T,
M_CHAR_U,
M_CHAR_V,
M_CHAR_W,
M_CHAR_X,
M_CHAR_Y,
M_CHAR_Z
};
#ifdef SINO_MOS
void DisplayUpdate()
{
unsigned char i;
SetSPICE;
SetSPICLK;
SetSPIDATA;
// ClearSPIINH;
NOP;
NOP;
NOP;
ClearSPICE;
NOP;
NOP;
NOP;
for(i = 0;i< 8;i++)
{
ClearSPICLK;
NOP;
NOP;
if(CCB_ADDR & (0x01 << i))
SetSPIDATA;
else
ClearSPIDATA;
NOP;
NOP;
NOP;
SetSPICLK;
NOP;
NOP;
}
SetSPICE;
NOP;
NOP;
NOP;
for(i = 0;i< 160;i++)
{
ClearSPICLK;
NOP;
NOP;
if(DisplayBuff[i/8] & ((0x01) << (i%8)))
SetSPIDATA;
else
ClearSPIDATA;
NOP;
NOP;
NOP;
SetSPICLK;
NOP;
NOP;
}
ClearSPICE;
ClearSPICLK;
ClearSPIDATA;
NOP;
NOP;
NOP;
//SetSPIINH;
NOP;
NOP;
// SetSPIINH;
}
void DisplayInit(void)
{
int i;
/***********Add a led for instruct***/
PD_LED = 1;
PCR1_LED = 1;
PCR2_LED = 0;
Pin_LED = 1;
/*******************/
Wait1ms(20);
SPICESETUP
SPICLKSETUP
SPIDATASETUP
SPIINHSETUP
//ClearSPIINH;
SetSPIINH;
for(i = 0; i< 20;i++)
DisplayBuff[i] = 0x00;
DisplayUpdate();
#ifdef SINO_MOS_TEST_PANNEL
for(i = 0;i < 156;i++){
DisplayBuff[i/8] |= 0x01 << (i %8);
DisplayUpdate();
}
#endif
//PrintLine(" Init ");
Wait1ms(1);
}
unsigned char DisplayChar(unsigned char pos,unsigned char pstr)
{
unsigned char nums;
unsigned int tmp;
unsigned char addrs;
unsigned char cur_addrs;
int i;
if(pos > MAX_CHAR_NUM +1) return 0;
if(pstr <= 'z' && pstr >= 'a' )
{
nums = pstr - 'a';
tmp = Char_Array[nums];
}else if (pstr >= 'A' && pstr <= 'Z'){
nums = pstr - 'A';
tmp = Char_Array[nums];
}else if(pstr >= '0' && pstr <= '9'){
nums = pstr - '0';
tmp = Num_Array[nums];
}else if(pstr >= 0 && pstr <= 9) tmp = Num_Array[pstr];
else tmp = 0x0000;
addrs = Char_Addr[pos]-1;
for(i = 0; i <= 13 ;i ++)
{
cur_addrs = addrs + Seg_Offseg[i] ;
DisplayBuff[cur_addrs/8] &= ~(0x01 <<(cur_addrs%8));
if(tmp & (0x0001 << i))
DisplayBuff[cur_addrs /8] |= (0x01 << (cur_addrs %8));
}
//Display7Seg(6);
}
void Display7Seg(unsigned char datas)
{
unsigned char i;
unsigned char tmp,tmp2;
if(datas >= 0 && datas <=9)
tmp = Seg7_Num_Array[datas];
else
tmp = 0;
for(i = 0;i< 7;i++)
DisplayBuff[Seg7_Offset[i] /8] &= ~(0x01 <<(Seg7_Offset[i] %8));
#if 1
for(i = 0; i< 7; i++)
{
if(tmp & (0x01 << i))
{
DisplayBuff[Seg7_Offset[i]/8] |= (0x01 << (Seg7_Offset[i]%8));
}
}
#endif
}
void ClearDisplay()
{
unsigned char i;
for(i = 0; i< 156;i++)
DisplayBuff[i/8] = 0x00;
}
void WheelShow()
{
unsigned char i;
for(i = S1_ICON;i <= S3_ICON;i++)
DisplayBuff[i/8] &= ~(0x01 <<(i%8));
switch(TempShowTime){
case 0:
DisplayBuff[S1_ICON/8] |= (0x01 <<(S1_ICON%8));
break;
case 1:
DisplayBuff[S2_ICON/8] |= (0x01 <<(S2_ICON%8));
break;
case 2:
DisplayBuff[S3_ICON/8] |= (0x01 <<(S3_ICON%8));
break;
}
}
void VolDisplay(unsigned char vol)
{
unsigned char i;
for(i = VOL_S1;i <= VOL_S6;i++)
DisplayBuff[i/8] &= ~(0x01 << (i%8));
#if 1
if(vol < 7)
return ;
else if(vol <14 )
{
DisplayBuff[VOL_S1/8] |= (0x01 << (VOL_S1%8));
//DisplayBuff[VOL_S2/8] |= (0x01 << (VOL_S2%8));
}else if(vol <21){
DisplayBuff[VOL_S1/8] |= (0x01 << (VOL_S1%8));
DisplayBuff[VOL_S2/8] |= (0x01 << (VOL_S2%8));
//DisplayBuff[VOL_S3/8] |= (0x01 << (VOL_S3%8));
}else if(vol < 28 ){
DisplayBuff[VOL_S1/8] |= (0x01 << (VOL_S1%8));
DisplayBuff[VOL_S2/8] |= (0x01 << (VOL_S2%8));
DisplayBuff[VOL_S3/8] |= (0x01 << (VOL_S3%8));
// DisplayBuff[VOL_S4/8] |= (0x01 << (VOL_S4%8));
}else if(vol < 35 ){
DisplayBuff[VOL_S1/8] |= (0x01 << (VOL_S1%8));
DisplayBuff[VOL_S2/8] |= (0x01 << (VOL_S2%8));
DisplayBuff[VOL_S3/8] |= (0x01 << (VOL_S3%8));
DisplayBuff[VOL_S4/8] |= (0x01 << (VOL_S4%8));
// DisplayBuff[VOL_S5/8] |= (0x01 << (VOL_S5%8));
}else if(vol < 42){
DisplayBuff[VOL_S1/8] |= (0x01 << (VOL_S1%8));
DisplayBuff[VOL_S2/8] |= (0x01 << (VOL_S2%8));
DisplayBuff[VOL_S3/8] |= (0x01 << (VOL_S3%8));
DisplayBuff[VOL_S4/8] |= (0x01 << (VOL_S4%8));
DisplayBuff[VOL_S5/8] |= (0x01 << (VOL_S5%8));
// DisplayBuff[VOL_S6/8] |= (0x01 << (VOL_S6%8));
}else if(vol <= 46){
DisplayBuff[VOL_S1/8] |= (0x01 << (VOL_S1%8));
DisplayBuff[VOL_S2/8] |= (0x01 << (VOL_S2%8));
DisplayBuff[VOL_S3/8] |= (0x01 << (VOL_S3%8));
DisplayBuff[VOL_S4/8] |= (0x01 << (VOL_S4%8));
DisplayBuff[VOL_S5/8] |= (0x01 << (VOL_S5%8));
DisplayBuff[VOL_S6/8] |= (0x01 << (VOL_S6%8));
}
#endif
}
void DisplayIcon(unsigned char icon,unsigned char on)
{
if(on)
DisplayBuff[icon/8] |= (0x01 << (icon%8));
else
DisplayBuff[icon/8] &= ~(0x01 << (icon %8));
}
void Display_Info(unsigned char *pstr)
{
unsigned char len = 0;
for(len = 0; len < MAX_CHAR_NUM;len++)
DisplayChar(len,pstr[len]);
}
void MovChar()
{
unsigned char str[]="WELCOME SINOMOS";
unsigned char backup[8]=" ";
static unsigned char times = 1;
unsigned char i;
for(i = 0; i< ((times <8)?times:8);i++)
{
if((times - i -1) > 14)
backup[7-i] = ' ';
else
backup[7 -i] = str[times - i - 1];
}
#if 0
unsigned char str[37]= " WelCome Power on Please ";
unsigned char backup[8]=" ";
static unsigned char times= 0;
unsigned char i;
for(i = 0; i< 8;i++)
backup[i] = str[i+times];
#endif
times ++;
if(times > 23)
times = 0;
PrintLine(backup);
}
void DisplayMain(void)
{
DisplayUpdate();
}
void PrintLine( unsigned char *pStr1)
{
Display_Info(pStr1);
DisplayUpdate();
}
unsigned char ReturnDispNum(unsigned int inputnum,unsigned int pos)
{
}
void DisplayRefresh(void){
}
void Display(unsigned char command){
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -