电子时钟日历系统-8253 -8255
实时日历/时钟系统的实现

山东科技大学信电学院07级大神的课程设计代码,实时日历/时钟的设计及实现825982538255仅供学弟学妹参考,课程设计还要自己做。
.386Init macro op1,op2,op3,op4,op5,op6mov cx,00hmov dh,op1mov dl,op2op6:mov ah,02hmov bh,00hint 10hpush cxmov ah,0ahmov al,op3mov bh,00hmov cx,01hint 10hpop cxinc cxinc op4cmp cx,op5jne op6endmdata segmentshijian db 10 dup(':') ;存放时间riqi db 20 dup(' ') ;存放日期str1 db ' Welcome to use this clock ',0ah,0dhdb '* show time--t ',0ah,0dhdb '* set time--s ',0ah,0dh,'$'str2 db ' _ _ ',0ah,0dhdb ' ( ) ( )',0ah,0dhdb ' | |_| | ',0ah,0dhdb ' | _ | /^_` )( ^_`\ ( ^_`\ ( ) ( ) ',0ah,0dhdb ' | | | |( (_| || (_) )| (_) )| (_) | ',0ah,0dhdb ' (_) (_)`\__,_)| ,__/^| ,__/^`\__, | ',0ah,0dhdb ' | | | | ( )_| | ',0ah,0dhdb ' (_) (_) `\___/^ ',0ah,0dhdb ' _ _ _ _ ',0ah,0dhdb ' ( ) ( ) ( ) ( ) ',0ah,0dhdb ' | `\| | __ _ _ _ `\`\_/^/^__ _ _ _ __ ',0ah,0dhdb ' | , ` | /^__`\( ) ( ) ( ) `\ /^/^__`\ /^_` )( ^__) ',0ah,0dhdb ' |`\ | ( ___/| \_/ \_/ | | |( ___/( (_| || | ',0ah,0dhdb ' (_) (_)`\____)`\___x___/^ (_)`\____)`\__ _)(_) ',0ah,0dh,'$'str3 db ' change date--d',0ah,0dhdb ' change time--c',0ah,0dhdb ' time is right--r ',0ah,0dhdb ' return to menu--m ',0ah,0dhdb ' return to doc--o ',0ah,0dh,'$'year db 'please press a new year:',0ah,0dh,'$'month db 'please press a new month:',0ah,0dh,'$'day db 'please press a new day:',0ah,0dh,'$'hour db 'please press a new hour:',0ah,0dh,'$'minu db 'please press a new minute:',0ah,0dh,'$'seco db 'please press a new second:',0ah,0dh,'$'chag db 'Are you sure(y/n)?',0ah,0dh,'$'error db 'press error,please input right button:',0ah,0dh,'$'wrong db 'You have pressed the wrong button, press a new button:',0ah,0dh,'$'cant db 'cant change the time, please rechange:',0ah,0dh,'$'data endscode segment use16assume ds:data,cs:codestart:mov ax,datamov ds,axmov es,axmov ax,0700h ;清屏,al滚动行数mov bh,1ah ;背景、字体颜色mov cx,0 ;窗口左上角坐标mov dx,2479h ;窗口右下角坐标(Y'X)int 10hInit 00d,00d,0Dh,dl,80d,sign1Init 24d,00d,0Dh,dl,80d,sign2Init 00d,00d,2ah,dh,25d,sign3Init 00d,79d,2ah,dh,25d,sign4mov ah,02h ;设置光标位置(1)mov bh,00h ;显示页码mov dh,07h ;行坐标mov dl,02h ;列坐标int 10hlea dx,str1 ;显示提示字符串mov ah,09hint 21hinput:mov ah,01h ;键盘输入int 21hcmp al,'t'jz desk2 ;跳转下一页面cmp al,'s'jnz error1call chandate ;更改日期call chantime ;更改时间jmp desk2error1:call huilea dx,error ;提示输入错误mov ah,09hint 21hjmp inputmov ah,4chint 21hdesk2:call clear ;清屏mov ah,02h ;设置光标位置(2)mov bh,00h ;页码mov dh,0ah ;Y行坐标mov dl,00h ;列X坐标int 10hlea dx,str3 ;显示字符串2call yinmov ah,09hint 21hclear1:mov ah,1 ;查询键盘缓冲区,测试键盘是否有输入(不将字符读出,用于提前测试按键为何字符)int 16hjz shan ;缓冲区为空,zf=1无输入zf=0有输入xor ax,ax ;不为空则取出,清空int 16hjmp clear1shan:mov ah,02h ;设置光标位置(2)mov bh,00h ;页码mov dh,01h ;Y行坐标mov dl,00h ;列X坐标int 10hlea dx,str2 ;显示字符串2call yinmov ah,09hint 21hmov ah,2ch ;提取系统时间CH=时(0~23),CL=分(0~59),DH=秒(0~59),DL =百分秒(0~99)int 21hmov bl,dhcmp bl,30hjb kuangsub bl,12 ;59-2chkuang:Init 05d,42d,bl,dl,25d,sign9 ;横向Init 08d,42d,bl,dl,25d,sign10Init 05d,42d,bl,dh,04d,sign11 ;纵向Init 05d,67d,bl,dh,04d,sign12push axmov ah,00mov al,blmov bl,2div blInit 00d,00d,al,dh,25d,sign5inc alInit 24d,00d,al,dl,80d,sign6inc alInit 00d,79d,al,dh,25d,sign7inc alInit 00d,00d,al,dl,80d,sign8pop axmov si,0 ;清空后别的指令;读取日期mov ah,2ah ;CX=年,AL=星期DH=月,DL=日int 21hmov ax,cx ;年call ascyear ;年ASC码转换and ah,0 ;ah置零mov al,dh ;月call ascdate ;ASC码转换and ah,0mov al,dl ;日call ascdate ;ASC码转换lea bp,riqi ;显示日期ES:BP=显示字符串的地址mov dx,0632h ;DH,DL=起始行,列mov cx,10 ;CX=显示字符串长度mov bx,004eh ;BH=页码BL=属性(若AL=00H或01H)背景字体颜色mov ax,1301h ;AL=显示输出方式1——字符串中只含显示字符,其显示属性在BL 中。
AMI8583 日历时钟计数240X8静态RAM

AMI8583 工作原理及应用指南
概述
AMI8583 为带 I2C 总线接口的日历时钟芯片,其中还有 256 字节的静态 RAM,AMI8583 也可以作 为一个 6 位 BCD 码事件计数器,故在系统中应用较为广泛,由于作为日历时钟器件配置有电池供电, 可作为 RAM 的保护电源,故 256 字节的 RAM 可视为非易失性 RAM。 AMI8583 的主要技术性能如下: ·宽的工作电压范围 2.6~6V; ·RAM 数据保持电源电压 1~6V; ·最大工作电流 100uA(f SCL=0Hz) ·4 年日历时钟,24 或 12 小时格式,时基 32.768kHz 或 50Hz ·具有可编程和闹钟、定时和中断功能。
定时器标志(若起闹允许位为 0 则是占空比为 50%的秒标志) 起闹标志(若起闹允许位为 0 则是占空比为 50%的分标志
起闹允许位 0:禁止起闹,禁止触发起闹标
志(08H~0FH 单元可作一般 RAM 单元使用) 1:允许起闹,08H 单元为起闹 控制寄存器。
屏蔽位 0:读 05H、06H 单元时不屏蔽 1:05H、06H 单元只读出月、日
工作原理及数据操作格式
AMI8583 有三个主要功能,即日历时钟可使用 32.768KHZ 或 50HZ 时基,可自动计时、编程设定、 编程起闹;事件计数器可进行事件计数编程起闹;256×8SRAM,地址自动增量,其工作原理与一般带
I2C 接口的 RAM 相同。 AMI8583 日历时钟、事件计数器的全部工作状态设置、控制、时钟/事件计数、时钟/事件编程起闹、
(4) 时单元(04H) 该单元为时(钟点)计数寄存器,复位后为 00H。钟点数据占用 2 位二进制码一位 BCD 码,其余 部分用于 12/24 小时标志及状态设置,其格式如下:
8253的工作原理

8253的工作原理8253是一种计数器/定时器芯片,它通过与计算机的输入输出接口相连接,用来执行各种计数和定时操作。
8253具有三个可独立使用的计数器,分别称为计数器0、计数器1和计数器2。
计数器0和计数器1是16位计数器,可以被配置为16位二进制计数器或BCD (二进制编码十进制)计数器。
计数器2是一个8位计数器,只能是二进制计数器。
8253工作的基本原理是通过对计数器寄存器的编程配置,将计数器模式、分频因子和初始计数值设置为期望的值。
然后,8253开始计数,每经过一个时钟周期,计数器的值会递增一次。
当计数器的值和设定的目标值相等时,8253可以产生一个触发信号,可以用来触发中断或产生特定的定时操作。
计数器0和计数器1能够按照不同的计数模式工作。
其中,计数模式0是16位二进制计数器或BCD计数器,计数器值递增或递减,直到计数器达到最大值或最小值时就会重置。
计数模式1是16位计数器,当计数器的值和设定的目标值相等时,计数器会重置为初始值。
计数模式2与计数模式1相似,但在计数器达到目标值时,会产生一个短脉冲。
计数模式3是计数器1和计数器2之间的模式,计数器1会根据计数器2的值进行递增或递减。
计数模式4和模式5分别是软件触发的单脉冲发生器和硬件触发的单脉冲发生器。
除了计数模式之外,8253还提供了可编程的分频器。
分频器可以将输入时钟信号进行分频,从而改变计数器的计数速度。
分频因子可以设置为2、4、8、...、2^16,因此可以根据需要选择合适的分频因子来控制计数速度。
综上所述,8253是一种可编程的计数器/定时器芯片,根据计数模式和分频器配置可以实现各种计数和定时操作。
它通过与计算机接口相连接,可以广泛应用于许多需要计数和定时功能的电子设备和系统中。
电子时钟万年历设计

计算机科学与技术学院硬件课程设计报告摘要在日常生活中,手表,闹钟是不可或缺的。
在实际生活生产活动中,也要考虑时间的因素,如工时的计算,霓虹灯的亮灭。
因为集成电路制造技术的不断提高,出现了高性能、高可靠的集成芯片。
电子时钟在工业领域,日常生活中得到了广泛的应用。
电子时钟在性能方面具有精度高,实时性好,易于调整等优点。
这些使得温度控制系统的研究和开发得到的各方面的广泛关注和支持。
本次课程设计,我利用8254计数芯片,8255芯片,4*4小键盘,12864LCD 液晶显示器,蜂鸣器制作了一个带有闹钟功能的电子时钟万年历。
它可以实现由4*4小键盘输入初始时间(包括年月日时分秒星期),利用8254计数,通过程序处理进位,判断闰年,在液晶显示屏上实时显示时间。
还可以由小键盘选择不同的闹钟模式,设定闹钟时间。
关键词:电子时钟;8255A芯片;8254芯片;12864LCD液晶显示器;键盘输入;蜂鸣器;闹钟功能;万年历目录1.设计任务与要求…………………………………………………………………6-1.1实验目的 (6)1.2具体要求 (6)2.总体方案与说明…………………………………………………………………6-2.1使用硬件 (6)2.1流程设计 (6)2.1.1系统程序模块 (6)2.1.1系统流程图 (7)3.硬件方案 (7)3.1硬件说明 (7)3.1.1计数芯片8254 (7)3.1.2可编程外围接口芯片8255A (8)3.1.2 128×64字符液晶显示器 (11)3.2电路原理图与说明 (12)3.2.1键盘电路 (13)3.2.2 8254计数电路 (13)3.2.3 液晶显示电路 (14)3.3电路连接图 (14)3.3.1 8254计数芯片 (14)3.3.2 整体电路 (15)4.软件方案 (15)4.1软件主要模块流程图 (15)4.1.1输入子程序模块流程图 (16)4.1.2显示子程序模块流程图 (18)4.1.2闰年子程序模块流程图 (18)4.1.2蜂鸣器子程序模块流程图 (18)4.1.2时间进位程序模块流程图 (19)4.1.2主程序模块流程图 (20)4.2源程序清单与注释 (21)5.分析与测试 (38)6.运行结果 (38)6.1试验线路图 (39)6.2实验结果 (39)6.2.1欢迎界面 (39)6.2.2闹钟设定界面 (40)6.2.3闹钟功能实现 (41)6.2.4闰年功能实现 (41)7.结论与体会 (43)7.1结论 (43)7.2体会 (44)参考文献 (45)-1 设计任务与要求1.1实验目的1.复习8255芯片,8254芯片工作原理及使用方法2.学会使用12864字符液晶显示屏,蜂鸣器3.锻炼小规模逻辑电路设计4.提高分析、解决问题的能力1.2具体要求本系统要求能通过4*4键盘输入预设时间,实时反映当前时间的变化并能对闰年进行准确判断。
数电课设--数字钟的设计

数电课设--数字钟的设计摘要:该设计主要是设计一种基于数字电路实现的数字钟,用于显示当前时间,同时设计一个简单的时间调整系统来实现对数字钟的时间调整。
本设计实现了数字钟的时间显示、时间调整等功能,具有简单、实用等优点。
关键词:数字钟、计数器、时间调整系统一、引言数字钟是一种时钟显示设备,它可以在显示面板上显示当前时间,数字钟的普及改变了人们观念上的关于时间知识的变革。
本课设就是要通过设计一个数字钟,来综合应用我们所学的数字电路知识,通过数字电路的设计实现时间的显示及调整。
二、数字钟的设计原理数字钟的设计离不开计数器和定时器,计数器的作用是进行计数操作,进而对时间进行处理,定时器的作用是用来控制计数器的计数和复位,使其能够按照固定的时间序列不断进行计数。
数字钟的显示部分采用数码显示管显示当前时间,数码显示管显示的时间单位有小时、分钟和秒。
三、数字钟的设计方案数字钟的设计方案可以分为两部分,一部分是计数器及定时器的设计,另一部分是时间调整系统的设计。
下面分别进行介绍。
(一)计数器及定时器的设计计数器采用7474型D触发器进行设计,二进制计数器采用模8计数模式,带有异步复位功能。
其中,D触发器的Vcc接+5V电源,GND接地,CLK接定时器的输出,D接Q的输出,Q接下一级触发器D端。
计数器采用8253/8254型定时器,应该根据标准时钟的频率和预置值计算计数器的频率和复位时间。
时间调整功能通常是通过8255接口芯片实现。
(二)时间调整系统的设计时间调整系统通过单片机实现,主要实现以下功能:上下键切换修改时间单位、按键快速调整修改时间数字、按键高频稳定范围设置、判断闹钟是否开启、日历选择等。
四、数字钟的实现数字钟的实现可以参考实验教材进行,实现前需要明确以下几点:1. 根据实际需求确定数字钟的参数:例如显示的时间格式,以及是否需要设置闹钟等。
2. 设计好数字钟的原理图,并选择适合的元件进行接线。
3. 进行电路调试和测试,对电路进行稳定性测试等。
8255电子钟课程设计

8255电子钟课程设计一、课程目标知识目标:1. 理解8255可编程定时器/计数器的工作原理,掌握其在电子时钟设计中的应用。
2. 学会使用8255芯片与微控制器(如8051)的接口技术,并能正确编程控制电子钟的时、分、秒显示。
3. 掌握电子时钟的时间计数与显示的基础算法,能够运用所学知识设计简单的电子时钟程序。
技能目标:1. 培养学生动手能力,通过搭建8255电子时钟电路,提高学生的电路连接与调试技巧。
2. 培养学生编程能力,让学生能够独立编写8255控制电子时钟的程序代码,并实现功能。
3. 培养学生问题解决能力,面对电子时钟设计中的问题,能够进行故障排查和程序优化。
情感态度价值观目标:1. 培养学生对电子技术和编程的兴趣,激发学生的学习热情和创新精神。
2. 培养学生团队协作精神,通过小组合作完成课程设计,增强集体荣誉感和责任感。
3. 培养学生科学严谨的态度,在设计过程中注重细节,遵循操作规程,确保安全与可靠性。
本课程针对高年级电子信息技术或计算机科学与技术相关专业学生,结合教材内容,注重理论联系实际,旨在提高学生电子电路设计、编程及实际应用能力。
课程目标明确、具体,可衡量,为后续教学设计和评估提供依据。
二、教学内容本课程教学内容紧密围绕课程目标,结合教材以下章节:1. 8255可编程定时器/计数器原理与功能- 8255芯片内部结构- 工作模式及时序分析- 接口技术及其在微控制器中的应用2. 电子时钟基础知识- 电子时钟原理概述- 时、分、秒计数与显示方法- 电子时钟程序设计基础3. 8255电子时钟设计与实现- 电路设计与搭建- 程序编写与调试- 故障排查与优化教学内容安排与进度:第一周:8255可编程定时器/计数器原理学习,接口技术了解。
第二周:电子时钟基础知识学习,程序设计基础掌握。
第三周:分组讨论,确定电子时钟设计方案,开始电路搭建与程序编写。
第四周:电路调试,程序优化,完成8255电子时钟设计。
题目:电子日历时钟系统程序设计

题目:电子日历时钟系统程序设计一、功能:1.可通过M键切换显示模式:日期(年、月、日)、时间(小时、分、秒)、秒表(小时、分、秒、1/100秒)、闹钟(小时、分、秒)。
2.在日期显示模式,可通过A键依次使年、月、日闪烁或变色,这时可通过I键加1调整。
3.在时间显示模式,可通过A键依次使小时、分、秒闪烁或变色,这时可通过I键加1调整。
4.在秒表显示模式,可通过I键切换(启动/暂停)计时,当暂停计时时可通过A键复位。
5.在闹钟显示模式,可通过A键依次使On/Off标志、小时、分、秒闪烁或变色,这时可通过I键切换On/Off标志或加1调整。
6.调整和秒表操作不影响日期和时间的准确性。
7.可通过Q键结束程序。
二、任务与要求:1.实现方案,流程图(20分)2.实现日期的显示和调整(15分)3.实现时间的显示和调整(15分)4.实现日期和时间的准确性(5分)5.实现程序正常结束(5分)6.实现秒表功能(20分)7.实现闹钟功能,发声10秒(20分)8.基本实现前5项要求,再实现其它扩展要求,视难度加分。
答辩中误导答辩教师(由答辩教师认定,如某些同学参考其它资料但坚持声称全是自己编写的情况),视情节扣分。
n组设计雷同(由答辩教师认定),第一组正常计分,其余n-1组不计分。
设计报告总体要求:①写出主要设计思路,工作原理;②画出硬件接线图;③调试出现的问题及解决方法;④提交程序清单。
三、编程提示:PC机系统中的8253定时器0工作于方式3,外部提供一个时钟作为CLK信号,频率f=1.1931816MHz。
定时器0输出方波的频率: f out=1.1931816/65536=18.2Hz输出方波的周期T out=1/18.2=54.945ms。
8253A每隔55ms引起一次中断,作为定时信号。
可用55945ms作基本计时单位。
用BIOS调用INT 1AH可以取得该定时单位。
例:1秒=18.2 (计时单位)。
主要利用PC机系统功能调用实现电子日历时钟。
8253的内部结构与工作方式

8253的内部结构与工作方式8253是一种通用计数器/定时器芯片,由Intel公司于1975年研发。
它在计算机系统中主要用于计时、定时和频率发生的应用。
8253的内部结构和工作方式如下:1.内部结构:8253由一个16位计数器和三个16位计数器/分频器组成。
其中,计数器0和计数器2可以用作定时器,计数器1可以用作计数器或分频器。
-计数器0(工作于16位模式):它可以生成一个周期性的方波信号。
它的输入时钟源可以是外部引脚CLK0或者是计数器2的输出CLK2、计数器0还可以分为两个8位计数器,其下方8位由计数器1的输出加法器控制。
-计数器1(工作于16位模式):它可以将计数器0的输出值与一个可编程的初始计数值进行相加或相减。
它的输出可以用作计数器或分频器。
-计数器2(工作于8位模式):它通常用于分频器功能。
它可以接收来自外部引脚CLK2的时钟输入,并将其分频为不同的输出频率。
2.工作方式:- 定时器模式:8253可以工作在三种不同的定时器模式:比率发生器模式(Mode 0)、硬件单触发模式(Mode 1)和软件可编程单脉冲模式(Mode 2)。
在这些模式下,计数器的工作频率和输出信号的脉冲宽度都可以通过编程来设定。
-计数器模式:计数器1可以通过读取或写入操作来读取或设置计数器的值。
当计数器溢出时,可以触发中断。
-分频器模式:计数器2可以工作为一个分频器,将输入时钟分频为指定的输出频率。
在应用方面,8253的工作方式与内部结构密切相关。
通过编程设置不同的计数器模式和计数器值,可以实现各种计时和频率发生的功能。
例如,可以使用8253来测量时间间隔、生成周期性信号、控制器件的定时操作等。
总结起来,8253的内部结构由三个计数器模块组成,分别用于不同的定时和计数功能。
通过设置不同的模式和计数值,可以实现各种计时和频率发生的应用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机科学与技术学院硬件课程设计报告姓名:学号:专业:计算机科学与技术学院班级:网络工程11-3班设计题目:电子时钟万年历成员:指导教师:职称:副教授2013年12月22日徐州课程设计指导教师评阅书指导教师评语:成绩:指导教师签字:年月日摘要计时精确的电子时钟日历在我们生活中能处处能见到。
钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。
本次课程设计我们做的是电子时钟日历,通过使用LCD液晶显示屏显示时间,脉冲是通过可编程8253芯片来提供的,其时间是通过8255来控制显示的,4*4数字键盘将要修改的时间提供给8255芯片,然后8255芯片控制LCD液晶显示屏修改显示的时间。
流程报告中有以下几个方面:任务设计与要求、总体方案、硬件设计、软件设计、结论及试验体会。
目录1设计任务与要求 (2)1.1提出问题 (2)1.1.1分析问题 (2)2总体方案 (2)2.1总体方案概述 (4)2.28253芯片简介 (4)2.3 8255芯片简介 (10)2.4 液晶屏LCD简介 (13)3硬件设计 (15)3.1实物连接图 (15)3.2硬件电路图连接 (15)4软件设计 (16)4.1原理框图 (16)4.2软件设计模块 (17)4.3软件设计问题分析 (18)4.4体流程图 (18)4.5程序清单与注释 (20)4.6验结果 (46)5实验结论及体会 (46)6参考文献 (47)第一章设计任务与要求1.1提出问题本次课程设计,我们主要是可编程定时/计数器芯片8253和并行接口芯片8255A、LED显示屏来实现电子日历时钟系统,首先,由定时/计数器芯片8253产生一定频率的时钟脉冲,将这个时钟脉冲输入到并行接口芯片8255A,再有并行接口芯片8255A处理并输出到LED显示屏实现时钟显示,这样可以实现可视化的电子日历时钟系统。
1.1.1分析问题电子时钟主要是由时钟运算模块和显示模块两大部分组成,很显然,其中时钟运算模块要对时间的数值进行操作,并且秒计算到60时,要自己清零并向分进1;分计算到60时,要自己清零并向时进1;时计算到24时,要清零,并向天进1,以此类推,再设置年月。
这样,才能循环计时。
2 总体方案2.1总体方案概述本实验采用LCD液晶显示屏作为实验芯片。
采用8255来控制LCD的显示时间,用8253来定时刷新显示的时间。
在本实验中,先采用8253提供一个1秒的脉冲给8255,然后8255在定时的控制LCD显示屏显示的时间。
在修改显示屏的时间,用4*4的数字键盘将要修改的时间提供给8255,让后再让8255控制LCD显示屏显示的时间。
其中,时间是用24小时制,年月日的形式输出的。
其中判断年是否为闰年等等问题是通过软件的形式进行设计的。
下面是本实验的总体方案流程图说明:1.先采用8253提供一个1秒的脉冲给8255,然后8255在定时的控制LCD 显示屏显示的时间2.用4*4的数字键盘将要修改的时间提供给8255,让后再让8255控制LCD 显示屏显示的时间。
材料清单:LCD液晶显示屏(ST7920A控制芯片)*1,8255芯片*1,8253芯片*1,4*4键盘*1,导线若干。
2.1.1时钟运算模块时钟运算模块的主要功能时对时、分、秒的运算,并把运算出的最终结果存到事先开辟的内存单元里,以便显示模块即时地显示出来。
因为8253所能提供的信号的周期时毫秒级的,所以用8253来直接计秒肯定是远远不够的,因此必须采用级联的方式,通过软件的方法在运算模块中设置一个统计次数的变量,并且这一变量必须事先在内存里开辟存储单元。
信号是8253的通道产生1秒的脉冲信号。
运算模块负责时、分、秒的计算,在程序里,必须对秒、分和时的单元内的数值进行判断,当秒加到60时,分必须加1、秒清零;当分加到60时,时加1、分清零。
当时加到24时,直接清零。
2.1.2显示模块设置LCD显示屏,使LCD显示屏的一到四行分别显示:(1)第一行显示:★万年日历★(2)第二行显示日期:00/01/01(3)第三行显示时间:00:00:00(4)第四行显示星期:星期日2.2 8253芯片简介2.2.1 8253芯片内部结构intel8253是NMOS工艺制成的可编程计数器/定时器,有几种芯片型号,外形引脚及功能都是兼容的,只是工作的最高计数速率有所差异,例如8253(2.6MHz),8253-5(5MHz)8253内部有三个计数器,分别称为计数器0、计数器1和计数器2,他们的机构完全相同。
每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。
每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。
每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。
执行部件实际上是一个16位的减法计数器,它的起始值就是初值寄存器的值,而初始值寄存器的值是通过程序设置的。
输出锁存器的值是通过程序设置的。
输出锁存器OL用来锁存计数执行部件CE的内容,从而使CPU可以对此进行读操作。
顺便提一下,CR、CE 和OL都是16位寄存器,但是也可以作8位寄存器来用。
2.2.2 8253芯片工作原理8253具有3个独立的计数通道,采用减1计数方式。
在门控信号有效时,每输入1个计数脉冲,通道作1次计数操作。
当计数脉冲是已知周期的时钟信号时,计数就成为定时。
一、8253内部结构8253芯片有24条引脚,封装在双列直插式陶瓷管壳内。
1.数据总线缓冲器数据总线缓冲器与系统总线连接,8位双向,与CPU交换信息的通道。
这是8253与CPU 之间的数据接口,它由8位双向三态缓冲存储器构成,是CPU与8253之间交换信息的必经之路。
2.读/写控制读/写控制分别连接系统的IOR#和IOW#,由CPU控制着访问8253的内部通道。
接收CPU送入的读/写控制信号,并完成对芯片内部各功能部件的控制功能,因此,它实际上是8253芯片内部的控制器。
A1A0:端口选择信号,由CPU输入。
8253内部有3个独立的通道,加上控制字寄存器,构成8253芯片的4个端口,CPU可对3个通道进行读/写操作3对控制字寄存器进行写操作。
这4个端口地址由最低2位地址码A1和A0来选择。
如表所示。
3.通道选择(1) CS#——片选信号,由CPU输入,低电平有效,通常由端口地址的高位地址译码形成。
(2) RD#、WR#——读/写控制命令,由CPU输入,低电平有效。
RD#效时,CPU读取由A1A0所选定的通道内计数器的内容。
WR#有效时,CPU将计数值写入各个通道的计数器中,或者是将方式控制字写入控制字寄存器中。
CPU对8253的读/写操作。
4.计数通道0~2每个计数通道内含1个16位的初值寄存器、减1计数器和1个16位的(输出)锁存器。
8253内部包含3个功能完全相同的通道,每个通道内部设有一个16位计数器,可进行二进制或十进制(BCD码)计数。
采用二进制计数时,写入的初值范围为0000H~0FFFFH,最大计数值是0000H,代表65536。
采用BCD码计数时,写入的初值范围为0000~9999,最大计数值是0000,代表10000。
与此计数器相对应,每个通道内设有一个16位计数值锁存器。
必要时可用来锁存计数值。
(特别说明:8253计数器的值先减1再判断是否为0,为0就中断了,所以最大初始值为0,这样减1以后,不为0,所以为最大的,取决于CF标志位)当某通道用作计数器时,应将要求计数的次数预置到该通道的计数器中、被计数的事件应以脉冲方式从CLK端输入,每输入一个计数脉冲,计数器内容减“1”,待计数值计到“0”。
OUT端将有输出。
表示计数次数到。
当某个通道用作定时器时。
由CLK输入一定频率的时钟脉冲。
根据要求定时的时间长短确定所需的计数值。
并预置到计数器中,每输入一个时钟脉冲,计数器内容减“1”,待计数值计到“0”。
OUT将有输出,表示定时时间到。
允许从CLK 输入的时钟频在1~2MHz范围内。
因此,任一通道作计数器用或作定时器用,其内部操作完全相同,区别仅在于前者是由计数脉冲进行减“1”计数。
而后者是内时钟脉冲进行减“1”计数。
作计数器时,要求计数的次数可直接作为计数器的初值预置到减“1”计数器中。
作定时器时,计数器的初值即定时系数应根据要求定时的时间进行如下运算才能得到:定时系数=需要定时的时间/时钟脉冲周期①设置通道:向方式控制字寄存器端口写入方式选择控制字,用于确定要设置的通道及工作方式;②计数/定时:向通道写入计数值,启动计数操作;③读取当前的计数值:向指定通道读取当前计数器值时,8253将计数器值存入锁存器,从锁存器向外提供当前的计数器值,计数器则继续作计数操作。
④计数到:当计数器减1为0时,通过引脚OUTi向外输出“到”的脉冲信号。
计数初值输入存放在初值寄存器中,计数开始或重装入时被复制到计数器中。
锁存器在非锁存状态,其值随计数器的变化而变化;一旦锁存了计数器的当前值,直到锁存器值被读取后才能解除锁存状态。
5.方式选择控制字8253的初始化编程就是对其工作方式的确定。
具体实现就是在8253上电后,由CPU 向8253的控制寄存器写入一个控制字,就可以规定8253的工作方式、计数值的长度以及计数所用的数制等,另外根据要求将计数值写入8253的相应通道。
8253的一个方式控制字只决定一个技术通道的工作模式。
二、8253的通道工作方式8253中各通道可有6种可供选择的工作方式,以完成定时、计数或脉冲发生器等多种功能。
8253的各种工作方式如下:1.方式0:计数结束则中断工作方式0被称为计数结束中断方式。
当任一通道被定义为工作方式0时,OUTi输出为低电平;若门控信号GATE为高电平,当CPU利用输出指令向该通道写入计数值WR#有效时,OUTi仍保持低电平,然后计数器开始减“1”计数,直到计数值为“0”,此刻OUTi将输出由低电平向高电平跳变,可用它向CPU发出中断请求,OUTi端输出的高电平一直维持到下次再写入计数值为止。
在工作方式0情况下,门控信号GATE用来控制减“1”计数操作是否进行。
当GATE=1时,允许减“1”计数;GATE=0时,禁止减“1”计数;计数值将保持GATE有效时的数值不变,待GATE重新有效后,减“1”计数继续进行。
显然,利用工作方式0既可完成计数功能,也可完成定时功能。
当用作计数器时,应将要求计数的次数预置到计数器中,将要求计数的事件以脉冲方式从CLKi 端输入,由它对计数器进行减“1”计数,直到计数值为0,此刻OUTi输出正跳变,表示计数次数到。
当用作定时器时,应把根据要求定时的时间和CLKi的周期计算出定时系数,预置到计数器中。