历史上的今天
返回首页

历史上的今天

今天是:2024年10月18日(星期五)

正在发生

2019年10月18日 | 基于51单片机电子万年历设计 lcd12864+24c02+ds1302

2019-10-18 来源:51hei

作品名称:基于51单片机电子万年历设计
作评功能:1:实现ds1302的读写
                2:lcd12864的显示
                3:24c02的读写
                4:更改日期,时间
                5:整点报时,闹钟的功能
                6:阴阳历的转换


硬件部分:普中开发板(程序内明确标明接线方式)
软件部分:原创
                1:代码规范:易于更改
                2:封装良好,可以直接移植。
 

单片机源程序如下:

#include "reg51.h"    //此文件中定义了单片机的一些特殊功能寄存器

#include "lcd12864.h"

#include "ds1302.h"

#include "24c04.h"

#include "stdio.h"

#include "string.h"

#include "ALG.h"

//预编译

#define DISPLAY_DATA_SIZE 30                //显示显示一帧数据长度

#define GPIO_KEY P1


//全局变量

unsigned char display_buff[DISPLAY_DATA_SIZE];

unsigned char ds1302_buff[2*sizeof(TIME)];

unsigned char key_value=0xff;

unsigned char receive_buff[sizeof(TIME)];

unsigned char store_row=0;

unsigned char store_line=0;

unsigned char interface_flag=0;

unsigned char ds1302_receive_flag=0;

unsigned char temp[8];

unsigned char display_flag=0;

unsigned char table[32][4]=

{        

        {0x01,0x01, 0x00, 0x12},

        {0x01,0x20, 0x00, 0x12},

        {0x01,0x30, 0x00, 0x12},

        {0x00,0x40, 0x00, 0x12},

        {0x00,0x50, 0x00, 0x12},

        {0x01,0x00, 0x01, 0x12},

        {0x01,0x50, 0x01, 0x12},

        {0x01,0x50, 0x01, 0x12},

        {0x01,0x01, 0x00, 0x12},

        {0x01,0x20, 0x00, 0x12},

        {0x01,0x30, 0x00, 0x12},

        {0x00,0x40, 0x00, 0x12},

        {0x00,0x50, 0x00, 0x12},

        {0x01,0x00, 0x01, 0x12},

        {0x01,0x50, 0x01, 0x12},

        {0x01,0x50, 0x01, 0x12},

        {0x01,0x01, 0x00, 0x12},

        {0x01,0x20, 0x00, 0x12},

        {0x01,0x30, 0x00, 0x12},

        {0x00,0x40, 0x00, 0x12},

        {0x00,0x50, 0x00, 0x12},

        {0x01,0x00, 0x01, 0x12},

        {0x01,0x50, 0x01, 0x12},

        {0x01,0x50, 0x01, 0x12},

        {0x01,0x01, 0x00, 0x12},

        {0x01,0x20, 0x00, 0x12},

        {0x01,0x30, 0x00, 0x12},

        {0x00,0x40, 0x00, 0x12},

        {0x00,0x50, 0x00, 0x12},

        {0x01,0x00, 0x01, 0x12},

        {0x01,0x50, 0x01, 0x12},

        {0x01,0x50, 0x01, 0x12}

};


sbit buzzer=P3^7;

//全局函数声明

void system_init(void);

void delay_ms(int ms);

void lcd_display(char row,char* buff,char num);

void timer_init(void);

void key_check(void);

void major_interface(void);

void store_interface(void);

void time_interface(void);

void key_pro(void);

void bcd_to_ascii(unsigned char* buff,unsigned char num);

void data_pro(unsigned char*des_buff,unsigned char*src_buff,unsigned char num);

/*

        biref                主函数

        param                无

        return        无

*/

void main(void)

{        

        unsigned char temp[7];

        unsigned char i=0;

        system_init();

        //在24cxx中读取数据。

        for(i=0;i<32;i++)

        {

                read_24cxx(0x00+i*4,table+i,4);

        }

        while(1)

        {  

                major_interface();

                store_interface();

                time_interface();

                key_check();

                key_pro();

        }                

}


/*

        biref                系统初始化函数

        param                无

        return        无

*/

void system_init(void)

{

        LCD12864_Init();

        Ds1302Init(TIME);

//        Ds18b20Init();

        timer_init();

}


/*

        biref         延时函数

        param                延时时间,单位ms;

        return        无

*/

void delay_ms(int ms)

{

        int x,i;

        x=ms;

        while(x--)

                for(i=123;i;i--);

}

/*

        biref                12864显示函数

        param                显示缓存区

        return        无

*/

void lcd_display(char row,char* buff,char num)

{

        unsigned int i;

                

        switch(row)

        {

                case 0:

                {

                        LCD12864_SetWindow(0, 0);

                        for(i=0;i                        {

                                LCD12864_WriteData(buff[i]);

                        }

                        break;

                }

                case 1:

                {

                        LCD12864_SetWindow(1, 0);

                        for(i=0;i                        {

                                LCD12864_WriteData(buff[i]);

                        }

                        break;

                }

                case 2:

                {

                        LCD12864_SetWindow(2, 0);

                        for(i=0;i                        {

                                LCD12864_WriteData(buff[i]);

                        }

                        break;

                }

                case 3:

                {

                        LCD12864_SetWindow(3, 0);

                        for(i=0;i                        {

                                LCD12864_WriteData(buff[i]);

                        }

                        break;

                }

                default:

                {

                        break;

                }

        }

}

/*

        biref                BCD码转换到ASCII

        param                无

        return        无

*/

void bcd_to_ascii(unsigned char* buff,unsigned char num)

{

        unsigned int i;

        for(i=0;i        {

                if(buff[i]>=0&&buff[i]<=9)

推荐阅读

史海拾趣

Bliley Technologies Inc公司的发展小趣事

在Bliley的发展历程中,技术创新始终是推动其不断前进的重要动力。从最初的石英晶体生产,到后来的恒温控制晶体振荡器(OCXO)、温度补偿晶振(TCXO)和压控晶体振荡器(VCXO)等先进产品的开发,Bliley始终站在行业技术的最前沿。公司拥有一支专业的研发团队,致力于开发更高效、更稳定、更精确的频率控制产品。这些技术创新不仅提升了Bliley的产品竞争力,也推动了整个电子行业的发展。

CINTERION公司的发展小趣事

随着汽车行业的快速发展和智能化趋势的加强,CINTERION针对汽车市场推出了专用级M2M模块。其中,AC75i和AC65i作为第六代汽车级模块,以其高度的集成性、稳定性和安全性受到了市场的广泛认可。这些模块的推出,不仅满足了汽车行业对无线通信技术的需求,也进一步巩固了CINTERION在汽车M2M市场的领先地位。

Dow-Key Microwave Corporation公司的发展小趣事

为了实现公司的国际化发展战略,Dow-Key Microwave积极开展国际合作与交流。公司与全球知名的电子企业和研究机构建立了紧密的合作关系,共同开展技术研发和市场开拓活动。这些合作不仅提升了公司的技术水平和市场影响力,还为公司的国际化发展提供了有力支持。同时,公司还积极参与国际展览和论坛活动,展示公司的最新技术和产品成果,进一步提升了公司的国际知名度和品牌形象。

Bals Elektrotechnik GmbH & Co KG公司的发展小趣事

进入21世纪,Bals Elektrotechnik继续致力于技术创新和产品升级。1998年,公司推出了具有革命性的CEE插头和插座无螺纹连接技术。这一技术不仅提高了连接的安全性和效率,还为用户节省了大量时间。Bals因此成为第一家提供这种创新技术的公司,进一步巩固了其在电气行业的领先地位。

这些故事虽然基于假设和现有信息,但尽量保持了客观性和事实性。它们展示了Bals Elektrotechnik GmbH & Co. KG公司在电子行业发展的不同阶段和关键事件,从一个运输公司成功转型为电气行业的领军企业。这些故事不仅反映了公司的成长历程,也体现了其不断创新、追求卓越的精神。

C.K Magma公司的发展小趣事

在追求经济效益的同时,C.K Magma公司也积极履行社会责任。他们注重绿色发展和可持续经营,通过采用环保材料和工艺、优化生产过程等方式,降低产品对环境的影响。此外,公司还积极参与公益事业,为社会做出贡献。这些举措不仅提升了公司的社会形象,也为公司的长远发展提供了有力保障。

这五个故事展示了C.K Magma公司在电子行业中的发展历程和取得的成就。通过技术突破、市场拓展、国际合作、创新产品和绿色发展等方面的努力,公司逐渐在行业中崭露头角,成为了一家具有影响力和竞争力的企业。

CUI Inc.公司的发展小趣事

自1989年成立以来,CUI Inc.一直站在电源设计的前沿。公司不断投资于研发,致力于开发出更高效、更环保的电源产品。通过引入先进的电源管理技术和创新的设计方法,CUI成功地帮助客户提高了应用的能效,减少了能源消耗。这种对电源技术的专注和创新,使CUI在竞争激烈的电子行业中脱颖而出,赢得了众多客户的信赖和好评。

问答坊 | AI 解惑

自制PIC16F84A烧写器

MICROCHIP公司所生產之單晶片微電腦—PIC16F84A是一顆很容易上手的 IC,功能也相當強,可重復燒錄上千次,價格不到NT150元,所以有很多非專業的玩家寫了很多的應用小品公佈在網路上。可惜非電子相關科系出身的人 (就像哦啦!!),有時望著英文的網頁 ...…

查看全部问答>

Sch原理图设计的常见问题

问题1:零件描述和零件标识有什么区别?     答:零件描述(Library Reference)是零件在零件库里的名称,将外形和引脚功能相同的零件取的一个通用名称;零件标识是电路图里用户根据需要自行设计的名称,当然也不能随意乱取。一般情况 ...…

查看全部问答>

EVC下如何加载JPEG图片文件?

EVC下如何加载JPEG图片文件,并且控制图片定位,大小? 有没有相关的库?…

查看全部问答>

采用FSK调制的射频信号是数字信号吗?

无线通信中什么叫数字信号,什么叫模拟信号 听说以前有手机是模拟信号的,现在都是数字的了 我想问,无线电磁波怎么能变成数字信号那样的方波?电磁波是正弦波,是连续的啊 用FSK调制的无线电信号无非是疏密相间的正弦波,这算是连续变化的(模 ...…

查看全部问答>

关于AD转换器AD7731与单片机

谁能提供AD7731的中文资料?网上只搜到了E文的,可惜自己E文不好 目前正想用89C51和AD7731实现直流表的功能 C51开发,很多东西正在整理学习中 希望和这方面有经验的前辈们学习,得到大家的宝贵指导 谢谢 我的邮件和MSN是 janphee@hotmail.com ...…

查看全部问答>

sd卡读写问题,有的文件能写进去,有的文件不能写进去

    如题,sd卡读写问题,有的文件能写进去,有的文件不能写进去。。。     高手指点一下,文件系统用的是EFSL     ARM7---EasyArm2200…

查看全部问答>

菜鸟求助,一段串口小程序困了我好几天了

我用的芯片是at91sam7x256,写了一段串口往上位机发送的小程序,但怎么调也是不通,初步估计是在初始化的时候没弄好,但是找不出问题在哪? #include \"/include/at91sam7S64/at91sam7s64.h\" #include \"/include/at91sam7s64/lib_at91sam7s64 ...…

查看全部问答>

嵌入式工程师必修之路

嵌入式门槛虽然较高,但也跟其他事物一样,并不是牢不可破。只要我们用心去对待,东雪终将化去,春风定会吹来。具体步骤如下:   1、《C语言》第二版 谭浩强 ; 《C程序设计语言》第二版 徐宝文译机戒工业出版社   你能区分开指针数组和数组 ...…

查看全部问答>

电源问题

图中电感L1起什么作用?它的外形和变压器一样,画法也和变压器一样,是不是它就是变压器呢?本人是菜鸟,请大侠们不要见笑。谢谢!…

查看全部问答>

求助:关于一个设计方案的可行性评估

我新人,现在大二,专业方面仅仅刚开始入门。我这边有一个小的设计方案,不知可行性如何,望各位提供宝贵建议。谢谢!   想做一个装置,可以实现对多点温度、湿度以及光照强度的采样,后通过数据分析,来计算出一个模拟量(可以是模拟供水量 ...…

查看全部问答>