单片机课程设计数字时钟
基于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. 让学生了解单片机与其他硬件设备(如LED显示屏、按键等)的接口技术。
技能目标:1. 培养学生运用单片机编程实现数字时钟功能的能力。
2. 培养学生运用所学知识解决实际问题的能力,如调试程序、排查故障等。
3. 提高学生的动手实践能力,能够独立完成数字时钟的搭建和调试。
情感态度价值观目标:1. 培养学生对单片机及电子制作的兴趣,激发学生的创新意识和探索精神。
2. 培养学生团队协作精神,学会在合作中解决问题,共同完成任务。
3. 培养学生严谨的学习态度和良好的学习习惯,注重实践与理论相结合。
分析课程性质、学生特点和教学要求:1. 课程性质:本课程为单片机应用实践课程,注重理论联系实际,培养学生的动手能力和创新能力。
2. 学生特点:学生已具备一定的单片机基础知识,有一定的编程基础,但实践能力有待提高。
3. 教学要求:以学生为主体,教师为主导,采用项目式教学,引导学生主动探究和解决问题。
二、教学内容1. 理论知识:- 单片机原理及编程基础回顾;- 数字时钟的原理与设计思路;- 单片机与其他硬件设备的接口技术。
2. 实践操作:- 数字时钟的硬件搭建,包括LED显示屏、按键等;- 单片机程序编写,实现时、分、秒的显示与调整;- 程序调试与故障排查。
3. 教学大纲:- 第一阶段(1课时):单片机原理及编程基础回顾;- 第二阶段(2课时):数字时钟原理学习,设计思路讲解;- 第三阶段(2课时):硬件搭建与程序编写;- 第四阶段(1课时):程序调试与故障排查;- 第五阶段(1课时):成果展示与总结。
4. 教材关联:- 教材第3章:单片机原理及编程基础;- 教材第4章:数字时钟设计与实现;- 教材第5章:单片机与其他硬件设备接口技术。
单片机实验报告数字时钟设计报告
单片机实验报告数字时钟设计报告一、实验目的本次单片机实验的目的是设计并实现一个基于单片机的数字时钟。
通过该实验,深入了解单片机的工作原理和编程方法,掌握定时器、中断、数码管显示等功能的应用,提高综合运用知识解决实际问题的能力。
二、实验原理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、实验结果将程序下载到单片机后,数字时钟能够正常运行,准确显示时、分、秒,并且通过按键可以进行时间的调整。
基于单片机的数字电子时钟设计
基于单片机的数字电子时钟设计数字电子时钟是一种非常常见的电子产品,它可以帮助我们实现精确的时间显示,让我们的生活更加方便。
随着科技的不断发展,数字电子时钟也在不断更新和发展,基于单片机的数字电子时钟已经成为当前最先进的技术之一。
本文将介绍基于单片机的数字电子时钟的设计原理和实现方法。
一、数字电子时钟的设计原理数字电子时钟的实现原理就是把时间信号转换成数字信号,再通过计算机芯片来显示时间。
其中,时间信号可以是电缆信号或者无线信号,并且也可以通过外部的控制电路进行调节。
而计算机芯片可以采用单片机、PLC控制器等方案进行设计。
基于单片机的数字电子时钟,可以使用数字时钟芯片和定时器芯片来完成。
数字时钟芯片是一种能够实现数据的统计、时钟显示等功能的IC芯片,通过将其与定时器芯片相连,就能够实现精确的时间统计和显示。
此外,在设计时还需要进行软硬件电路的优化和调试。
二、基于单片机的数字电子时钟的实现方法1、硬件设计基于单片机的数字电子时钟的硬件设计,主要包含单片机控制电路、显示电路、外设接口电路、供电电路、时钟芯片和定时器芯片等部分。
其中,时钟芯片用于提供精准的时间信号,定时器芯片则用于进行计时,而单片机和外设接口电路则用于控制整个数字电子时钟的功能。
另外,数字电子时钟还需要进行外观设计,通常采用的是数码管或液晶屏幕显示时间。
通过优化电路布局和参数匹配,可以有效地提高整个数字电子时钟的稳定性和精度。
2、软件设计在数字电子时钟的软件设计中,主要包含固件设计和操作系统设计两部分。
固件设计是指对单片机系统进行程序编写、调试和优化,以实现时钟的各种功能;而操作系统设计,则是对固件进行封装,建立起一套完整的操作环境,方便用户进行操作。
在固件设计中,需要考虑到时钟的显示、调节、闹钟、定时等多种功能的实现。
通常,这些功能都会涉及到多个模块和数据结构的设计,需要通过循序渐进的方式逐步实现。
在操作系统设计中,需要对时钟的各种操作进行封装,形成一套完整的操作界面。
单片机课程设计电子时钟
xxxxxx大学课程设计报告课程设计名称:单片机系统综合课程设计课程设计题目:电子时钟院(系):专业:班级:学号:姓名:指导教师:完成日期:xxxxxx大学课程设计报告目录第1章总体设计方案 (1)1.1设计原理 (1)1.2设计思路 (1)1.3实验环境 (2)第2章详细设计方案 (3)2.1硬件电路设计 (3)2.2主程序设计 (3)2.3功能模块的设计与实现 (4)第3章结果测试及分析 (11)3.1结果测试 (11)3.2结果分析 (11)参考文献 (12)附录 A (13)附录 B (21)附录 C (22)第1章总体设计方案1.1 设计原理根据课程设计任务书的内容,要求实现在MCS51单片机上对数字电子钟的基本功能设计,对当前时间正确显示,并可根据需要对时间进行更改,以完成时间的校对和闹钟的设置。
时钟时间以时、分、秒在6位数码管上显示,小时以24小时计时模式,分秒均为60进位。
用6MHz晶振产生振荡脉冲,定时器进行秒计时。
调整设置时间的过程运用可编程键盘上的按键进行控制,共设有5个按键,首先按键A进入校时模式或E进入闹钟模式,再分别按键B对小时或C分钟进行更改,每按键一次数码管计数显示加一,更改结束后按键D退出设置,时钟正常显示。
闹钟时间到时,蜂鸣器鸣响10秒后时钟正常显示。
1.2 设计思路采用C语言程序设计结合硬件电路设计方法,利用Lab6000实验箱来实现数字电子钟的设计。
1)提出方案根据设计要求,可将本次设计分为3个模块进行:1)时钟显示模块:主要用于时间的正确显示。
2)校时模块:此模块用于时钟的校对,以完成用户更改时间的需求。
3)闹钟模块:用于实现闹钟的时间设置和定点闹铃的功能。
2)方案论证时钟显示模块中,利用可编程定时器中断进行秒计时,将时间显示在6位数码管上。
校时模块主要利用键盘上5个键的控制完成各项功能,并在数码管上动态显示改变结果,完成设置后进入时钟显示模块。
闹钟模块的设置过程与校时模块相似,但设置完成进入时间显示模块后则等待闹铃时间,到规定时间后,通过数码管闪烁及蜂鸣器的鸣响来实现定点闹铃提醒功能。
单片机课程设计实验报告 基于单片机的数字时钟 含完整实验代码..
单片机课程设计报告基于单片机的数字时钟姓名:班级:学号:一、前言利用实验板上的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灯组合各种字符数字。
单片机数字钟课程设计
单片机数字钟课程设计一、课程目标知识目标:1. 让学生理解单片机的基本原理,掌握数字钟的电路构成和工作原理。
2. 使学生掌握单片机编程的基本方法,能够运用C语言编写简单的数字钟程序。
3. 帮助学生了解数字钟的各个模块功能,如时钟电路、计数器、显示电路等。
技能目标:1. 培养学生动手搭建数字钟电路的能力,提高实践操作技能。
2. 培养学生运用编程软件进行程序编写、调试和优化单片机程序的能力。
3. 培养学生分析问题、解决问题的能力,能够解决数字钟运行过程中出现的故障。
情感态度价值观目标:1. 培养学生对单片机及电子技术的兴趣,激发学生的求知欲和探索精神。
2. 培养学生团队合作意识,学会与他人共同解决问题,提高沟通与协作能力。
3. 培养学生严谨的科学态度,注重实验数据的真实性,养成认真负责的学习习惯。
课程性质:本课程为实践性较强的课程,结合理论知识与实际操作,旨在培养学生的动手能力、编程能力和问题解决能力。
学生特点:学生为初中生,具备一定的电子知识基础,对单片机有一定了解,喜欢动手实践,对新鲜事物充满好奇心。
教学要求:教师需结合学生特点,以引导为主,讲解与实践相结合,注重培养学生的自主学习能力和团队合作精神。
在教学过程中,关注学生的个体差异,给予个性化指导,确保每位学生都能达到课程目标。
通过课程学习,使学生能够独立完成数字钟的搭建和程序编写,提高综合运用知识的能力。
二、教学内容1. 单片机基础理论:介绍单片机的组成、工作原理,重点讲解AT89C52单片机的内部结构、引脚功能及特性。
教材章节:第一章 单片机概述,第二节 AT89C52单片机简介2. 数字钟电路设计:讲解数字钟的电路构成,包括时钟电路、计数器、显示电路等模块,分析各模块之间的连接关系。
教材章节:第二章 数字钟电路设计,第一节 数字钟概述,第二节 电路模块介绍3. 单片机编程:教授C语言编程基础,以数字钟为例,讲解程序设计思路、流程及编程技巧。
单片机数字闹钟设计报告
单片机数字闹钟/电子表设计报告一、设计意义随着生活水平的提高,人们越来越追求人性化的事物,传统的时钟已不能满足人们的需求。
现代的数字钟不仅需要模拟电子技术,而且需要数字电路技术和单片机技术,增加了数字显示等的功能。
单片机电子钟表电路可以由单片机模块、实时时钟电路模块、人机接口模块、报警模块等部分组成,硬件电路简单稳定,并可以利用软件编程减小电磁干扰和其他环境干扰的影响,减小因元器件精度不够引起的误差等优点,与机械式时钟相比具有更高的准确性和直观性,电路简单,使用寿命长,应用范围广,被广泛用于个人家庭、车站、码头、办公室等公共场所,成为人们日常生活中不可少的必需品。
由于数字集成电路的发展和石英晶体振荡器的广泛应用,数字钟表的精度远远超过老式机械钟表,给人们生产生活带来了极大的方便。
另一方面,由于单片机技术的使用,大大扩展了钟表原先的功能,可以提供定时自动报警、按时自动打铃、时间程序自动控制及各种定时电气的自动启用功能等。
因此,研究数字钟表及扩大其应用,有着非常现实的意义。
二、本设计功能描述1、采用STC89C52单片机作为主控芯片,实现数字钟表主控功能。
2、采用液晶屏显示当前年、月、日、时、分、秒,闹铃时间及状态等信息。
3、采用六键键盘设定时间初始值,具体方法是按时间设定键依次进入年、月、日、时、分、秒设定状态,然后通过向上、向下键修改设定值。
正在设定的变量以闪烁状态突出显示。
4、采用六键键盘设定闹铃时间,具体方法是按闹铃设定键依次进入时、分设定状态,然后通过向上、向下键修改设定值。
正在设定的变量以闪烁状态突出显示。
5、采用 DS1302 实时时钟芯片完成后台计时功能,要求具有后备电源,即使主电源掉电时间仍然保持运行。
6、可设定闹铃使能,具体方法是按闹铃使能键,按一次打开,再按一次关闭。
闹铃使能关闭时不报警。
7、当闹铃使能打开,且当前时间到达闹铃设置时间,则蜂鸣器和LED 红灯同时报警,如不按取消键,报警时间为 1 分钟。
单片机数字电子钟课程设计
单片机数字电子钟课程设计一、课程目标知识目标:1. 学生能理解单片机的基础知识,掌握数字电子时钟的原理和工作流程。
2. 学生能描述单片机编程的基本步骤,特别是与计时相关的指令和程序设计方法。
3. 学生能够解释数字电子钟各部分功能,如时钟电路、显示电路等,并了解它们之间的协作关系。
技能目标:1. 学生能够运用所学的单片机知识,设计并实现一个简单的数字电子钟程序。
2. 学生通过动手实践,提高焊接和电路排错的能力,能够组装和调试电子钟电路。
3. 学生能够利用仿真软件对电子钟程序进行测试和优化,培养问题解决和程序调试技巧。
情感态度价值观目标:1. 培养学生对电子制作的兴趣,激发创新意识和探索精神。
2. 通过团队协作完成项目,增强学生的合作意识和沟通能力。
3. 学生在课程学习过程中,能够体验到知识与实践相结合的成就感,培养科学、严谨的学习态度。
分析课程性质、学生特点和教学要求:本课程设计针对高中年级学生,假设他们已具备基础物理知识和一定的编程能力。
课程性质为实践性强的综合设计课,旨在通过单片机数字电子钟的制作,巩固学生的电子技术知识与技能。
课程目标设定时考虑了学生的年龄特点和认知水平,注重理论与实践的结合,鼓励学生动手操作和探究学习,旨在提高学生的综合技术应用能力。
通过具体的学习成果分解,本课程旨在让学生不仅学习到知识,而且能够将知识应用到实际问题的解决中,充分体现课程的实用性和创新性。
二、教学内容1. 单片机基础知识回顾:重点复习单片机的内部结构、工作原理及编程基础,关联教材第二章内容。
2. 数字电子时钟原理:讲解时钟电路、计数器、振荡器等组成部分,对应教材第四章第二节。
- 时钟电路的构成与工作原理- 计数器的作用及其编程方法- 振荡器的种类及其在电子时钟中的应用3. 单片机编程设计:结合教材第三章,介绍编写电子时钟程序所需的指令和编程技巧。
- 基本计时指令的使用- 程序流程图的绘制- 中断处理在电子时钟中的应用4. 电路设计与制作:依据教材第五章,指导学生进行电子时钟的电路设计和组装。
单片机课程设计 多功能数字钟的设计
摘要电子钟在日常生活中最常见,应用也最广泛。
作为一种定时工具被广泛的使用在生产生活的各方面。
人类最初依靠太阳的角度来进行定时,所以受天气的影响比较大,为了克服依靠自然现象定时的缺点人们发明的机器钟表,电子钟表一系列的定时工具。
而电子钟表具有价格便宜,质量轻,定时误差小等优点,被广泛的应用在生产,生活的各个方面。
由于电子钟的能提供精确定时又被广泛的运用在测量之中。
此电子钟采用单片机进行设计,8 段数码通过单片机进行刷新显示。
其设计的产品除了单片机之外没有用到其他集成块,使其成本可以大大降低,而其便于维修。
成品可以被广泛的用于公共场所,匾额装饰,以及教案等方面。
本文主要就是设计一款数字钟, AT89C51 单片机为核心,以配备 LED 显示模块、键盘输入模块、等功能模块。
数字钟采用 24 小时制方式显示时间,定时信息以及年月日显示等功能。
文章的核心主要从硬件设计和软件编程两个大的方面。
1目录摘要...... 1 1 设计要求及方案确定...... 3 1.1 设计要求...... 3 1.2 方案确定...... 3 2 硬件电路设计及描述...... 3 2.1 确定元器件的型号及参数...... 3 2.1.1 单片机的选择...... 3 2.1.2 AT89C51 单片机的介绍...... 5 2.1.3 LED 数码管显示模块...... 7 2.1.4 键盘输入模块 (8)2.1.5 闹铃模块...... 8 2.1.6 电源电路...... 8 2.1.7 蜂鸣器的介绍...... 9 2.2 硬件电路图 (10)3 软件设计...... 10 3.1 程序结构设计...... 10 3.1.1 程序结构...... 10 3.1.2 主要程序模块清单...... 11 3.2 程序...... 14 4 参考文献...... 17 结束语 (18)211.1 设计要求设计要求及方案确定利用单片机设计制作具有下列功能的数字钟:①自动计时,由 6 位 LED 显示器显示时、分和秒②具备调整功能,可以直接由 0~9 数字键设置当前时间;③具备定时闹钟功能。
单片机课程设计基于52单片机的数字钟和电子温度计液晶显示
《电子技术课程》毕业设计报告第一章课程设计的目的与要求(含设计指标) (4)数字钟设计的目的 (4)数字钟设计的要求 (4)第二章方案论证选择 (4)方案一 (4)2.1.1单元电路设计 (4)2.1.2 总体电路................................. 错误!未定义书签。
2.1.3 实时时钟电路的方案对比选择................ 错误!未定义书签。
方案二....................................... 错误!未定义书签。
第三章原理设计 ....................... 错误!未定义书签。
3.1 基本原理................................ 错误!未定义书签。
3.2 电路仿真 (9)3.3 系统组成框图 (10)单元电路设计 (10)总体电路图 (45)3.6原件列表 (18)第四章方案实现与测试。
................ 错误!未定义书签。
主程序 (17)4.2 proteus仿真 (19)4.3利用焊好的板子进行调试 (19)4.4调试过程中出现的问题 (19)第五章课程设计小结 ................... 错误!未定义书签。
基于DS1302的数字钟设计报告摘要根据AT89S52的特点和数字钟的特点,本文提出一种用单片控制DS1302利用LCD1602显示的数字钟的设计方法,同时给出软硬件电路的设计方法。
设计报告硬件电路设计和软件编程两个方面。
本系统通过AT89S52做为CPU进行总控制,利用AT89C52对DS1302进行控制,DS1302可以对年、月、日、周、日、时、分、秒进行计时,设有4×4按键按钮,使之具备了校时、秒表计时、24小时12小时转换、省电状态和复位功能。
最后利用LCD1602液晶显示进行显示。
该设计实用简便能够对年、月、日、周、日、时、分、秒进行有效准确的计时及显示。
单片机课程设计数字钟的设计
实验任务(1.开机时,显示12:00:00的时间开始计时;(2.P0.0/AD0控制“秒”的调整,每按一次加1秒;(3.P0.1/AD1控制“分”的调整,每按一次加1分;(4.P0.2/AD2控制“时”的调整,每按一次加1个小时;2.电路原理图P0_0~P0_3要加上拉电阻。
图4.20.1 3.系统板上硬件连线(2.把“单片机系统:区域中的P3.0-P3.7端口用8芯排线连接到“动态数码显示”区域中的S1-S8端口上;(3.把“单片机系统”区域中的P0.0/AD0、P0.1/AD1、P0.2/AD2端口分别用导线连接到“独立式键盘”区域中的SP3、SP2、SP1端口上;4.相关基本知识(1.动态数码显示的方法(2.独立式按键识别过程(3.“时”,“分”,“秒”数据送出显示处理方法5.程序框图6.汇编源程序SECOND EQU 30HMINITE EQU 31HHOUR EQU 32HHOURK BIT P0.2MINITEK BIT P0.1SECONDK BIT P0.0DISPBUF EQU 40HDISPBIT EQU 48HT2SCNTA EQU 49HT2SCNTB EQU 4AHTEMP EQU 4BHORG 00HLJMP STARTORG 0BHLJMP INT_T0START: MOV SECOND,#00HMOV MINITE,#00HMOV HOUR,#12MOV DISPBIT,#00HMOV T2SCNTA,#00HMOV T2SCNTB,#00HMOV TEMP,#0FEHLCALL DISP ;2KB范围内长调用MOV TMOD,#01HMOV TH0,#(65536-2000) / 256 ;2msMOV TL0,#(65536-2000) MOD 256WT: JB SECONDK,NK1 ;SECONDK是1转NK1,即按键SP1按下时转.LCALL DEL Y10MSJB SECONDK,NK1INC SECONDMOV A,SECONDCJNE A,#60,NS60MOV SECOND,#00HNS60: LCALL DISPJNB SECONDK,$NK1: JB MINITEK,NK2LCALL DEL Y10MSJB MINITEK,NK2INC MINITEMOV A,MINITECJNE A,#60,NM60MOV MINITE,#00HNM60: LCALL DISPJNB MINITEK,$NK2: JB HOURK,NK3LCALL DELY10MSJB HOURK,NK3INC HOURMOV A,HOURCJNE A,#24,NH24MOV HOUR,#00HNH24: LCALL DISPJNB HOURK,$NK3: LJMP WTDEL Y10MS:MOV R6,#10D1: MOV R7,#248DJNZ R7,$DJNZ R6,D1RETDISP: ;将得出的时间存入40H (DISPBUF)之后的地址MOV A,#DISPBUFADD A,#8DEC AMOV R1,AMOV A,HOURMOV B,#10DIV ABMOV @R1,A ;累加器送内部RAM单元@R1与R1区分?:@R1——R1为地址,@R1指向其内容。
单片机课程设计数字钟实验报告
单片机课程设计:电子钟一、实现功能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. 让学生理解单片机的基本原理,掌握时钟系统的组成和工作机制。
2. 使学生掌握定时器/计数器的原理,并能运用其设计简单的时钟程序。
3. 让学生了解中断系统的功能,学会运用中断技术实现时钟的精确控制。
技能目标:1. 培养学生动手实践能力,能够独立完成单片机时钟系统的硬件连接与程序编写。
2. 提高学生的问题分析能力,能够针对实际需求设计合适的时钟方案。
3. 培养学生的团队协作能力,通过分组讨论和实践,共同完成课程设计任务。
情感态度价值观目标:1. 激发学生对单片机及电子技术的兴趣,培养其探索精神。
2. 培养学生严谨、认真的科学态度,养成良好的实验操作习惯。
3. 增强学生的自信心和成就感,使其在完成课程设计的过程中感受到学习的乐趣。
课程性质:本课程为实践性较强的课程设计,侧重于培养学生的动手能力、问题解决能力和团队协作能力。
学生特点:学生已具备一定的单片机基础知识,具备基本的编程能力和实验操作能力。
教学要求:结合学生特点,注重理论与实践相结合,以学生为主体,充分调动学生的积极性,引导他们主动探索、实践和解决问题。
在教学过程中,关注学生的个体差异,给予个性化指导,确保每个学生都能达到课程目标。
通过课程设计,使学生将所学知识应用于实际项目中,提高综合运用能力。
二、教学内容1. 理论部分:(1)单片机基础原理复习,重点回顾时钟系统的作用和构成。
(2)定时器/计数器原理,讲解其工作模式及应用场景。
(3)中断系统原理,分析中断优先级和中断处理程序的编写方法。
2. 实践部分:(1)硬件连接,指导学生完成单片机时钟系统的电路搭建。
(2)程序设计,教授学生编写定时器、中断等模块的代码,实现时钟功能。
(3)调试与优化,引导学生分析程序运行过程中可能出现的问题,并提出解决方案。
3. 教学内容安排与进度:(1)第1周:理论复习,讲解时钟系统原理及实践要求。
(2)第2周:学习定时器/计数器原理,进行电路搭建。
at89c51单片机课程设计_数字电子时钟
课程设计课程名称 : 单片机课程设计单片机课程设计单片机电子时钟题目名称 : 单片机电子时钟学 院 :电气工程及其自动化 专 业 : 电气工程及其自动化金鱼 姓 名 : 金鱼学 号 :指导教师 :中断服务程序3、定时器/计数器T0中断服务程序T0用于计时,选中方式一,重复定时,定时时间设为50ms,定时时间到则中断,在中断服务程序中用一个计数器对50ms计数,计20次则对秒单元加一。
秒单元加到60则对分单元加一,同时秒单元清0;分单元加到60则对时单元,标 加一,同时分单元清0;时单元加到24则对时单元清0,标志一天时间计满。
在对各单元计数的同时,把他们的值放到存储器单元的指定位置。
流程图如下:4、按键处理模块、按键处理模块按键设置为:如果没有按键吗,则时钟正常走时。
现场保护,现场保护,重置初值,重置初值,启动下一个50ms是开始开始显示单元清T0、T1设为16位计数模式位计数模式允许T0中断中断调用显示子程序调用显示子程序进入功能程序进入功能程序按下键否按下键否开始开始中断返回中断返回50ms 计数器加一计数器加一秒单元加一,50ms 计数器清0分单元加一,秒单元清0时单元加一,分单元清0时单元清050ms 计数器=20?秒单元=60?分单元=60?时单元=24?主程序流程图主程序流程图T0中断服务程序中断服务程序NONONONO当按下K0键时,进入调分状态,时钟停止走动;按K1和K2按键可以进行加一和减一操作;继续按K0键可以分别进行分和小时的调整;最后按K0键启动计时。
键启动计时。
5、汇编语言程序、汇编语言程序ORG 0000HLJMP ST ARTORG 000BHLJMP INIT0主程序开始ST ART: MOV R0,#70H ;主程序开始MOV R7,#0CHINIT: MOV @R0,#00HINC R0DJN Z R7,INITMOV 72H,#10 ;对连字符进行装值对连字符进行装值MOV 75H,#10MOV TMOD,#01H ;选择定时器/计数器T0的方式1MOV TL0,#0B0H ;对低位赋初值对低位赋初值MOV TH0,#03CH ;高位赋初值高位赋初值SETB EASETB ET0SETB TR0ST ART1: LCALL SCANLCALL KEYSCANSJMP ST ART1子程序DL1MS: MOV R6,#14H ;延时1子程序DL1: MOV R7,#19HDL2: DJNZ R7,DL2DJNZ R6,DL1RETDL20MS: ACALL SCAN ;延时20ms子程序子程序ACALL SCANACALL SCAN数码管显示程序开始RET ;数码管显示程序开始SCAN: MOV A,78HMOV B,#0AHDIV AB ;时间秒的十位送给A,时间秒的个位送BMOV 71H,A ;时间秒要显示的十位时间秒要显示的十位时间秒要显示的个位MOV 70H,B ;时间秒要显示的个位MOV A,79HMOV B,#0AHDIV AB ;时间分的十位送给A,时间分的个位送B时间分要显示的十位送地址MOV 74H,A ;时间分要显示的十位送地址时间分要显示的个位送地址MOV 73H,B ;时间分要显示的个位送地址MOV A,7AHMOV B,#0AHDIV AB ;时间时的十位送给A,时间时的个位送B时间时显示的十位送地址MOV 77H,A ;时间时显示的十位送地址时间时要显示的个位送地址MOV 76H,B ;时间时要显示的个位送地址MOV R1,#70HMOV R5,#0FEHMOV R3,#08H数码管的显示程序SCAN1: MOV A,R5 ;数码管的显示程序MOV P2,AMOV A,@R1MOV DPTR,#TAB对字段表取值显示MOVC A,@A+DPTR ;对字段表取值显示MOV P0,AMOV A,R5LCALL DL1MSINC R1MOV A,R5RL AMOV R5,ADJNZ R3,SCAN1MOV P2,#0FFHMOV P0,#0FFHRET ;"0~9"和"-"的字段表的字段表TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH;定时/计数器T0中断程序中断程序INIT0: PUSH ACCPUSH PSWCLR ET0CLR TR0MOV TL0,#0B0HMOV TH0,#03CHSETB TR0INC 7BHMOV A,7BHCJNE A,#14H,OUTT0 ;50ms是否到20次,没有到就继续执行50ms的延时的延时 MOV 7BH,#00INC 78HMOV A,78HCJNE A,#3CH,OUTT0 ;一秒的延时是否计到60次,没有就继续执行次,没有就继续执行 MOV 78H,#00INC 79HMOV A,79HCJNE A,#3CH,OUTT0MOV 79H,#00INC 7AHMOV A,7AH次,没有就CJNE A,#18H,OUTT0 ;60分钟的延时是否计到24次,没有就继续执行程序继续执行程序MOV 7AH,#00OUTT0:SETB ET0 ;启动定时器T0POP PSWPOP ACCRETI;按键处理程序按键处理程序KEYSCAN:CLR EA有按键按下则跳转到子程序JNB P1.0,KEYSCAN0 ;P1.0有按键按下则跳转到子程序有按键按下则跳转到子程序JNB P1.1,KEYSCAN1 ;P1.1有按键按下则跳转到子程序有按键按下则跳转到子程序JNB P1.2,KEYSCAN2 ;P1.2有按键按下则跳转到子程序KEYOUT: SETB EARET的延时消抖KEYSCAN0:LCALL DL20MS ;20ms的延时消抖JB P1.0,KEYOUT松手就往下执行程序松手就往下执行程序判断按键是否松手,W AIT0: JNB P1.0,W AIT0 ;判断按键是否松手,INC 7CHMOV A,7CHCLR ET0CLR TR0按下第一次和第二次对时、分选定CJNE A,#03H,KEYOUT ;按下第一次和第二次对时、分选定MOV 7CH,#00 ;按下第三次时就启动计时按下第三次时就启动计时SETB ET0SETB TR0SJMP KEYOUTKEYSCAN1:LCALL DL20MS ;按键加一的程序按键加一的程序JB P1.1,KEYOUTW AIT1: JNB P1.1,W AIT1MOV A,7CH如果功能键按下则对时加一调整CJNE A,#02H,KSCAN11 ;如果功能键按下则对时加一调整INC 79H则清零CJNE A,#3CH,KEYOUT ;如果加到60则清零MOV 79H,#00SJMP KEYOUT如果功能键是按下第KSCAN11:INC 7AH ;如果功能键是按下第二次则对分进行加一调整二次则对分进行加一调整MOV A,7AHCJNEA,#18H,KEYOUT MOV7AH,#00 SJMPKEYOUT KEYSCAN2:LCALL DL20MS ;延时消抖程序延时消抖程序JBP1.2,KEYOUT W AIT2: JNB P1.2,W AIT2 ;判断是否放开按键判断是否放开按键MOVA,7CH CJNE A,#02H,KSCAN21 ;如果功能键是按下第一次对时进行减一如果功能键是按下第一次对时进行减一 DEC79H MOVA,79H CJNE A,#0FFH,KEYOUT MOV79H,#3BH SJMPKEYOUT KSCAN21:DEC 7AH ;如果功能键是按下第二次则对分进行减一如果功能键是按下第二次则对分进行减一CJNEA,#0FFH,KEYOUT MOV7AH,#17H SJMPKEYOUT END6、软件编译环境:Keil uVision2确保生成确保生成 ". Hex"文件文件五、系统硬件电路的设计五、系统硬件电路的设计系统的硬件主要包括单片机芯片,数码管显系统的硬件主要包括单片机芯片,数码管显 示,按键开关电路,它的硬件电路如下图所示,单片机采用广泛使用的AT89C52AT89C52,系统时钟采用,系统时钟采用12MHz 的晶振,八个数码管显示,小时与分钟与秒钟间用短横线,采用共阳极七段式数码管,P0口为段选码输出端,P2口为位选码输出端。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
华北电力大学科技学院单片机课程设计报告(20 —20 年度第学期)题目:电子时钟(LCD)院系:动力工程系题目:数字时钟专业班级:学号:姓名:指导老师:一、功能能实现定时、时间的调整(只能加不能减)、闹钟的设定(只能加不能减),当闹钟按键按下就进入闹钟设定,再按下那个键就进入时间显示,并且闹钟响铃时间是10秒钟。
其整个设计的电路图如下:其中显示的是8个8段LED显示,单片机是80C51,外部晶振是12MHZ,其中和晶振连接的是两个47pF的电容。
单片机的p1.0~p1.3作为地址总线起到控制作用,p1.7在电路中用一个灯泡代替,在实际中接喇叭,起到闹钟的作用。
P0.0~p0.7作为数据总线,把单片机的信号输入到显示器上,p2.0~p2.7作为单片机的额数据总线,其作用在显示总起到位选的作用,决定8段LED的亮灭。
最下面的那个是RESPACK-8排阻,在电路中防止输入到显示的电压很小,是为输出提供电源的装置,配合显示器的显示。
在整个程序中时间的秒、分、时的计数分别存放在20H、21H、22H,闹钟的秒、分、时的计数分别存放在40H、41H、42H。
实现定时闹钟的程序有以下几个部分组成:二、流程图1、定时程序(时间的设定)其程序流程图如下:3、显示的流程图(因为显示的刚好是8个,所以不要去考虑左移的个数,直接4、闹钟设定三、总程序ORG 0000HMOV P0,#00HMOV P2,#00HMOV SP,#60HCLR 20HCLR 21HCLR 22HCLR 40HCLR 41HCLR 42HMOV DPTR,#TABVV: MOV R6,#1MM: MOV R5,#4NN: MOV R4,#100BB: JNB P1.3,LPPSJMP LLLPP: JNB P1.3,LPP0SETB 30HAAC: MOV R3,#1AAB: MOV R2,#4AAA: MOV R1,#100CC0: JNB P1.0,CC1 ;判断p1.0是否为按下SJMP DD0CC1: JNB P1.0,LPP1 ;判断p1.0是否松开,松开秒钟加1 MOV A,40HADD A,#01HDA ACJNE A,#60H,CC2CLR ACC2: MOV 40H,ADD0: JNB P1.1,DD1 ;判断p1.1是否按下SJMP EE0DD1: JNB P1.1,LPP2 ;判断p1.1是否松开,松开分钟加1 MOV A,41HADD A,#01HDA ACJNE A,#60H,DD2CLR ADD2: MOV 41H,AEE0: JNB P1.2,EE1 ;判断p1.2是否按下SJMP HH1EE1: JNB P1.2,LPP3 ;判断p1.2是否松开,松开时钟加1 MOV A,42HADD A,#01HDA ACJNE A,#24H,EE2 CLR AEE2: MOV 42H,AHH1:LCALL LPJNB P1.3,LP1DJNZ R1,CC0DJNZ R2,AAADJNZ R3,AABLCALL B2SJMP AACLP1:JNB P1.3,LPP4 LL: CLR 30HLCALL C0DJNZ R4,BBDJNZ R5,NNDJNZ R6,MMLCALL B2SJMP VVLPP0:LCALL LPNOPNOPNOPSJMP LPPLPP1:LCALL LPNOPNOPNOPSJMP CC1LPP2:LCALL LPNOPNOPNOPSJMP DD1LPP3:LCALL LPNOPNOPNOPSJMP EE1LPP4:LCALL LPNOPNOPNOPSJMP LP1C0: JNB P1.0,C1 ;判断p1.0是否为按下SJMP D0C1: JNB P1.0,LLP ;判断p1.0是否松开,松开秒钟加1MOV A,20HADD A,#01HDA ACJNE A,#60H,C2CLR AC2: MOV 20H,AD0: JNB P1.1,D1 ;判断p1.1是否按下SJMP E0D1: JNB P1.1,LLP1 ;判断p1.1是否松开,松开分钟加1MOV A,21HADD A,#01HDA ACJNE A,#60H,D2CLR AD2: MOV 21H,AE0: JNB P1.2,E1 ;判断p1.2是否按下AJMP H0E1: JNB P1.2,LLP2 ;判断p1.2是否松开,松开时钟加1MOV A,22HADD A,#01HDA ACJNE A,#24H,E2CLR AE2: MOV 22H,AH0: LCALL LPRETLLP: LCALL LPNOP ;3个空指令是消除松开时执行指令的时间差 NOPNOPSJMP C1LLP1:LCALL LPNOPNOPNOPSJMP D1LLP2:LCALL LPNOPNOPNOPSJMP E1B2: MOV A,20H ;设置秒钟ADD A,#01HDA ADEC ACJNE A,#5FH,A1CLR AMOV 20H,AMOV A,21H ;设置分钟ADD A,#01HDA ADEC ACJNE A,#5FH,A2CLR AMOV 21H,AMOV A,22H ;设置时钟ADD A,#01HDA AMOV 22H,ACJNE A,#24H,LOOPCLR AMOV 22H,ASJMP LOOPA1: INC AMOV 20H,ASJMP LOOPA2: INC AMOV 21H,ALOOP:DJNZ R0,RR1SETB P1.7RR1: MOV A,42H ;比较时钟和闹钟的时间是否相等,相等把XRL A,22H ; p1.7置高电平启动闹钟CJNE A,#00H,QQMOV A,41HXRL A,21H ; 异或相等为零CJNE A,#00H,QQMOV A,40HXRL A,20HCJNE A,#00H,QQCLR P1.7MOV R0,#10QQ: RETLP: MOV P2,#01111111BJNB 30H,WWMOV A,40HWW: MOV A,20H ;显示秒钟的个位WW0: MOV B,#10HDIV ABMOV 50H,AMOV A,BMOVC A,@A+DPTRMOV P0,ALCALL DELMOV A,P2 ;显示秒钟的十位 RR AMOV P2,AMOV A,50HMOVC A,@A+DPTRMOV P0,ALCALL DELMOV A,P2 ;显示'-'RR AMOV P2,AMOV P0,#01000000BLCALL DELMOV A,P2 ;显示分钟的个位 RR AMOV P2,AJNB 30H,WW1MOV A,41HSJMP WW2WW1: MOV A,21HWW2: MOV B,#10HDIV ABMOV 51H,AMOV A,BMOVC A,@A+DPTRMOV P0,ALCALL DELMOV A,P2 ;显示分钟的十位 RR AMOV P2,AMOV A,51HMOVC A,@A+DPTRMOV P0,ALCALL DELMOV A,P2 ;显示'-'RR AMOV P0,#01000000BLCALL DELMOV A,P2 ;显示时钟的个位RR AMOV P2,AJNB 30H,WW4MOV A,42HSJMP WW5WW4: MOV A,22HWW5: MOV B,#10HDIV ABMOV 52H,AMOV A,BMOVC A,@A+DPTRMOV P0,ALCALL DELMOV A,P2 ;显示时钟的十位RR AMOV P2,AMOV A,52HMOVC A,@A+DPTRMOV P0,ALCALL DELRETDEL: MOV R7,#150 ;显示延迟150usDJNZ R7,$RETTAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHEND总结在整个设计中我们学到了在显示程序中的一些方法,比如说怎么实现动态显示,开始的时候总是显示不了,在经过把位选放慢就可以知道自己在设计程序中先显示后右移,所以没有显示的余光,使得显示出现异常。
在经过先右移后显示的情况下动态能够正常显示。
还有在设定闹钟的时候经常出现到了闹钟的设定时间不跳转,在经过在闹钟的设定的同时还要进行时间的调用,使得这次程序使用的都是程序的调用,把闹钟的设定看作一个主程序,就相当于p1.3按下之后进入闹钟的设定和显示,之后一直在查询p1.3再一次的按下,如果没有按下就一直查询是否有在调整闹钟。
若再一次按下p1.3就进入时间的设置和显示。
在显示中要设定一个参考量来决定是显示时间还是闹钟,我们在程序中用(30H)的数来作为参考量,如果是“1”则显示闹钟((40H)、(41H)、(42H))里面的数,如果是“0”则显示时间((20H)、(21H)、(22H))里面的数。
总的来说通过这次课程设计我们学到了如何去编写时间程序、闹钟的设定程序、显示程序。