马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
/***************************************************************
16*64 双色点阵 4字LED点阵屏+DS1302万年历电子钟+温度显示DS18B20 C 程序
/***************************************************************
如果有控制卡,下载此程序插上排线即可测试
如果没有控制卡,自己根据下面的接口用杜邦线与点阵连接即可测试
单片机:STC89C52 或者其他型号都可以 由于扫描口用的是P0 普通51需要加上啦电阻10K 增强型51则不用
晶振18.432M 如果换用其他晶振 DS18B20延时函数需修改 见void delay_18B20(unsigned int i)说明
功能简介:上电移动一下广告,然后进入时间显示
切换显示时间 星期 月日 年 温度
4个按键 分别进行调时设置
切换间隔时间可设置
/*
点阵屏管脚定义
SHCP GND
STCP GND
R1 GND
G1 GND
VCC GND
A GND
B GND
C D
*/
/*
控制卡
P0.0~P0.3 A B C D
P16 SCK
P17 STR
R1 P04
G1 P05
R2 P06
G2 P07
********************************************************
DS1302 接线图
Vcc2 CLK I/O /RST
| | | |
-------------------
| 8 7 6 5 |
| DS1302 |
| |
| 1 2 3 4 |
-------------------
| | | |
VCC1 GND
1 脚接+5V 2,3脚32768HZ晶振 4脚接地 5脚接S51的P02 6脚接S51的P01 7接S51的P00
8脚接后备电源,可以接老计算机主板上的3.6V电池,也可以通过二级管隔离接一个大容量电解电容
电压在2.5V以上即可维持
595连级输出数据,138行驱动。*/
#include <stc89c51rc.h>
#define uchar unsigned char
#define uint unsigned int
#define light 3 //定义亮度
uchar code hanzi[]; //汉字字模
uchar code shengri[]; //生日字模
uchar code timer[13][16]; //0~9数字
uchar code sw[]; //138驱动数据
void Show_word(); //待机显示按三秒间隔分别显示年、月日、星期、时分秒。
void Show_pass(); //不显示一个字
void Send_data(unsigned char *d); /*发送一个字节红色数据*/
void Send_data1(unsigned char *d); /*发送一个字节绿色数据*/
void Send_data2(unsigned char *d);/*发送一个字节黄色色数据*/
/******************************************/
#define DataOut P0 //定义扫描口 占用 P0.0~P0.3
/*按键定义*/
sbit resget=P2^0; //时钟复位
sbit key_moda=P2^1; //模式转换
sbit key_up=P2^2; //时钟加
sbit key_Down=P2^3; //时钟减
/*DS1302 数据IO定义*/
sbit T_CLK=P1^2;//DS1302引脚连接
sbit T_IO =P1^3;
sbit T_RST=P1^4;
sbit ACC0=ACC^0;//1bit数据存储位
sbit ACC7=ACC^7;
/*点阵数据IO定义*/
sbit STR=P1^7; //锁存
sbit SCK=P1^6; //时钟
sbit SERr= P0^4; //红色数据线
sbit SERg= P0^5; //绿色数据线
sbit E=P1^0;
/*定义DS18B20 IO接口*/
//sbit DQ= P5 ^ 1;//ds1820data(单总线) 请根据实际 定义接口
//秒 分 时 日 月 星期 年 所以初始化时间是 12年-7月24日-星期2-22点10分0秒
uchar starts_time[7]={0x00,0x10,0x22,0x24,0x07,0x02,0x12}; //初始化后设置
uchar Move,Speed,Flicker,line,Sec,Cent,Hour,Year,Month,Day,Week; //时间温度变量
uchar a,b,f,h,msec,id,x; //标志计数器 a为自动转换显示时间,b为手动与自动标志
uint zimuo,tvalue; //字模计数器
uchar BUFF[10]; //缓存
void RTInputByte(uchar); //* 输入 1Byte */
uchar RTOutputByte(void); //* 输出 1Byte */
void W1302(uchar, uchar); // 向DS1302写入一个字节
uchar R1302(uchar); // 从DS1302读出一个字节
void Set1302(uchar *); // 写DS1302时间
void du1302(); // 读时间
void DelayMs(void); // 延时
void Set(uchar,uchar ); // 变量调整
void in_data(); // 调整移动数据
void rxd_data(); // 串口发送移动数据
//read_temp(); //*读取温度值并转换*/
/*主函数*/
void main()
{
Move=0;
zimuo=0;
TMOD=0x01; //16位定时
TH0=0xC5; //15ms晶振为12M
TL0=0x68;
EA=1; //开总中断
TR0=1; //开定时器计数
ET0=1; //开定时器中断0
while(zimuo<512) //上电显示一段广告
{
while(Move<16) //数据移位。
{
for(Speed=0;Speed<8;Speed++) //移动速度
{
for(line=0;line<16;line++)
{
in_data(); //调整移动数据
rxd_data();
DataOut=sw[line];
STR=1;//锁存
STR=0;
STR=1;
DelayMs(); //延时,等待一问奔洌?谜饬邢允镜哪谌菰谌搜勰诓??笆泳踉萘簟毕窒蟆?/
}
}
Move++; //移动一步
}
Move=0;
zimuo=zimuo+32;
}
zimuo=0;
while(1) //重复(无限)循环显示
{
if(resget==0)
{ DelayMs();
if(resget==0)
Set1302(starts_time); //初始化
W1302(0x8e,0x00); //控制命令,WP=0,写操作
W1302(0x90,0xa5); //打开充电二级管 一个二级管串联一个2K电阻
}
du1302(); //读取 秒 分 时 日 月 星期 年
// read_temp();//读取温度
zimuo=0;
if (key_moda==0) //设置和选择项目键
{ DelayMs();
if(key_moda==0)
{
if(id++==10) {id=0;}
h=0;msec=0; //清闪烁标志
while(key_moda==0){ Show_word();}
}
}
if(id!=0)
{
if (key_up==0) //增加
{
DelayMs();
if(key_up==0)
{
while(key_up==0)
{Show_word();} //调用显示
h=0;msec=0; //清闪烁标志
Set(id,0); //调用时间调调整
}
}
if (key_Down==0) //减少
{
DelayMs();
if(key_Down==0)
{
while(key_Down==0)
{Show_word();} //调用显示
h=0;msec=0; //清闪烁标志
Set(id,1); //调用时间调调整
}
}
}
else
{
if (key_up==0) //增加
{
DelayMs();
if(key_up==0)
{
while(key_up==0)
{Show_word();} //调用显示
h=0;msec=0; //清闪烁标志
if(b!=0) //手动调整显示的内容
{
if(f++==5) //f为显示转换标志
f=0;
}
}
}
}
Show_word(); //待机显示按三秒间隔分别显示年、月日、星期、时分秒。
}
}
/************************************************/
void Show_word() //串行输出显示
{ uchar h;
for(h=0;h<16;h++)
{
if((id==0)&(f==0)|(id==1)) //f为三秒转换显示
{
Send_data(&timer[0][0]); //不显示
if((Flicker==1)&(id==1)) //闪烁标志为1时不亮,为零时亮
{ Show_pass(); //不显示一个字
Show_pass();
}
else
{
Send_data(&timer[2][h]); //20年
Send_data(&timer[0][h]);
Send_data(&timer[Year/16][h]); //年值
Send_data(&timer[Year%16][h]);
}
Send_data(&hanzi[h*2+641]); //年字符
Send_data(&hanzi[h*2+640]);
Send_data(&timer[0]); //不显示
}
if((id==0)&(f==1)|(id==2)|(id==3))
{
if((Flicker==1)&(id==2)) //闪烁标志为1时不亮,为零时亮
{ Show_pass(); //不显示一个字
}
else
{
if(Month/16<1)
Send_data1(&timer[0]); //月十位为零时不显示
else
Send_data1(&timer[Month/16][h]); //月值
Send_data1(&timer[Month%16][h]);
}
Send_data1(&hanzi[h*2+673]); //月字符
Send_data1(&hanzi[h*2+672]);
if((Flicker==1)&(id==3)) //闪烁标志为1时不亮,为零时亮
{ Show_pass(); //不显示一个字
}
else
{
Send_data1(&timer[Day/16][h]); //日值
Send_data1(&timer[Day%16][h]);
}
Send_data1(&hanzi[h*2+961]); //日字符
Send_data1(&hanzi[h*2+960]);
}
if((id==0)&(f==2)|(id==4)) //f为三秒转换显示
{
Send_data2(&timer[0]); //不显示
Send_data2(&hanzi[h*2+705]); //星字符
Send_data2(&hanzi[h*2+704]);
Send_data2(&hanzi[h*2+737]); //期字符
Send_data2(&hanzi[h*2+736]);
if((Flicker==1)&(id==4)) //闪烁标志为1时不亮,为零时亮
{ Show_pass(); //不显示一个字
}
else
{
Send_data2(&hanzi[Week%16*32+h*2+737]); //星期值
Send_data2(&hanzi[Week%16*32+h*2+736]);
}
Send_data(&timer[0][0]); //不显示
}
if((id==0)&(f==3)|(id>4)) //f为三秒转换显示
{
if((Flicker==1)&(id==5)) //闪烁标志为1时不亮,为零时亮
{
Show_pass(); //不显示一个字
}
else
{
if(Hour/16<1)
Send_data(&timer[0][0]); //时十位小于1时不显示
else
Send_data(&timer[Hour/16][h]); //时值
Send_data(&timer[Hour%16][h]);
}
Send_data(&timer[10][h]); //两个点
if((Flicker==1)&(id==6)) //闪烁标志为1时不亮,为零时亮
{
Show_pass(); //不显示一个字
}
else
{
Send_data(&timer[Cent/16][h]);
Send_data(&timer[Cent%16][h]); //分值
}
Send_data(&timer[10][h]); //两个点
if((Flicker==1)&(id==7)) //闪烁标志为1时不亮,为零时亮
{
Show_pass(); //不显示一个字
}
else
{
Send_data(&timer[Sec/16][h]); //秒
Send_data(&timer[Sec%16][h]);
}
}
/*if((id==0)&(f==4)) //f为三秒转换显示
{
Send_data1(&hanzi[h*2+1185]); //温字符
Send_data1(&hanzi[h*2+1184]);
Send_data1(&hanzi[h*2+1217]); //度字符
Send_data1(&hanzi[h*2+1216]);
Send_data1(&timer[10][h]); //两个点
if (tvalue/10==0x00)
Send_data(&timer[0][0]);
else
Send_data1(&timer[tvalue/10][h]); //温度值的十位值
Send_data1(&timer[tvalue%10][h]);//温度值的个位
Send_data1(&timer[11][h]); //温度值的符号
} */
if(id>7) //id大于7时为对显示转换模式设置
{ if((Flicker==1)&(id==8))
{ Show_pass();
Show_pass();
Show_pass();
Show_pass();
}
else if(b==0)
{
Send_data(&hanzi[h*2+993]); //显示汉字 “自”
Send_data(&hanzi[h*2+992]);
Send_data(&hanzi[h*2+1057]); //显示汉字“动”
Send_data(&hanzi[h*2+1056]);
Send_data(&hanzi[h*2+1089]); //显示汉字“模”
Send_data(&hanzi[h*2+1088]);
Send_data(&hanzi[h*2+1121]); //显示汉字“式”
Send_data(&hanzi[h*2+1120]);
}
else
{
Send_data1(&hanzi[h*2+1025]); //显示汉字“手”
Send_data1(&hanzi[h*2+1024]);
Send_data1(&hanzi[h*2+1057]); //显示汉字“动”
Send_data1(&hanzi[h*2+1056]);
Send_data1(&hanzi[h*2+1089]); //显示汉字“模”
Send_data1(&hanzi[h*2+1088]);
Send_data1(&hanzi[h*2+1121]); //显示汉字“式”
Send_data1(&hanzi[h*2+1120]);
}
if(id==9)
{
if(b==1) //手动模式
{
id=0;f=0;
}
else
{
Send_data(&hanzi[h*2+993]); //显示汉字“自”
Send_data(&hanzi[h*2+992]);
Send_data(&hanzi[h*2+1057]); //显示汉字“动”
Send_data(&hanzi[h*2+1056]);
if(Flicker==1)
{
Show_pass();
}
else
{
Send_data(&timer[a/10][h]); //转换时间
Send_data(&timer[a%10][h]);
}
Send_data(&hanzi[h*2+1153]); //显示汉字“秒”
Send_data(&hanzi[h*2+1152]);
}
}
}
DataOut=sw[h]; //输出行信号
STR=1;STR=0;
STR=1; //锁存为高,595锁存信号
DelayMs(); //延时,等待一段时间,让这列显示的内容在人眼内产生“视觉暂留”现象。
}
}
/************************************************/
//temp=255-temp;
//return temp;
void timer_1(void) interrupt 1 //中断入口,闪烁
{
TH0=0xC5; //15ms定时 晶振12M
TL0=0x68;
if(msec++==40) //1000ms
{ msec=0;
x++;
if(x>=a)
{ x=0;
if(b==0) //自动模式
{
if(f++==4)
f=0; //f显示转换计数器 ,d为用户设置的自动转换时间的值。
}
}
if(h++==4) //5秒后进入正常走时。
{id=0;h=0;}
}
if(msec<20)
Flicker=0; //闪烁标志反转
else
Flicker=1;
}
/***********************输出一个字的不显示数据。*****************/
void Show_pass()
{
Send_data(&timer[0][0]); //不显示
Send_data(&timer[0][0]); //不显示
}
/**********************************************************/
void in_data(void) //调整数据
{
char s;
for(s=4;s>=0;s--) //i为向后先择字节计数器,zimuoo为向后先字计数器
{
BUFF[2*s+1]=hanzi[zimuo+32*s+2*line]; //把第一个字模的第一个字节放入BUFF0中,第二个字模和第一个字节放入BUFF2中
BUFF[2*s]=hanzi[zimuo+1+32*s+2*line]; //把第一个字模的第二个字节放入BUFF1中,第二个字模的第二个字节放入BUFF3中
}
}
/***********************发送移动的数据****************************/
void rxd_data(void) //串行发送数据
{
uchar s;
uchar inc,tempyid,temp,k;
if(Move<8)
inc=0;
else
inc=1;
for(s=0+inc;s<8+inc;s++) //发送8字节数据
{
if(Move<8)
tempyid=Move;
else
tempyid=Move-8;
temp=(BUFF>>tempyid)|(BUFF[s+1]<<(8-tempyid)); //h1左移tempyid位后和h2右移8-tempyid相或,取出移位后的数据。
temp=255-temp;
SERg=1;
for(k=0;k<8;k++)//一个字节8位 发送给595
{
SCK=0; //上升沿移位595
SERr=(bit)(temp&0x01);//通过IO口送一个位给 595 发送最低位
temp=temp>>1; //字节移位 准备送下一位
SCK=1;
}
}
}
/*******************************************************/
void Send_data(unsigned char *d) /*发送红色数据*/
{
uchar temp,k;
temp=*d;
SERg=1;
for(k=0;k<8;k++)//一个字节8位 发送给595
{
SCK=0; //上升沿移位595
SERr=(bit)(temp&0x01);//通过IO口送一个位给 595 发送最低位
temp=temp>>1; //字节移位 准备送下一位
SCK=1;
}
}
/************************************************************/
void Send_data1(unsigned char *d)/*发送绿色数据*/
{
uchar temp,k;
temp=*d;
SERr=1;
for(k=0;k<8;k++)//一个字节8位 发送给595
{
SCK=0; //上升沿移位595
SERg=(bit)(temp&0x01);//通过IO口送一个位给 595 发送最低位
temp=temp>>1; //字节移位 准备送下一位
SCK=1;
}
}
/***************************************************************/
void Send_data2(unsigned char *d)/*发送黄色数据*/
{
uchar temp,k;
temp=*d;
for(k=0;k<8;k++)//一个字节8位 发送给595
{
SCK=0; //上升沿移位595
SERr=SERg=(bit)(temp&0x01);//通过IO口送一个位给 595 发送最低位
temp=temp>>1; //字节移位 准备送下一位
SCK=1;
}
}
/***************************************************************/
//根据选择调整相应项目
void Set(uchar sel,uchar sel_1)
{
uchar address,time;
uchar max,min;
if(sel==9) {address=0xc2; max=20;min=1;} //自动转换时间时最大为20秒。
if(sel==8) {address=0xc0; max=1;min=0; } //显示自动转换或手动转换。为零自动,为1手动。
if(sel==7) {address=0x80; max=59;min=0;} //秒
if(sel==6) {address=0x82; max=59;min=0;} //分钟
if(sel==5) {address=0x84; max=23;min=0;} //小时
if(sel==4) {address=0x8a; max=7; min=1;} //星期
if(sel==3) {address=0x86; max=31;min=1;} //日
if(sel==2) {address=0x88; max=12;min=1;} //月
if(sel==1) {address=0x8c; max=99;min=0;} //年
time=R1302(address+1)/16*10+R1302(address+1)%16;
if (sel_1==0) time++; else time--;
if(time>max) time=min;
if(time<min) time=max;
W1302(0x8e,0x00);
W1302(address,time/10*16+time%10);
W1302(0x8e,0x80);
}
/**************************延时***********************/
void DelayMs(void)
{
uchar TempCyc;
for(TempCyc=110;TempCyc>1;TempCyc--)
{;}
}
//********DS1302读写程序***************//
/********************************************************************
函 数 名:RTInputByte()
功 能:实时时钟写入一字节
说 明:往DS1302写入1Byte数据 (内部函数)
入口参数:d 写入的数据
返 回 值:无
***********************************************************************/
void RTInputByte(uchar d)
{
uchar h;
ACC = d;
for(h=8; h>0; h--)
{
T_IO = ACC0; /*相当于汇编中的 RRC */
T_CLK = 1;
T_CLK = 0;
ACC = ACC >> 1;
}
}
/********************************************************************
函 数 名:RTOutputByte()
功 能:实时时钟读取一字节
说 明:从DS1302读取1Byte数据 (内部函数)
入口参数:无
返 回 值:ACC
设 计:zhaojunjie 日 期:2002-03-19
修 改: 日 期:
***********************************************************************/
uchar RTOutputByte(void)
{
uchar h;
for(h=8; h>0; h--)
{
ACC = ACC >>1; /*相当于汇编中的 RRC */
ACC7 = T_IO;
T_CLK = 1;
T_CLK = 0;
}
return(ACC);
}
/********************************************************************
函 数 名:W1302()
功 能:往DS1302写入数据
说 明:先写地址,后写命令/数据 (内部函数)
调 用:RTInputByte() , RTOutputByte()
入口参数:ucAddr: DS1302地址, ucData: 要写的数据
返 回 值:无
***********************************************************************/
void W1302(uchar ucAddr, uchar ucDa)
{
T_RST = 0;
T_CLK = 0;
T_RST = 1;
RTInputByte(ucAddr); /* 地址,命令 */
RTInputByte(ucDa); /* 写1Byte数据*/
T_CLK = 1;
T_RST = 0;
}
/********************************************************************
函 数 名:R1302()
功 能:读取DS1302某地址的数据
说 明:先写地址,后读命令/数据 (内部函数)
调 用:RTInputByte() , RTOutputByte()
入口参数:ucAddr: DS1302地址
返 回 值:ucData :读取的数据
***********************************************************************/
uchar R1302(uchar ucAddr)
{
uchar ucData;
T_RST = 0;
T_CLK = 0;
T_RST = 1;
RTInputByte(ucAddr); /* 地址,命令 */
ucData = RTOutputByte(); /* 读1Byte数据 */
T_CLK = 1;
T_RST = 0;
return(ucData);
}
/********************************************************************
函 数 名:Set1302()
功 能:设置初始时间
说 明:先写地址,后读命令/数据(寄存器多字节方式)
调 用:W1302()
入口参数:pClock: 设置时钟数据地址 格式为: 秒 分 时 日 月 星期 年
7Byte (BCD码)1B 1B 1B 1B 1B 1B 1B
返 回 值:无
***********************************************************************/
void Set1302(uchar *pClock)
{
uchar h;
uchar ucAddr = 0x80;
W1302(0x8e,0x00); /* 控制命令,WP=0,写操作?*/
for(h =7; h>0; h--)
{
W1302(ucAddr,*pClock); /* 秒 分 时 日 月 星期 年 */
pClock++;
ucAddr +=2;
}
W1302(0xc0,0x01);
W1302(0XC2,0X03); //初始自动转换显示时间为3秒。
W1302(0x8e,0x80); /* 控制命令,WP=1,写保护?*/
}
/******************读取DS1302中的时间****************/
void du1302()
{
Sec=R1302(0x81); //对取 秒 分 时 日 月 星期 年
Cent=R1302(0x83);
Hour=R1302(0x85);
Day=R1302(0x87);
Month=R1302(0x89);
Week=R1302(0x8b);
Year=R1302(0x8d);
b=R1302(0xc1);
a=R1302(0xc3);
a=a/16*10+a%16;
}
/******************************ds1820程序***************************************/
/*void delay_18B20(unsigned int i)//延时1微秒
{
i=i*6; //由于我用的是1T 51单片机 如果用普通51请 把这句话屏蔽
while(i--);
} */
/*void ds1820rst()//ds1820复位
{ unsigned char x=0;
DQ = 1; //DQ复位
delay_18B20(4); //延时
DQ = 0; //DQ拉低
delay_18B20(100); //精确延时大于480us
DQ = 1; //拉高
delay_18B20(40);
}
uchar ds1820rd()//读数据
{ unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--)
{ DQ = 0; //给脉冲信号
dat>>=1;
DQ = 1; //给脉冲信号
if(DQ)
dat|=0x80;
delay_18B20(10);
}
return(dat);
}*/
/*void ds1820wr(uchar wdata)//写数据
{unsigned char i=0;
for (i=8; i>0; i--)
{ DQ = 0;
DQ = wdata&0x01;
delay_18B20(10);
DQ = 1;
wdata>>=1;
}
}
read_temp()//读取温度值并转换
{
uchar a,b;
ds1820rst();
ds1820wr(0xcc);//跳过读序列号
ds1820wr(0x44);//启动温度转换
ds1820rst();
ds1820wr(0xcc);//跳过读序列号
ds1820wr(0xbe);//读取温度
a=ds1820rd();
b=ds1820rd();
tvalue=b*16+a/16;
//tvalue=b;
//tvalue<<=8;
//tvalue=tvalue|a;
//if(tvalue<0x0fff)
//tflag=0;
// else
//{tvalue=~tvalue+1;
//tflag=1;
//}
return(tvalue);
} */
/*******************************************************************/
// uchar code sw[16]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f};/*16行段码*/
//如果用自己的单片机实验板连接A B C D 一一对应,则用这个扫描数据
//uchar code sw[16]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,};/*16行段码*///138驱动数据
//下面的A B C D行扫描数据是反向的 配套我们的控制卡用
uchar code sw[16]={0X00,0X08,0x04,0x0C,0X02,0X0A,0X06,0X0E,0X01,0X09,0X05,0X0D,0X03,0X0B,0X07,0X0F};/*16行段码*///138驱动数据
const uchar code timer[13][16]={ /*0~9字符*/
/*-- 文字: 0 --*/
/*-- Book Antiqua12; 此字体下对应的点阵为:宽x高=8x20 --*/
0xFF,0xFF,0xE3,0xDD,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xBE,0xDD,0xE3,0xFF,0xFF,
/*-- 文字: 1 --*/
/*-- Book Antiqua12; 此字体下对应的点阵为:宽x高=8x20 --*/
0xFF,0xFF,0xEF,0xE7,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0x83,0xFF,0xFF,
/*-- 文字: 2 --*/
/*-- Book Antiqua12; 此字体下对应的点阵为:宽x高=8x20 --*/
0xFF,0xFF,0xC7,0xBB,0x7D,0x7F,0x7F,0xBF,0xCF,0xF7,0xFB,0xFD,0xFD,0x01,0xFF,0xFF,
/*-- 文字: 3 --*/
/*-- Book Antiqua12; 此字体下对应的点阵为:宽x高=8x20 --*/
0xFF,0xFF,0xC7,0xBB,0x7D,0x7F,0xBF,0xC7,0xBF,0x7F,0x7F,0x7D,0xBB,0xC7,0xFF,0xFF,
/*-- 文字: 4 --*/
/*-- Book Antiqua12; 此字体下对应的点阵为:宽x高=8x20 --*/
0xFF,0xFF,0xCF,0xCF,0xD7,0xD7,0xDB,0xDB,0xDD,0xDD,0xDE,0x00,0xDF,0xDF,0xFF,0xFF,
/*-- 文字: 5 --*/
/*-- Book Antiqua12; 此字体下对应的点阵为:宽x高=8x20 --*/
0xFF,0xFF,0x01,0xFD,0xFD,0xFD,0xC5,0xB9,0x7D,0x7F,0x7F,0x7D,0xBB,0xC7,0xFF,0xFF,
/*-- 文字: 6 --*/
/*-- Book Antiqua12; 此字体下对应的点阵为:宽x高=8x20 --*/
0xFF,0xFF,0xC7,0xBB,0x7D,0xFD,0xFD,0xC5,0xB9,0x7D,0x7D,0x7D,0xBB,0xC7,0xFF,0xFF,
/*-- 文字: 7 --*/
/*-- Book Antiqua12; 此字体下对应的点阵为:宽x高=8x20 --*/
0xFF,0xFF,0x01,0x7F,0xBF,0xDF,0xDF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xFF,0xFF,
/*-- 文字: 8 --*/
/*-- Book Antiqua12; 此字体下对应的点阵为:宽x高=8x20 --*/
0xFF,0xFF,0xE3,0xDD,0xBE,0xBE,0xDD,0xE3,0xDD,0xBE,0xBE,0xBE,0xDD,0xE3,0xFF,0xFF,
/*-- 文字: 9 --*/
/*-- Book Antiqua12; 此字体下对应的点阵为:宽x高=8x20 --*/
0xFF,0xFF,0xC7,0xBB,0x7D,0x7D,0x7D,0x3B,0x47,0x7F,0x7F,0x7F,0xBD,0xC3,0xFF,0xFF,
/*-- 文字: : --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0xFF,0xFF,0xFF,0xFF,0xE7,0xE7,0xFF,0xFF,0xFF,0xFF,0xE7,0xE7,0xFF,0xFF,0xFF,0xFF,
/*-- 文字: C温度符号 --*/
0xFF,0xFC,0xFC,0x83,0xBD,0xBD,0xFE,0xFE,0xFE,0xFE,0xFE,0xBD,0xDD,0xE3,0xFF,0xFF,
/*-- - -- ** 宋体, 12 **
/*--黑屏字符--*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
};
const uchar code hanzi[]={/*移动显示汉字字模,*/
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,
/*-- 文字: i y 17--*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
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,
/*-- 文字: . c 18--*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
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,
/*-- 文字: om 19--*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
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,0x01,0x00,0x01,0x3F,0x7F,0xA0,0x20,0xA1,0x12,0x52,0x02,0x14,0x02,0x08,
0x02,0x18,0x06,0x18,0x05,0x24,0x09,0x24,0x18,0x82,0x70,0x61,0x20,0x1C,0x00,0x00,/*"欢",0*/
0x00,0x02,0x01,0x84,0x3E,0x6C,0x22,0x24,0x22,0x20,0x22,0x20,0x22,0x27,0x22,0x24,
0x22,0xA4,0x2A,0x64,0x12,0x24,0x02,0x04,0x02,0x04,0x00,0x0A,0x7F,0xF1,0x00,0x00,/*"迎",1*/
0x00,0x80,0x08,0x84,0x18,0x98,0x08,0xB0,0x04,0x90,0x20,0x80,0x7F,0xFE,0x02,0x20,
0x02,0x20,0x02,0x20,0x02,0x20,0x42,0x10,0x42,0x10,0x42,0x08,0x7C,0x04,0x00,0x02,/*"光",2*/
0x00,0x80,0x01,0x90,0x00,0x90,0x7F,0x92,0x04,0x52,0x08,0x52,0x08,0x32,0x20,0x92,
0x7F,0x92,0x24,0x92,0x24,0x92,0x24,0x92,0x24,0x92,0x3F,0x90,0x20,0x90,0x00,0x00,/*"临",3*/
0x02,0x60,0x0A,0x1C,0x12,0x10,0x12,0x10,0x02,0x10,0x7F,0xFF,0x02,0x10,0x12,0x10,
0x14,0x70,0x0C,0x1C,0x04,0x13,0x0A,0x10,0x49,0x90,0x50,0x10,0x60,0x14,0x40,0x08,/*"我",4*/
0x01,0x08,0x01,0x08,0x01,0x04,0x3F,0x3E,0x20,0xA2,0x20,0xA2,0x20,0x62,0x21,0x3E,
0x22,0x22,0x26,0x22,0x24,0x22,0x20,0x22,0x20,0x3E,0x14,0x22,0x08,0x02,0x00,0x00,/*"的",5*/
0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x02,0x90,0x04,0xB0,0x08,0x98,0x18,0x88,
0x30,0x84,0x60,0x82,0x20,0x81,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xA0,0x00,0x40,/*"小",6*/
0x04,0x00,0x04,0x04,0x04,0x08,0x04,0x08,0x7C,0x7F,0x04,0x20,0x04,0x22,0x04,0x24,
0x3F,0x94,0x20,0x94,0x20,0x88,0x20,0xBC,0x20,0x83,0x3F,0x80,0x20,0x80,0x00,0x00,/*"站",7*/
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,
/*-- 文字: 祝 8--*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x04,0x1F,0x88,0x10,0x88,0x10,0xBF,0x10,0xA0,0x10,0x90,0x10,0x88,0x1F,0x9C,
0x09,0x2A,0x09,0x29,0x09,0x08,0x09,0x08,0x48,0x88,0x48,0x88,0x48,0x48,0x70,0x28,
/*-- 文字: 大 9--*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x7F,0xFF,0x00,0x80,0x01,0x40,
0x01,0x40,0x02,0x40,0x02,0x20,0x04,0x20,0x08,0x10,0x18,0x08,0x70,0x04,0x20,0x02,
/*-- 文字: 家 10--*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x40,0x00,0x80,0x7F,0xFC,0x20,0x02,0x17,0xFA,0x00,0x80,0x00,0x40,0x04,0xF0,
0x0D,0x4E,0x03,0x20,0x03,0x98,0x0D,0x66,0x71,0x18,0x21,0x06,0x00,0xA0,0x00,0x40,
/*-- 文字: 学 11--*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x10,0x80,0x31,0x08,0x13,0x30,0x09,0x10,0x7F,0xFE,0x20,0x02,0x17,0xF1,0x02,0x00,
0x01,0x00,0x7F,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x40,0x00,0x80,
/*-- 文字: 习 12--*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0x3F,0xFC,0x20,0x00,0x20,0x10,0x20,0x20,0x20,0xC0,0x28,0x80,0x26,0x00,
0x21,0x80,0x20,0x60,0x20,0x1C,0x20,0x08,0x20,0x00,0x24,0x00,0x28,0x00,0x10,0x00,
/*-- 文字: 进 13--*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x08,0x80,0x08,0x82,0x08,0x84,0x3F,0xEC,0x08,0x84,0x08,0x80,0x08,0x80,0x7F,0xEF,
0x08,0x88,0x08,0x88,0x08,0x48,0x08,0x48,0x08,0x28,0x00,0x14,0x7F,0xE2,0x00,0x00,
/*-- 文字: 步 14--*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x01,0x00,0x01,0x00,0x1F,0x10,0x01,0x10,0x01,0x10,0x7F,0xFE,0x01,0x00,0x01,0x10,
0x11,0x10,0x31,0x08,0x09,0x06,0x04,0x00,0x03,0x00,0x00,0xE0,0x00,0x1E,0x00,0x00,
/*-- 文字: 年 --*/
/*-- 华文新魏12; 此字体下对应的点阵为:宽x高=16x17 --*/
0xFF,0xEF,0xC0,0x0F,0xFE,0xF7,0xFE,0xF7,0xFE,0xFB,0xE0,0x0D,0xFE,0xEE,0xFE,0xEF,
0xFE,0xEF,0xFE,0xEF,0x80,0x00,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFF,0xFF,
/*-- 文字: 月 --*/
/*-- 华文新魏12; 此字体下对应的点阵为:宽x高=16x17 --*/
0xF0,0x1F,0xF7,0xDF,0xF7,0xDF,0xF7,0xDF,0xF0,0x1F,0xF7,0xDF,0xF7,0xDF,0xF7,0xDF,
0xF0,0x1F,0xF7,0xDF,0xF7,0xEF,0xF7,0xEF,0xF7,0xF7,0xF5,0xFB,0xFB,0xFD,0xFF,0xFF,
/*-- 文字: 星 --*/
/*-- 华文新魏12; 此字体下对应的点阵为:宽x高=16x17 --*/
0xFF,0xFF,0xE0,0x07,0xEF,0xF7,0xE0,0x07,0xEF,0xF7,0xE0,0x07,0xFF,0x7F,0xFF,0x77,
0xC0,0x07,0xFF,0x7B,0xFF,0x7B,0xE0,0x0D,0xFF,0x7F,0xFF,0x7F,0x80,0x01,0xFF,0xFF,
/*-- 文字: 期 --*/
/*-- 华文新魏12; 此字体下对应的点阵为:宽x高=16x17 --*/
0xFF,0xBB,0xC1,0xBB,0xDD,0x01,0xDD,0xBB,0xDD,0x83,0xC1,0xBB,0xDD,0x83,0xDD,0xBB,
0xDD,0xBB,0xC1,0x00,0xDD,0xFF,0xDE,0xDB,0xDE,0xBB,0xD7,0x3D,0xEF,0x7E,0xFF,0xFF,
/*-- 文字: 一 --*/
/*-- 华文新魏12; 此字体下对应的点阵为:宽x高=16x17 --*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x01,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
/*-- 文字: 二 --*/
/*-- 华文新魏12; 此字体下对应的点阵为:宽x高=16x17 --*/
0xFF,0xFF,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
/*-- 文字: 三 --*/
/*-- 华文新魏12; 此字体下对应的点阵为:宽x高=16x17 --*/
0xFF,0xFF,0xFF,0xFF,0xC0,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x03,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0xFF,0xFF,
/*-- 文字: 四 --*/
/*-- 华文新魏12; 此字体下对应的点阵为:宽x高=16x17 --*/
0xFF,0xFF,0xC0,0x01,0xDE,0xDD,0xDE,0xDD,0xDE,0xDD,0xDE,0xDD,0xDE,0xDD,0xDE,0xDD,
0xDE,0xED,0xC1,0xED,0xDF,0xF5,0xDF,0xF9,0xDF,0xFD,0xC0,0x01,0xFF,0xFF,0xFF,0xFF,
/*-- 文字: 五 --*/
/*-- 华文新魏12; 此字体下对应的点阵为:宽x高=16x17 --*/
0xFF,0xFF,0xE0,0x01,0xFF,0xBF,0xFF,0xBF,0xFF,0xBF,0xFF,0xBF,0xFF,0xBF,0xF8,0x03,
0xFB,0xBF,0xFB,0xBF,0xFB,0xBF,0xFB,0xBF,0xFB,0xBF,0x80,0x00,0xFF,0xFF,0xFF,0xFF,
/*-- 文字: 六 --*/
/*-- 华文新魏12; 此字体下对应的点阵为:宽x高=16x17 --*/
0xFF,0xDF,0xFF,0xBF,0xFF,0x7F,0xFF,0x7F,0x80,0x00,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,
0xFD,0x9F,0xFB,0xDF,0xF7,0xEF,0xE7,0xEF,0xEF,0xF7,0xCF,0xFB,0xDF,0xFD,0xFF,0xFF,
/*-- 文字: 日 --*/
/*-- 华文新魏12; 此字体下对应的点阵为:宽x高=16x17 --*/
0xFF,0xFF,0xF0,0x07,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF0,0x07,0xF7,0xF7,
0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0xF0,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
/*-- 文字: 自 31--*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0xFF,0x7F,0xFF,0x7F,0xFF,0xBF,0xE0,0x07,0xEF,0xF7,0xEF,0xF7,0xE0,0x07,0xEF,0xF7,
0xEF,0xF7,0xEF,0xF7,0xE0,0x07,0xEF,0xF7,0xEF,0xF7,0xEF,0xF7,0xE0,0x07,0xFF,0xFF,
/*-- 文字: 手 32--*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0xFF,0xFF,0xE0,0x7F,0xFF,0x01,0xFF,0x7F,0xFF,0x7F,0xC0,0x01,0xFF,0x7F,0xFF,0x7F,
0xFF,0x7F,0x80,0x00,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x5F,0xFF,0x3F,0xFF,0xFF,
/*-- 文字: 动 33--*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0xFB,0xFF,0xFB,0xFF,0xFB,0x81,0xFB,0xFF,0xC0,0xFF,0xDB,0x00,0xDB,0xF7,0xDB,0xF7,
0xDB,0xDB,0xDB,0xBB,0xDD,0x0D,0xDD,0xA0,0xDE,0xFD,0xD7,0x7F,0xEF,0xBF,0xFF,0xFF,
/*-- 文字: 模 34--*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0xF6,0xFB,0xF6,0xFB,0xC0,0x1B,0xF6,0xFB,0xE0,0x20,0xEF,0xBB,0xE0,0x31,0xEF,0xA9,
0xE0,0x3A,0xFD,0xFA,0x80,0x1B,0xFD,0xFB,0xFA,0xFB,0xE6,0xFB,0x8F,0x1B,0xFF,0xFF,
/*-- 文字: 式 35--*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0xFE,0xFF,0xFA,0xFF,0xF6,0xFF,0xC0,0x01,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0x83,
0xFD,0xEF,0xFD,0xEF,0xFD,0xEF,0xFB,0x2F,0x7B,0xC7,0x77,0xF1,0x8F,0xFF,0xFF,0xFF,
/*-- 文字: 秒 --*/
/*-- 华文新魏12; 此字体下对应的点阵为:宽x高=16x17 --*/
0xFB,0xCF,0xFB,0xF0,0xFB,0xF7,0xEB,0x77,0xDA,0x40,0xBB,0x77,0xBB,0xB3,0xFB,0xA3,
0xBB,0xD5,0xBB,0xD5,0xDF,0xF6,0xEF,0xF7,0xF7,0xF7,0xF9,0xF7,0xFE,0x77,0xFF,0xFF,
/*-- 文字: 温 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0xFF,0xFD,0xF0,0x1B,0xF7,0xDB,0xF0,0x1F,0xF7,0xD6,0xF7,0xD5,0xF0,0x17,0xFF,0xFB,
0xC0,0x0B,0xDB,0x6C,0xDB,0x6D,0xDB,0x6D,0xDB,0x6D,0xDB,0x6D,0x80,0x05,0xFF,0xFF,
/*-- 文字: 度 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0xFF,0x7F,0xFE,0xFF,0x80,0x03,0xFB,0xBB,0xFB,0xBB,0xC0,0x0B,0xFB,0xBB,0xF8,0x3B,
0xFF,0xFB,0xF0,0x3B,0xF7,0xBB,0xFB,0x7B,0xFC,0xFB,0xF3,0x7D,0x8F,0x9E,0xFF,0xFF,
}; |