单片机电子时钟课程设计实验报告

合集下载

单片机电子时钟实验报告

单片机电子时钟实验报告

电子时钟预备知识:数码管:内部接线C语言程序:一、电子时钟(一)设计目的通过电子时钟综合设计,使学生学会利用8051定时器时间计时处理功能,了解按键扫描及控制LED数码管显示原理,掌握单片机和按键以及LED数码管硬件电路设计及控制程序的设计方法。

思考按键消除抖动、LED动态显示与静态显示的特点,从而提高学生解决实际问题的能力。

(二)设计任务及要求利用实验平台上4个LED数码管,设计带有闹铃功能的数字时钟,要求:1.在4位数码管上显示当前时间。

显示格式“时时分分”2.由LED闪动做秒显示。

3.利用按键可对时间及闹玲进行设置,并可显示闹玲时间。

当闹玲时间到蜂鸣器发出声响,按停止键使可使闹玲声停止。

(三)我采用的是TB-22766板子,单片机类型是STC89C52RC(四)软件设计思想:采用语言:C语言,主要中断:内部T0中断为唯一的中断,主程序大体分为两部分:无按键被按下时的显示,有按键被按下时,输入定时时间或者书输入当前时间,然后的显示软件,最后是一个蜂鸣器的控制程序。

前面是三个子程序:两个按键扫描和一个延时小程序。

N具体的C语言程序:/*---------------------------------------------------------------------------------------------------------------------=======================================基于JD51开发板的电子闹钟程序=======================================************************************程序功能说明********************************************************************* ***1、基础功能为计时,并显示当前时间。

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

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

单片机实验报告——数字钟设计班级:学号:姓名:时间:一.实验目的1、进一步熟悉C的语法知识和keil环境;2、熟练掌握一些常用算法;3、熟悉keil的编写、下载、调试过程;4、了解单片机的工作原理和电路图;5、熟悉单片机的外围电路功能模块、LED灯、数码管模块以及键盘;6、熟练焊接技术。

二.实验器件三.数字钟设计原理数字钟实际是对标准频率计数的电路,由于计数的起始时间不可能与标准时间一致,故需要在电路上加一个校时电路,同时标准的时间信号必须做到准确稳定。

通常使用石英晶体振荡电路构成数字钟。

数字钟电子钟由以下几部分组成:按键开关部分,振荡电路部分,89c51单片机控制器,4位数码管显示部分,7407数码管驱动部分。

按键开关振荡电路89C51单片机控制器4位数码管显示7407列驱动四.流程图主程序流程图如图2.3所示,定时器T0中断服务程序流程图如2.4所示。

返回五.51单片机系统的硬件连接1、STC单片机最小系统硬件电路图如下2、硬件电路的设计该电路采用AT89C51单片机最小化应用,采用共阴7段LED数码管显示器,P2.4~P2.7口作为列扫描输出,P0口输出段码数据,P1.2,P1.1口接2个按钮开关,用于调时及功能误差,采用12Mhz晶振,可提高秒计时的精确度。

六.程序设计HOUR EQU 3AH ;赋值伪指令MIN EQU 3BHSEC EQU 3CHBUFF EQU 3DHORG 0000HAJMP MAINORG 000BH ;主程序入口AJMP PTF0ORG 0033H ;跳转到标号PTF0执行;**************************************************************;主程序MAIN: MOV HOUR, #00H ;时,分,秒,标记清零MOV MIN, #00HMOV SEC, #00HMOV BUFF, #00HMOV SP, #0EFH ;设堆栈指针MOV TH0, #0ECH ;定时器赋初值MOV TL0, #78HMOV 40H, #100 ;设循环次数MOV 41H, #2MOV TMOD , #1 ;写TMODMOV IP, #2 ;写IPMOV IE, #82HMOV R5,#0;开中断SETB TR0 ;启动定时器PTF0: SETB P1.2MOV TH0, #0ECHMOV TL0, #78HINC R5MOV R6,BUFFCJNE R6,#00H,BBMOV DPTR,#TAB1LJMP LOOP0BB:MOV DPTR,#TABLOOP0: CJNE R5,#1,LOOP1ACALL LOP0AJMP JKLOOP1:CJNE R5,#2,LOOP2ACALL LOP1AJMP JKLOOP2:CJNE R5,#3,LOOP3ACALL LOP2AJMP JKLOOP3:ACALL LOP3MOV R5,#0JK: DJNZ 40H, PTFORXRL BUFF, #0FFHMOV 40H, #100JNB P1.1, JFJNB P1.2, JSMOV R7, 41HCJNE R7, #1, AAAA: DJNZ 41H, PTFORMOV 41H,#2MOV A, SEC ;秒加1ADD A, #1DA AMOV SEC, ACJNE A, #60H, PTFORMOV SEC, #0 ;秒清零JF: MOV A, MIN ;分加1ADD A, #1DA AMOV MIN, ACJNE A, #60H,PTFORMOV MIN, #0 ; 分清零ACALL LEDJS: MOV A,HOURADD A,#1DA AMOV HOUR,A ;时加1CJNE A, #24H,PTFOR ;时加到24时否?是,清零MOV HOUR, #0PTFOR:RETILOP0: MOV A, MIN ;显示分钟的个位ANL A, #0FHMOVC A, @A+DPTRMOV P0,AMOV P2,#0F0HCLR P2.4CLR P0.4RETLOP1:MOV A, MIN ;显示分钟的十位SWAP AANL A, #0FHMOVC A, @A+DPTRMOV P0, AMOV P2, #0F0HCLR P2.5CLR P0.4RETLOP2: MOV A, HOUR ;显示时钟的个位ANL A, #0FHMOVC A, @A+DPTRMOV P0, AMOV P2, #0F0HCLR P2.6RETLOP3:MOV A, HOUR ;显示时钟的十位SWAP AANL A, #0FHMOVC A, @A+DPTRMOV P0, AMOV P2, #0F0HCLR P2.7CLR P0.4RETTAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;不带小数点的字型码TAB1:DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH ;带小数点的字型码END七.系统调试及结果分析硬件调试硬件电路板中器件连接好后,先用万用表测试电路中有无虚焊短接之处,测试无误后,将板子通电,进行静态调试。

(2023)单片机电子时钟课程设计报告2(一)

(2023)单片机电子时钟课程设计报告2(一)

(2023)单片机电子时钟课程设计报告2(一)(2023)单片机电子时钟课程设计报告2项目简介本项目是一款基于单片机的电子时钟,具有时间显示、闹钟、定时等功能。

主要硬件为STC89C52单片机和LCD12864液晶显示屏。

硬件设计•CPU:STC89C52单片机•显示屏:LCD12864液晶显示屏•晶振:11.0592MHZ•动态RAM:24C02 EEPROM•按键:4个,分别为模式切换、时间调整、闹钟调整、确定键•电源:220V AC/9V DC电源适配器软件设计主要功能模块•时间显示:采用DS1302时钟芯片定时,单片机通过SPI通讯读取当前时间,并在液晶屏上显示。

•闹钟:通过按键调整,设置闹钟时间,并在设定时间响铃。

•定时:通过按键调整,设置定时时间,在设定时间完成特定操作(如开关灯、控制电器等)。

软件工具•Keil uVision5:C语言编程软件•Proteus 8:电路仿真软件实现效果经过测试,本项目能够准确地显示时间,并能够响应用户的设定,完成指定的功能要求。

同时,通过调整代码和电路连接方式,还可以实现更多功能的扩展,如调整亮度、自定义显示内容等。

总结本项目完成了基于单片机的电子时钟设计,实现了时间显示、闹钟、定时等功能,并且实现效果稳定可靠。

在项目中,我们不仅掌握了单片机的基本原理和编程技能,还提高了对电路设计和仿真的操作能力,是一次非常有益的学习和实践。

改进方向在项目完善过程中,可以考虑以下方向进行改进:•加入天气显示功能,通过网络或传感器获取当地天气信息,与时间一起显示。

•优化UI界面,考虑加入图像、背光等元素,提升用户体验。

•采用更高性能的单片机,提升系统稳定性和响应速度。

总体评价本项目难度适中,能够较全面地考察学生在单片机原理、编程能力和电路设计等方面的知识掌握程度,是一次有益的实践。

同时,项目具有一定的功能性和实用性,能够满足用户的基本需求。

因此,本项目是一次成功的课程设计。

单片机电子时钟实训报告

单片机电子时钟实训报告

单片机实训报告题目:_电子时钟设计姓名:__侯元星__学号: 0502090229专业:_计算机控制0902班_所属系部:_电子工程系_指导老师:陆剑2011年6月25日前言单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。

单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。

由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。

这次毕业设计通过对它的学习、应用,以A T89S51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由直流电源供电,通过数码管能够准确显数字时钟是现代社会应用广泛的计时工具,在航天、电子等科研单位,工厂、医院、学校等企事业单位,各种体育赛事及至我们每个人的日常生活中都发挥着重要的作用。

本系统是基于AT89C51单片机设计的一个具有六位LED显示的数字时实时钟,采用独立式按键进行时间调整,同时引入一个内部充电电源在停止外部供电时,仍具有内部计时的功能。

该系统同时具有硬件设计简单、工作稳定性高、价格低廉等优点。

本文以对单片机的学习和认识,并通过本次课程设计加以应用,从而达到一个对所学知识的巩固、更深一步的理解,面对一个电子设计,应对出系统的方案,分析出各个板块来,再对各个板块进一步的具体的设计,先进行硬件电路设计,此时一定要考虑好要用什么元件、各个元件的具体参数、是否能实现应有功能,从而得到一个完整的硬件电路。

目录第一章设计任务 (1)1.1设计目的 (1)1.2设计要求 (1)第二章总体设计 (2)2.1 硬件部分 (2)2.2 电子时钟电路图 (5)2.3 电子时钟程序设计 (5)第三章电子时钟调试 (19)3.1 软件调试 (19)3.2硬件调试 (20)总结 (21)参考文献 (22)第一章设计任务1.1设计目的课程设计的主要目的是通过对电子时钟的设计实践,了解单片机系统控制过程、设计要求、应完成的工作内容和具体设计方法。

单片机课程设计报告--电子时钟(2021整理)

单片机课程设计报告--电子时钟(2021整理)

一、设计内容该课程设计是利用MCS-51单片机内部的定时/计数器、中断系统、以及行列键盘和LED显示器等部件,设计一个单片机电子时钟。

设计的电子时钟通过数码管显示,并能通过按键实现设置时间和暂停、启动控制等。

二、电子时钟设计思想:用定时/计数器T0,工作于定时,采用方式1,对12MHZ的系统时钟进行定时计数,初值设为XXYY〔自己计算〕。

形成定时时间为50ms。

用片内RAM的7BH单元对50ms 计数,计20次产生秒计数器78H单元加1,秒计数器加到60那么分计数器79H单元加1,分计数器加到60那么时计数器7AH单元加1,时计数器加到24那么时计数器清0。

然后把秒、分、时计数器分成十位和个位放到8个数码管的显示缓冲区,通过数码管显示出来。

显示格式为小时十位、小时个位---分十位、分个位---秒十位、秒个位。

在处理过程中加上了按键判断程序,能对按键处理。

三、MCS-51单片机系统简介单片机应用系统由硬件系统和软件系统两局部组成。

硬件系统是指单片机以及扩展的存储器、I\O接口、外围扩展的功能芯片以及接口电路。

软件系统包括监控程序和各种应用程序。

在单片机应用系统中,单片机是整个系统的核心,对整个系统的信息输入、处理、信息输出进行控制。

与单片机配套的有相应的复位电路、时钟电路以及扩展的存储器和I\O接口,使单片机应用系统能够运行。

在一个单片机应用系统中,往往都会输入信息和显示信息,这就涉及键盘和显示器。

在单片机应用系统中,一般都根据系统的要求配置相应的键盘和显示器。

配置键盘和显示器一般都没有统一的规定,有的系统功能复杂,需输入的信息和显示的信息量大,配置的键盘和显示器功能相对强大,而有些系统输入/输出的信息少,这时可能用几个按键和几个LED 指示灯就可以进行处理了。

在单片机应用系统在中配置的键盘可以是独立键盘,也可能是矩阵键盘。

显示器可以是LED指示灯,也可以是LED数码管,也可以是LCD显示器,还可以使用CRT显示器。

单片机实验报告-数字时钟设计报告

单片机实验报告-数字时钟设计报告

单片机实验报告-数字时钟设计报告一、实验目的1、掌握单片机的主要原理及相关的功能和特点。

2、熟悉单片机测试与调试的一般步骤与操作。

3、掌握定时/计数功能在单片机系统中的实现方法。

4、领会单片机实验模块设计思想。

二、实验内容本次实验主要是利用STC89C52单片机实现数字时钟设计,实验从硬件电路组成和单片机编程两个部分来实现数字时钟的设计。

(1)硬件电路设计该系统的硬件电路设计主要包括PCB板的设计、电源的设置、单片机与外设的连接以及时钟芯片的接入。

利用Altium Designer软件来进行电路板设计,将STC89C52芯片与时钟模块(DS1302)以及屏幕连接,整个电路如图1所示。

图1 数字时钟使用STC89C52的电路图(2)单片机程序设计本实验使用keil软件对单片机程序进行编程,主要的部分如下:(2.1)定义单片机IO口首先定义单片机IO口,其定义方式如下:#include<reg52.h>sbit Row0=P1^0; //定义P1.0作为数码管的Row0控制端sbit Row1=P1^7; //定义P1.7作为数码管的Row1控制端sbit Row2=P1^1; //定义P1.1作为数码管的Row2控制端sbit Row3=P2^0; //定义P2.0作为数码管的Row3控制端sbit Col0=P1^2; //定义P1.2作为数字管的Col0控制端sbit Col1=P1^3; //定义P1.3作为数字管的Col1控制端sbit Col2=P1^4; //定义P1.4作为数字管的Col2控制端sbit Col3=P1^5; //定义P1.5作为数字管的Col3控制端sbit Col4=P1^6; //定义P1.6作为数字管的Col4控制端(2.2)定义LED数码管数据和定义变量//定义LED数码管数据unsigned char codetable[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};unsigned char i,j,k,m,n,s;(2.3)调用初始化函数再调用初始化函数,用于完成I/O口、定时器0/1及外部中断的初始化,代码如下:void init (void){TMOD=0x01; //定时器0的模式1TH0=0x3c; //定时器0赋初值TL0=0xb0;EA=1; //外部总中断开启ET0=1; //允许定时器0中断ET1=0; //不允许定时器1中断TR0=1; //开启定时器0TR1=1; //关闭定时器1}(2.4)主函数最后我们考虑到,应该实现的LED点阵的显示函数和定时更新时钟的函数,本实验的核心代码如下:void main(){init(); //调用初始化函数while(1){display(); //调用LED点阵显示函数number_refresh(); //调用定时更新时钟函数}}(2.5)LED点阵显示函数为保证LED点阵的正常工作,可利用多次延时函数,定义LED点阵显示函数,每次显示一位数字,实现数字从左往右以及从右往左的滚动移动显示,具体实现如下:void display (int ){P2=0xfe; //定义P2这一行位先低电平,控制第一位显示P0=table[m]; //将得到的数字m 显示在第一位数码管Delay_1ms(2); //延时1msP2=0xfd; //定义P2这一行位先低电平,控制第二位显示P0=table[n]; //将得到的数字n 显示在第二位数码管Delay_1ms(2); //延时1msP2=0xfb; //定义P2这一行位先低电平,控制第三位显示P0=table[s]; //将得到的数字s 显示在第三位数码管Delay_1ms(2); //延时1msP2=0xf7; //定义P2这一行位先低电平,控制第四位显示P0=table[i]; //将得到的数字i 显示在第四位数码管Delay_1ms(2); //延时1msP2=0xef; //定义P2这一行位先低电平,控制第五位显示P0=table[j]; //将得到的数字j 显示在第五位数码管Delay_1ms(2); //延时1msP2=0xdf; //定义P2这一行位先低电平,控制第六位显示P0=table[k]; //将得到的数字k 显示在第六位数码管Delay_1ms(2); //延时1ms}(2.6)定时更新时钟函数本部分,利用定时器0的中断功能实现定时更新LED点阵时间,定义定时器0中断函数,实现每隔一秒更新一次,更新变量m、n、s、i、j、k,代码如下:ㄖ/Timer 0中断函数void Timer0() interrupt 1{TH0=0x3c; //定时器0赋初值TL0=0xb0;m++; //每秒,m值加1if(m>9) //当m的值大于9时,n值加1{n++;m=0;}if(n>9) //当n的值大于9时,s值加1{s++;n=0;}if(s>5) //当s的值大于5时,i值加1{i++;s=0;}if(i>9) //当i的值大于9时,j值加1{j++;i=0;}if(j>5) //当j的值大于5时,k值加1{k++;j=0;}if(k>9) //当k的值大于9时,m值加1{k=0;m=0;}}三、实验结果本次实验让我深入理解单片机及一些外设的工作原理,掌握定时/计数机制,以及实现数字时钟设计的思维过程。

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

单片机实验报告数字时钟设计报告一、实验目的本次单片机实验的目的是设计并实现一个基于单片机的数字时钟。

通过该实验,深入了解单片机的工作原理和编程方法,掌握定时器、中断、数码管显示等功能的应用,提高综合运用知识解决实际问题的能力。

二、实验原理1、单片机选择本次实验选用了常见的 51 系列单片机,如 STC89C52。

它具有丰富的资源和易于编程的特点,能够满足数字时钟的设计需求。

2、时钟计时原理数字时钟的核心是准确的计时功能。

通过单片机内部的定时器,设定合适的定时时间间隔,不断累加计时变量,实现秒、分、时的计时。

3、数码管显示原理采用共阳或共阴数码管来显示时间数字。

通过单片机的 I/O 口控制数码管的段选和位选信号,使数码管显示相应的数字。

4、按键控制原理设置按键用于调整时间。

通过检测按键的按下状态,进入相应的时间调整模式。

三、实验设备与材料1、单片机开发板2、数码管3、按键4、杜邦线若干5、电脑及编程软件(如 Keil)四、实验步骤1、硬件连接将数码管、按键与单片机开发板的相应引脚通过杜邦线连接起来。

确保连接正确可靠,避免短路或断路。

2、软件编程(1)初始化单片机的定时器、中断、I/O 口等。

(2)编写定时器中断服务程序,实现秒的计时。

(3)设计计时算法,将秒转换为分、时,并进行进位处理。

(4)编写数码管显示程序,将时间数据转换为数码管的段选和位选信号进行显示。

(5)添加按键检测程序,实现时间的调整功能。

3、编译与下载使用编程软件将编写好的程序编译生成可执行文件,并下载到单片机中进行运行测试。

五、程序设计以下是本次数字时钟设计的主要程序代码片段:```cinclude <reg52h>//定义数码管段选码unsigned char code SEG_CODE ={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};//定义数码管位选码unsigned char code BIT_CODE ={0x01, 0x02, 0x04, 0x08, 0x10,0x20, 0x40, 0x80};//定义时间变量unsigned int second = 0, minute = 0, hour = 0;//定时器初始化函数void Timer_Init(){TMOD = 0x01; //定时器 0 工作在方式 1 TH0 =(65536 50000) / 256; //定时 50ms TL0 =(65536 50000) % 256;EA = 1; //开总中断ET0 = 1; //开定时器 0 中断TR0 = 1; //启动定时器 0}//定时器 0 中断服务函数void Timer0_ISR() interrupt 1{TH0 =(65536 50000) / 256;TL0 =(65536 50000) % 256;second++;if (second == 60){second = 0;minute++;if (minute == 60){minute = 0;hour++;if (hour == 24){hour = 0;}}}}//数码管显示函数void Display(){unsigned char i;for (i = 0; i < 8; i++)P2 = BIT_CODEi;if (i == 0){P0 = SEG_CODEhour / 10;}else if (i == 1){P0 = SEG_CODEhour % 10;}else if (i == 2){P0 = 0xBF; //显示“”}else if (i == 3){P0 = SEG_CODEminute / 10;else if (i == 4){P0 = SEG_CODEminute % 10;}else if (i == 5){P0 = 0xBF; //显示“”}else if (i == 6){P0 = SEG_CODEsecond / 10;}else if (i == 7){P0 = SEG_CODEsecond % 10;}delay_ms(1);//适当延时,防止闪烁}}//主函数void main(){Timer_Init();while (1){Display();}}```六、实验结果与分析1、实验结果将程序下载到单片机后,数字时钟能够正常运行,准确显示时、分、秒,并且通过按键可以进行时间的调整。

单片电子时钟课程设计实验报告-V1

单片电子时钟课程设计实验报告-V1单片电子时钟课程设计实验报告概述:本实验旨在设计一个基于单片机的电子时钟系统。

采用AT89C52单片机作为核心,使用LCD1602液晶显示屏显示时间。

实现的功能包括时间校准和时钟运行等。

本报告将从以下几个方面介绍设计的流程和具体实现方案。

设计流程:1. 确定需求:了解并明确设计目标和实现的功能要求,提出具体的实现方案。

2. 确定硬件平台:通过对各种单片机的功能和性能的对比,选择适合本课程设计的单片机。

3. 确定软件平台:确定编程语言、开发环境及所需工具等。

4. 进行电路设计:根据具体需求,设计电路连接方案,选择所需元器件。

5. 进行程序设计:根据上述方案进行程序设计,包括计算机程序和单片机程序。

6. 进行调试:在硬件和软件设计完成后,进行实验和调试,以确保系统能够正常运行。

具体实现方案:1. 选择AT89C52单片机作为核心控制器,因为其具有良好的性价比、广泛的应用和相对容易的入门门槛。

2. 采用LCD1602液晶显示屏显示时间,因为其具有良好的可读性和易于控制的特点。

3. 设计电路连接方案,包括单片机、时钟模块、液晶显示屏和按键的接口电路,确保它们能够相互协作并正常工作。

4. 编写程序实现校准时钟、显示时间、计算时间等基本功能,同时通过按键实现相应功能的切换和设置。

5. 在程序实现完成后,通过串口和单片机进行数据交换和调试,确保系统能够运行稳定。

实验结果:经过反复的调整和优化,本实验设计出来的单片机电子时钟系统成功实现了需要的功能,包括时间校准、时钟运行、时间显示、时间计算和按键调整等。

结论:本实验有效地增加了我们对单片机的掌握和应用能力,同时提高了我们的团队协作和工程实践能力。

在今后的实际应用中,我们将继续深入学习和应用单片机技术,不断提高自己的技术水平和应用能力。

单片机电子时钟课程设计报告

单片机电子时钟课程设计报告一、设计目的。

本课程设计旨在通过单片机技术的应用,设计并制作一个简单的电子时钟。

通过这一设计,学生将能够掌握单片机的基本原理和应用,培养学生的动手能力和创新意识,提高学生的实际操作能力。

二、设计原理。

本电子时钟采用单片机作为控制核心,通过晶振产生的时钟信号来实现时间的计时和显示。

利用数码管来显示小时和分钟,通过按键来调整时间。

同时,通过蜂鸣器发出报时信号,实现基本的闹钟功能。

三、设计方案。

1. 硬件设计。

(1)单片机选择,本设计选用常见的51单片机作为控制核心,具有成本低、易于编程的特点。

(2)时钟电路,采用晶振作为时钟信号源,通过单片机的定时器来实现时间的计时。

(3)显示模块,采用数码管来显示小时和分钟,通过数码管的扫描显示来实现时间的动态显示。

(4)按键输入,设计按键来调整时间,包括调整小时和分钟。

(5)报时功能,通过蜂鸣器来实现基本的报时功能,可以设置闹钟时间。

2. 软件设计。

(1)时钟控制,通过单片机的定时器来实现时间的计时和更新。

(2)显示控制,设计数码管的扫描显示程序,实现时间的动态显示。

(3)按键处理,设计按键扫描程序,实现对时间的调整。

(4)报时功能,设计蜂鸣器的报时程序,实现基本的闹钟功能。

四、设计实现。

1. 硬件实现。

根据上述设计方案,完成了电子时钟的硬件连接和布线,保证各个模块之间的正常通讯和工作。

2. 软件实现。

编写了单片机的程序,实现了时钟的计时、显示和控制功能,保证了电子时钟的正常运行。

五、实验结果。

经过调试,电子时钟能够准确显示当前的时间,并能够通过按键调整时间和设置闹钟功能,报时功能也能够正常工作。

六、总结与展望。

通过本课程设计,学生掌握了单片机的基本原理和应用,培养了动手能力和创新意识。

在今后的学习和工作中,学生将能够更好地应用单片机技术,设计和制作更加复杂的电子产品。

同时,也为学生今后的科研和创新工作奠定了良好的基础。

单片机电子钟实训报告

一、引言随着电子技术的不断发展,单片机在各个领域得到了广泛的应用。

电子钟作为单片机应用的一个重要实例,具有很高的实用价值。

本实训报告主要介绍了单片机电子钟的设计与实现过程,包括硬件电路设计、软件编程以及调试过程。

二、硬件电路设计1. 单片机选择本实训选用AT89C51单片机作为核心控制器,该单片机具有丰富的I/O端口、较强的计算能力和较大的存储空间,能够满足电子钟的设计需求。

2. 时钟芯片本实训采用DS1302时钟芯片作为时间源,该芯片具有年、月、日、周、时、分、秒的精确计时功能,并具备闰年补偿等功能。

3. 液晶显示屏本实训选用1602液晶显示屏用于显示时间、日期等信息。

1602液晶显示屏具有清晰显示多个字符和符号的特点,方便用户查看时间和其他信息。

4. 按键模块本实训设计按键模块用于用户输入和设置。

按键包括时间设置键、日期设置键、闹钟设置键等,方便用户进行各项操作。

5. 电源模块本实训采用DC5V电源模块,为整个电子钟提供稳定的电源供应。

三、软件编程1. 主程序主程序负责初始化单片机、时钟芯片、液晶显示屏等硬件设备,并进入主循环。

主循环中,程序会不断检测按键状态,根据按键输入调整时间、日期和闹钟设置。

2. 时钟控制程序时钟控制程序负责实现时钟的基本功能,包括计时、闰年补偿等。

程序通过定时器中断,每秒更新一次时间。

3. 显示程序显示程序负责将时间、日期等信息显示在液晶显示屏上。

程序使用1602液晶显示屏的指令集,动态显示时、分、秒和日期。

4. 按键扫描程序按键扫描程序负责检测按键状态,并根据按键输入调整时间、日期和闹钟设置。

程序采用轮询方式检测按键状态,以提高按键响应速度。

5. 闹钟程序闹钟程序负责实现闹钟功能,当时间达到设定的闹钟时间时,电子钟会发出蜂鸣声提示用户。

四、调试过程1. 硬件调试首先,对硬件电路进行调试,检查各元器件是否安装正确,连接是否牢固。

然后,使用万用表检测电源电压、单片机各引脚电压是否正常。

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

《单片机原理与应用》课程设计 总结报告 题 目:单片机电子时钟(带秒表)的设计

设计人员: 张保江 江润洲

学 号: 班 级: 自动化1211 指导老师: 阮海容 目 录

1.题目与主要功能要求……………………………………2 2.整体设计框图及整机概述………………………………3 3.各硬件单元电路的设计、参数分析及原理说明………3 4.软件流程图和流程说明…………………………………4 5.总结设计及调试的体会…………………………………10 附 录

1.图一:系统电路原理图…………………………………11 2.图二:系统电路 PCB …………………………………12 3.表一:元器件清单………………………………………13 4.时钟程序源码……………………………………………14 题目:单片机电子时钟的设计与实现 课程设计的目的和意义 课程设计的目的与意义在于让我们将理论与实践相结合。培养我们综合运用电子课程中的理论知识解决实际性问题的能力。让我们对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排错调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立完成某些单片机应用系统的开发和设计打下一个坚实的基础。

课程设计的基本任务

利用89C51单片机最小系统,综合应用单片机定时器、中断、数码显示、键盘输入等知识,设计一款单片机和简单外设控制的电子时钟。 主要功能要求

最基本要求 1)使用MCS-51单片机设计一个时钟。要求具有6位LED显示、3个按键输入。 2)完成硬件实物制作或使用Pruteus仿真(注意位驱动应能提供足够的电流)。 3)6位LED数码管从左到右分别显示时、分、秒(各占用2位),采用24小时标准计时制。开始计时时为000000,到

235959后又变成000000。 4)使用3个键分别作为小时、分、秒的调校键。每按一次键,对应的显示值便加1。 分、秒加到59后再按键即变为00;小时加到23后再按键即变为00。在调校时均不向上一单位进位 (例如分加到59后变为

00,但小时不发生改变)。 5) 软件设计必须使用MCS-51片内定时器,采用定时中断结构,不得使用软件延时法,也不得使用其他时钟芯片。

6)设计八段数码管显示电路并编写驱动程序,输入并调试拆字程序和数码显示程序。 7)掌握硬件和软件联合调试的方法。 8)完成系统硬件电路的设计和制作。 9)完成系统程序的设计。 10)完成整个系统的设计、调试和制作。 11)完成课程设计报告。

基本要求

1)实现最基本要求的1~10部分。 2)键盘输入可以控制电子时钟的走时/调试。 3)设计键盘输入电路和程序并调试。 4)掌握键盘和显示配合使用的方法和技巧。

提高发挥部分

1)另设三个键,分别作小时、分、秒的减1调校。 2)在以上设计的基础上,修改程序制作一个电子秒表。分、秒各占用2位显示,1/10秒、 1/100秒各占用1位显示。设定二个键分别作启动/停止、清零(清零应在停止后有效)。

3)在做完(2)后,将时钟与秒表合二为一,并且在同时使用时互不影响,即可在时钟与秒表之间任意切换,而不影响走时、计秒。 整体设计框图及整机概述 整体设计框图 整机概述 1)开机为走时模式,正常显示时间。在此模式下,时钟可调。 2)共设置7个按键,分别为模式键、功能键、加一键、减一键、复位键、秒表启动键、秒表复位键。按动模式键,模式将在‘走时/调时/显示及秒表显示及调整’2个模式下切换。 3)在时钟模式下,功能键选择是正常走时,还是进入调试(时、分、秒)模式。 4)按动加一键可以将值(时、分、秒)加一。 5)按动减一键可以将值(时、分、秒)减一。 6)按动秒表中开始/暂停按键可以随时控制秒表的开始和停止。 7)按动秒表中清零按键时,秒表计的数就会被清除(只有在秒表停止了以后)。 8)按下复位键后,无论是任何状态都会从新开始。 9)开机时钟与闹钟都为00:00:00。

各硬件单元电路的设计、参数分析及原理说明

电源电路 元件有限没有制作电源电路部分。使用9V的电池经过7805稳压后进行供电。 按键

参考书本P232的键盘接口电路原理图,P3口(除去P3.6)接的是键盘按键。当按键按下后,P3口被拉成低电平,给单片机一个信号,使单片机产生一个中断。单片机再指令相应的P0口,P2口产生变化。

单片机最小系统

参考实验指导书与课本及网络资料设计按键电平复位。 LED数码管

首先P0口作为段码输出。由于P0口输出级无上拉电阻,故需添加一排阻为其上拉电阻。其次采用共阳极数码管。段码端为低电平时导通LED,此时数码管向89S51芯片P0口灌电流,为防止芯片烧坏,还需加1个1 KΩ的限流电阻。考虑到数码管的亮度问题,采用了PNP三极管做驱动电路。基极接上1 KΩ电阻后再与P2口相连(P2.0~P2.5)进行位选。发射极接5V电源,集电极接数码管位选。 软件流程图和流程说明

软件流程图 1)主程序流程图 流程图说明

初始化:包括定时器赋 初值,初始化各内存单 元。开定时器中断,开 CPU中断。调用显示子程

调用按键扫描子程序

初始化 开始 时间显示及调整子程序与秒表显示及调整子程序流程图与调时模式子程序大同小异。

总结设计及调试体会 硬件设计部分:首先要通过计算与参考资料等决定参数。而后通过仿真软件等调试,确定参数无误后再开始用AD画原理图,进而生成PCB进行布板。在焊板子的时候,也出现了问题,不小心将7805焊成了7905,结果又调试了一个时间。 软件设计部分:设计软件首先要考虑要做的功能,确定出合理的算法。合理的算法不仅要可以实现功能,而且在添加功能的时候要方便灵活。有的人为了实现某种功能用了各种各样的方法来实现,结果程序结构吃死,当想要添加功能或者修改其他功能的时候,将修改程序大部分结构,也就是说要破坏程序现有的结构。 关于调试:Keil软件调试单片机程序的时候,编译通过并不代表程序是正确的。编译通过只能说明程序没有语法上的错误。进行软件仿真或者下载到开发板上进行调试,经常会出现各种各样的错误。许多超出预期效果的现象往往是一些微小错误引起的。例如没有现场保护跟恢复现场等,所以养成良好的编程习惯也很重要。有些想达成某些功能而添加的语句,实际上确一点效果也没有。举个编程中的小问题:当有按键按下时,我们都要有软件防抖。正常的方法是调用一个延时。在实际调试中,要跳过这个抖动,需要100MS左右。如果使用正常的延时,会导致按键按下时CPU100MS内无法进行其他操作,也就是说。平均1S内100MS不调用显示子程序,这样就会导致亮度降低。这时候,考虑到显示子程序一次有十几毫秒,就特别写了一个程序来作为按键防抖的延时,实际上效果也是很不错的。这个想法就是在修改了多次程序未达到想要的效果(有按键按下时显示亮度不降低)后最终想出来的办法。 最后在做完板,焊完电路后,在接通电源之前,要用万用表仔细检查电路是否有连接错,以免烧坏芯片和数码管。 设计课设的其他体会:态度要积极,不要认为很简单就不紧不慢。很多东西并不是自己设想的那么顺利,有时候一个小问题可以花上你半天甚至一天的时间。虽然自己在程序上并没遇到太大的问题,但是因为态度不够积极,对于没画过的PCB图迟迟不去下手,在周四晚上才解决。本以为周五一天可以做完板并完成整机调试,可是各种突发事件让自己措手不及。发现板来不及做完后才将程序功能进行扩展。这是我在这次实验中的一个教训,也让我明白了对于自己不能太过于自信,态度决定一切。

调时模式设置 秒/分/时数据分别送display函数

Num11?

取键值送cpu Y 分钟数值加1,键值清零

N

Num11值为2?

N 返回

Y Num11值为3? 小时数值加

1,键值清零 图一:系统电路原理图 图二:系统电路PCB 在protues中调试的结果 在开发板上实现的效果(见实物) 在焊的PCB板子上效果(见实物) 在protues里的仿真以及在开发板上实现和自己做实物所看到的现象是不一样的。在protues里不用接三极管(NPN)就可以实现效果,但是在自己做板子的时候就不行了,因为51单片机的输出的电流不能驱动数码管发光,需要一个增加驱动的9014三极管。另外,protues里的复位按键不起作用(软件里就是这样设计的)。将在PCB上实现的程序用在开发板上又出现了问题,delay(3)这个延时子程序不合理,出现了闪烁的问题,所以将delay(3)改成了delay(1),这样问题就解决了。我是将三极管加在了段选上,又加了限流电流,这样做数码管也能点亮。另一方面,一样的程序用在不同的显示上,现象也是不一样的。所以,我需要不断地修正定时器的装值。TH1=(65536-49997)/256; //重装初值 TL1=(65536-49997)%256; TH0=(65536-8000)/256; TL0=(65536-8000)%256; 经过实际测量,这个数值是最合适的,一个小时一秒不差。

相关文档
最新文档