用8088设计电子时钟

合集下载

多功能电子时钟设计

多功能电子时钟设计

多功能电子时钟设计设计一个多功能电子时钟可以使用汇编语言来实现。

电子时钟应包括以下功能:1.显示当前时间2.显示当前日期3.显示当前星期几4.闹钟设置和提醒5.24小时制和12小时制的切换6.定时器功能整体设计思路如下:1.初始化显示屏和设置相关寄存器,包括时钟控制和中断配置寄存器。

2.设置时钟中断,以确保时钟可以按照设定的时间间隔更新时间。

3.初始化闹钟和定时器的相关变量。

4.进入主循环,在循环中读取按键输入并处理各种功能。

5.根据按键输入进行相应的处理:-如果是设置时间按键,进入时间设置模式,等待用户输入。

通过设置小时和分钟变量来修改时间,并在显示屏上更新时间。

-如果是设置日期按键,进入日期设置模式,等待用户输入。

通过设置年、月和日变量来修改日期,并在显示屏上更新日期。

-如果是设置闹钟按键,进入闹钟设置模式,等待用户输入。

通过设置闹钟小时和分钟变量来修改闹钟时间。

-如果是闹钟启动按键,开启或关闭闹钟功能。

-如果是设定定时器按键,进入定时器设置模式,等待用户输入。

通过设置定时器小时和分钟变量来修改定时器时间。

-如果是定时器启动按键,开启或关闭定时器功能。

-如果是24小时制和12小时制的切换按键,切换时钟显示模式。

6.每次闹钟中断,检查当前时间是否与设定闹钟时间相匹配,如果匹配则触发闹钟,并在显示屏上显示提醒信息。

7.每次定时器中断,检查当前时间是否与设定定时器时间相匹配,并触发定时器提醒,并在显示屏上显示提醒信息。

此外,还需要编写相应的子程序来处理时钟中断和定时器中断的逻辑。

总之,这是一个简单的多功能电子时钟的设计,可以使用汇编语言来实现。

通过以上步骤,可以实现时钟的基本功能,并且可以通过按键进行设置和切换不同的功能。

通过设置闹钟和定时器,可以实现提醒功能。

微机原理8088的总线与时序

微机原理8088的总线与时序

微机原理8088的总线与时序8088是Intel公司于1979年推出的一款16位微处理器。

它主要用于个人计算机IBM PC和互补金属氧化物半导体技术(CMOS)中。

8088的总线结构包括内部总线和外部总线。

内部总线通过内部连接的数据通路在不同的功能部件之间传输数据和控制信号。

外部总线则用于连接8088与外部设备,如内存、输入输出(I/O)设备等。

8088的总线宽度为16位,分为数据总线、地址总线和控制信号总线。

数据总线用于传输数据,宽度为16位,可以同时传输一个字节(8位)或一个字(16位)。

地址总线用于寻址,其宽度为20位,可以寻址1MB空间。

控制信号总线至少包括读(RD)、写(WR)、片选(CS)、内存读(MREQ)、I/O读(IOR)和时钟这些基本信号。

8088的时序包括外设周期、读周期、写周期和I/O周期。

外设周期用于与外部设备进行通信,包括读写外设内容和控制外设。

读周期用于从内存或外设读取数据到寄存器或内部缓冲器中。

写周期用于将内部寄存器或内部缓冲器中的数据写入到内存或外设中。

I/O周期用于从外部设备读取或写入数据。

在时序方面,8088采用了同步时序设计。

时钟信号周期(CLK周期)用于同步各个部件的工作。

时钟信号由外部提供,频率为4.77MHz,即每个时钟周期为210ns。

在一个时钟周期内可以完成一个机器周期的工作。

8088的机器周期分为5个时钟周期,即一个机器周期需要5个时钟周期完成。

根据不同的操作,一个机器周期又可以分为多个时钟周期。

不同的操作需要不同的时钟周期数来完成,包括指令周期、内存周期、I/O周期等。

具体的时序可以通过查阅8088的数据手册得到。

总的来说,8088的总线结构和时序是保证处理器与外部设备通信的关键。

通过总线结构的设计和时序的安排,8088能够快速、准确地与外部设备交互,实现数据、控制信号和地址的传输和处理。

同时,时序的设计也要考虑到时钟频率、数据传输速度等因素,以确保系统的稳定性和可靠性。

电子时钟设计及程序

电子时钟设计及程序

电子时钟设计及程序电子时钟是一种数字时钟,它通过利用电子元件和计算机程序来显示时间。

设计和制作一个电子时钟需要一定的电子知识和编程能力。

下面将介绍电子时钟的设计及程序。

首先,电子时钟的设计需要以下主要元件:1. 微控制器:选择适合的微控制器,如Arduino、Raspberry Pi等。

它能够控制显示模块和计时功能,还可以通过编程实现其他功能,如闹钟、定时器等。

2.显示模块:可以选择LED数码管、LCD显示屏等,用于显示小时、分钟和秒数。

可以根据需要选择不同的尺寸和颜色。

3.时钟电路:为了使时钟具备准确的时间显示功能,需要使用一个时钟电路。

可以选择实时时钟模块,如DS1302/DS3231等,这些模块可以提供准确的时间信号。

同时,还需要一个电池来保存时间设置,以防断电时时间丢失。

4.按钮:可以选择不同的按钮来实现设置时间、调整亮度等功能。

按钮可以设定为增加、减少和选择不同的模式,比如调整分钟、小时、日期等。

5.电源:需要选择适合的电源供电模块,以提供电子元件稳定的工作电压。

其次,需要制定一个程序来控制电子时钟的功能。

以下是一个用Arduino编写的简单示例程序:```#include <Wire.h>#include <RTClib.h>RTC_DS1307 rtc;void setupWire.begin(;rtc.begin(;// 设置rtc时间为编译时间rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));//设置亮度、默认显示模式等//...void loopDateTime now = rtc.now(;//显示小时、分钟和秒数displayTime(now.hour(, now.minute(, now.second(); //按钮控制//...void displayTime(int hour, int minute, int second) //数码管显示//...```以上为电子时钟的基本设计及程序示例。

电子时钟设计及程序

电子时钟设计及程序

电子时钟设计及程序在现代生活中,电子时钟已经成为了我们不可或缺的一部分,无论是在家庭、办公室还是公共场所,都能看到它们的身影。

电子时钟不仅能够准确地显示时间,还具有多种功能,如闹钟、定时器等。

那么,电子时钟是如何设计和实现的呢?接下来,让我们一起深入了解一下。

一、电子时钟的硬件设计电子时钟的硬件设计主要包括以下几个部分:1、微控制器(MCU)微控制器是电子时钟的核心,负责控制整个系统的运行。

常见的微控制器有 51 单片机、STM32 等。

它们具有低功耗、高性能、易于编程等优点。

2、时钟芯片时钟芯片用于提供准确的时间基准。

常见的时钟芯片有 DS1302、DS3231 等。

这些芯片能够自动进行闰年补偿,并且在断电情况下仍然能够保持时间的准确性。

3、显示模块显示模块用于显示时间和其他信息。

常见的显示模块有液晶显示屏(LCD)和数码管。

液晶显示屏具有显示内容丰富、功耗低等优点;数码管则具有显示清晰、亮度高等优点。

4、按键模块按键模块用于设置时间、闹钟等功能。

通常使用独立按键或者矩阵按键。

5、电源模块电源模块为整个系统提供稳定的电源。

可以使用电池供电或者外部电源适配器供电。

二、电子时钟的软件设计电子时钟的软件设计主要包括以下几个方面:1、系统初始化在系统启动时,需要对微控制器、时钟芯片、显示模块、按键模块等进行初始化设置,确保系统能够正常工作。

2、读取时间通过与时钟芯片进行通信,读取当前的时间信息,并将其存储在变量中。

3、显示时间将读取到的时间信息在显示模块上进行显示。

可以采用动态扫描或者静态显示的方式。

4、按键处理当用户按下按键时,根据按键的功能进行相应的处理,如设置时间、设置闹钟等。

5、闹钟功能当到达设定的闹钟时间时,通过蜂鸣器或者其他方式进行提醒。

三、程序代码示例以下是一个使用 51 单片机和 DS1302 时钟芯片实现电子时钟的简单示例代码(C 语言):```cinclude <reg52h>include <intrinsh>// DS1302 引脚定义sbit DS1302_CLK = P1^0;sbit DS1302_IO = P1^1;sbit DS1302_RST = P1^2;//共阴极数码管段码unsigned char code SEGMENT_TABLE ={0x3F, 0x06, 0x5B, 0x4F,0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};//数码管位选sbit DIGIT1 = P2^0;sbit DIGIT2 = P2^1;sbit DIGIT3 = P2^2;sbit DIGIT4 = P2^3;//全局变量unsigned char hour = 0, minute = 0, second = 0;//延时函数void Delay(unsigned int t){while(t);}//向 DS1302 写入一个字节void DS1302_WriteByte(unsigned char dat){unsigned char i;for(i = 0; i < 8; i++){DS1302_IO = dat & 0x01;DS1302_CLK = 1;DS1302_CLK = 0;dat >>= 1;}}//从 DS1302 读取一个字节unsigned char DS1302_ReadByte(){unsigned char i, dat = 0;for(i = 0; i < 8; i++){dat >>= 1;if(DS1302_IO)dat |= 0x80;DS1302_CLK = 1;DS1302_CLK = 0;}return dat;//向 DS1302 写入命令void DS1302_WriteCmd(unsigned char cmd){DS1302_RST = 0;DS1302_CLK = 0;DS1302_RST = 1;DS1302_WriteByte(cmd);}//向 DS1302 写入数据void DS1302_WriteData(unsigned char addr, unsigned char dat){DS1302_WriteCmd(0x8E);DS1302_WriteByte(0x00);DS1302_WriteCmd(addr);DS1302_WriteByte(dat);DS1302_WriteCmd(0x8E);DS1302_WriteByte(0x80);//从 DS1302 读取数据unsigned char DS1302_ReadData(unsigned char addr){unsigned char dat;DS1302_WriteCmd(addr);dat = DS1302_ReadByte();return dat;}//初始化 DS1302void DS1302_Init(){DS1302_WriteCmd(0x8E);DS1302_WriteByte(0x00);DS1302_WriteData(0x80, 0x00);DS1302_WriteData(0x82, 0x00);DS1302_WriteData(0x84, 0x00);DS1302_WriteData(0x86, 0x00);DS1302_WriteData(0x88, 0x00);DS1302_WriteData(0x8A, 0x00);DS1302_WriteData(0x8C, 0x00);DS1302_WriteCmd(0x8E);DS1302_WriteByte(0x80);}//读取当前时间void ReadTime(){unsigned char buf7;buf0 = DS1302_ReadData(0x81);buf1 = DS1302_ReadData(0x83);buf2 = DS1302_ReadData(0x85);buf3 = DS1302_ReadData(0x87);buf4 = DS1302_ReadData(0x89);buf5 = DS1302_ReadData(0x8B);buf6 = DS1302_ReadData(0x8D);second =((buf0 & 0x70) >> 4) 10 +(buf0 & 0x0F);minute =((buf1 & 0x70) >> 4) 10 +(buf1 & 0x0F);hour =((buf2 & 0x70) >> 4) 10 +(buf2 & 0x0F);}//显示函数void Display(){unsigned char i;for(i = 0; i < 4; i++){switch(i){case 0:DIGIT1 = 0;DIGIT2 = 1;DIGIT3 = 1;DIGIT4 = 1;P0 = SEGMENT_TABLEhour / 10;break;case 1:DIGIT1 = 1;DIGIT2 = 0;DIGIT3 = 1;DIGIT4 = 1;P0 = SEGMENT_TABLEhour % 10; break;case 2:DIGIT1 = 1;DIGIT2 = 1;DIGIT3 = 0;DIGIT4 = 1;P0 = SEGMENT_TABLEminute / 10; break;case 3:DIGIT1 = 1;DIGIT2 = 1;DIGIT3 = 1;DIGIT4 = 0;P0 = SEGMENT_TABLEminute % 10; break;}Delay(500);}}void main(){DS1302_Init();while(1){ReadTime();Display();}}```上述代码只是一个简单的示例,实际的电子时钟程序可能会更加复杂,需要考虑更多的功能和异常情况。

电子时钟工具的程序设计及代码示例

电子时钟工具的程序设计及代码示例

电子时钟工具的程序设计及代码示例为满足现代生活的需求,电子时钟成为人们生活中的常见工具。

除了具备实时显示时间的功能外,电子时钟还可以根据用户需求进行各种定制,如显示日期、倒计时、闹钟等功能。

本文将探讨电子时钟的程序设计方法,并提供一个简单的代码示例。

一、程序设计方法在进行电子时钟的程序设计前,我们需要确定以下几个关键因素:1. 使用的编程语言:根据实际情况选择合适的编程语言,如C++、Java、Python等。

2. GUI框架:确定使用什么图形界面框架,如Qt、Tkinter等。

3. 实时更新:确定时间的实时更新方式,可以利用计时器、循环等方式进行时间更新。

4. 用户交互:考虑用户是否需要与电子时钟进行交互,如设置闹钟、选择日期等。

二、代码示例以下是一个基于Python和Tkinter的电子时钟代码示例,代码注释中详细说明了每个函数的功能和实现方法:```pythonimport tkinter as tkfrom datetime import datetimedef update_time():# 获取当前时间current_time = datetime.now().strftime("%H:%M:%S")# 更新时间标签time_label.config(text=current_time)# 每隔1秒更新一次时间time_label.after(1000, update_time)# 创建窗口window = ()window.title("电子时钟")# 创建时间标签time_label = bel(window, font=("Arial", 100), bg="white") time_label.pack(pady=50)# 更新时间update_time()# 运行窗口主循环window.mainloop()```以上代码创建了一个简单的窗口,使用标签实时显示当前时间。

基于8086的电子时钟设计

基于8086的电子时钟设计

基于8086的电子时钟设计概述:电子时钟是一种利用电子技术实现时间显示的装置。

本文将介绍基于8086微处理器的电子时钟的设计方案,包括硬件设计和汇编语言编程。

1.硬件设计:(1)8086微处理器:选择适合的8086微处理器芯片,并进行相应的引脚连接。

8086微处理器是16位的,具有高性能和大容量寻址能力。

(2)时钟电路:设计一个稳定的时钟电路,可以使用定时器或石英晶体振荡器,通过一个合适的预分频器产生高频时钟信号。

(3)显示器件:选择合适的显示器件,如LED数码管或液晶显示屏。

这些显示器件需要提供合适的接口电路,以便与8086微处理器进行通信。

(4)键盘电路:设计一个键盘电路,用于设置和调整时钟的时间。

键盘电路需要提供合适的接口电路,以便与8086微处理器进行通信。

2.汇编语言编程:使用汇编语言编程,可以通过对8086微处理器内部的寄存器和存储器进行操作,实现电子时钟的功能。

(1)初始化:在程序开始时,对相关的寄存器和存储器进行初始化,包括时钟计数器、时分秒寄存器、显示器接口等。

(2)时钟计数器:利用定时器或石英晶体振荡器产生的高频信号,通过适当的预分频器产生时钟计数器的时钟信号。

在程序中对时钟计数器进行相应的设置和控制,实现时钟的精确计时。

(3)时分秒寄存器:通过键盘电路输入时、分和秒的数值,将其存储到相应的寄存器中。

通过程序控制这些寄存器,实现时钟数值的更新和显示。

(4)显示器接口:利用合适的接口电路,将8086微处理器输出的数码信号转换为相应的显示信号,显示在数码管或液晶显示屏上。

通过程序控制接口电路,实现时钟数值的实时显示。

3.功能实现:(1)时间设置:通过键盘电路,输入时、分和秒的数值,将其存储到寄存器中,实现时间的设置。

(2)时间显示:通过程序控制,将寄存器中存储的时、分和秒的数值显示在数码管或液晶显示屏上,实现时间的实时显示。

(3)闹钟功能:通过键盘电路设置闹钟的时间,通过程序判断当前时间和闹钟的时间是否相等,如果相等,则触发相应的闹钟响铃。

简易电子钟设计范文

简易电子钟设计范文

简易电子钟设计范文电子钟是一种通过电子技术实现时间显示的设备。

它通常由一个数字显示屏,一个控制电路和一个电源组成。

其主要功能是显示小时、分钟和秒钟等时间信息,可以准确地显示时间,并可以根据需要设置闹铃功能。

设计一款简易电子钟可以使用Arduino等开发板或单片机来实现。

首先,我们需要选择一块合适的数字显示屏。

常见的数字显示屏有数码管和液晶显示屏两种类型,它们的显示原理和控制方式有所不同。

如果选择数码管作为显示屏,可以考虑使用常见的7段数码管,它由八个LED灯组成,可以显示0-9的数字以及一些字母和特殊符号。

数码管的控制方式是通过控制每个LED灯的亮灭来实现显示,可以使用数字输出口来控制。

Arduino的数字输出口可以输出高电平(5V)和低电平(0V),通过控制输出口的电平,就能够控制数码管的亮灭。

如果选择液晶显示屏作为显示器,可以选择字符型液晶显示屏或者图形型液晶显示屏。

字符型液晶显示屏通常可以显示一些字符或者数字,它的控制方式是通过并行或者串行接口来控制,可以使用开发板的GPIO口来实现。

图形型液晶显示屏可以显示更多的信息,它的控制方式是通过SPI接口或者I2C接口来控制,这需要相应的驱动库或者芯片来实现。

无论选择数码管还是液晶显示屏,我们都需要编写程序来控制显示。

程序的核心是一个循环,其中使用时钟模块来获取当前的时间,并使用相应的控制方式将时间信息显示在显示屏上。

如果需要设置闹铃功能,可以在循环中判断当前时间和设置的时间是否相等,如果相等则触发闹铃。

设计一个简易电子钟的完整步骤如下:1. 选择适合的开发板或者单片机,例如Arduino。

2.选择合适的显示屏,例如7段数码管或者液晶显示屏。

3.连接显示屏到开发板,根据显示屏的类型选择合适的引脚连接方式。

4.编写代码来控制显示屏显示时间信息。

5.添加时钟模块,用来获取当前的时间信息。

6.根据需要添加闹铃功能。

7.测试电子钟的功能和性能,不断优化改进。

设计制作电子时钟

设计制作电子时钟

设计制作简易数字钟一、设计要求1、设计一振荡源,用于产生1Hz的脉冲信号;2、能完成从00时00分00秒到23时59分59秒走时,并实时显示时、分、秒;3、具有手动校时、校分、校秒功能。

发挥部分:具有正点报时功能。

要求在59分58秒开始报时,持续5秒钟。

二、总体设计方案1、方案选择数字钟实际上是由一个对标准频率(1HZ)进行计数的计数电路为主要部分构成的。

由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路,同时标准的1HZ时间信号必须做到准确稳定。

通常使用石英晶体振荡器电路来构成数字钟的标准时间基准信号。

数字钟的组成框图如下图所示。

数字钟计时周期是24,因此必须设置24计数器,秒、分、时由七段数码管显示。

为使数字钟走时与标准时间一致,校时电路是必不可少的。

设计中采用状态机控制校时,通过切换开关用秒脉冲或手动按键产生脉冲先后对“时”“分”“秒”计数器进行校时操作。

2、数字钟的构成(1)数字钟的构成:振荡器、分频器、计数器、译码器、LED数码管显示器等几部分。

附加功能的实现还需采用T’触发器及与门和或门及蜂鸣器组成报时电路。

(2)数字钟的时、分、秒实际上就是由一个24进制计数器(00-23),两个60进制计数器(00-59)级联构成。

设计数字钟实际上就是计数器的级联。

(3)芯片选型:由于24进制、60进制计数器均由集成计数器级联构成,且都包含有基本的十进制计数器,从设计简便考虑,芯片选择十进制计数器74LS390。

3、元器件列表:型号74LS00、74LS04、74LS08、74LS21、74LS32、74LS47、74LS74、74LS86、74LS390、CD4068、CD4060、CD4511。

晶体管8050、510欧姆电阻、LED、轻触开关、自锁开关、蜂鸣器、10p电容、晶振32768、10M电阻。

三、系统工作原理1、主计数部分原理图图1主计数部分原理图如图所示,用两个十进制计数器74LS390组成60进制计数器和24进制计数器,分别用于对分、秒和时的计数。

数字电子时钟设计

数字电子时钟设计

数字电子时钟设计数字电子时钟是一种简单易用、精度高、使用方便的时钟仪器。

在现代化的生活中,数字电子时钟已经成为人们生活和工作中不可缺少的一部分。

本文将介绍数字电子时钟的设计及其原理。

1. 数字电子时钟的结构数字电子时钟一般由数字显示器、电源、时钟芯片、振荡电路和控制电路等几个部分组成。

数字显示器:数字电子时钟采用的是七段数码管作为显示器,显示出当前时刻的时间。

电源:数字电子时钟的电源一般采用直流电源,可以通过普通的插座或者电池供电。

时钟芯片:时钟芯片是数字电子时钟的核心部分,可以提供高精度的时钟信号,并且可以根据用户设置的时间来进行计时。

振荡电路:振荡电路是数字电子时钟的发挥器,用于产生一个稳定的高精度的时钟信号。

控制电路:控制电路主要用于对数字电子时钟进行各种设置,并且可以控制数字电子时钟的各种功能。

2. 数字电子时钟的操作原理数字电子时钟的操作原理是通过时钟芯片来实现的。

时钟芯片可以提供一个高精度的时钟信号,这个时钟信号可以被控制电路所接收,并且控制电路可以将这个信号转化为秒、分、时等时间单位。

随着科技的发展,数字电子时钟的精度越来越高,可以达到秒级甚至毫秒级的精度。

这些高精度的时钟芯片可以通过电子时钟所连接的振荡电路来产生非常稳定的时钟信号。

3. 数字电子时钟设计的技术要求数字电子时钟的设计需要考虑以下几个方面的技术要求:(1)高精度的时钟信号数字电子时钟的时钟信号需要具有高精度,通常要求时钟误差不超过几秒钟。

这就需要时钟芯片具有非常高的精度的时钟信号源,同时还需要连接高精度的振荡电路。

(2)显示效果清晰明了数字电子时钟的显示效果要求非常的清晰明了,这就需要采用高质量的七段数码管,并且数量要足够,以显示出完整的时间信息。

(3)快速响应、稳定性好由于数字电子时钟是人们生活和工作中不可缺少的一部分,因此数字电子时钟的响应速度和稳定性也非常的重要,需要在设计时特别注重。

4. 数字电子时钟的优点和缺点数字电子时钟有以下几个优点:(1)高精度稳定数字电子时钟可以提供高精度的时钟信号,并且可以保持这个时钟信号的稳定性,误差范围非常小。

微机原理记时日期秒表多功能电子钟课程设计

微机原理记时日期秒表多功能电子钟课程设计

微机课程设计用8086/8088CPU设计一个多功能时钟。

要求实现,日常使用时正确显示的是时、分、秒;根据需要,还可以作为秒表使用;还可以显示日期。

目录一、设计内容要求二、设计思想三、程序流程图(1)时间显示部分(2)日期显示部分(3)数字显示部分四、实验连线图(1)总体线路图(2)8284应用电路(3)74LS138片选部分(4)8255与七段数码管搭配部分电路图(5)8259功能选择部分(6)数据存储部分(7)计数电路(8)CPU的部分连接部分五、连线描述六、按键功能介绍七、心得体会八、参考文献一、设计内容与要求1、设计目的:1) 进一步建立微机系统概念、加深对系统理解和认识,提高微机系统的应用水平。

2) 进一步学习和掌握汇编语言程序的编写和应用的方法,通过较大规模程序的编写,提高汇编语言程序的水平和学习程序调试方法。

3) 进一步熟悉接口、熟悉键盘控制和七段数码管及其他芯片的使用。

2、设计任务:用8086/8088CPU设计一个多功能时钟。

要求实现,日常使用时正确显示的是时、分、秒;根据需要,还可以作为秒表使用;还可以显示日期。

二、设计思想1. 先在数据段开辟存储单元,用来存放时、分、秒、年、月、日等的信息。

这些存储单元分别对应时、分、秒,日期的年、月、日的十位和个位。

调用子程序的清屏部分。

2. 在主程序中分别对8259、8255、8259、8253进行初始化编程。

根据系统功能要求,设置操作字与方式控制字。

3. 8255的A口工作在方式0输出,B口工作在方式0输出,为基本的输入输出方式。

这部分与七段数码管搭配,显示结果。

4. 在中断服务程序中对中断次数进行统计。

当时钟在日常状态和切换到秒表功能时,当产生1次中断时,将秒的个位加1,判断是否到10,如到了则十位加1,个位清零;再判断十位是否到6,如到了则十位清零,分的个位加1,同理对分、时做相应的处理。

该电子钟为12进制的。

当电子表切换到日期功能时,先判断是否是闰年,然后判断是否是二月,最后判断是单月份还是双月份,然后根据闰年366天,闰年2月29天,不是闰年28天,当月份31天,双月份30天进行进位。

汇编语言 8086 电子钟实验

汇编语言 8086 电子钟实验

目录一、设计要求 (2)二、设计目的 (2)三、设计的具体实现 (2)四、结论与展望 (7)五、心得体会与建议 (8)六、附录 (8)七、参考文献 (19)电子钟的设计报告一、设计要求设计一个电子时钟,使其具有二十四小时循环记时功能,走时要准。

并且有时钟的对时功能。

二、设计目的熟练掌握TND86/88教学系统的基本操作和调试程序的各种指令熟悉编程及调试程序的方法掌握8259中断控制器的工作原理和应用编程方法,练习编写中断程序的方法掌握8255的各种工作方式及其应用编程掌握8253定时/计数器的工作原理、工作方式及其应用编程练习LED-KEYBOARD UNIT的使用方法和数码管的显示编程方法三、设计的具体实现1·系统概况电子时钟主要由显示模块、对时模块和时钟运算模块三大部分组成。

其中对时模块和时钟运算模块要对时、分、秒的数值进行操作,并且秒计算到60时,要自己清零并向分进1;分计算到60时,要自己清零并向时进1;时计算到24时,要清零。

这样,才能循环记时。

显示时只显示时和分,不显示秒,利用实验箱上的4个数码管来显示当前时间。

前两个显示小时,后两个显示分钟。

时钟的运算是利用中断来实现的,利用8253的模式三输出一定频率的方波作为触发中断的条件。

在中断服务程序中计算时间,并通过8255并行输出到数码管显示。

2·硬件电路设计电子时钟主要由8259A中断控制器、8253定时/计数器、8255A 接口芯片、LED数码显示管和两个按键组成。

主要用8259A的IRQ7的中断服务程序完成秒、分、时的运算即计时功能,IRQ6的中断服务程序完成调时、调分功能。

8253用来产生40ms的脉冲信号作为IRQ7的中断请求信号。

按键KK1+和KK2+分别作为IRQ2和IRQ6的中断请求信号。

按键KK1+启动/关闭对时功能。

它决定是否屏蔽IRQ7和IRQ6中断源。

8255A负责将内存里的时位和分位值输出到数码管。

简易电子时钟设计单片机

简易电子时钟设计单片机

简易电子时钟设计单片机
设计一个简易的电子时钟可以使用单片机实现。

以下是一个基本的设计方案,包括硬件和软件部分的实现。

硬件部分:
1.单片机选择:可以选择8051系列的单片机,如AT89C51或
AT89S52等。

2.时钟源:使用晶体振荡器作为时钟源,通常选择11.0592MHz。

3.显示器:选择合适的数码管或液晶显示器,用于显示时间。

4.键盘:选择合适的按钮或矩阵键盘,用于设置时间和功能选择。

5.蜂鸣器:可以选择一个蜂鸣器用于报时功能。

6.电源:选择适当的电源模块,例如稳压电源模块或直流电源。

软件部分:
1.初始化:设置片内RAM、定时器、IO端口等。

2.时间设置:通过按键输入设置时钟的小时和分钟,可以使用中断的方式进行按键扫描。

3.时间更新:使用定时器中断来更新时钟的显示,在中断处理程序中实现时间累加,包括秒数、分钟数和小时数。

4.时间显示:将时间显示在数码管或液晶显示器上,可以使用数码管驱动芯片或液晶显示驱动程序进行显示。

5.报时功能:当时钟显示到设置的时间时,触发蜂鸣器进行报时。

6.闹钟功能:设置一个闹钟时间,到达闹钟时间时触发蜂鸣器报警。

7.周期功能:设置一个周期,例如每天、每周等,当时钟显示到周期
时间时触发蜂鸣器报时或报警。

8.温度显示:如果有温度传感器,可以通过温度传感器测量室内温度,并在显示器上显示当前温度。

总结:
这只是一个基本的设计方案,你可以根据实际需求进行改进和扩展。

通过合适的单片机、显示器、键盘和蜂鸣器的选择,以及基于中断的软件
编程,你可以实现一个简易的电子时钟。

微机原理课程设计--用8088设计一个能实现0-9整数加法运算的计算器,和用2位LED数码显示。

微机原理课程设计--用8088设计一个能实现0-9整数加法运算的计算器,和用2位LED数码显示。

二○一一~二○一二学年第一学期信息科学与工程学院课程设计报告书课程名称:微机原理及应用课程设计班级:学号:姓名:指导教师:2011年12月一、程序设计目的综合运用本课程知识,利用集成电路设计实现一些中小规模电子电路或者完成一定功能的程序,以复习巩固课堂所学的理论知识,提高程序设计实现系统、绘制系统电路图的能力,为实际应用奠定一定的基础。

二、实验内容及具体要求用8088设计一个能实现0-9整数加法运算的计算器,和用2位LED数码显示。

键盘包括0-9“+”和“=”12个按键。

具体要求:1.画出连接线路图或功能模块引脚连接图。

2.采用8088CPU作主控制器,8255作为并行接口电路实现按键的扫描以及数码管的显示。

3.采用2个共阴极型LED,只需显示0—255范围内的值。

三、设计分析8255A写方式控制字8255A各端口结构四、流程图五、程序清单CODE SEGMENTASSUME CS:CODE,DS:CODEBEGIN: JMP BEGINBUFF DB 1,2,3,4,5,6TABLE1DW 3E07H,3E0BH,3D0BH,3B0BH,3E0DH,3D0DH,3B0DH,3E0EH,3D0EH,3B0EH; 对应0~9的键盘值DW370EH,370DH,370BH,3707H,3B07H,3D07H,2F07H,2F0BH,2F0DH,2F0EH,1F07H,1F0BH,1F 0DH; 对应其他的键盘值TABLE DB 3FH,6,5BH,4FH,66H,6DH,7DH,7,7FH,6FH,46H,40H,48H,00; 0~9上的字型码X DW 0Y DW 0F DB 0N DB 0C DB 0ADDF DB 0SHI DB 0GE DB 0BEGIN: MOV AX,CSMOV DS,AXCALL CLEARAGAIN: MOV DX,203HMOV AL,8255ACALL LED ;调用子程序CALL KEYCMP F,1JNE AGAINCMP BL,9 ;对比数字键盘JLE D_PROCECMP BL,10JE TO_ADD ; 转到加法子程序CMP BL,11JMP AGAIN ;返回继续循环CLEAR1: CALL CLEARCALL CLBUFJMP AGAIND_PROCE: CMP N,1JE D_P_YMOV CL,4SHL X,CLMOV BH,0ADD X,BXCALL BSHIFTMOV BUFF+5,BLJMP AGAIND_P_Y: MOV CL,4SHL Y,CLMOV BH,0ADD Y,BXCALL BSHIFTMOV BUFF+5,BLJMP AGAINTO_ADD CALL BSHIFT ; 加法子程序的具体实现MOV BUFF+5,BLMOV F,0MOV N,1MOV ADDF,1JMP AGAINKEY PROC ;键盘扫描程序的实现MOV DX,203HMOV AL,10001001BOUT DX,AL ;写控制字MOV F,0MOV DX,201HMOV AL,0OUT DX,ALMOV DX,202HIN AL,DXAND AL,0FHCMP AL,0FHJE K_EXITMOV CX,3000LOOP $ ; 延时IN AL,DXAND AL,0FHPUSH AXMOV DX,203HMOV AL,10000010B; B_IN,C_OUTOUT DX,ALPOP AXMOV BL,ALMOV DX,202HOUT DX,ALMOV DX,201HIN AL,DXAND AL,00111111HMOV BH,ALLEA SI,TABLE1MOV CX,23MOV AH,0NK: CMP BX,[SI]JE FOUNDINC AHADD SI,2LOOP NKFOUND: MOV AL,0 ;不断扫描,等待输入MOV DX,202HOUT DX,ALMOV DX,201HIN AL,DXAND AL,3FHCMP AL,3FHJNE FOUND ;如果无输入继续扫描MOV CX,3000LOOP $MOV F,1MOV BL,AHK_EXIT: RETKEY ENDPSTORE PROC ; 存储程序MOV WORD PTR BUFF,1414HLEA SI,BUFF ;赋给偏移地址MOV CH,4DISPLAY: MOV DL,0MOV AL,BUFF[DL] ;取数MOV AH,0MOV CL,10DIV CLMOV SHI,AH ;求和的十位MOV GE,AL ;和的个位MOV DX,383H ;PA口输出方式选择控制字MOV AL,80HOUT DX,ALMOV DX,380H ;PA口代码输出十位显示MOV AL,TABLE[SHI]OUT DX,ALMOV DX,383H ;PB口方式选择控制字MOV AL,10000000HOUT DX,ALMOV DX,381H ;PB口代码输出个位显示MOV AL,TABLE[GE]OUT DX,ALINC DLJMP DISPLAYS_REL: MOV CL,4ROL BX,CL ;循环左移四位MOV AL,BLAND AL,0FH ; 取低四位MOV [SI+2],ALINC SIDEC CHJNZ S_RELCALL CLEARRETSTORE ENDPCODE ENDSEND START六、硬件部分七、设计小结本次课程设计花费了我很多时间和精力,但是也锻炼了我很多方面的能力。

电子时钟程序设计

电子时钟程序设计

1.设计目的电子时钟是采用数字电路实现对日期、时、分、秒,数字显示的计时装置,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表的报时功能。

电子时钟已成为人们日常生活中的必需品,广泛应用于家庭、车站、码头、22.1次的Flash MCS-51在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。

程序可分为闹钟的声音程序、显示程序、闹钟显示程序、调时显示、定时程序。

运用这种方法,关键在于各模块的兼容和配合,若各模块不匹配会出现意想不到的错误。

2.3设计图2.4设计程序#include<reg51.h>#include<stdio.h>#include<intrins.h> chardatatime[6];voiddelay(unsignedchark); sbitcheck=P0^0;sbitinter0=P3^2;sbitinter1=P3^3;{chari;TR0=1;{{P1=sel[i];P2=buf[time[i]];delay(10);}if(check==0){delay(8);TR0=0;which=(which+1)%3;while(check==0);TR0=1;}}}voiddelay(unsignedchark){chari;for(;k>0;k--)for(i=0;i<80;i++){;}}voidtime_tr0()interrupt1 using2{{}}{TR0=1;}{}{delay(80);if(time[n]>0){time[n]=time[n]-1;}elseif(time[n]==0&&(n==3||n==1)){time[n]=5;smsub(n+1);}elseif(time[n]==0&&(n==4||n==2||n==0)){time[n]=23;smsub(n+1);}elseif(time[n]==0&&(n==5)){time[n]=0;}}voidsmadd(unsignedcharn){{}{smadd(n+1);}else{time[n]=time[n]+1;}}elseif(n==5){if(time[n]==2&&(time[n-1]==3)){time[5]=0;time[4]=0;}else{time[n]=time[n]+1;}}}2.5伟福系统仿真如图所示:3.。

根据8086的电子时钟设计(汇编语音)

根据8086的电子时钟设计(汇编语音)

目录摘要 (1)Abstract (1)第一■章电子钟设计总体方案设计 (2)1.1设计目的 (2)1.2设计要求 (2)1.3方案比较 (2)1.3.1非中断方式与中断方式的比较 (2)1.3.2 LED显示与液晶显的比较 (3)1.4总体方案设计思路 (3)第二章系统硬件设计 (4)2.1 8255与CPU之间的连接关系 (4)2.2 8253与周边电路的连接关系 (4)2.3 8259与周边电路连接关系 (5)2.4液晶显示模块与8255之间的连线关系 (5)2.5地址译码器与按键 (6)2.6系统总体硬件电路图 (6)第三章系统软件设计 (7)3.1编址及控制字的确定 (7)3.1.1 编址 (7)3.1.2控制字 (7)3.2分块子程序 (7)3.2.1 1602读写操作子程序 (7)3.2.2中断子程序 (9)3.3主程序设计 (11)13 总结与致谢:参考文献: (14)附录: (15)摘要本设计以微机原理与接口技术为基础,以8086CPU为核心,利用INTER 8253可编程定时/计数器,通过引入时钟发生器产生标准时钟进行精准定时;经定时器产生中断源,采用可编程中断控制器8259A进行中断扩展,用可屏蔽中断方式进行时间的采集;以可编程并行I/O接口芯片8255A扩展接口,驱动MSC1602液晶模块进行时间显示。

第一章电子钟设计总体方案设计1.1设计目的电子钟是一种基于微电子技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。

通过该题目的设计和分析,学习微机软、硬件系统设计开发的过程,加深微机原理及其应用课程基础知识的理解和综合运用能力,熟悉集成电路芯片的使用方法,熟悉微机编程及接口电路,学会体会工程实际设计过程,培养学生独立解决实际工程问题的综合能力。

初步得到用汇编语言书写程序的训练,全面培养程序设计的分析、设计、编测试及文档规范书写的能力,得到运用汇编语言的综合训练,提高解决实际问题的能力。

电子时钟课程设计(含代码)[优秀]

电子时钟课程设计(含代码)[优秀]

电子时钟设计一、课程设计目的和意义掌握8255、8259、8253芯片使用方法和编程方法,通过本次课程设计,学以致用,进一步理解所学的相关芯片的原理、内部结构、使用方法等,学会相关芯片实际应用及编程,系统中采用8088微处理器完成了电子钟的小系统的独立设计.同时并了解综合问题的程序设计掌握实时处理程序的编制和调试方法,掌握一般的设计步骤和流程,使我们以后搞设计时逻辑更加清晰.二、开发环境及设备1、设计环境PC机一台、windows 98系统、实验箱、导线若干.2、设计所用设备8253定时器:用于产生秒脉冲,其输出信号可作为中断请示信号送IRQ2.8255并口:用做接口芯片,和控制键相连.8259中断控制器:用于产生中断.LED:四个LED用于显示分:秒值.KK1或KK2键与K7键,用于控制设置.三、设计思想与原理1、设计思想在本系统设计的电子时钟以8088微处理器作为CPU,用8253做定时计数器产生时钟频率,8255做可编程并行接口显示时钟和控制键电路,8259做中断控制器产生中断.在此系统中,8253的功能是定时,接入8253的CLK信号为周期性时钟信号.8253采用计数器0,工作于方式2,使8253的OUT0端输出周期性的负脉冲信号.即每隔20米s,8253的OUT0端就会输出一个负脉冲的信号,此信号接8259的IR2,当中断到50次数后,CPU即处理,使液晶显示器上的时间发生变化.其中8259只需初始化ICW1,其功能是向8259表明IRx输入是电瓶触发方式还是上升沿触发方式,是单片8259还是多片8259.8259接收到信号后,产生中断信号送CPU处理.2、设计原理利用实验台上提供的定时器8253和扩展板上提供的8259以及控制键和数码显示电路,设计一个电子时钟,由8253中断定时,控制键控制电子时钟的启停及初始值的预置.电子时钟的显示格式米米:SS由左到右分别为分、秒,最大记时59:59超过这个时间分秒位都清零从00:00重新开始.基本工作原理:每百分之一秒对百分之一秒寄存器的内容加一,并依次对秒、分寄存器的内容加一,四个数码管动态显示分、秒的当前值.三、设计所用芯片结构1、8259A芯片的内部结构及引脚中断控制器8259A是Intel公司专为控制优先级中断而设计开发的芯片.它将中断源优先排队、辨别中断源以及提供中断矢量的电路集中于一片中.因此无需附加任何电路,只需对8259A编程,就可以管理8级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定.在米D微机系统中,8259芯片工作于单片方式.8259引脚图如图3.3,各引脚功能如下.D7~D0——八条双向数据线;WR(低电平有效)——写输入信号;RD(低电平有效)——读输入信号;CS(低电平有效)——片选输入信号;A0——地址信号;INT——中断请求信号;INTA(低电平有效)——中断响应信号;CAS0~CAS2——级联信号,形成一条专用8259A总线,以便多片8259A的级联;SP/EN——从编程/允许级联.在缓冲方式中,可用做输图3.1 8259A引脚图出信号以控制总线缓冲器的接收和发送.在非缓冲方式中,作为输入信号用于表示主片还是从片;IR0~IR7——外部中断请求输入线.要求输入的中断请求信号是由低电平到高电平的上升沿(并保持高电平到CPU 响应时为止)或者是高电平. 8259中断矢量地址与中断信号之间的关系如表3.1所示:中断序号 0 1 2 3 4 5 6 7 功能调用 08H 09H 0AH 0BH 0CH 0DH 0EH 0FH 矢量地址 20H~ 23H24H ~ 27H 28H ~ 2BH 2CH ~ 2FH 30H ~ 33H34H ~ 37H38H ~ 3BH 3CH ~ 3FH 说明时钟键盘可用可用串行口 可用可用可用2、8255芯片的内部结构及引脚8255可编程外围接口芯片是Intel 公司生产的通用并行I/O 接口芯片,它具有A 、B 、C 三个并行接口,用+5V 单电源供电,能在以下三种工作方式下工作: 方式0—基本输入/输出方式 方式1—选通输入/输出方式 方式2—双向选通输入/输出方式 8255引脚图如图3.2示,各引脚功能如下. D7~D0——与CPU 侧连接的八条双向数据线; WR(低电平有效)——写输入信号; RD(低电平有效)——读输入信号; CS(低电平有效)——片选输入信号; A0、A1——片内寄存器选择输入信号; PA7~PA0——A 口外设双向数据线; PB7~PB0——B 口外设双向数据线; PC7~PC0——C 口外设双向数据线; RESET ——复位输入信号表3.1 8259A 中断矢量表图3.2 8255引脚图2、8255端口地址 信号线寄存器 编址 IOY3A 口60H B 口 61H C 口 62H 控制寄存器63H3、8253芯片的内部结构及引脚8253可编程定时/计数器是Intel 公司生产的通用外围芯片之一,有3个独立的十六位计数器,技术频率范围为0~2米HZ,它所有的技术方式和操作方式都通过编程控制. 8253的功能用途是: (1) 延时中断 (2) 可编程频率发生器 (3) 事件计数器 (4) 二进倍频器 (5) 实时时钟 (6) 数字单稳 (7)复杂的电机控制器8253有六种工作方式: (1) 方式0:计数结束中断 (2) 方式1:可编程频率发生器 (3) 方式2:频率发生器 (4) 方式3:方波频率发生器 (5)方式4:软件触发的选通信号(6)方式5:硬件触发的选通信号8253引脚图如图3.3示,各引脚功能如下.表3.2 8255端口地址表图3.3 8253引脚图D7~D0——八条双向数据线;WR(低电平有效)——写输入信号;RD(低电平有效)——读输入信号;CS(低电平有效)——片选输入信号;A0、A1——片内寄存器地址输入信号;CLK——计数输入,用于输入定时基准脉冲或计数脉冲;OUT——输出信号,以相应的电平指示计数的完成,或输出脉冲波形; GATE——选通输入(门控输入),用于启动或禁止计数器的操作,以使计数器和计测对象同步.2、8253端口地址表3.3 8253端口地址表四、具体模块设计1、概述本系统设计的电子钟以8088微处理器作为CPU,用8253做定时计数器产生时钟频率,8255做可编程并行接口显示时钟和键盘电路,8259做中断控制器产生中断.在此系统中,8253的功能是定时,接入8253的CLK信号为周期性时钟信号.8253采用计数器0,工作于方式2,使8253的OUT0端输出周期性的负脉冲信号.即每隔20米s,8253的OUT0端就会输出一个负脉冲的信号,此信号接8259的IR2,当中断到50次数后,CPU即处理,使液晶显示器上的时间发生变化.程序由以下模块组成:系统共有5个功能模块,分别为,主控模块,显示模块,定时模块,中断模块,小键盘模块.系统框图如下:2、主程序模块主控模块是系的核心模块,对8253、8255A进行初始化,设置中断向量,扫描键盘根据按键值作相应的处理.主要由软件实现.它的主要功能是调用其它模块对系统工作进行协调,它的主要功能是读控制模块输入值并执行要做的工作,如果是由KK1或KK2的信号,则将进行中断处理,并调用显示模块显示.如果控制模块输出的K7的信号,则将进入对时状态.3、控制模块控制模块送入主控模块的子功能模块.由软件和硬件实现,硬件上由控制键和8255互连,将键值由8255送入主控模块.软件上使用行扫描法获得键值并送回主控模块.4、显示模块显示模块是将显示缓冲区的数值送到LED显示的功能模块,显示缓冲区是由六个字节构成,分别保存小时的高位和低位,分钟的高位和低位,秒钟的高位和低位.硬件上由六个LED构成,软件上由扫描显示的方法实现.实现代码如下:DISPLAY PROC NEAR 米OV CX,77FFH LED52: CALL DISUP LOOP LED52DISUP: PUSH CX米OV DI,OFFSET 米IN1米OV CL,01DISUP1: 米OV AL,0米OV DX,PORTBITOUT DX,AL米OV AL,[DI]米OV BX,OFFSET LEDXLAT米OV DX,PORTSEGOUT DX,AL米OV AL,CL米OV DX,PORTBITOUT DX,AL米OV BX,35H DELAY1: DEC BXJNZ DELAY1厘米P CL,20HJZ DISUP2INC DISHL CL,1J米P DISUP1 DISUP2: POP CXRET DISPLAY ENDP5、定时模块定时模块是为8259提供中断请求信号的.由一片8253实现,选用定时器0号,工作在方式3,由于时钟应该1秒走动一次,所以输出值应为1S,其输出信号可作为8259的中断请求信号.6、中断处理模块中断模块实现动态显示的,硬件为一片8259,由于中断请求信号为每秒一次,中断程序该为时间按秒增加,并显示,只要开中断,便可实现每秒显示时间增加一秒,从而达到动态显示的效果.代码:START: 米ov al,14h out 76h,al米ov al,3dhOUT 74H,AL米OV AL,1FH OUT 80H,AL米OV AL,18H OUT 81H,AL米OV AL,03H OUT 81H,AL米OV AL,80H OUT 0D6H,AL米OV AL,7FH OUT 81H,AL 米OV AX,0000H米OV CX,AX米OV BL,ALIR7: OUT 00D0H,CL OUT 00D2H,CH OUT 00D4H,BL INC CL厘米P CL,3CH JGE P1CALL IR7P1:米OV CL,AL INC CH厘米P CH,3CH JGE P2CALL IR7P2:米OV CH,AHINC BL厘米P BL,18H JGE P3CALL IR7米OV BL,AL CALL IR7 CODE ENDSEND START五、心得体会本次课程设计做的是电子时钟设计,本以为设计思路清楚,设计会简单,可是经过两周的时间,发现选择了一个相对比较难的题目,最终也没有将其完全设计出来,比较遗憾.这个题目有几个难处,一,是汇编语言与微机原理的相结合部分比较难,导致部分代码不能正确写出:二,对实验箱了解不充分,设计起来对具体端口不理解.三,本次设计的大多数题目都能在网上找到可以借鉴的程序,而我们的虽然找到了,但是遇到了相当不擅长的端口问题,暴漏了平常学习的缺漏.四,总结,中断,计数,以及端口等的知识在学习中没有能够很好的学习,遇到具体细节问题时,解决不了.两组成员一起讨论,仍然没有很好的解决,不过确实对微机原理的相关知识很有收获.本次设计的收获:对8259、8255、8253有了进一步的了解,对中断处理有了更深的理解,很好的复习了微机原理,同时对端口有了初步的理解.通过课程设计更加体会到了团队作战的长处,大家一起受益颇多,取长补短,最主要的是认识到了自己的不足,需要进一步学习所含知识,尤其是端口,更需要勤加练习汇编语言与微机原理的结合,课程设计受益颇多.参考书目:1、戴梅萼,史嘉权编著.微型计算机技术及应用(第三版). 北京:清华大学出版社,20032、李顺增,吴国东,赵河明等.微机原理及接口技术.北京:机械工业出版社,20063、杨立新.微型计算机原理和应用[米].北京:科学技术文献出版社,1986.114、眭碧霞.微型计算机原理与组成[米].人民邮电出版社,2003.8。

微型计算机基于8086cup数字时钟课程设计

微型计算机基于8086cup数字时钟课程设计

微型计算机基于8086cup数字时钟课程设计课程设计任务书专业自动化班级姓名设计起止日期2013.12.16~2013.12.20设计题目:基于8086CPU的数字时钟的设计设计任务(主要技术参数):1、利用实验系统上提供的8253和LED数码显示等电路,设计一个电子时钟;2、格式如下:6个数码由左向右分别显示为:时、分、秒。

指导教师评语:成绩:签字:年月日1 引言随着在现代技术进步,电子产品越来越多的在生活中出现,服务于人们的生活,从简单的电子手表,到人人必备的手机,我们都可以看到电子时钟的身影。

本系统就是基于8086系统,配合8255和8253芯片开发的一个数字电子时钟,有显示时分秒的功能。

2 设计方案论证2.1一秒定时方案的选择运用8253产生周期为2秒的方波,通过8255芯片的A、B、C 口读取电平高低,判断电平变化,进而判断1秒延时是否已经到达,这种方法可以写成子程序,执行返回就近似于1秒延时。

2.2时钟时分秒的处理方式选择时钟的时分秒的处理方法实际上时数学逻辑问题。

在编辑过程中我想到两种解决方案。

方案一:将时分秒当做三个数据进行处理,设置三个数据空间,作为是分秒的数据缓存区,再将缓存区的内容转换成显示数据。

每次延时之后判断“秒”是否应该向“分”进位,“分”是否应该向“时”进位,“时”是否已经超过24.这个过程理论上可以实现,但是逻辑判断较为繁琐。

方案二;将时分秒分成六位,放在显示数据缓存区里,每次一秒延时之后判断是否向高位进一,若还不进一,则跳回最低位,再次进行一秒延时;由于秒和分都是60进制,处理方法一样,而“时”是24进制,应该进行额外处理。

2.3八段数码管动态显示对于8279八段数码管的显示需要入码位和段码,因此采用74LS373作为位码输出端口,8255的A、B、C口作为段码输出口。

通过CPU输出数据进行位码选择,经74LS373输出到位码输入口;设置到六位数据缓存区,经过换码可以取得相应的段码输出到段码输入口,并简单延时,就可以显示了。

电子时钟程序设计

电子时钟程序设计

1.设计目的电子时钟是采用数字电路实现对日期、时、分、秒,数字显示的计时装置,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表的报时功能。

电子时钟已成为人们日常生活中的必需品,广泛应用于家庭、车站、码头、剧院、办公室等场所,给人们的生活、学习、工作带来极大的方便。

不仅如此,在现代化的进程中,也离不开电子钟的相关功能和原理,比如机械手的控制、家务的自动化、定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。

而且是控制的核心部分。

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

2.设计内容设计思想针对要实现的功能,拟采用AT89C51单片机进行设计,AT89C51 单片机是一款低功耗,高性能CMOS8位单片机,片内含4KB在线可编程(ISP)的可反复擦写1000次的Flash只读程序存储器,器件采用高密度、非易失性存储技术制造,兼容标准MCS- 51指令系统及80C51引脚结构。

这样,既能做到经济合理又能实现预期的功能。

在程序方面,采用分块设计的方法,这样既减小了编程难度、使程序易于理解,又能便于添加各项功能。

程序可分为闹钟的声音程序、显示程序、闹钟显示程序、调时显示、定时程序。

运用这种方法,关键在于各模块的兼容和配合,若各模块不匹配会出现意想不到的错误。

设计元件元件规格数量单片机 AT89C51 1 晶振 12MHz 1 晶振电容 30pF2 按键4准备器件、搭接电路熟悉硬件 了解各引脚功能 分块设计各部分电路将分块的电路组合认真学习单片机汇编语言 完成整体电路图 确定变成结构和思路综合各程序完成整体程序编辑各个程序模块用Proteus 画出电路图调试程序,进行修改对仿真中出现的问题进行改正 画出仿真图进行仿真仿真成功软硬件结合,完成任务书要求验证硬件电路成功进行扩展电阻10K,1K,220欧,各1,1,15 电容10uF(+) 1七段数码管共阳极四位、两位各1,1 USB接口 1USB延长线1/2底座40脚 1设计图设计程序#include<>#include<>#include<>char data time[6];void delay(unsigned char k);sbit check=P0^0;sbit inter0=P3^2;sbit inter1=P3^3;char data which=0;char data count=0;void smadd(unsigned char k);void smsub(unsigned char n);char code buf[]={ 0x00,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0xff,0x6f }; char code sel[]= {0x01,0x02,0x04,0x08};void main(){char i;for(i=0;i<500;i++);time[0]=0;time[1]=1;time[2]=8;time[3]=0;time[4]=2;time[5]=1;TMOD=0X01;TH0=(65535-5000)/256;TL0=(65535-5000)%256;IP=0x07;IE=0X87;TR0=1;while(1){for(i=0;i<6;i++){P1=sel[i];P2=buf[time[i]] ;delay(10);}if(check==0){delay(8);TR0=0;which=(which+1)%3;while(check==0);TR0=1;}}}void delay(unsigned char k){char i;for (;k>0;k--)for(i=0;i<80;i++){;}}void time_tr0() interrupt 1 using 2 {TH0=(65535-5000)/256;TL0=(65535-5000)%256;count++;if(count==100){smadd(0);}}void int0_i() interrupt 0 using 3 {TR0=0;smadd(which*2);TR0=1;while(inter0==0);}void int1_i() interrupt 2 using 1 {TR0=0;delay(20);smsub(which*2);;TR0=1;while(inter1==0);}void smsub(unsigned char n){delay(80);if(time[n]>0){time[n]=time[n]-1;}else if(time[n]==0&&(n==3||n==1)){time[n]=5;smsub(n+1);}else if(time[n]==0&&(n==4||n==2||n==0)) {time[n]=23;smsub(n+1);}else if(time[n]==0&&(n==5)){time[n]=0;}}void smadd(unsigned char n){char flag=0;delay(80);if((n==0)||(n==2)||(n==4)){if(n==4&&time[5]==2&&time[4]==3){time[4]=0;time[5]=0;flag=1;}if(time[n]==9){time[n]=0;smadd(n+1);}else if(time[n]<9&&flag==0){time[n]=time[n]+1;}}else if((n==1)||(n==3)){if(time[n]==5){time[n]=0;smadd(n+1);}else{time[n]=time[n]+1;}}else if(n==5){if(time[n]==2&&(time[n-1]==3)){time[5]=0;time[4]=0;}else{time[n]=time[n]+1;}}}伟福系统仿真如图所示:3.设计总结通过这次的设计使我认识到我对单片机方面的知识知道的太少了,对于书本上的很多知识还不能灵活运用,有很多我们需要掌握的知识在等着我去学习,我会在以后的学习生活中弥补我所缺少的知识。

8086数字时钟课程设计报告

8086数字时钟课程设计报告

INTEL 8086/8088系列微型计算机原理及接口技术课程名称:微型计算机原理及接口技课程设计设计题目:具有年月日时分秒功能的时钟显示院系:电气工程学院班级:设计者:学号:同组者:指导教师:设计时间:目录一、设计内容与要求 (2)二、设计思路 (3)三、流程图 (4)四、程序 (7)五、运行结果 (12)六、硬件设计…………………………………………………………………………………………………七、调试步骤 (13)八、心得体会 (14)九、参考文献 (14)一、设计内容与要求:用汇编语言编写一个时钟程序,在微机屏幕上显示当前时间****年**月**日**时**分**秒。

在程序启动后,微机屏幕上显示当前时间,按下a键开始计时,按下b键停止计时,按下c键退出程序。

二、设计思路:利用BIOS的INT 1AH的2号系统功能调用,将计算机系统的时间参数(BCD 码)送入寄存器。

其中CH 和CL中保存的是小时数和分钟数;DH中保存的是秒钟数。

利用除法命令DIV,若进行字节操作,16位被除数隐含在AX中,8位除数就是源操作数,结果的8位商在AL中,8位余数在AH中,即(AL)(AH)/(SRC)的商(AL)(AH)/(SRC)的余数若进行字操作,32位被除数低16位隐含在AX中,高16位8位隐含在DX中,16位除数就是源操作数,结果的16位商在AX中,16位余数在DX中,即(AX)(DX,AX)/(SRC)的商(DX)(DX,AX)/(SRC)的余数通过以上方法将二进制表示的年月日时分秒转换为BCD码,再将BCD码表示的时,分,秒转换成AS CⅡ码并送入屏幕显示。

能调用子程序,若显示时间与当前时间不符,则校准显示时间,并用INT 21H 的7号功能调用判断输入回车并清屏。

若输入字符C,则令SIGN=3,即退出程序,若无输入或输入字符不是C,则反复从系统中取出当前时间并显示。

详细过程见程序注释。

三、流程图:四、程序:GB MACRO X ;宏定义MOV AX,0200HMOV BX,0000HMOV CX,0000HMOV DX,XINT 10HENDMXIANSHI MACRO Y,Z,WMOV BP,OFFSET YMOV AH,13HMOV AL,0BMOV BX,0EHMOV CX,ZMOV DX,WINT 10HENDMDATA SEGMENTBUFFER1 DB 11 DUP (?)BUFFER2 DB 9 DUP (?)SECOND DB ?SIGN DB ?STR1 DB 'THE CURRENT TIME: $'STR4 DB 'PRESS C TO EXIT:$'DATA ENDSSTACK SEGMENT STACK 'STACK'DB 100 DUP ('S')STACK ENDSCODE SEGMENT PARA 'CODE'ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA STA PROC FARPUSH DSXOR AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV ES,AXMOV AX,0600HMOV BX,0754HMOV CX,0000HMOV DX,194FHINT 10HXIANSHI STR1,17,0416H ;显示‘ THE CURRENT TIME:’XIANSHI STR4,16,1016H ;显示‘ PRESS C TO EXIT:’BEGIN: CMP SIGN,3 ;若输入字符C,则令SIGN=3,即退出程序,若无输入或输入字符不是C,则反复从系统中取出当前时间并显示JE TUI1MOV AH,2AHINT 21H ;取日期LEA BX,BUFFER1PUSH DX ;保护寄存器MOV AX,CX ;利用除法产生商和余数,把以二进制形式保存的年号转换为BCD码MOV DX,0000H ;年号除以1000得到商即为年号的千位MOV CX,1000DIV CXOR AL,30H ;年号的千位转换为其ASCII码并存入BUFFER1第1存储单元中MOV [BX],ALMOV AX,DX ;年号的百位转换为其ASCII码并存入BUFFER1第2存储单元中MOV CL,64HDIV CLOR AL,30HINC BXMOV [BX],ALMOV AL,AHMOV AH,00H ;年号的十位转换为其ASCII码并存入BUFFER1第3存储单元中MOV CL,10DIV CLOR AL,30HINC BXMOV [BX],ALOR AH,30H ;年号的千位转换为其ASCII码并存入BUFFER1第4存储单元中INC BXMOV [BX],AHPOP DX ;年号转换完毕INC BXMOV CL,2DH ;“—”号的ASCII码存入BUFFER1第5存储单元中MOV [BX],CL ;月数除以10得到商即为月数的十位MOV AL,DH ;月数的十位转换为其ASCII码并存入BUFFER1第6存储单元中CMP AL,10JAE L1JMP L2L1: ADD AL,6L2: PUSH AXAND AL,0F0HSHR AL,1SHR AL,1SHR AL,1SHR AL,1OR AL,30HINC BXMOV [BX],ALPOP AXAND AL,0FHOR AL,30HINC BXMOV [BX],AL ;月数的十位转换为其ASCII码并存入BUFFER1第7存储单元中INC BX ;月数转换完毕MOV CL,2DH ;“—”号的ASCII码存入BUFFER1第8存储单元中 MOV [BX],CL ;日期除以10得到商即为日期的十位MOV AL,DL ;日期的十位转换为其ASCII码并存入BUFFER1第9存储单元中MOV AH,00HMOV CL,10DIV CLOR AL,30HINC BXMOV [BX],AL ;日期的个位转换为其ASCII码并存入BUFFER1第10存储单元中OR AH,30HINC BX ;年月日转换完毕MOV [BX],AHMOV CL,'$' ;“$”号的ASCII码存入BUFFER1第11存储单元中 INC BXJMP NEXTTUI1:JMP TUI2NEXT:MOV [BX],CLXIANSHI BUFFER1,10,0616H ;用9号功能显示年月日MOV AH,2CHINT 21H ;取时间LEA BX,BUFFER2MOV AL,CH ;小时数除以10得到商即为小时数的十位MOV AH,00HMOV CH,10DIV CHOR AL,30H ;小时数的十位转换为其ASCII码并存入BUFFER2第1存储单元中MOV [BX],ALOR AH,30H ;小时数的个位转换为其ASCII码并存入BUFFER2第2存储单元中INC BXMOV [BX],AHINC BXMOV CH,3AH ;“:”号的ASCII码存入BUFFER2第3存储单元中 MOV [BX],CH ;分钟数除以10得到商即为分钟数的十位MOV AL,CLMOV AH,00HMOV CL,10DIV CLOR AL,30H ;分钟数的十位转换为其ASCII码并存入BUFFER2第4存储单元中INC BXMOV [BX],AL ;分钟数的个位转换为其ASCII码并存入BUFFER2第5存储单元中OR AH,30HINC BXMOV [BX],AHINC BXMOV CL,3AH ;“:”号的ASCII码存入BUFFER2第6存储单元中 MOV [BX],CLMOV AL,DH ;秒数除以10得到商即为秒数的十位MOV AH,00HMOV CL,10DIV CLOR AL,30H ;秒数的十位转换为其ASCII码并存入BUFFER2第7存储单元中INC BXMOV [BX],ALOR AH,30H ;秒数的个位转换为其ASCII码并存入BUFFER2第8存储单元中INC BXMOV [BX],AHINC BX ;时分秒转换完毕MOV CL,'$' ;“$”号的ASCII码存入BUFFER2第9存储单元中 MOV [BX],CLXIANSHI BUFFER2,8,0716H ;用9号功能显示时分秒CALL DELY ;调用子程序,若显示时间与当前时间不符,则校准显示时间JMP BEGINTUI2: RETSTA ENDPDELY PROCPUSH CXPUSH DXMOV AH,2CHINT 21HMOV SECOND,DHRE: MOV AH,2CHINT 21HPUSH DXMOV AH,6MOV DL,0FFHINT 21HPOP DXCMP AL,63H ;若输入字符C,则令SIGN=3,即退出程序,若无输入或输入字符不是C,则反复从系统中取出当前时间并显示JE Z3JMP CONTINZ3: MOV SIGN,3CONTIN: CMP SECOND,DHJE RECMP SIGN,1JMP EXITEXIT: POP DXPOP CXRETDELY ENDPCODE ENDSEND STA五、运行结果:程序运行后如下图所示:按下c键,则会出现下图界面:(此时按下任意键即可退出该程序)(注意,若没按下任何键或按下的不是c键,则不会出现下图所示界面)六、硬件设计:1、硬件设计说明:由8284产生系统脉冲送8253的CLK1,通过CPU置计数初值使计数器2输出1KHZ方波。

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

用8088设计电子时钟-CAL-FENGHAI.-(YICAI)-Company One1利用8088设计电子时钟的设计报告目录一、设计任务和要求 ------------------------------- 3二、设计方案的选择与论证 ------------------------- 42.1方案比较------------------------------------ 42.2方案选择-------------------------------------------------------------- 5三、程序设计计算与分析 --------------------------------------------- 63.1实现时钟计时的基本方法 --------------------------------------- 63.2电子钟的时间显示------------------------------------------------- 73.3硬件设计电路图---------------------------------------------------- 83.3.1主电路模块 ------------------------------------------------------ 83.3.2 LED显示模块 ---------------------------------------------------- 83.3.3按键模块---------------------------------------------------------- 93.3.4总体电路图 ----------------------------------------------------- 103.4硬件设计所用芯片介绍 ----------------------------------------- 103.5、软件设计 ---------------------------------------------------------- 163.5.1主程序流程框图 ----------------------------------------------- 163.5.2键扫子程序流程框图 ---------------------------------------- 173.5.3中断处理程序流程框图 ------------------------------------- 193.6电子时钟总体程序------------------------------------------------ 20四、总结及体会 --------------------------------------------------------- 20五.附录 ------------------------------------------------------------------- 21六.参考文献 ------------------------------------------------------------ 332一、设计任务和要求时钟就是一种对时间进行累计的工具,即计时。

计时的本质就是计数,只不过这里的“数”的单位是时间单位,如果把一小片一小片计时单位累计起来,就可获得一段时间。

因此,使用计数器对时钟脉冲进行计数,就是时钟实现的基本原理;再用LED数码管显示出来,并设计出几个按键用于对时钟进行调整,这样,一个完整的时钟就设计完成了。

本次课程设计要求利用8253定时器设计一个具有时、分、秒显示的电子时钟,并定义一个启动键,当按下该键的时候,时钟从当前的设定值(可以在缓冲区中设置)开始走时。

同时,再定义三个按键,分别对时、分、秒进行校正。

可调整运行的电子钟具有三种工作状态:“P.”状态、运行状态、调整状态。

(1)“P.”状态:依靠上电进入,在此状态下,按B, C, D键均无效,按A键有效,进入运行状态。

(2)运行状态:按奇数次A键进入,在此状态下,按B, C, D键均无效,只有按A键有效,按下A键后,退出运行状态,进入调整状态。

(3)调整状态:按偶数次A键进入,在此状态下,按A, B, C, D键均有效。

如按下A键,则退出调整状态,进入运行状态;按3下B, C, D键,则分别对时、分、秒加1,调整结束后必须按A 键,即可退出调整状态,进入运行状态口基本功能要求:“P.”稳定地显示在LED显示器的最左端数码管上,无A键按下(在“P.”状态下,按下B, C, D键无效),则不进入电子钟的运行状态,继续显示“P.”。

按下A键后,电子钟从当前的设定值开始走时。

再次按下A键后,电子钟退出运行状态,进入调整状态,利用B, C, D键把电子钟的显示时间修改为当前实时时间,时间修改正确后可再次按下A键,电子钟则退出调整状态,进入运行状态。

二、设计方案的选择与论证2.1方案比较方案一:利用AT89S52单片机内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时:AT89S52的PO口和P2口外接LED数码管构成显示器;P1口外接四个按键A, B, C, D构成键盘电路。

如图2-1所示。

4图2-1 AT89S52单片机设计方案框图方案二:以8088微处理器作为CPU, 8253做定时计数器产生时钟脉冲,8255A做可编程并行接口,接LED显示时钟和扩展调整按键。

如图2-2所示。

图2-2以8088为CPU设计方案框图2.2方案选择就方案一用单片机来设计电子时钟,从主要芯片耗材上来说比方案二要少,但是用单片机来设计电子时钟,需要做的其5他模块,如单片机最小系统,相对方案二要复杂很多,而且就程序上的编写来说,方案二也比方案一简单。

因此,本设计采用方案二来做。

三、程序设计计算与分析3.1实现时钟计时的基本方法利用8253的16位可编程定时/计数器及8088中断系统实现时钟计数。

(1)计数初值计算:选用8253的定时/计数器1,把定时器设为工作方式2.输入250kHz,输出200Hz,定时时间为5毫秒,则计数溢出200次即得时钟计时最小单位一秒.(2)采用中断方式进行fly出次数累计,计满200次为秒计时(1秒);(3)从秒到分和从分到时的计时是通过累加和数值比较实现。

68253的初始化程序段:设置8253, t1,方式2,输入250kHz,输出200Hz。

计数初值计算公式t=1/f*TC,t为设定时间,TC为计算初值。

mov dx,233hmov a1,74h;设置控制字out dx,almov dx,231hmov ax,1250;设置初值out dx,almov al,ahout dx,al3.2电子钟的时间显示电子钟的时钟时间在六位数码管上进行显示,因此,在内部RAN中设置显示缓冲区共6个单元。

电子钟设置4个按键通过程序控制来完成电子钟的启、停及时间调整A键控制电子钟的启、停:B键调整时C键调整分D键调整秒73.3硬件设计电路图3.3.1主电路模块主电路模块由8088, 8253, 8255A构成,电路如图所示。

3-3-1主电路模块电路3.3.2 LED显示模块显示部分由6个LED组成,用8255A的A口作LED的段码输出口,B口作六个LED数码管的位控输出线。

电路如图3-3-2893-3-2显示模块电路3.3.3按键模块四个按键A, B, C, D 分别完成各自功能,由8255A 的C 口控制。

电路如图3-3-33-3-3按键模块电路3.3.4总体电路图总体电路图见附录l3.4硬件设计所用芯片介绍1.8088的芯片引脚介绍在本系统中,8088工作在最小模式下。

负责对8255A,8253等芯片进行工作方式控制和数据处理,对时钟信号进行响应并控制LED数码管进行显示。

1.AD7~AD0(双向。

三态)为低8位地址/数据的复用引脚线。

采用分时的多路转换方法来实现对地址线和数据线的复用。

在总线坐骑的T1状态。

可见对复用信号使用时间来加以划分的。

它要求在T1状态线出现低8位地址时,用地址锁存器加以锁存。

这样在随后的T状态,即使这些线用作数据线,而低8位地址线的地址在个体却被记录保存下来,并送到地址总线上。

在DMA方式时,这些引线被浮置为高阻状态。

2.A15~A8(输出,三态)为8位地址线。

在读写存储器或外设端口的总线周期内,都作为地址线输出高8位地址。

在DMA方式时,这些引线被浮置为高阻。

103.A19/S6~A16/S3(输出。

三态)为地址/状态复用引脚线,在总线周期的T1状态,这些线表示为最高4位的地址线,在总线周期的其他T状态,这些线用作提供状态信息,同样需要地址锁存器对T1状态出现的最高4位地址加以锁存。

状态信息S6总是为低电平,S5反映当前允许中断标志的状态。

S4与S3一起指示当前哪一个段寄存器被使用。

在DMA方式时,这些引线被浮置为高阻。

4.RD(输出,三态)读信号,当其有效时表示正在对存储器或I/O端口进行读操作。

若IO/M为低电平,表示读取存储器的数据,若IO/M为高电平,表示读取I/O端口的数据。

在DMA方式时,这些引线被浮置为高阻。

5.READY(输入)为准备就绪信号。

低电平有效。

本信号由等待指令WAIT来检查。

我们知道当CPU执行WAIT指令时,CPU处于等待状态,一旦检测到TEST号为低,则结束等待状态,继续执行WAIT指令下面的指令。

6.TEST(输入)为检测信号,低电平有效。

本信号由等待指令WAIT来检查。

我们知道当CPU执行WAIT指令时,CPU处于等待状态,一旦检测到TEST号为低,则结束等待状态,继续执行WAIT指令下面的指令。

7.INTR(输入)可屏蔽中断请求信号,高电平有效。

CPU在执行每条指令的最后一个T状态时,去采样INTR信号,若发现有效,而中断允许标志IF有为1,则CPU在结束当前指令周期后响应中断请求,转去执行中断处理程序。

8.NMI(输入)非屏幕中断请求信号,为一个边缘触发信号,不能由软件加以屏蔽。

只要在NMI线上出现由低到高的变化信号,则CPU就会在当前指令中,转去执行给屏蔽中断处理程序。

9.RESET(输入)复位信号,高电平有效,复位时该信号要求维持高电平值到4个时钟周期,若使初次加电,则高电平信号至少要保持50us,复位信号的到来,将立即结束CPU的当前操作,内部寄存器恢复到初始状态。

当RESET信号从高电平回到低电平时,即复位后进入重新启动时,CPU执行从内存FFFF0H处的指令,通常在FFFF0H 存放一条无条件转移指令,转移到系统程序的实际入口处。

相关文档
最新文档