|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?立即注册
×
*
[程序开始处的程序说明]
/*********************************************************************************************
程序名:
编写人:
编写时间: 年 月 日
硬件支持:
接口说明:
修改日志:
NO.1-
/*********************************************************************************************
说明:
/*********************************************************************************************/
/*
[单片机SFR定义的头文件]
#include <REG51.h> //通用89C51头文件
#include <REG52.h> //通用89C52头文件
#include <STC11Fxx.H> //STC11Fxx或STC11Lxx系列单片机头文件
#include <STC12C2052AD.H> //STC12Cx052或STC12Cx052AD系列单片机头文件
#include <STC12C5A60S2.H> //STC12C5A60S2系列单片机头文件
[更多库函数头定义]
#include <assert.h> //设定插入点
#include <ctype.h> //字符处理
#include <errno.h> //定义错误码
#include <float.h> //浮点数处理
#include <fstream.h> //文件输入/输出
#include <iomanip.h> //参数化输入/输出
#include <iostream.h> //数据流输入/输出
#include <limits.h> //定义各种数据类型最值常量
#include <locale.h> //定义本地化函数
#include <math.h> //定义数学函数
#include <stdio.h> //定义输入/输出函数
#include <stdlib.h> //定义杂项函数及内存分配函数
#include <string.h> //字符串处理
#include <strstrea.h> //基于数组的输入/输出
#include <time.h> //定义关于时间的函数
#include <wchar.h> //宽字符处理及输入/输出
#include <wctype.h> //宽字符分类
#include <intrins.h> //51基本运算(包括_nop_空函数)
[常用定义声明]
sfr [自定义名] = [SFR地址] ; //按字节定义SFR中的存储器名。例:sfr P1 = 0x90;
sbit [自定义名] = [系统位名] ; //按位定义SFR中的存储器名。例:sbit Add_Key = P3 ^ 1;
bit [自定义名] ; //定义一个位(位的值只能是0或1)例:bit LED;
#define [代替名] [原名] //用代替名代替原名。例:#define LED P1 / #define TA 0x25
unsigned char [自定义名] ; //定义一个0~255的无符号字符型变量。例:unsigned char a;
unsigned int [自定义名] ; //定义一个0~65535的无符号整型变量。例:unsigned int a;
[定义常量和变量的存放位置的关键字]
data 字节寻址片内RAM,片内RAM的128字节(例:data unsigned char a;)
bdata 可位寻址片内RAM,16字节,从0x20到0x2F(例:bdata unsigned char a;)
idata 所有片内RAM,256字节,从0x00到0xFF(例:idata unsigned char a;)
pdata 片外RAM,256字节,从0x00到0xFF(例:pdata unsigned char a;)
xdata 片外RAM,64K字节,从0x00到0xFFFF(例:xdata unsigned char a;)
code ROM存储器,64K字节,从0x00到0xFFFF(例:code unsigned char a;)
[选择、循环语句]
if(1){
//为真时语句
}else{
//否则时语句
}
--------------------------
while(1){
//为真时内容
}
--------------------------
do{
//先执行内容
}while(1);
--------------------------
switch (a){
case 0x01:
//为真时语句
break;
case 0x02:
//为真时语句
break;
default:
//冗余语句
break;
}
--------------------------
for(;;){
//循环语句
}
--------------------------
[主函数模板]
/*********************************************************************************************
函数名:主函数
调 用:无
参 数:无
返回值:无
结 果:程序开始处,无限循环
备 注:
/**********************************************************************************************/
/*void main (void){
//初始程序
while(1){
//无限循环程序
}
}
/**********************************************************************************************/
/*
[中断处理函数模板]
/*********************************************************************************************
函数名:中断处理函数
调 用:无
参 数:无
返回值:无
结 果:
备 注:
/**********************************************************************************************/
/*void name (void) interrupt 1 using 1{
//处理内容
}
/**********************************************************************************************/
/*
[中断入口说明]
interrupt 0 外部中断0(ROM入口地址:0x03)
interrupt 1 定时/计数器中断0(ROM入口地址:0x0B)
interrupt 2 外部中断1(ROM入口地址:0x13)
interrupt 3 定时/计数器中断1(ROM入口地址:0x1B)
interrupt 4 UART串口中断(ROM入口地址:0x23)
(更多的中断依单片机型号而定,ROM中断入口均相差8个字节)
using 0 使用寄存器组0
using 1 使用寄存器组1
using 2 使用寄存器组2
using 3 使用寄存器组3
[普通函数框架]
/*********************************************************************************************
函数名:
调 用:
参 数:无
返回值:无
结 果:
备 注:
/**********************************************************************************************/
/*void name (void){
//函数内容
}
/**********************************************************************************************/
/*********************************************************************************************
函数名:
调 用:
参 数:0~65535 / 0~255
返回值:0~65535 / 0~255
结 果:
备 注:
/**********************************************************************************************/
/*unsigned int name (unsigned char a,unsigned int b){
//函数内容
return a; //返回值
}
/**********************************************************************************************/
/*************************************************************************************
/*------------------------------------------------------------------*/
/* --- STC MCU International Limited -------------------------------*/
/* --- STC 1T Series MCU RC Demo -----------------------------------*/
/* --- Mobile: (86)13922805190 -------------------------------------*/
/* --- Fax: 86-0519-86580166 ---------------------------------------*/
/* --- Tel: 86-0755-86580166 ---------------------------------------*/
/* --- Emill: liwenjiefa@163.com -----------------------------------*/
/* --- QQ: 391456722 -----------------------------------------------*/
/* If you want to use the program or the program referenced in the */
/* article, please specify in which data and procedures from LWJ */
/*------------------------------------------------------------------*/
/*16X64双色LED屏控制程序--------------------------------------------*/
/*单片机STC12C5A40S2 24MH-----------------------------------------*/
/*文杰 12.2.19-20 基本功能实现-----------------------------------*/
/*2.3.23-24 特效制作.添加注释.整理优化---------------------------*/
/*2.3.23-25 制作日历基本显示功能,加入DS1302/DS18B20驱动---------*/
/*2.3.23-26 制作流动边框 程序英文化-----------------------------*/
/*2.4.1 增加农历,星期自动转换--------------------------------*/
/*3.4.7- 倒置程序基本完成-------------------------------------*/
/*3.4.7- HT11程序基本完成-------------------------------------*/
/*3.15.7- 遥控学习完成-----------------------------------------*/
/*3.18.7- 音乐频谱完成-----------------------------------------*/
/*3.19.7- 图片显示程序完成-------------------------------------*/
/*3.20.7- 动画显示程序完成-------------------------------------*/
/*3.20.7- 时间修整程序完成-------------------------------------*/
/*3.20.7- 温度修整程序完成-------------------------------------*/
/*3.20.7- 闹钟功能基本完成-------------------------------------*/
/*3.20.7- 启用5路闹钟,七种模式---------------------------------*/
/*3.20.7- 加入贪睡和遥控止闹功能-------------------------------*/
/*3.20.7- 5路闹钟贪睡和遥控止闹功能验证成功--------------------*/
/*3.20.7- 下步弄菜单和其他功能---------------------------------*/
/*3.20.7- 亮度程序程序完成-------------------------------------*/
/*3.20.7- 用中断来扫描的亮度控制不是太爽-----------------------*/
/*3.20.7- MCU摆工了只好以后再说--------------------------------*/
/*************************************************************************************/
#include "Type.H"
#define KG 0 //定义空格数
#define RI 10 //定义日数
#define JI 25 //定义节数
#define GT 163 //定! 数
#define XI 109 //定★ 数
/*******键盘***********************************************************************/
sbit KEY1 = P2^0;
sbit KEY2 = P2^1;
sbit KEY3 = P2^2;
sbit KEY4 = P2^3;
sbit ADCIO =P1^5; //AD
/*************************************************************************************/
#define H_PORT P0 //行138信号 scan
sbit CK =P1^6; //时钟OUT
sbit STR =P1^7; //锁存上升沿输出锁存
sbit R1 =P0^4; //屏红数据
sbit G1 =P0^5; //屏绿数据
sbit OE =P1^0; //全屏使能
sbit IA =P0^0; //行控制线A
sbit IB =P0^1; //行控制线B
sbit IC =P0^2; //行控制线C
sbit ID =P0^3; //行控制线D
/*********************************************************************************/
#define scan0 {IA=0;IB=0;IC=0;ID=0;}
#define scan1 {IA=1;IB=0;IC=0;ID=0;}
#define scan2 {IA=0;IB=1;IC=0;ID=0;}
#define scan3 {IA=1;IB=1;IC=0;ID=0;}
#define scan4 {IA=0;IB=0;IC=1;ID=0;}
#define scan5 {IA=1;IB=0;IC=1;ID=0;}
#define scan6 {IA=0;IB=1;IC=1;ID=0;}
#define scan7 {IA=1;IB=1;IC=1;ID=0;}
#define scan8 {IA=0;IB=0;IC=0;ID=1;}
#define scan9 {IA=1;IB=0;IC=0;ID=1;}
#define scan10 {IA=0;IB=1;IC=0;ID=1;}
#define scan11 {IA=1;IB=1;IC=0;ID=1;}
#define scan12 {IA=0;IB=0;IC=1;ID=1;}
#define scan13 {IA=1;IB=0;IC=1;ID=1;}
#define scan14 {IA=0;IB=1;IC=1;ID=1;}
#define scan15 {IA=1;IB=1;IC=1;ID=1;}
/*定义接口****************************************************************************/
#define HC595_LOCK_H {STR =1;}
#define HC595_LOCK_L {STR =0;}
#define HC595_CLK_H {CK =1;}
#define HC595_CLK_L {CK =0;}
#define LS138_A_H {IA =1;}
#define LS138_A_L {IA =0;}
#define LS138_B_H {IB =1;}
#define LS138_B_L {IB =0;}
#define LS138_C_H {IC =1;}
#define LS138_C_L {IC =0;}
#define LS138_D_H {ID =1;}
#define LS138_D_L {ID =0;}
#define LS138_OE_H {OE =1;}
#define LS138_OE_L {OE =0;}
#define HC595_G_H {G1 =1;}
#define HC595_G_L {G1 =0;}
#define HC595_R_H {R1 =1;}
#define HC595_R_L {R1 =0;}
#define FESTIVAL_MAX 69 //定义阳历节日数(0----68)
uchar Be=0; //滚动
uchar disp_mode=0xFF;
uchar xdata T=0xff; //节日计数
uint Cou; //显示记数
/************************************************************
//DS1302时钟定义全局变量
/**********公历年,月,日,星期,小时,分钟,秒********************************/
uchar xdata yy, mo, dd, week, hh, mm, ss;
/*************农历年, 月, 日,*************************************/
uchar xdata year_moon,month_moon,day_moon;
/*************************************************************************************/
/*涵数声明****************************************************************************/
void LEDinit(); /*************************************清屏*/
void DELAY_US(int num); /*************************************延时函数*/
void Beep_key(void); /*************************************喇叭函数*/
void DS1302_TimeStop(bit flag); /*************************************喇叭函数*/
void PWM_LIGHT(uint p); /*************************************亮度控制*/
void intmcu( ); /*************************************中断和定时器初始化*/
void Lintmcu(void); /*************************************广告一*/
void Lintmcu2(void); /*************************************广告一*/
void LED16X64_write(uchar *str,uchar yanse,bit color);/*******************直写汉字*/
void LED_rectangle_erasure(uchar x1,uchar y1,uchar x2,uchar y2,uchar model);/*搽除距形*/
void Conver_week(void); /***************************************星计算*/
void Conversion(void); /******************************************历计算*/
BYTE ManageButton(BYTE Vale); /**************************************按键处理*/
uchar xdata LED_RAM[LED_byte]; /**************************************显示缓冲区*/
//*********************************************************************************
INxdata naozhongtime; //闹钟记时
Uxdata MOVingDAT[]= {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,12,12,12,12,12,12,12,12,12,12,12}; //(游动的字)时段设置
Uxdata ShowDAT[6]; //固定显示
//Uxdata SHENGRI_DATA[18]; //六组生日数据
Uxdata shengRi; //生日
Uxdata CLOUR_F[3]; //翻页钟颜色
//***************************************
uint xdata HalfCount; //半秒记数
uint xdata b; //闪烁控制
uint xdata Light; //亮度
uchar FANpingf_TXT; //翻屏字体
uchar offset=0; //流动显示变量
uchar disrow=0 ; //当前扫描行
uchar r; //调整变量
uchar Colour; //颜色
uchar SPEED=1; //定义移动速度
uchar speead=2; //移动速度变量
uchar e; //操作变量
uchar ADJ; //按键变量
uchar switc; //画面切换变量
uchar windw; //显示允许变量
uchar flow; //边框流动变量
uchar menu; //当前菜单0自动1调年月日2调时分秒星期
uchar LED_X,LED_Y; //LED横竖坐标变量(用于颠倒显示)
uchar Menmu; //显示控制
uchar Tansui=0; //贪睡计数
//***************************************
BIT LEDup_dow; //LED颠倒显示标记1正显示0倒显示
BIT twinkle; //调整闪烁标记
BIT Run_flay; //润年标记
BIT IR_OK=0; //红外线接收标记
BIT Set_bit=0; //设置时间标记
BIT GUn_bit=0; //滚动标记
BIT half_sec_flag; // 0.5s(半秒标志位)
BIT writ_bit; //EEPROM写入标记
BIT Sleep=0; //贪睡标记
BIT ALM_bit=0; //闹钟检查标记
BIT CKTIME_1=0; //校时标记
BIT jieqi_bit=0; //有无节气标记
BIT BEEP_bit =0; //闹钟标记
BIT RUNB=1; //整点报时标记
BIT STOP_flag; // 停留显示
BIT NO_flow; // 取消边框
uchar ZHSmode=0; //综合模式
uchar xdata Buffnum;
bit gundong_bit=0; //流动结束标记
uint xdata stop_counter=0; //流动静止计时器、
uint xdata stop_time=0; //静止时间变量、
bit stop_bit=0; // (流动停止标志)
uchar xdata mode_show; //显示模式
#define NESTIVAL_MAX 10 //定义农历节日数(0----9)
BIT NLjirig_bit=1;
/**********定义翻页钟映射全局变量**********************************************/
uchar xdata f1=18,f2=18,f3=18,f4=18,f5=18,f6=18; //18就不会出现刚开始全部翻页的情况了.
#define RED_clour 1 //定义红色
#define GREEN_clour 2 //定义绿色
#define ORGEN_clour 3 //定义橙色
uint ADC_Count;
/**********自定义头文件*****************************/
#include "LED_drive.h" //加载LED扫描驱动
#include "ASCII.h" //加载自定义字模
#include "DS1302.h" //加载DS1302驱动
#include "DHT11.h" //温湿度传感器
#include "nongli.h" //加载农历计算程序
#include "LED_display.h" //加载显示控制程序
#include "NEC+RC5_IR.h" //遥控头文件(HT6621或TC9012)
#include "key_adjust.h" //加载按键输入调节程序
//#include "DS18B20.h" //加载DS18B20驱动
/*****不影响其他端口的扫描*************************/
/*void scan(unsigned char Value)
{switch(Value)
{case 0: scan0;break;
case 1: scan1;break;
case 2: scan2;break;
case 3: scan3;break;
case 4: scan4;break;
case 5: scan5;break;
case 6: scan6;break;
case 7: scan7;break;
case 8: scan8;break;
case 9: scan9;break;
case 10:scan10;break;
case 11:scan11;break;
case 12:scan12;break;
case 13:scan13;break;
case 14:scan14;break;
case 15:scan15;break;
default:break;
}
} */
//***********************************************************************
void write_sec(void)
{
uchar aa;
read_clockS();//读出DS1302所有时间数据
if((Menmu>= 0)&&(Menmu<= 50))
switc=0; //0-50显示//年月
if((Menmu>= 50)&&(Menmu<= 60))
switc=1; //50-60显示月日
if((Menmu>= 60)&&(Menmu<= 70))
switc=2; //60-70显示时分秒
if((Menmu>= 70)&&(Menmu<= 80))
switc=3; //70-80显示星期
if((Menmu>= 80)&&(Menmu<= 90))
switc=4; //40-59显示农历
if((Menmu>= 90)&&(Menmu<=100))
switc=5; //40-59显示生宵
if((Menmu>=110)&&(Menmu<=120))
switc=6; //40-59显示温度
if((Menmu>=120)&&(Menmu<=130))
switc=7; //40-59显示湿度
if((Menmu>=130)&&(Menmu<=140))
switc=8; //40-59显示生日滚动
if((Menmu>=140)&&(Menmu<=160))
switc=9; //40-59显示//温度
if((aa!=ss)&&(switc==0))//在时分秒星期界面时每秒显示刷新一次秒值
{
aa=ss;
// if(LEDup_dow) //***************************正向显示
// {
LED_8X16_write(17,16,ss/10+48,Orgen,1);//刷新秒十位显示
LED_8X16_write( 9,16,ss%10+48,Orgen,1);//刷新秒个位显示
LED_write_english_string(47,16,":" ,Red,Noml);//写8X16字符冒号
LED_write_english_string(24,16,":", Red,Noml);//写8X16字符冒号
// }
// else
// {
// LED_8X16_write(47,1,ss/10+48,Orgen,1);//刷新秒十位显示
// LED_8X16_write(55,1,ss%10+48,Orgen,1);//刷新秒个位显示
// }
}
if((ss=59)&&(switc==0))//在时分秒星期界面时每秒显示刷新一次秒值
{
// if(LEDup_dow)
//{
LED_8X16_write(40,16,mm/10+48, Green,Noml);//写8X16字符分钟十位
LED_8X16_write(32,16,mm%10+48, Green,Noml);//写8X16字符分钟个位
LED_8X16_write(63,16,hh/10+48, Red,Noml);//写8X16字符小时十位
LED_8X16_write(55,16,hh%10+48, Red,Noml);//写8X16字符小时个位
// }
// else
// {
// LED_8X16_write(24,1,mm/10+48, Green,Noml);//写8X16字符分钟十位
// LED_8X16_write(32,1,mm%10+48, Green,Noml);//写8X16字符分钟个位
// LED_8X16_write(1, 1,hh/10+48, Red,Noml);//写8X16字符小时十位
// LED_8X16_write(9, 1,hh%10+48, Red,Noml);//写8X16字符小时个位
// }
}
}
/*;*******************************************************************************
;程序名称:sendRXbyte(uchar wdata,uchar c,uchar n)
;功能:选择将要送入首地址的值.
;输入:R2. sendRXbyte(hanzi[hour/10],3,8)橙色数据8位
;输出:无. sendRXbyte(hanzi[hour/10],2,8)红色数据8位
;影响:无. sendRXbyte(hanzi[hour/10],1,8)绿色数据8位
;修改日期:2010.05.15----b 字模数据,c颜色,n 发送位数(0-8)
;*********************************************************************************/
void sendRXbyte(unsigned char wdata,unsigned char c,unsigned char n)
{ unsigned char i;
for(i=0; i<n; i++) //字符位数8位
{ switch(c)
{
/*--------------------------------------------------------*/
case 1:G1=1;R1=(bit)(~wdata&0x80);break;
/*--------------------------------------------------------*/
case 2:R1=1;G1=(bit)(~wdata&0x80);break;
/*--------------------------------------------------------*/
case 3:R1=G1=(bit) (~wdata&0x80);break;
/*--------------------------------------------------------*/
default:break;
}
CK=0; //时钟拉高,产生上升沿
CK=1; //时钟拉低
wdata <<=1; //左移一位
}
}
/*********************************************************************************************
函数名:shutter_clock()
调 用:翻页钟数据处理和发送
备 注:
/**********************************************************************************************/
void shutter_clock(void) //翻页钟
{
unsigned char temp_time[6]; //翻页钟用到6个变量
temp_time[0]=ShowDAT[0];
temp_time[1]=ShowDAT[1];
temp_time[2]=ShowDAT[2];
temp_time[3]=ShowDAT[3];
temp_time[4]=ShowDAT[4];
temp_time[5]=ShowDAT[5]; //
read_clockS(); //读时钟数据
if(hh/10==0)
ShowDAT[36]=NL;
else
ShowDAT[0]=hh/10; //位
ShowDAT[1]=ANL(hh);//hh%10; //小时个位
ShowDAT[2]=Div(mm);//mm/10; //分钟
ShowDAT[3]=ANL(mm);//mm%10; //分钟
ShowDAT[4]=Div(ss);//ss/10; //秒十位
ShowDAT[5]=ANL(ss);//ss%10; //秒个位
if(hh/10==0) //小时为0时把屏向左移4位
sendRXbyte(hanzi[NL][disrow],ORGEN_clour,4); //8位数据分两次显示显示
else
{
/*----------------时---------------------------------------------------------------------*/
if(ShowDAT[0]!=temp_time[0]) //先判断时十位有没变化
f1=0;
if(f1<17)
{
if(ShowDAT[0]==0) //十位是0,从0开始翻
{if(FANpingf_TXT==0)
sendRXbyte(han20i[0][disrow+f1],CLOUR_F[0],8); //2,0
if(FANpingf_TXT==1)
sendRXbyte(hanzi320[0][disrow+f1],CLOUR_F[0],8); //2,0
if(FANpingf_TXT==2)
sendRXbyte(hanzi520[0][disrow+f1],CLOUR_F[0],8); //2,0
}
else
{if(FANpingf_TXT==0)
sendRXbyte(hanzi[ShowDAT[0]-1][disrow+f1],CLOUR_F[0],8); //从显示的数字开始翻
if(FANpingf_TXT==1)
sendRXbyte(hanzi3[ShowDAT[0]-1][disrow+f1],CLOUR_F[0],8); //从显示的数字开始翻
if(FANpingf_TXT==2)
sendRXbyte(hanzi5[ShowDAT[0]-1][disrow+f1],CLOUR_F[0],8); //从显示的数字开始翻
}
}
else
{if(FANpingf_TXT==0)
sendRXbyte(hanzi[ShowDAT[0]][disrow],CLOUR_F[0],8); //保持原来固定显示
if(FANpingf_TXT==1)
sendRXbyte(hanzi3[ShowDAT[0]][disrow],CLOUR_F[0],8); //保持原来固定显示
if(FANpingf_TXT==2)
sendRXbyte(hanzi5[ShowDAT[0]][disrow],CLOUR_F[0],8); //保持原来固定显示
}
}
/*--------------------------*/
if(ShowDAT[1]!=temp_time[1]) //时个位有没变化
f2=0; //
if(f2<17) //23翻到0
{
if(ShowDAT[1]==0)
{
if(ShowDAT[1]==0&&ShowDAT[36]!=0) //如果小时个位是0(19--20,9---10)
{if(FANpingf_TXT==0)
sendRXbyte(hanzi[9][disrow+f2],CLOUR_F[0],8); //从9开始翻0(因为9后面加了个0)
if(FANpingf_TXT==1)
sendRXbyte(hanzi3[9][disrow+f2],CLOUR_F[0],8); //从9开始翻0(因为9后面加了个0)
if(FANpingf_TXT==2)
sendRXbyte(hanzi5[9][disrow+f2],CLOUR_F[0],8); //从9开始翻0(因为9后面加了个0)
}
else
{ if(FANpingf_TXT==0)
sendRXbyte(han30i[0][disrow+f2],CLOUR_F[0],8); //应该是从3翻到0即23时---0时
if(FANpingf_TXT==1)
sendRXbyte(hanzi330[0][disrow+f2],CLOUR_F[0],8); //应该是从3翻到0即23时---0时
if(FANpingf_TXT==2)
sendRXbyte(hanzi530[0][disrow+f2],CLOUR_F[0],8); //应该是从3翻到0即23时---0时
}
}
else
{ if(FANpingf_TXT==0)
sendRXbyte(hanzi[ShowDAT[1]-1][disrow+f2],CLOUR_F[0],8);
if(FANpingf_TXT==1)
sendRXbyte(hanzi3[ShowDAT[1]-1][disrow+f2],CLOUR_F[0],8);
if(FANpingf_TXT==2)
sendRXbyte(hanzi5[ShowDAT[1]-1][disrow+f2],CLOUR_F[0],8);
}
}
else
{ if(FANpingf_TXT==0)
sendRXbyte(hanzi[ShowDAT[1]][disrow],CLOUR_F[0],8); //时个位
if(FANpingf_TXT==1)
sendRXbyte(hanzi3[ShowDAT[1]][disrow],CLOUR_F[0],8); //时个位
if(FANpingf_TXT==2)
sendRXbyte(hanzi5[ShowDAT[1]][disrow],CLOUR_F[0],8); //时个位
}
if(half_sec_flag==1 )
{ if(FANpingf_TXT==0)
sendRXbyte(hanzi[11][disrow],CLOUR_F[1],8); //冒号
if(FANpingf_TXT==1)
sendRXbyte(hanzi3[11][disrow],CLOUR_F[1],8); //冒号
if(FANpingf_TXT==2)
sendRXbyte(hanzi5[11][disrow],CLOUR_F[1],8); //冒号
}
else
sendRXbyte(hanzi[NL][disrow],CLOUR_F[1],8); //空白
/*---------分------------------------------------------------------------------*/
if(ShowDAT[2]!=temp_time[2]) //判断分十位有没变化
f3=0; //有变化
if(f3<17)
{
if(ShowDAT[2]==0) //分十位变为0,说明分到了59
{ if(FANpingf_TXT==0)
sendRXbyte(han50i[0][disrow+f3],CLOUR_F[2],8); //分十位由5开始翻页0
if(FANpingf_TXT==1)
sendRXbyte(hanzi350[0][disrow+f3],CLOUR_F[2],8); //分十位由5开始翻页0
if(FANpingf_TXT==2)
sendRXbyte(hanzi550[0][disrow+f3],CLOUR_F[2],8); //分十位由5开始翻页0
}
else
{ if(FANpingf_TXT==0)
sendRXbyte(hanzi[ShowDAT[2]-1][disrow+f3],CLOUR_F[2],8); //不满59分十位由先前的数字开始翻页到更新的数字
if(FANpingf_TXT==1)
sendRXbyte(hanzi3[ShowDAT[2]-1][disrow+f3],CLOUR_F[2],8); //不满59分十位由先前的数字开始翻页到更新的数字
if(FANpingf_TXT==2)
sendRXbyte(hanzi5[ShowDAT[2]-1][disrow+f3],CLOUR_F[2],8); //不满59分十位由先前的数字开始翻页到更新的数字
}
}
else
{ if(FANpingf_TXT==0)
sendRXbyte(hanzi[ShowDAT[2]][disrow],CLOUR_F[2],8); //没变化显示当前的数字
if(FANpingf_TXT==1)
sendRXbyte(hanzi3[ShowDAT[2]][disrow],CLOUR_F[2],8); //没变化显示当前的数字
if(FANpingf_TXT==2)
sendRXbyte(hanzi5[ShowDAT[2]][disrow],CLOUR_F[2],8); //没变化显示当前的数字
}
/*-------------------------------*/
if(ShowDAT[3]!=temp_time[3])
f4=0; //分个位
if(f4<17)
{
if(ShowDAT[3]==0)
{ if(FANpingf_TXT==0)
sendRXbyte(hanzi[9][disrow+f4],CLOUR_F[2],8); //9,0
if(FANpingf_TXT==1)
sendRXbyte(hanzi3[9][disrow+f4],CLOUR_F[2],8); //9,0
if(FANpingf_TXT==2)
sendRXbyte(hanzi5[9][disrow+f4],CLOUR_F[2],8); //9,0
}
else
{ if(FANpingf_TXT==0)
sendRXbyte(hanzi[ShowDAT[3]-1][disrow+f4],CLOUR_F[2],8);
if(FANpingf_TXT==1)
sendRXbyte(hanzi3[ShowDAT[3]-1][disrow+f4],CLOUR_F[2],8);
if(FANpingf_TXT==2)
sendRXbyte(hanzi5[ShowDAT[3]-1][disrow+f4],CLOUR_F[2],8);
}
}
else
{ if(FANpingf_TXT==0)
sendRXbyte(hanzi[ShowDAT[3]][disrow],CLOUR_F[2],8);
if(FANpingf_TXT==1)
sendRXbyte(hanzi3[ShowDAT[3]][disrow],CLOUR_F[2],8);
if(FANpingf_TXT==2)
sendRXbyte(hanzi5[ShowDAT[3]][disrow],CLOUR_F[2],8);
}
if(half_sec_flag==1 )
{ if(FANpingf_TXT==0)
sendRXbyte(hanzi3[11][disrow],CLOUR_F[2],8); //冒号
if(FANpingf_TXT==1)
sendRXbyte(hanzi[11][disrow],CLOUR_F[2],8); //冒号
if(FANpingf_TXT==2)
sendRXbyte(hanzi5[11][disrow],CLOUR_F[2],8); //冒号
}
else
sendRXbyte(hanzi[NL][disrow],CLOUR_F[2],8); //空白
/*---------秒-------------------------------------------------------------------*/
if(ShowDAT[4]!=temp_time[4]) //如果不相等秒十位
f5=0;
if(f5<17)
{
if(ShowDAT[4]==0) //秒十位
{ if(FANpingf_TXT==0)
sendRXbyte(han50i[0][disrow+f5],CLOUR_F[1],8); //由59开始翻页0
if(FANpingf_TXT==1)
sendRXbyte(hanzi350[0][disrow+f5],CLOUR_F[1],8);
if(FANpingf_TXT==2)
sendRXbyte(hanzi550[0][disrow+f5],CLOUR_F[1],8);
}
else
{ if(FANpingf_TXT==0)
sendRXbyte(hanzi[ShowDAT[4]-1][disrow+f5],CLOUR_F[1],8);
if(FANpingf_TXT==1)
sendRXbyte(hanzi3[ShowDAT[4]-1][disrow+f5],CLOUR_F[1],8);
if(FANpingf_TXT==2)
sendRXbyte(hanzi5[ShowDAT[4]-1][disrow+f5],CLOUR_F[1],8);
}
}
else
{ if(FANpingf_TXT==0)
sendRXbyte(hanzi[ShowDAT[4]][disrow],CLOUR_F[1],8);
if(FANpingf_TXT==1)
sendRXbyte(hanzi3[ShowDAT[4]][disrow],CLOUR_F[1],8);
if(FANpingf_TXT==2)
sendRXbyte(hanzi5[ShowDAT[4]][disrow],CLOUR_F[1],8);
}
/*--------------------------*/
if(ShowDAT[5]!=temp_time[5]) //如果不相等 //秒个位
f6=0; //归零翻页
if(f6<17) //翻叶
{
if(ShowDAT[5]==0) //秒个位等于0
{ if(FANpingf_TXT==0)
sendRXbyte(hanzi[9][disrow+f6],CLOUR_F[1],8); //从9开始翻0(因为9后面加了个0)
if(FANpingf_TXT==1)
sendRXbyte(hanzi3[9][disrow+f6],CLOUR_F[1],8);
if(FANpingf_TXT==2)
sendRXbyte(hanzi5[9][disrow+f6],CLOUR_F[1],8);
}
else
{if(FANpingf_TXT==0) //否则
sendRXbyte(hanzi[ShowDAT[5]-1][disrow+f6],CLOUR_F[1],8);
if(FANpingf_TXT==1) //否则
sendRXbyte(hanzi3[ShowDAT[5]-1][disrow+f6],CLOUR_F[1],8);
if(FANpingf_TXT==2) //否则
sendRXbyte(hanzi5[ShowDAT[5]-1][disrow+f6],CLOUR_F[1],8);
}
} //
else
{if(FANpingf_TXT==0)
sendRXbyte(hanzi[ShowDAT[5]][disrow],CLOUR_F[1],8); //显示停留
if(FANpingf_TXT==1)
sendRXbyte(hanzi3[ShowDAT[5]][disrow],CLOUR_F[1],8); //显示停留
if(FANpingf_TXT==2)
sendRXbyte(hanzi5[ShowDAT[5]][disrow],CLOUR_F[1],8); //显示停留
}
if(hh/10==0)
sendRXbyte(hanzi[NL][disrow],CLOUR_F[0],4); //(小时为0时把屏向左移4位发空白数据 |
|