一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
楼主: sdf15937
收起左侧

新年第一帖,很久以前买的32*80屏。程序弄的差不多了

  [复制链接]
 楼主| 发表于 2012-1-24 10:11 | 显示全部楼层
来支持老兄啦
itour 发表于 2012-1-23 22:24 https://www.yleee.com.cn/images/common/back.gif



    谢谢支持!
发表于 2012-1-24 15:39 | 显示全部楼层
下载了【Keil uVision4】,还是打不开。
发表于 2012-1-24 16:18 | 显示全部楼层
我也打不开!
 楼主| 发表于 2012-1-24 16:19 | 显示全部楼层
下载了【Keil uVision4】,还是打不开。
shqi2003 发表于 2012-1-24 15:39 https://www.yleee.com.cn/images/common/back.gif



    不会吧~为什么我的电脑就能打开?
QQ截图20120124160338.png
程序就贴在这里了
/*******************************程序设计:张军考QQ:86046233************************/
//#include <REG52.H>
#include <STC12C5A60S2.h>
//#include <AT89X55.H>
#include "intrins.h"     //_nop_();延时函数用
#include <intrins.h>        /* use _nop_() function */
#include <math.h>
#define XMS 65535-1536 /* 定时中断间隔 1uS 改这里可以解决闪动的问题*/
#define uchar unsigned char
#define uint unsigned int
#define  tmh XMS/256;
#define  tml XMS%256;
/*****************************************/
void UARTSET();                    //串口初始化
uchar x,g;
uchar code tab[]={254,253,251,247,239,223,191,127,254,253,251,247,239,223,191,127};
/*****************************************/
uchar chang1,hang1,shujujixing1=1,oejixing1;
uchar d8,ch; wendu;
bit txx;
/*****************************************************************/
#define AUXR  =0xa2;
/**************************************************************************/
/* 定义常量 */
#define ERROR   0
#define OK      1
  
//#define ENABLE_ISP 0x80 //系统工作时钟<24MHz 时,对IAP_CONTR 寄存器设置此值
//#define DEBUG_DATA               0x5A  //本测试程序最终存储在 EEPROM 单元的数值
//ABCD四个的数据在982和984行,这里定义为p1
sbit  LT =P3^1;//ST
sbit  SK =P3^2;//CK
sbit  DIN=P3^3;//R2
sbit  G1=P3^4;
sbit  DIN1=P3^5;//R1
sbit  G2 =P3^6;
sbit  en =P3^7;//OE
sbit T_CLK=P2^5;       //1302sclk
sbit T_IO=P2^6;        //1302data
sbit T_RST=P2^7;       //1302rst
sbit ACC0=ACC^0;       //1bit数据存储位
sbit ACC7=ACC^7;

sbit test=P0^6; // 按键
sbit up=P0^7; // 按键
sbit DQ=P0^0; // 18B20温度传感器
uchar xdata yw4x7[]= {0x01,0x02,0x04,0x08};
uchar xdata yw[]= {0x40,0x20,0x10,0x08,0x04,0x02,0x01};
uchar xdata yw1[]= {0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
unsigned char i, MSecond, Aminute, Ahour, Alarm, alarmlenth;
unsigned char Second,Minute,Hour, day, month, week, year, adjust, adj, dd, mo, yy;
unsigned char f1,f0,s1,s0,h1,h0,sd,d1,d0,m1,m0,y1,y0,wk, nd1, nd0, nm1, nm0, ny1, ny0,a1, a0;
//unsigned char idata Time[8], Ldate[5];
unsigned char KeyState;
unsigned char Key1On;
unsigned char Key2On;
unsigned char ampm, cal;
unsigned char sign, DS18B20, t1, t0, td;
int tem;
unsigned char code tab2[16][4]={{0,0,0,0},{0,6,2,5},{1,2,5,0},{1,8,7,5},
                                {2,5,0,0},{3,1,2,5},{3,7,5,0},{4,3,7,5},
                   {5,0,0,0},{5,6,2,5},{6,2,5,0},{6,8,7,5},
                   {7,5,0,0},{8,1,2,5},{8,7,5,0},{9,3,7,5}};
unsigned char code ZF[]=   //一维数据4x7   
{
0x06,0x09,0x09,0x09,0x09,0x09,0x06, //0
0x02,0x06,0x02,0x02,0x02,0x02,0x07, //1
0x06,0x09,0x01,0x02,0x04,0x08,0x0f, //2
0x06,0x09,0x01,0x06,0x01,0x09,0x06, //3
0x02,0x06,0x0a,0x0a,0x0f,0x02,0x02, //4
0x0f,0x08,0x0e,0x09,0x01,0x09,0x06, //5
0x06,0x09,0x08,0x0e,0x09,0x09,0x06, //6
0x0f,0x01,0x01,0x02,0x04,0x04,0x04, //7
0x06,0x09,0x09,0x06,0x09,0x09,0x06, //8
0x06,0x09,0x09,0x07,0x01,0x09,0x06, //9
0x00,0x02,0x02,0x00,0x02,0x02,0x00, //10 :
0x00,0x00,0x00,0x00,0x00,0x00,0x00, //11 空
0x02,0x02,0x02,0x02,0x02,0x02,0x03, //13 -
0x00,0x00,0x02,0x07,0x02,0x00,0x00, //14 +
0x00,0x00,0x00,0x00,0x0f,0x00,0x00, // - 15
0x00,0x00,0x00,0x01,0x00,0x00,0x00, // . 16
0x00,0x00,0x00,0x03,0x00,0x00,0x00, // .。 17
0x00,0x00,0x00,0x03,0x00,0x00,0x00, // - 18
0x00,0x80,0x00,0x30,0x40,0x40,0x30, //19 .c 4x7
}; //0,1,2,3,4,5,6,7,8,9,:,空,|,A, P (0-14)
unsigned char code HZ[]=   //一维数据7x7      
{
0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x00, //0 一
0x00,0x00,0x00,0x3c,0x00,0x00,0x7e,0x00, //1 二
0x00,0x00,0x00,0x3c,0x00,0x3c,0x00,0x7e, //2 三
0x00,0x00,0x7f,0x55,0x55,0x77,0x41,0x7f, //3 四
0x00,0x00,0x3e,0x08,0x3e,0x12,0x22,0x7f, //4 五
0x00,0x08,0x00,0x7f,0x00,0x14,0x22,0x41, //5 六
0x00,0x3C,0x24,0x24,0x3C,0x24,0x24,0x3C, //6 日
0x08,0x3e,0x52,0x5a,0x24,0x32,0x59,0x10, //7 农
0x00,0x78,0x48,0x48,0x78,0x48,0x48,0x78, //8 日
0x00,0x0f,0x09,0x0f,0x09,0x0f,0x09,0x11, //9 月
0x08,0x1f,0x24,0x1f,0x14,0x3f,0x04,0x04, //10 年
0x3F,0x20,0x24,0x2F,0x25,0x25,0x49,0x53,    //11 历
    0x3F,0x29,0x3D,0x29,0x3D,0x21,0x3D,0x5D, //12 周
};

unsigned char code DateD[]=   //二维数据5x7
{
0xB8,0x20,0x20,0x38,0x00,0x00,0x00, //1 ℃
};
unsigned char code DZF[]=
{
/*  --- 8x16 ---*/
0x3c,0x7e,0xe7,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xe7,0x7e,0x3c, //0
0x1c,0x7c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x7f, //1
0x3c,0x7e,0xe7,0xc3,0xc3,0xc3,0x03,0x03,0x07,0x0e,0x1c,0x38,0x70,0xe1,0xff,0xff, //2
0x3c,0x7e,0xe7,0xc3,0x03,0x03,0x03,0x3e,0x3e,0x03,0x03,0x03,0xc3,0xe7,0x7e,0x3c, //3
0x0c,0x0c,0x1c,0x1c,0x3c,0x3c,0x6c,0x6c,0xcc,0xcc,0x8c,0xff,0xff,0x0c,0x0c,0x1e, //4
0x7e,0xff,0xc0,0xc0,0xc0,0xc0,0xfc,0xfe,0x07,0x03,0x03,0x03,0xc3,0xe7,0x7e,0x3c, //5
0x3c,0x7e,0xe7,0xc3,0xc0,0xc0,0xc0,0xfc,0xfe,0xe7,0xc3,0xc3,0xc3,0xe7,0x7e,0x3c, //6
0x7E,0xFF,0xC3,0x83,0x03,0x07,0x06,0x06,0x06,0x0E,0x0C,0x0C,0x1C,0x18,0x18,0x18, //7
0x3c,0x7e,0xe7,0xc3,0xc3,0xc3,0xe7,0x7e,0x7e,0xe7,0xc3,0xc3,0xc3,0xe7,0x7e,0x3c, //8
0x3c,0x7e,0xe7,0xc3,0xc3,0xc3,0xe7,0x7f,0x3f,0x03,0x03,0xc3,0xc3,0xe7,0x7e,0x3c, //9
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //10
0x00,0x00,0x18,0x3c,0x3c,0x18,0x00,0x00,0x00,0x00,0x18,0x3c,0x3c,0x18,0x00,0x00, //11 SD
0x00,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x21,0x45,0x82, //12 月
0x00,0x00,0x7f,0x41,0x41,0x41,0x41,0x7f,0x41,0x41,0x41,0x41,0x41,0x7f,0x41,0x00, //13 日
0x00,0x7f,0x41,0x49,0x5d,0x49,0x5d,0x41,0x5d,0x55,0x55,0x5d,0x55,0x41,0x41,0x82, //14 周
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //15 一
0x00,0x00,0x00,0x00,0x00,0x02,0x7e,0x00,0x00,0x00,0x00,0x01,0xff,0x00,0x00,0x00, //16 二
0x00,0x00,0x02,0x7e,0x00,0x00,0x02,0x7e,0x00,0x00,0x00,0x01,0xff,0x00,0x00,0x00, //17 三
0x00,0x00,0x02,0x7e,0x00,0x00,0x02,0x7e,0x00,0x00,0x00,0x01,0xff,0x00,0x00,0x00, //18 四
0x00,0x00,0x7e,0x08,0x08,0x08,0x0a,0x7e,0x12,0x12,0x12,0x22,0x22,0xff,0x00,0x00, //19 五
0x00,0x20,0x18,0x0c,0x08,0xff,0x00,0x00,0x24,0x34,0x24,0x46,0x43,0x83,0x82,0x00, //20 六
0x00,0x00,0x10,0x10,0x10,0x1f,0xf0,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x0e,0x00, //21 七
0x00,0x00,0x04,0x26,0x34,0x24,0x24,0x24,0x24,0x66,0x62,0x62,0x83,0x83,0x81,0x00, //22 八
0x00,0x20,0x20,0x20,0x20,0xfc,0x24,0x24,0x24,0x24,0x44,0x44,0x45,0x85,0x86,0x00, //23 九
0x00,0x10,0x10,0x10,0x10,0x10,0x10,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x00, //24 十
0x00,0x44,0x44,0x44,0x44,0x44,0x44,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x7e,0x00, //25 廿
0x00,0x00,0x54,0x54,0x54,0x54,0x54,0xfe,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x00, //26 卅
0x00,0x00,0xe1,0xa1,0xe2,0x02,0x04,0x04,0x08,0x10,0x20,0x20,0x40,0x47,0x85,0x87, //27 %
0x00,0x00,0xe0,0xa0,0xe0,0x00,0x1e,0x23,0x41,0x40,0x40,0x40,0x40,0x41,0x23,0x1e, //28 c
};

unsigned char code ZZF[]=   //一维数据7x12   
{
0x3e,0x7f,0x63,0x63,0x63,0x63, 0x63, 0x63, 0x63, 0x63, 0x7f, 0x3e, //0
0x1c,0x3c,0x1c,0x1c,0x1c,0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x3e,  //1
0x3e,0x7f,0x63,0x63,0x07,0x0e, 0x1c, 0x38, 0x70, 0x60, 0x7f, 0x7f,  //2
0x3e,0x7f,0x63,0x63,0x03,0x06, 0x06, 0x03, 0x63, 0x63, 0x7f, 0x3e,  //3
0x1e,0x1e,0x36,0x36,0x36,0x66, 0x66, 0x7f, 0x7f, 0x06, 0x06, 0x06,  //4
0x3f,0x7f,0x60,0x60,0x60,0x7e, 0x3f, 0x03, 0x03, 0x63, 0x7f, 0x3e,  //5
0x3e,0x7f,0x63,0x60,0x60,0x7e, 0x7f, 0x63, 0x63, 0x63, 0x7f, 0x3e,  //6
0x3e,0x7f,0x63,0x63,0x03,0x06, 0x06, 0x06, 0x0c, 0x0c, 0x0c, 0x0c,  //7
0x3e,0x7f,0x63,0x63,0x63,0x3e, 0x3e, 0x63, 0x63, 0x63, 0x7f, 0x3e,  //8
0x3e,0x7f,0x63,0x63,0x63,0x7f, 0x3f, 0x03, 0x03, 0x63, 0x7f, 0x3e,  //9
0x00,0x00,0x00,0x06,0x06,0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00,  //10 :
0x00,0x00,0x00,0x00,0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,  //11  
};

uchar hang=0;
uchar xdata buff[640];//显示缓冲区
/********************************************1302********************************/
uchar R1302(uchar ucAddr);
void W1302(uchar ucAddr, uchar ucDa);
void RTInputByte(uchar d);
uchar RTOutputByte(void);

uchar miao,fen,shi,ri,yue,xinqi,nian;
void du1302();
void Set(uchar sel);
void xianshi(void);
void SBUF_byte(uchar i);
uchar anjianzhuangtai;
/*********************************************************************************/
void in_data16(void);//1/16扫描
void fasong(uchar dat,uchar dat1 );//高32点

/************************测试程序********************************/

uchar code huangse[]= {0x3f,0xcf,0xf3,0xfc};
uchar code hongse[]= {0x7f,0xdf,0xf7,0xfd};
uchar code lvse[]= {0xbf,0xef,0xfb,0xfe};
uchar code heise[]= {0xc0,0x30,0x0c,0x03};
/**************************************************************************************************************/
void delay(int useconds)
{
int s;
for (s=0; s<useconds;s++);
}
/*----------------18B20 程序----------------------*/
//复位
bit ow_reset(void)
{
  bit presence;

DQ=1;
delay(20);
DQ=0;        //拉低总线
EA=0;
delay(250);
EA=1;
_nop_();      //稍作延时。没有这条无法读取温度值
  DQ = 1;       // 释放总线
delay(30);     // 等待回复,12M时=30   
presence = DQ; // 读取信号

  delay(100);
     // 等待结束信号,12M时=250
  return(presence); // 返回   0:正常 1:不存在   
}     
//从 1-wire 总线上读取一个字节
unsigned char read_byte(void)
{
  unsigned char i;
  unsigned char value = 0;
  for (i=8;i>0;i--)
  {
    DQ = 0;
    value>>=1;
    DQ = 1;   
    if(DQ)value|=0x80;
    delay(30);    // 12M时=12
  }
  return(value);
}
//向 1-WIRE 总线上写一个字节
void write_byte(char val)
{
  unsigned char i;
  for (i=8; i>0; i--)  // 一次写一位
  {
    DQ=0;
    DQ = val&0x01;
    delay(30);  // 12M时=30
   
DQ = 1;
   
val=val/2;
}
}

unsigned int Read_Temperature(void)
{   
union
{
  unsigned char c[2];
  unsigned int x;
}temp;
temp.x=0x0000;
EA=0;
i=ow_reset();        //reset
  if(!i)
{
write_byte(0xCC);    //S kip ROM
write_byte(0x44);    //Start Conversion
  EA=1;
delay(5);
}
EA=0; i=ow_reset();EA=1;
if(!i)
{EA=0;
write_byte(0xCC);    //Skip ROM
write_byte(0xBE);    //Read Scratch Pad
EA=1;
delay(5);
temp.c[1]=read_byte();  //Start read data
temp.c[0]=read_byte();  //read two byte data from device
DS18B20=0;
}
else DS18B20=9;
return temp.x;   //
}
/*----------18B20 程序结束-------------*/
/*------------农历程序-------------------------*/
code uchar year_code[597]={
                    0x04,0xAe,0x53,    //1901 0
                    0x0A,0x57,0x48,    //1902 3
                    0x55,0x26,0xBd,    //1903 6
                    0x0d,0x26,0x50,    //1904 9
                    0x0d,0x95,0x44,    //1905 12
                    0x46,0xAA,0xB9,    //1906 15
                    0x05,0x6A,0x4d,    //1907 18
                    0x09,0xAd,0x42,    //1908 21
                    0x24,0xAe,0xB6,    //1909
                    0x04,0xAe,0x4A,    //1910
                    0x6A,0x4d,0xBe,    //1911
                    0x0A,0x4d,0x52,    //1912
                    0x0d,0x25,0x46,    //1913
                    0x5d,0x52,0xBA,    //1914
                    0x0B,0x54,0x4e,    //1915
                    0x0d,0x6A,0x43,    //1916
                    0x29,0x6d,0x37,    //1917
                    0x09,0x5B,0x4B,    //1918
                    0x74,0x9B,0xC1,    //1919
                    0x04,0x97,0x54,    //1920
                    0x0A,0x4B,0x48,    //1921
                    0x5B,0x25,0xBC,    //1922
                    0x06,0xA5,0x50,    //1923
                    0x06,0xd4,0x45,    //1924
                    0x4A,0xdA,0xB8,    //1925
                    0x02,0xB6,0x4d,    //1926
                    0x09,0x57,0x42,    //1927
                    0x24,0x97,0xB7,    //1928
                    0x04,0x97,0x4A,    //1929
                    0x66,0x4B,0x3e,    //1930
                    0x0d,0x4A,0x51,    //1931
                    0x0e,0xA5,0x46,    //1932
                    0x56,0xd4,0xBA,    //1933
                    0x05,0xAd,0x4e,    //1934
                    0x02,0xB6,0x44,    //1935
                    0x39,0x37,0x38,    //1936
                    0x09,0x2e,0x4B,    //1937
                    0x7C,0x96,0xBf,    //1938
                    0x0C,0x95,0x53,    //1939
                    0x0d,0x4A,0x48,    //1940
                    0x6d,0xA5,0x3B,    //1941
                    0x0B,0x55,0x4f,    //1942
                    0x05,0x6A,0x45,    //1943
                    0x4A,0xAd,0xB9,    //1944
                    0x02,0x5d,0x4d,    //1945
                    0x09,0x2d,0x42,    //1946
                    0x2C,0x95,0xB6,    //1947
                    0x0A,0x95,0x4A,    //1948
                    0x7B,0x4A,0xBd,    //1949
                    0x06,0xCA,0x51,    //1950
                    0x0B,0x55,0x46,    //1951
                    0x55,0x5A,0xBB,    //1952
                    0x04,0xdA,0x4e,    //1953
                    0x0A,0x5B,0x43,    //1954
                    0x35,0x2B,0xB8,    //1955
                    0x05,0x2B,0x4C,    //1956
                    0x8A,0x95,0x3f,    //1957
                    0x0e,0x95,0x52,    //1958
                    0x06,0xAA,0x48,    //1959
                    0x7A,0xd5,0x3C,    //1960
                    0x0A,0xB5,0x4f,    //1961
                    0x04,0xB6,0x45,    //1962
                    0x4A,0x57,0x39,    //1963
                    0x0A,0x57,0x4d,    //1964
                    0x05,0x26,0x42,    //1965
                    0x3e,0x93,0x35,    //1966
                    0x0d,0x95,0x49,    //1967
                    0x75,0xAA,0xBe,    //1968
                    0x05,0x6A,0x51,    //1969
                    0x09,0x6d,0x46,    //1970
                    0x54,0xAe,0xBB,    //1971
                    0x04,0xAd,0x4f,    //1972
                    0x0A,0x4d,0x43,    //1973
                    0x4d,0x26,0xB7,    //1974
                    0x0d,0x25,0x4B,    //1975
                    0x8d,0x52,0xBf,    //1976
                    0x0B,0x54,0x52,    //1977
                    0x0B,0x6A,0x47,    //1978
                    0x69,0x6d,0x3C,    //1979
                    0x09,0x5B,0x50,    //1980
                    0x04,0x9B,0x45,    //1981
                    0x4A,0x4B,0xB9,    //1982
                    0x0A,0x4B,0x4d,    //1983
                    0xAB,0x25,0xC2,    //1984
                    0x06,0xA5,0x54,    //1985
                    0x06,0xd4,0x49,    //1986
                    0x6A,0xdA,0x3d,    //1987
                    0x0A,0xB6,0x51,    //1988
                    0x09,0x37,0x46,    //1989
                    0x54,0x97,0xBB,    //1990
                    0x04,0x97,0x4f,    //1991
                    0x06,0x4B,0x44,    //1992
                    0x36,0xA5,0x37,    //1993
                    0x0e,0xA5,0x4A,    //1994
                    0x86,0xB2,0xBf,    //1995
                    0x05,0xAC,0x53,    //1996
                    0x0A,0xB6,0x47,    //1997
                    0x59,0x36,0xBC,    //1998
                    0x09,0x2e,0x50,    //1999 294
                    0x0C,0x96,0x45,    //2000 297
                    0x4d,0x4A,0xB8,    //2001
                    0x0d,0x4A,0x4C,    //2002
                    0x0d,0xA5,0x41,    //2003
                    0x25,0xAA,0xB6,    //2004
                    0x05,0x6A,0x49,    //2005
                    0x7A,0xAd,0xBd,    //2006
                    0x02,0x5d,0x52,    //2007
                    0x09,0x2d,0x47,    //2008
                    0x5C,0x95,0xBA,    //2009
                    0x0A,0x95,0x4e,    //2010
                    0x0B,0x4A,0x43,    //2011
                    0x4B,0x55,0x37,    //2012
                    0x0A,0xd5,0x4A,    //2013
                    0x95,0x5A,0xBf,    //2014
                    0x04,0xBA,0x53,    //2015
                    0x0A,0x5B,0x48,    //2016
                    0x65,0x2B,0xBC,    //2017
                    0x05,0x2B,0x50,    //2018
                    0x0A,0x93,0x45,    //2019
                    0x47,0x4A,0xB9,    //2020
                    0x06,0xAA,0x4C,    //2021
                    0x0A,0xd5,0x41,    //2022
                    0x24,0xdA,0xB6,    //2023
                    0x04,0xB6,0x4A,    //2024
                    0x69,0x57,0x3d,    //2025
                    0x0A,0x4e,0x51,    //2026
                    0x0d,0x26,0x46,    //2027
                    0x5e,0x93,0x3A,    //2028
                    0x0d,0x53,0x4d,    //2029
                    0x05,0xAA,0x43,    //2030
                    0x36,0xB5,0x37,    //2031
                    0x09,0x6d,0x4B,    //2032
                    0xB4,0xAe,0xBf,    //2033
                    0x04,0xAd,0x53,    //2034
                    0x0A,0x4d,0x48,    //2035
                    0x6d,0x25,0xBC,    //2036
                    0x0d,0x25,0x4f,    //2037
                    0x0d,0x52,0x44,    //2038
                    0x5d,0xAA,0x38,    //2039
                    0x0B,0x5A,0x4C,    //2040
                    0x05,0x6d,0x41,    //2041
                    0x24,0xAd,0xB6,    //2042
                    0x04,0x9B,0x4A,    //2043
                    0x7A,0x4B,0xBe,    //2044
                    0x0A,0x4B,0x51,    //2045
                    0x0A,0xA5,0x46,    //2046
                    0x5B,0x52,0xBA,    //2047
                    0x06,0xd2,0x4e,    //2048
                    0x0A,0xdA,0x42,    //2049
                    0x35,0x5B,0x37,    //2050
                    0x09,0x37,0x4B,    //2051
                    0x84,0x97,0xC1,    //2052
                    0x04,0x97,0x53,    //2053
                    0x06,0x4B,0x48,    //2054
                    0x66,0xA5,0x3C,    //2055
                    0x0e,0xA5,0x4f,    //2056
                    0x06,0xB2,0x44,    //2057
                    0x4A,0xB6,0x38,    //2058
                    0x0A,0xAe,0x4C,    //2059
                    0x09,0x2e,0x42,    //2060
                    0x3C,0x97,0x35,    //2061
                    0x0C,0x96,0x49,    //2062
                    0x7d,0x4A,0xBd,    //2063
                    0x0d,0x4A,0x51,    //2064
                    0x0d,0xA5,0x45,    //2065
                    0x55,0xAA,0xBA,    //2066
                    0x05,0x6A,0x4e,    //2067
                    0x0A,0x6d,0x43,    //2068
                    0x45,0x2e,0xB7,    //2069
                    0x05,0x2d,0x4B,    //2070
                    0x8A,0x95,0xBf,    //2071
                    0x0A,0x95,0x53,    //2072
                    0x0B,0x4A,0x47,    //2073
                    0x6B,0x55,0x3B,    //2074
                    0x0A,0xd5,0x4f,    //2075
                    0x05,0x5A,0x45,    //2076
                    0x4A,0x5d,0x38,    //2077
                    0x0A,0x5B,0x4C,    //2078
                    0x05,0x2B,0x42,    //2079
                    0x3A,0x93,0xB6,    //2080
                    0x06,0x93,0x49,    //2081
                    0x77,0x29,0xBd,    //2082
                    0x06,0xAA,0x51,    //2083
                    0x0A,0xd5,0x46,    //2084
                    0x54,0xdA,0xBA,    //2085
                    0x04,0xB6,0x4e,    //2086
                    0x0A,0x57,0x43,    //2087
                    0x45,0x27,0x38,    //2088
                    0x0d,0x26,0x4A,    //2089
                    0x8e,0x93,0x3e,    //2090
                    0x0d,0x52,0x52,    //2091
                    0x0d,0xAA,0x47,    //2092
                    0x66,0xB5,0x3B,    //2093
                    0x05,0x6d,0x4f,    //2094
                    0x04,0xAe,0x45,    //2095
                    0x4A,0x4e,0xB9,    //2096
                    0x0A,0x4d,0x4C,    //2097
                    0x0d,0x15,0x41,    //2098
                    0x2d,0x92,0xB5,    //2099
};
code uchar day_code1[9]={0x0,0x1f,0x3b,0x5a,0x78,0x97,0xb5,0xd4,0xf3};
code uint day_code2[3]={0x111,0x130,0x14e};
bit c_moon;
data uchar year_moon,month_moon,day_moon;
bit get_moon_day(uchar month_p,uint table_addr)
{
uchar temp;
    switch (month_p){
        case 1:{temp=year_code[table_addr]&0x08;
             if (temp==0)return(0);else return(1);}
        case 2:{temp=year_code[table_addr]&0x04;
             if (temp==0)return(0);else return(1);}
        case 3:{temp=year_code[table_addr]&0x02;
             if (temp==0)return(0);else return(1);}
        case 4:{temp=year_code[table_addr]&0x01;
             if (temp==0)return(0);else return(1);}
        case 5:{temp=year_code[table_addr+1]&0x80;
             if (temp==0) return(0);else return(1);}
        case 6:{temp=year_code[table_addr+1]&0x40;
             if (temp==0)return(0);else return(1);}
        case 7:{temp=year_code[table_addr+1]&0x20;
             if (temp==0)return(0);else return(1);}
        case 8:{temp=year_code[table_addr+1]&0x10;
             if (temp==0)return(0);else return(1);}
        case 9:{temp=year_code[table_addr+1]&0x08;
             if (temp==0)return(0);else return(1);}
        case 10:{temp=year_code[table_addr+1]&0x04;
             if (temp==0)return(0);else return(1);}
        case 11:{temp=year_code[table_addr+1]&0x02;
             if (temp==0)return(0);else return(1);}
        case 12:{temp=year_code[table_addr+1]&0x01;
             if (temp==0)return(0);else return(1);}
        case 13:{temp=year_code[table_addr+2]&0x80;
             if (temp==0)return(0);else return(1);}
    }
  
}

void Conversion(bit c,uchar year,uchar month,uchar day)
{                         //c=0 为21世纪,c=1 为19世纪 输入输出数据均为BCD数据
    uchar temp1,temp2,temp3,month_p;
    uint temp4,table_addr;
    bit flag2,flag_y;
    temp1=year/16;   //hex->BCD 先把数据转换为十进制
    temp2=year%16;
    year=temp1*10+temp2;
    temp1=month/16;
    temp2=month%16;
    month=temp1*10+temp2;
    temp1=day/16;
    temp2=day%16;
    day=temp1*10+temp2;
    //定位数据表地址
    if(c==0){                  
        table_addr=(year+0x64-1)*0x3;
    }
    else {
        table_addr=(year-1)*0x3;
    }
    //定位数据表地址完成
    //取当年春节所在的公历月份
    temp1=year_code[table_addr+2]&0x60;
    temp1=_cror_(temp1,5);
    //取当年春节所在的公历月份完成
    //取当年春节所在的公历日
    temp2=year_code[table_addr+2]&0x1f;
    //取当年春节所在的公历日完成
    // 计算当年春年离当年元旦的天数,春节只会在公历1月或2月
    if(temp1==0x1){  
        temp3=temp2-1;  
    }  
    else{
        temp3=temp2+0x1f-1;        
    }
    // 计算当年春年离当年元旦的天数完成
    //计算公历日离当年元旦的天数,为了减少运算,用了两个表
    //day_code1[9],day_code2[3]
    //如果公历月在九月或前,天数会少于0xff,用表day_code1[9],
    //在九月后,天数大于0xff,用表day_code2[3]
    //如输入公历日为8月10日,则公历日离元旦天数为day_code1[8-1]+10-1
    //如输入公历日为11月10日,则公历日离元旦天数为day_code2[11-10]+10-1
    if (month<10){
        temp4=day_code1[month-1]+day-1;
    }
    else{
        temp4=day_code2[month-10]+day-1;
    }
    if ((month>0x2)&&(year%0x4==0)){  //如果公历月大于2月并且该年的2月为闰月,天数加1
        temp4+=1;
    }
    //计算公历日离当年元旦的天数完成
    //判断公历日在春节前还是春节后
    if (temp4>=temp3){ //公历日在春节后或就是春节当日使用下面代码进行运算
        temp4-=temp3;
        month=0x1;
        month_p=0x1;  //month_p为月份指向,公历日在春节前或就是春节当日month_p指向首月
        flag2=get_moon_day(month_p,table_addr); //检查该农历月为大小还是小月,大月返回1,小月返回0
        flag_y=0;
        if(flag2==0)temp1=0x1d; //小月29天
        else temp1=0x1e; //大小30天
        temp2=year_code[table_addr]&0xf0;
        temp2=_cror_(temp2,4);  //从数据表中取该年的闰月月份,如为0则该年无闰月
        while(temp4>=temp1){
            temp4-=temp1;
            month_p+=1;
            if(month==temp2){
            flag_y=~flag_y;
            if(flag_y==0)month+=1;
            }
            else month+=1;
            flag2=get_moon_day(month_p,table_addr);
            if(flag2==0)temp1=0x1d;
            else temp1=0x1e;
        }
        day=temp4+1;
    }
    else{  //公历日在春节前使用下面代码进行运算
        temp3-=temp4;
        if (year==0x0){year=0x63;c=1;}
        else year-=1;
        table_addr-=0x3;
        month=0xc;
        temp2=year_code[table_addr]&0xf0;
        temp2=_cror_(temp2,4);
        if (temp2==0)month_p=0xc;
        else month_p=0xd; //
        /*
        month_p为月份指向,如果当年有闰月,一年有十三个月,月指向13,
无闰月指向12
        */
        flag_y=0;
        flag2=get_moon_day(month_p,table_addr);
        if(flag2==0)temp1=0x1d;
        else temp1=0x1e;
        while(temp3>temp1){
            temp3-=temp1;
            month_p-=1;
            if(flag_y==0)month-=1;
            if(month==temp2)flag_y=~flag_y;
            flag2=get_moon_day(month_p,table_addr);
            if(flag2==0)temp1=0x1d;
            else temp1=0x1e;
         }
        day=temp1-temp3+1;
    }
    c_moon=c;                 //HEX->BCD ,运算结束后,把数据转换为BCD数据
    temp1=year/10;
    temp1=_crol_(temp1,4);
    temp2=year%10;
    year_moon=temp1|temp2;
    temp1=month/10;
    temp1=_crol_(temp1,4);
    temp2=month%10;
    month_moon=temp1|temp2;
    temp1=day/10;
    temp1=_crol_(temp1,4);
    temp2=day%10;
    day_moon=temp1|temp2;
}
  
/*----------农历程序结束-------------*/
/*
void days (void)  //公历节日数据库
{  uchar i,t;
hh= hour;  
  dd= day;
mo= month;
     yy= year;  
Conversion(0,yy,mo,dd);     
  i=0;
  t=0;
if ( mo == 0x01 && dd == 0x01 )            {Sendping5(13,30,48,54,24,30,26,43,54,54);i=1;} //new year
if (month_moon== 0x01 && day_moon == 0x01 ){Sendping5(10,41,43,34,39,32,54,15); i=1;}    //Lu new year                                             
if (month_moon== 0x01 && day_moon == 0x15 ){Sendping5(16,17,18,19,20,21,14,15);i=1;}  //元宵节
        if (month_moon== 0x02 && day_moon == 0x02 ){Sendping5(96,22,13,24,25,14,15,96);i=1;}   //龙台头
if ( mo == 0x02 && dd == 0x14 )            {Sendping5(96,26,17,28,29,14,15,96); i=1;} //情人节
if ( mo == 0x03 && dd == 0x08 )            {Sendping5(96,30,31,32,33,14,15,96);i=1;} //妇女节
if ( mo == 0x03 && dd == 0x12 )            {Sendping5(96,34,35,36,37,14,15,96); i=1;} //植树节
if (mo == 0x04 && dd == 0x05 ){Sendping5(96,38,39,40,41,14,15,96); i=1;}  //清明节
if (month_moon== 0x05 && day_moon == 0x05 ){Sendping5(96,38,39,40,41,14,15,96); i=1;}  //端午节
if ( mo == 0x05 && dd == 0x01 )            {Sendping5(96,42,43,44,45,14,15,96); i=1;} //劳动节
if ( mo == 0x05 && dd == 0x04 )            {Sendping5(96,46,47,48,49,14,15,96); i=1;} //青年节
if ( mo == 0x06 && dd == 0x01 )            {Sendping5(96,50,51,52,53,14,15,96);i=1;} //儿童节
     if (month_moon== 0x07 && day_moon == 0x07 ){Sendping5(96,54,55,56,57,14,15,96); i=1;} //
        if (month_moon== 0x07 && day_moon == 0x15 ){Sendping5(96,58,59,60,61,14,15,96); i=1;}  //
if (month_moon== 0x08 && day_moon == 0x15 ){Sendping5(96,58,59,62,63,14,15,96);i=1; }  //中秋
if ( mo == 0x08 && dd == 0x01 )            {Sendping5(96,64,65,66,67,14,15,96); i=1;} //建军节
     if (month_moon== 0x09 && day_moon == 0x09 ){Sendping5(96,68,69,70,71,14,15,96);i=1; } //重阳节
if ( mo == 0x09 && dd == 0x10 )            {Sendping5(96,72,73,74,75,14,15,96); i=1;}
if ( mo == 0x10 && dd == 0x01 )            {Sendping5(96,76,77,78,79,14,15,96); i=1;} 国庆
if (month_moon== 0x12 && day_moon == 0x08 ){Sendping5(96,80,81,82,83,14,15,96); i=1;}
     if (month_moon== 0x12 && day_moon == 0x23 ){Sendping5(96,84,85,86,87,88,89,96); i=1;} 圣诞节
if (month_moon== 0x12 && day_moon == 0x29 ){Sendping5(105,106,107,108,109,110,111,112);i=1;}   //除夕
     if (month_moon== 0x12 && day_moon == 0x30 ){Sendping5(90,91,88,89,92,93,94,95); i=1;} //除夕
  if(i==t){
   if ( hh >= 0x04 && hh <  0x06 ){ Sendping5(137,138,135,136,117,118,115,116); }
   if ( hh >= 0x06 && hh <  0x08 ){ Sendping5(135,136,141,142,113,114,115,116); }
   if ( hh >= 0x08 && hh <  0x12 ){ Sendping5(135,136,139,140,119,120,125,126); }
   if ( hh == 0x12)               { Sendping5(143,144,143,144,121,122,125,126); }
   if ( hh >= 0x13 && hh <  0x18 ){ Sendping5(139,140,135,136,123,124,125,126); }
   if ( hh >= 0x18 && hh <  0x22 ){ Sendping5(141,142,135,136,127,128,119,120); }
   if ( hh >= 0x22 && hh <= 0x23 ){ Sendping5(135,136,135,136,129,130,131,132); }
   if ( hh >= 0x00 && hh <  0x04 ){ Sendping5(137,138,137,138,133,134,129,130); }
   }
}

}
*/
  void get_yinli()
{
    dd= ri;
    mo= yue;
    yy= nian;  
Conversion(0,yy,mo,dd);
ny1=(year_moon&0x70)>>4;
ny0=year_moon&0x0F;
nm1=(month_moon&0x70)>>4;
nm0=month_moon&0x0F;
nd1=(day_moon&0x70)>>4;
nd0=day_moon&0x0F;
}
/****************************画点函数******张军考原创*********************************/
//ys=0黄色ys=1红色ys=2绿色
void huadian(uchar x1,uchar y1,uchar ys)
{if(ys==0)
    {
        buff[y1*chang1+x1/4]&=huangse[x1%4];
    }
if(ys==1)
    {
        buff[y1*chang1+x1/4]&=hongse[x1%4];
    }
if(ys==2)
    {
        buff[y1*chang1+x1/4]&=lvse[x1%4];
    }
if(ys==3)
    {
        buff[y1*chang1+x1/4]|=heise[x1%4];
    }
}
/**************在指定位置显示4x7数字************************/
void sz4x7(uchar x,uchar y,uchar ys,uint add)
{uchar w,h;
for(h=0;h<7;h++)for(w=0;w<4;w++)
{if(ZF[h+add]&yw4x7[3-w])huadian(w+x,h+y,ys);else huadian(w+x,h+y,3);
   
}
}
/**************在指定位置显示5x7数字************************/
void sz5x7(uchar x,uchar y,uchar ys,uint add)
{uchar w,h;
for(h=0;h<7;h++)for(w=0;w<5;w++)
{if(DateD[h+add]&yw1[w])huadian(w+x,h+y,ys);else huadian(w+x,h+y,3);
   
}
}
/**************在指定位置显示7x8汉字************************/
void hz7x8(uchar x,uchar y,uchar ys,uint add)
{uchar w,h;
for(h=0;h<8;h++)for(w=0;w<7;w++)
{if(HZ[h+add]&yw[w])huadian(w+x,h+y,ys);else huadian(w+x,h+y,3);
   
}
}
/**************在指定位置显示8x16数字************************/
void sz8x16(uchar x,uchar y,uchar ys,uint add)
{uchar w,h;
for(h=0;h<16;h++)for(w=0;w<8;w++)
{if(DZF[h+add]&yw1[w])huadian(w+x,h+y,ys);else huadian(w+x,h+y,3);
   
}
}
/****************************键盘扫描********************************/
void keyscan()
{
if(test==0){delay(10);if(test==0){while(test==0){xianshi();}anjianzhuangtai++;if(anjianzhuangtai>=8)anjianzhuangtai=0;}}
if(anjianzhuangtai!=0)
{if(up==0){delay(10);if(up==0){while(up==0){xianshi();}Set(anjianzhuangtai);}}

}
}
/*******************************显示*************************/
void xianshi()
{uchar j,i;   
unsigned char  p, q;
if(i==6){
//EA=0;
tem=Read_Temperature();
//EA=1;
    sign=tem>>12;  //取高1位
    if (sign!=0)
   {
   tem=~tem+1; //负温度读数求补,取反加1 (减一取反?)
   }
    q=(unsigned char)(tem&0x000f);  
    p=(unsigned char)(tem>>4);
   t1=p/10;
    if (t1==0) t1=11;
    t0=p%10;      
    td=tab2[q][0];   
  }

j++;
if(j>3){du1302();get_yinli();j=0;}
i++;if(i>8)i=0;
/******************时分秒显示****************/
if(i>=4&&anjianzhuangtai==1)//时闪烁
{sz8x16(1,0,3,160);//
sz8x16(11,0,3,160);//
}
else{sz8x16(1,0,0,(shi/16)*16);//
   sz8x16(11,0,0,(shi%16)*16);//
  }
sz8x16(21,0,2,11*16); //秒点
if(i>=4&&anjianzhuangtai==2)//分闪烁
{sz8x16(31,0,3,160);//
sz8x16(41,0,3,160);//
}
else{sz8x16(31,0,0,(fen/16)*16);//
  sz8x16(41,0,0,(fen%16)*16);//
  }
sz8x16(51,0,2,11*16); //秒点
if(i>=4&&anjianzhuangtai==3)//秒闪烁
{sz8x16(61,0,3,160);//
sz8x16(71,0,3,160);//
}
else{sz8x16(61,0,0,(miao/16)*16);//
   sz8x16(71,0,0,(miao%16)*16);//
   }
/*****************年月日显示**************************/
if(i>=4&&anjianzhuangtai==4)//年闪烁
{sz4x7(0,17,3,44);
sz4x7(5,17,3,44);
sz4x7(10,17,3,44);
sz4x7(15,17,3,44);
}
else{sz4x7(0,17,1,14);
  sz4x7(5,17,1,0);
  sz4x7(10,17,1,(nian/16)*7);
  sz4x7(15,17,1,(nian%16)*7);
}
hz7x8(19,16,0,80);          //年
if(i>=4&&anjianzhuangtai==5)//月闪烁
  {sz4x7(28,17,3,44);
  sz4x7(33,17,3,44);
  }
else{sz4x7(28,17,1,(yue/16)*7);
     sz4x7(33,17,1,(yue%16)*7);
}
hz7x8(37,16,0,72);   //月
if(i>=4&&anjianzhuangtai==6)//日闪烁
{sz4x7(45,17,3,44);
sz4x7(50,17,3,44);
}
else{sz4x7(45,17,1,(ri/16)*7);
  sz4x7(50,17,1,(ri%16)*7);
}
hz7x8(56,16,0,64);     //日
/******************星期显示**********************************/
hz7x8(63,16,2,96);        //周

if(xinqi==7)xinqi=0;
if(i>=4&&anjianzhuangtai==7)//日闪烁
{hz7x8(73,16,3,44);}
else{hz7x8(73,16,1,xinqi%16*8);}
/***********************农历温度***********************************/
hz7x8(1,24,2,56);      //农
hz7x8(10,24,2,88);
sz4x7(19,25,1,(nm1)*7);
sz4x7(24,25,1,(nm0)*7);
hz7x8(29,24,2,72);   //月
sz4x7(38,25,1,(nd1)*7);
sz4x7(43,25,1,(nd0)*7);
hz7x8(49,24,2,64);   //日
sz4x7(57,25,1,(t1)*7);
sz4x7(62,25,1,(t0)*7);
huadian(68,31,1);
sz4x7(70,25,1,(td)*7);
sz5x7(75,25,2,(0)*7);  //温度符号
}
//根据选择调整相应项目
  void Set(uchar sel)
{
  uchar address,item;
  uchar max,mini;
  if(sel==3)  {address=0x80; max=0;mini=0;}     //秒
  if(sel==2)  {address=0x82; max=59;mini=0;}    //分钟
  if(sel==1)  {address=0x84; max=23;mini=0;}    //小时
  if(sel==7)  {address=0x8a; max=7; mini=1;}    //星期
  if(sel==6)  {address=0x86; max=31;mini=1;}    //日
  if(sel==5)  {address=0x88; max=12;mini=1;}    //月
  if(sel==4)  {address=0x8c; max=99;mini=0;}    //年
  
  item=R1302(address+1)/16*10+R1302(address+1)%16;
   item++;if(item>max) item=mini;   
         W1302(0x8e,0x00);
     W1302(address,item/10*16+item%10);
      W1302(0x8e,0x80);
du1302();
}





/***********************************************************程序*************************************************************/
void main ()
  {
uint j;
//P4SW=0xff;
P0M1=0;
P0M0=1;
//P4M1=0;
//P4M0=0xff;
P1M1=0;
P1M0=0xff;
P2M1=0;
P2M0=0xff;
UARTSET();
  
ET0=1;
EA=1;
oejixing1=1;
chang1=20;
for(j=0;j<640;j++)buff[j]=0xff;

     while(1)
    {keyscan();
xianshi();
}

   
  }
/*********************************************************************/
/************************************定时器中断程序**************************************0***/
void timer0( ) interrupt 1 using 1 //定时器中断程序
{uchar h;
ET0=0;
TH0=tmh; /* 5ms */
TL0=tml;
{
in_data16();
if(oejixing1==1) en=1;else en=0;  
LT=0;
LT=1;
h=P1;
h&=0xf0;
P1=h|(hang);if(oejixing1==1)en=0;else en=1;
hang++;if(hang==16)hang=0;
}

ET0=1;
}
/********************************初始化串口定时器***************************************/
void UARTSET()
{
SCON=0X50;             //串口为模式1,一位起始位,8位数据位,一位停止位。启动串口。
   TMOD &= 0x00;
TMOD |= 0x21;
TH1 = 0xFD;
TL1 = 0xFD;
PCON &= 0x7f;
TH0=tmh; /* 5ms */
TL0=tml;
TR0=1;                //启动定时器0
ET1=0;
TR1=1;                //启动定时器1
  PS=1;                 //串口中断优先
ES=1;                 //开启串口中断
REN=1;
   
}
/**********************************串口中断**********************************/
/**********************************串口中断**********************************/
void ser() interrupt 4       //中断程序,接收数据块,标志位置1
{uchar a;
EA=0;//if(oejixing1==1)en=0;else en=1;//en=1;
a=SBUF;
//wod=0;
if(RI)
{RI=0;
  switch  (g)
    {      
      case  0:                         //第一次数据
              if(a==0xca)           //收到握手信号
             {
     g=1;
                }else g=0;
                 break;
         case  1:if(a==0x91)g=14;else g=0;
                break;
  
case   14:W1302(0x8e,0x00);W1302(0x80,a);W1302(0x8e,0x80);g=15;break;
case   15:W1302(0x8e,0x00);W1302(0x82,a);W1302(0x8e,0x80);g=16;break;
case   16:W1302(0x8e,0x00);W1302(0x84,a);W1302(0x8e,0x80);g=17;break;
case   17:W1302(0x8e,0x00);W1302(0x86,a);W1302(0x8e,0x80);g=18;break;
case   18:W1302(0x8e,0x00);W1302(0x88,a);W1302(0x8e,0x80);g=19;break;
case   19:W1302(0x8e,0x00);W1302(0x8a,a);W1302(0x8e,0x80);g=20;break;
case   20:W1302(0x8e,0x00);W1302(0x8c,a);W1302(0x8e,0x80);g=21;break;
case   21:SBUF_byte(0xf5);g=0;IAP_CONTR=0x20;break;
}
}
EA=1;
}
void SBUF_byte(uchar i)
{
  SBUF=i;
   while(!TI);
     TI=0;
}

//*************1/16扫描***********************************//
void in_data16( )
{
  uchar v=0;
    uint m;
// mh=320;
m=hang*20;
  for (v=0;v<20;v++)  
{
fasong(buff[v+m],buff[v+m+320]);    } }
/*********************************************************************/

//**************八位数据发送****************//
void fasong(uchar dat,uchar dat1 )
  {
   uchar  t;
   for (t=0;t<4;t++)
   {
{ DIN=dat&0x80;DIN1=dat1&0x80;
  G1=dat&0x40;G2=dat1&0x40;

}
if(shujujixing1==1){ DIN=!DIN;DIN1=!DIN1;G1=!G1;G2=!G2;}
   
SK=0;
    SK=1;
    dat<<=2; dat1<<=2;   
    }
   }
/****************************************/
//********DS1302读写程序***************//
/******************************************************************** /
函 数 名:RTInputByte()
功    能:实时时钟写入一字节
说    明:往DS1302写入1Byte数据 (内部函数)
入口参数:d 写入的数据
返 回 值:无  
***********************************************************************/
void RTInputByte(uchar d)
{
    uchar h;
    ACC = d;
    for(h=8; h>0; h--)
    {
        T_IO = ACC0;  _nop_();      /*相当于汇编中的 RRC */
        T_CLK = 1;_nop_();
    T_CLK = 0;_nop_();
        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;
_nop_();_nop_();
        T_CLK = 1;
_nop_();
        T_CLK = 0;
    }
    return(ACC);
}
/********************************************************************
函 数 名:W1302()
功    能:往DS1302写入数据
说    明:先写地址,后写命令/数据 (内部函数)
调    用:RTInputByte() , RTOutputByte()
入口参数:ucAddr: DS1302地址, ucData: 要写的数据
返 回 值:无
***********************************************************************/
void W1302(uchar ucAddr, uchar ucDa)
{
    T_RST = 0;_nop_();
    T_CLK = 0;_nop_();
    T_RST = 1;_nop_();
    RTInputByte(ucAddr); _nop_();    /* 地址,命令 */
    RTInputByte(ucDa); _nop_();    /* 写1Byte数据*/
    T_CLK = 1; _nop_();
    T_RST = 0;_nop_();
}
/********************************************************************
函 数 名:R1302()
功    能:读取DS1302某地址的数据
说    明:先写地址,后读命令/数据 (内部函数)
调    用:RTInputByte() , RTOutputByte()
入口参数:ucAddr: DS1302地址
返 回 值:ucData :读取的数据
***********************************************************************/
uchar R1302(uchar ucAddr)
{
    uchar ucData;
    T_RST = 0;_nop_();//delay1(1);
    T_CLK = 0;//delay1(1);
_nop_();_nop_();
    T_RST = 1;_nop_();//delay1(1);
    RTInputByte(ucAddr);    _nop_(); //delay1(1);        /* 地址,命令 */
    ucData = RTOutputByte(); _nop_();// delay1(1);       /* 读1Byte数据 */
    T_CLK = 1;_nop_();//delay1(1);
  T_RST = 0;//delay1(1);
    return(ucData);
}
/********************************************************************
函 数 名:Set1302()
功    能:设置初始时间
说    明:先写地址,后读命令/数据(寄存器多字节方式)
调    用:W1302()
入口参数:pClock: 设置时钟数据地址 格式为: 秒 分 时 日 月 星期 年
                               7Byte (BCD码)1B 1B 1B 1B 1B  1B  1B
返 回 值:无
***********************************************************************/
/******************读取DS1302中的时间****************/
void du1302()
{
  miao=R1302(0x81);   //对取 秒 分 时 日 月 星期 年
  fen=R1302(0x83);
  shi=R1302(0x85);
  ri=R1302(0x87);
  yue=R1302(0x89);
  xinqi=R1302(0x8b);
  nian=R1302(0x8d);
}
 楼主| 发表于 2012-1-24 16:26 | 显示全部楼层
本帖最后由 sdf15937 于 2012-1-24 16:27 编辑
我也打不开!
pkwong 发表于 2012-1-24 16:18 https://www.yleee.com.cn/images/common/back.gif



    难道这家伙认电脑?还只认我的电脑?
我用好压压缩的,难道是压缩软件的问题?
发表于 2012-1-24 16:41 | 显示全部楼层
你试一下压成RAR格式的再上存上来试试!以前看过一个贴好像说ZIP的。忘记了
 楼主| 发表于 2012-1-24 16:58 | 显示全部楼层
你试一下压成RAR格式的再上存上来试试!以前看过一个贴好像说ZIP的。忘记了
BBQ 发表于 2012-1-24 16:41 https://www.yleee.com.cn/images/common/back.gif



    恩恩,上传了,在10楼。
万恶的1000分钟……
话说帖子过了1000分钟,要什么办法才能改啊?
发表于 2012-1-24 17:12 | 显示全部楼层
能打开看到了,谢谢!
发表于 2012-1-24 17:45 | 显示全部楼层
刚才下载了,可以打开的,用Keil uVision4
程序没有节气显示。主要是没地方放。
------------- ...
sdf15937 发表于 2012-1-24 10:10 https://www.yleee.com.cn/images/common/back.gif



    这个OK了。


龙年快乐!!
 楼主| 发表于 2012-1-24 20:49 | 显示全部楼层
这个OK了。


龙年快乐!!
shqi2003 发表于 2012-1-24 17:45 https://www.yleee.com.cn/images/common/back.gif



    恩恩,看起来好压用来压缩还是不行啊,不过他的图片压缩弄得不错
以后上传文件什么的,看起来还得用winRAR了。
另外,沈老师:龙年快乐!!

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-5-5 00:08 , Processed in 0.062580 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表