⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 16字led点阵屏+ds1302电子钟 c 程序(修改板).c

📁 led条屏幕显示,串口屏幕,带时间显示功能~~!
💻 C
📖 第 1 页 / 共 2 页
字号:
/*****************************************************
       16字LED点阵屏+DS1302电子钟 C 程序(修改板)
******************************************************
声明:
     本程序中DS1302读写部分是直接引用网上网友提供的共享程序,
         本程序供大家学习之用,用勿用于商业用途。尊重作者版权。
         
         编写:邓椿薪
         时间:2006年1月28日 晚
         邮箱:love2151@xinhuanet.com
*******************************************************

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 <AT89x51.H>
#define uchar unsigned char
#define uint unsigned int

uchar code timer[12][16]={            /*0~9字符*/

/*--  文字:  0  --*/
/*--  Book Antiqua12;  此字体下对应的点阵为:宽x高=8x20   --*/
0xFF,0xFF,0xFF,0xE7,0xDB,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xDB,0xE7,0xFF,0xFF,
/*--  文字:  1  --*/
/*--  Book Antiqua12;  此字体下对应的点阵为:宽x高=8x20   --*/
0xFF,0xFF,0xFF,0xEF,0xE1,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0x83,0xFF,0xFF,

/*--  文字:  2  --*/
/*--  Book Antiqua12;  此字体下对应的点阵为:宽x高=8x20   --*/
0xFF,0xFF,0xFF,0xE3,0xDD,0xDD,0xDF,0xDF,0xEF,0xEF,0xF7,0xFB,0xFD,0x80,0xFF,0xFF,

/*--  文字:  3  --*/
/*--  Book Antiqua12;  此字体下对应的点阵为:宽x高=8x20   --*/
0xFF,0xFF,0xFF,0xE1,0xDE,0xDE,0xDF,0xEF,0xC3,0xBF,0xBF,0xBE,0xDE,0xE1,0xFF,0xFF,

/*--  文字:  4  --*/
/*--  Book Antiqua12;  此字体下对应的点阵为:宽x高=8x20   --*/
0xFF,0xFF,0xFF,0xDF,0xCF,0xD7,0xD7,0xDB,0xDD,0xDD,0x00,0xDF,0xDF,0x07,0xFF,0xFF,

/*--  文字:  5  --*/
/*--  Book Antiqua12;  此字体下对应的点阵为:宽x高=8x20   --*/
0xFF,0xFF,0xFF,0xC1,0xFD,0xFD,0xFD,0xC1,0xBD,0xBF,0xBF,0xBE,0xDE,0xE1,0xFF,0xFF,

/*--  文字:  6  --*/
/*--  Book Antiqua12;  此字体下对应的点阵为:宽x高=8x20   --*/
0xFF,0xFF,0xFF,0xDF,0xE7,0xFB,0xFD,0xC5,0xB9,0xBD,0xBD,0xBD,0xDB,0xE7,0xFF,0xFF,

/*--  文字:  7  --*/
/*--  Book Antiqua12;  此字体下对应的点阵为:宽x高=8x20   --*/
0xFF,0xFF,0xFF,0x01,0xBD,0xBD,0xDF,0xEF,0xEF,0xF7,0xF7,0xFB,0xFB,0xFD,0xFF,0xFF,

/*--  文字:  8  --*/
/*--  Book Antiqua12;  此字体下对应的点阵为:宽x高=8x20   --*/
0xFF,0xFF,0xFF,0xE3,0xDD,0xBE,0xBE,0xDD,0xC1,0xBE,0xBE,0xBE,0xDD,0xE3,0xFF,0xFF,

/*--  文字:  9  --*/
/*--  Book Antiqua12;  此字体下对应的点阵为:宽x高=8x20   --*/
0xFF,0xFF,0xFF,0xE7,0xDB,0xBD,0xBD,0xBD,0x9B,0xA7,0xDF,0xDF,0xEF,0xF1,0xFF,0xFF,



/*--  文字:  :  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=8x16   --*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xE7,0xE7,0xFF,0xFF,0xFF,0xE7,0xE7,0xFF,0xFF,0xFF,0xFF,

/*黑屏字符*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF

};


uchar code hanzi[18][32]={           /*汉字字模*/

/*--  文字:  年  --*/
/*--  华文新魏12;  此字体下对应的点阵为:宽x高=16x17   --*/
0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0xF8,0x1F,0xFC,0x5F,0xE0,0xEF,0xFC,0x1F,0xFD,0x0F,
0xC1,0x3F,0xFC,0x07,0xFE,0xF3,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,


/*--  文字:  月  --*/
/*--  华文新魏12;  此字体下对应的点阵为:宽x高=16x17   --*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x7F,0xFB,0x3F,0xFB,0xBF,0xFA,0x3F,0xFB,0xBF,
0xFA,0x3F,0xFB,0x9F,0xFB,0xDF,0xFB,0xEF,0xFA,0xE7,0xF9,0xFB,0xFF,0xFF,0xFF,0xFF,


/*--  文字:  星  --*/
/*--  华文新魏12;  此字体下对应的点阵为:宽x高=16x17   --*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x7F,0xF0,0x9F,0xF3,0x5F,0xFA,0xDF,0xF8,0x3F,
0xFE,0xBF,0xF8,0x1F,0xFC,0xCF,0xFC,0x2F,0xFE,0xFF,0xC0,0x1F,0xFF,0xEF,0xFF,0xFF,


/*--  文字:  期  --*/
/*--  华文新魏12;  此字体下对应的点阵为:宽x高=16x17   --*/
0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0x5F,0xE2,0x1F,0xED,0x47,0xE9,0x4F,0xED,0x6F,
0xE9,0x5F,0xEC,0x0F,0xEE,0xB1,0xEE,0x6F,0xEE,0xF7,0xE7,0x7F,0xFF,0xFF,0xFF,0xFF,

/*--  文字:  时  --*/
/*--  华文新魏12;  此字体下对应的点阵为:宽x高=16x17   --*/
0xFF,0xFF,0xFF,0xFF,0xF7,0xFF,0xF7,0xFF,0xF6,0x1F,0xF7,0x6F,0xC3,0x6F,0xF4,0x4F,
0xF6,0x6F,0xF7,0x0F,0xF7,0x6F,0xF7,0x33,0xF6,0x7F,0xF1,0xFF,0xF7,0xFF,0xFF,0xFF,
/*--  文字:  分  --*/
/*--  华文新魏12;  此字体下对应的点阵为:宽x高=16x17   --*/
0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFE,0xFF,0xFD,0xBF,0xFB,0xBF,0xF3,0x9F,0xE7,0xDF,
0x80,0x0F,0x1B,0x27,0xFB,0x7F,0xF9,0xBF,0xFD,0x9F,0xFC,0x6F,0xFF,0xFF,0xFF,0xFF,


/*--  文字:  秒  --*/
/*--  华文新魏12;  此字体下对应的点阵为:宽x高=16x17   --*/
0xFF,0xFF,0xFF,0xFF,0xFB,0xFF,0xFB,0xBF,0xFB,0xCF,0xFB,0x9F,0xCA,0x87,0x8A,0x89,
0xF3,0xCF,0xF3,0xD3,0xFB,0xD9,0xFD,0xDF,0xFE,0xDF,0xFF,0x7F,0xFF,0x1F,0xFF,0xFF,


/*--  文字:  时  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0xF7,0xFF,0xF7,0xFF,0xF7,0xC1,0xF7,0xDD,0x80,0x1D,0xF7,0xDD,0xF7,0xC1,0xF7,0x5D,  //7
0xF6,0xDD,0xF6,0xDD,0xF7,0xC1,0xF7,0xFF,0xF7,0xFF,0xF7,0xFF,0xF5,0xFF,0xFB,0xFF,

/*--  文字:  间  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0xFF,0xFB,0xC0,0x37,0xDF,0xF7,0xDF,0xFD,0xD8,0x1D,0xDB,0xDD,0xDB,0xDD,0xD8,0x1D,  //8
0xDB,0xDD,0xDB,0xDD,0xD8,0x1D,0xDF,0xFD,0xDF,0xFD,0xDF,0xFD,0xD7,0xFD,0xEF,0xFD,

/*--  文字:  设  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0xFF,0xFD,0xF0,0x7B,0xF7,0x73,0xF7,0x7B,0xF7,0x7F,0xF7,0x7F,0x8F,0xB8,0xE0,0x5B,  //9
0xEF,0x7B,0xEF,0x7B,0xF6,0xFB,0xF6,0xFB,0xF9,0xEB,0xF6,0xF3,0x8F,0x3B,0xDF,0xCF,

/*--  文字:  定  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0xFF,0xBF,0xFF,0x7F,0x80,0x03,0xDF,0xFB,0xEF,0xFD,0xF0,0x07,0xFF,0x7F,0xFF,0x77, //10
0xFF,0x77,0xF0,0x77,0xFF,0x77,0xFF,0x6B,0xFF,0x5B,0xFF,0x3D,0xC0,0x7E,0xFF,0xFF,

/*--  文字:  一  --*/
/*--  华文新魏12;  此字体下对应的点阵为:宽x高=16x17   --*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x7F,
0xE0,0x03,0xDF,0xC3,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,


/*--  文字:  二  --*/
/*--  华文新魏12;  此字体下对应的点阵为:宽x高=16x17   --*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x1F,0xFC,0x1F,0xFF,0xDF,
0xFF,0xFF,0xE3,0xFF,0xC0,0x0F,0xDF,0x83,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,


/*--  文字:  三  --*/
/*--  华文新魏12;  此字体下对应的点阵为:宽x高=16x17   --*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x3F,0xFE,0x3F,0xFF,0xFF,
0xFC,0x3F,0xFF,0xBF,0xFF,0xFF,0xC0,0x3F,0xFF,0xC3,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,


/*--  文字:  四  --*/
/*--  华文新魏12;  此字体下对应的点阵为:宽x高=16x17   --*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x7F,0x8C,0x07,0xCC,0xB7,
0xCD,0xB7,0xEF,0xEF,0xE4,0x0F,0xF3,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,


/*--  文字:  五  --*/
/*--  华文新魏12;  此字体下对应的点阵为:宽x高=16x17   --*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0xFF,0xF8,0x1F,0xFE,0x3F,0xFE,0x7F,0xF0,0x7F,
0xF9,0x0F,0xF9,0x3F,0xFD,0xBF,0xC0,0x1F,0xC7,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,


/*--  文字:  六  --*/
/*--  华文新魏12;  此字体下对应的点阵为:宽x高=16x17   --*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0xFE,0x3F,0xFE,0xFF,0xC1,0xFF,0x80,0x1F,
0xFF,0x01,0xFD,0xDD,0xF3,0x9F,0xE3,0xCF,0xE7,0xE7,0xFF,0xF7,0xFF,0xFF,0xFF,0xFF,


/*--  文字:  日  --*/
/*--  华文新魏12;  此字体下对应的点阵为:宽x高=16x17   --*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x3F,0xF1,0x9F,0xF1,0xDF,
0xF1,0x1F,0xF1,0xDF,0xF1,0xDF,0xF1,0x1F,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF

};
uchar code sw[16]={0x60,0x62,0x64,0x66,0x68,0x6a,0x6c,0x6e,
                   0x70,0x72,0x74,0x76,0x78,0x7a,0x7c,0x7e}; /*16行段码*/


void xs_out();                     /*输出显示*/
void out_rxd(unsigned char *d);    /*串口发送一行*/



/******************************************/
sbit resget=P1^3;                        //时钟复位
sbit key_moda=P1^0;                        //模式转换
sbit key_up=P1^1;                        //时钟加
sbit key_Down=P1^2;                        //时钟减

sbit T_CLK=P1^7;                //DS1302引脚连接
sbit T_IO =P1^6;
sbit T_RST=P1^5;

sbit ACC0=ACC^0;       //1bit数据存储位
sbit ACC7=ACC^7;

uchar inittime[7]={0x00,0x10,0x22,0x13,0x01,0x05,0x06};         //初始化后设置为:06年1月12日星期4 21点0分0秒
uchar i,e,id,miao,fen,shi,nian,yue,ri,xinqi;  //时间变量
uint ss;
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   id_case1_key();                           // 加减选取
void   Set(uchar,uchar );          // 变量调整


/*主函数*/
void main()
{
  
  SCON=0;             //初始化串口为工作方式0(同步通信方式,TxD输出同步脉冲)
   while(1)            //重复循环显示
   {
  
          if(resget==0)
          {DelayMs();
       if(resget==0)
           Set1302(inittime);           //初始化 
           W1302(0x8e,0x00);           /* 控制命令,WP=0,写操作?*/                 
           W1302(0x90,0xa5);           //打开充电二级管  一个二级管串联一个2K电阻 
          }  
                           
        if (key_moda==0)                   // 设置和选择项目键
     {DelayMs();
          if(key_moda==0)
            {
              id++;if(id==8) id=0;
                  while(key_moda==0){ xs_out();}    
         }
           }
          
    id_case1_key();
        du1302();           //读取 秒 分 时 日 月 星期 年
        xs_out();                        /******调用显示****/
                
   }
}
/************************************************/
void xs_out()                   //串行输出显示
{
            

         for(i=0;i<16;i++)
      { 
        P2=0x7f;
            ss++;                                                 //ss为闪烁延时计数器
            if (ss==1500)                                         //定义SS的大小决定调整时闪烁的快慢,小于750时为亮,大于750时为黑
                   {ss=0;}
            out_rxd(&timer[11]);                 //不显示
            if(id==1&&ss>750)                             //当ID为1和SS大于1000时年不显示。
              {
                out_rxd(&timer[11]);             //不显示 
                        out_rxd(&timer[11]);             //不显示
                    out_rxd(&timer[11]);             //不显示
                        out_rxd(&timer[11]);             //不显示
               }
                  
            else
                 {
                out_rxd(&timer[2]);       //20年   
                out_rxd(&timer[0]);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -