第一篇:单片机电子钟设计任务书.
目 录
一、课程设计的主要内容和要求 ……………………………………………… 1
二、实现原理等知识的介绍 …………………………………………………… 2 2.1电子时钟的设计
2.2单片机识的相关知识
三、系统的总体方案设计说明;3.1总体设计方案 3.2总设计原理框图
四、具体实现步骤的设计说明;
五、单片机系统程序的编制;
六、测量过程的操作说明,原始测量数据的记录;
七、结论及存在问题;
八、心得体会总结;
九、参考文献。
一、主要内容和要求 主要内容:设计一个数字式电子钟,它具有时,分,秒的计时功能,可以 通过键盘进行时间设定, 并且将时间显示在 LED 数码管上。用按键设定时钟的时、分、秒,用扫描方式动态显示。时钟用定时中断方式工作,单片机晶体震荡器频 率 11.0592Mhz.。可选做双机通信实验, 实现子母钟功能, 即由其中一台做时钟, 另一台采集时钟值并显示。对于基本题目要求是: 用按键设定时钟的时、分、秒。要求用 4键方式,即选择、加、减、确认键, 选择键用于选择修改起始时、分、秒值,每按一次,被修改数码管顺序移动并闪 烁。用 +,键修改数值,确认键确定后秒位清零,修改结束。
2.2单片机的相关知识 1单片机简介
单片机全称为单片机微型计算机(Single Chip Microsoftcomputer。从应用领 域来看,单片机主要用来控制,所以又称为微控制器(Microcontroller Unit或 嵌入式控制器。单片机是将计算机的基本部件微型化并集成在一块芯片上的微型 计算机。单片机的发展史 3 4位单片机
1975年,美国德克萨斯仪器公司首次推出 4位单片机 TMS-1000;此后,各 个计算机公司竞相推出四位单片机。日本松下公司的 MN1400系列,美国洛 克威尔公司的 PPS/1系列等。四位单片机的主要应用领域有:PC 机的输入装 置,电池充电器,运动器材,带液晶显示的音 /视频产品控制器,一般家用 电器的控制 8位单片机
1972年,美国 Intel 公司首先推出 8位微处理器 8008,并于 1976年 9月率 先推出 MCS-48系列单片机。在这以后, 8位单片机纷纷面市。例如,莫斯特克 和仙童公司合作生产的 3870系列, 摩托罗拉公司生产的 6801系列等。随着集成 电路工艺水平的提高,一些高性能的 8位单片机相继问世。例如, 1978年摩托 罗拉公司的 MC6801系列及齐洛格公司的 Z8系列, 1979年 NEC 公司的 UPD78XX 系列。这类单片机的寻址能力达 64KB ,片内 ROM 容量达 4--8KB ,片内除带有并 行 IO口外,还有串行
IO口,甚至还有 AD转化器功能。8位单片机由于功能 强,被广泛用于自动化装置、智能仪器仪表、智能接口、过程控制、通信、家用 电器等各个领域。16位单片机
1983年以后,集成电路的集成度可达几十万只管 /片,各系列 16位单片机 纷纷面市。这一阶段的代表产品有 1983年 Intel 公司推出的 MCS-96系列, 1987年 Intel 推出了 80C96,美国国家半导体公司推出的 HPC16040, NEC 公司推出的 783XX 系列等。16位单片机主要用于工业控制, 智能仪器仪表, 便携式设备等场 合。32位单片机
随着高新技术只智能机器人, 光盘驱动器,激光打印机,图像与数据实时处 理,复杂实时控制,网络服务器等领域的应用与发展, 20世纪 80年代末推出了 32位单片机,如 Motorlora 公司的 MC683XX 系列, Intel 的 80960系列,以及近年来流行的 ARM 系列单片机。32位单片机是单片机的发展趋势,随着技术的发 展及开发成本和产品价格的下降,将会与 8位单片机并驾齐驱。64位单片机
近年来, 64位单片机在引擎控制,智能机器人,磁盘控制,语音图像通信, 算法密集的实时控制场合已有应用, 如英国 Inmos 公司的 Transputer T800是高性
能的 64位单片机。2.2.3单片机的特点
1单片机的存储器 ROM 和 RAM 时严格区分的。ROM 称为程序存储器,只存 放程序,固定常数,及数据表格。RAM 则为数据存储器,用作工作区及存放用 户数据。采用面向控制的指令系统。为满足控制需要,单片机有更强的逻辑控制能 力,特别是单片机具有很强的位处理能力。
3单片机的 I/O口通常时多功能的。由于单片机芯片上引脚数目有限,为了 解决实际引脚数和需要的信号线的矛盾, 采用了引脚功能复用的方法, 引脚处于 何种功能,可由指令来设置或由机器状态来区分。单片机的外部扩展能力很强。在内部的各种功能部件不能满足应用的需 求时,均可在外部进行扩展, 与许多通用的微机接口芯片兼容, 给应用系统设计 带来了很大的方便。
2.2.4数码管显示工作原理
LED 数码管分共阳极与共阴极两种,其工作特点是,当笔段电极接低电平,公共阳极 接高电平时,相应笔段可以发光。共阴极 LED 数码管则与之相反,它是将发光二极管的阴 极(负极 短接后作为反映出半导体材料的特性。常见管芯材料有磷化镓(GaP、砷化镓(GaAs、磷砷化镓(GaAsP、氮化镓(GaN等,其中氮化镓可发蓝光。发光颜色不仅与管芯材料有关, 还与所掺杂质有关,因此用同一种管芯材料可以制成发出红、橙、黄、绿等不同颜色的数码 管。其他颜色 LED 数码管的光谱曲线形状与之相似,仅入,值不同。LED 数码管的产品中, 以发红光、绿光的居多、这两种颜色也比较醒目。
LED 数码管等效于多只具有发光性能的 PN 结。当 PN 结导通时,依靠少数载流子的注 人及随后的复合而辐射发光, 其伏安特性与普通二极管相似。在正向导通之前, 正向电流近似于零,笔段不发光。当电压超过开启电压时,电流就急剧上升,笔段发光。因此, LED 数码管属于电流控制型器件,其发光亮度 L(单位是 cd /m2 与正向电流 IF 有关,用公式表 示:L=KIF即亮度与正向电流成正比。LED 的正向电压 U ,则与正向电流以及管芯材料有 关。使用 LED 数码管时,工作电流一般选 10mA 左右/段,既保证亮度适中,又不会损坏 器件。
三、系统的总体方案设计说明 3.1总体设计方案
本次设计时钟电路,使用了 ATC89C52单片机芯片控制电路,单片机控制电 路简单且省去了很多复杂的线路, 使得电路简明易懂, 使用键盘键上的按键来调 整时钟的时、分、秒,用一扬声器来进行定时提醒,同时使用汇编程序来控制整 个时钟显示,使得编程变得更容易,这样通过四个模块:按键、芯片、扬声器、LED 数码管即可满足设计要求。
3.2总设计原理框图如下图所示:
四、具体实现步骤的设计说明 4.1 电路设计原理说明
本设计电路,硬件部分共由五个模块组成:按键模块、复位电路模块、晶振 电路模块、发声模块、时间显示模块。晶振电路模块负责给单片机提供时钟周期。复位单路模块负责上电后自动复位,或按键后强制复位。上电后, 由单片机内部 定时器计时,同时通过动态显示函数自动将时分秒显示到数码管上。与此同时, 按键扫描函数,一直扫描按键引脚状态, 一旦扫描到按键被按下, 即进入相应的
功能函数。4.2各部分电路说明 1按键模块
按键模块如图所示。
在该模块中, 采用四个按键作为电子时钟的控制输入, 通过按键来实现时钟 的时间设置功能。电路中将四个按键的一端接公共地,而单片机的 P2口默认为 高电平, 一旦按键被按下, 则该按键对应的额管脚被拉低, 通过软件扫描按键即 可知道用户所要实现的功能,调用相应的按键子程序来完成该操作。
2单片机的复位电路
单片机的复位电路 , 如图所示。
图单片机的复位电路
当 MCS-5l 系列单片机的复位引脚 RST(全称 RESET 出现 2个机器周期以上的 高电平时,单片机就执行复位操作。如果 RST 持续为高电平,单片机就处于循环 复位状态。根据应用的要求, 复位操作通常有两种基本形式:上电复位和上电或 开关复位。上电复位要求接通电源后,自动实现复位操作。上电后,保持 RST 一 段高电平时间。
3单片机的晶振电路
单片机的晶振电路,如图所示。
图 单片机的晶振电路
石英晶体也连接在晶振引脚的输入和输出之间,等效为一个并联谐振回路, 振荡频率应该是石英晶体的并联谐振频率。晶体旁边的两个电容接地, 实际上就 是电容三点式电路的分压电容 , 接地点就是分压点。以接地点即分压点为参考点, 振荡引脚的输入和输出是反相的,但从并联谐振回路即石英晶体两端来看 , 形成 一个正反馈以保证电路持续振荡。
4发声模块
发声模块,如图所示。
图 发声指示模块
发声模块由蜂鸣器、电源、8550三极管、限流电阻组成。蜂鸣器由 PNP 三 极管驱动,当 BZ 管脚为高时,三极管 be 级没电压差,三极管截止;反之,三极 管导通,有电流流经蜂鸣器,蜂鸣器发声。
5时间显示模块
时间显示模块如图所示。
图 时间显示模块
时间显示部分的电路也很简单, 由五个一位的共阴 8段数码管、五盏发光二
极管组成。在显示过程中, 单片机将要显示的数字传递给 89C52芯片, 同时通过 位选选通要显示的数码管。
五、单片机系统程序的编制 5.1程序设计 ORG 0000H LJMP START;转初始化 ORG 000BH LJMP PGT0;T0中断入口 ORG 0033H START: DIS1 EQU 30H DIS2 EQU 31H DIS3 EQU 32H DIS4 EQU 33H DIS5 EQU 34H DIS6 EQU 35H DISXS EQU 36H DISFZ EQU 37H DISMZ EQU 38H
MS500 EQU 39H K1 BIT P3.2 K2 BIT P3.3 K3 BIT P3.4 K4 BIT P3.5 BDP BIT 01H bd BIT 02H MOV SP,#50H;初始化程序 MOV P0,#0FFH MOV P1,#0FFH MOV P2,#0FFH MOV P3,#0FFH MOV TMOD,#01H;定时器 T0工作于方式 1 MOV TH0,#4CH;定时器初值 MOV TL0,#05H MOV IE,#82H MOV R3,#10 SETB TR0 MOV DIS1,#00H;清显示缓冲区
MOV DIS2,#00H MOV DIS3,#00H MOV DIS4,#00H MOV DIS5,#00H MOV DISXS,#12;初始化时间为 12:30:00 MOV DISFZ,#30 MOV DISMZ,#0 MOV MS500,#0 MAIN:;主程序 jnb k2,d1 jnb k3,d2 jnb k4,d3 jnb k1,d4 d1: ljmp send d2: ljmp send d3: ljmp send d4: jnb k1,qu1 qu1:lcall sound ajmp god1 k1dd: jb k2,k2dd lcall ys10ms 11
5.2 程序流程图
六、测量过程的操作说明,原始测量数据的记录。6.1 操作说明操作功能说明 功能说明表 按键 K1 K2 K3 K4 发光二极管 功能 当按一下 K1,进入调整小时状态,再按一下,进入到调整分 钟状态,如此循环 用来对 小时 和 分钟 进行加时间(每次加 1)用来对 小时 和 分钟 进行减时间(每次减 1)确认键,退出选中小时或分钟 对秒数的十位数进行记录,亮一盏灯代表十秒,亮两盏灯代表 二十秒,如此累推 6.2 原始测量数据的记录 数据记录表 初始值 按一次 K1 按一次 K2 按一次 K3 第二次按 K1 按一次 K2 按一次 K3 按 K4 12.30.0 12.##.# 13.##.# 12.##.# ##.30.# ##.31.# ##.30.# 12.30.0 16
七、结论及存在问题 通过用汇编对 K1、K2、K3、K4 的编译,可以初步实现调整时钟时间的功能。但在编译过程中也遇到不少问题,第一,编译时有跳出转移范围的问题,这是由 于判断语句 JB、JNB 的转移范围是-128~+127 字节,出现这样的问题是由于超出 转移范围。第二,要实现选中小时或者分钟位上的闪烁,要用到延时和对数码管 的显示效果,但达不到指定目的,数码管闪烁的效果不明显,这是由于延时的时 间不够长,使得人眼难以看得清。
八、心得体会总结 本文介绍的是利用 AT89C51 单片机设计的有调时功能的电子时钟。并详细说 明了软件和硬件设计方法。在设计过程中可以看出,汇编语言有着其独特的魅力,它简单易学,语法错误容易纠正;用单片机实现电子时钟的设计是比较方便和易 于实现。通过电子时钟的设计和制作,加深了对单片机的理解,能够更熟练地应用单 片机实现预期的功能,对今后的学习有很大的帮助。电子时钟各项功能的实现,为自动控制的实现打下了理论基础,获得了实现方法。当然,该电子钟还有很多不足之处,比如不能定时,不能报时。断电后不能 只能调时。在今后的学习中还要对此加以研究,九、参考文献及网站 《单片机原理及其接口技术》胡汉才 编著 北京 清华大学出版社 《51 系列单片机及 C51 程序设计》王建校等 科学出版社 其它有关资料 几个有关单片机和芯片资料的网站: http://www.xiexiebang.com http://www.xiexiebang.com http://www.xiexiebang.com http://www.xiexiebang.com http://www.xiexiebang.com 等及其相关链接 17 http://www.xiexiebang.com http://www.xiexiebang.com http://www.xiexiebang.com/ ………….
第二篇:单片机设计任务书
单片机课程设计任务书
一、基本情况
学时:2周学分:2学分适应班级:电气工程及其自动化
二、课程设计的意义、性质、目标、要求
1.意义
课程设计是单片机课程教学的最后一个环节,是对学生进行全面的系统的训练。进行课程设计可以让学生把学过的比较零碎的知识系统化,真正的能够把学过的知识落到实处,能够开发简单的系统,也进一步激发了学生再深一步学习的热情,因此课程设计是必不少的,是非常必要的。
2.性质
课程设计是提高学生单片机技术应用能力以及文字总结能力的综合训练环节,是配合单片机课程内容掌握、应用得的专门性实践类课程。
3.目标
通过典型实际问题的实际,训练学生的软硬件的综合设计、调试能力以及文字组织能力,建立系统设计概念,加强工程应用思维方式的训练,同时对教学内容做一定的扩充。
4.要求
(1)课程设计的基本要求
单片机课程设计的主要内容包括:理论设计与撰写设计报告等。其中理论设计又包括选择总体方案,硬件系统设计、软件系统设计;硬件设计包括单元电路,选择元器件及计算参数等;软件设计包括模块化层次结构图,程序流程图。程序设计是课程设计的关键环节,通过进一步完善程序设计,使之达到课题所要求的指标。课程设计的最后要求是写出设计总结报告,把设计内容进行全面的总结,若有实践条件,把实践内容上升到理论高度。
(2)课程设计的教学要求
单片机课程设计的教学采用相对集中的方式进行,以班为单位全班学生集中到设计室进行。做到实训教学课堂化,严格考勤制度,在实训期间(两周)累计旷课达到6节以上,或者迟到、早退累计达到8次以上的学生,该课程考核按不及格处理。在实训期间需要外出查找资料,必须在指定的时间内方可外出。
课程设计的任务相对分散,每3—5名学生组成一个小组,完成一个课题的设计。小组成员既有分工、又要协作,同一小组的成员之间可以相互探讨、协商,可以互相借鉴或参考别人的设计方法和经验。但每个学生必须单独完成设计任务,要有完整的设计资料,独立撰写设计报告,设计报告雷同率超过50%的课程设计考核按不及格处理。
三、课程设计题目及设计过程
(一)十字路口交通灯控制系统的设计
利用单片机的定时器产生秒信号,控制十字路口的红绿黄灯交替点亮和熄灭。要求能用按键设置两个方向的通行时间(绿灯点亮的时间)和暂缓通行时间(黄灯点亮的时间),系统的工作符合一般交通灯控制要求。
(二)设计过程
1、设计要求
十字交叉路口的交通灯控制系统的结构如图1.1所示。往南和往北的信号一致,即红灯(绿灯或黄灯)同时亮或同时熄灭。实现红、绿、黄灯的循环控制。要实现此功能需要表示三种不同颜色的LED灯分别接在P1个管脚,用软件实现。往东和往西方向的信号一致,其工作方式与南北方向一样,也采用三种不同颜色的LED灯分别接在P1个管脚,用软件实现。当南北方向为绿灯和黄灯时,东西向的红灯点亮禁止通行;而东西方向为绿灯和黄灯时,南北向的红灯点亮禁止通行。
图1.1 十字路口交通灯控制示意图
假设南北方向为主干道,通行时间为20秒,东西方向是次干道,通行时间为20秒,黄灯点亮的时间均为5秒,则其工作方式如表1.1所示循环点亮信号灯。
具体设计要求如下:
1、设计一交通灯控制系统,其结构如图1.1所示,工作方式满足上述要求。
2、主干道和次干道的通行时间及黄灯点亮的时间可以手动设置。
3、在没有手动设置通行时间时,系统自动按表1.1的模式进行工作。
2、设计要点
(1)硬件设计:
实现红、绿、黄灯的循环控制。要实现此功能需要表示三种不同颜色的LED灯分别接在P1个管脚,用软件实现。
要求东西车道和南北车道上的车辆交替运行,每次通行时间为20s; 要求黄灯先亮5秒钟,才能变换车道。
黄灯亮时要求每秒闪亮一次;
要求绘出原理图;
根据设计要求和技术指标设计好电路。
(2)本系统的工作流程:
1)接通电源时或系统复位后,系统按程序给定的时间工作,即南北向通行20秒,东西向通行20秒,黄灯亮5秒,工作模式如表1.1所示。首先南北向通行,然后东西向通行,如此循环。
(3)软件设计:
1)系统资源分配:为了便于程序的设计、阅读及修改,需要先对系统的存储器资源进行分配和说明。
2)软件模块:根据上述工作流程和设计要求,软件设计可以分为以下几个功能模块:
先了解实际交通灯的变化规律,假设一个十字路口为东西南北走向。初始状态0为东西红灯,南北红灯;然后转状态1南北绿灯通车,东西红灯。过一段时间转状态2,南北绿灯闪几次转黄灯,延时几秒,东西仍然红灯。再转状态3,东西绿灯通车,南北红灯。过一段时间转状态4,东西绿灯闪几次转亮黄灯,延时几秒,南北仍然红黄灯,最后回到状态1,不断循环。
(1).当东西方向为红灯,此道禁止通行,东西到行人可通过;南北道为绿灯,此道车辆通过,行人禁止通行。市建委20秒。
(2).黄灯闪烁5秒,警示车辆和行人红、绿灯状态即将切换。
(3).当东西方向为绿灯,此道车辆通行;南北方向为红灯,南北道车辆禁止通过,行人通行。时间为20秒。东西方向车流大,通行时间长。
(4).这样如上表的时间和红、绿、黄灯出现的顺序依次出现这样行人和车辆就能安全畅通的通行。
硬件设计的要求:
(1)确定元器件的型号及参数。
(2)画出硬件设计的结构框图。
(3)画出各部分电路的原理图,并说明各部分电路的工作原理设计依据;画出完整的原理图。
(4)列出元器件清单。
4、软件设计
根据设计要点,软件设计首先应对系统资源进行进行分配和说明。为了增加程序的可读性,理清程序的编写思路,建议程序采用模块化结构。
软件设计的要求:
(1)画出整个控制系统的程序流程图。
(2)画出各功能部分的程序流程图,并能够编写相应的原程序。
四、设计报告
设计完成后,必须撰写课程设计报告。设计报告必须独立完成,格式符合要求,文字(不含图形、程序)不少于3000字,图形绘制规范报告书用A4纸书写,装订成册。设计报告的格式如下:
1、封面
2、内容提要(摘要)
3、目录
4、正文
(1)所作题目的意义、本人所做的工作及系统的主要功能;
(2)硬件电路设计及描述;
1)确定元器件的型号及参数。
2)画出完整的原理图。
3)列出元器件清单。
(3)软件设计流程及描述;
5、心得体会(总结)
6、参考文献
7、附录(源程序代码)
8、有关图纸
五、进度安排
单片机课程设计共安排2周,合计80学时,具体分配如下:
实习动员及准备工作:2学时
总体方案设计:10学时
硬件设计:16学时
软件设计:20学时
撰写设计报告:12学时
答辩与总结:8学时
教师辅导:12学时
六、考核方法
单片机课程设计的考核方式为考查,考核结果为优秀、良好、中等、及格和不及格五等,分数在90-100之间为优秀,80-89分之间为良好,70-79分之间为中等,60-69分之间为及格,60分以下为不及格。
考核分三个方面进行:平时表现20%;设计过程25%;设计报告 40%;设计答辩15%。
有下列情形之一者,课程设计考核按不及格处理:
1、设计期间累计迟到、早退达8次;
2、设计期间累计旷课达6节;
3、设计报告雷同率超过50%或无设计报告;
4、不能完成设计任务,达不到设计要求。
说明:下为可供参考的题目,可以从中选取,也可自己定题
2、题目:免超载长途车自动控制系统设计
设计要求:
(1)当检测到有人进车时能够自动开启车门,开启后延时10秒自动关闭。开门系统由电动机控制,开门时电动机正转,闭门时电动机反转。开门限度由限位开关确定;
(2)能够自动记录进入车内人的个数,当人数超过50时不在开启进车门;
(3)当车内人员有特殊情况需外出时,只能通过按下车内请求按钮,后门开启才能离开,离开之后记录人数自动减一;
(4)当车内人员未满绿色显示灯亮,正常满员时,车门上黄色显示灯亮;当有超载情况出现时,车内报警器自动报警,同时车门红色灯亮。
3、题目:半导体致冷恒温系统设计
设计要求:
(1)通过温度传感器测量制冷片的温度,并能通过数码管显示,显示3位即可;
(2)通过单片机控制半导体制冷温度为恒温。即若温度过高,可以将电压调高,制冷效果好,温度降低;若温度低,可以将电压调低,制冷效果差,温度升高。
(3)若温度正常时绿色显示灯亮,温度过高时红色显示灯亮,温度过低时黄色显示灯亮,温度异常报警。
4、题目:多功能绿色垃圾桶设计
设计要求:
(1)当有人投放垃圾时,垃圾桶打开,持续一段时间自动关闭;
(2)当桶内垃圾过多时,不再开启垃圾桶,此时垃圾桶上红色指示灯亮;垃圾未满时,绿色指示灯亮;
(3)垃圾桶控制系统的电源有太阳能电池提供,若遇到太阳能电池电量不足时,能够利用自带的5V备用直流电源供电。
5、题目:单片机控制的60s倒计时设计
设计要求:
应用定时计数器及其中断实现60s的,并将倒计时过程显示在LED数码管上,倒计时循环进行。
(1)硬件设计:
1)单片机建议选用AT89C51,它与8051系列单片机全兼容,但其内部 带有4KB的FLASH ROM,设计时无需外接程序存储器,为设计和调试带来极大的方便。
2)LED显示系统:
采用2个数码管倒计时,时钟信号采用的是内部时钟方式。带有复位功 能,P1口和P2口分别接个位和十位数码管。
3)电源供电系统:本系统采用220V电源供电,应设计相应的稳压电源 电路。但课程设计受时间限制,也可采用现成的5V直流稳压电源供电,这样可以节约设计时间、简化设计过程。
(2)、软件设计
根据设计要点,软件设计首先应对系统资源进行进行分配和说明。为了增加程序的可读性,理清程序的编写思路,建议程序采用模块化结构。主程序和定时中断服
6、题目:基于单片机16×16点阵控制系统设计
设计要求:
16x16点阵需要32个驱动,分别为16个列驱动及16个行驱动。每个行与每个列可以选中一个发光管,共有256个发光管,采用动态驱动方式。每次显示一行,10ms后再显示下一行。
(1)硬件设计:
1)单片机建议选用AT89C51,它与8051系列单片机全兼容,但其内部带有4KB的FLASH ROM,设计时无需外接程序存储器,为设计和调试带来极大的方便。
2)LED显示系统:16×16LED点阵
3)74159集成芯片:其功能是将4位输入译为16输出(低电平有效)。
4)电源供电系统:课程设计受时间限制,也可采用现成的5V直流稳压电源供电,这样可以节约设计时间、简化设计过程。
(2)、软件设计
根据设计要点,软件设计首先应对系统资源进行进行分配和说明。为了增加程序的可读性,理清程序的编写思路,建议程序采用模块化结构。
第三篇:单片机课程设计电子钟
课程设计任务书
(指导教师填写)
课程设计名称电子技术课程设计学生姓名专业班级设计题目数字钟
一、课程设计的任务和目的任务:设计一台能显示“时”、“分”、“秒”的数字钟,周期为24小时;具有校时、正点报时功能。
目的:培养学生综合运用所学知识的能力,综合设计能力,培养动手能力及分析问题、解决问题的能力。
二、设计内容、技术条件和要求
1.数字钟可显示“时”、“分”、“秒”,且“时”、“分”、“秒”分别用两个数码管显示,计满23小时60分钟60秒,则全部清零。
2.具有校时功能,时、分校时用1HZ的信号进行,而秒较时用2HZ时钟信号进行。
3.整点能自动报时。要求报时声响为四低一高,最后一响为整点,前四声用500HZ信号让喇叭发声,最后一声用1000HZ信号。
4.根据上述要求,画出电路总框图,简述各部分工作原理。
5.进行各部分电路的设计,要求有分析过程、原理图表示。
6.对原理图进行仿真。
7.在实验箱上组装、调试。
8.撰写设计总结报告。
三、时间进度安排
第一周:理论设计。
周一上午布置设计任务,讲解设计要求,安排答疑、实验时间;
周三、周四下午课程设计答疑,其他时间学生查资料,做初步理论设计;
周五交设计初稿,由指导教师审查;
第二周:仿真和安装调试、撰写设计总结报告
周一、二学生进实验室做仿真实验,并根据实验情况修正设计图;
周三至周五做插接线实验,最后根据实验情况总结、撰写设计说明书。
四、主要参考文献
1.各种版本的数字电子技术基础教材
2.各种版本的电子技术课程设计指导书
3.集成电路手册
指导教师签字:年月日
第四篇:单片机课程设计-电子钟-完整
单片机课程设计
题目
专业 通信工程 班级 11级1班 学号 姓名
电 子 钟 设 计
单片机原理与应用课程设计
电子钟设计
功能要求:
1、设计一个电子时钟,要求可以显示时、分、秒,用户可以设置时间。
2、实现秒表功能。
功能描述
(1)
时钟。初始界面是时钟显示,按键S1是调时选位,按键S2是加数。根据不同的闪烁位置进行调节。
(2)
年与日,星期。在初始状态下,按下S2,则跳转,显示年月日,5S后跳回初始界面。若在年月日界面再次按下S2,则再次跳转,显示星期,几秒后跳转回初始界面。
(3)
秒表。在初始界面下,按下S3,则跳转,进入秒表。秒表功能键如下:S1 退出秒表;S2 停止开始计时;S3 秒表清零。
(4)
闹钟。在设置中设置好时间,最高位设为“1”则打开闹钟。最高位设为“0”则关闭闹钟。在闹钟响是,按S3进行关闹钟。
工作原理 硬件
采用80C51系列单片机作为CPU,P0口作为数据线,通过锁存器进行段选和位选,是数码管不断地显示数字。数码管的显示是扫描式。(1)
本电子钟用的单片机型号是STC89C516RD+。P0口作为段选和位选的数据线。P10口为段选寄存器的使能端。P11口为位选寄存器的使能端。晶振采用的12MHz晶振。要求频率稳定。
(2)
本电子钟用的是共阴极数码管。从左到右,第1,2位是秒位;第4,5位是分位;第7,8位是时位。第3,6位是“--”。
(3)
通过单片机的P0口,先对数码管进行位选,即在位锁存器使能是将P0口数据进行锁存。再通过段锁存器将P0口送来的段数据进行锁存。此时数码管的第一位显示数字。同样的步骤进行第二位显示。以非常快的速度进行,由于人眼的余辉效应,会看到8位数码管一起亮。即可以显示时间。通过单片机的内部TO,T1的计数。即可以实现时钟,秒表等功能。(4)电路图如下:
软件
程序代码包括三部分:1.bujian(部件库)2.main(主函数)3.H(头文件库)。一 .bujian(部件库)(1)xianshi.c #include
//数码管秒个位
P0=t[s%10];p11=0;P0=0xff;delay(m);p10=1;p10=0;p11=1;P0=0xbf;p11=0;
//消隐
P0=t[s/10];
//消隐 //数码管秒十位
P0=0xff;delay(m);} void led_f(unsigned int s){ p10=1;// P0=t[s%10];p10=0;p11=1;P0=0xef;
p11=0;
P0=0xff;delay(m);p10=1;
P0=t[s/10];p10=0;p11=1;P0=0xf7;p11=0;
P0=0xff;delay(m);} void led_h(unsigned int s){
// p10=1;P0=t[s%10];p10=0;p11=1;P0=0xfd;
p11=0;// P0=0xff;delay(m);p10=1;
P0=t[s/10];p10=0;p11=1;P0=0xfe;p11=0;
数码管分个位 //消隐
//数码管分十位
//消隐
数码管时个位
消隐
//数码管时十位
//消隐
P0=0xff;delay(m);}
void line(void){ p10=1;P0=0x40;p10=0;p11=1;P0=0xfb;delay(m);p11=0;
p10=1;P0=0x40;p10=0;p11=1;P0=0xdf;p11=0;delay(m);}
//消隐
P0=0xff;
//数码管“---”
//消隐
P0=0xff;
//数码管“---”
(2)miaobiao.c #include
#include
{ while(!s3){led_s(mms);led_f(ms);line();led_h(mf);} TR1=0;mms=0;ms=0;mf=0;} } }
(3)Delay.c #include
void delay(unsigned int a)
{ unsigned char l;
while(a--)
{for(l=0;l<100;l++);} }
(4)gongneng.c #include
#include
if(s2==0){ delay(3);if(s2==0)while(!s2){ led_s(s);delay(1);line();led_f(f);delay(1);led_h(h);delay(1);}
// while(1){ led_s(r);delay(2);led_f(y);delay(2);line();led_h(nian);delay(2);aa++;if(s2==0)
{ while(!s2)
{
led_s(r);delay(1);line();led_f(y);delay(1);led_h(nian);delay(1);}
//星期显示
while(1)
{led_f(xing);delay(2);
bb++;
if(bb==100){bb=0;break;}
日期显示 }
}
if(aa==100)
line();led_f(y);delay(1);led_h(nian);delay(1);
} } if(s1==0){ delay(3);if(s1==0){
switch(x){ case 1 : if(shanshuo==1){led_s(s);} line();led_f(f);delay(2);led_h(h);delay(2);break;case 2 :led_s(s);if(shanshuo==1){led_f(f);} delay(2);line();led_h(h);delay(2);break;case 3 : led_s(s);led_f(f);delay(2);line();if(shanshuo==1){led_h(h);} delay(2);break;case 4 : if(shanshuo==1){led_s(r);} led_f(y);delay(2);line();led_h(nian);delay(2);break;case 5 : led_s(r);if(shanshuo==1){led_f(y);} delay(2);line();led_h(nian);delay(2);break;case 6 :led_s(r);led_f(y);delay(2);line();if(shanshuo==1){led_h(nian);} delay(2);break;case 7 :if(shanshuo==1){led_f(xing);delay(5);} break;case 8 :if(shanshuo==1){led_s(nf);} line();led_f(nh);delay(2);led_h(ns);delay(2);break;case 9 :led_s(nf);if(shanshuo==1){led_f(nh);} delay(2);line();led_h(ns);delay(2);break;case 10:led_s(nf);led_f(nh);delay(2);line();if(shanshuo==1){led_h(ns);} delay(2);break;default : break;}
aa++;if(s2==0){ while(!s2){if(x==1||x==2||x==3){ led_s(s);delay(1);line();led_f(f);delay(1);led_h(h);delay(1);} if(x==4||x==5||x==6){ led_s(r);delay(1);line();led_f(y);delay(1);led_h(nian);delay(1);} if(x==7){ led_f(xing);} if(x==8||x==9||x==10){led_s(nf);led_f(nh);delay(2);line();led_h(ns);delay(2);} }
switch(x)
{ case 1 : s++;if(s>59)s=0;break;
while(!s1);while(1)
{ if(x==1||x==2||x==3)TR0=0;else TR0=1;if(aa==20){shanshuo=!shanshuo;aa=0;}
{ break;} { led_s(r);delay(1);
} if(s1==0)
case 2 :
}
f++;if(f>59)f=0;break;
case 3 : h++;if(h>23)h=0;break;case 4 : r++;if(r>31)r=1;break;case 5 : y++;if(y>12)y=1;break;case 6 : case 7 :
nian++;if(nian>20)nian=10;break;xing++;if(xing>7)xing=1;break;
case 8 : nf++;if(nf>59)nf=0;break;case 9 : nh++;if(nh>23)nh=0;break;case 10: ns=!ns;break;
default: break;{while(!s1){if(x==1||x==2||x==3){ led_s(s);delay(1);line();led_f(f);delay(1);led_h(h);delay(1);} if(x==4||x==5||x==6){ led_s(r);delay(1);line();led_f(y);delay(1);led_h(nian);delay(1);} if(x==7){ led_f(xing);} if(x==8||x==9||x==10){led_s(nf);led_f(nh);delay(2);line();led_h(ns);delay(2);} }
x++;if(x>10){ x=0;TR0=1;break;} } } } } } } 二.H(头文件库)(1)Delay.h #ifndef _DELAY_H__
void led_s(unsigned int s);void led_h(unsigned int s);#define _DELAY_H__ void delay(unsigned int a);#endif(2)xianshi.h #ifndef _XIANSHI_H__ #define _XIANSHI_H__
void led_f(unsigned int s);void line(void);#endif(3)gongneng.h
#ifndef _DONGNENG_H__ #define _GONGNENG_H__ void gongneng(void);#endif(4)miaobiao.h
#ifndef _MIAOBIAO_H__ #define _MIAOBIAO_H__ void miaobiao(void);#endif(5)dingyi.h #ifndef _DINGYI_H__ #define _DINGYI_H__ sbit s1=P2^4;
sbit s2=P2^5;
sbit s3=P2^6;sbit p10=P1^0;sbit p11=P1^1;sbit p12=P1^2;#endif
//流水灯使能端 //按键1 //按键2 //按键3 sbit p37=P3^7;//蜂鸣器时能
三.Main(主函数)(1)main.c #include
ET0=1;TH0=6;TR0=1;
//关闭流水灯
ET1=1;TH1=(65535-5000)/256;TL1=(65535-5000)%256;TR1=0;while(1){ if((s3==0)&&(ns==0)){while(!s3);miaobiao();} if(s1==0||s2==0)gongneng();else { led_s(s);line();led_f(f);line();led_h(h);} if((f==nf)&&(h==nh)&&(ns==1))ll=1;else ll=0;} } void zhongduan(void)interrupt 1 {
if((ll==1)&&(ns==1))
{ p37=!p37;if((s3==0)&&(ns==1)){ while(!s3)ns=0;p37=1;} } n++;if(n==5000){n=0;s++;if(s==60){ s=0;f++;} if(f==60){ f=0;h++;}
if(h==24){ h=0;r++;xing++;} switch(r){ case 29 : if(nian/4==0){if(y==2)r=0;} y++;case 31 : if(y==4||y==6||y==9||y==11){ } if(xing>7)xing=1;if(y==13){ y=1;nian++;} } } default : break;
break;case 30 : if((nian/4)!=0){if(y==2){ r=0;y++;}} break;
r=0;y++;} break;case 32 : if(y==1||y==3||y==5||y==7||y==8||y==10||y==12){r=0;y++;} break;void zhongduan1(void)interrupt 3
{
TH1=(65535-5000)/256;
m++;TL1=(65535-5000)%256;if(m==2){mms++;m=0;if(mms>=100){ mms=0;ms++;} if(ms==60){ ms=0;mf++;} if(mf==60){ mf=0;} } }
参考文献:
单片机中级教程(第2版)、单片机语言C51程序设计(赵文博)感想: 这次课程设计整体来说是成功的,但我也发现了自己许多错漏和不足之处。譬如,最简单的程序没写好就想着写更复杂的程序,做事还是缺乏耐性和细心,当有时遇到问题时,总觉得无从下手,对于课本上的知识不能很好的组织起来。在编写各功能程序时,特别是后来增添的比较复杂的程序
第五篇:单片机课程设计电子钟源程序
ORG0000H
LJMPMAIN
ORG001BH
LJMPLOOP
ORG0100H
MAIN:MOV21H,#17H
MOV22H,#3AH
MOV23H,#00H;设定时间初值
MOV36H,#10
MOV39H,#10
MOVR7,#14H;循环20次50*20=1000msMOVDPTR,#0F003H
MOVA,#10000000B;8255命令口地址MOVX@DPTR,A
MOVTMOD,#10H
MOVTH1,#3CH
MOVTL1,#0B0H;设定计时初值
MOVIE,#88H;设定中断运行位
SETBTR1
LOP:LCALLSTART
LCALLDSN;调用显示程序
LJMPLOP
LOOP:MOVTH1,#3CH;重装时间初值
MOVTL1,#0B0H
DJNZR7,LOOP1;循环结束
MOVR7,#14H
INC23H
MOVA,23H
CJNEA,#3CH,LOOP1
MOV23H,#00H
INC22H
MOVA,22H
CJNEA,#3CH,LOOP1
MOV22H,#00H
INC21H
MOVA,21H
CJNEA,#18H,LOOP1
MOV21H,#00H
MOV22H,#00H
MOV23H,#00H
LOOP1: RETI
START: MOVR1,#21H;将小时放在两个位地址中MOVA,@R1
MOVB,#0AH
DIVAB
MOV3BH,A
MOV3AH,B
INCR1
MOVA,@R1
MOVB,#0AH
DIVAB
MOV38H,A
MOV37H,B
INCR1
MOVA,@R1
MOVB,#0AH
DIVAB
MOV35H,A
MOV34H,B
RET
DSN:MOVR0,#34H;显示子程序;显示数据缓冲区首址送R0
MOVR3,#7FH;使显示器最左边位亮
LP1:MOVDPTR,#0F000H;数据指针指向A口
MOVA,R3
MOVX@DPTR,A;送扫描值
INCDPTR;数据指针指向B口MOVA,@R0;取欲显示数据的字形码表位
PUSHDPH
PUSHDPL;显示查表指令地址偏移量
MOVDPTR,#TAB
MOVCA,@A+DPTR;取出字形码
POPDPL
POPDPH
MOVX@DPTR,A;送出显示
ACALLDELAY;调用延时子程序
INCR0;指向下一个显示缓冲区地址MOVA,R3
JNBACC.0,LP2;扫描到第八个显示器?
RRA;未到,扫描码右移一位
MOVR3,A
AJMPLP1
LP2:RET
TAB:DB0FCH,60H,0DAH,0F2H,66H,0B6H
DB0BEH,0E0H,0FEH,0F6H,02H,0DFH
DELAY: MOVR5,#05H;延时子程序
DL1:MOVR6,#0FFH
DL2:DJNZR6,DL2
DJNZR5,DL1RET
END