当前位置:文档之家› VC课程设计时钟

VC课程设计时钟

Visual C++程序设计课程大作业

题目名称:时钟

院系:计算机科学与信息工程学院专业班级:软件工程12-2班

学生姓名:王昆伦

学号:201203030073

学生姓名:库先念

学号:201203030085

学生姓名:李振海

学号:201203030060

2013年6月

目录

一、成员分工................................................................. 错误!未定义书签。

二、需求分析 (2)

三、总体设计 (3)

四、详细设计 (4)

五、系统测试 (27)

六、总结 (28)

七、参考文献 (29)

一、成员分工

组长:王昆伦

组员:库先念李振海

组长王昆伦:负责整个工程设计的选材和功能的添加以及代码的设计。库先念:负责对话框的设计、制作、控件的添加,及背景颜色的设置。李振海:负责工程的功能测试与修改。

二、需求分析

(1)为该程序设计绘制合适的时钟外形。

(2)程序界面设计合理,色彩得体大方,显示正确。

(3)时针、分针和秒针形象美观,即使各指针重合也可辨认。

(4)各指针运动规律正确,以便于演示。

(5)时间显示正确,并且显示当前系统时间。

时钟大致可由时钟背景、时针、分针、秒针四个部分构成。时钟四个部分可是看作四个不同的对象,可以建立类CClockBackground(背景)CClockHourHand(时针)、CClockMinHand(分针)、CClockSecHand(秒针)来分别实现。这四个类有它们的共同点,都有自己的绘图函数,如果要具体能够设置颜色,它们都应该有自己的绘图颜色,同样应该有颜色设置函数,此外都有绘图区域和区域设置函数等等。因此,可以为它们的共性建立一个基类,此处命名为CClockElement(时钟元素)。其类的层次图如图3-1。

图3—1

1.创建基于对话框的Clock的MFC框架,对ID为IDD_CLOCK_DIALOG的对话框的控件进行初始化。

(1)删除CClockDlg对话框上的控件,添加两个GroupBox控件IDC_CLOCK,IDC_STYLE,对IDC_CLOCK关联变量m_clock.如图4-1.

图4-1

(2)在IDC_STYLE的GroupBox控件中进行通过动态创建静态控件在对话框上显示年月日,及星期天。

在ClockDlg.h添加添加变量:

CStatic staDay,staWeek;//动态创建静态文本控件

CRect m_rect;

CBrush m_brush;

CString strWeekDay;

(3)通过调用HBRUSH CClockDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)对动态静态文本文字进行字体,及背景颜色设置。其代码如下。

HBRUSH CClockDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)

{

HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

if(pWnd->GetDlgCtrlID()==102)//动态创建的CStatic对象的ID

{

CBrush *pBrush= CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));

CBrush *pOldBrush=pDC->SelectObject(pBrush);

pDC->SetTextColor(RGB(0,255,0));

pDC->SetBkMode(TRANSPARENT);

pDC->SelectObject(pOldBrush);

return m_brush;

}

if(pWnd->GetDlgCtrlID()==103)

{

CBrush *pBrush= CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));

CBrush *pOldBrush=pDC->SelectObject(pBrush);

pDC->SetTextColor(RGB(0,255,0));

pDC->SetBkMode(TRANSPARENT);

pDC->SelectObject(pOldBrush);

return m_brush;

}

// TODO: 如果默认的不是所需画笔,则返回另一个画笔

return hbr;

}

(4)通过添加void CClockDlg::ExchangleWeek()实现日期文本的转换。

CClockDlg.h添加部分代码如下:

class CClockDlg : public CDialog

{

public:

CClockDlg(CWnd* pParent = NULL); CStatic staDay,staWeek;

CRect m_rect;

CBrush m_brush;

CString strWeekDay;

void ExchangleWeek();//实现星期的转换

// Dialog Data

//{{AFX_DATA(CClockDlg)

enum { IDD = IDD_CLOCK_DIALOG };

CClockEx m_Clock;

//}}AFX_DATA

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CClockDlg)

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL

// Implementation

public:

afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor); };

CClockDlg.cpp添加部分代码如下:

CClockDlg::CClockDlg(CWnd* pParent /*=NULL*/)

: CDialog(CClockDlg::IDD, pParent)

{

//{{AFX_DATA_INIT(CClockDlg)

// NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT

// Note that LoadIcon does not require a subsequent DestroyIcon in Win32

m_hIcon = AfxGetApp()->LoadIcon(IDI_ICON1);

m_brush.CreateSolidBrush(RGB(0,0,0));//初始化m_brush画刷

}

void CClockDlg::OnPaint()

{

if (IsIconic())

{

CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

// Center icon in client rectangle

int cxIcon = GetSystemMetrics(SM_CXICON);

int cyIcon = GetSystemMetrics(SM_CYICON);

CRect rect;

GetClientRect(&rect);

int x = (rect.Width() - cxIcon + 1) / 2;

int y = (rect.Height() - cyIcon + 1) / 2;

dc.DrawIcon(x, y, m_hIcon);

}

else

{

CDialog::OnPaint();

}

CString strTime,strWeek;

CRect starect;

CClientDC dc(this);

ScreenToClient(starect);

m_rect=starect;

CTime strCurTime=CTime::GetCurrentTime();

strTime.Format(_T("%d/%d/%d"),strCurTime.GetYear(),strCurTime.GetMonth(),strCurTime.Ge tDay()); // 时钟的格式化

ExchangleWeek();//获取星期天

strWeek=strWeekDay;

CSize sz=dc.GetTextExtent(strTime);//获取文本的度量信息

CSize sw=dc.GetTextExtent(strWeek);

staWeek.Create(strWeek,

WS_CHILD|WS_VISIBLE|SS_CENTER,CRect(starect.left+starect.Width()/4,starect.top+starect.Hei ght()/4,starect.left+starect.Width()/4+sw.cx,starect.top+starect.Height()/4+sw.cy),this, 103);//静态文本日期的创建

staDay.Create(strTime, WS_CHILD|WS_VISIBLE|SS_CENTER,

CRect(starect.left+starect.Width()/5,starect.top+starect.Height()/5,starect.left+starect.Width()/5+ sz.cx,starect.top+starect.Height()/5+sz.cy),this, 102); //静态文本星期的创建

CBrush brush(RGB(0,0,0));

dc.SelectObject(&brush);

dc.Rectangle(m_rect);//对静态控件IDC_STYLE画长方形图

}

//实现对文本控件属性设置

HBRUSH CClockDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)

{

HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

if(pWnd->GetDlgCtrlID()==102)

{

CBrush *pBrush= CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));

CBrush *pOldBrush=pDC->SelectObject(pBrush);

pDC->SetTextColor(RGB(0,255,0));

pDC->SetBkMode(TRANSPARENT);

pDC->SelectObject(pOldBrush);

return m_brush;

}

if(pWnd->GetDlgCtrlID()==103)

{

CBrush *pBrush= CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));

CBrush *pOldBrush=pDC->SelectObject(pBrush);

pDC->SetTextColor(RGB(0,255,0));

pDC->SetBkMode(TRANSPARENT);

pDC->SelectObject(pOldBrush);

return m_brush;

}

// TODO: 如果默认的不是所需画笔,则返回另一个画笔

return hbr;

}

//实现日期的转换

void CClockDlg::ExchangleWeek()

{

int week;

CTime strCurTime=CTime::GetCurrentTime();

week=strCurTime.GetDayOfWeek();

switch(week)

{

case 1:

strWeekDay=_T("Sunday");

break;

case 2:

strWeekDay=_T("Monday");

break;

case 3:

strWeekDay=_T("Tursday");

break;

case 4:

strWeekDay=_T("Wednesday");

break;

case 5:

strWeekDay=_T("Thursday");

break;

case 6:

strWeekDay=_T("Friday");

break;

case 7:

strWeekDay=_T("Saturday ");

break;

}

}

2.建立CClockEx类

从CStatic类(静态控件类)派生出类CClockEx来实现时钟控件类,可以继承MFC静态控件的很多已经具备的功能和特点。

(1)重载虚函数PreSubClassWindow,对时钟控件的基本初始化工作将在该函数中进行。

(2)添加消息响应WM_PAINT,完成时钟的绘制工作。

(3)添加消息响应WM_SIZE,重载该消息响应以便我们的时钟控件能够自动适应其大小的变化。

(4)为了时钟能够走动,我们得定时刷新时钟控件让它走动,还得添加WM_TIMER的消息响应。

(5)为了获得时间的设置及获得DC对象添加void CClockEx::DrawClock(CDC *pDC)函数。

CClockEx.h代码如下:

class CClockEx : public CStatic

{

private:

CClockBackground m_clockBK; //时钟背景CClockHourHand m_clockHour; //时指针

CClockMinHand m_clockMin; //分指针

CClockSecHand m_clockSec; //秒指针

CRect m_rcClient; //客户区域

void DrawClock(CDC *pDC);

// Construction

public:

CClockEx();

// Attributes

public:

// Operations

public:

// Overrides

// ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CClockEx)

protected:

virtual void PreSubclassWindow();

//}}AFX_VIRTUAL

// Implementation

public:

virtual ~CClockEx();

// Generated message map functions protected:

//{{AFX_MSG(CClockEx)

afx_msg void OnTimer(UINT nIDEvent);

afx_msg void OnSize(UINT nType, int cx, int cy);

afx_msg void OnPaint();

//}}AFX_MSG

DECLARE_MESSAGE_MAP()

};

ClockEx.cpp代码如下:

CClockEx::CClockEx()

{

}

CClockEx::~CClockEx()

{

}

BEGIN_MESSAGE_MAP(CClockEx, CStatic) //{{AFX_MSG_MAP(CClockEx)

ON_WM_TIMER()

ON_WM_SIZE()

ON_WM_PAINT()

//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////

// CClockEx message handlers

void CClockEx::OnTimer(UINT nIDEvent)

{

// TODO: Add your message handler code here and/or call default Invalidate(FALSE);

CStatic::OnTimer(nIDEvent);

}

void CClockEx::PreSubclassWindow()

{

// TODO: Add your specialized code here and/or call the base class GetClientRect(m_rcClient); //获取当前客户区域

m_clockBK.SetRegion(m_rcClient);

m_clockHour.SetRegion(m_rcClient);

m_clockMin.SetRegion(m_rcClient);

m_clockSec.SetRegion(m_rcClient);

SetTimer(1, 100, NULL); //每毫秒刷新一次

CStatic::PreSubclassWindow();

}

void CClockEx::OnSize(UINT nType, int cx, int cy)

{

CStatic::OnSize(nType, cx, cy);

// TODO: Add your message handler code here

GetClientRect(m_rcClient);

m_clockBK.SetRegion(m_rcClient);

m_clockHour.SetRegion(m_rcClient);

m_clockMin.SetRegion(m_rcClient);

m_clockSec.SetRegion(m_rcClient);

}

void CClockEx::OnPaint()

{

CPaintDC dc(this); // device context for painting

// TODO: Add your message handler code here

//实现双缓冲绘图——防止屏幕闪烁

CDC dcMem;

dcMem.CreateCompatibleDC(&dc);

CBitmap bmp;

bmp.CreateCompatibleBitmap(&dc, m_rcClient.Width(), m_rcClient.Height());

dcMem.SelectObject(&bmp);

DrawClock(&dcMem); //绘制时钟

dc.BitBlt(0, 0, m_rcClient.Width(), m_rcClient.Height(), &dcMem, 0, 0, SRCCOPY);

// Do not call CStatic::OnPaint() for painting messages

}

void CClockEx::DrawClock(CDC *pDC)

{

CTime tmCur = CTime::GetCurrentTime();

m_clockBK.SetTime(tmCur);

m_clockHour.SetTime(tmCur);

m_clockMin.SetTime(tmCur);

m_clockSec.SetTime(tmCur);

m_clockBK.Draw(pDC);

m_clockMin.Draw(pDC);

m_clockHour.Draw(pDC);

m_clockSec.Draw(pDC);

}

3.建立基类CClockElement

(1)在后面的绘图中需要用到sin和cos这两个数学计算公式,因此需包含头文件以便使用数学函数库。为后面计算使用,还需定义数学常量PI(3.1415926535)。

(2)的每个组成部分都有绘图区域区域,因此,可在基类中定义绘图区域变量。同理,可以定义颜色变量,为了是颜色不显得单调,个控件设置两种颜色(如果想使程序更加绚这里为每丽,可以设置更多颜色)。

(3)对应的,这些变量需增加接口函数来进行访问。

void SetColor(COLORREF crMain, COLORREF crOther); //设置颜色

void SetTime(const CTime &tmCur); //设置当前时间

void SetRegion(LPRECT lprcRect); //设置绘图区域

(4)对于每个组成部分都应该有的Draw函数,当然也需在基类中定义,该函数对于基类来说是无需函数实现的,因此可定义为纯虚函数。

virtual void Draw(CDC *pDC) = 0; //绘图函数

CClockElement的实现的头文件代码如下:

#include

#define PI 3.1415926535

class CClockElement

{

public:

void SetColor(COLORREF crMain, COLORREF crOther); //设置颜色

void SetTime(const CTime &tmCur); //设置当前时间

void SetRegion(LPRECT lprcRect); //设置绘图区域

virtual void Draw(CDC *pDC) = 0; //绘图函数

CClockElement();

virtual ~CClockElement();

protected:

COLORREF m_crMain; //主要颜色

COLORREF m_crOther; //辅助的其他颜色

CTime m_tmCur; //当前时刻

CRect m_rcRegion; //绘图区域

int m_nRadius; //时钟半径

}

CClockElement的实现的源文件关键代码如下:CClockElement::CClockElement()

{

m_nRadius = 0;

m_crMain = RGB(255, 255, 255);

m_crOther = RGB(128, 128, 128);

}

CClockElement::~CClockElement()

{

}

void CClockElement::SetRegion(LPRECT lprcRect)

{

m_rcRegion = lprcRect;

m_nRadius = m_rcRegion.Width() / 2;

if (m_rcRegion.Width() > m_rcRegion.Height())

{

m_nRadius = m_rcRegion.Height() / 2;

}

}

void CClockElement::SetTime(const CTime &tmCur)

{

m_tmCur = tmCur;

}

void CClockElement::SetColor(COLORREF crMain, COLORREF crOther) {

m_crMain = crMain;

m_crOther = crOther;

}

2. 建立时钟背景类——CClockBackground,其基类为CClockElement。CClockBackground只需实现基类的虚函数Draw即可,因此这里重载基类的虚函数Draw,其头文件实现代码如下:

#include "ClockElement.h"

class CClockBackground : public CClockElement

{

public:

CClockBackground();

virtual ~CClockBackground();

};

CClockBackground源文件代码如下:

CClockBackground::CClockBackground()

{

//为时钟背景定义默认的颜色设置

m_crMain = RGB(0, 255, 0);

m_crOther = RGB(0, 128, 0);

}

CClockBackground::~CClockBackground()

{

}

void CClockBackground::Draw(CDC *pDC)

{

//准备设备环境

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

CBrush brMain(m_crMain), brOther(m_crOther);

电子时钟课程设计.

单片机实训课题电子时钟 班级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 程序源代码 参考文献 致谢

VC课程设计及商品销售管理知识系统(DOC 39页)

VC课程设计及商品销售管理知识系统(DOC 39页)

第一章需求分析 1.1 商品销售管理功能概述 21世纪是个信息发展的时代,随着电脑普及时代的来临以及互联网的迅速发展,越来越多的进程从单一的人工管理上升到电脑智能管理,企业的发展更不例外,商品的经营管理,经营模式已经慢慢的从手工管理过渡到了计算机管理。对于发展中的绝大多数企业来说,随着规模的不断扩大,商品种类的不断丰富与完善,需要管理的各种商品信息也会大幅度增加,无论是商品管理,订货管理,销售管理,都变得相对复杂。这里开发出了一个“商品销售管理系统”,对企业的发展至关重要,无疑为商品销售的可持续发展,日益壮大提供了保障和解决方案,也节省了大量时间,从而提高了商品销售的运转效率,更有利于企业的管理和维持。商品销售管理系统可以实现企业商品管理的网络化,信息化,现代化,可以有效的提高企业商品的管理效率,节约了管理开支。 通过调查,要求系统需要具有以下功能: (1) 由于该系统的使用对象多,要求有较好的权

限管理。 (2) 方便的数据查询,支持多条件查询。 (3) 基础信息管理与查询,其中包括商品信息、客户信息和员工信息。 (4) 通过计算机,能够直接“透视”商品销售情况。 (5) 完善的商品查询信息、商品销售信息进行管理。 (6) 当外界环境(停电、网络病毒)干扰本系统后, 系统可以自动保护原始数据的安全,对数据进行备份与还原。 (7) 数据计算自动完成,尽量减少人工干预。 (8) 系统退出。 商品销售管理系统分为基础信息管理子系统、日常业务管理子系统、查询报表管理子系统、系统信息管理子系统、维护管理子系统。如图1.1所示 1.1商品销售管理系统 1.2 基础信息管理模块 基础信息管理模块主要用于对商品信息,员工信息和客户信息的管理。操作员通过合法的认

电子钟课程设计

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

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

时钟计时器课程设计

单片机原理及应用课程设计报告书 题目:时钟计时器的设计 姓名: 学号: 专业:电气工程及其自动化 指导老师:周令 设计时间:2011年4月 电子与信息工程学院

目录 1. 引言 (1) 1.1. 设计意义 (1) 1.2. 系统功能要求 (1) 2. 方案设计 (1) 2.1. 数字时钟计时器设计方案论证 (1) 2.2. 硬件系统的总体设计框图 (2) 3. 硬件设计 (2) 4. 软件设计 (3) 4.1. 主程序 (3) 4.2. 显示子程序 (4) 4.3. 定时器T0中断服务程序 (4) 4.4. 定时器T1中断服务程序 (5) 4.5. 调时功能程序 (6) 4.6. 秒表功能程序 (6) 4.7. 闹钟时间设定功能程序 (6) 5. 调试及性能分析 (7) 5.1. 硬件调试 (7) 5.2. 软件调试 (7) 5.3. 性能分析 (8) 6. 设计总结 (8) 7. 附录A:汇编源程序 (9) 8. 附录B:作品实物图片 (26) 9. 参考文献 (27)

时钟计时器的设计 1.引言 1.1.设计意义 随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的数字时钟计时器,本数字时钟计时器,可以显示时、分、秒,以24小时计时方式运行,能整点提醒(短蜂鸣,次数代表整点时间),使用按键开关可实现时、分调整,秒表/时钟功能转换,省电(关闭显示)及定时设定提醒(蜂鸣器)等功能。 人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字时钟计时器就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从单片机技术入手,一切向着数字化控制,智能化控制方向发展。 本设计所介绍的数字时钟计时器与传统的计时器相比,具有读数方便,操作简单,计时精准,还能实现整点提醒,定时提醒等功能。其输出时间采用数字显示,主要用于对时间要求精度高的场所,或科研实验室使用,该设计控制器使用单片机AT89C52,用6位共阳极LED数码管以串口传送数据,实现数字显示功能,能准确达到以上要求。 1.2. 系统功能要求 用单片机及6位LED数码管显示时、分、秒,以24小时计时方式运行,能整点提醒(短蜂鸣,次数代表整点时间),使用按键开关可实现时、分调整,秒表/时钟功能转换,省电(关闭显示)及定时设定提醒(蜂鸣器)等功能。 2.方案设计 2.1. 数字时钟计时器设计方案论证 为了实现LED显示器的数字显示,可以采用静态显示法和动态显示法。由于静态显示法需要数据锁存器等硬件,接口复杂一些,又考虑到时钟显示只有6位,且系统没有其他复杂的处理任务,所以决定采用动态扫描法实现LED的

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

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

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

VC程序设计 课程设计报告书

VC程序设计课程设计 报告书 设计题目:简单绘图软件 院系:信息工程学院 班级:软件1101 组别:第二十二组 学号: 1110024130 姓名: 方锦 起止日期:2012年12月10日~2012年12月20日指导教师:张顺利

目录 绪论 -------------------------------------------------------------------------------- 3一概要设计 -------------------------------------------------------------------- 5 1.主要功能---------------------------------------------------------------------- 5 2.设计的概要设计功能模型框架图---------------------------------------- 5 二设计的详细设计------------------------------------------------------------- 5 1工具栏的编辑---------------------------------------------------------------- 6 2状态栏的编辑 --------------------------------------------------------------- 6 四编码和测试---------------------------------------------------------------- 9五设计总结 ------------------------------------------------------------------ 10 1.过程分析-------------------------------------------------------------------- 10 2.经验教训及分析 -----------------------------------------------------------11 3程序维护 --------------------------------------------------------------------11 六参考文献-------------------------------------------------------------------- 12

单片机课程设计 秒表计时器(DOC)

课程设计名称:单片机原理及接口技术 题目:基于单片机的秒表计时器设计 学期:2014-2015学年第一学期 专业:电气技术 班级: 姓名: 学号: 指导教师:

辽宁工程技术大学 课程设计成绩评定表

课程设计任务书 一、设计题目 秒表计时器 二、设计任务 本课题以单片机为核心,设计和制作一个秒表计时器。 三、设计计划 课程设计一周 第1天:查找资料,方案论证。 第2天:各部分方案设计。 第3天:各部分方案设计。 第4天:撰写设计说明书。 第5天:校订修改,上交说明书。 四、设计要求 1、绘制软件流程图并利用汇编语言编写软件程序; 2、绘制系统硬件原理图; 3、形成设计报告。 指导教师: 教研室主任: 2014年5月26 日

本设计利用89C51单片机设计秒表计时器,通过LED显示秒十位和个位,在设计过程中用一个存储单元作为秒计数单元,当一秒到来时,就让秒计数单元加一,通过控制使单片机秒表计时,暂停,归零。设计任务包括控制系统硬件设计和应用程序设计。 关键词:51单片机;74HC573;LED数码管

综述 (1) 1 程序方案 (2) 1.1方案论证 (2) 1.2总体方案 (2) 2部分设计 (3) 2.1 89C51单片机 (3) 2.2晶体振荡电路 (4) 2.3硬件复位电路 (5) 2.4显示电路 (6) 2.5整体电路图 (7) 3程序设计 (8) 3.1程序流程框图 (8) 3.2显示程序流程图 (9) 3.3汇编源程序 (10) 4调试说明 (13) 4.1概述 (13) 4.2电路原理图 (13) 心得体会 (15) 参考文献 (16)

电子课课程设计电子钟

南航数字电子技术课程设计报告 题目:数字钟的设计与制作 学年:06学年学期:第二学期 专业:机械工程及自动化 班级:0504107 学号姓名:李晓云 吉晶晶 时间:2006年6月30日— 2006年7月3日 数字电子技术课程设计报告 一、设计目的 数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。 数字钟从原理上讲是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。 因此,我们此次设计与制作数字钟就是为了了解数字钟的原理,从而学会制作数字钟.而且通过数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及实用方法.且由于数字钟包括组合逻辑电路和时叙电路.通过它可以进一步学习与掌握各种组合逻辑电路与时序电路的原理与使用方法.

二、设计内容及要求 (1)设计指标 ①由晶振电路产生1HZ标准秒信号; ②分、秒为00~59六十进制计数器; ③时为00~23二十四进制计数器; ④周显示从1~日为七进制计数器; ⑤具有校时功能,可以分别对时及分进行单独校时,使其校正到标准时 间; ⑥整点具有报时功能,当时间到达整点前鸣叫五次低音(500HZ),整点 时再鸣叫一次高音(1000HZ)。 (2)设计要求 ①画出电路原理图(或仿真电路图); ②元器件及参数选择; ③电路仿真与调试。 (3)制作要求自行装配和调试,并能发现问题和解决问题。 (4)编写设计报告写出设计与制作的全过程,附上有关资料和图纸,有心得体会。 三、原理框图 数字钟实际上是一个对标准频率(1HZ)进行计数的计数电路。由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路,同时标准的1HZ时间信号必须做到准确稳定。通常使用石英晶体振荡器电路构成数字钟。数字电子钟的总体图如图(1)所示。由图

河北工业大学vc课程设计 7成绩管理系统

河北工业大学计算机软件技术基础(VC) 课程设计任务书 一、题目:设计一个成绩管理系统 二、目的与要求 1.目的: 通过成绩管理系统的设计,培养学生综合利用C++语言进行程序设计的能力,加强函数的运用及学生对软件工程方法的初步认识,提高软件系统分析能力和程序文档建立、归纳总结的能力,提高学生程序调试技巧、代码规范化等素质,提高学生分析问题、解决问题及实际运用能力。 2. 基本要求: (1)要求用C++语言编程,在Visual C++环境下调试完成; (2)要求划分功能模块,各个功能分别使用函数来完成; (3)源代码程序要求必要的注释。 三、设计方法和基本原理 1.课题功能描述 设计一个成绩管理系统,要求实现的功能包括:成绩录入、显示、修改、排序等功能。 2.问题详细描述 设计一个成绩管理系统,要求可以录入成绩(学生信息包括学号、姓名、成绩)并能显示学生成绩;当输入有误或其他情况需要修改成绩时可以进行修改(插入或删除);同时还可以按学生学号排序。 要求编写多个函数分别实现上述功能,而后在main函数中进行调用。 3.问题的解决方案: 根据问题的描述,可以按照程序要求的功能采用结构化的设计思想。 成绩管理系统可利用菜单(界面制作switch语句)使用户选择各个功能模块,例如: 1.输入成绩 2.显示成绩 3.插入 4.删除 5.按学号排序 6. 退出 而后可根据不同的选项进入到不同的功能模块进行执行。结束程序,请选择y之外的任何字母或数字,如果想让程序循环执行,则选择y。 四、主要技术问题的描述 根据三的分析,主要问题在于: (1)学生信息用结构体的构造

struct student { char num[10]; /*学号*/ char name[20]; /*姓名*/ int score; /*成绩*/ } stu[80]; (2)如果学号定义成了字符数组的形式,因此在进行排序(冒泡法)的时候,要用到strcmp,strcpy 等函数,注意它们的使用。 五、课程设计的考核方式及评分方法 1.考核方式 (1)学生要提交书面课程设计报告(A4纸打印);并将设计报告的电子文档、.cpp源文件和.h头文件放到一个文件夹里(如果是基于MFC的编程,另外还包括源程序的压缩包)上传到所对 应班级的学生名称相应文件夹中。 (2)课程设计结束时,在机房当场验收。教师提供测试数据,由学生运行所设计的系统,检查运行结果是否正确,并回答教师提出的有关问题。 2.评分方法 根据出勤率、课程设计期间纪律、课程设计运行结果、课程设计报告及答辩情况综合评分。 六、书写设计报告的要求(详细内容见“设计报告模板”) 七、说明:课程设计的有关文档,“设计报告模板”和“课程设计要求”请在下载任务书处下载。

多功能计时器-课程设计

信息工程学院课程设计报告书题目: 多功能计时器 专业:电子信息科学学技术 班级: 学号: 学生姓名: 指导教师: 2012 年 12 月 24 日

信息工程学院课程设计任务书 年月日

信息工程学院课程设计成绩评定表

摘要 此多功能计时器是基于741s48、74ls192、555定时器、CD40161设计的,由六个主要部分组成,即控制电路、秒脉冲发生器、计数器、译码显示器、置数电路以及声光报警电路,包含置数(00至99)、1s倒计时、开启、暂停、连续、清零以及到点声光报警等主要功能,也能完成一个完整的系统过程,可用于各种竞赛计时,交通灯系统,及报警装置。计时范围为00至99,可智能控制。 关键词:多功能计时器、1s倒计时、连续、声光报警

目录 目录 (4) 1 任务提出与方案论证 (5) 1.1 任务提出 (5) 1.2 方案论证 (5) 2 总体设计 (6) 2.1 总体框图 (6) 2.2 总体电路 (7) 3 详细设计 (8) 3.1秒脉冲发生器 (8) 3.2译码计时电路 (10) 3.3控制电路 (13) 3.3.1总开关 (13) 3.3.2单刀双掷开关 (13) 3.4反馈电路 (14) 3.5报警电路 (14) 3.6置数电路: (15) 4 总结 (17) 5 参考文献 (18)

1 任务提出与方案论证 1.1 任务提出 设计一种多功能计时器,要求实现以下功能: 置数、1s倒计时、开启、暂停、连续、清零以及到点声光报警,计时范围为00至99,可智能控制。能任意定时,开启和暂停及清零,1秒的准确延时,及到点声光报警。 1.2 方案论证 秒脉冲发生器:可以选用晶振产生,或者用555定时器或者555与CD40161同时产生,为了实现反馈,让计时器计数到零时停止,我选用CD40161 ,即实现了1s计数有可以形成反馈。译码电路:我选用4线-七段译码器/驱动器74LS48来实现。 计时电路:我选用十进制可逆计数器74LS48 ,可以用来置数,同时也可以来产生减计数。控制电路:用按键和反馈来实现。 报警电路:用speaker和led来实现。 置数电路:用单刀双掷开关选通74ls48的置数端,通过置0或置1来控制。

电子时钟课程设计_数电课程设计数字电子时钟的实现

电子时钟课程设计_数电课程设计数字电子 时钟的实现 课程设计报告设计题目:数字电子时钟的设计与实现班级: 学号: 姓名: 指导教师: 设计时间: 摘要钟表的数字化给人们生产生活带来了极大的方便,大大的扩展了原先钟表的报时。诸如,定时报警、按时自动打铃、时间程序自动控制等,这些,都是以钟表数字化为基础的。功能数字钟是一种用数字电路实现时、分、秒、计时的装置,与机械时钟相比具有更高的准确性和直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。从原理上讲,数字钟是一种典型的数字电路,其中包括了组合逻辑电路和时序电路。 因此,此次设计与制作数字钟就是为了了解数字钟的原理,从而学会制作数字钟,而且通过数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及使用方法。通过此次课程设计可以进一步学习与各种组合逻辑电路与时序电路的原理与使用方法。通过仿真过程也进一步学会了Multisim 7的使用方法与注意事项。

本次所要设计的数字电子表可以满足使用者的一些特殊要求,输 出方式灵活,如可以随意设置时、分、秒的输出,定点报时。由于集 成电路技术的发展,,使数字电子钟具有体积小、耗电省、计时准确、 性能稳定、维护方便等优点。 关键词:数字钟,组合逻辑电路,时序电路,集成电路目 录摘要 (1) 第1章概述 (3) 第2章课程设计任务及要求 (4) 2.1设计任务 (4) 2.2设计要求 (4) 第3章系统设计 (6) 3.1方案论证 (6) 3.2系统设计 (6) 3.2.1 结构框图及说明 (6) 3.2.2 系统原理图及工作原理 (7) 3.3单元电路设计 (8) 3.3.1 单元电路工作原理 (8) 3.3.2 元件参数选择···································14 第 4章软件仿真 (15) 4.1仿真电路图 (15) 4.2仿真过程 (16)

vc++课程设计

1登陆模块设计 1.1本系统使用登陆模块来验证用户的合法性。登陆模块主要用于判断登陆用户的权限,根据用户的权限弹出不同的对话框供用户对系统进行操作。(1)登陆界面如图所示,其主要用到的控件如表所示 (2)单击【密码问题按钮】系统会根据用户输入的用户名显示相关密码问题。 (3)单击【查询】按钮系统根据用户输入的用户名和密码问题给出正确的密码。 (4)单击【取消】按钮退出对话框。 1.2单击登陆界面(图4.3)的【关于】按钮,系统弹出关于对话框

后台管理对话框运行时进行初始化,分别添加试题信息管理对话框、学生成绩查血对话框和数据存储管理对话框三个对话框到CTabCtrl控件中,并响应项改变消息

/ 登录模块- 判断登陆用户的合法性 bool CLoginDlg::LoginValidM() { UpdateData(); if(m_strUserName.IsEmpty()) { this->SetWindowTextW(_T("提示- 请输入用户名")); return false; } if(m_strUserPasswd.IsEmpty()) { this->SetWindowTextW(_T("提示- 请输入密码")); return false; } m_comboUserPower.GetLBText(m_comboUserPower.GetCurSel(),m_strUserPo wer); if(m_strUserPower.IsEmpty()) { this->SetWindowTextW(_T("提示- 请选择用户权限")); return false; } ADOConn adoConn; adoConn.Connect(); CStringW sql; _RecordsetPtr pRs; if ( m_https://www.doczj.com/doc/a87558647.html,pare(_T("学生"))==0 ) { sql.Format(_T("select* from %s where 学号 ='%s'"),m_strTable,m_strUserName); pRs=adoConn.GetRecordSet(sql); if(pRs->adoEOF) { this->SetWindowTextW(_T("提示- 用户名不存在")); adoConn.Disconnect(); return false; } else { sql.Format(_T("select* from %s where 学号='%s' and 密码 ='%s'"),m_strTable,m_strUserName,m_strUserPasswd); pRs=adoConn.GetRecordSet(sql); if(pRs->adoEOF) { this->SetWindowTextW(_T("提示- 密码输入错误"));

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

中北大学 信息与通信工程学院 通信工程专业 《电子线路及系统》课程设计任务书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进制计数器,并发出驱动信号。各计数器输出信号经译码器、驱动器到数字显示器,是“时”、“分”、“秒”得以数字显示出来。 值得注意的是:任何记时装置都有误差,因此应考虑校准时间电路。校时电路一般

24秒计时器课程设计

电子课程设计篮球24秒计时器 班级:自动化092201H班 姓名:陈鹏飞 学号:200922060101

目录 序言 (3) 一、设计任务及要求 (3) 二、总体框图 (3) .......................................................................................................... .......................................................................................................... .......................................................................................................... 三、选择器件 (4) ........................................................................................................... .......................................................................................................... 四、功能模块 (8) 五、总体电路设计 (12) 六、参考文献 (14) 七、心得体会 (14)

序言 篮球比赛中除了有总时间倒计时外,为了加快比赛的节奏,新的规则还要 求进攻方在24秒内有一次投篮动作,否则视为违例。本人设计了一个篮球比赛计时器,可对比赛总时间和各方每次控球时间既是。该计时器采用按键操作,LED 显示,非常实用,此计时器也可作为其他球类比赛的计时器。 篮球24秒计时器 一、设计任务与要求 1. 有显示24秒的计时功能 2. 置外部操作开关,控制计时器的直接清零,起碇和暂停连续功能 3. 计时器喂24秒递减计时器,其间隔为1秒 4. 计时器递减计时到0时,数码显示器不能灭灯 应发出光电报警信 号 二、总体框图 二. 1秒脉冲发生器: 秒脉冲信号发生器需要产生一定精度和幅度的矩形波信号。实现这样矩形波的方法很多,可以由非门和石英振荡器构成,可由单稳态电路构成,可以由施密特触发器构成,也可以由555点哭构成等。 不同的电路队矩形波频率的精度要求不同,由此可以选用不同电路结构的脉冲信号发生器。本实验中由于脉冲信号作为计数器的计时脉冲,其精度直接影响计数器的精度,因此要求脉冲信号有比较高的精度。一般情况下,要做出一个精度比较高的 频率很低的振荡器有一定的难度 工程上解决这一问题的办法就是先做一个频率比较高的矩形波震荡器,然后将其输出信号通过计数器进行多级分项,就可以得到频率比较低 精度比较高的脉冲信号发生器,其精度取决于振荡 秒脉冲发生器 外部操作信号 译码/显示电路 24t 计数器 控制电路 报警电路

数字电子时钟课程设计

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

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

60秒计时器课程设计 周海祥

目录 摘要 (2) 引言 (2) 一.设计目的 (2) 二.设计任务 (2) 三.电路原理设计 (2) 3-1计时器的设计原理 (2) 3-2计时器的基本逻辑功能 (3) 3-3主干电路设计 (3) 3-3-1震荡电路设计 (3) 3-3-2计数器的设计 (3) 3-3-3译码器的设计 (3) 四.电路仿真 (4) 五.系统分析 (5) 5-1基础元件介绍 (5) 5-1-1计数器 (5) 5-1-2译码器与显示管 (6) 5-1-3振荡器 (8) 5-1-4与非门 (8) 六.电路的焊接 (9) 七.调试 (9) 八.总结 (10) 参考文献 (10) 致谢 (10) 附录 (11)

74LS160构成的60秒计时器 摘要 60秒计时器是采用数字电路实现的数字显示计时装置。本系统由振荡器,计数器,译码器,LED显示器组成。采用74LS系列中小规模集成芯片。 引言 计时器是用数字集成电路做成的现代计时器,与传统的机械钟相比,它具有走时准确、显示直观(有荧光七段数码显示器)、无机械传动装置等优点。而且钟表的数字化给人们生产生活带来了极大的方便。 一.设计目的 在学完了《数字电子技术》课程的基本理论后,能够综合运用所学知识设计和制作实际需要的简单电子电路,系统地进行电子电路的工程实践训练,锻炼动手能力,培养工程师的基本技能,提高分析问题解决问题的能力。 二.设计任务 完成由74LS160构成的60秒计时器 计时器的组成:60秒计时器一般由振荡器,计时器,译码器,LED显示器组成,这些都是数字电路中应用最广泛的基本电路。 三.电路原理设计 3-1 计时器的设计原理: 先构成一个555定时器和分频器产生震荡周期为一秒的标准“秒”脉冲信号,由74LS160采用清零法分别组成六十进制的“秒”计数器。清零法适用于有异步置零输入端的集成计数器。原理是不管输出处于哪种状态,只要在清零输入端加一个有效电平电压,输出会立即从那个状态回到“0000”状态。。使用74LS48为驱动器,共阴极七段数码管作为显示器。设计图见附录一

电子时钟课程设计模板

电子时钟课程设计 电子时钟设计 一、课程设计目的和意义 掌握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级中断, 并选择优先模式和中断请求方式, 即中断

Vc课程设计报告

作者: 裴超晨 班级:07信息 学号:200710520113 指导老师:彭永康 时间:2009.12.28—2010.01.08 景德镇陶瓷学院

前言 随着21世纪面向对象程序设计技术的蓬勃发展,在全球软件业掀起了面向对象程序设计的浪潮,在众多的面向对象程序设计语言中,Visual C++6.0将程序设计方法和可视的软件开发环境完美的结合在一起,其崭新的开发数据库和适应Internet应用程序的新特点引起了开发人员的广泛关注,尤其受广大软件设计人员的亲睐,逐渐成为软件设计、Windows应用程序开发的首选语言。 Visual C++6.0是汇集MS公司技术精华的主流产品,使用Visual C++6.0可以开发强大的32应用程序,能为用户提供全方位的服务,具有广阔的商业前景。 本次课程设计是为配合课堂教学,提高学生动手能力和创新能力而安排的一次实践性教学环节,学生通过本课程设计,进一步掌握《Windows程序设计》课程中有关理论知识,将所学理论知识应用于实践,按软件工程方法,完成简单的Windows程序设计。 本次课程设计主要有:设计一个具备基本计算能力的计算器、设计一个浏览器SEExplorer、设计一个小闹钟还选做了一个在VC6.0下自制多媒体播放器可以通过这几个例子更加深刻地了解Visual C++6.0.

第一篇多媒体播放器 1.内容 设计一个多媒体播放器 2.要求 具有一般的播放功能,能播放*.mp3,*.wma,*.mdi,*.wav,*.avi,*.dat等文件,还有Repeat功能 编写有关本程序的使用手册 3.程序设计框架和步骤 1.打开VC6.0,在Projects下选择MFC AppWizard(exe),并取名MediaPlayer,然后建立基于对话框(Dialog Based)的运用程序。 2.打开Resource View,选择其中的对话框,打开其中的主对话框,去掉对话框上的“确定”按钮,保留“取消”,将Caption改为“Exit”。然后再在上面加上九个按钮,ID和Caption分别为 IDC_OPEN,Open; IDC_PLAY,Play; IDC_PAUSE,Pause; IDC_STOP,Stop; IDC_CLOSE,Close; IDC_LOWER,<<=; IDC_UPPER,=>>; IDC_FULLSCREEN,Full; IDC_REPEAT,Repeat; 再加入两个静态文本控件,分别为 IDC_STATIC,Volume;IDC_STATIC2,Status:Normal。 3.再打开Projects->Add to Project->Components and Controls->Registered ActiveX Controls对话框,选择其中的ActiveMovieControl Object, Insert,OK之后,你会发现你的控件面板上多了一项ActiveMovieControl Object,将它选中,直接放在你的对话框上就行了。按Ctrl+W打开ClassWizard为它添加变量CActiveMovie3 m_ActiveMovie。各控件的布局如图:

相关主题
文本预览
相关文档 最新文档