文档库 最新最全的文档下载
当前位置:文档库 › 单片机二进制时钟代码

单片机二进制时钟代码

单片机二进制时钟代码
单片机二进制时钟代码

单片机二进制时钟

#include

#include

#define uchar unsigned char

#define uint unsigned int

sbit SET_H=P0^6;

sbit SET_M=P0^5;

sbit SET_S=P1^6;

uchar code DSY_CODE[]= //用于显示时钟的编码

{

0x0,0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0xa,0xb,0xc,

0xd,0xe,0xf,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,

0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20,0x21,

0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,

0x2c,0x2d,0x2e,0x2f,0x30,0x31,0x32,0x33,0x34,0x35,

0x36,0x37,0x38,0x39,0x3a,0x3b

};

uint hour=0,min=0,sec=0,count=0;

void delay_ms(unsigned char i)

{

unsigned char j;

while(i--)

for(j=124;j>0;j--);

}

void Set_Interrupt_1()

{

if(SET_H==0)

{

delay_ms(100);

if(SET_H==0)

{

TR0=0;

if(hour<23)

hour++;

else

hour=0;

//delay_ms(50);

TR0=1;

P0=~DSY_CODE[hour];

P1=~DSY_CODE[min];

P2=~DSY_CODE[sec];

}

}

}

void Set_Interrupt_2()

{

if(SET_M==0)

{

delay_ms(100);

if(SET_M==0)

{

TR0=0;

TH0 = (65535-50000)/256;

TL0 = (65535-50000)%256;

if(min<59)

min++;

else

{

min=0;

hour++;

if(hour==24)

hour=0;

}

// delay_ms(50);

TR0=1;

P0=~DSY_CODE[hour];

P1=~DSY_CODE[min];

P2=~DSY_CODE[sec];

}

}

}

void Set_Interrupt_3()

{

if(SET_S==0)

{

delay_ms(100);

if(SET_S==0)

{

TR0=0;

if(sec<59)

sec++;

else

{

sec=0;

min++;

if(min==60)

{

min=0;

hour++;

if(hour==24)

hour=0;

}

}

//delay_ms(50);

TR0=1;

P0=~DSY_CODE[hour];

P1=~DSY_CODE[min];

P2=~DSY_CODE[sec];;

}

}

}

void main()

{

P0 = 0xff;

P1 = 0xff;

P2 = 0xff;

TMOD = 0x01;

TH0 = (65535-50000)/256;

TL0 = (65535-50000)%256;

//IE = 0x82;

ET0=1;

TR0 = 1;

EA=1;

while(1)

{

Set_Interrupt_1();

Set_Interrupt_2();

Set_Interrupt_3();

}

}

void Time0() interrupt 1

{

TH0 = (65535-50000)/256;

TL0 = (65535-50000)%256;

if((count+1)!=20)

{

count++;

return;

}

else

{

if((sec+1)!=60)

{

P2=~DSY_CODE[++sec];

}

else

{

sec=0;

if((min+1)!=60)

{

P1=~DSY_CODE[++min];

}

else

{

min=0;

if((hour+1)!=60)

{

P0=~DSY_CODE[++hour];

}

else

{

hour=0;

}

}

}

count = 0;

}

}

基于51单片机的电子时钟的设计

目录 0 前言 (1) 1 总体方案设计 (2) 2 硬件电路设计 (2) 3 软件设计 (5) 4 调试分析及说明 (7) 5 结论 (9) 参考文献 (9) 课设体会 (10) 附录1 电路原理 (12) 附录2 程序清单 (13)

电子时钟的设计 许山沈阳航空航天大学自动化学院 摘要:传统的数字电子时钟采用了较多的分立元器件,不仅占用了很大的空间而且利用率也比很低,随着系统设计复杂度的不断提高,用传统时钟系统设计方法很难满足设计需求。 单片机是集CPU、RAM、ROM、定时器/计数器和多种接口于一体的微控制器。它体积小、成本低、功能强,广泛应用于智能产品和工业自动化上。而51系列的单片机是各单片机中最为典型和最有代表性的一种。,本次设计提出了系统总体设计方案,并设计了各部分硬件模块和软件流程,在用C语言设计了具体软件程序后,将各个模块完全编译通过过后,结果证明了该设计系统的可行性。该设计给出了以AT89C2051为核心,利用单片机的运算和控制功能,并采用系统化LED显示模块实时显示数字的设计方案,适当地解决了实际生产和日常生活中对计时高精确度的要求,因此该设计在现代社会中具有广泛的应用性。 关键字:AT89C2051,C语言程序,电子钟。 0前言 利用51单片机开发电子时钟,实现时间显示、调整和闹铃功能。具体要求如下: (1)按以上要求制定设计方案,并绘制出系统工作框图; (2)按要求设计部分外围电路,并与单片机仿真器、单片机实验箱、电源等正确可靠的连接,给出电路原理图; (3)用仿真器及单片机实验箱进行程序设计与调试;

(4)利用键盘输入调整秒、分和小时时刻,数码管显示时间; (5)实现闹钟功能,在设定的时间给出声音提示。 1总体方案设计 该电子时钟由89C51,BUTTON,1602 LCD液晶屏等构成,采用晶振电路作为驱动电路,利用单片机内部定时计数器0通过软件扩展产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。闹钟和时钟的时分秒的调节是由一个按键控制,而另外一个按键控制时钟和闹钟的时间的调节。 图1 系统结构框图 该电子时钟由STC89C51,BUTTON,1602 LCD液晶屏等构成,采用晶振电路作为驱动电路,晶振电路的晶振频率为12MHZ,使用的定时器/计数器工作方式0,通过软件扩展产生的一秒定时,达到时分秒的计时,60秒为一分钟,60分钟为一小时,24小时为一天,又重00:00:00开始计时。没有按键按键按下时,时钟正常运行,当按下调节时钟按键K1,就会关闭时钟,当按下闹钟按键K3时时钟就会进入设置时间界面,但是时钟不会停止工作,按K2键,,就可以对时钟和闹钟要设置的时间进行调整。 2硬件电路设计

简单51单片机数字时钟设计

题目:简单51单片机数字时钟设计 院系: 物理与电气工程学院 专业:自动化专业 班级:10级自动化 姓名:苏吉振 学号:2 老师:李艾华

引言 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。 时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。 目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS 化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。下面是单片机的主要发展趋势。 单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。 单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。 数字钟是采用数字电路实现对时,分,秒数字显示的计时装置,广泛用于个 人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。

基于51单片机的实时时钟设计报告

课程设计(论文)任务书 信息工程学院信息工程专业(2)班 一、课程设计(论文)题目嵌入式课程设计 二、课程设计(论文)工作自 2014 年 6 月 9 日起至2014年 6月15日止。 三、课程设计(论文) 地点: 5-402 单片机实验室 四、课程设计(论文)内容要求: 1.本课程设计的目的 (1)使学生掌握单片机各功能模块的基本工作原理; (2)培养学生单片机应用系统的设计能力; (3)使学生能够较熟练地使用proteus工具完成单片机系统仿真。 (4)培养学生分析、解决问题的能力; (5)提高学生的科技论文写作能力。 2.课程设计的任务及要求 1)基本要求: (1)分析所设计系统中各功能模块的工作原理; (2)选用合适的器件(芯片); (3)提出系统的设计方案(要有系统电路原理图); (4)对所设计系统进行调试。 2)创新要求: 在基本要求达到后,可进行创新设计,如改善单片机应用系统的性能。 3)课程设计论文编写要求 (1)要按照书稿的规格打印撰写论文。 (2)论文包括目录(自动生成)、摘要、正文、小结、参考文献、附录等。 (3)论文装订按学校的统一要求完成。 4)答辩与评分标准: (1)完成原理分析:20分; (2)完成设计过程:30分; (3)完成调试:20分; (4)回答问题:20分; (5)格式规范性(10分)。

5)参考文献: (1)张齐.《单片机原理与嵌入式系统设计》电子工业出版社 (2)周润景.《PROTUES入门实用教程》机械工业出版社 (3)任向民.《微机接口技术实用教程》清华大学出版社 (4)https://www.wendangku.net/doc/2718415254.html,/view/a5a9ceebf8c75fbfc77db2be.html 6)课程设计进度安排 内容天数地点 构思及收集资料1图书馆 系统设计与调试 4 实验室 撰写论文2图书馆、实验室 学生签名: 2014 年6 月9日 课程设计(论文)评审意见 (1)完成原理分析(20分):优()、良()、中()、一般()、差(); (2)设计分析(30分):优()、良()、中()、一般()、差(); (3)完成调试(20分):优()、良()、中()、一般()、差(); (4)回答问题(20分):优()、良()、中()、一般()、差(); (5)格式规范性(10分):优()、良()、中()、一般()、差(); 评阅人:职称: 2014 年6 月15 日

51单片机作的电子钟程序及电路图

51单片机作的电子钟程序在很多地方已经有了介绍,对于单片机学习者而言这个程序基本上是一道门槛,掌握了电子钟程序,基本上可以说51单片机就掌握了80%。常见的电子钟程序由显示部分,计算部分,时钟调整部分构成。 时钟的基本显示原理:时钟开始显示为0时0分0秒,也就是数码管显示000000,然后每秒秒位加1 ,到9后,10秒位加1,秒位回0。10秒位到5后,即59秒,分钟加1,10秒位回0。依次类推,时钟最大的显示值为23小时59分59秒。这里只要确定了1秒的定时时间,其他位均以此为基准往上累加。 开始程序定义了秒,十秒,分,十分,小时,十小时,共6位的寄存器,分别存在30h,31h,32h,33h,34h,35h单元,便于程序以后调用和理解。 6个数码管分别显示时、分、秒,一个功能键,可以切换调整时分秒、增加数值、熄灭节电等功能全部集一键。

以下是部分汇编源程序,购买我们产品后我们用光盘将完整的单片机汇编源程序和烧写文件送给客户。;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 中断入口程序 ;; (仅供参考) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ORG 0000H ;程序执行开始地址 LJMP START ;跳到标号START执行 ORG 0003H ;外中断0中断程序入口 RETI ;外中断0中断返回 ORG 000BH ;定时器T0中断程序入口 LJMP INTT0 ;跳至INTTO执行 ORG 0013H ;外中断1中断程序入口

RETI ;外中断1中断返回 ORG 001BH ;定时器T1中断程序入口 LJMP INTT1 ;跳至INTT1执行 ORG 0023H ;串行中断程序入口地址 RETI ;串行中断程序返回 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 主程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; START: MOV R0,#70H ;清70H-7AH共11个内存单元MOV R7,#0BH ;clr P3.7 ; CLEARDISP: MOV @R0,#00H ; INC R0 ; DJNZ R7,CLEARDISP ; MOV 20H,#00H ;清20H(标志用) MOV 7AH,#0AH ;放入"熄灭符"数据 MOV TMOD,#11H ;设T0、T1为16位定时器 MOV TL0,#0B0H ;50MS定时初值(T0计时用)MOV TH0,#3CH ;50MS定时初值 MOV TL1,#0B0H ;50MS定时初值(T1闪烁定时用)MOV TH1,#3CH ;50MS定时初值 SETB EA ;总中断开放 SETB ET0 ;允许T0中断 SETB TR0 ;开启T0定时器 MOV R4,#14H ;1秒定时用初值(50M S×20)START1: LCALL DISPLAY ;调用显示子程序 JNB P3.7,SETMM1 ;P3.7口为0时转时间调整程序SJMP START1 ;P3.7口为1时跳回START1 SETMM1: LJMP SETMM ;转到时间调整程序SETMM ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 1秒计时程序 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;T0中断服务程序 INTT0: PUSH ACC ;累加器入栈保护 PUSH PSW ;状态字入栈保护

基于单片机的数字时钟

郑州科技学院 《单片机原理及应用》课程设计

目 录 0 引言3 1 设计方案4 2 系统设计7 2.1 硬件原理12 2.2 软件原理16 3 实验与仿真19 4 结论21 参考文献22 附录1 程序23 附录2 仿真电路图26 0 引言 近年来,随着电子产品的发展,随着社会竞争的激烈,人们对数字时钟的要求越来越高。时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间,忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。 因此从人们的日常生活到工厂的自动控制,从民用时钟到科学发展所需的时钟,现代人对时间的精度和观察时间的方便有了越来越多的需求。人们要求随时随地都能快速准确的知道时间,并且要求时钟能够更直观、更可靠、价格更便宜。这种要求催生了新型时钟的产生。 除此之外,由于对社会责任的更多承担,人们要求所设计的产品能够产生尽量少的垃圾、能够消耗尽量少的能量。因此人们对时钟的又有

了体积小、功耗低的要求。 传统的机械表由于做工的高精细要求,造价的昂贵,材料的限制,时间指示精度的限制,使用寿命方面,以及其它方面的限制,已不能满足人们的需求。另外,近些年随着科技的发展和社会的进步,人们对时钟的要求也越来越高,而使得新型电子钟表成了大势所趋。 另外单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。 单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。 1 设计方案 1.1 任务及要求 ①通过单片机内定时器控制走时,准确持续走时,调时不影响走时。 ②在八个数码管上显示时、分、秒及两个小数点。 ③含有闹钟功能,可以选择闹钟开关,可以设定闹铃时间。 ④到达闹钟时刻蜂鸣器警报,可以关掉警报。 1.2 系统功能说明 电子钟的格式为:XX.XX.XX ,由左向右分别为:时、分、秒。完成显示由秒01一直加1至59,再恢复为00;分加1,由00至01,一直加1至59,再恢复00;时加1,时由00加至23之后秒、分、时全部清清零。该钟使用T0作250us的定时中断。 走时调整:走时过程中直接调整且不影响走时准确性,按下时间选择键对“时、分、秒”显示进行调整,每按一下时间加,即加1,时间减,即减1。

数字钟单片机显示时间按

小小电子闹钟生活学习良伴 ———一款电路极简的单片机电子钟设计详解 电路特点 这里介绍的电子钟,电路可称得上极简,它仅使用单片的20引脚单片机完成电子钟的全部功能,而笔者见到的其它设计方案均采用二片以上的多片IC实现。 电路见图1。 一片20引脚的单片机AT89C2051为电子钟主体,其显示数据从P1口分时输出,P3.0~3.3 则输出对应的位选通信号。由于LED数码管点亮时耗电较大,故使用了四只PNP型晶体管VT1~VT4进行放大。本来笔者还有一种更简的设计方案(见图2),可省去VT1~VT4及R1~R4八个元件,但这种设计由于单片机输出口的灌入电流有限(约20mA),数码管亮度较暗而不向读者介绍,除非你采用了高亮度的发光数码管。 P3.4、P3.5、3.7外接了三个轻触式按键,这里我们分别命名为:模式设定键set(P3.4)、时调整键hour(P3.5)、分调整键min(P3.7)。C1、R13组成上电复位电路。VT5及蜂鸣器Bz为闹时讯响电路。三端稳压器7805输出的5V电压供整个系统工作。此电子钟可与任何 9~20V/100mA的交直流电源适配器配合工作,适应性强。 电子钟功能 1.走时:通过模式设定键set选择为走时,U1、U2显示小时,U3、U4显示分。U2的小数点为秒点,每秒闪烁一次。 2.走时调整:通过模式设定键set选择为走时调整,按下hour键对U1、U2的走时“时”显示进行调整(每0.2秒递加1)。按下min键对U3、U4的走时“分”显示进行调整(每0.2秒递加1)。 3.闹时调整:通过模式设定键set选择为闹时调整,按下hour键对U1、U2的闹时“时”显示进行调整(每0.2秒递加1)。按下min键对U3、U4的闹时“分”显示进行调整(每0.2秒递加1)。 4.闹时启/停设定:通过模式设定键set选择为闹时启/停设定,按下min键U3的小数点点亮,闹时功能启动;按下hour键U3的小数点熄灭,闹时功能关停。 由于电路设计得极其简单,因此丰富的功能只能由软件完成,这里软件设计成为了关键。下面介绍软件设计要点。 图3为主程序状态流程。 图3 运行时建立的主要状态标志如下: flag—掉电标志。掉电后,flag内为一随机数;重新设定时间后flag内写入标志数55H。set—工作模式设定标志。 hour—走时“时”单元。 min—走时“分”单元。 sec—走时“秒”单元。 deda—走时5mS计数单元 t_hour—闹时“时”单元。 t_min—闹时“分”单元。 d_05s—0.5秒位标志。每秒钟的前0.5秒置1,后0.5秒置0,以使秒点闪烁。 o_f—闹时启/停位标志。闹时启动置1,闹时关停置0。 另外将定时器T0设定为5mS的定时中断。这里晶振频率为12MHz,因此5mS的初值为 -5000,但实际上程序还要作其它运算,使得时间偏长,经调整为-4800后试验刚好。计时单元deda每次中断均加1。走时函数判断deda>=200时即令秒单元sec加1。同理秒单元sec

单片机实时时钟电路的原理及应用

单片机实时时钟电路的原理及应用 1 引言现在流行的串行时钟电路很多,如DS1302、DS1307、PCF8485 等。这些电路的接口简单、价格低廉、使用方便,被广泛地采用。本文介绍的 实时时钟电路DS1302 是DALLAS 公司的一种具有涓细电流充电能力的电路, 主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并 且可以关闭充电功能。采用普通32.768kHz 晶振。 2 DS1302 的结构及工作原理DS1302 是美国DALLAS 公司推出的一种高性能、低功耗、带RAM 的实 时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补 偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU 进行同步通信,并可 采用突发方式一次传送多个字节的时钟信号或RAM 数据。DS1302 内部有一个31×8的用于临时性存放数据的RAM 寄存器。DS1302 是DS1202 的升级产品,与DS1202 兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电 源进行涓细电流充电的能力。 2.1 引脚功能及结构图1 示出DS1302 的引脚排列,其中Vcc1 为后备电源,VCC2 为主电源。在主电源关闭的情况下,也能 保持时钟的连续运行。DS1302 由Vcc1 或Vcc2 两者中的较大者供电。当Vcc2 大于Vcc1+0.2V 时,Vcc2 给DS1302 供电。当Vcc2 小于Vcc1 时,DS1302 由Vcc1 供电。X1 和X2 是振荡源,外接32.768kHz 晶振。RST 是复位/片选线,通过把RST 输入驱动置高电平来启动所有的数据传送。RST 输入有两种功能:首先,RST 接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST 提供终止单字节或多字节数据的传送手段。当RST 为高电平时,所有的数据传 送被初始化,允许对DS1302 进行操作。如果在传送过程中RST 置为低电平, 则会终止此次数据传送,I/O 引脚变为高阻态。上电运行时,在Vcc≥2.5V之前,RST 必须保持低电平。只有在SCLK 为低电平时,才能将RST 置为高电平。

(完整word版)基于单片机电子时钟的制作

毕业综合实训概述 实训目的: 对单片机电子时钟的制作及设计原理的掌握,利用本次实训对所学的理论课程进行实际论证,更好的掌握理论知识。能够更好的运用在实践当中。 实训时间: 2015年9月21日-2015年11月8日 实训要求: 1.独立完成实物的制作及理解设计原理; 2.分析及制作程序流程图; 3. 绘制电路图; 4.了解个元器件在电路中的作用。

目录 1 引言 (1) 1.1选题背景 (1) 1.2设计原理 (1) 1.3单片机简介 (2) 1.4单片机的发展历史 (2) 1.5单片机的应用领域及发展趋势 (2) 2 方案议论 (5) 2.1 设计要求 (5) 2.2 系统描述 (5) 2.3 设计方案 (5) 2.3.1 集成电路 (5) 2.3.2 单片机的最小系统 (6) 2.3.3结论 (7) 3 硬件设计 (8) 3.1硬件结构 (8) 3.2中心控制模块 (8) 3.3电源模块 (11) 3.4控制电路 (12) 3.5复位电路 (12) 4软件设计 (15) 4.1电子时钟的设计原理 (15) 4.2 软件设计流程 (15) 5 总结 (17) 致谢 (18) 参考文献 (18) 附录电子时钟程序 (19)

1 引言 1.1选题背景 单片微型计算机简称单片机,是典型的嵌入式微控制器(Microcontroller Unit),常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。单片机由运算器,控制器,存储器,输入输出设备构成,相当于一个微型的计算机(最小系统),和计算机相比,单片机缺少了外围设备等。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。 INTEL的8080是最早按照这种思想设计出的处理器,当时的单片机都是8位或4位的。其中最成功的是INTEL的8051,此后在8051上发展出了MCS51系列单片机系统。因为简单可靠而性能不错获得了很大的好评。尽管2000年以后ARM 已经发展出了32位的主频超过300M的高端单片机,直到现在基于8051的单片机还在广泛的使用。现代人类生活中所用的几乎每件有电子器件的产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电子产品中都含有单片机。汽车上一般配备40多片单片机,复杂的工业控制系统上甚至可能有数百片单片机在同时工作! 利用单片机实现电子时钟有很多优点,例如外部电路简单,控制方便等,因而备受广大单片机爱好者的喜爱。通过电子时钟的制作方案,掌握C语言的编程方法。并熟练的运用89S52单片机定时器准确的实现时间的递进,按下按键可以设置时间,最重要的是自己还可以通过程序设计输入自己需要的定点时间。 1.2设计原理 通过单片机对时间准确的控制,实现时间的递进。 定时器:时钟周期T是时序中最小的时间单位,具体计算的方法是1/时钟源频率,我们KST-52单片机开发板上用的晶振是11.0592M,那么我们对于这个单

单片机电子时钟程序

程序开始 ORG 0000H AJMP MAIN ORG 000BH AJMP CLOCK ORG 0100H 主程序开始: MAIN: MOV SP,#70H MOV 6EH,#00H ;显示缓存器初始值设定 MOV 6DH,#00H MOV 6CH,#00H MOV 6BH,#00H MOV 6AH,#00H MOV 69H,#00H MOV 50H,#00H ;秒,分,小时初始值设定 MOV 51H,#00H MOV 52H,#00H MOV DPTR,#0F003H ;8255端口定义,PA,PB为输出 MOV A,#80H MOVX @DPTR,A MOV 4FH,#00H MOV TMOD,#01H ;定时器T0及TL0,TH0初始值设定 MOV TH0,#3CH MOV TL0,#0B0H SETB EA ;开总中断 SETB ET0 ;开定时器中断 SETB TR0 循环程序开始,并显示时间: START: MOV A,50H LCALL BCD MOV 6AH,A ;显示秒十位 MOV 69H,B ;显示秒个位 MOV A,51H LCALL BCD MOV 6CH,A ;显示分十位 MOV 6BH,B ;显示分个位 MOV A,52H LCALL BCD ;调用十六进制至BCD码转换子程序 MOV 6EH,A MOV 6DH,B LCALL DIS ;调用显示子程序 LCALL KEY ;调用键盘子程序 AJMP START ;主程序结束

BCD: MOV B,#0AH ;BCD码转换子程序 DIV AB RET CLOCK: PUSH ACC ;保护现场 PUSH PSW CLR TR0 MOV TH0,#3CH ;定时参数重新设置 MOV TL0,#0B0H SETB TR0 INC 4FH ;100ms单元加1 MOV A,4FH CJNE A,#0AH,D0 ;100ms单元=10,就秒单元加1 MOV 4FH,#00H ;100ms单元内容清0 MOV A,50H ADD A,#01H ;秒单元加1 MOV 50H,A CJNE A,#3CH,D0 ;秒单元内容=60,则秒单元清0 MOV 50H,#00H MOV A,51H ;分,时单元代码 ADD A,#01H MOV 51H,A CJNE A,#3CH,D0 MOV 51H,#00H MOV A,52H ADD A,#01H LCALL RING ;报警子程序 MOV 52H,A CJNE A,#18H,D0 MOV 52H,#00H D0: POP PSW ;出栈,退出中断子程序 POP ACC RETI RING: MOV R3,A CLR P1.0 LCALL DELL50 SETB P1.0 LCALL DELL50 DJNZ R3,RING RET 键盘子程序: KEY: JB P1.7,MSET ;秒设定子程序 LCALL DELL ;防抖动延时 JB P1.7,MSET INC 50H

基于51单片机的电子时钟设计源程序

#include unsigned char DispBuf[6]; //时间显示缓冲区 unsigned char Disdate[6]; //日期显示缓冲区 unsigned char DisSec[6]; //秒表缓冲区 struct //设定时间结构体 { unsigned char Hour; unsigned char Min; unsigned char Sec; }Time; struct //设定日期结构体 { unsigned char Year; unsigned char Month; unsigned char Days; }Date; struct //设定毫秒结构体 { unsigned char Minite; unsigned char Second; unsigned char MilliSec; }Millisecond; unsigned char point=0; unsigned char point1=0; unsigned char point2=0; unsigned char Daymount; unsigned char Daymount1; unsigned char T0_Int_Times=0; //中断次数计数变量 unsigned char Flash_flag=0; //闪烁标志,每半秒闪烁 unsigned char Flash_flag1=0; //闪烁标志,每半秒闪烁 unsigned char DisPlay_Back=0; //显示缓冲区更新备份,如果显示缓冲区更新则跟闪烁标志不一致 unsigned char DisPlay_Back1=0; //显示缓冲区更新备份,如果显示缓冲区更新则跟闪烁标志不一致 unsigned char i,j; unsigned char SetMillisecond; //启动秒表 code unsigned char LEDCode[]={0x01,0xd7,0x22,0x82,0xc4,0x88,0x08,0xc1,0x00,0x80}; //数码管显示代码 code unsigned char ErrorLEDCode[]={0x01,0xe7,0x12,0x82,0xc4,0x88,0x08,0xc1,0x00,0x80};//绘制错误图纸的数码管显示代码 void DisPlayBuf(); void ChangeToDispCode(); void ChangeToDispCode1(); void changedate(); // 调日期 void displaydate(); // 显示日期 void makedays(); //确定每个月的日期 void runSec();

基于单片机的简易时钟设计(毕业设计)

广西理工职业技术学院 毕业设计(论文)说明书题目:简易电子时钟设计 系别:电气工程系 专业班级:11机电2 姓名:黄武锦 学号:20112323 指导教师:黎有好 二〇一三年七月二十四日

目录 1.概论 (2) 2.整体设计思路 (3) 2.1硬件各部分所能完成的功能 (4) 2.2系统工作原理 (5) 2.3时钟各功能分析及图解 (5) 2.4.1电路各功能图解分析 (5) 2.4.2电路功能使用说明 (8) 3. 软件设计思路 (9) 3.1 主程序模块 (9) 3.2 数码管动态扫描模块 (10) 3.3 当前时间计时模块 (10) 3.4 闹钟输入输出模块 (11) 3.5 当前时间调整模块 (13) 3.6复位模块 (14) 4.系统的调试和性能分析 (15) 4.1系统的调试方法 (15) 4.1.1输入按键的调试 (15) 4.1.2复位电路的调试 (15) 4.1.3显示电路的调试 (15) 4.1.4整个系统的联调 (15) 4.2心得体会 (16) 参考文献 (16) 附录 (17) 附录A 系统原理图 (17) 附录B 程序源代码 (18) 电气信息学院课程设计评分表 (29)

1.概论 单片机系统作为一种典型的嵌入式系统,其系统设计包括硬件电路设计和软件编程设计两个方面,其调试过程一般分为软件调试、硬件测试、系统调试3个过程。如果采用单片机系统的虚拟仿真软件——Proteus,则不用制作具体的电路板也能够完成以上工作。数字钟是采用数字电路实现对时,分,秒,数字显示的计时装置,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表的报时功能。数字钟已成为人们日常生活中的必需品,广泛应用于家庭、车站、码头、剧院、办公室等场所,给人们的生活、学习、工作带来极大的方便[4]。不仅如此,在现代化的进程中,也离不开电子钟的相关功能和原理,比如机械手的控制、家务的自动化、定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。而且是控制的核心部分。因此,研究数字钟及扩大其应用,有着非常现实的意义。 电子钟在工业控制和日常生活中是很重要的,它不仅可以用于计时、提醒又可用于对机器的控制,在自动化的过程中必然有电子钟的参与,因此电子钟的应用会越来越广泛。而且向着精确、低功耗、多功能发展。基于单片机设计的数字钟精确度较高,因为在程序的执行过程中,任何指令都不影响定时器的正常计数,即便程序很长也不会影响中断的时间。从而,使数字钟的精度仅仅取决于单片机的产生机器周期电路和定时器硬件电路的精确度。另外,程序较为简洁,具有可靠性和较好的可读性。如果我们想将它应用于实时控制之中,只要对上述程序和硬件电路稍加修改,便可以得到实时控制的实用系统,从而应用到实际工作与生产中去。 数字电子钟的设计方法有多种,例如,可用中小规模集成电路组成电子钟,也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟还可以利用单片机来实现电子钟等等。这些方法都各有特点,其中,利用单片机实现的电子钟具有编程灵活,便于功能扩充,精确度高等特点。

单片机带温度显示的红外遥控数字钟课程设计报告

单片机原理及应用课程设计报告 课题名称带温度显示的红外遥控数字钟 专业电气自动化 班级 B1031 学号 29 姓名武 X X 指导教师谢 X X 2012-6-4

目录 1.设计题目及要求 (1) 2.设计方案 (1) 2.1 主控制器型 (1) 2.2 DS1302实时显示时间的软硬件 (2) 2.3 显示方案 (2) 2.4 报警方案 (2) 2.5 键盘接口的选择 (3) 2.6 红外通信的基本原理 (3) 2.6.1 红外通信接口的硬件电路设计 (3) 2.6.2 红外发送器及原理 (3) 2.6.3 红外遥控电路原理分析 (4) 3.主要电路与程序设计 (5) 3.1 系统硬件的结构框图 (5) 3.2 单片机最小系统设计 (5) 3.3 温度电路设计 (6) 3.4 显示电路设计 (6) 3.5 声光报警电路 (6) 3.6 实时时钟模块 (7) 3.7 红外线接收电路 (7) 4.软件设计 (8) 4.1 总模块的流程图 (8) 4.2 部分主要模块的流程图 (9) 4.3 温度转换核心及其算法 (11) 4.3.1 DS18B20的内部结构 (11) 4.3.2 DS18B20的内存结构 (11) 4.3.3 DS18B20的测温功能 (11) 4.3.4 温度转换算法及分析 (12) 5.调试结果记录及分析 (15) 5.1 数码管显示的测试方法和结果 (15) 5.2 DS18B20的测试方法和结果 (16) 5.3 键盘程序的测试方法和结果 (16) 5.4 RS232模块的测试方法和结果 (16) 5.5产品最终调试 (16) 6.结论 (16) 7.参考文献 (17)

单片机—实时时钟实验(汇编版)

实验二实时时钟实验 一、实验目的 1)数码管动态显示技术 2)定时器的应用 3)按键功能定义 二、实验实现的功能 实时时钟,可以设定当前时间,完成钟表功能(四位数码管分别显示分钟和秒)。 三、系统硬件设计

四、系统软件设计 说明:1键进入和退出设置模式,4键选择调分或秒,2键加,3键减。 P1M1 EQU 91H P1M0 EQU 92H SEC0 DA TA 30H ;秒显示 SEC1 DA TA 31H MIN0 DA TA 32H ;分显示 MIN1 DA TA 33H DELAY_1 DA TA 34H ;延时参数 DELAY_2 DA TA 35H ;延时参数 ORG 0000H LJMP 0030H ORG 001BH LJMP INTR0 ORG 0030H MAIN: MOV P1M1,#00000000B MOV P1M0,#11111111B MOV R7,#000 ;记中断次数,R7=100为1秒 MOV R6,#000 ;记秒 MOV R5,#000 ;记分 MOV R4,#0FFH ;按键位置 MOV R1,#000 ;确定是否有按键按下的参数 MOV TMOD,#10H ;定时器初始化 MOV TH1,#0D8H ;定时时间10ms MOV TL1,#0F0H SETB EA SETB ET1 SETB TR1 LOOP0: CJNE R4,#000H,LOOP01 ;实时时钟显示 MOV R4,#0FFH LJMP LOOP1 LOOP01: LCALL TIME

LCALL KEY0 LJMP LOOP0 LOOP1: CJNE R4,#000H,LOOP11 ;调秒MOV R4,#0FFH LJMP LOOP0 LOOP11: CJNE R4,#003H,LOOP12 MOV R4,#0FFH LJMP LOOP2 LOOP12: CJNE R4,#001H,LOOP13 MOV R4,#0FFH INC R6 LOOP13: CJNE R6,#060,LOOP14 MOV R6,#000H LOOP14: CJNE R4,#002H,LOOP16 MOV R4,#0FFH CJNE R6,#000,LOOP15 MOV R6,#060 LOOP15: DEC R6 LOOP16: LCALL TIME LCALL KEY1 LJMP LOOP1 LOOP2: CJNE R4,#000H,LOOP21 ;调分MOV R4,#0FFH LJMP LOOP0 LOOP21: CJNE R4,#003H,LOOP22 MOV R4,#0FFH LJMP LOOP1 LOOP22: CJNE R4,#001H,LOOP24 MOV R4,#0FFH INC R5 LOOP23: CJNE R5,#060,LOOP24 MOV R5,#000H LOOP24: CJNE R4,#002H,LOOP26 MOV R4,#0FFH CJNE R5,#000,LOOP25 MOV R5,#060

单片机仿真课程设计基于单片机的实时时钟

基于51系列单片机及DS1302时钟芯片的实时时钟仿真设计 一、课程设计目的意义 通过本次课程设计可以灵活运用单片机的基础知识,依据课程设计内容,能够完成从硬件电路图设计,到软件编程及系统调试实现系统功能,完成课程设计,加深对单片机基础知识的理解并灵活运用。 二、实现目标 本设计主要为实现一款可正常显示时钟/日历的实时电子时钟。对当前电子钟开发手段进行了比较和分析,最终确定了采用单片机技术实现电子时钟。本设计应用AT89C52芯片作为核心,LCD显示屏,使用DS1302实时时钟日历芯片完成时钟/日历的基本功能。这种实现方法的优点是电路简单,性能可靠,实时性好,时间精确,操作简单,编程容易。三、硬件设计 本设计采用具有32根I/O引脚的AT89C52单片机。AT89C52单片机是一款低功耗,低电压,高性能CMOS 8位单片机,片内含4KB(可经受1000次擦写周期)的FLASH可编程可反复擦写的只读程序存储器(EPROM),器件采用CMOS工艺和ATMEI公司的高密度、非易失性存储器(NURAM)技术制造,其输出引脚和指令系统都与MCS-52兼容。片内的FLASH存储器允许在系统内可改编程序或用常规的非易失性存储器编程器来编程。因此,AT89C52是一种功能强,灵活性高且价格合理的单片机,可方便的应用在各个控制领域。 AT89C52具有以下主要性能: 1.4KB可改编程序Flash存储器; 2.全静态工作:0——24Hz; 3.128×8字节内部RAM; 4.32个外部双向输入/输出(I/O)口; 5.6个中断优先级; 2个16位可编程定时计数器; 6.可编程串行通道; 7.片内时钟振荡器。 DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟日历芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字

数字钟在单片机上的实现(汇编语言)

武汉大学电子信息学院电子系统综合设计课程论文数字钟在单片机上的实现(汇编语言) 专业: 年级: 作者:_____________ _____________ 指导教师: 2012年06 月29 日

目录 1 作品的背景与意义 (1) 2 功能指标设计 (1) 2.1设计要求 (1) 2.1.1 基本要求 (1) 2.1.2 拓展要求 (1) 2.2 功能设计方案 (1) 3 作品方案设计 (2) 3.1总体方案的选择 (2) 3.2模块划分及分析 (3) 3.3 单模块设计流程图 (3) 4 模块源程序 (7) 5 系统测试 (35) 测试数据: (36) 6 心得体会 (36)

1 作品的背景与意义 数字钟是一种用数字电路技术实现时、分、秒计时的钟表。与机械钟相比具有更高的准确性和直观性,具有更长的使用寿命,已得到广泛的使用。数字钟的设计方法有许多种,例如可用中小规模集成电路组成电子钟,也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟,还可以利用单片机来实现电子钟等等。这些方法都各有其特点,其中利用单片机实现的电子钟具有编程灵活,以便于功能的扩展。 2 功能指标设计 2.1设计要求 2.1.1 基本要求 1.设计一个精确的1秒定时器; 2.根据1秒定时器,设计一个带小时、分钟、秒的时钟,并将小时、分钟、秒显 示在LED上; 3.设计小时、分钟、秒的修改按键,可分别调整小时、分钟、秒(按键设计参考 电子表)。 2.1.2 拓展要求 1.增加小时、分钟、秒的键盘直接修改功能; 2.设计闹钟功能,最多支持5个闹钟,可分别查看和修改闹钟时间,可分别设置 闹钟开关; 3.增加万年历功能。 2.2 功能设计方案 1. 实现正常走时(秒-分-时-日-月-年进位); 2. 能够设置时间和日期; 3. 能够自动区分平闰年和大小月及2月; 4. 具有5个闹钟及其设置功能; 5. 在任何设置状态下,修改位会闪烁显示。

基于单片机的时钟设计

随着现代生活的推进,电子时钟在人们的生活中已经普及,本课题的主要内容就是结合单片机的强大功能,在一块普通的电子时钟集成多种功能,方便人们的日常生活,该功能是通过单片机、8 段数码管以及一些简单辅助电路实现的。由于之前没有独立做过单片机实现多功能电子时钟方面的内容,所以在做设计时总会遇见很多问题,本次设计是在结合老师的指导及同学的帮助下完成的,并通过在网上所查的大量资料及单片机设计中常见的电路而构思出来的。单片计算机即单片微型计算机。由RAM ,ROM,CPU 构成,定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。51 系列单片机是各单片机中最为典型和最有代表性的一种。这次课程设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。本设计主要设计了一个基于A T89C51单片机的电子时钟。并在数码管上显示相应的时间。并通过一个控制键用来实现时间的调节和是否进入省电模式的转换。该方法仿真效果真实、准确,节省了硬件资源。

1.主要功能 用4位LED显示时、分、秒值,以24小时计时方式工作,可用开关调整时间值和闹铃时间。 2.硬件设计 如下图所示,本次设计时钟电路,使用AT89C51单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂,使用键盘键上的按键来调整时钟的时、分、秒,用一蜂鸣器来进行定时提醒,同时使用C语言程序来控制整个时钟显示,使得编程变得更容易,这样通过四个模块:键盘、芯片、蜂鸣器、显示屏即可满足设计要求。

单片机电路如下:

3.软件设计: (一)主要功能及原理数字式电子钟用集成电路计时时,译码代替机械式传动,用LED 显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。该电子时钟由A T89C51、四段数码管等构成,采用晶振电路作为驱动电路, 由延时程序和循环程序产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。而电路中唯一的一个控制键却拥有多种不同的功能,按下又松开,可以实现屏蔽数码管显示的功能,达到省电的目的;直接按下,则可以通过按键实现分钟的累加,每按一次分钟加一;而另一个键按下,则可实现小时的调节,同样每按一次小时加一。 (二)通过对多种单片机性能的分析,最终认为A T89C51是最理想的电子时钟开发芯片。A T89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,单片机的外部扩展能力很强。在内部的各种功能部件不能满足应用的需求时, 均可在外部进行扩展,与许多通用的微机接口芯片兼容,给应用系统设计带来了很大的方便。

8位数码管显示电子时钟c51单片机程序

8位数码管显示电子时钟c51单片机程序 时间:2012-09-10 13:52:26 来源:作者: /* 8位数码管显示时间格式 05—50—00 标示05点50分00秒 S1 用于小时加1操作 S2 用于小时减1操作 S3 用于分钟加1操作 S4 用于分钟减1操作 */ #include sbit KEY1=P3^0; //定义端口参数 sbit KEY2=P3^1; sbit KEY3=P3^2; sbit KEY4=P3^3; sbit LED=P1^2; //定义指示灯参数 code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴极数码管0—9 unsigned char StrTab[8]; //定义缓冲区 unsigned char minute=19,hour=23,second; //定义并初始化为 12:30:00 void delay(unsigned int cnt) { while(--cnt); } /******************************************************************/ /* 显示处理函数 */ /******************************************************************/ void Displaypro(void) { StrTab[0]=tab[hour/10]; //显示小时 StrTab[1]=tab[hour%10]; StrTab[2]=0x40; //显示"-" StrTab[3]=tab[minute/10]; //显示分钟 StrTab[4]=tab[minute%10]; StrTab[5]=0x40; //显示"-" StrTab[6]=tab[second/10]; //显示秒 StrTab[7]=tab[second%10]; } main()

相关文档