历史上的今天
返回首页

历史上的今天

今天是:2024年12月10日(星期二)

正在发生

2019年12月10日 | 数码管显示时钟可设置断电记忆

2019-12-10 来源:51hei

数码管显示时钟,用矩阵键盘来设置时间,断电时的时间会存储在EEPROM中,来电时恢复断电时刻的时间


单片机源程序如下:

/*实验效果每加一秒钟显示会跳动,并在8位数码管上以时间的形式显示*/

/*使用矩阵键盘的S1、S2、S3按键分别对秒、分、时进行设置加1操作。*/

/*设备断电时EEPROM记忆断电时刻的时间,重新上电时设备显示断电时刻的时间开始走时*/

/********注意事项:往EEPROM 24c2写入数据时与下一次写数据时适当延时2ms左右*****/

/****************不然写入数据的速度跟不上程序执行时间以至于数据写不进24c02中**/

#include

#include"init.h"

#include"key.h"

#include"i2c.h"

#include"delay.h"

//sbit K1=P3^0;

//sbit K2=P3^1;

unsigned char code DIG_CODE[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

unsigned char disp[8]={0x3f,0x3f,0x40,0x3f,0x3f,0x40,0x3f,0x3f};

unsigned char hour=12,minit=0,second=0, Time=0;

bit write=0,KeyState;

main()

{

        unsigned char keyvalue;


        hour=At24c02Read(0x02);                //读出24c02地址0保存的数据赋于小时中

        minit=At24c02Read(0x01);        //读出24c02地址1保存的数据赋于分中

        second=At24c02Read(0x00);        //读出24c02地址2保存的数据赋于秒中

        Timer1configuration(); 

    Timer0configuration();

        

    Int0Configuration(); 

                  

    while(1)

    {        

                keyvalue=readkey();


                if(TR0==0)

            {


                        if(KeyState==1)  //按键状态为1时代表有按键按下

                        {

                                 if(keyvalue==1)        // 按键1按下时

                                {

                                        

                                        second++;  //秒加1

                                        write=1;   //向24c02写数据允许

                                        if(second==60)

                                        second=0;

                                }

                                else if(keyvalue==2)// 按键2按下时

                                   {

                                        minit++; // 分加1

                                        write=1;//向24c02写数据允许

                                        if(minit==60)

                                        minit=0;

                                }

        

                                if(keyvalue==3)          // 按键3按下时

                                {

                                        hour++;         // 小时加1

                                        write=1;//向24c02写数据允许

                                        if(hour==24)

                                        hour=0;


                                }

                                KeyState=0;               //清除按键按下状态标志

                    }        

                

            }         

        disp[7]=DIG_CODE[hour/10];

            disp[6]=DIG_CODE[hour%10];

            disp[4]=DIG_CODE[minit/10];

            disp[3]=DIG_CODE[minit%10];

            disp[1]=DIG_CODE[second/10];

            disp[0]=DIG_CODE[second%10];

                if(write==1)  //当write为1时向24c02写入数据

                {

                        write=0;//清除写保护标记

                        At24c02Write(0x02,hour);         //在24c02的地址0中写入数据"小时"

                        Delay1ms(2);/*作适当的延时,程序运行太快以至于数据还没有写入24c02就开始执行下一条语句*/        

                        At24c02Write(0x01,minit);    //在24c02的地址1中写入数据"分"

                        Delay1ms(2);/*作适当的延时,程序运行太快以至于数据还没有写入24c02就开始执行下一条语句*/        

                        At24c02Write(0x00,second);   //在24c02的地址2中写入数据"秒"        

                        

                }

              

    }          

}

推荐阅读

史海拾趣

Corporation Soneet公司的发展小趣事

在电子行业的激烈竞争中,一家名为Soneet的新兴公司凭借其在半导体技术上的创新突破,逐渐崭露头角。Soneet的研发团队经过数年的努力,成功开发出一种新型的低功耗、高性能的芯片,这一技术突破不仅提高了电子设备的性能,还大大降低了能耗。凭借这一优势,Soneet迅速赢得了市场的认可,其产品在各大电子设备制造商中广受欢迎。

Dialog Semiconductor(戴乐格半导体)公司的发展小趣事

Dialog Semiconductor一直专注于能源管理领域,致力于提供高效的电源管理解决方案。公司推出了多种高效的电源管理芯片,这些芯片能够显著延长电池寿命并提高设备效率。特别是在移动设备领域,Dialog Semiconductor的电源管理芯片被广泛应用于智能手机、平板电脑等设备中,为用户提供了更长的使用时间和更好的使用体验。

Endicott Research Group Inc (ERG)公司的发展小趣事

近年来,随着全球对环保和节能的日益重视,ERG积极响应绿色发展的号召,开始研发更加高效节能的电源产品和LED照明解决方案。他们通过优化电路设计、采用新型材料和改进生产工艺,成功降低了产品的能耗和废弃物产生。这些环保举措不仅提升了公司的社会形象,还为其赢得了更多环保意识强的客户的青睐。同时,ERG也积极参与各种环保公益活动,为推动行业的绿色发展做出了积极贡献。

以上五个故事,客观地描述了ERG在电子行业中的发展历程和主要成就。从初创时期的艰苦奋斗,到不断拓展业务范围、加强技术研发、与科研机构合作以及积极响应环保号召,ERG始终保持着创新精神和进取心,为电子行业的发展做出了重要贡献。

All Sensors公司的发展小趣事

All Sensors在传感器技术领域一直保持着世界领先的地位。公司掌握着核心的MEMS传感器技术,如独有的CoBeam2 TM传感器技术等。这些技术的应用使得All Sensors的传感器在精度、稳定性和寿命等方面都达到了行业领先水平。同时,公司还不断投入研发,推出更多创新产品,满足不断变化的市场需求。

ERP公司的发展小趣事

为了进一步拓展市场和提高竞争力,电子智链开始寻求与其他企业建立生态合作关系。公司与多家电子制造设备供应商、原材料供应商和物流服务商建立了战略合作关系,共同打造了一个覆盖电子产业全链条的生态圈。这一合作模式不仅为客户提供了更加全面和高效的解决方案,还促进了整个电子产业的协同发展。

DUCATI公司的发展小趣事

面对不断变化的市场环境和客户需求,电子智链始终保持创新和进取的精神。公司不断投入研发资源,推出新的ERP产品和解决方案,以满足客户日益增长的需求。同时,电子智链也积极应对来自国内外竞争对手的挑战,通过不断提高产品质量和服务水平来巩固自身的市场地位。在未来的发展中,电子智链将继续秉持“客户至上、创新驱动”的理念,致力于为电子企业提供更加先进、高效和可靠的ERP解决方案。

问答坊 | AI 解惑

新生代工程师的技术人生(一)

一、成长--从摇滚青年到设计精英 9月的一天,在一场技术研讨会上,A君一边老到地翻看着Demo板,一边询问着一些技术细节,俨然一个技术高手,可是谁能想到,3年前,他曾是一个痴迷音乐的摇滚青年。 那是2003年的时候,他经常穿着 ...…

查看全部问答>

从c到嵌入式c编程语言

从c到嵌入式c编程语言_入门·实用·深入…

查看全部问答>

求助关于基于单片机的数字PID调节问题

我正在做一个基于ATmega16单片机的直流调速系统 要用到PID控制 第一个问题是 怎么用ATmega16实现PID控制 第二个问题 怎么将PID的输出与PWM波的占空比联系起来…

查看全部问答>

Nios 视频学习

Nios工程创建视频学习教程 内容包括: (1)SOPC Builder 的使用创建工程方法 (2)Quartus中的配置 (3)Nios中C语言工程的创建 (4)Nios中Flash的下载…

查看全部问答>

数字转模拟(D/A) 隔离转换器485/232转4-20MA

数字转模拟(D/A) 隔离转换器:ISO DAO系列 RS232/RS485信号转模拟信号 隔离D/A转换器 产品概述: ISO DAO系列产品实现主机RS-485/232接口信号隔离转换成标准模拟信号,用以控制远程设备。ISODA系列产品可应用在 RS-232/RS-4 ...…

查看全部问答>

光纤通信中的曼彻斯特解码问题。

我在光纤的接收端做了一个曼彻斯特解码模块(Verilog写的),没有任何校验算法加入。误码率很高,基本上是1%左右,哪位做过这东西,帮忙解释解释。谢谢…

查看全部问答>

写哪样的驱动,可以区分处理笔记本的USB Mouse和触摸板的数据?

应该是Filter Driver吧? 可WDK中只看到PS/2的Sample,像笔记本上的USB HID Mouse是否就不支援了呢? 有人指点下不? 3KS…

查看全部问答>

wince内存泄露?

我使用evc开发一个应用程序,使用了timer,当timer里面没有任何人为添加的代码的时候,查看程序内存中正在使用的内存,没有变化。当我添加这样两行代码:         CWnd* pWnd = GetDlgItem(IDC_COORD);       ...…

查看全部问答>

wince上能否实现对文件属性控制?

wince上能否实现对文件属性控制? 如c#中的 FileInfo fi = new FileInfo(textBox1.Text); fi.IsReadOnly == false…

查看全部问答>

求解答,工具是ccs2.2,读写flash空间和Clist问题

1.目前要把VC的程序刻录到板子上,请问原程序中用的是CList, c里面有替代的或差不多的吗?如果有,头文件是什么?刚接触这个,挺迷糊,刚 从一个辞职的同事上接手个半成品程序。 2. 请问怎么往板子里的flash空间写数据? typedef struct & ...…

查看全部问答>