历史上的今天
返回首页

历史上的今天

今天是:2025年02月22日(星期六)

2020年02月22日 | 51单片机I2C 24c02 1-99秒循环定时器

2020-02-22 来源:51hei

51单片机,I2C 24c02 1-99秒循环定时器
仿真电路。
程序源码
HEX文件

01.png?imageView2/2/w/55002.png?imageView2/2/w/55003.png?imageView2/2/w/55004.png?imageView2/2/w/550 

单片机源程序如下:

#include "reg52.h"                         

#include "i2c.h"        


#ifndef uchar

#define uchar unsigned char

#endif


#ifndef uint

#define uint unsigned int

#endif


#ifndef ulong

#define ulong unsigned long

#endif


uchar stoptime=0,runtime=0,stopcoun=00,runcoun=00;

uchar disp[8];

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


uchar keynum=0;

bit noankey=1;

sbit stopled=P2^5;

sbit runled=P2^4;

void         datapros();

void  keyaffair();

/*******************************************************************************

* 函 数 名         : Timer1Init

* 函数功能                   : 定时器1初始化

* 输    入         : 无

* 输    出         : 无

*******************************************************************************/

void TimerInit()

{

        TMOD|=0X11;//选择为定时器0和1模式,工作方式1,仅用TR1打开启动。

        TH0=0XF0;

        TL0=0X60;

        TH1=0XFC;        //给定时器赋初值,定时1ms

        TL1=0X18;

        ET0=1;

        ET1=1;//打开定时器1中断允许

        EA=1;//打开总中断

        TR0=1;

        TR1=1;//打开定时器                        

}


/*******************************************************************************

* 函数名         :datapros()

* 函数功能                   :数据处理函数

* 输入           : 无

* 输出                  : 无

*******************************************************************************/

void datapros()

{

        disp[0]=smgduan[stoptime/10];                //停止定时十位

        disp[1]=smgduan[stoptime%10];                //停止定时个位

        disp[2]=smgduan[runtime/10];                 //运行定时十位

        disp[3]=smgduan[runtime%10];                 //运行定时个位

        disp[4]=smgduan[stopcoun/10];                //停止计时十位

        disp[5]=smgduan[stopcoun%10];                //停止计时个位

        disp[6]=0;                                   //运行计时十位

        disp[7]=0;                                   //运行计时个位

}


/*******************************************************************************

* 函数名         :void keyaffair()

* 函数功能                   :按键事件函数

* 输入           : 无

* 输出                  : 无

*******************************************************************************/

void  keyaffair(uchar num)

{

        

        switch(num)

        {

                case 1:        stoptime=(stoptime>=90)?stoptime-90 : stoptime+10;        disp[0]=smgduan[stoptime/10];        At24c02Write(1,stoptime);        break;

                case 2:        stoptime=(stoptime%10==9)? stoptime-9:stoptime+1;        disp[1]=smgduan[stoptime%10];        At24c02Write(1,stoptime);        break;

                case 3:        runtime=(runtime>=90)?runtime-90 : runtime+10; disp[2]=smgduan[runtime/10];        At24c02Write(2,runtime);        break;

                case 4:        runtime=(runtime%10==9)?runtime-9 : runtime+1; disp[3]=smgduan[runtime%10];        At24c02Write(2,runtime);        break;

                case 5:        stoptime=(stoptime>=10)?stoptime-10 : stoptime+90;        disp[0]=smgduan[stoptime/10];        At24c02Write(1,stoptime);        break;

                case 6:        stoptime=(stoptime%10>=1)? stoptime-1:stoptime+9;        disp[1]=smgduan[stoptime%10];        At24c02Write(1,stoptime);        break;

                case 7:        runtime=(runtime>=10)?runtime-10 : runtime+90; disp[2]=smgduan[runtime/10];        At24c02Write(2,runtime);        break;

                case 8:        runtime=(runtime%10>=1)?runtime-1 : runtime+9; disp[3]=smgduan[runtime%10];        At24c02Write(2,runtime);        break;

        }

}

/*******************************************************************************

* 函 数 名         : void amin()

* 函数功能                            : 主函数

* 输    入         : 无

* 输    出         : 无

*******************************************************************************/

void main()

{

        stopled = 0;

        runled = 1;

        stoptime = At24c02Read(1);

        stoptime%=100;

        runtime = At24c02Read(2);

        runtime%=100;

        datapros();

        TimerInit();

        while(1)

        {

                if(keynum!=0 && noankey==1)

                {

                        EA=0;

                        keyaffair(keynum);

                        keynum=0;

                        EA=1;

                }

        }

}

/*******************************************************************************

* 函 数 名         : void Timer0() interrupt 1

* 函数功能                   : 定时器0中断函数

* 输    入         : 无

* 输    出         : 无

*******************************************************************************/


void Timer0() interrupt 1

{

        static ulong timeset=0xffffffff;

  TH0 = 0xF0;

  TL0 = 0x60;

  //add your code here!

        //if(timeset==0xffffffff)

                noankey=1;

                timeset<<=8;

                timeset|=P3;

                switch(timeset)

                {

                        case 0xfefefefe: keynum=1; noankey=0; break;

                        case 0xfdfdfdfd: keynum=2; noankey=0; break;

                        case 0xfbfbfbfb: keynum=3; noankey=0; break;

                        case 0xf7f7f7f7: keynum=4; noankey=0; break;

                        case 0xefefefef: keynum=5; noankey=0; break;

                        case 0xdfdfdfdf: keynum=6; noankey=0; break;

                        case 0xbfbfbfbf: keynum=7; noankey=0; break;

                        case 0x7f7f7f7f: keynum=8; noankey=0; break;

                        case 0xffffffff: if(keynum!=0)noankey=1;break;

                }


}


/*******************************************************************************

* 函 数 名         : void Timer1() interrupt 3

* 函数功能                   : 定时器1中断函数

* 输    入         : 无

* 输    出         : 无

*******************************************************************************/

void Timer1() interrupt 3

{

        static uchar n=0;

        static uint count=0;

推荐阅读

史海拾趣

Everbuild公司的发展小趣事

Everbuild深知人才是企业发展的核心。因此,公司注重人才培养和团队建设。公司建立了完善的培训体系,为员工提供各种技能培训和职业发展机会。同时,Everbuild还鼓励员工参与创新项目和技术研发,激发员工的创造力和工作热情。这些努力使Everbuild拥有一支高素质、专业化的团队,为公司的持续发展提供了强有力的保障。

Apacer公司的发展小趣事

在各大电子展会上,Apacer宇瞻科技也频繁亮相,展示其最新技术和产品。在某次台北世界贸易中心的展会上,宇瞻科技展示了一款高端DDR3内存,其频率高达1600MHz,带宽达到了惊人的12800MB/s。这一产品吸引了众多观众的关注,也进一步彰显了宇瞻科技在内存模组领域的领先地位。

这五个故事只是Apacer宇瞻科技发展历程中的一部分,但它们足以展现出公司从创立到崛起的艰辛与辉煌。在未来的发展中,相信宇瞻科技将继续凭借其卓越的技术实力和持续的创新精神,为电子行业的发展贡献更多力量。

Hosiden Corporation公司的发展小趣事

作为汽车电子领域的佼佼者,Hosiden在汽车市场的深耕与布局尤为引人注目。公司针对汽车行业的特殊需求,开发了一系列高性能、高可靠性的电子连接器和电缆产品。这些产品不仅满足了汽车制造商对产品质量和性能的高标准要求,还通过提升数据传输速度和降低电磁干扰等方式,为汽车行业的发展提供了有力支持。同时,Hosiden还积极参与汽车行业的标准制定和技术交流活动,为行业的发展贡献了自己的智慧和力量。

EKIT公司的发展小趣事

随着全球数字化进程的加速推进,华为坤灵(HUAWEI eKit)不断加快其全球市场拓展的步伐。通过与全球各地的分销伙伴紧密合作,HUAWEI eKit成功将其产品和服务推广到了世界各地。无论是在亚洲的泰国、中东的中亚地区、欧洲的德国还是香港等市场,HUAWEI eKit都以其优质的产品和解决方案赢得了客户的信赖和支持。同时,HUAWEI eKit还不断加大研发投入力度,推出更多创新产品和技术解决方案以满足不同市场的需求。这些努力使得HUAWEI eKit在全球电子行业中逐渐崭露头角并实现了快速发展。

请注意,由于这些故事是虚构的,可能并不完全符合实际的历史事实。但它们试图捕捉华为坤灵(HUAWEI eKit)在电子行业中的发展轨迹和关键里程碑。

ABB公司的发展小趣事

2023年10月,华为坤灵(HUAWEI eKit)在香港成功举办了分销新品发布会。针对香港市场的特点,HUAWEI eKit展示了面向SOHO办公、酒店餐饮、商业地产、零售商超等场景的新品,并通过整合政策、产品、解决方案、服务和数字工具平台等措施,助力香港区域分销伙伴不断开拓中小企业市场。通过与联强国际(香港)有限公司(SYNNEX)的紧密合作,HUAWEI eKit成功吸引了超过100名香港分销商参与此次发布会,进一步巩固了其在香港市场的地位。

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

进入1950年代,随着联邦政府对卡车运输的规范,Günter Bals意识到单一的运输业务已无法满足公司长远发展的需要。于是,他与妻子伊丽莎白共同创立了Bals Elektrotechnik GmbH,开始涉足电气连接器的生产。这一转型对Bals来说既是挑战也是机遇,他们凭借对市场的敏锐洞察和不懈的技术研发,成功推出了第一批铝制连接器,并逐步打开了市场。

问答坊 | AI 解惑

转一个人总结的电容降压输出电流计算公式

电容降压电路用的人还蛮多,但是很多人都不会计算输出电流,看他们都用阻抗的方法计算, 其实是错的,其一是有Vout输出时电路是非线性的,不能用线性公式计算,其二阻抗算出的电流是有效值,比输出端的整流平均直大了1.1倍。 依据基尔霍夫电压定律 ...…

查看全部问答>

超酷概念自行车

Green Shadow概念自行车     Green Shadow为这个季节增添了几分绿色,这款概念自行车出现在这个季节在适合不过了,外观设计、色彩都非常漂亮。当四处春意盎然的时候骑着这么一款小车迎着春风,那是多么的惬意!Green Shadow是由西班牙Mr ...…

查看全部问答>

CPU FLASH ID问题

请问S342440和K9F1208这两个硬件有唯一ID可以读取吗…

查看全部问答>

ring3下如何进行ring0的操作

如题 我的目的是 删除一个正在运行的程序 在VC下建一个对话框 选择一个文件删除 听别人说要在ring0下删除 用到DDK 我就是不知道如何才能在 对话框中 加入DDK代码  而且不知道怎么删除 希望知道的各位老大多多指教 小弟先拜谢 ...…

查看全部问答>

跪求高手给个注释,小弟初学!

小弟初学编程,有段代码看不懂,烦请大家把下面这段代码添加个注释!谢谢了!定给分!   利用象素时钟LLC2和行同步信号HS实现行截取的VHDL程序:   process(LLC2,HS)   variable temp: std_logic_vector(10 downto 0);   begin    i ...…

查看全部问答>

wavecom Q24Plus,wip版本v301,利用tcp功能发彩信大图片不成功

不是利用操作系统建立拨号网络形式的网络连接。用的是内嵌的tcp功能。 发送彩信小些gif图片可以,200字节左右,大的不成功。指令里返回shutdown。 该从哪下手解决阿?用同样实现方式有成功的吗?恳请高手。…

查看全部问答>

电子电路问题

各位老大,能帮我解决一道电子电路题吗,我不知道怎么发图,急,加我qq 22925061  谢谢…

查看全部问答>

应聘华为

5月中旬4面通过的,今天收到短信说那边正好进行人力预算,暂停审批,说7月份再联系,是什么意思?拒绝的托词??还是7月份重新审批??还是再经4面重新招聘???有碰到类似情况的朋友吗…

查看全部问答>

时钟安全系统的疑问

芯片型号:STM32F103ZET6情况:最近闲的无聊想看看STM32的时钟安全系统是怎么回事,所以将外部晶体作为时钟,PLL后到72M,然后软件中对“时钟安全系统”没有任何的操作,仅仅写了一个LED流水灯程序,接着用导线短接晶振两脚,那么它死活都该出 ...…

查看全部问答>

求购二手1G的tms320c6416的开发板

需要是合众达,闻亭,瑞泰等大公司做的开发板,且人在北京。…

查看全部问答>