单片机_数字钟

合集下载

单片机制作的6位数字钟

单片机制作的6位数字钟

单片机制作的6位数字钟常见的电子钟程序由显示部分,计算部分,时钟调整部分构成。

时钟的基本显示原理:时钟开始显示为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秒定时用初值(50MS×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 ;状态字入栈保护CLR ET0 ;关T0中断允许CLR TR0 ;关闭定时器T0MOV A,#0B7H ;中断响应时间同步修正ADD A,TL0 ;低8位初值修正MOV TL0,A ;重装初值(低8位修正值)MOV A,#3CH ;高8位初值修正ADDC A,TH0 ;MOV TH0,A ;重装初值(高8位修正值)SETB TR0 ;开启定时器T0DJNZ R4, OUTT0 ;20次中断未到中断退出ADDSS: MOV R4,#14H ;20次中断到(1秒)重赋初值MOV R0,#71H ;指向秒计时单元(71H-72H)ACALL ADD1 ;调用加1程序(加1秒操作)MOV A,R3 ;秒数据放入A(R3为2位十进制数组合)CLR C ;清进位标志CJNE A,#60H,ADDMM ;ADDMM: JC OUTT0 ;小于60秒时中断退出ACALL CLR0 ;大于或等于60秒时对秒计时单元清0 MOV R0,#77H ;指向分计时单元(76H-77H)ACALL ADD1 ;分计时单元加1分钟MOV A,R3 ;分数据放入ACLR C ;清进位标志CJNE A,#60H,ADDHH ;ADDHH: JC OUTT0 ;小于60分时中断退出ACALL CLR0 ;大于或等于60分时分计时单元清0 MOV R0,#79H ;指向小时计时单(78H-79H)ACALL ADD1 ;小时计时单元加1小时MOV A,R3 ;时数据放入ACLR C ;清进位标志CJNE A,#24H,HOUR ;HOUR: JC OUTT0 ;小于24小时中断退出ACALL CLR0 ;大于或等于24小时小时计时单元清0 OUTT0: MOV 72H,76H ;中断退出时将分、时计时单元数据移MOV 73H,77H ;入对应显示单元MOV 74H,78H ;MOV 75H,79H ;POP PSW ;恢复状态字(出栈)POP ACC ;恢复累加器SETB ET0 ;开放T0中断RETI ;中断返回;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 闪动调时程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;T1中断服务程序,用作时间调整时调整单元闪烁指示INTT1: PUSH ACC ;中断现场保护PUSH PSW ;MOV TL1, #0B0H ;装定时器T1定时初值MOV TH1, #3CH ;DJNZ R2,INTT1OUT ;0.3秒未到退出中断(50MS中断6次)MOV R2,#06H ;重装0.3秒定时用初值CPL 02H ;0.3秒定时到对闪烁标志取反JB 02H,FLASH1 ;02H位为1时显示单元"熄灭"MOV 72H,76H ;02H位为0时正常显示MOV 73H,77H ;MOV 74H,78H ;MOV 75H,79H ;INTT1OUT: POP PSW ;恢复现场POP ACC ;RETI ;中断退出FLASH1: JB 01H,FLASH2 ;01H位为1时,转小时熄灭控制MOV 72H,7AH ;01H位为0时,"熄灭符"数据放入分MOV 73H,7AH ;显示单元(72H-73H),将不显示分数据MOV 74H,78H ;MOV 75H,79H ;AJMP INTT1OUT ;转中断退出FLASH2: MOV 72H,76H ;01H位为1时,"熄灭符"数据放入小时MOV 73H,77H ;显示单元(74H-75H),小时数据将不显示MOV 74H,7AH ;MOV 75H,7AH ;AJMP INTT1OUT ;转中断退出;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 加1子程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ADD1: MOV A,@R0 ;取当前计时单元数据到ADEC R0 ;指向前一地址SWAP A ;A中数据高四位与低四位交换ORL A,@R0 ;前一地址中数据放入A中低四位ADD A,#01H ;A加1操作DA A ;十进制调整MOV R3,A ;移入R3寄存器ANL A,#0FH ;高四位变0MOV @R0,A ;放回前一地址单元MOV A,R3 ;取回R3中暂存数据INC R0 ;指向当前地址单元SWAP A ;A中数据高四位与低四位交换ANL A,#0FH ;高四位变0MOV @R0,A ;数据放入当削地址单元中RET ;子程序返回;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 清零程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............;; 时钟调整程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;当调时按键按下时进入此程序SETMM: cLR ET0 ;关定时器T0中断CLR TR0 ;关闭定时器T0LCALL DL1S ;调用1秒延时程序JB P3.7,CLOSEDIS ;键按下时间小于1秒,关闭显示(省电)MOV R2,#06H ;进入调时状态,赋闪烁定时初值SETB ET1 ;允许T1中断SETB TR1 ;开启定时器T1SET2: JNB P3.7,SET1 ;P3.7口为0(键未释放),等待SETB 00H ;键释放,分调整闪烁标志置1SET4: JB P3.7,SET3 ;等待键按下LCALL DL05S ;有键按下,延时0.5秒JNB P3.7,SETHH ;按下时间大于0.5秒转调小时状态MOV R0,#77H ;按下时间小于0.5秒加1分钟操作LCALL ADD1 ;调用加1子程序MOV A,R3 ;取调整单元数据CLR C ;清进位标志CJNE A,#60H,HHH ;调整单元数据与60比较HHH: JC SET4 ;调整单元数据小于60转SET4循环LCALL CLR0 ;调整单元数据大于或等于60时清0CLR C ;清进位标志AJMP SET4 ;跳转到SET4循环CLOSEDIS: SETB ET0 ;省电(LED不显示)状态。

基于单片机的多功能数字时钟设计

基于单片机的多功能数字时钟设计

技术平台采用碱性电解液电沉积活性锌粉,选取电解液浓度1.25g/cm3,电流密度150mA/cm2,电解槽温度只需控制在室温,锌粉洗涤后真空干燥,所制得的锌粉比表面积大于0.8m2/g,具有较高的电化学活性,能满足锌银电池生产需要,生产效率也达到批量生产要求。

参考文献:[1]侯新刚,王胜,王玉棉.超细活性锌粉的制备与表征[J].粉末冶金工业,2004,14(1):10-13.[2]李永祥,黄孟阳,任锐.电解法制备树枝状锌粉工艺研究[J].四川有色金属,2011,(3):45-50.[3]胡会利,李宁,程瑾宁,等.电解法制备超细锌粉的工艺研究[J].粉末冶金工业,2007,17(1):24-29.基于单片机的多功能数字时钟设计刘晓萌(安徽职业技术学院铁道学院/合肥铁路工程学校,安徽 合肥 230011)摘 要:常见的数字钟有时间、闹钟等功能。

本文基于单片机、温度传感器、液晶显示屏、时钟芯片等硬件设计了多功能数字时钟,软件部分采用C语言编程实现。

该多功能数字时钟包含万年历、节日、节气、温度信息显示等功能,并且在断电的情况下也能正常工作。

关键词:单片机;多功能数字时钟;C语言编程0 引言人类对于时间的需求从古到今始终存在。

古代有浑天仪、日晷,近代出现了机械时钟。

如今,传统的计时工具,甚至是电子钟都已经满足不了人们多元化的时间需求。

数字时钟具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的应用空间[1]。

使用数字时钟,用户可以获取精确到秒的时间信息,或是对时钟进行自定义的操作,为现代社会提供了极大的方便[2]。

然而,传统的数字时钟只包含时间显示、闹钟等功能,存在一定的局限性。

本文基于单片机、温度传感器、液晶显示屏、时钟芯片、键盘模块、闹铃模块和电力支持模块等硬件,设计了一款多功能的数字时钟。

1 系统硬件组成数字时钟的硬件由七个模块组成,包括:STC89C52单片机主控芯片、DS1302时钟芯片、DS18B20温度芯片、LCD1602液晶显示模块、闹铃模块、键盘模块和电源。

单片机数字钟实习报告

单片机数字钟实习报告

一、实习目的随着电子技术的飞速发展,单片机作为一种重要的电子元件,在工业、医疗、通讯等领域得到了广泛的应用。

为了更好地掌握单片机的原理和应用,提高动手能力,我们选择了单片机数字钟作为实习项目。

通过本次实习,我们旨在掌握单片机的编程、调试、硬件连接等方面的知识,实现数字时钟的显示与控制。

二、实习内容1. 单片机数字钟硬件设计(1)选用AT89C51单片机作为核心控制单元,具有丰富的片上资源,方便编程和调试。

(2)采用LCD1602液晶显示屏,显示时间、日期等信息。

(3)使用DS1302实时时钟芯片,实现时间的存储和更新。

(4)选用按键作为输入设备,实现时间的调整和设置。

(5)选用蜂鸣器作为报警设备,实现定时报警功能。

2. 单片机数字钟软件设计(1)编写主程序,实现系统初始化、时间显示、按键扫描、时间调整等功能。

(2)编写中断服务程序,实现DS1302时钟芯片的读写、按键消抖等功能。

(3)编写子程序,实现时间的计算、格式化、显示等功能。

3. 单片机数字钟调试与测试(1)连接电路,检查各个模块的连接是否正确。

(2)编写程序,将程序烧录到单片机中。

(3)调试程序,确保程序运行正常。

(4)测试各个功能模块,如时间显示、按键调整、定时报警等。

三、实习过程1. 硬件设计(1)根据设计要求,绘制电路原理图。

(2)购买所需元器件,进行焊接。

(3)组装电路板,连接各个模块。

2. 软件设计(1)编写程序,采用C语言进行编程。

(2)使用Keil软件进行编译、烧录。

(3)在仿真软件Proteus中进行仿真,验证程序的正确性。

3. 调试与测试(1)连接电路,检查各个模块的连接是否正确。

(2)编写程序,将程序烧录到单片机中。

(3)调试程序,确保程序运行正常。

(4)测试各个功能模块,如时间显示、按键调整、定时报警等。

四、实习总结1. 通过本次实习,我们掌握了单片机的编程、调试、硬件连接等方面的知识。

2. 学会了使用LCD1602液晶显示屏、DS1302实时时钟芯片、按键等元器件。

单片机数字钟工作原理

单片机数字钟工作原理

单片机数字钟工作原理
单片机数字钟是一种通过单片机控制数字时钟的设备。

单片机是一种高度集成的电子芯片,具有非常强大的计算和控制能力。

在数字钟中,单片机负责控制时间数码管的显示和计时功能。

具体来说,单片机数字钟的工作原理如下:
1. 时钟电路:单片机数字钟中使用的时钟电路通常是晶体振荡器。

晶体振荡器会产生非常稳定的频率,用于单片机的计时和控制。

2. 计时功能:单片机通过时钟电路来计时。

当单片机启动时,它会从时钟电路中读取当前的时间,然后根据程序中设定的规则不停地更新时间。

单片机数字钟通常会具有秒、分、时等多个计时功能,可以显示当前的精确时间。

3. 显示功能:单片机数字钟通过数码管来显示时间。

数码管是一种常见的显示器件,可以显示数字、字母等信息。

单片机通过控制数码管的亮灭来显示当前时间。

4. 控制功能:单片机数字钟还具有控制功能。

例如,可以通过按钮来调整时间、闹钟等功能。

单片机还可以控制数码管的亮度、闪烁等效果,以及声光报警等功能。

综上所述,单片机数字钟是一种功能强大、精确可靠的电子设备,广泛应用于家庭、办公室、实验室等场合。

- 1 -。

基于C51单片机的数字时钟课程设计(C语言带闹钟)

基于C51单片机的数字时钟课程设计(C语言带闹钟)

单片机技术课程设计数字电子钟学院:班级:姓名:学号:教师:摘要电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。

所以设计一个简易数字电子钟很有必要。

本电子钟采用AT89C52单片机为核心,使用12MHz 晶振与单片机AT89C52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。

该电子钟设有四个按键KEY1、KEY2、KEY3、KEY4和KEY5键,进行相应的操作就可实现校时、定时、复位功能。

具有时间显示、整点报时、校正等功能。

走时准确、显示直观、运行稳定等优点。

具有极高的推广应用价值。

关键词:电子钟 AT89C52 硬件设计软件设计目录NO TABLE OF CONTENTS ENTRIES FOUND.一、数字电子钟设计任务、功能要求说明及方案介绍1.1 设计课题设计任务设计一个具有特定功能的电子钟。

具有时间显示,并有时间设定,时间调整功能。

1.2 设计课题的功能要求说明设计一个具有特定功能的电子钟。

该电子钟上电或按键复位后能自动显示系统提示符“d.1004-22”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从12时59分0秒开始运行,进入时钟运行状态;按电子钟S5键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按S5键再次进入时钟运行状态。

1.3 设计课的设计总体方案介绍及工作原理说明本电子钟主要由单片机、键盘、显示接口电路和复位电路构成,设计课题的总体方案如图1所示:图1-1总体设计方案图本电子钟的所有的软件、参数均存放在AT89C52的Flash ROM和内部RAM 中,减少了芯片的使用数量简化了整体电路也降低了整机的工作电流。

键盘采用动态扫描方式。

利用单片机定时器及计数器产生定时效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据,同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。

单片机数字钟设计总结

单片机数字钟设计总结

单片机数字钟设计总结第一篇:单片机数字钟设计总结单片机数字钟设计总结经过一周的课程设计,我收获颇多,有深刻的心得体会。

实训让我们受益匪浅。

首先是关于单片机方面的。

我们学到了许多关于单片机系统开发的知识,从最开始选题到最后的结题,更使我们得到了充分的锻炼。

其次,它让我体会到了什么才是teamwork spirit。

一如:团队管理的经验、团队意识的提升和协调能力等等,这些都会让我们终身受益。

通过此次课程设计,使我更加扎实的掌握了有关电子线路单片机方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查我终于找出了问题所在,也暴露出了前期我在这方面的知识欠缺和经验不足。

实践才能出真知,实践才是检验真理的唯一标准,唯有通过亲自动手制作,才能令我们掌握的知识不再是一些纸上谈兵的东西。

在这次的课程设计中,我们遇到了很多困难,过程很艰难,但是我们都克服了,这是对我们自己的肯定。

我们不断发现错误,不断改正,不断领悟,不断获取。

我们也曾灰心,也曾茫然,也曾不知所措,从一开始的自信满满,到最后的紧张繁杂,所有的这些都令我们回味无穷,这已经成为了我们人生的一个宝藏。

我想今后的学习和工作也是这样的,汗水见证着成功,我想十年过后,但我们都已经走入了社会,在某个阳光明媚的夏日,午后醒来,突然想起大学经历的时候,最先映入脑海里的就是这门课程吧,就是这些为了一个共同的目标,相互合作,共同奋斗的日子吧。

不可否认,单片机是一门比较难的专业学科。

但是经过这一学期的学习,我们觉得单片机这门课很好,让我们在设计中掌握课程,具有很强的实用性。

在社会上,单片机也应用极其广泛。

通过这次课程设计,我掌握了常用元件的识别和测试;熟悉了常用仪器、仪表;了解了电路的连线方法;以及如何提高电路的性能等等。

我相信在接下来的日子里,我会更深刻地去研究它,发掘它。

在这次的实训里,我觉得过得很充实。

实训,不仅培养了我们独立思考、动手操作的能力,在各种其它能力上也都有了提高。

单片机数字时钟24小时制 时间可调

单片机数字时钟24小时制 时间可调

#include<reg51.h>#define display1 0x20#define display2 0x10 //数码管1~6从左到右编号#define display3 0x08#define display4 0x04#define display5 0x02#define display6 0x01#define Uchar unsigned charUchar a,b,c,d,sec0,sec1,min0,min1,hour0,hour1;sbit set_save=P3^2; //设置并保存时间按键sbit up=P1^0; // 加sbit sel=P1^2; //选择设置的数码管sbit e=P1^3;code unsigned char led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; // 0~9数码管显示段码code unsigned char led_point[]= {0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; // 0~9数码管显示段码(带小数点)void delay_ms(Uchar count);void disp_time();void key_scan();void time();void up_down();//*************************1ms延时子程序 **********************void delay_ms(Uchar count){Uchar i,j;do{for(i=5;i>0;i--)for(j=98;j>0;j--);}while(--count);}//************************* 延时子程序 ********************** //************************* 主程序 **********************void main(){a=0;b=0;d=0;sec0=0;sec1=0;min0=0;min1=0;hour0=0;hour1=0;TMOD=0x01;TH0=0x3c;TL0=0xb0;EA=1;EX0=1;ET0=1;IT0=1;TR0=1;while(1) {if(b==1){key_scan();}disp_time();}}//************************* 主程序 ************************** //*************************定时器1s中断程序******************* void Timerupt() interrupt 1{ a=a+1;TH0=0x3c;TL0=0xb0;if(a==20){a=0;TH0=0x3c;TL0=0xb0;TF0=0;time();}}//*************************定时器中断程序********************** //*************************外部中断程序************************ void Interrupt() interrupt 0{b=b+1;if(b==1){ET0=0;TR0=0;e=0;}if(b==2){e=1;b=0;d=0;TH0=0x3c;TL0=0xb0;TR0=1;ET0=1;}}//*************************外部中断程序************************ //*************************键扫描程序************************** void key_scan(){if(sel==0) {delay_ms(2);}if(sel==0){if(d<6)d=d+1;else{d=0;}}while(!sel){disp_time();}if(d==1){ if(up==0){delay_ms(2);}if(up==0){if(hour1<2){hour1=hour1+1;disp_time();}else{hour1=0;disp_time();}}while(!up){disp_time();}}if(d==2){if(up==0){delay_ms(2);}if(up==0){if(hour1<2){if(hour0<9){hour0=hour0+1;disp_time();}else{hour0=0;disp_time();}}if(hour1==2){if(hour0<4){hour0=hour0+1;disp_time();} else{hour0=0;disp_time();}}}while(!up){disp_time();}}if(d==3){if(up==0){delay_ms(2);}if(up==0){if(min1<6){min1=min1+1;disp_time();}else {min1=0;disp_time();}}while(!up){disp_time();}}if(d==4){if(up==0){delay_ms(2);}if(up==0){if(min1==6){min0=0;}if(min1<6){if(min0<9){min0=min0+1;disp_time();}else {min0=0;disp_time();}}}while(!up){disp_time();}}if(d==5){if(up==0){delay_ms(2);}if(up==0){if(sec1<6){sec1=sec1+1;disp_time();}else {sec1=0;disp_time();}}while(!up){disp_time();}}if(d==6){if(up==0){delay_ms(2);}if(up==0){if(sec1==6){sec0=0;}if(sec1<6){if(sec0<9){sec0=sec0+1;disp_time();}else {sec0=0;disp_time();}}}while(!up){disp_time();}}}//*************************键扫描程序************************** //***********************显示子程序*************************** void disp_time(){P2=display1;P0=led[sec0];delay_ms(1); //显示秒个位P2=display2;P0=led[sec1];delay_ms(1); //显示秒十位P2=display3;P0=led_point[min0];delay_ms(1);//显示分个位P2=display4;P0=led[min1];delay_ms(1);//显示分十位P2=display5;P0=led_point[hour0];delay_ms(1);//显示时个位P2=display6;P0=led[hour1];delay_ms(1);//显示时十位}//*************************24小时计时*******************void time(){sec0=sec0+1;}else{if(sec0==9){sec0=0;sec1=sec1+1;}}}if(sec1==6){sec0=0;sec1=0;min0=min0+1;} }if(min0==9){ if(sec1<6){if(sec0<9){sec0=sec0+1;} else{if(sec0==9){sec0=0;sec1=sec1+1;}}}if(sec1==6){sec0=0;sec1=0;min0=0;min1=min1+1;}}}if(min1==6){sec0=0;sec1=0;min0=0;min1=0;hour0=hour0+1;}}if(hour0==9){if(min1<6){ if(min0<9){ if(sec1<6){if(sec0<9) {sec0=sec0+1;}else{if(sec0==9){sec0=0;sec1=sec1+1;}}}if(sec1==6){sec0=0;sec1=0;min0=min0+1;} }if(min0==9){ if(sec1<6){if(sec0<9){sec0=sec0+1;} else{if(sec0==9){sec0=0;sec1=sec1+1;}}}if(sec1==6){sec0=0;sec1=0;min0=0;min1=min1+1;}}}if(min1==6){sec0=0;sec1=0;min0=0;min1=0;hour0=0;hour1=hour1+1;}}}{sec0=sec0+1;}else{if(sec0==9){sec0=0;sec1=sec1+1;}}}if(sec1==6){sec0=0;sec1=0;min0=min0+1;} }if(min0==9){ if(sec1<6){if(sec0<9){sec0=sec0+1;} else{if(sec0==9){sec0=0;sec1=sec1+1;}}}if(sec1==6){sec0=0;sec1=0;min0=0;min1=min1+1;}}}if(min1==6){sec0=0;sec1=0;min0=0;min1=0;hour0=hour0+1;}}if(hour0==4){ sec0=0;sec1=0;min0=0;min1=0;hour0=0;hour1=0;} }}//*************************24小时计时******************。

单片机课程设计实验报告 基于单片机的数字时钟 含完整实验代码..

单片机课程设计实验报告 基于单片机的数字时钟 含完整实验代码..

单片机课程设计报告基于单片机的数字时钟姓名:班级:学号:一、前言利用实验板上的4个LED数码管,设计带有闹铃、秒表功能的数字时钟。

功能要求:a)计时并显示(LED)。

由于实验板上只有4位数码管,可设计成显示“时分”和显示“分秒”并可切换。

b)时间调整功能。

利用4个独立按钮,实现时钟调整功能。

这4个按钮的功能为工作模式切换按钮(MODE),数字加(INC),数字减(DEC)和数字移位(SHITF)。

c)定闹功能。

利用4个独立按钮设定闹钟时间,时间到以蜂鸣器响、继电器动作作为闹铃。

d)秒表功能。

最小时间单位0.01秒。

二、硬件原理分析1.电源部分电源部份采用两种输入接口(如上图)。

a)外电源供电,采用2.1电源座,可接入电源DC5V,经单向保护D1接入开关S1。

b)USB供电,USB供电口输入电源也经D1单向保护,送到开关S1。

注:两路电源输入是并连的,因此只选择一路就可以了,以免出问题。

S1为板子工作电源开关,按下后接通电源,提供VCC给板子各功能电路。

电路采用两个滤波电容,给板子一个更加稳定的工作电源。

LED为电源的指示灯,通电后LED灯亮。

2.蜂鸣器蜂鸣器分为有源和无源两种,有源即两引脚有一个直流电源就可以长鸣,无源则需要一个1K左右的脉冲才可以蜂鸣,因此对于按键的提示音及报警蜂鸣使用有源来得方便。

有源也可以当无源使用,而无源则不能当有源使用,当然用有源蜂鸣器作音乐发声会失真厉害。

如上图:单片机P15输出高低电平经R21连接三极管B极,控制三极管的导通与截止,从而控制蜂鸣器的工作。

低电平时三极管导通,蜂鸣器得电蜂鸣,高电平时三极管截止,蜂鸣器失电关闭蜂鸣。

电路使用一个四位共阳型数码管,四个公共阳级由三极管放大电流来驱动,三极管由P10-P13控制开与关。

数码管的阴级由P0口经过电阻限流连接。

例如,要十位的数码管工作,P12输出0,使三极管Q12导通,8脚得电,当P0口相应位有输出0时,点亮相应的LED灯组合各种字符数字。

单片机实现数字钟(LED显示小时

单片机实现数字钟(LED显示小时

单片机课程设计题目:单片机实现数字钟(LED显示小时:分:秒)学院电子信息工程学院学科门类工学专业通信工程学号姓名指导教师程亮亮2015年06月16日摘要单片机模块中最常见的是数字时钟,数字时钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。

数字时钟是采用数字电路实现对时、分、秒数字显示的计时装置,广泛用于个人家庭、车站、码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字时钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。

诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。

因此,研究数字时钟及扩大其应用,有着非常现实的意义。

关键词:单片机;数字时钟;钟表数字化目录摘要 (I)目录............................................................................................................. I I 1. 引言.. (1)1.1 设计背景及意义 (1)1.2 设计目的 (2)1.3主要工作及结构安排 (2)1.4 本章小结 (3)2. 方案论证与选择 (4)2.1 系统功能框图 (4)2.2 AT89C51简介 (4)2.3 DS1302简介 (8)2.4 本章小结 (11)3. 硬件电路设计 (12)3.1 系统总原理图 (12)3.2 PCB板图 (13)3.3 器件清单 (14)3.4 本章小结 (14)4. 系统程序设计 (15)4.1 软件开发环境 (15)4.2 创建工程 (15)4.3 代码程序设计 (16)4.4 本章小结 (24)5. 软件仿真 (25)5.1 Proteus仿真原理图 (25)5.2 仿真结果 (25)5.3 本章小结 (26)6. 总结 (27)参考文献 (28)附录 (28)附录I主函数代码 (29)附录II DS1302代码 (29)1. 引言1.1研究背景及意义20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。

74ls161单片机30进制数数字钟设计过程

74ls161单片机30进制数数字钟设计过程

74ls161单片机30进制数数字钟设计过程设计一个74LS161单片机30进制数的数字钟,可以按照以下步骤进行:
1.确定时钟的时间范围和显示方式。

例如,设定时间范围为00:00到29:59,并使用四个数码管显示小时和分钟。

2.确定数码管的接线方式。

74LS161是一个4位二进制计数器,输出
是四个二进制信号。

将每个输出信号连接到对应数码管的相应段。

3.编写单片机程序。

使用74LS161作为时钟源,每秒产生一个脉冲。

程序需实现以下功能:
-将74LS161的输出转换为30进制的数值,并将其转换为BCD码或者
直接连接到数码管显示。

-根据当前的数值更新数码管的显示。

4.连接外部电路和电源。

将74LS161和四位数码管连接到单片机的引脚,并连接适当的电源。

确保电路的接地和电源线连接正确。

5.编译程序,并将其烧录到单片机中。

使用适当的开发工具和编译器,将编写好的程序烧录到单片机中。

6.测试和调试。

连接电源后,观察数码管的显示是否正确。

调试程序,确保时钟的计时和显示功能正常。

以上是一个简单的设计过程,可以根据具体需求进行适当的修改和调整。

还可以添加其他功能,如闹钟和定时器等。

用51单片机和1602液晶做的数字钟

用51单片机和1602液晶做的数字钟

用51单片机和1602液晶做的数字钟数字钟是人们日常生活中常见的时间显示设备,它能够精确显示当前的时间,并且兼具简约和实用性。

本文将介绍使用51单片机和1602液晶屏幕制作自己的数字钟的方法。

所需材料在开始制作之前,我们需要准备以下材料: - 51单片机开发板 - 1602液晶屏幕 - 数字时钟芯片RTC(Real-Time Clock) - 面包板和导线 - 电阻和电容 - 编程器和烧录器硬件连接首先,我们需要将51单片机、1602液晶屏幕和RTC芯片连接起来。

根据硬件接口的定义和引脚功能的规定,我们可以进行以下连接: - 将51单片机的VCC 引脚连接到1602液晶屏幕的VCC引脚,用于提供电源。

- 将51单片机的GND引脚连接到1602液晶屏幕的GND引脚,用于地线连接。

- 将51单片机的P0口连接到1602液晶屏幕的数据线D0-D7,用于数据传输。

- 将51单片机的P2口连接到1602液晶屏幕的RS引脚,用于选择数据和命令传输。

- 将51单片机的P3口连接到1602液晶屏幕的EN引脚,用于启用LCD。

此外,还需要将RTC芯片连接到51单片机上,以实现时间的准确显示。

具体的连接方式可以参考RTC芯片的规格说明书。

软件编程完成硬件连接后,我们需要进行软件编程,以便控制51单片机、1602液晶屏幕和RTC芯片的功能。

初始化首先,我们需要对51单片机和1602液晶屏幕进行初始化设置。

这包括设置引脚的功能模式、初始化1602液晶屏幕的显示模式和清空显示区域。

读取时间接下来,我们需要通过RTC芯片来读取当前的时间。

这通常包括读取RTC芯片存储的年、月、日、时、分和秒的数据。

显示时间读取时间后,我们可以将其显示在1602液晶屏幕上。

这可以通过更新特定的LCD显示区域来实现。

我们可以在指定的位置、特定的行和列上显示时间。

更新时间为了实现实时的时间显示,我们需要定期更新显示的时间。

可以使用定时器中断来定期更新时间,并根据需要刷新液晶屏幕上的显示。

基于单片机的数字钟设计及时间校准

基于单片机的数字钟设计及时间校准
通过单片机的串口通信功能,可以实现时间信息 的传输和显示。
单片机的高可靠性和稳定性,保证了数字钟系统 的准确性和稳定性。
03
数字钟设计
数字钟的原理和结构
数字钟的原理
数字钟是一种用数字电路实现时间计数的器具。它通过石英晶体振荡器来产生标准时间信号,然后通过分频器、 计数器和显示器等部件来将时间信号转换成可读的时、分、秒数字。
数字钟的结构
数字钟主要由石英晶体振荡器、分频器、计数器、显示器和控制电路等组成。其中,石英晶体振荡器负责产生标 准时间信号,分频器将信号进行分频,计数器对分频后的信号进行计数,显示器将计数值显示出来,而控制电路 则负责整个系统的控制和协调。
数字钟的主要组成部分
石英晶体振荡器
分频器
计数器
显示器
控制电路
数据处理
对实验数据进行处理和分 析,包括数据清洗、统计 计算等。
结果展示
通过图表或表格等形式展 示实验结果。
结果讨论和改进方向
结果讨论
根据实验结果,分析数字钟的准确性和稳定性,并讨论可能的影响因素。
改进方向
提出改进措施和建议,如选用更高精度的时钟源、优化程序算法等。
07
结论与展望
研究成果与结论
其他时间校准方法
其他时间校准方法概述
除了上述的GPS和NTP时间校准方法外,还 有许多其他的时间校准方法,如手动设置时 间、利用其他网络协议进行时间校准等。这 些方法各有优缺点,适用于不同的应用场景 。在选择时间校准方法时,需要根据实际情 况进行综合考虑。
其他时间校准方法比较
各种时间校准方法都有其优缺点。例如,手 动设置时间虽然简单易行,但精度较低;利 用其他网络协议进行时间校准时需要考虑到 网络延迟等因素对精度的影响。因此,在选 择时间校准方法时需要根据实际需求进行综 合考虑。

基于51单片机的数字钟设计与制作

基于51单片机的数字钟设计与制作

一.基于52单片机制作的数字钟1.设计任务⑴时间显示: 上电后,系统自动进入时钟显示,从00:00:00开始计时,此时可以设定当前时间.⑵时间调整:按下k1,k2,k3键可以顺序设置秒、分、时,并在相应数码管上显示设置值,直至6位设置完毕。

2.系统基本方案选择和论证本时钟的设计具体有两种方法。

一是通过单纯的数字电路来实现;二是使用单片机来控制实现。

本次设计选取了较为简单的单片机控制;而选择这一方法后还要进行各个芯片的选择。

以下是我在这次设计中所用的方案。

2.1 芯片的选择方案一:采用AT89C51芯片,其为高性能CMOS 8位单片机,该芯片内含有4k bytes的可反复擦写的只读程序存储器(PEROM)、128 bytes的随机存取数据存储器(RAM)、 32位可编程I/O口线、2个16位定时/计数器、6个中断源、可编程串行UART通道及低功耗空闲和掉电模式,但是由于AT89C51芯片可擦写的空间不够大,且中断源提供的较小,为防止运行过程中出现不必要的问题,我们不选用AT89C51。

方案二:采用AT89C52芯片,它除了具备AT89C51的所有功能与部件外,其最大的优势就是AT89C52提供了8K字节可擦写Flash闪速存储器空间、8个中断源、及256*8字节内部存储器(RAM),解决了我们对可反复擦写的Flash闪速存储器空间大小与中断源的不够问题的担心。

2.2显示模块选择方案和论证方案一:采用LCD,电路比较简单,且在软件设计上也相对简单,具有低功耗功能。

价格贵。

方案二:采用LED数码管显示,显示较为清楚。

价格便宜。

所以本方案采用LED数码管显示。

2.3 时钟信号的选择方案和论证直接采用单片机定时计数器提供的秒信号,使用程序实现年、月、日、周、时、分、秒计数。

采用此种方案可减少芯片的使用,节约成本,实现的时间误差较小。

2.4 电路设计最终方案决定综上各方案所述,对此次数字时钟的方案选定为: 采用AT89C52作为主控制系统; 并由其定时计数器提供时钟; LED作为显示电路来实现功能。

利用单片机的定时器设计一个数字时钟

利用单片机的定时器设计一个数字时钟

利用单片机的定时器设计一个数字时钟数字时钟是我们日常生活中常见的计时工具,可以准确地显示当前的时间。

而单片机的定时器则可以提供精准的定时功能,因此可以利用单片机的定时器来设计一个数字时钟。

本文将介绍如何使用单片机的定时器来设计一个基于数字显示的时钟,并提供基本的代码实现。

一、时钟电路设计利用单片机设计一个数字时钟,首先需要设计一个合适的时钟电路。

时钟电路一般由电源电路、晶振电路、单片机复位电路和显示电路组成。

1. 电源电路:为电路提供工作所需的电源电压,一般使用稳压电源芯片进行稳定的供电。

2. 晶振电路:利用晶振来提供一个稳定的时钟信号,常用的晶振频率有11.0592MHz、12MHz等。

3. 单片机复位电路:用于保证单片机在上电或复位时能够正确地初始化,一般使用降低复位电平的电路。

4. 显示电路:用于将单片机输出的数字信号转换成七段数码管可以识别的信号,一般使用BCD码和译码器进行实现。

二、单片机定时器的应用单片机的定时器具有精准的定时功能,可以帮助实现时钟的计时功能。

单片机的定时器一般分为定时器0和定时器1,根据具体的应用需求选择使用。

在设计数字时钟时,可以将定时器0配置成定时器模式,设置一个适当的定时时间。

当定时器0计时达到设定时间时,会触发一个中断信号,通过中断处理程序可以实现时钟的计时功能。

以下是一个基于单片机的定时器的伪代码示例:```void Timer0_Init(){// 设置定时器0为工作在定时器模式下// 设置计时时间// 开启定时器0中断}// 定时器0中断处理程序void Timer0_Interrupt_Handler(){// 更新时钟显示}void main(){Timer0_Init();while(1){// 主循环}}```在上述伪代码中,Timer0_Init()函数用于初始化定时器0的相关设置,包括工作模式和计时时间等。

Timer0_Interrupt_Handler()函数是定时器0的中断处理程序,用于处理定时器0计时到达设定时间时的操作,例如更新时钟显示。

单片机数字时钟实验报告

单片机数字时钟实验报告

单片机数字时钟实验报告引言:数字时钟是现代人们生活中不可或缺的物品之一。

现代数字时钟的核心是单片机,而且数字时钟的制作也是单片机初学者的必备实验之一。

本文将详细介绍单片机数字时钟的制作过程和原理。

实验原理:数字时钟的原理非常简单,它由单片机、时钟芯片、LED数码管等元件组成。

单片机通过时钟芯片来获取时间信息,并将时间信息通过端口输出给LED数码管,从而显示当前时间。

单片机的主要作用是控制时钟芯片的读取和LED数码管的显示。

实验材料:1. 单片机:STC89C522. 时钟芯片:DS13023. LED数码管:共阳极4位LED数码管4. 电路板、电阻、电容、晶体振荡器、按键、排针等元件实验步骤:1. 确定电路原理图:根据实验原理,确定单片机、时钟芯片和LED 数码管之间的电路连接方式。

2. 绘制电路布局图:将电路原理图转换为真实的电路布局图,并根据元件大小和数量选择合适的电路板。

3. 焊接电路:根据电路布局图进行电路的焊接,并进行电路的检查和修正。

4. 编写程序:根据实验原理编写单片机程序,并将程序下载到单片机中。

5. 测试程序:将电路接通电源后,通过按键和LED数码管来测试程序的正确性和稳定性。

实验结果:经过实验,我们成功制作了一款单片机数字时钟。

该数字时钟具有以下功能:1. 显示当前的小时、分钟和秒钟。

2. 可以通过按键进行时间的调整。

3. 每隔一秒钟左右,LED数码管上的数据会刷新一次,以显示最新的时间信息。

4. 当电源断开后,时钟芯片会自动保存当前时间信息,重新通电后,显示的时间信息仍然是正确的。

结论:通过本次实验,我们了解了单片机数字时钟的制作原理和步骤,并成功制作了一款数字时钟。

通过实验,我们深入了解了单片机的应用,也为我们今后的电子设计和制作提供了很好的基础。

基于C51单片机的数字时钟课程设计(C语言,带闹钟).

基于C51单片机的数字时钟课程设计(C语言,带闹钟).

单片机技术课程设计数字电子钟学院:班级:姓名:学号:教师:摘要电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。

所以设计一个简易数字电子钟很有必要。

本电子钟采用AT89C52单片机为核心,使用12MHz 晶振与单片机AT89C52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。

该电子钟设有四个按键KEY1、KEY2、KEY3、KEY4和KEY5键,进行相应的操作就可实现校时、定时、复位功能。

具有时间显示、整点报时、校正等功能。

走时准确、显示直观、运行稳定等优点。

具有极高的推广应用价值。

关键词:电子钟 AT89C52 硬件设计软件设计目录一、数字电子钟设计任务、功能要求说明及方案介绍 (4)1.1 设计课题设计任务 (4)1.2 设计课题的功能要求说明 (4)1.3 设计课的设计总体方案介绍及工作原理说明 (4)二、设计课题的硬件系统的设计 (5)2.1硬件系统各模块功能简要介绍 (5)2.1.1 AT89C52简介 (5)2.1.2 按键电路 (6)三、设计课题的软件系统的设计 (6)3.1 使用单片机资源的情况 (6)3.2 软件系统个模块功能简要介绍 (7)3.3 软件系统程序流程框图 (7)3.4 软件系统程序清单 (7)四、设计课题的设计结论、仿真结果、误差分析 (9)4.1 设计结论及使用说明 (9)4.2 仿真结果 (10)结束语 (12)参考文献 (12)附录 (13)附录A:程序清单 (13)一、数字电子钟设计任务、功能要求说明及方案介绍1.1 设计课题设计任务设计一个具有特定功能的电子钟。

具有时间显示,并有时间设定,时间调整功能。

1.2 设计课题的功能要求说明设计一个具有特定功能的电子钟。

该电子钟上电或按键复位后能自动显示系统提示符“d.1004-22”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从12时59分0秒开始运行,进入时钟运行状态;按电子钟S5键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按S5键再次进入时钟运行状态。

单片机数字电子钟课程设计

单片机数字电子钟课程设计

单片机数字电子钟课程设计一、课程目标知识目标:1. 学生能理解单片机的基础知识,掌握数字电子时钟的原理和工作流程。

2. 学生能描述单片机编程的基本步骤,特别是与计时相关的指令和程序设计方法。

3. 学生能够解释数字电子钟各部分功能,如时钟电路、显示电路等,并了解它们之间的协作关系。

技能目标:1. 学生能够运用所学的单片机知识,设计并实现一个简单的数字电子钟程序。

2. 学生通过动手实践,提高焊接和电路排错的能力,能够组装和调试电子钟电路。

3. 学生能够利用仿真软件对电子钟程序进行测试和优化,培养问题解决和程序调试技巧。

情感态度价值观目标:1. 培养学生对电子制作的兴趣,激发创新意识和探索精神。

2. 通过团队协作完成项目,增强学生的合作意识和沟通能力。

3. 学生在课程学习过程中,能够体验到知识与实践相结合的成就感,培养科学、严谨的学习态度。

分析课程性质、学生特点和教学要求:本课程设计针对高中年级学生,假设他们已具备基础物理知识和一定的编程能力。

课程性质为实践性强的综合设计课,旨在通过单片机数字电子钟的制作,巩固学生的电子技术知识与技能。

课程目标设定时考虑了学生的年龄特点和认知水平,注重理论与实践的结合,鼓励学生动手操作和探究学习,旨在提高学生的综合技术应用能力。

通过具体的学习成果分解,本课程旨在让学生不仅学习到知识,而且能够将知识应用到实际问题的解决中,充分体现课程的实用性和创新性。

二、教学内容1. 单片机基础知识回顾:重点复习单片机的内部结构、工作原理及编程基础,关联教材第二章内容。

2. 数字电子时钟原理:讲解时钟电路、计数器、振荡器等组成部分,对应教材第四章第二节。

- 时钟电路的构成与工作原理- 计数器的作用及其编程方法- 振荡器的种类及其在电子时钟中的应用3. 单片机编程设计:结合教材第三章,介绍编写电子时钟程序所需的指令和编程技巧。

- 基本计时指令的使用- 程序流程图的绘制- 中断处理在电子时钟中的应用4. 电路设计与制作:依据教材第五章,指导学生进行电子时钟的电路设计和组装。

用单片机制作数字电子时钟电路

用单片机制作数字电子时钟电路

用单片机制作数字电子时钟电路一、材料准备。

制作数字电子时钟电路需要准备一些材料,主要包括单片机、数码管、晶振、按键、电阻、电容、电源等。

其中,单片机是整个电路的核心部件,它负责控制数码管的显示和处理时间等功能;数码管用于显示时间;晶振用于提供时钟信号;按键用于调整时间和设置闹钟等功能;电阻和电容用于稳压和滤波;电源用于为整个电路提供电力。

二、电路设计。

数字电子时钟的电路设计主要包括单片机控制部分和数码管显示部分。

单片机控制部分负责处理时间和控制数码管的显示,而数码管显示部分负责将单片机处理的时间信息显示出来。

1. 单片机控制部分。

单片机控制部分主要包括单片机、晶振、按键、电源等。

其中,单片机是整个控制部分的核心,它负责处理时间信息和控制数码管的显示。

晶振用于提供时钟信号,按键用于调整时间和设置闹钟等功能,电源用于为单片机提供电力。

2. 数码管显示部分。

数码管显示部分主要包括数码管、电阻、电源等。

数码管用于显示时间信息,电阻用于限流,电源用于为数码管提供电力。

三、电路连接。

电路连接是制作数字电子时钟电路的关键步骤,它决定了整个电路的工作状态和稳定性。

在进行电路连接时,需要根据电路设计将各个部件连接到单片机上,并且需要注意连接的顺序和方式,以确保整个电路能够正常工作。

1. 单片机控制部分连接。

单片机控制部分的连接主要包括单片机、晶振、按键、电源等。

其中,单片机需要连接到晶振以提供时钟信号,连接到按键以接收用户输入,连接到电源以获得电力。

2. 数码管显示部分连接。

数码管显示部分的连接主要包括数码管、电阻、电源等。

其中,数码管需要连接到单片机以接收显示信息,连接到电阻以限流,连接到电源以获得电力。

四、程序设计。

程序设计是制作数字电子时钟电路的另一个关键步骤,它决定了单片机控制部分的工作方式和功能。

在进行程序设计时,需要根据电路设计编写相应的程序,并且需要注意程序的逻辑和效率,以确保整个电路能够正常工作。

【单片机】c51数字时钟(带年月日显示)

【单片机】c51数字时钟(带年月日显示)

【单片机】c51数字时钟(带年月日显示)集团文件发布号:(9816-UATWW-MWUB-WUNN-INNUL-DQQTY-【单片机】c51数字时钟(带年月日显示)显示当前时间:9点58分34秒(第一个零表示闹钟未开启)当前日期:10年4月六日摘要:本设计以单片机为核心,LED数码管动态扫描显示。

采用矩阵式键盘输入能任意修改当前时间日期和设定闹钟时间。

具有显示年月日(区分闰年和二月),闹钟报警和整点报时功能说明系统的功能选择由7个按键完成。

其中,分别对应调整当前时间的时和分,为外部中断0,控制闹钟功能的开启/关闭(开启时数码管第一位显示字母’c’)用作外部中断1,当前时间的显示与闹铃时间显示切换,闹钟显示时按,可进行闹钟时分的设定,此时,led1灯灭。

闹铃时间到切闹钟开关开启时,闹铃响一分钟。

\\对年月日进行调整(第一次按,就进入了年月日的显示,现在就可对日期进行调整)。

按回到当前时间的显示状态。

整点到时:报警对应小时的次数。

程序如下:#include<>#include<>#include<>#define uchar unsigned char#define uint unsigned intuchar data keyvalue; //查到的键值uchar data keys; //转换出的数字uchar dis[8];uchar codeseg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,0x40,0x00,0x39,0xf7}; // 0 1 2 3 4 5 6 7 8 9 - 灭灯 cnsbit led_duan=P2^6;//段选通sbit led_wei=P2^7;//位选通sbit speaker=P2^3;//蜂鸣器sbit minitek=P3^0;//分校正按键sbit hourk=P3^1;//小时校正按键sbit p3_4=P3^4;//sbit yeark=P3^5;//年sbit monthk=P3^6;//月sbit dayk=P3^7;//日uchar data wei,i;bit leap_year;//闰年标志位bit dis_nyr;bit cal_year=1;bit calculate=1;//显示年月日与当前时间切换标志uchar data c_min;//闹钟‘分寄存单元uchar data c_hou;//闹钟、小时寄存单元uchar data second;//秒uchar data minite;//分变量uchar data hour;//小时变量uchar data year,month,day;//定义年月日变量uchar data CNTA;uchar data speaker_num; //蜂鸣次数bit beep; //整点报时标志bit run; //运行标志bit flash; //灭灯标志bit clarm_switch; //闹钟开关标志bit baoshi; //报时开关标志sbit led1=P1^6; // 按键标识指示灯sbit led2=P1^7; // 运行标志指示灯sbit P3_2=P3^2;sbit P3_3=P3^3;uint n,k;/*10微秒级延时*/void delay_10us(uchar n)?{ do{ _nop_();_nop_();_nop_();_nop_();_nop_();}while(--n);}/***毫秒级延时 ***/void delay_ms(uint n)?{ do delay_10us(131);while(--n);}/****** 当前时间转换******/clk_to_dis(){dis[0]=second%10;dis[1]=second/10;if(flash)dis[2]=10;else dis[2]=11;dis[3]=minite%10;dis[4]=minite/10;dis[5]=hour%10;dis[6]=hour/10;}/*****定时闹钟显示译码(用于七段码显示)*****/ clarm_to_dis(){dis[0]=c_min%10;dis[1]=c_min/10;if(flash)dis[2]=10;//亮灯else dis[2]=11; //灭灯dis[3]=c_hou%10;dis[4]=c_hou/10;dis[5]=10;dis[6]=13;}/***********年月日显示译码************/ nyr_to_dis(){dis[0]=day%10;dis[1]=day/10;dis[2]=10;//显示'-'dis[3]=month%10;dis[4]=month/10;dis[5]=10; // '-'dis[6]=year%10;dis[7]=year/10;}/*主函数*/void main(){P2=0xff;P1=0XFF;p3_4=0;run=1;led2=0;//运行指示灯亮led1=1;flash=0x00;dis[2]=10; //第三位显示“-”wei=0x7f;//选通低位 i=0;?second=21;minite=58;hour=9;CNTA=0x00;year=10;month=4;day=5;clk_to_dis(); TMOD=0x11;TH0=15560/256;TL0=15560%256;TH1=0xfc;TL1=0x18;EA=1;PT0=1;EX0=1; //开中断;EX1=1;?ET0=1;ET1=1;TR0=1;TR1=1;while(1){while(run==1){clk_to_dis();if(calculate){if(month==1|month==3|month==5|month==7|month==8|month==10|month==12){day++;?if(day>31){day=0x01;month++; if(month==13){month=1;year++;cal_year=1;}}led1=0; //指示灯亮}if(month==4|month==6|month==9|month==11){day++;if(day>30){day=0x01;month++;}led1=0; //指示灯亮}if(month==2) {if(leap_year==1){day++;if(day==30)day=1;}else {day++;if(day==29)day=1;}}while(cal_year){if((year+2000)%400==0) leap_year=1; // 被400整除为闰年else if((year+2000)%100==0) leap_year=0; //不能被400整除能被100整除不是闰年 else if((year+2000)%4==0) leap_year=1; //不能被400、100整除能被4整除是闰年 else leap_year=0;cal_year=0;}calculate=0;led1=1;}while(!minitek){for(n=0;n<1000;n++);if(!minitek==0)break; //延时防抖minite++;second=0x00;led1=0;for(n=0;n<20;n++){speaker=!speaker;delay_10us(50); //蜂鸣器响 }if(minite==60)minite=0x00; while(!minitek); //等待键松开led1=1;//显示灯}while(!hourk){for(n=0;n<1000;n++);if(!hourk==0)break;hour++;second=0x00;led1=0;。

单片机课程设计数字钟实验报告

单片机课程设计数字钟实验报告

单片机课程设计:电子钟一、实现功能1、能够实现准确计时,以数字形式显示时、分、秒的时间。

2、小时以24小时计时形式,分秒计时为60进位,能够调节时钟时间。

3、闹钟功能,一旦走时到该时间,能以声或光的形式告警提示。

4、能够实现按键启动与停止功能。

5、能够实现整点报时功能。

6、能够实现秒表功能。

二、设计思路1、芯片介绍VCC:电源。

GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL 门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机系统设计项目(三级项目)设计说明书(题目: _______数字钟______________数字钟是一种非常广泛日常计时工具,对现代社会越来越流行。

它可以对年、月、日、时、分、秒进行计时,设置闹钟等很多种功能,对于数字钟采用直观的数字显示,可以同时显示年、月、日、时、分、秒等信息,还具有时间校准等功能。

本设计是基于51系列的单片机进行设计,可以显示年月日时分秒信息,具有可调整日期和时间功能,有秒表以及闹钟功能。

程序采用高级语言C进行编写,以便更简单地实现调整时间。

所有程序编写完成后,在确定没有问题后,在Proteus软件中嵌入单片机内进行仿真。

1、单片机简介1.1单片机的特点单片机的集成度很高,他将微型计算机的主要部件都集成在一块芯片上,具有下列特点:1. 体积小、重量轻、价格便宜、耗电少;2. 根据工程环境要求设计,且许多功能部件集成在芯片内部,其信号通道受外界影响小,故可靠性高,抗干扰性能优于采用一般的CPU。

3. 控制功能强,运行速度快。

其结构组成与指令系统都着重满足工控要求,又极丰富的条件分支指令,有很强的位处理功能和I/O口逻辑操作功能。

4. 片内存储器的容量不可能很大;引脚也嫌少,I/O引脚常不够用,且兼第二功能,第三功能但存储器和I/O口都易于扩展。

1.3 80C51单片机介绍51单片机是对目前所有兼容Intel 8031指令系统的单片机的统称。

该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为目前应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。

目前很多公司都有51系列的兼容机型推出,在目前乃至今后很长的一段时间内将占有大量市场。

80C51单片机属于MCS-51系列单片机,由Intel公司开发,其结构是8048的延伸,改进了8048的缺点,增加了如乘(MUL)、除(DIV)、减(SUBB)、比较(PUSH)、16位数据指针、布尔代数运算等指令,以及串行通信能力和5个中断源。

采用40引脚双列直插式DIP(Dual In Line Package),内有128个RAM 单元及4K的ROM。

80C51有两个16位定时计数器,两个外中断,两个定时计数中断,及一个串行中断,并有4个8位并行输入口。

80C51内部有时钟电路,但需要石英晶体和微调电容外接,本系统中采用12MHz的晶振频率。

1.4单片机硬件资源单片机(microcontroller,又称微控制器)是在一块硅片上集成了各种部件的微型计算机。

这些部件包括中央处理器CPU、数据存储器RAM、程序存储器ROM、定时器/计数器和多种I/O接口电路。

图1-1是8051单片机的基本结构图图1-18051单片机的结构特点有以下几点:8位CPU;片内振荡器及时钟电路;32根I/O线;外部存储器ROM和RAM,寻址范围各64KB;两个16位的定时器/计数器;5个中断源,2个中断优先级;全双工串行口;布尔处理器1.5定时器/计数器8051内部有两个16位可编程定时器/计数器,记为T0和T1。

16位是指他们都是由16个触发器构成,故最大计数模值为216-1。

可编程是指他们的工作方式由指令来设定,或者当计数器来用,或者当定时起来用,并且计数(定时)的范围也可以由指令来设置。

这种控制功能是通过定时器方式控制寄存器TMOD 来完成的。

如果需要,定时器在计到规定的定时值是可以向CPU发出中断申请,从而完成某种定式的控制功能。

在计数状态下同样也可以申请中断。

定时器控制寄存器TCON用来负责定时器的启动、停止以及中断管理。

在定时工作时,时钟由单片机内部提供,即系统时钟经过12分频后作为定时器的时钟。

技术工作时,时钟脉冲由TO和T1输入。

1.6中断系统8051的中断系统允许接受五个独立的中断源,即两个外部中断申请,两个定时器/计数器中断以及一个串行口中断。

外部中断申请通过INTO和INT1(即P3.2和P3.3)输入,输入方式可以使电平触发(低电平有效),也可以使边沿触发(下降沿有效)。

两个定时器中断请求是当定时器溢出时向CPU提出的,即当定时器由状态1转为全零时提出的。

第五个中断请求是由串行口发出的,串行口每发送完一个数据或接收完一个数据,就可提出一次中断请求。

1.7 8051的芯片引脚如图1-2所示图1-2P0口:P0口为一个8位漏极开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH 编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,如下所示:P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

/PSEN:外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:来自反向振荡器的输出。

2、数字钟设计2.1 单片机定时/计数器在数字钟的使用8051系列单片机至少有两个16位内部定时器/计数器。

8052有三个定时器/计数器,其中连个基本定时器/计数器是定时器/计数器0和定时器/计数器1。

他们既可以编程为定时器使用,也可以编程为计数器使用。

若是计数内部晶振驱动时钟,则它是定时器;若是计数8051的输入引脚的脉冲信号,则它是计数器。

8051的T/C时加一计数的。

定时器实际上也是工作在技术方式下的,只不过对固定频率的脉冲计数;由于脉冲周期固定,由计数值可以计算出时间,有定时功能。

当T/C工作在定时器时,对振荡源12分频的脉冲计数,即每个机器周期计数值加一,频率加=fosc/12。

晶振为6MHz,计数频率=500KHz,每2Us计数加一。

当T/C工作在计数器时,计数脉冲来自外部脉冲输入引脚T0或T1。

当T0或T1脚上负跳变需2个机器周期,即24个振荡周期。

所以T0或T1脚输入的计数外部脉冲的最高频率为fosc/12。

当晶振为12MHz时,最高技术频率为500KHz,高于此频率将计数出错。

2.2与T/C有关的特殊功能寄存器(1)计数寄存器TH和TLT/C是16位的,计数寄存器有TH高8位TL低8位构成。

在特殊功能寄存器中,对应T/C0为TH0和TL0;对应T/C1为TH1和TL1。

定时器/计数器的初始值通过TH1/TL1和TH0/TL0设置TR0、TR1:定时器/计数器0、1启动控制位。

1是启动,0是停止TCON复位后清零,T/C需要受到软件控制才能启动计数;当计数计满时,产生向高位的进位TF,即溢出中断请求标志C/T:计数器或定时器选择位。

1位计数器,0位定时器GATE:门控信号。

1时T/C的启动控制受到双重控制,即要求TR0/TR1和INT0/INT1同时为高;0时T/C的启动仅受TR0/TR1控制2.3 定时器/计数器的初始化(1)初始化步骤在使用8051的定时器/计数器前,应对它进行编程初始化,主要是对TCON 和TMOD编程,还需要计算和装载T/C的计数初值。

一般完成以下几个步骤:确定T/C的工作方式----编程TMOD寄存器。

计算T/C中的计数初值,并装载到TH和TL。

T/C在中断方式工作时,须开CPU中断和源中断----编程IE寄存器。

启动定时器/计数器----编程TCON中TR1和TR0位(2)计数初值的计算在定时器方式下,T/C是对机器周期脉冲计数的,如果fosc=6MHz,一个机器周期为2Us,则方士0 13位定时器最大时间间隔=(213-1)*2Us=16.384ms;方式1 16位定时器最大时间间隔=(216-1)*2Us=131.072ms;方式2 8位时器最大时间间隔=(28-1)*2Us=512Us若使T/C工作在定时器方式1,要求定时1ms,求计数初值。

如设计数初值为x,则有(216-1)*2Us=1000usx=216-500因此,TH,TL可置65536-500。

2.4 查询式键盘在多功能数字钟的设计中,我们用到了查询式键盘。

查询式键盘也是键盘控制电路中比较常用到的一种。

2.4.1 查询式键盘的工作原理如图2-1时查询式键盘与单片机的连接。

在电路中我们看到P0口作为输入口。

在端口作为外部输入线时,也就是读引脚时,要先通过指令,把端口锁存器置1,然后再执行读引脚操作,否则就可能读入出错。

相关文档
最新文档