模拟时钟程序设计

模拟时钟程序设计
模拟时钟程序设计

目录

1.设计目的和内容

2.基本功能描述

3.设计思路

4.软件设计:设计步骤、界面设计、关键功能的实现

5.结论与心得体会

6.参考文献

7.附录:调试报告、测试结果、关键源代码

1.设计目的和实验内容

1.1设计目的:

1学习Visual C++的MFC开发程序的步骤。

2综合运用所学的类、继承和多态的知识。

3进一步掌握程序的调试方法。

1.2 实验内容

1基于MFC的WINDOWS应用程序设计方法,编写一个模拟时钟程序;

2在屏幕中间有一个指针式时钟;

3这个时钟的下方或者上方以数字方式显示时间,该时间应与指针显示的时间一致;

4用菜单选项打开的对话框,或者主界面里的控件设置时间。时间不必与机器系统时间相同,可任意设置。

2.基本功能描述

编辑运行代码时,窗口界面会出现一个色调为绿色,背景为黑色的指针时钟;一个精确到秒的数字时钟;一个退出按钮;一个设置按钮;三个设置自定义时间的编辑框。运行时调用的为系统的时间,在编辑框中分别输入自定义时分秒点击设置,指针时钟和数字时钟会跳转为自定义时间。按退出键关闭窗口。

3.设计思路

首先,指针时钟的背景,指针形状长度,正点格子和秒数格子的设计代码过于繁琐和复杂,稍做了解便可从网上抄录,然后再把参数及变量改成自己设计部分所需的名称即可。

其次,本程序的基础及核心思路为用一个计数器器SetTime(1,1000,NULL)调用WM_TIMER的On Timer()函数,达到更新时间,重绘窗口的效果。

而在程序初步完成后,导师初查指出用SetTime()计数与系统时间的进度存在误差,所以不可以用SetTime()函数计时。于是本人将算法改成用系统时间和编辑框输入的时间作差,得到一个定值,再用系统时间减去这个定值就为设置的时间了,此时SetTime()函

数仅仅起到一个重绘作用,时间进度是有系统时间进度决定的。

以上便是本次实验的设计思路。

4.软件设计:设计步骤、界面设计、关键功能的实现

4.1 设计步骤

1.决定用基本对话框来完成本次实验并设计好实验的对话框样式,添加所需的按钮、编辑框等控件。

2.数字时钟难度不大,而指针时钟比较困难,上网查阅指针时钟的制作的教程,并寻找所需的函数。定义好需要的类和成员函数。

3.设计算法并成员函数。

4.2 界面设计

根据课设题目的要求,我决定设计两个个静态文本分别输出指针时钟的图像和数字时钟的数字显示;设置三个编辑框输入自定义的时分秒;设置两个按钮接收设置的时间和退出程序。

4.3 关键功能的实现

用CTime::GetCurrentTime()调用系统的时间;定义一个CTime的对象t,用t.GetHour(),

t.GetMinute(),t.GetSecond()抽出时间的时分秒,并同意化成距0:00:00时刻的秒数;用该秒数减去自定义时间的秒数然后化成十分秒的形式,分别在指针时钟和数字时钟的静态文本上输出,并用SetTime()函数每一秒输出一次(即重绘)。便可实现显示时间功能。

5.心得与体会

完成本次课程设计是我大学生涯做过最困难的事情,没有之一。由于过度自信和选择的随意,在没有了解MFC之前变随意选择了一个题目。动手起来处处是难点,每完成一个部分都要花费大量时间,效率十分低。于是花费一天时间查阅文字资料,终于会MFC程序设计有了一定的了解,着手起来顺利许多。元旦前一天整个下午都在机房向老师请教问题,感觉之前从网上生搬硬套的东西也通透了很多。最后在跨年钟声敲响前一刻完成了试验,感觉整个人一下轻松下来,细想收获颇丰。

6.参考文献

百度文库“指针时钟制作教程”

7.调试报告、测试结果、关键源代码

7.1 调试报告

调试成功,无错误报告

7.2

测试结果如图所示

系统时间

自定义时间1

自定义时间2

7.3 关键源代码

7.31 设置按钮和编辑框的关联

void CClock2Dlg::OnButton1()

{

// TODO: Add your control notification handler code here

UpdateData();

CTime t=CTime::GetCurrentTime();

ssecond=(t.GetHour()-atoi(m_s1))*3600+(t.GetMinute()-atoi(m_s2))*60+t.GetSecond()-atoi( m_s3);

}

7.32 退出按钮的实现

}

void CClock2Dlg::Onexitbt()

{

// TODO: Add your control notification handler code here

CDialog::OnCancel();

KillTimer(1);

}

7.33 实现系统时间与自定义时间同步的函数

void CClock2Dlg::OnTimer(UINT nIDEvent)

{

// TODO: Add your message handler code here and/or call default

CTime t=CTime::GetCurrentTime();

CString str;

str.Format("%02d: %02d: %02d",t.GetHour(),t.GetMinute(),t.GetSecond());

int nowtime=t.GetHour()*3600+t.GetMinute()*60+t.GetSecond()-ssecond;

int a=nowtime%(24*3600)/3600;

int b=nowtime%(24*3600)%3600/60;

int c=nowtime%(24*3600)%3600%60;

str.Format("%02d: %02d: %02d",a,b,c);

SetDlgItemText(IDC_curtime,str);

//m_s1.Format("%02d",a);

// m_s2.Format("%02d",b);

// m_s3.Format("%02d",c);

CDialog::OnTimer(nIDEvent);

}//数字时钟的OnTimer函数

void CClockEx::OnTimer(UINT nIDEvent)

{

// TODO: Add your message handler code here and/or call default

Invalidate(FALSE);

CTime t=CTime::GetCurrentTime();

int nowtime=t.GetHour()*3600+t.GetMinute()*60+t.GetSecond()-ssecond;

j=nowtime%(24*3600)/3600;

k=nowtime%(24*3600)%3600/60;

l=nowtime%(24*3600)%3600%60;

CStatic::OnTimer(nIDEvent);

}指针时钟的OnTimer函数

以上关键源代码主要为算法,全为本人设计,无参考文献。

7.34 指针时钟时针分秒针的绘制

CClockHourHand::CClockHourHand()

{

//定义默认颜色

m_crMain = RGB(0, 255, 100);

m_crOther = RGB(128, 128, 0);

}

CClockHourHand::~CClockHourHand()

{

}

void CClockHourHand::Draw(CDC *pDC)

{

//初始化设备环境

CPen penMain(PS_SOLID, 1, m_crMain), penOther(PS_SOLID, 1, m_crOther);

CBrush brMain(m_crMain), brOther(m_crOther);

CPen *pOldPen = pDC->SelectObject(&penOther);

CBrush *pOldBrush = pDC->SelectObject(&brMain);

//确定当前指针的弧度

//int nTime = (m_tmCur.GetHour() % 12) * 3600;

int nTime = (j % 12) * 3600;

nTime += k* 60;

nTime += l;

double fRadian = 2 * PI * nTime / 3600 / 12;

//确定绘制菱形指针所需的四个角的坐标

CPoint ptDiamond[4];

for(int i=0; i<4; i++)

{

ptDiamond[i] = m_rcRegion.CenterPoint();

}

int nRadus = m_nRadius / 2;

ptDiamond[0].Offset((int)(nRadus * sin(fRadian)), (int)(- nRadus * cos(fRadian)));

fRadian += 0.5 * PI;

nRadus = m_nRadius / 20;

ptDiamond[1].Offset((int)(nRadus * sin(fRadian)), (int)(- nRadus * cos(fRadian)));

fRadian += 0.5 * PI;

nRadus = m_nRadius / 10;

ptDiamond[2].Offset((int)(nRadus * sin(fRadian)), (int)(- nRadus * cos(fRadian)));

fRadian += 0.5 * PI;

nRadus = m_nRadius / 20;

ptDiamond[3].Offset((int)(nRadus * sin(fRadian)), (int)(- nRadus * cos(fRadian))); //绘制菱形时针

pDC->Polygon(ptDiamond, 4);

//恢复设备环境

pDC->SelectObject(pOldPen);

pDC->SelectObject(pOldBrush);

}//时针

CClockMinHand::CClockMinHand()

{

//定义默认颜色

m_crMain = RGB(0, 255, 100);

m_crOther = RGB(128, 128, 0);

}

CClockMinHand::~CClockMinHand()

{

}

void CClockMinHand::Draw(CDC *pDC)

{

//初始化设备环境

CPen penMain(PS_SOLID, 1, m_crMain), penOther(PS_SOLID, 1, m_crOther);

CBrush brMain(m_crMain), brOther(m_crOther);

CPen *pOldPen = pDC->SelectObject(&penOther);

CBrush *pOldBrush = pDC->SelectObject(&brMain);

//确定分针所在位置的弧度

int nTime = k * 60;

nTime += l;

double fRadian = 2 * PI * nTime / 3600;

//确定绘制菱形指针所需的四个角的坐标

CPoint ptDiamond[4];

for(int i=0; i<4; i++)

{

ptDiamond[i] = m_rcRegion.CenterPoint();

}

int nRadus = m_nRadius / 2;

ptDiamond[0].Offset((int)(nRadus * sin(fRadian)), (int)(- nRadus * cos(fRadian)));

fRadian += 0.5 * PI;

nRadus = m_nRadius / 20;

ptDiamond[1].Offset((int)(nRadus * sin(fRadian)), (int)(- nRadus * cos(fRadian)));

fRadian += 0.5 * PI;

nRadus = m_nRadius / 10;

ptDiamond[2].Offset((int)(nRadus * sin(fRadian)), (int)(- nRadus * cos(fRadian)));

fRadian += 0.5 * PI;

nRadus = m_nRadius / 20;

ptDiamond[3].Offset((int)(nRadus * sin(fRadian)), (int)(- nRadus * cos(fRadian))); //绘制菱形分针

pDC->Polygon(ptDiamond, 4);

//恢复设备环境

pDC->SelectObject(pOldPen);

pDC->SelectObject(pOldBrush);

}//分针

CClockSecHand::CClockSecHand()

{

//设定秒针的默认颜色

m_crMain = RGB(0, 200, 200);

m_crOther = RGB(0, 200, 200);

}

CClockSecHand::~CClockSecHand()

{

}

void CClockSecHand::Draw(CDC *pDC)

{

int nTime = l;

CPoint ptStart = m_rcRegion.CenterPoint();

CPoint ptEnd = ptStart;

int nRadius = m_nRadius - 10;

ptEnd.Offset((int)(nRadius * sin(2 * PI * nTime / 60)),

(int)(-nRadius * cos(2 * PI * nTime / 60)));

CPen penMain(PS_SOLID, 1, m_crMain);

CPen *pOldPen = pDC->SelectObject(&penMain);

pDC->MoveTo(ptStart);

pDC->LineTo(ptEnd);

pDC->SelectObject(pOldPen);

}//秒针

以上大部分从网上摘录,做了一些改动作为本程序所用。

电子钟课程设计

数字电子技术课程设计报告 设计题目:数字电子钟的设计 课程设计时间2011..24~2011..30 院系:XX纺织大学电子信息工程学院 班级:电气094 设计学生:杨海X爱祥 一、数电课程设计的目的: 数字电子技术课程设计是在学习完数字电子电路课程之后,按照课程教学的要求,对学生进行综合性训练的一个实践性教学环节。主要目的是培养学生综合运用理论知识能力,分析问题和解决问题的能力,以及根据实际要求进行独立设计的能力;了解数字电子电路的一般设计方法,初步掌握数字电子线路安装、布线、焊接、调试等基本技能;熟练掌握电子电路基本元器件的使用方法,训练、提高读图能力;掌握组装、调试方法。 二、设计题目及内容 、设计题目:数字电子时钟 2、内容和要求: ()时间以24 小时为一个周期; (2)显示时、分、秒;

(3)有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间; (4)根据要求阅读数字时钟电路原理图,阅读教材及查找相关资料,叙述工作原理; (5)画出包含+5 伏的稳压电源在内的原理电路图,根据原理图画出对应的印刷电路图,并在图中标出元器件的符号及代码; (6)安装、焊接、连线、调试电路; (7)最后提交调试好的设计作品,撰写并提交实验、调试报告,解答思考题。 三、功能及简单工作原理数字电子钟的原理方框图 如下图()所示。干电路系统由秒信号发生器、“时、分、秒”计数器、译码器及显示器、校时电路组成。秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加分频器来实现。将标准秒信号送入“秒计数器”,“秒计数器”采用60 进制计数器,每累计60 秒发现一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60 进制计数器,每累计60 分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”“时计数器”采用24 进制计时器,可实现对一天24 小时的累计。。译码显示电路将“时”“分”“秒”计数器的输出状态由七段显示译码器译码,通过六位LED 七段显示器显示出来。校时电路是用来对“时”“分”“秒”显示数字进行校对调整的。

用C++编写模拟时钟程序

模拟时钟程序 1 基本功能描述 本次课程设计是基于面向对象的应用程序设计,主要运用C++语言在VC++开发环境下的MFC中编程实现。模拟时钟的基本功能是程序初始在屏幕上有一指针式时钟表盘,表盘为椭圆形,内部分布有12个刻度,表盘上有三个长度和颜色不同的时针分针和秒针,相互之间容易辨认,指针的运动通过数学推导之后以代码实现。表盘的下方是一个数字形式显示的数字钟,其显示时间的格式是时:分:秒,指针式时钟和数字式时钟显示的时间同步,且两个时钟所显示的时间与系统时间相致,页面的菜单项设有时间设置项,可以对所显示的时间进行调整,能进行调整的具体内容是年、月、日、时、分、秒。设计成功之后,此应用程序便可以起到时钟显示的作用。 2 设计思路 2.1 程序流程图

图1 模拟时钟程序流程图 2.2 程序流程分析 (1) 绘制指针式的时钟和数字式的时钟图形时,要在CView类下进行。其中OnDraw()函数在绘制视图窗口时被调用,在定义了画刷CBrush和画笔CPen之后,调用GetClientRect()定义屏幕大小并确定椭圆中心的坐标,然后调用Ellipse绘制椭圆,即指针式的时钟表盘,SetTextColor绘制文本颜色,调用MoveTo和LineTo绘制表盘指针,同时调用CreateFont()创建数字钟字体,TextOut则是用以数字钟的文本输出。 (2) 模拟时钟处理消息的过程:首先调用SetTimer函数定义时钟消息,包括参数指定计时器的ID,消息产生的时间间隔,回调函数为NULL;调用消息处理函数OnTimer()刷新窗口显示。在相应的WM_TIMER消息处理里添加时钟消息响应代码;最后调用KillTimer 释放该时钟。 (3) 要实现时钟的动态效果,即时间窗显示的时间每隔一秒钟更新一次,需要在时间窗格的正文调用CStatusBar::SetPaneText()函数。要定时更新,则应利用WM_TIMER消息,计时器每隔一定的时间间隔就会发出一个WM_TIMER消息,而这个时间间隔可由用户指定。MFC的Windows类提供了WM_TIMER消息处理函数OnTimer(),应在该函数内进行更新时间窗格的工作。先利用ClassWazard给CMainFrame类加入WM_TIMER消息处理函数OnTimer(),CMainFrame:: OnTimer()函数是在系统发给框架窗口消息WM_TIMER时调用

《数字逻辑》数字时钟课程设计报告资料

《数字逻辑》课程设计报告 题目数字时钟 学院(部)信息工程学院 专业计算机科学与技术 班级计算机一班 学生姓名 学号20132402 6 月29 日至 7 月 3 日共1 周 指导教师(签字)

题目 一.摘要: 钟表的数字化给人们的生产生活带来了极大的方便,并且极大的扩展了钟表原先的报时功能。诸如定时自动报有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常警、学校的按时自动打铃、时间程序自动控制、定时广播、定时启闭路灯,甚至各种定时电气的自启用等。所现实的意义。本次数电课设我组设计的数字时钟是由石英晶体振荡器、分频器、计数器、译码器、显示器、校时电路、报时电路和计时电路组成,石英晶体振荡器产生的信号经过分频器作为秒脉冲,秒脉冲送入计数器计数,计数结果通过“时”、“分”、“秒”译码器在七段显示器上显示时间。 二.关键词: 校时计时报时分频石英晶体振荡器 三.技术要求: 1、有“时”、“分”、“秒”(23小时59分59秒)显示且有校时功能; 2、有计时功能,时钟不会在计时的时候停下。计时范围是0~99秒; 3、有闹铃功能,闹铃响的时间由使用者自己设置,闹铃时间至少一分钟; 4、要在七段显示器(共阴极6片)显示时间; 5、电子钟要准确正常地工作。 四、方案论证与选择: 钟表的是长期使用的器件,误差容易积累由此增大。所以要求分频器产生的秒脉冲要极其准确。而石英晶体产生的信号是非常稳定的,所以我们使用石英晶体产生的信号经过分频电路作为秒脉冲。秒脉冲信号经过6级计数器,分别得到“秒”、“分”、“时”的个位、十位的计时。由实际的要求,“秒”、“分”计数器为60进制的计数器,小时为24进制。由于74LS160十进制加法计数器易于理解使用,我们在设计各个计数器时都是由采用74LS160芯片级联构成。在计时部分,最小单位是0.01s,我们采用555多谐振荡器产生100HZ的信号作为秒脉冲进入一个4级计数器,计时范围是0~99秒。石英晶体

基于单片机的电子时钟课程设计报告

目录 一、引言········ 二、设计课题········· 三、系统总体方案········· 四、系统硬件设计······ 1.硬件电路原理图 2.元件清单 五、系统软件设计········· 1.软件流程图 2.程序清单 六、系统实物图········ 七、课程设计体会········ 八、参考文献及网站········· 九、附录·········

一.引言 单片机因将其主要组成部分集成在一个芯片上而得名,就是把中央处理器、随机存储器、只读存储器、中断系统、定时器/计数器以及I/O接口电路等部件集成在一个芯片上。 基于单片机设计的数字钟精确度较高,因为在程序的执行过程中,任何指令都不影响定时器的正常计数,即便程序很长也不会影响中断的时间。 数字钟是采用数字电路实现对日期、时、分、秒,数字显示的计时装置,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表的报时功能。数字钟已成为人们日常生活中的必需品,广泛应用于家庭、车站、码头、剧院、办公室等场所,给人们的生活、学习、工作带来极大的方便。不仅如此,在现代化的进程中,也离不开电子钟的相关功能和原理,比如机械手的控制、家务的自动化、定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。而且是控制的核心部分。因此,研究数字钟及扩大其应用,有着非常现实的意义。 本设计使用12MHZ晶振与单片机AT89C51相连接,以AT89C51芯片为核心,采用动态扫描方式显示,通过使用该单片机,加之在显示电路部分使用HD74LS373驱动电路,实现在8个LED数码管上显示时间,通过4个按键进行调时、复位等功能,在实现各功能时数码管进行相应显示。软件部分用C语言实现,分为显示、延迟、调时、复位等部分。通过软硬件结合达到最终目的。

电子时钟课程设计.

单片机实训课题电子时钟 班级11电气本1班学号4110211140 姓名陈后亥 指导教师叶文通 日期2013.12.30~2014.1.3

摘要 随着时代的进步,越来越多的电子厂品趋向于低成本,高性能,耐用性好的方向发展。特别是趋向于自动化控制的方向走。89c51作为控制芯片是最好不过的选择啦。它具有强大的功能,并且简单易于操作,安全性与稳定性较高,价格便宜,适合中小型电子厂品开发中的控制器。就像我们的课程设计,基于89c51单片机的电子时钟的课程设计。 这款课程设计用到的主要材料有89c51单片机,1602液晶显示屏,矩阵键盘,以及一些电容电阻元件等等。 使用89c51作为电子时钟的控制器很简单,就是由于其经济型与稳定性和易操作性。显示电路上,选择使用1602液晶显示屏上。1602不仅操作上臂数码管简单许多,而且使用1602能在很大程度上是电路图尽量简化,便于操作与错误的检修。并且1602价格也比较便宜。 基于89c51电子时钟的设计,利用了单片机内部的一个自带定时/计数器来实现定时功能,并通过内部程序,实现对时分秒,年月日这几个输出数值的自增,并且通过编写程序,实现通过键盘控制时分秒,年月日大小的调整,这是必要的功能。最后通过1602液晶显示电路将时间显示在其上。 这样的电子时钟比较精准,其主要误差来源与晶振的误差,即使是这样,他的误差也只是微妙级别,对于日常生活中的时间计数是足够的。 关键词:89c51单片机;1602液晶显示屏;矩阵键盘;keil软件

目录摘要 1单片机简介 1.1 单片机概述 1.2 单片机基本结构 21602液晶显示屏简介 1.11602显示原理 1.21602指令集合 3 电子时钟硬件设计 3.1 功能框图 3.2 单片机复位与晶振电路 3.3 1602显示电路 3.4 总体电路设计 4 电子时钟软件设计 4.1 程序流程框图 4.2 程序源代码 参考文献 致谢

模拟电子时钟c语言程序

算法:将当前时间显示到屏幕,当时间发生变化时,清屏,显示新的时间(当有键盘操作时退出程序)。 显示时间格式:小时:分钟:秒 /* DEV C++ Win XP*/ #include #include #include #include typedef struct { int x; int y; }Point; time_t now; struct tm *pt,t1,t2; int printpoint(Point p) { Point p1; p1.x=p.x+2; p1.y=p.y+4; gotoxy(p1.x,p1.y); printf("%c%c",2,2); gotoxy(p1.x, p1.y+1); printf("%c%c",2,2); p1.y+=4; gotoxy(p1.x,p1.y); printf("%c%c",2,2); gotoxy(p1.x,p1.y+1); printf("%c%c",2,2); return 0; } int print0(Point p) { int i=0; for(;i<13;i++) { gotoxy(p.x+1, p.y+i); if(i==0||i==12) printf("%c%c%c%c%c%c",2,2,2,2,2,2); else printf("%c%4s%c",2," ",2); } return 0; }

int print1(Point p) { int i=0; for(;i<13;i++) { gotoxy(p.x+1, p.y+i); printf("%5s%c"," ",2); } return 0; } int print2(Point p) { int i=0; for(;i<13;i++) { gotoxy(p.x+1, p.y+i); if(i==0||i==6||i==12) printf("%c%c%c%c%c%c",2,2,2,2,2,2); else if(i>0&&i<6) printf("%5s%c"," ",2); else printf("%c",2); } return 0; } int print3(Point p) { int i=0; for(;i<13;i++) { gotoxy(p.x+1, p.y+i); if(i==0||i==6||i==12) printf("%c%c%c%c%c%c",2,2,2,2,2,2); else printf("%5s%c"," ",2); } return 0; } int print4(Point p) {

数字电子钟课程设计实验报告

中北大学 信息与通信工程学院 通信工程专业 《电子线路及系统》课程设计任务书2016/2017 学年第一学期 学生姓名:张涛学号: 李子鹏学号: 课程设计题目:数字电子钟的设计 起迄日期:2017年1月4日~2017年7月10日 课程设计地点:科学楼 指导教师:姚爱琴 2017年月日 课程设计任务书

中北大学 信息与通信工程学院 通信工程专业 《电子线路及系统》课程设计开题报告2016/2017 学年第一学期 题目:数字电子钟的设计 学生姓名:张涛学号: 李子鹏学号:

指导教师:姚爱琴 2017 年 1 月 6 日 中北大学 信息与通信工程学院 通信工程专业 《电子线路及系统》课程设计说明书2016/2017 学年第二学期 题目:数字电子钟的设计 学生姓名:张涛学号: 李子鹏学号: 指导教师:姚爱琴 2017 年月日

目录 1 引言 (6) 2 数字电子钟设计方案 (6) 2.1 数字计时器的设计思想 (6) 2.2数字电路设计及元器件参数选择 (6) 2.2.2 时、分、秒计数器 (7) 2.2.3 计数显示电路 (8) 2.2.5 整点报时电路 (10) 2.2.6 总体电路 (10) 2.3 安装与调试 (11) 2.3.1 数字电子钟PCB图 (11) 3 设计单元原理说明 (11) 3.1 555定时器原理 (12) 3.2 计数器原理 (12) 3.3 译码和数码显示电路原理 (12) 3.4 校时电路原理 (12) 4 心得与体会 (12) 1 引言 数字钟是一种用数字电子技术实现时,分,秒计时的装置,具有较高的准确性和直观性等各方面的优势,而得到广泛的应用。此次设计数字电子钟是为了了解数字钟的原理,在设计数字电子钟的过程中,用数字电子技术的理论和制作实践相结合,进一步加深数字电子技术课程知识的理解和应用,同时学会使用Multisim电子设计软件。 2数字电子钟设计方案 2.1 数字计时器的设计思想 要想构成数字钟,首先应选择一个脉冲源——能自动地产生稳定的标准时间脉冲信号。而脉冲源产生的脉冲信号地频率较高,因此,需要进行分频,使得高频脉冲信号变成适合于计时的低频脉冲信号,即“秒脉冲信号”(频率为1Hz)。经过分频器输出的秒脉冲信号到计数器中进行计数。由于计时的规律是:60秒=1分,60分=1小时,24小时=1天,就需要分别设计60进制,24进制计数器,并发出驱动信号。各计数器输出信号经译码器、驱动器到数字显示器,是“时”、“分”、“秒”得以数字显示出来。 值得注意的是:任何记时装置都有误差,因此应考虑校准时间电路。校时电路一般

模拟时钟的VB程序

沈阳航空航天大学课程设计 学号2009040301055 班级94030102 姓名李超 指导教师刘学平 2010 年3 月15 日

沈阳航空航天大学 课程设计任务书 学院:航空宇航工程学院专业:飞行器制造班级:94030102 学号:2009040301055 题目:模拟时钟 一、课程设计时间 2011年3月7日~11日(第1周),共计1周。 二、课程设计内容 在窗体上演示一个正在工作的有时、分、秒指针的时钟,要求:可以对时钟的时间进行手工修正。 用户界面中的菜单(或命令按钮)至少应包括“运行时钟”、“修改时间”、“退出”3项。 三、课程设计要求 程序质量: ?贯彻事件驱动的程序设计思想。 ?用户界面友好,功能明确,操作方便;可以增加其它功能或修饰。 ?代码应适当缩进,并给出必要的注释,以增强程序的可读性。 课程设计说明书: ?课设结束后,上交课程设计说明书和源程序。课程设计说明书的内容参见提 供的模板。 四、指导教师和学生签字 指导教师:________ 学生签名:________ 五、成绩 六、教师评语

目录 一、需求分析 (4) 二、设计分析 (5) 三、关键技术 (7) 四、总结 (12) 五、完整的源程序 (14) 六、参考文献 (16)

一、需求分析 “模拟时钟”软件。在窗体上演示一个正在工作的有时、分、秒指针的时钟,要求:可以对时钟的时间进行手工修正。用户界面中的菜单(或命令按钮)至少应包括“运行时钟”、“修改时间”、“退出”3项。 ①在VB窗体Form1中设计模拟时钟表盘,设计四个按钮:运行时钟、修改时间、应用、退出。在窗体Form2中设计填输入时间的位置和两个按钮:重新输入、确定。 ②用运行时钟按钮使时钟从零点开始运行。 ③利用修改时间按钮在Form2中输入合理时间,单击确定后单击应用使模拟时钟按所需时间开始运行。 ④Form2中重新输入按钮可以使所有Text控件清空,可以进行时间的重新输入。 ⑤程序可以实现时钟指针的转动。

单片机电子时钟课程设计报告

目录 1、引言·3 2、总体设计·4 3、详细设计·5 3.1硬件设计·5 3.2软件设计·10 4、实验结果分析·26 5、心得体会·27 6、参考文献·27

摘要 单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习、应用,以AT89S51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由4.5V直流电源供电,通过数码管能够准确显示时间,调整时间,从而到达学习、设计、开发软、硬件的能力。 关键词:单片机 AT89C51

1.引言 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。 目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路装化等几个方面发展。下面是单片机的主要发展趋势。单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。

模拟时钟转动程序课程设计报告

《高级语言》课程设计 课题名称模拟时钟转动程序 学院信息工程专业网络工程地点 D507 学生姓名钟都华学号 13046130 开课时间 2013 至 2014 学年第 2 学期 同组人李卓 成绩

一、课程设计的目的和要求 1.课程设计的目的 本程序旨在训练读者的基本编程能力,使读者熟悉C语言图形模式下的编程。本程序中涉及时间结构体、数组、绘图等方面的知识。通过本程序的训练,使读者能对C 语言有一个更深刻的了解,掌握利用C语言相关函数开发电子时钟的基本原理,为进一步开发出高质量的程序打下坚实的基础。 2.课程设计的要求 能模拟机械钟表行走;在屏幕上显示一个活动时钟;程序界面设计合理,色彩得体大方,显示正确;各指针运动规律正确;要准确的利用数字显示日期和时间并且可以根据用户的需求更改当前时间(指针式时钟与数字式时钟实现同步更改);数字式时钟的时间显示与指针式时钟显示一致;可以通过上下键改变当前的时、分、秒;改的时间是小时、分钟、还是秒数;通过Tab键切换按Esc时程序退出。 二、设计 如下图,此电子时钟主要由以下4个功能模块组成。 1.界面显示模块 电子时钟界面显示在调用时钟运行处理之前完成,在这里主要调用了C语言图形系统函数和自负屏幕处理函数画出时钟程序的主界面。主界面包括类似Windows自带的电子时钟的界面和帮助界面两部冯。电子时钟界面包括一个模拟时钟运转的钟表和一个显示时间的数字钟表。在帮助界面中,主要包括一些按键的操作说明。 2.按键控制模块 按键控制模块主要完成两大部分功能。第一,读取用户按键的键值。第二,通过对键盘按键值得判断,执行相应的操作,如光标移动、修改时间。 3.时钟动画处理模块 在时钟动画处理模块中,它通过对相关条件的判断和时钟坐标值的计算,完成时、分、秒指针的擦除和重绘,以达到模拟时钟运转的功能。

EDA数字时钟课程设计报告

EDA技术及应用课程设计说明书 2013 届电子信息工程专业班级 题目数字时钟 学号 姓名 指导教师 二О一五年月日

一、基本原理 一个完整的时钟应由三部分组成:秒脉冲发生电路、计数显示部分和时钟调整部分。 秒脉冲发生电路原理:一个时钟的准确与否主要取决于秒脉冲的精确度。为了保证计时准确我们对系统时钟48MHz进行了48000000分频,从而得到1Hz的秒脉冲。 计数显示部分原理:显示部分是用数码管LED实现的,这里使用的是共阳极的数码管如图所示8个数码管,其中左边两个数码管用来显示时的个位和十位、中间的显示分的个位和十位、最右边两个显示分的个位和十位。 时钟调整部分原理:校时电路里定义key[0]、key[1]和k2、k3分别用于控制时钟的计时开始、清零和调整功能中的时的加1、分的加1处理,从而完成对现在的时间调整。本实验电路校时电路在此完成了暂停、清零、时调整和分调整。

二、硬件设计 芯片图: 图1 数字时钟原理图 程序的调试工作都是在电脑上完成的,通过程序的输入、原理图的建立、管脚分配、编译、仿真、再下载到芯片进行运行。

电路中采用共阳极连接的七段数码管,通过程序的控制扫描驱动来显示时钟的时-分-秒。

程序中的按键设定为K1暂停、K2清零、K3调时、K4调分元件清单: 三、数字时钟的Verilog实现 管脚的分配: 程序: module clock(clk,s1,,s2,key,dig,seg); //模块名clock input clk,s1,s2; //输入时钟 input[1:0]key; //输入按键 output[7:0]dig; //数码管选择输出引脚

大连理工大学数字电路课程设计报告:多功能数字时钟设计

大连理工大学本科实验报告题目:多功能数字时钟设计 课程名称:数字电路与系统课程设计 学院(系):信息与通信工程学院 专业:电子信息工程 班级: 学生姓名: 学号: 完成日期:2014年7月16日 2014 年7 月16 日

题目:多功能数字时钟设计 1 设计要求 1) 具有“时”、“分”、“秒”及“模式”的十进制数字显示功能; 2) 具有手动校时、校分功能,并能快速调节、一键复位(复位时间12时00分00秒); 3) 具有整点报时功能,从00分00秒起,亮灯十秒钟; 4) 具有秒表功能(精确至百分之一秒),具有开关键,可暂停、可一键清零; 5) 具有闹钟功能,手动设置时间,并可快速调节,具有开关键,可一键复位(复位时间12时00分00秒),闹钟时间到亮灯十秒钟进行提醒; 6) 具有倒计时功能(精确至百分之一秒),可手动设置倒计时时间,若无输入,系统默认60秒倒计时,且具有开关键,计时时间到亮灯十秒钟进行提醒,可一键复位(复位时间默认60秒)。 2 设计分析及系统方案设计 2.1 模式选择模块:按键一进行模式选择,并利用数码管显示出当前模式。模式一:时钟显示功能;模式二:时钟调节功能;模式三:闹钟功能;模式四:秒表功能;模式五:倒计时功能。 2.2 数字钟的基本功能部分:包括时、分、秒的显示,手动调时,以及整点报时部分。基本模块是由振荡器、分频器、计数器、译码器、显示器等几部分组成。利用DE2硬件中提供的50MHZ晶振,经过分频得到周期为1s的时钟脉冲。将该信号送入计数器进行计算,并把累加结果以“时”“分”“秒”的形式通过译码器由数码管显示出来。 具有复位按键1,在时钟模式下按下复位键后对时钟进行复位,复位时间12时00分00秒。 进入手动调时功能时,通过按键调节时间,每按下依次按键2,时钟时针加一,按下按键2一秒内未松手,时钟时针每秒钟加十;按键1对分针进行控制,原理与时针相同并通过译码器由七位数码管显示。 从00分00秒开始,数字钟进入整点报时功能(本设计中以一个LED灯代替蜂鸣器,进行报时),亮灯10秒钟进行提示。 2.3多功能数字钟的秒表功能部分:计时范围从00分00.00秒至59分59.99秒。可由复位键0异步清零,并由开关1控制计时开始与停止。 将DE2硬件中的50MHZ晶振经过分频获得周期为0.01秒的时钟脉冲,将信号送入计数器进行计算,并把累计结果通过译码器由七位数码管显示 2.4多功能数字钟的闹钟功能部分:进入闹钟功能模式后,通过按键2(设定小时)和按键1(设定分钟)设定闹钟时间,当按下按键一秒内未松手时,可进行快速设定时间。当时钟进入闹钟设定的时间(判断时钟的时信号时针,分针分别与闹钟设定的时信号时针、分针是否相等),则以LED灯连续亮10秒钟进行提示,并由开关0控制闹钟的开和关。 2.5 多功能数字钟的倒计时功能部分:可通过按键3(设定分针)和按键2(设定秒针)设定倒计时开始,当按下按键一秒内未松手时,可进行快速设定时间。当没有手动时间设定时,系统默认为60秒倒计时。倒计时的时钟与数字钟的时钟相同,每迎到一个1s时钟上升

模拟时钟应用程序

案例五模拟时钟应用程序 以实例为背景学习基于MFC的WINDOWS应用程序设计,编写一个模拟时钟程序,此程序在屏幕左边有一个指针式钟面,右方有两个矩形框,上面以数字方式显示日期和时间,该时间应与指针显示的时间一致,下方的矩形框作为秒表。用菜单选项或按钮设置时间和秒表。时间不必与机器系统时间相同,可任意设置。 模拟时钟示意图 1 编程要求 (1)为该程序设计一个美观大方的图标。 (2)程序界面设计合理,色彩得体大方,显示正确。 (3)时针、分针和秒针形象美观,即使各指针重合也可辨认。 (4)各指针运动规律正确。为便于演示,时钟速度应比实际时间快20倍,即1小时相当于3分钟。 (5)数字式时钟的时间显示与指针式时钟显示一致。

(6)按下设置时间按钮或菜单项可弹出一对话框,用于设置当前的时间和日期。 (7)按下秒表控制按钮后,秒表显示窗中显示从0开始的时间,单位为百分之一秒。再次按下秒表控制按钮后计时停止,该窗口显示累计时间。 2 问题分析 本题主要涉及到的知识点有:时钟指针运动算法、屏幕重绘方法、定时器消息、鼠标消息、菜单命令、对话框、画笔/画刷、显示文字等。指针运动算法和屏幕重绘方法是本程序主要难点所在。 不论何种指针,每次转动均以π/30弧度(一秒的角度)为基本单位,且都以表盘中心为转动圆心。计算指针端点(x, y)的公式如下:x =圆心x坐标+ 指针长度* cos (指针方向角) y =圆心y坐标+ 指针长度* sin (指针方向角) 注意,指针长度是指自圆心至指针一个端点的长度(是整个指针的一部分),由于指针可能跨越圆心,因此一个指针需要计算两个端点。 三个指针的运动是相关联的,秒针转一圈引起分针运动一格,分针转一圈引起时针运动一格,因此应该使用一个定时器消息来处理指针的运动。若用三个定时器消息分别处理时针、分针和秒针的运动,就会使问题复杂化且不易实现三个指针联动的正确规律。采用一个定时器消息可以很容易实现指针联动算法。 由于屏幕的重绘速度很快(50 ms一次),如果采用全屏删除式重绘则闪烁十分明显,显示效果不佳。本程序采用非删除式重绘,假定指

数字时钟课程设计报告

《电子线路课程设计报告》 系另 1」: 机电与自动化学院 专业班级:电气及自动化技术1001 学生姓名:陈星涯 指导教师:梁宗善 i=r (课程设计时 间: 2012年1月3日——2012年1月13日) 华中科技大学武昌分校 1.课程设计目的................................................. 3页 2.课程设计题目描述和要求....................................... 3页 2.1课程设计题目............................................. 3页

2.2课程设计要求............................................. 3页 3. ......................................................................................................... 比较和选定设计的系统方案.................................................... 4页 3.1数字钟的构成............................................. 4页 4.单元电路设计及工作原理....................................... 5页 4.1时基电路................................................. 5页 a. 多谐振荡器的工作原理................................... 5页 4.2计数器................................................... 7页 a.中规模计数器组件介绍.................................. 7页 b.60 进制计数器 .......................................... 8页 C.12 翻1计数器........................................... 9页 4.3译码器................................................... 10页 4.4显示器................................................... 10页 4.5校时电路................................................. 11页 4.6定时控制电路............................................. 12页 4.7仿广播电台正点报时电路................................... 13页 5.调试过程及分析............................................... 14页 5.1显示器故障排查........................................... 14页 5.2计数器调试及分析......................................... 15页 5.3校时电路的调试........................................... 16页 5.4增加抗干扰电路........................................... 16页 5.5闹时电路的调试........................................... 17页 5.6仿广播电台整点报时电路调试............................... 17页 6.课程设计总结................................................. 17页 7.参考文献..................................................... 19页 8.附件一:电子时钟主体电路电路图............................... 20页 9.附件二:扩展电路电路图....................................... 21页 10.附件三:系统所需元器件清单 ................................ 22页 11.课程设计成绩.............................................. 23页 一、设计任务与目的 数字时钟是一种利用数字电路技术实现时、分、秒计时的装置,与传统的

C语言模拟时钟转动课程设计报告

《C语言程序设计》 课 程 设 计 报 告 题目:模拟时钟转动程序 班级: 组别: 组员: 指导教师:

目录 第一章课程设计的题目 (2) 1.1 C语言课程设计的题目 (2) 第二章课程设计的要求 (2) 2.1 C语言课程设计的要求 (2) 第三章课程设计的目的 (2) 3.1 C语言课程设计的目的 (2) 第四章课程设计的内容 (3) 4.1 C语言课程设计的程序清单和注释 (3) 第五章课程设计的运行结果 (7) 5.1 C语言课程设计的运行结果 (7) 第六章课程设计的结果分析 (8) 6.1 C语言课程设计的结果分析 (8) 第七章课程设计的心得体

会 (9) 7.1 C语言课程设计的心得体会 (9) 模拟时钟转动程序 第一章课程设计的题目 1.1 C语言课程设计的题目 本次为期两周的课程设计的题目为设计一个模拟时钟转动的程序。 第二章课程设计的要求 2.1 C语言课程设计的要求 能模拟机械钟表行走;要准确地利用数字显示日期和时间;在屏幕上显示一个活动时钟;程序界面设计合理,色彩得体大方,显示正确;各指针运动规律正确;数字式时钟的时间显示与指针式时钟显示一致;按任意键时程序退出。

第三章课程设计的目的 3.1 C语言课程设计的目的 加深对讲授内容的理解,尤其是一些语法规定。通过课程设计,自然地、熟练地掌握。熟悉所用的计算机系统的操作方法,也就是熟悉语言程序开发的环境。学会上机调试程序。 第四章课程设计的内容 4.1 C语言课程设计的程序清单和注释 模拟时钟转动程序清单+注释 #include //包含窗口头文件 #include //头文件,包含了一些数学计算的函数 #define TWOPI (2*3.14159) #define IDTIMER 1 //计时器ID #define ANGLE TWOPI/360 //2PI LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam,LPARAM lParam ); //回调函数 Int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPSTR lpCmdLine,int nCmdShow ) // 应用启动函数mian { TCHAR szClassName[] = TEXT("analogCloc"); MSG msg; //定义消息 HWND hwnd; //窗口句柄 WNDCLASS wndclass; //系统支持结构,定义并初始化窗口结构 wndclass.cbClsExtra = 0; //窗口类无扩展 wndclass.cbWndExtra = 0; //窗口势力无扩展 wndclass.hbrBackground = (HBRUSH)::GetStockObject(WHITE_BRUSH); //窗口背景为白色 wndclass.hCursor = NULL;

数字电子时钟课程设计

数字电子技术基础课程设计报告 班级:姓名: 学号: 一、设计目的 1掌握专业基础知识的综合能力。 2完成设计电路的原理设计、故障排除。 3逐步建立电子系统的研发、设计能力,为毕业设计打好基础。 4让学生掌握组合逻辑电路、时序逻辑电路及数字逻辑电路系统的设计、安装、测试方法。 5进一步巩固所学的理论知识,提高运用所学知识分析和解决实际问题的能力。 6培养书写综合实验报告的能力。 二、设计仪器 1 LM555CH 2 74LS161N 74LS160N 74LS290 3 74LS00 74LS08 4 电源电阻电容二极管接地等 三数字电子钟的基本功能及用途 现在数字钟已成为人们日常生活中:必不可少的必需品,广泛用于个人家庭以及车站、码头、剧场、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性

能稳定、集成电路有体积小、功耗小、功能多、携带方便等优点,,因此在许多电子设备中被广泛使用。 电子钟是人们日常生活中常用的计时工具,而数字式电子钟又有其体积小、重量轻、走时准确、结构简单、耗电量少等优点而在生活中被广泛应用,因此本次设计就用数字集成电路和一些简单的逻辑门电路来设计一个数字式电子钟,使其完成时间及星期的显示功能。 多功能数字钟采用数字电路实现对“时”、“分”、“秒”数字显示的计时装置。具有时间显示、走时准确、显示直观、精度、稳定等优点。电路装置十分小巧,安装使用也方便。同时在日期中,它以其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费的喜爱。 四设计原理及方框图 数字钟实际上是一个对标准频率进行计数的计数电路,标准的1HZ时间信号必须做到准确稳定。由图可见:本数字钟电路主要由震荡器、、时分秒计数器、译码显示器构成。它们的工作原理是:由震荡器产生的高频脉冲信号作为数字钟的时间基准,送入秒计数

数字电子钟课程设计报告-数电

华东交通大学理工学院课程设计报告书所属课程名称数字电子技术课程设计题目数字电子钟课程设计分院电信分院 专业班级10电信2班 学号20100210410201 学生姓名陈晓娟 指导教师徐涢基 20 12 年12 月18 日

目录 第1章课程设计内容及要求 (3) 第2章元器件清单及主要器件介绍 (5) 第3章原理设计和功能描述 (10) 第4章数字电子钟的实现 (15) 第5章实验心得 (17) 第6章参考文献 (18)

第1章课程设计内容及要求 1.1 数字钟简介 20世纪末,电子技术获得了飞速的发展。在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高、产品更新换代的节奏也越来越快。数字钟已成为人们日常生活中必不可少的生活日用品。广泛用于个人家庭以及车站、码头、剧场、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、集成电路有体积小、功耗小、功能多、携带方便等优点。 因此本次设计就用数字集成电路和一些简单的逻辑门电路来设计一个数字式电子钟,使其完成时间及星期的显示功能。多功能数字钟采用数字电路实现对“时”、“分”、“秒”数字显示的计时装置。具有时间显示、走时准确、显示直观、精度、稳定等优点,电路装置十分小巧,安装使用也方便而受广大消费的喜爱。 1.2 设计目的 1. 掌握组合逻辑电路、时序逻辑电路及数字逻辑电路系统的设计、安装、测试方法;

2. 进一步巩固所学的理论知识,提高运用所学知识分析和解决实际问题的能力; 3. 提高电路布局,布线及检查和排除故障的能力。 1.3 设计要求 1. 设计一个有“时”、“分”、“秒”(23小时59分59秒)显示,且有校时功能的电子钟。 2. 用中小规模集成电路组成电子钟,并在实验箱上进行组 装、调试。 3. 画出框图和逻辑电路图、写出设计、实验总结报告。 4. 整点报时。在59分59秒时输出信号,音频持续1s,在结束时刻为整点。

电子时钟课程设计模板

电子时钟课程设计 电子时钟设计 一、课程设计目的和意义 掌握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端输出周期性的负脉冲信

号。即每隔20ms, 8253的OUT0端就会输出一个负脉冲的信号, 此信号接8259的IR2, 当中断到50次数后, CPU即处理, 使液晶显示器上的时间发生变化。 其中8259只需初始化ICW1, 其功能是向8259表明IRx输入 是电瓶触发方式还是上升沿触发方式, 是单片8259还是多片8259。8259接收到信号后, 产生中断信号送CPU处理。 2、设计原理 利用实验台上提供的定时器8253和扩展板上提供的8259以 及控制键和数码显示电路, 设计一个电子时钟, 由8253中断定时, 控制键控制电子时钟的启停及初始值的预置。电子时钟的显示格 式MM: SS由左到右分别为分、秒, 最大记时59: 59超过这个时间分秒位都清零从00: 00重新开始。 基本工作原理: 每百分之一秒对百分之一秒寄存器的内容加一, 并依次对秒、分寄存器的内容加一, 四个数码管动态显示分、秒 的当前值。 三、设计所用芯片结构 1、 8259A芯片的内部结构及引脚 中断控制器8259A是Intel公司专为控制优先级中断而设计开发的芯片。它将中断源优先排队、辨别中断源以及提供中断矢量的电路集中于一片中。因此无需附加任何电路, 只需对8259A编程, 就能够管理8级中断, 并选择优先模式和中断请求方式, 即中断

相关文档
最新文档