📄 ledrgb.txt
字号:
/************************************************************************************************/
/***** LED matrix display screen ***********************/
/***** designed by lingfeng 2004-9-3 ***********************/
/***** changed by caocong 2005-5-18 ***********************/
/***** main chips: W77E58,DS18B20, PCF8563,27C020, IDT7134 ***********************/
/***** main function:1.Communication with the computer ***********************/
/***** 2.Get the RTC &Temperature ***********************/
/***** 3. Send data to IDT7134 ***********************/
/************************************************************************************************/
/**************************checked by lingfeng 2005-5-26*****************************************/
/***********************************include files************************************************/
#include<absacc.h>
#include<intrins.h>
#include"ledcontrol.h"
uchar code num_model[11][16] = {
0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00, //number 0
0x00,0x00,0x00,0x10,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00, //number 1
0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x04,0x04,0x08,0x10,0x20,0x42,0x7E,0x00,0x00, //number 2
0x00,0x00,0x00,0x3C,0x42,0x42,0x04,0x18,0x04,0x02,0x02,0x42,0x44,0x38,0x00,0x00, //number 3
0x00,0x00,0x00,0x04,0x0C,0x14,0x24,0x24,0x44,0x44,0x7E,0x04,0x04,0x1E,0x00,0x00, //number 4
0x00,0x00,0x00,0x7E,0x40,0x40,0x40,0x58,0x64,0x02,0x02,0x42,0x44,0x38,0x00,0x00, //number 5
0x00,0x00,0x00,0x1C,0x24,0x40,0x40,0x58,0x64,0x42,0x42,0x42,0x24,0x18,0x00,0x00, //number 6
0x00,0x00,0x00,0x7E,0x44,0x44,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00, //number 7
0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3C,0x00,0x00, //number 8
0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x26,0x1A,0x02,0x02,0x24,0x38,0x00,0x00, // number 9
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00 // miuns '-'
};
uchar code format_time[6][16] = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //sign "--"
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //sign "--"
0x00,0x00,0x00,0x00,0x10,0x10,0xD6,0x38,0x38,0xD6,0x10,0x10,0x00,0x00,0x00,0x00, //sign "*"
0x00,0x00,0x00,0x00,0x06,0x06,0x00,0x00,0x00,0x00,0x06,0x06,0x00,0x00,0x00,0x00, //sign " :"
0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00,0x00,0x00, //sign ": "
0x00,0x00,0x00,0x00,0x10,0x10,0xD6,0x38,0x38,0xD6,0x10,0x10,0x00,0x00,0x00,0x00 //sign "*"
};
uchar code format_temp[9][32] = {
0x01,0x00,0x01,0x00,0x02,0x80,0x04,0x40,0x08,0x20,0x12,0x18,0x21,0x8E,0xC0,0x84, // "今"
0x00,0x00,0x1F,0xF0,0x00,0x20,0x00,0x20,0x00,0x40,0x00,0x40,0x00,0x80,0x01,0x00,
0x00,0x00,0x1F,0xF0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10, // "日"
0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,0x00,0x00,0x00,0x00,
0x40,0x00,0x27,0xF0,0x24,0x10,0x07,0xF0,0x94,0x10,0x54,0x10,0x17,0xF0,0x20,0x00, // "温"
0x2F,0xFC,0xC9,0x24,0x49,0x24,0x49,0x24,0x49,0x24,0x49,0x24,0x5F,0xFE,0x40,0x00,
0x01,0x00,0x00,0x80,0x3F,0xFE,0x22,0x20,0x22,0x20,0x2F,0xFC,0x22,0x20,0x23,0xE0, //"度"
0x20,0x00,0x27,0xF8,0x22,0x10,0x21,0x20,0x20,0xC0,0x41,0x30,0x46,0x0E,0x98,0x04,
0x00,0x00,0x0F,0xF0,0x08,0x10,0x0F,0xF0,0x08,0x10,0x0F,0xF0,0x00,0x00,0xFF,0xFE, //"是"
0x01,0x00,0x09,0x00,0x09,0xF8,0x09,0x00,0x15,0x00,0x23,0x00,0x40,0xFE,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,0x00,0x00,
0x01,0x00,0x00,0x80,0x3F,0xFE,0x22,0x20,0x22,0x20,0x2F,0xFC,0x22,0x20,0x23,0xE0, //"度"
0x20,0x00,0x27,0xF8,0x22,0x10,0x21,0x20,0x20,0xC0,0x41,0x30,0x46,0x0E,0x98,0x04,
0x1F,0xF8,0x01,0x00,0x7F,0xFE,0x41,0x04,0x1D,0x70,0x01,0x00,0x1D,0x70,0x02,0x80, //"零"
0x04,0x60,0x1A,0x1E,0xE1,0x08,0x1F,0xE0,0x00,0x40,0x02,0x80,0x01,0x00,0x01,0x00
};
/*********************************program************************************/
void main(void)
{
/***************************inital*******************************************/
cpu_ini();
variable_ini();
pcf8563_init();
ds1820_ini();
watchdog();
get_c_code(COMBUF.charbuf, 8);
watchdog();
Wrt_IDT7134_Buf1();
watchdog();
/************************main loop****************************************/
while(1)
{
if (flag_5min)
{
flag_5min = False;
get_time(time);
watchdog();
get_temp(time);
watchdog();
put_format_dispbuf(format_time,format_temp);
watchdog();
Wrt_IDT7134_Buf2();
watchdog();
}
commu();
watchdog();
if (flag_30sec)
{
flag_30sec = 0;
DISPBUF.buf_num = 1;
flag_begin = False;
}
}
}
/************cpu_ini************************/
void cpu_ini(void)
{
TMOD=0x21; //timer1 mode2 timer0 mode1
TL1=0xfd; //9600bps
TH1=0xfd;
PCON=0; //SMOD=0
SCON=0x50; //serial mode 1
TL0=0x00; //timer is 50ms
TH0=0x4c;
EX0=1; //Enable int0
IT0=1; //falling edge trigle
ET0=1; //Enable time0
ES=1; //Enable serial
EA=1;
TR0=1;
TR1=1;
}
void variable_ini(void)
{
fd_dog= 0; // count for watchdog
RECBUF.flag = (uchar)0; // inital the communcation buffer
SEDBUF.flag = (uchar)0;
RECBUF.len = 0;
SEDBUF.len = 0;
RECBUF.loc = 0;
SEDBUF.loc = 0;
flag_5min = False;
flag_30sec =False;
flag_begin = False;
count_sec = 0;
count_min = 0;
}
void int0_process(void) interrupt 0 using 1
{
flag_5min =True;
flag_begin = True;
}
void put_format_dispbuf(uchar format_time1[][16],uchar format_temp1[][32]) //using display buffer 2
{
uchar i,j;
//fill time's format to dsiplay buffer
for (i=0; i<4; i=i+3)
{
for (j=0; j<16; j++)
{
DISPBUF.disp_buf2[j][2+i] = ~format_time1[0+i/3][j-16]; // fill "--" "--"
DISPBUF.disp_buf2[j][8+i] = ~format_time1[2+i/3][j-16]; // fill "*" " :"
DISPBUF.disp_buf2[j][12+i]= ~format_time1[4+i/3][j-16]; // fill ": " "*"
}
}
//fill temperature's foramt to display buffer
for (i=0; i<8; i++)
{
for(j=16; j<32; j++)
{
DISPBUF.disp_buf2[j][i*2] = ~format_temp1[i][(j-16)*2];
DISPBUF.disp_buf2[j][i*2+1] = ~ format_temp1[i][(j-16)*2+1];
}
}
}
void put_time_dispbuf(uchar time [ ], uchar num_model1 [ ] [ 16 ]) //using display buffer 2
{
uchar i,j,k;
uchar time_g,time_s;
k = 6;
for (i=0;i<10; i=i+3)
{ //fill year month data hour
time_g = time[k]%10;
time_s = time[k]/10;
for (j=0; j<16; j++)
{
DISPBUF.disp_buf2[j][i] = ~num_model1[time_g][j];
DISPBUF.disp_buf2[j][i+1] = ~num_model1[time_s][j];
}
if (--k == 4)
{
k--;
}
}
time_g = time[1]%10;
time_s = time[1]/10;
for (j=0; j<16; j++) //fill min
{
DISPBUF.disp_buf2[j][13] = ~num_model1[time_g][j];
DISPBUF.disp_buf2[j][14] = ~num_model1[time_s][j];
}
}
void put_temp_dispbuf(uchar time [ ], uchar num_model1 [ ] [ 16 ]) //using display buffer 2
{
uchar j;
uchar temp_g,temp_s;
if (time[8] == 0)
{
for(j=16; j<32; j++)
{
DISPBUF.disp_buf2[j][11] = ~format_temp[8][(j-16)*2];
DISPBUF.disp_buf2[j][12] = ~format_temp[8][(j-16)*2+1];
}
}
else if(time[7] == 0xff)
{
for (j=16; j<32; j++)
{
DISPBUF.disp_buf2[j][11] = ~num_model1[10][j-16];
}
}
else
{
temp_g =time[8]%10;
temp_s =time[8]/10;
for(j=16; j<32; j++)
{
DISPBUF.disp_buf2[j][11] = 0xff;
if(temp_s == 0)
{
DISPBUF.disp_buf2[j][12] = ~num_model1[temp_g][j-16];
}
else
{
DISPBUF.disp_buf2[j][11] = num_model1[temp_s][j-16];
DISPBUF.disp_buf2[j][12] = num_model1[temp_g][j-16];
}
}
}
}
void put_char_dispbuf(uchar *ptr,uchar cnt) // using display buffer 1
{
uchar i, j;
ulong location;
uchar code *charptr; //point to the first address of word's model
for(i=0; i<cnt; i++)
{
location = (*(ptr+i)-0xa1)*94 - (*(ptr+i+1)-0xa1)*32; //get the first address of word's model
for (j=0; j<32; j++)
{
charptr=(uchar code *)location; //get low 2 byte of lccation
P4=*((uchar *)(&location)+1); //get second high byte of lication
COMBUF.charbuf[j]=*charptr; //get char model
location++;
}
//write data to display buffer
if (cnt/4 == 0)
{
for (j=0; j<16; j++)
{
DISPBUF.disp_buf1[j][i*2] = ~COMBUF.charbuf[j*2];
DISPBUF.disp_buf1[j][i*2+1] = ~COMBUF.charbuf[j*2+1];
}
}
else
{
i = i-4;
for (j=16; j<32; j++)
{
DISPBUF.disp_buf1[j][i*2] = ~COMBUF.charbuf[(j-16)*2];
DISPBUF.disp_buf1[j][i*2+1] = ~COMBUF.charbuf[(j-16)*2+1];
}
}
}
DISPBUF.buf_num = 1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -