数字钟流程图(汇编语言)
- 格式:doc
- 大小:103.50 KB
- 文档页数:12
微机原理课程设计题目名称:数字钟姓名:学号:专业:指导老师:同组者:江汉大学物理与信息工程学院一.设计目的和意义:1.熟悉集成电路的引脚安排.2.掌握各芯片的逻辑功能及使用方法.3.了解面包板结构及其接线方法.4.了解数字钟的组成及工作原理.5.熟悉数字钟的设计与制作.二.系统设计框架:系统硬件设计主要利用微机实验平台上的电路模块。
硬件电路主要由键盘电路、单脉冲产生单元、8254定时计数器、8255并行接口单元、8259中断控制器和LED显示电路等等。
系统设计框图如图1所示。
图1 系统设计框图三.工作原理1)计时单元由定时/计数器8254的通道0来实现。
定时采用硬件计数和软件技术相结合的方式,即通过8254产生一定的定时时间,然后再利用软件进行计数,从而实现1小时制定时。
8254定时时间到了之后产生中断信号,8254在中断服务程序中实现分、秒的累加。
2)时间显示采用实验平台上的4个LED数码管分别显示分、秒,采用动态扫描方式实现。
3)校时和闹铃定时通过键盘电路和单脉冲产生单元来输入。
按键包括校时键、闹钟定时键、加1键和减1键等。
四.硬件设计根据设计思路,硬件电路可通过实验平台上的一些功能模块电路组成,由于实验平台上的各个功能模块已经设计好,用户在使用时只要设计模块间电路的连接,因此,硬件电路的设计及实现相对简单。
完整系统的硬件连接如图2所示。
硬件电路由定时模块、按键模块、数码管显示模块和蜂鸣器模块组成。
图2 硬件连接图各个模块的详细说明:1.定时模块定时模块主要是实现硬件定时1s,由8254的计数器0来实现。
Clk0接实验平台分频电路输出IRQ,f=1hz。
GATE0接+5V,由8255的PA0输出来控制计数器的起停。
OUT0接8259的IRQ2,定时完成请求中断,进入中断服务程序。
软件在中断服务程序中实现时分秒的累加。
2.LED数码管模块实验平台上提供一组4个LED数码管。
插孔A-G用于数码管段选的输出选通,插孔X1-X4用于数码管位选信号的输出选通。
单片机汇编语言电子时钟设计随着科技的快速发展,单片机技术已经成为了现代电子工程中不可或缺的一部分。
使用单片机设计电子时钟,可以通过编程语言对单片机进行控制,从而实现精确的时间显示和时间控制。
本文将介绍一种基于单片机汇编语言的电子时钟设计方案。
一、设计原理电子时钟是一种以数字形式显示时间的装置,它通常由单片机、显示模块、电源模块等组成。
其中,单片机作为核心控制单元,负责处理各种信号和指令,并控制显示模块显示时间。
在这个系统中,单片机的任务包括读取时钟芯片的时间数据、处理按键输入、控制显示模块等。
二、硬件设计1、单片机选择在单片机选择方面,我们选用AT89S52型号的单片机。
该单片机具有低功耗、高性能的特点,内部含有8K字节的Flash存储器和256字节的RAM,同时具有丰富的外设接口,如UART、SPI、I2C等。
2、时钟芯片选择时钟芯片选用DS1302型号,该芯片具有精度高、稳定性好的优点,可以提供年、月、日、时、分、秒等时间信息。
DS1302芯片通过SPI 接口与单片机进行通信。
3、显示模块选择显示模块选用LCD1602型号,该模块具有体积小、功耗低、显示内容丰富的优点,可以同时显示时间、日期和星期几等信息。
LCD1602模块通过并行接口与单片机进行通信。
4、按键模块选择按键模块选用四个独立按键,分别实现小时加、小时减、分钟加、分钟减功能。
按键通过单片机的外部中断引脚与单片机进行通信。
三、软件设计1、程序流程程序流程主要包括以下几个部分:系统初始化、读取DS1302芯片的时间数据、处理按键输入、控制LCD1602模块显示时间等。
具体流程如图1所示。
图1程序流程图2、关键代码实现在程序的关键部分,我们需要实现读取DS1302芯片的时间数据、处理按键输入、控制LCD1602模块显示时间等功能。
下面是一些关键代码的实现:(1)读取DS1302芯片的时间数据:MOV DPTR, #0x68 ; DPTR指向DS1302的空间MOV R7, #0x00 ;设置寄存器R7为0x00,用于读取时间数据MOV A, R7 ;将R7的值存入A寄存器MOVC A, @A+DPTR ;从DS1302中读取一个字节的数据,存入A寄存器中MOV B, A ;将A寄存器的值存入B寄存器,准备送入LCD1602模块中显示本文…(省略其他代码)…… ;处理其他数据和指令SJMP $ ;无限循环,等待下一次中断或指令执行完毕后再次回到此处执行下一轮循环。
课程设计说明书姓名:学号:院系:专业:题目:实时时钟程序设计指导教师:职称:课程设计说明书院系:专业:姓名:学号:课程设计题目:实时时钟程序设计起迄日期:课程设计地点:指导教师:系主任:课程设计任务书课程设计任务书目录第一章课题设计目的容及要求 (6)1.1 目的................ ... . . . . . . . . .61.2 容 (6)1.3 要求 (6)第二章程序流程图设计 (2)2.1主流程图设计 (2)2.2子流程图设计.............. 错误!未定义书签。
第三章程序段落的说明 (8)3.1光标的设立和隐藏 (8)3.2调用系统的时间 (5)3.3判断是否有键盘的输入 (6)第四章程序调试说明、结果记录与分析 (7)4.1程序调试的过程 (7)4.2调试结果 (7)4.3分析结果 (8)第五章总结与体会 (8)参考文献 (8)附录 (9)1.程序流程图 (9)2.程序清单 (11)第一章课题设计目得容及要求1.1 目得1)培养学生文献检索的能力,特别是如何利用Internet检索需要的文献资料。
2)培养学生综合分析问题、发现问题和解决问题的能力。
3)培养学生运用知识的能力和工程设计的能力。
4)提高学生课程设计报告撰写水平。
1.2 容设计一个根据所学汇编语言课程的知识,熟练8086汇编语言的编程原理,和程序设计思想,编写一个实时时钟程序进一步提高综合运用知识的能力。
1.3 要求每隔一秒显示系统时钟;可以重复输入,有退出键功能。
第二章程序流程图设计2.1主流程图设计由方案设计分析可知,此次设计比较简单,先初始化程序,然后设立光标,在光标移动时,不断地取时,取分,取秒,并不断的循环。
在循环的过程中,当按下ESC键时退出程序;当按下其它键时,程序继续运行,并显示时间界面,再按下ESC键时,程序又将退出。
流程图设计:当初始化后,设定一个光标用来显示时间的时、分、秒,并将光标隐藏。
实验设计报告项目名称:多功能数字钟电路设计作者姓名:指导教师:年级专业:所在学院:提交日期摘要20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
现代生活的人们越来越重视起了时间观念,可以说是时间和金钱划上了等号。
对于那些对时间把握非常严格和准确的人或事来说,时间的不准确会带来非常大的麻烦,所以以数码管为显示器的时钟比指针式的时钟表现出了很大的优势。
数码管显示的时间简单明了而且读数快、时间准确显示到秒。
而机械式的依赖于机械震荡器,可能会导致误差。
数字钟是采用数字电路实现对“时”、“分”、“秒”数字显示的计时装置。
数字钟的精度、稳定度远远超过老式机械钟。
在这次设计中,我们采用LED数码管显示时、分、秒,以24小时计时方式,根据数码管动态显示原理来进行显示,用12MHz的晶振产生振荡脉冲,定时器计数。
在此次设计中,电路具有显示时间的其本功能,还可以实现对时间的调整。
数字钟以其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费的喜爱,因此得到了广泛的使用。
数字钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。
因此,我们此次设计与制做数字钟就是为了了解数字钟的原理,从而学会制作数字钟.而且通过数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及实用方法。
且由于数字钟包括组合逻辑电路和时叙电路。
通过它可以进一步学习与掌握各种组合逻辑电路与时序电路的原理与使用方法。
目录第一章:设计要求 (1)第二章:方案论证 (2)第三章:单元电路设计与计算 (13)第四章:软件设计 (20)第五章:系统测试 (36)第六章:结论 (38)参考文献 (39)附录 (40)第一章:设计要求1.1 基本要求1.1.1 时钟功能设计一个具有时、分、秒计时的数字钟电路,计时采用24小时制。
永州职业技术学院课程设计课程名称:EDA技术实用教程题目:基于FPGA的数字钟设计系、专业:电子技术系应用电子年级、班级:07级电子大专学生姓名:**指导老师:***时间:2008年12月目录一、系统设计………………………………………………………..1.1设计要求……………………………………………………1.1.1任务………………………………………………..1.1.2要求……………………………………………….1.1.3题目分析…………………………………………二.方案论证与比较…………………………………2.1方案一…………………………………………2.2 方案二…………………………………………2.3 方案三…………………………………………三、设计思路……………………………………………………3.1硬件模块………………………………………………3.2软件模块………………………………………………….四、调试情况………………………………………………….五、系统调试…………………………………………………六、心得体会……………………………………………………... 附:参考文献……………………………………………………..用VHDL语言编写的数字钟程序摘要:本设计要求一个12进制或24进制的具有时、分、秒计时功能的数字钟,并要求能进行时、分、秒调整,每逢时有报时功能。
数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。
本设计基于FPGA芯片的数字钟的设计,通过多功能数字钟的设计思路,详细叙述了整个系统的硬件、软件实现过程,实现了时间的显示和修改功能、报时功能等,并尽可能的减少误差,使得系统可以达到实际数字钟的允许误差范围内。
关键词:FBGA、数码管、按键一、系统设计1.1 设计要求1.1.1 任务设计并制作一个数字钟,通过设计,掌握电子设计的一般思路,学习电子设计的一般方法。
汇编语⾔实现电⼦闹钟思路详解2.1 设计思路⾸先使⽤8255、8254、8259 三个芯⽚实现电⼦时钟的功能,让闹钟可以正常⾛时;其次,在时钟的基础上添加闹铃功能、整点报时功能、设置当前时间功能;完成设计。
2.2 设计⽅案1. 电⼦时钟部分:此次设计是通过对计数器8254设定计数值对脉冲进⾏计数,在程序⾥,8254⼯作于计数器0,⽅式3。
接⼊的CLK为1MHz,设计数初值为10000,每100次中断计数⼀次,产⽣的记数时间正好是时钟每秒⾛过的时间。
通过对中断控制器8259设置初始化命令字初值来控制中断。
程序中通过移位指令来实现时、秒、分的个位和⼗位的独⾃存储,将分、秒的个位⼗位分别存⼊指定的寄存器中。
⽐较转移指令来完成秒和分的累加。
七段数码管由8255并⾏接⼝的A⼝进⾏位的选择,通过B⼝输出要显⽰的段码。
这样就在6个七段数码管上分别显⽰时、分和秒。
当1S时间到时,修改当前数码管数值,10秒时将秒的低位清零,⾼位加1,分和时亦是如此;到达60秒时,将秒清零,分加1,到达60分时,将分清零,⼩时加1,到达24⼩时则全部清零。
2. 闹钟响铃部分:对于闹钟部分,我们⾸先要完成数码管显⽰单元按键的连接和设计,让16个按键分别为0-F;再利⽤实验平台的单次脉冲输⼊KK1产⽣⼀次中断,这样就可以设置时间了。
将设置好的时间储存起来,时刻与当前的时间进⾏⽐较,当时间⼀样时,计数器1⼯作,蜂鸣器蜂鸣,播放⾳乐,这就完成了闹钟响铃功能。
3. 整点报时部分:整点报时,就是在整时的时候响⼀次铃,当时钟整点时,⽆论是⼏点,时钟的分和秒部分都为零,所以,只要让时钟的分和秒部分与零进⾏⽐较,当他们都相等时,就代表到达整点了,可以响铃了。
整点报时就完成了,本闹钟设置的整点报时时长为5秒。
4. 设置当前时间:本部分也⽤到了数码管显⽰单元的按键部分,只要利⽤之前的设计就好了,这次使⽤单次脉冲输⼊的KK2产⽣中断设置时间,再将设置的时间存储在时间变量中,时间就设置好了。
数字钟的设计」、任务要求:(1) 设计一个数字钟。
(2) 具有时,分,秒计数显示功能,以24小时循环计时(3) 具有清零,调节小时、分钟功能。
(4) 具有整点报时功能,整LED灯花样显示。
1、系统框图:T荃点捱吋盘花畔亦,*5fS*.三、模块说明(含程序代码)1.秒模块程序清单library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_ un sig ned.all;en tity SECOND isport(clk,clr:in std_logic;----时钟/清零信号sec1,sec0:out std」ogic_vector(3 downto 0);----秒高位/低位co:out std」ogic); 输出/进位信号end SECOND;architecture SEC of SECOND isbeginprocess(clk,clr)variable cnt1,cnt0:std_logic_vector(3 downto 0);--- 计数beginif clr='1' then----当ckr为1时,高低位均为0cnt1:="0000";cnt0:="0000";elsif clk'eve nt and clk='1' the nif ent仁"0101" and cnt0="1000" then----当记数为58(实际是经过59个记时脉冲) co<='1';----进位cnt0:="1001";----低位为9elsif cnt0<"1001" then----小于9 时cnt0:=cnt0+1;----计数elsecntO:="OOOO";if cnt1<"0101" then----高位小于 5 时 cnt1:=cnt1+1; elsecnt1:="0000"; co<='0'; end if; end if; end if; sec1<=c ntl; sec0<=c ntO; end process; end SEC;秒模块仿真波形mwmnnmuuuumjumnmnnnnnmmjuuuuumnR秒模块原理图Ei i 1Jsecip. 0J «oD[3.4]coi insti. . 1 B 1. .iVW 召当clr=1时,秒的高低位清零;当 clr=0时,来一个时钟信号 sec0加1,当sec0加到九时清零,co=1, secl 加1。
单片微型计算机课程设计报告多功能电子数字钟姓 名 许伟敏学 号 060301021124班 级 电气二班指导教师 林卫2009-06-25目录一:概述 (1)二:设计基本原理简介 (2)三:设计要求及说明 (3)四:整体设计方案 (4)系统硬件电路设计 4系统软件总流程设计 5模块划分及分析 6五:单模块流程设计 (8)各模块设计概述、流程图 8模块源程序集合及注释 13六:单模块软件测试 (23)七:系统检测调试 (24)硬件电路调试软件部分烧写调试八:系统优化及拓展 (26)九:心得体会 (28)单片微型计算机课程设计 基于汇编语言的电子数字钟 概述课程设计流程图↑一、概述课程设计题目:电子数字钟应用知识简介:● 51单片机单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
作为嵌入式系统控制核心的单片机具有其体积小、功能全、性价比高等诸多优点。
51系列单片机是国内目前应用最广泛的单片机之一,随着嵌入式系统、片上系统等概念的提出和普遍接受及应用,51系列单片机的发展又进入了一个新的阶段。
在今后很长一段时间内51系列单片机仍将占据嵌入式系统产品的中低端市场。
● 汇编语言汇编语言是一种面向机器的计算机低级编程语言,通常是为特定的计算机或系列计算机专门设计的。
汇编语言保持了机器语言的优点,具有直接和简捷的特点,其代码具有效率高实时性强等优点。
但是对于复杂的运算或大型程序,用汇编语言编写将非常耗时。
汇编语言可以与高级语言配合使用,应用十分广泛。
● ISPISP (In-System Programming )在系统可编程,是当今流行的单片机编程模式,指电路板上的空白元器件可以编程写入最终用户代码,而不需要从电路板上取下元器件。
已经编程的器件也可以用ISP 方式擦除或再编程。
本次课程设计便使用ISP 方式,直接将编写好的程序下载到连接好的单片机中进行调试。
目录第1章、概述1.1 设计目的 (1)设计要求 (1)第2章、系统总体方案设计2.1 设计方案 (2)2.2 硬件设计 (2)2.3 电子时钟程序流程图 (5)第3章、方案实施3.1 单片机简介 (6)3.2 动态LCD液晶显示器显示 (7)3.3 软件调试及调试方法 (8)第4章、总结 (10)附录、源代码及电路原理图 (14)第1章概述、设计目的1熟悉整个项目的流程即单片机系统设计过程2 学会使用各种仿真软件3熟练的使用汇编语言编写小的应用程序4 掌握系统的调试与安装5提高学生的自学能力和动手能力、设计要求1、主电路系统由秒信号发生器、“时、分、秒”计数器、显示器、校时电路组成。
2、秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加分频器来实现。
将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。
“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。
“时计数器”采用24进制计时器,可实现对一天24小时的累计3、软件程序通过单片机将“时”、“分”、“秒”计数器的输出状态通过液晶显示器显示出来。
4、整点报时电路时根据计时系统的输出状态产生一脉冲信号,然后去触发一音频发生器实现报时5、校时电路时用来对“时”、“分”、“秒”显示数字进行校对调整的。
第2章、系统总体方案设计2.1设计方案1)方案讨论和设计:倒计时数字秒表的设计主要考虑以下几个问题:一,LCD液晶显示器如何显示数字0—9;二,如何用单片机来控制LCD的显示;三,单片机最小模式下的设计。
处理好这些问题此设计才能完整,为此必须先了解LCD的显示原理和接线方法,再了解单片机的组成原理和控制方法。
硬件电路的绘制和软件程序的编写是此次设计的关键和基础,只有硬件电路的设计是正确的、合理的,软件设计才可以根据硬件电路编程,以下的设计才能够进行。
单片机课程设计目录前言 (3)一、系统方案选择与论证 (4)1.1数字电子钟设计的要求及技术指标 (4)1.2设计方案论证 (5)1.3元器件清单 (5)1.4电路说明 (6)二、安装与调试 (9)2.1准备元件和工具 (9)2.2 安装元件 (9)2.3测试与调试 (10)三、主程序设计 (14)3.1主程序设计 (14)四、总结 (21)前言20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。
忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。
但是,一旦重要事情,一时的耽误可能酿成大祸。
例如,许多火灾都是由于人们一时忘记了关闭煤气或是忘记充电时间。
尤其在医院,每次护士都会给病人作皮试,测试病人是否对药物过敏。
注射后,一般等待5分钟,一旦超时,所作的皮试试验就会无效。
手表当然是一个好的选择,但是,随着接受皮试的人数增加,到底是哪个人的皮试到时间却难以判断。
所以,要制作一个定时系统。
随时提醒这些容易忘记时间的人。
钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。
诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。
因此,研究数字钟及扩大其应用,有着非常现实的意义。
数字集成电路的出现和飞速发展,以及石英晶体振荡器的广泛应用,使得数字钟的精度稳定度远远超过了老式的机械表,用数字电路实现对“时”、“分”、“秒”数字显示的数字钟在数字显示方面,目前已有集成的计数、译码电路,它可以直接驱动数码显示器件,也可以直接采用才COMS--LED光电组合器件,构成模块式石英晶体数字钟。
汇编数字钟(8位数码管显示)这款数字钟是笔者亲自试验过的作品,电路图和程序都经过优化,供爱好者制作参考。
显示格式依然是23-59-59(同样是小时十位如果为0则不显示),调整时间增加了一只按钮,通过调整选择键SET_KEY选择调整位,选中位开始闪烁,此时再按增加键ADD_KEY或减少键DEC_KEY调整选中位,如果长按ADD_KEY或DEC_KEY,系统识别后则进行调时快进,此时停止闪烁,方便人眼观察。
同时还增加了调秒功能:如果选中位是秒,则按增加键或减少键都是将秒清零。
汇编程序设计:/**************************************************************程序名称:51单片机8位数码管数字钟汇编程序简要说明:实现24小时制电子钟,8位数码管显示,显示时分秒显示格式:23-59-59(小时十位如果为0则不显示)通过3只按键来调整时间调整选择键SET_KEY:P1.0;通过选择键选择调整位,选中位闪烁增加键ADD_KEY:P1.1;按一次使选中位加1减少键DEC_KEY;P1.2;按一次使选中位减1如果长按ADD_KEY或DEC_KEY,识别后则进行调时快进,此时停止闪烁如果选中位是秒,则按增加键或减少键都是将秒清零P0口输出数码管段选信号,P2口输出数码管位选信号。
晶振12M编写:最后更新:08/12/31晚**************************************************************/ ORG 0000H ;程序入口地址LJMP STARTORG 000BH ;定时器0中断入口地址LJMP TIMER_0ORG 0300H/*****程序开始,初始化*****/START:SETB 48H ;使用一个bit位用于调时闪烁标志SETB 47H ;使用一个bit位用于产生脉冲用于调时快进时基MOV R1,#0 ;调整选择键功能标志:0正常走时、1调时、2调分、3调秒MOV 20H,#00H ;用于控制秒基准时钟源的产生MOV 21H,#00H ;清零秒寄存器MOV 22H,#00H ;清零分寄存器MOV 23H,#00H ;清零时寄存器MOV 24H,#00H ;用于控制调时闪烁的基准时钟的产生MOV IP,#02H ;IP,IE初始化MOV IE,#82HMOV TMOD,#01H ;设定定时器0工作方式1MOV TH0,#3CHMOV TL0,#0B0H ;赋定时初值,定时50msSETB TR0 ;启动定时器0MOV SP,#40H ;重设堆栈指针/*****主程序*****/MAIN:LCALL DISPLAY ;调用显示子程序LCALL KEY_SCAN ;调用按键检测子程序JZ MAIN ;无键按下则返回重新循环LCALL SET_KEY ;调用选择键处理子程序JB 46H,MAIN ;如果已进行长按调整(调时快进),则不再执行下面的单步调整LCALL ADD_KEY ;调用增加键处理子程序,加一LCALL DEC_KEY ;调用减少键处理子程序,减一LJMP MAIN ;重新循环/*****定时器中断服务程序*****/TIMER_0:PUSH ACCPUSH PSW ;保护现场MOV TH0,#3CHMOV TL0,#0B0H ;重新赋定时初值CPL 47H ;产生脉冲用于调时快进时基INC 24HMOV A,24HCJNE A,#10,ADD_TIME ;产生0.5秒基准时钟,用于调时闪烁CPL 48H ;取反调时闪烁标志位MOV 24H,#00HADD_TIME: ;走时INC 20HMOV A,20HCJNE A,#20,RETI1 ;产生1秒基准时钟MOV 20H,#00H ;一秒钟时间到,清零20H MOV A,21HADD A,#01HDA A ;作十进制调整MOV 21H,ACJNE A,#60H,RETI1MOV 21H,#00H ;一分钟到MOV A,22HADD A,#01HDA AMOV 22H,ACJNE A,#60H,RETI1MOV 22H,#00H ;一小时到MOV A,23HADD A,#01HDA AMOV 23H,ACJNE A,#24H,RETI1MOV 23H,#00H ;到24点,清零小时RETI1:POP PSWPOP ACC ;恢复现场RETI ;中断返回/*****显示处理*****/DISPLAY:MOV A,21H ;秒ANL A,#0FHMOV 2FH,A ;转换出秒个位,存入2FHMOV A,21HANL A,#0F0HSWAP AMOV 2EH,A ;转换出秒十位,存入2EHJB 46H,MIN ;如果长按按键(调时快进),则跳过闪烁处理程序CJNE R1,#3,MIN ;如果R1为3,闪烁秒位待调整JB 48H,MINMOV 2FH,#0AH ;使该位为10,查表得到使该位不显示的输出MOV 2EH,#0AHMIN:MOV A,22H ;分ANL A,#0FHMOV 2DH,A ;转换出分个位,存入2DHMOV A,22HANL A,#0F0HSWAP AMOV 2CH,A ;转换出分十位,存入2CHJB 46H,HOUR ;如果长按按键(调时快进),则跳过闪烁处理程序CJNE R1,#2,HOUR ;如果R1为2,闪烁分位待调整JB 48H,HOURMOV 2DH,#0AH ;使该位为10,查表得到使该位不显示的输出MOV 2CH,#0AHHOUR:MOV A,23H ;时ANL A,#0FHMOV 2BH,A ;转换出时个位,存入2BHMOV A,23HANL A,#0F0HSWAP AMOV 2AH,A ;转换出时十位,存入2AHJB 46H,DISP ;如果长按按键(调时快进),则跳过闪烁处理程序CJNE R1,#1,DISP ;如果R1为1,闪烁时位待调整JB 48H,DISPMOV 2BH,#0AH ;使该位为10,查表得到使该位不显示的输出MOV 2AH,#0AH/*****数码管动态扫描显示*****/DISP:MOV DPTR,#TABLEMOV A,2FHMOVC A,@A+DPTRMOV P0,ACLR P2.7LCALL DELAYSETB P2.7 ;显示秒个位MOV A,2EHMOVC A,@A+DPTRMOV P0,ACLR P2.6LCALL DELAYSETB P2.6 ;显示秒十位MOV A,#0BFHMOV P0,ACLR P2.5LCALL DELAYSETB P2.5 ;显示“-”MOV A,2DHMOVC A,@A+DPTRMOV P0,ACLR P2.4LCALL DELAYSETB P2.4 ;显示分个位MOVC A,@A+DPTRMOV P0,ACLR P2.3LCALL DELAYSETB P2.3 ;显示分十位MOV A,#0BFHMOV P0,ACLR P2.2LCALL DELAYSETB P2.2 ;显示“-”MOV A,2BHMOVC A,@A+DPTRMOV P0,ACLR P2.1LCALL DELAYSETB P2.1 ;显示时个位MOV DPTR,#TABLE1 ;该位使用TABLE1以消除前置0MOV A,2AHMOVC A,@A+DPTRMOV P0,ACLR P2.0LCALL DELAYSETB P2.0 ;显示时十位RET/*****按键检测子程序*****/KEY_SCAN:CLR 46H ;关闭长按调整(调时快进)标志MOV P1,#0FFH ;将P1口设置成输入状态MOV A,P1CPL AANL A,#07H ;P1口低3位连接3个按键,只判断该3位JZ EXIT_KEY ;无键按下则返回LCALL DELAY ;延时去抖动MOV A,P1 ;重新判断CPL AJZ EXIT_KEY ;键盘去抖动MOV R5,A ;临时将键值存入R5MOV R4,#00H ;用于控制调时快进速度;设置为00H是为了在进入长按处理前加长延时区分用户的长按与短按,防止误快进LOOP: ;进入长按处理LCALL DISPLAY ;使长按时显示正常MOV A,P1CPL AANL A,#07HJB 47H,LOOP1INC R4 ;调时快进间隔时间基准加1LOOP1:CJNE R1,#03H,LOOP2 ;如果调秒时长按,则不处理LJMP LOOP3LOOP2:CJNE R4,#99H,LOOP3MOV R4,#70H ;确认用户长按后,重新设定起始值,加快调时快进速度SETB 46H ;长按调整(调时快进)标志LCALL ADD_KEYLCALL DEC_KEYLOOP3:JNZ LOOP ;等待键释放MOV A,R5 ;输出键值RETEXIT_KEY:RET/*****延时子程序*****/DELAY:MOV R7,#150DJNZ R7,$RET/*****选择键处理子程序*****/SET_KEY:CJNE R5,#01H,EXIT ;选择键键值INC R1 ;调整选择功能标志加一CJNE R1,#4,EXITMOV R1,#0MOV 24H,#00H ;调时闪烁基准清零RET/*****增加键处理子程序*****/ADD_KEY:CJNE R5,#02H,EXIT ;增加键键值CJNE R1,#01H,NEXT1 ;选择键功能标志为1,调时,否则跳出MOV A,23HADD A,#01HDA AMOV 23H,ACJNE A,#24H,EXITMOV 23H,#00HNEXT1:CJNE R1,#02H,NEXT2 ;选择键功能标志为2,调分,否则跳出MOV A,22HADD A,#01HDA AMOV 22H,ACJNE A,#60H,EXITMOV 22H,#00HNEXT2:CJNE R1,#03H,EXIT ;选择键功能标志为3,调秒,否则跳出MOV 21H,#00H ;如增加键按下直接清零秒RET/*****减少键处理子程序*****/DEC_KEY:CJNE R5,#04H,EXIT ;减少键键值CJNE R1,#01H,NEXT3 ;选择键功能标志为1,调时,否则跳出MOV A,23HADD A,#99HDA AMOV 23H,ACJNE A,#99H,EXITMOV 23H,#23HNEXT3:CJNE R1,#02H,NEXT4 ;选择键功能标志为2,调分,否则跳出MOV A,22HADD A,#99HMOV 22H,ACJNE A,#99H,EXIT MOV 22H,#59HCJNE R1,#03H,EXIT ;选择键功能标志为3,调秒,否则跳出MOV 21H,#00H ;如较少键按下直接清零秒RET/*****万用返回子程序*****/EXIT:RET/*****数码管字形编码表*****/TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH ;字形显示编码TABLE1:DB 0FFH,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH ;小时位的十位数编码,该位如果为0则不显示END ;程序结束(注:可编辑下载,若有不当之处,请指正,谢谢!)。
多功能电⼦时钟设计(汇编语⾔完美版)电⼦时钟实验报告⼀,实验⽬的1. 学习8051定时器时间计时处理、按键扫描及LED数码管显⽰的设计⽅法。
2. 设计任务及要求利⽤实验平台上4个LED数码管,设计带有闹铃功能的数字时钟⼆,实验要求A.基本要求:1. 在4位数码管上显⽰当前时间。
显⽰格式“时时分分”2. 由LED闪动做秒显⽰。
3. 利⽤按键可对时间及闹玲进⾏设置,并可显⽰闹玲时间。
当闹玲时间到蜂鸣器发出声响,按停⽌键使可使闹玲声停⽌。
4.实现秒表功能(百分之⼀秒显⽰)B.扩展部分:1.⽇历功能(能对年,⽉,⽇,星期进⾏显⽰,分辨平年,闰年以及各⽉天数,并调整)2.⾳乐闹铃(铃⾳可选择,闹铃被停⽌后,闪烁显⽰当前时刻8秒后,或按键跳⼊正常时间显⽰状态)3.定时功能(设定⼀段时间长度,定时到后,闪烁提⽰)4.倒计时功能(设定⼀段时间长度,能实现倒计时显⽰,时间长减到0时,闪烁提⽰)5.闹铃重响功能(闹铃被停⽌后,以停⽌时刻开始,⼀段时间后闹铃重响,且重响时间的间隔可调)三,实验基本原理利⽤单⽚机定时器完成计时功能,定时器0计时中断程序每隔0.01s中断⼀次并当作⼀个计数,设定定时1秒的中断计数初值为100,每中断⼀次中断计数初值减1,当减到0时,则表⽰1s到了,秒变量加1,同理再判断是否1min钟到了,再判断是否1h到了。
为了将时间在LED数码管上显⽰,可采⽤静态显⽰法和动态显⽰法,由于静态显⽰法需要译码器,数据锁存器等较多硬件,可采⽤动态显⽰法实现LED显⽰,通过对每位数码管的依次扫描,使对应数码管亮,同时向该数码管送对应的字码,使其显⽰数字。
由于数码管扫描周期很短,由于⼈眼的视觉暂留效应,使数码管看起来总是亮的,从⽽实现了各种显⽰。
四,实验设计分析针对要实现的功能,采⽤AT89S51单⽚机进⾏设计,AT89S51 单⽚机是⼀款低功耗,⾼性能CMOS8位单⽚机,⽚内含4KB 在线可编程(ISP)的可反复擦写1000次的Flash只读程序存储器,器件采⽤⾼密度、⾮易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构。
;--------------------------------------------------------------------; 时钟程序; 定时器T0中断服务中产生时钟数据; 在定时器T1中断服务程序中动态显示8个数码管。
; P1口接七段数码管的段码,P2.2、P2.3、P2.4口接数码管的位控制码。
; 设计:黄有全; 2009年11月1日;--------------------------------------------------------------------;定义变量名称Hour EQU 30HMin EQU 31HSec EQU 32HMS EQU 3BHHour_10 EQU 33HHour_0 EQU 34H ;37H;实验板用37HHgan1 EQU 35HMin_10 EQU 36H ;39H;实验板用39HMin_0 EQU 37H ;34H;实验板用36HHgan2 EQU 38HSec_10 EQU 39H ;36H;实验板用36HSec_0 EQU 3AHLED1 EQU 40HLED2 EQU 41HLED3 EQU 42HLED4 EQU 43HLED5 EQU 44HLED6 EQU 45HLED7 EQU 46HLED8 EQU 47HORG 0000HLJMP MAINORG 000BHLJMP CREATE_DA TA ;定时器T0中断处理,完成时间基准产生与时间、日期处理。
ORG 001BHLJMP DISPLAY ;定时器T1中断处理,完成动态显示功能。
ORG 0030HMAIN: LCALL INITIAIL ;初始化程序模块MM0: LCALL KEY_PRO ;按键处理模块LCALL CHANGE_DA TA ;数据转换模块LCALL CHANGE_DIS ;显示段码转换模块LJMP MM0;------------------------------------;初始化程序模块;------------------------------------INITIAIL:MOV SP, #50H ;设置堆栈指针为68H。
电子闹钟一、课题容和要求题目描述:利用汇编语言实现一个可以在显示器上显示时、分、秒的电子时钟,并能提供整点报时功能。
基本要求:(1)设计一个基本的具有显示时、分、秒的电子时钟。
(2)到整点或预定的报警时间,能够以不同的音乐进行报时,可以自行设置闹钟报警时间;(3)实物演示时要求讲出程序原理和设计思想;(4)程序运行良好、界面清晰。
提高要求:设计一个具有钟面、分针、秒针的指针式钟表,在圆盘上有均匀分布的60根刻度,对应小时的刻度用不同颜色的长刻度区别,并且将12、3、6、9对应的拉丁文绘制于表盘外。
设计提示:(1)指针式钟表的绘制。
将屏幕设置成图形显示方式,通过画点、画线,画圆等基本程序完成钟表的绘制。
表盘圆周上刻度线段两端点坐标计算是钟表绘制的核心部分。
(2)秒针、分针、时针的转动。
是经过一定的延时时间,通过在下一位置重新画一个,在原来的位置用背景色覆盖的方法实现。
(3)音乐的演奏。
利用CPU支持的外围电路8254与8255,通过汇编程序改变8255的PB0,PB1口,接通扬声器,使得计算机能够发出一定频率的声音,同时通过8254的与8255连接的2号计数器控制指定频率,从而达到控制扬声器的音乐的效果。
通过建立适当的延时程序达到一定时间后则改变2号计数器产生的方波的频率,实现音乐程序的演奏。
二、需求和思路分析经分析本次程序设计的主要容主要分为如下的几个模块:当前时间的获取并显示,码制转换,设定闹钟报鸣的时间,不同频率的闹铃声,钟表的绘制和并实现动态等模块。
其中钟表的绘制和动态走动部分比较难是本次课程设计的提高部分,且改模块可单独形成一个模块,所以放到最后进行考虑1时间的获取可以用INT 21H的2CH功能,该功能调用DOS时间调用功能,功能号:2CH,小时,分钟,秒数分别保存在,保存的形式是以二进制的形式,故显示时要2码制转化利用ASCII码与二进制码的关系ASCII=二进制+30H3闹钟鸣叫主要利用8254的二号计数器和8255的PB0和PB1来设定4 闹钟的表盘,指针的绘制,并实现时针,分针,秒针的走动。
简易数字钟 一、实验内容本实验的主要内容是根据提供的元器件,设计一个简易数字钟。
1、要求准确显示“时”、“分”、“秒”,24 小时制; 2、具有校时功能,用户可以修改“时”、“分”,且互不影响; 3、时间显示可以实现12/24小时制切换;设计应包括方案选择、硬件系统设计、软件系统设计等。
硬件设计包括单片机最小系统设计、单元电路设计;软件设计包括模块化层次结构图、程序流程图 等。
通过调试与仿真,进一步完善设计,使之达到实验要求,使其更接近于实际 产品。
最后要求撰写设计实验报告,把设计内容,调试过程及性能指标的测试进 行全面总结,把实践内容上升到理论高度。
1 数字钟硬件部分示意图该简易数字钟硬件部分主要由晶振、手动复位、单片机AT89C51、数码管显示、时间调整按键模块组成。
框图如下:图3.1 数字钟硬件系统示意图2 数字钟软件部分组成框图晶振 手动复位AT89C51 1602液晶显示时间按键选择2.1程序总流程图 2.2 时钟显示程序流程图3.3 24小时时钟3 各部分模块介绍3.1 单片机AT89C51芯片分析AT89C51单片机引脚图如下:T1中断服务子程序重置T1定时初值 1秒到?秒位+1 1分到?分位+1、秒位清零 1小时到? 小时位+1、分位清零 24小时到? 小时位清零 返回NNNN图 4.1 AT89C51引脚图3.2 晶振电路模块在AT89C51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。
而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。
时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。
图4.2 晶振电路3.3 复位电路模块单片机复位的条件是:必须使RST/VPD或RST引脚加上两个机器周期(即24个振荡周期)的高电平。
例如,若时钟频率为12MHz,每个机器周期为1us,则只需要2us以上时间的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。