时钟图形模拟

时钟图形模拟
时钟图形模拟

《高级语言程序设计》

课程设计报告

题目:图形模拟时钟

专业:

班级:

姓名:

指导教师:

成绩:

计算机与信息工程系

2014年6月20日

目录

1 设计内容及要求 (1)

1.1 设计内容 (1)

1.2 设计目的及意义 (1)

2 概要设计 (1)

2.1功能简介 (1)

2.2功能说明: (1)

2.3 总体程序框图 (2)

3 设计过程 (3)

3.1各个模块程序流程图 (3)

3.2运行界面及关键代码 (4)

4设计结果与分析 (6)

4.1设计结果 (6)

4.2分析 (6)

5 总结 (7)

6 参考文献 (7)

附程序清单及源程序 (8)

1 设计内容及要求

1.1 设计内容

通过编程最终使电脑屏幕显示模拟时钟,并正常运行显示表针时间,电脑上呈现一个图种的模型表示电脑上的时间,并可以模拟时钟走动。

1.2 设计目的及意义

设计目的及意义:熟悉Visual c++ 6.0软件的应用,C语言相关函数,语句的学习,查找资料代码等,编程、调试、运行、效果显示调整,完成上传,熟悉编程语言,了解程序运行以及图像显示等C语言的应用,通过编程实现既定功能。培养自学能力,独立思考能力,将理论形成实际运用,同时可以掌握下列运算符的使用:

1 .数据类型(整形、实型、字符型、指针、数组、结构等)。

2 .运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等)。

3 .程序结构(顺序结构、判断选择结构、循环结构)

5 .复杂任务功能分解方法(自顶向下逐步求精、模块化设计、信息隐藏等)。

6 .学会编制结构清晰、风格良好、数据结构适当的C语言程序。

2 概要设计

2.1功能简介

实现功能如下:

(1)在屏幕上最终显示一个图形时钟(用程序绘制一个与时钟样式相似即可),能模拟机械钟表行走。

(2)数字式显示时间与指针式显示时间一致,且各指针运动规律正确。

(3)能准确的利用数字显示时间和日期。

(4)按ESC可以退出程序。

2.2功能说明:

内容:指针式时钟模块完成在屏幕上显示一个活动时钟,模拟机械钟表行走,时针,分针,秒针不同颜色且顺时针旋转,获取系统时间;数字式时钟模块完成显示时间格式年月日时分秒,小时为24小时制,分和秒为60进制与指针式的时

钟显示时间同步并获取系统时间。

说明:指针顺时针旋转;指针式的时钟表盘为圆形;圆周上分布均匀的12个刻度;有3个长度不同的指针,即时针,分针,秒针的运动具有规律性;数字钟显示时间格式年月日时分秒,小时为24进制,分和秒为60进制;指针式的时钟与数字式的时钟显示时间同步;其主要的设计思想如下:

1 . 确定秒针的走时,将圆分成60份每过一秒,秒重要转过1/60个园,即一等份。

2 . 确定分针真的走时,将圆分成60份每过一分,分针要转过1/60个圆,即一等份分针自己走过的再加秒针的,才是此四分钟的位置。

3 . 时钟走动与系统时间联系:每过一秒画出秒针,并且除去前一秒的秒针,分针和秒针一样,画线函数与时间联系使用变量。

4 . 设置横纵坐标及表针:X =

a*cos(b*pi/180)+300;Y=a*sin(b*pi/180)+240;

2.3 总体程序框图

(系统模块图)

首先,先画出个钟的大致轮廓。从输出数字到画出外轮廓,到标出短线到画出时针、分针、秒针。这个轮廓就已经完成了。然后,为了更加这个钟的实用性。就通过获取系统时间来结合实际意义,这是最简单,最好的方法。从应用上,它显示的是实际的时间,增强了可用性;从编程上,不用再复杂地再编一个更时间一样的函数来,减少程序的篇幅、复杂性和编程者的工作量。接着顺带利用时间的变量名来画时针,分针,秒针。最后,为了让时针,分针,秒针让观察者看起来是连续的变化,即形象地模拟真实的机械钟表那样运动。

3 设计过程3.1各个模块程序流程图

键)

3.2运行界面及关键代码

3.2.1运行结果

在桌面显示一个模拟的时钟,时钟的秒针、分针与时针随着时间的推移而不断移动就像我们经常看见的圆形电子时钟一样。我们可以通过程序随意改动时钟的背景颜色以及指针的颜色和表盘大小等问题,同时还能在桌面显示一些简单的英文以及图案等。

3.2.2关键代码分析及说明

(1)本系统中主要的数据结构就是time结构体

struct time

{

unsigned char m;/*分钟*/

unsigned char h/*小时*/

unsigned char s/*秒*/

}

time结构体定义在dos.h文件中,可用来保存系统的当前时间,其中各字段的值的含义如下。

·unsigned char m:保存分钟值。

·unsigned char h:保存小时值。

·unsigned char s:保存秒数。

(2)全局变量

下面对程序用到的全局变量及数组进行说明。

·int h,m,s:此3个全局变量分别用来保存小时、分钟、秒数。

·int x,x1,x2,y,y1,y2:保存数字时钟中小时、分、秒在屏幕中显示的坐标值。

·struct time t[1]:定义一个time结构类型的数组,此数组只有t[0]一个元素。

(3)程序流程

系统的执行应从运行开始,显示界面正常运行,直到用户选择退出系统为止。

(4)流程图功能描述

①画圆模板:

#inlude “graphics.h”

#inlude ”math.h ”

Void init()

Circle(300,240,200);

②画时间刻线模块:

For(i=0;i<=60;i++)

{

If(i%5==0)

L=15;else

L=5;

X1=200*sin()+300;

Y1=200*cos()+240;

}

③时间模块:Gettime(d)

4设计结果与分析

4.1设计结果

运行程序后在屏幕上显示出一时钟,钟上的时间与电脑上的时间完全一样,并且在秒针运行的同时伴随声音

如同下图一样的图案:

4.2分析

在桌面会显示一个模拟的时钟,时钟的秒针、分针与时针随着时间的推移而不断移动就像我们经常看见的圆形电子时钟一样。我们可以通过程序随意改动时钟的背景颜色以及指针的颜色和表盘大小等问题,同时还能在桌面显示一些简单的英文以及图案等。因为是程序控制时钟的,所以起始时间是通过程序控制的,要想改动还是需要通过改变程序获得,并不是随系统时间而确定起始时间的。

5 总结

通过本次的课程设计,我深刻的体会到了C语言的强大。虽然本次的课程设计对我来说有一定的难度,但是在朋友的帮助下我还是很好地完成了(自我感觉)。从而也认识到了程序的内涵,使我对编程产生了很大的兴趣。其实编程很好玩的,在编程中不但可以完成一些现实中从在的东西,还可以制作出很多意想不到东西。还有对于此次课程设计让我深刻的认识到自己学得的远远还太少,需要我们自发的去学习知识才可以成长的更快!其次,对于此次设计我得坦诚一件事,那就是我一开始选的TC程序,运行的时候总是要我输入参数,由于自己的知识局限,总是敲不出结果,所以我又去百度文库搜了一个vc程序,虽然最终使运行出来了,可是这次事件让我认识自身知识的不足,所以,这次过后会更加认真的学习一些书面没有的知识,充实自己。

6 参考文献

《C语言程序设计》(第二版)[M].北京:清华大学出版社谭浩强 1999 《数据结构》(C语言版)[M].北京:清华大学出版社严魏敏,吴伟民 1997 《C语言程序设计》[M]. 黄明等.大连理工大学出版社,2005

《C语言课程设计案例精编》. 郭翠英 . 中国水利水电出版 . 2004年3月《C语言程序设计教程》曾春平,朱小谷,晏海华.北京希望电子出版社 . 2005年3月

《C语言课程设计案例精编》清华大学出版社﹒姜灵芝、余健﹒ 2008.1

《C语言程序设计》西安电子科技大学出版社﹒田祥宏主编﹒2007.12

附程序清单及源程序

(1)TC2.0上的源程序

#include"graphics.h"

#include"math.h"

#include"dos.h"

#define pi 3.1415926

#define X(a,b,c) x=a*cos(b*c*pi/180-pi/2)+300

#define Y(a,b,c) y=a*sin(b*c*pi/180-pi/2)+240

#define d(a,b,c) X(a,b,c);Y(a,b,c);line(300,240,x,y) void init() /*划时钟边框函数*/

{

int i,l,x1,x2,y1,y2;

setbkcolor(1);

circle(300,240,200);

circle(300,240,205);

circle(300,240,5);

for(i=0;i<60;i++) /*划钟点上的短线*/

{

if(i%5==0)

l=15;

else

l=5;

x1=200*sin(i*6*pi/180)+300;

y1=200*cos(i*6*pi/180)+240;

x2=(200-l)*sin(i*6*pi/180)+300;

y2=(200-l)*cos(i*6*pi/180)+240;

line(x1,y1,x2,y2);

}

}

main()

{

int x,y,i,k=1;

int gdriver=9,gmode=2;

unsigned char h,m,s;

int o,p,q;

float n;

struct time t[1];

struct date d[1];

initgraph(&gdriver,&gmode,"c:\\tc");

initgraph(&gdriver,&gmode,"c:\\tc");

for(i=0;i<=6;i++)

{

settextstyle(TRIPLEX_FONT,HORIZ_DIR,i); /*控制输出字符的字体,方向,大小*/

cleardevice();

settextjustify(1,1); /*在指定坐标上输出字符串*/

outtextxy(300,80,"12") ;

outtextxy(300,390,"6");

outtextxy(140,230,"9");

outtextxy(460,230,"3");

outtextxy(380,100,"1");

outtextxy(220,100,"11");

outtextxy(430,160,"2");

outtextxy(430,310,"4");

outtextxy(380,370,"5");

outtextxy(220,370,"7");

outtextxy(160,160,"10");

outtextxy(160,310,"8");

}

init();

setwritemode(1); /*设置画线的输出模式*/

if(k!=0)

{

getdate(d); /*获得系统日期函数*/

o=d[0].da_year;

p=d[0].da_mon;

q=d[0].da_day;

gettime(t); /*获得系统时间函数*/

h=t[0].ti_hour;

m=t[0].ti_min;

s=t[0].ti_sec;

}

setcolor(7); /*设置时针颜色*/

n=(float)h+(float)m/60;

d(150,n,30); /*画出时针*/

setcolor(14); /*设置分针颜色*/

d(170,m,6); /*画出分针*/

setcolor(4); /*设置秒针颜色*/

d(190,s,6); /*画出秒针*/

while(!kbhit()) /*控制程序按下任意键退出*/

{

while(t[0].ti_sec==s)

gettime(t);

gotoxy(44,18); /*使光标移动到指定坐标*/

printf("\b\b\b\b\b\b\b\b\b"); /*退格,使表示时间的字符串不断变化*/ sound(400); /*按给定的频率打开PC扬声器*/

delay(70); /*中断程序的执行,时间为70毫秒*/

sound(200);

delay(30);

nosound(); /*按给定的频率关闭PC扬声器*/ setcolor(4);

d(190,s,6);

s=t[0].ti_sec;

d(190,s,6);

if(t[0].ti_min!=m)

{

setcolor(14);

d(170,m,6);

m=t[0].ti_min;

d(170,m,6);

}

if(t[0].ti_hour!=h)

{

setcolor(7);

d(150,h,30);

h=t[0].ti_hour;

d(150,h,30);

sound(1000);

delay(240);

nosound();

delay(140);

sound(2000);

delay(240);

nosound();

}

if(s<10) /*用字符的形式输出时间*/

{ if(m<10)

printf("%u:0%u:0%u",h,m,s);

else

printf("%u:%u:0%u",h,m,s);

}

else

{ if(m<10)

printf("%u:0%u:%u",h,m,s);

else

printf("%u:%u:%u",h,m,s);

}

gotoxy(34,19); /*在指定坐标上输出日期*/

printf("%d年%d月%d日",o,p,q);

printf("\b\b\b\b\b\b\b\b\b");

}

getch();

closegraph();

}

(2)visual c++ 6.0上运行的源程序

#define _CRT_SECURE_NO_WARNINGS

#include

#include

#include

#pragma comment(lib, "user32.lib")

#pragma comment(lib, "gdi32.lib")

#pragma comment(linker, "/SUBSYSTEM:Windows")

void GetPos(double degree, int len, int* x, int* y)

{

*x = len * sin(degree);

*y = len * cos(degree);

}

void DrawClock(HWND hw, HDC h, int hour, int minute, int second) {

HDC bufdc = CreateCompatibleDC(h);

HBITMAP buf = CreateCompatibleBitmap(bufdc, 200, 200);

RECT cr;

HBRUSH bBg = CreateSolidBrush(RGB(255, 255, 255));

GetClientRect(hw, &cr);

SelectObject(bufdc, bBg);

SelectObject(bufdc, buf);

FillRect(bufdc, &cr, bBg);

{

int sx, sy, ex, ey;

int i;

for(i = 0; i < 12; ++i) {

GetPos(2*3.14159/12*i, 85, &sx, &sy);

GetPos(2*3.14159/12*i, 95, &ex, &ey);

MoveToEx(bufdc, 100+sx, 100-sy, 0);

LineTo(bufdc, 100+ex, 100-ey);

}

}

{

int hx, hy, mx, my, sx, sy;

GetPos(2*3.14159 / 24 * (hour + (double)minute / 60 + (double)second / 3600), 50, &hx, &hy);

GetPos(2*3.14159 / 60 * (minute + (double)second / 60), 65, &mx, &my);

GetPos(2*3.14159 / 60 * second, 80, &sx, &sy);

MoveToEx(bufdc, 100, 100, NULL);

LineTo(bufdc, 100+hx, 100-hy);

MoveToEx(bufdc, 100, 100, NULL);

LineTo(bufdc, 100+mx, 100-my);

MoveToEx(bufdc, 100, 100, NULL);

LineTo(bufdc, 100+sx, 100-sy);

}

BitBlt(h, 0, 0, 200, 200, bufdc, 0, 0, SRCCOPY);

DeleteDC(bufdc);

DeleteObject(bBg);

DeleteObject(buf);

}

LRESULT CALLBACK WndProc(HWND h, UINT m, WPARAM w, LPARAM l)

{

switch(m) {

case WM_CREATE:

SetTimer(h, 1, 1000, 0);

return 0;

case WM_ERASEBKGND:

return 1;

case WM_TIMER:

InvalidateRect(h, 0, FALSE);

return 0;

case WM_PAINT: {

PAINTSTRUCT ps;

HDC dc = BeginPaint(h, &ps);

{

time_t t;

struct tm* pst;

time(&t);

pst = localtime(&t);

DrawClock(h, dc, pst->tm_hour, pst->tm_min, pst->tm_sec);

}

EndPaint(h, &ps);

return 0;

}

case WM_DESTROY:

KillTimer(h, 1);

PostQuitMessage(0);

return 0;

default:

return DefWindowProc(h, m, w, l);

}

}

int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmd, INT nShow)

{

WNDCLASS wc;

ZeroMemory(&wc, sizeof(wc));

wc.style = CS_HREDRAW | CS_VREDRAW;

wc.lpfnWndProc = WndProc;

wc.hInstance = hInst;

wc.hbrBackground = (HBRUSH) COLOR_WINDOW;

wc.lpszClassName = TEXT("MYCLOCK");

if (RegisterClass(&wc) != 0) {

MSG m;

HWND hw = CreateWindow(TEXT("MYCLOCK"), TEXT("Clock"), WS_OVERLAPPEDWINDOW,

CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInst, 0);

if (hw != NULL) {

RECT r;

GetWindowRect(hw, &r);

r.right = r.left + 200;

r.bottom = r.top + 200;

AdjustWindowRect(&r, WS_OVERLAPPEDWINDOW, FALSE);

MoveWindow(hw, r.left, r.top, r.right - r.left, r.bottom - r.top, FALSE);

ShowWindow(hw, SW_SHOWNORMAL);

UpdateWindow(hw);

while( GetMessage(&m, 0, 0, 0) > 0) {

TranslateMessage(&m);

DispatchMessage(&m);

}

return 0; }

return 1;

} else

return 1;

}

简单51单片机数字时钟设计

题目:简单51单片机数字时钟设计 院系: 物理与电气工程学院 专业:自动化专业 班级:10级自动化 姓名:苏吉振 学号:2 老师:李艾华

引言 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。 时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。 目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS 化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。下面是单片机的主要发展趋势。 单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。 单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。 数字钟是采用数字电路实现对时,分,秒数字显示的计时装置,广泛用于个 人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。

用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时调用

数字时钟的设计与仿真

湖北民族学院 课程设计报告 数字时钟设计与仿真 课程:电子线路课程设计 专业:电子信息科学与技术 班级: 0312409 学号: 031240910 学生姓名:谢加龙 指导教师:易金桥 2014年 06月 21日

信息工程学院课程设计任务书 2014-06-21

摘要 基于单片机AT89c51设计而成的简易数字电子时钟,其主要功能皆由对单片机编程即由软件完成,外围硬件电路只包括报时电路、键盘输入电路和显示电路三个模块。具有外围硬件电路简单、运行功能可靠的优点。 关键词:单片机时钟键盘输入显示

目录 1、系统设计要求 (1) 1.1 基本功能 (1) 1.2扩展功能 (1) 2、硬件设计 (2) 2.1系统设计方案选择 (2) 2.2系统原理框图 (2) 2.3各单元的功能描述 (2) 2.4电路连接图 (2) 2.5元器件清单列表 (2) 2.6所用芯片的管脚图 (2) 3、软件设计 (3) 3.1主程序的流程图 (3) 3.2键盘扫描程序流程图 (3) 3.3发声程序流程图 (3) 3.4总程序 (3) 4、调试 (4) 4.1仿真调试 (4) 4.2硬件调试 (4) 5、总结 (5) 参考文献 (6)

1、系统设计要求 1.1 基本功能 (1)、要求准确显示“时”、“分”、“秒”,24 小时制; (2)、具有整点报时功能,在每小时59 分51 秒、53 秒、55 秒、57 秒发出低音,59秒整发出高音; (3)、系统工作符合一般时钟要求。 1.2扩展功能: (1)、具有校时功能,用户可修改“时”、“分”,且互不影响; (2)、可切换12 小时制和24 小时制。

简易数字钟设计(已仿真)

简易数字钟设计 摘 要 本文针对简易数字钟的设计要求,提出了两种整体设计方案,在比较两个方案的优缺点后,选择了其中较优的一个方案,进行由上而下层次化的设计,先定义和规定各个模块的结构,再对模块内部进行详细设计。详细设计的时候又根据可采用的芯片,分析各芯片是否适合本次设计,选择较合适的芯片进行设计, 最后将设计好的模块组合调试,并最终在EWB 下仿真通过。 关键词 数字钟,EWB ,74LS160,总线,三态门,子电路 一、引言:所谓数字钟,是指利用电子电路构成的计时器。相对机械钟而言,数字钟能达到准确计时,并显示小时、分、秒,同时能对该钟进行调整。在此基础上,还能够实现整点报时,定时报闹等功能。 设计过程采用系统设计的方法,先分析任务,得到系统要求,然后进行总体设计,划分子系统,然后进行详细设计,决定各个功能子系统中的内部电路,最后进行测试。 二、任务分析:能按时钟功能进行小时、分钟、秒计时,并显示时间及调整时间,能整点报时,定点报时,使用4个数码管,能切换显示。 总体设计 本阶段的任务是根据任务要求进行模块划分,提出方案,并进行比较分析,最终找到较优的方案。 方案一、采用异步电路,数据选择器 将时钟信号输给秒模块,秒模块的进位输给分模块,分模块进位输入给时模块,切换的时候使用2选1数据选择器进行切换,电路框图如下: 该方案的优点是模块内部简单,基本不需要额外的电路,但缺点也很明显,该方案结构不清晰,模块间关系混乱,模块外还需使用较多门电路,不利于功能扩充,且使用了异步电路,计数在59的时候,高一级马上进位,故本次设计不采用此方案。 方案二、采用同步电路,总线结构 时钟信号分别加到各个模块,各个模块功能相对独立,框图如下: 显示 切换 秒钟 分钟 小时 控制 1Hz 脉冲信号 闹钟

模拟电子时钟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) {

用C#编的模拟时钟(附源代码)

使用C#模拟时钟表的一种简单制作方法 1.GDI+图形库简介 1.1概述 GDI+是Microsoft的新.NET Framework类库用于图形编程,因为它是.NET Framework的一部分,所以也是面对对象的。 1.2设备环境和对象 在GDI+中识别输出设备的方式是使用设备环境DC对象,该对象存储特定设备的信息并能把GDI+API函数调用转换为要发送给该设备的指令,还可以查询设备环境对象,确定对应的设 备有什么功能,这样才能据此调整输出结果。 在GDI+中设备环境包装在.NET基类System.Drawing.Graphics中,大多数绘图工作都是调用Graphics的对象完成的。 2.如何利用GDI+绘制时钟表 2.1时钟表的各控件属性的设置 用C#中各控件制作一个指针式的时钟放在桌面上显示的界面。包括1个PictureBox控件、1个Timer控件、1个NotifyIcon控件及StatusStrip控件。 2.2各控件的属性设置 Timer控件的Interval属性值设置为1000,Enable属性值设置为True;窗体的StartPosi tion属性设置为CenterScreen,这个属性使得钟表在屏幕上中中央显示。 2.3功能实现代码 为实现该时钟表功能,需要设计并输入相应对象相应事件或过程的程序代码。方法是:在设计状态,双击相应控件,或双击控件的某一事件,并输入相应的C#程序代码。 2.4通用声明及时钟表设计方法 在程序中需要有一批变量或常量的定义,可事先在通用声明中完成,代码如下: const int s_pinlen = 100;//秒针长度 const int m_pinlen = 75; //分针长度 const int h_pinlen = 75; //时针长度 PointF center = new PointF(s_pinlen +3, s_pinlen +3);//中心点位置 SolidBrush sb = new SolidBrush(Color.Black);//时钟圆心的刷子 除上述变量声明外,时钟表功能编写子方法,方法名为:AngleToPos和myClock,

数字时钟完整版

设计报告撰写要求 1.设计报告,报告中要包括以下几部分内容: (1)封皮:设计题目,姓名、学号,班级,授课教师姓名【格式见后面附表】 (2)写明设计任务 (3)写出设计题目的原理框图; (4)完成设计功能所选用的器件,及相应各器件的引脚排列图和功能表;(5)画出综合逻辑电路图; (6)用仿真软件进行调试的调试过程(即:在调试时遇到了哪些实际问题,你是如何解决的); (7)各人在本次设计中的体会和收获。 正文小四号宋体,1.5倍行间距。

课程设计报告 学生姓名:学号: 学院:电气工程学院 班级: 电自1116 题目: 数字时钟设计 指导教师:张光烈职称: 2013 年 7月 4 日

一.设计要求 多功能数字钟具有时间显示、闹钟设置、报时功能、校正作用。走时准确、显示直观、精度、稳定等优点。电路装置十分小巧,安装使用也方便。同时在日期中,它以其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费的喜爱。数字钟广泛用于个人家庭,车站,码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。 数字钟已成为我们生活中不可缺少的必须品,广泛的应用于家庭以及办公室等公共场所。给我们生活、学习、工作、娱乐带来了极大的方便。 本次设计主要是采用555定时器提供定时脉冲,74160集成块作为计时模块,8段数码显示管作为显示工具。应用电子工作平台软件来设计和仿真多功能数字钟设计,并通过硬件实验的调试来相互验证实际结果。 由振荡器输出稳定的高频脉冲信号作为时间基准,经分频振荡器输出标准的秒脉冲,秒计数器满60向分计数器进位,分计数器满60向小时进位,小时计数器按“12翻1”规律计数,计数器经译码器送到显示器;计数出现误差可用校时电路进行校时、校分、校秒。并具有可整点报时与定时闹钟的功能。 设计一种多功能数字钟,该数字钟具有基本功能和扩展功能两部分。其中,基本功能部分的有准确计时,以数字形式显示时、分、秒的时间和校时功能。扩展功能部分则具有:定时控制、、自动报整点时数和触摸报正点的功能。数字钟的电路也是由主体电路和扩展电路两部分构成,在电路中,基本功能部分由主体电路实现,而扩展功能部电路实现。这两部分都有一个共同特点就是它们都要用到振荡电路提供的1Hz脉冲信号。在计时出现误差时电路还可以进行校时和校分,为了使电路简单所设计的电路不具备校秒的功能。并且要用数码管显示时、分、秒,各位均为两位显示,扩展部分要有相应的响应电路。分则由扩展能按时钟功能进行小时、分钟、秒计时,能调时调分,能整点报时,使用3个2位数码管显示。 总体设计

模拟时钟的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控件清空,可以进行时间的重新输入。 ⑤程序可以实现时钟指针的转动。

电子时钟 Multisim仿真

一、设计指标 1.时间以24小时为一个周期; 2.显示时、分、秒; 3.有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间; 4.保证计时的稳定及准确须由晶体振荡器提供表针时间基准信号。 二、设计方框图 三、元器件介绍 1、74LS74 74LS74内部结构图 74LS74管脚图

2、74LS47译码器 74LS47就是输出低电平有效的七段字形译码 器, 该电路就是由与非门、输入缓冲器与7 个与或 非门组成的BCD-7 段译码器/驱动器。 通常就是低电平有效,高的灌入电流的输出可 直接驱动显示器。7 个与非门与一个驱动器成对连 接,以产生可用的BCD 数据及其补码至7 个与或非 译码门。剩下的与非门与3 个输入缓冲器作为试灯 输入(LT)端、灭灯输入/动态灭灯输出(BI/RBO)端 及动态灭灯输入(RBI )端。 74LS47 译码器 LT L ×××××H L L L L L L L (5) 74LS47译码器真值表 注:1、当需要0到15的输出功能时,灭灯输入(BI)必须为开路或保持在高逻辑电平,若不要灭掉十进制零,则动态灭灯输入(RBI)必须开路或处于高逻辑电平。2、当低逻辑电平直接加到灭灯输入(BI)时,不管其它任何输入端的电平如何,所有段的输出端都关死。(H=高电平 L=低电平×=不定) 3、当动态灭灯输入(RBI)与输入端A、B、C、D 都处于低电平而试灯输入(LT)为高时,则所有段的输出端进入关闭且动态灭灯输出(RBO)处于低电平(响应条件)。4、当灭灯输入/动态灭灯输出(BI/RBO)开路或保持在高电平,且将低电平加到试灯输入(LT)时,所有段的输出端都得打开。 * BI/RBO 就是用作灭灯输入(BI)与/或动态灭灯输出(RBO)的线与逻辑。

模拟时钟转动程序

模拟时钟转动程序 一、课程设计的内容 能模拟机械钟表行走,还要准确利用数字显示日期和时间,在屏幕上显示一个活动时钟,按任意键时程序退出。 二、课程设计的要求与数据 1.进一步掌握和利用C语言进行课程设计的能力 2.进一步理解和运用结构化程序设计的思想和方法 3.初步掌握开发一个小型实用系统的基本方法 4.学会调试一个较长程序的基本方法 5.学会利用流程图和N-S图表示算法 6.掌握书写程序设计开发文当的能力 三、课程设计应完成的工作 1、编写完成相应题目的程序 2、编写课程设计报告,课程设计报告应该包含以下6部分 1)需求分析:包括设计题目、设计要求以及系统功能需求分析 2)总体设计:包括系统总体设计框架和系统功能模块图 3)详细设计:包括主要功能模块的算法设计思路以及对应的工作流程图 4)调试分析过程描述:包括测试数据、测试输出结果以及对程序测试过程中存在问题进行思考(主要问题的出错现象、出错原因、 解决方法及其效果等,相应效果截图) 5)总结:课程设计完成了哪些主要功能,是否有扩展功能?还有哪些地方需要改进?课程设计的学习与体会?有哪些合理化建 议? 6)附录:主要原程序代码含必要的注释 3、答辩:在实验室建立程序运行环境,并在指导教师的监督下,独立解决问题,运行程序和回答教师的提问。 四、课程设计进程安排

五、应收集的资料及其主要参考文献 [1]谭浩强.C程序设计(第三版)[M]北京:清华大学出版社,2005年9月 [2]谭浩强.C程序设计题解与上机指导(第三版)[M]北京:清华大学出版社,2005年7月 [3]夏宝岚张慕蓉夏耘.程序设计教程(第二版)[M],上海:华东理工出版社,2003.1 [4]陈锦昌赵明秀.C语言计算机绘图教程(第一版)[M],广州:华南理工大 学出版社,1998.9 发出任务日期:2010年12月15日指导教师签名: 计划完成日期:2010年12月30日基层教学单位责任人签名: 主管院长签章: 目录 1.设计目的与要求 (5)

数字时钟的Multisim设计与仿真

数字时钟的M u l t i s i m 设计与仿真 Company number:【WTUT-WT88Y-W8BBGB-BWYTT-19998】

数字电子技术课程设计 学院:信息工程学院 班级:电气二班 姓名:刘君宇张迪王应博 学号:

数字时钟的Multisim设计和仿真 一、设计和仿真要求 学习综合数字电子电路的设计、实现 基础调研 应用设计、逻辑设计、电路设计 用Multisim 软件验证电路设计 分析电路功能是否符合预期,进行必要的调试修改 撰写Project 报告,提交Multisim 二、总体设计和电路框图 24 分、校时部分。主要由矩形波产生器、秒计数器、分计数器、时计数器、LED 图1. 数字钟电路框图 七段显示数码管、时间校准电路,闹钟电路构成。 五、结论 由脉冲发生器、秒计数器、分计数器、时计数器、LED显示数码管设计了数字时钟电路,经过仿真得出较理想的结果,说明电路图及思路是正确的,可以实现所要求的基本功能:计时、显示精确到秒、时分秒校时。 下页附设计感想和分工 整点报时设计体会

刘君宇分工:完成电路设计,整点报时,闹钟,扩展功能) 通过对软件Multisim的学习和使用,进一步加深了对数字电路的认识。在仿真过程中遇到许多困难,但通过自己的努力和同学的帮助都一一克服了。首先,连接电路图过程中,数码管不能显示,后经图形放大后才发现是电路断路了。其次,布局的时候因元件比较多,整体布局比较困难,因子电路不如原电路直观,最后在不断努力下,终于不用子电路布好整个电路。 调试时有的器件在理论上可行,但在实际运行中就无法看到效果,所以得换不少器件,有时无法找出错误便更换器件重新接线以使电路正常运行。在整个设计中,计数器的接线比较困难,反复修改了多次,在认真学习其用法后采用归零法和置数法设计出60进制和24进制的计数器。 同时,在最后仿真时,预置的频率一开始用的是1hz,结果仿真结果反应很慢,后把频率加大,这才在短时间内就能看到全部结果。总之,通过这次对数字时钟的设计与仿真,为以后的电路设计打下良好的基础,一些经验和教训,将成为宝贵的学习财富。

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

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

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

指针式时钟仿真

#include #include #include #include #include #include //#include uchar code LCD_WIDTH =16; uchar code LCD_HEIGHT =64; uchar gCurRow,tCurCol; uchar ShowModeSW; uint txthome,grhome; uchar Status_BIT_01(); uchar Status_BIT_3(); uchar LCD_Write_Command(uchar cmd); uchar LCD_Write_Command_P1(uchar cmd,uchar para1); uchar LCD_Write_Command_P2(uchar cmd,uchar para1,uchar para2); uchar LCD_Write_Data(uchar dat); uchar LCD_Read_Data(); void cls(); char LCD_Initialise(); void SetShowMode(uchar mode); void Set_LCD_POS(uchar row,uchar col) reentrant; void Line(uchar x1,ucahr y1,uchar x2,uchar y2,bit Mode); void Pixel(uchar x,uchar y,uchar Mode) reentrant; uchar gCurRow,gCurCol; ucahr tCurRow,tCurCol; uint txthome,grhome; //状态STA1,STA0判断(读/写指令和读/写数据) uchar Status_BIT_01() { uchar i; for(i =10;i>0;i--) { if((LCMCW & 0x03)) break; } return i; //错误时返回0 }

单片机模拟带计时功能数字时钟

苏州市职业大学 实习<实训)报告名称单片机控制项目实训—— 模拟带计时功能的数字时钟 2018年 1 月 7 日至 2018 年 1 月 11 日共 1 周 院系计算机项目系 班级 姓名 系主任 教研室主任 指导教师 目录 一、课程设计的目的与要求1 1.课程设计的目的1 2.课程设计的要求1 二、题目说明1 2.1开发背景1 2.2 开发工具介绍2 2.3 小组成员分工2 三、硬件方案2 3.1主控MCU2

3.2键盘3 3.3 LCD液晶3 3.4 定时器5 四、软件设计6 4.1 模块划分6 4.2 模块结构图6 4.3键盘中断模块6 五、运行结果分析与系统改进8 六、遇到的问题和解决方法8 七、课程设计总结9 八、参考文献9 一、课程设计的目的与要求 1.课程设计的目的 《单片机原理与应用》是一门应用性很强的专业课,其理论与实践技能是从事嵌入式专业技术工作的人员所不可少的。本次课程设计选择AW60实验板进行模拟应用设计与开发,要求学生掌握使用 C 语言进行单片机程序设计和调试的方法,提高综合运用所学的理论知识独立分析和解决问题的能力。 2.课程设计的要求 在本课程设计过程中要求学生:重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务;按照课程设计的题目要求,独立地完成各项任务,不允许相互抄袭;按时到机房上机,并接受教师的检查。认真编写课程设计报告。 二、题目说明 我们选择的题目是:模拟带计时功能的数字时钟 题目描述:用AW60实验板模拟带计时功能的数字时钟,可设置时钟初始值,可调整时钟时间,可实现秒表计时功能。通过AW60的内部的定时器模块实现计时功能。 1>输入:自定义键盘,模拟时钟的按键。 2>输出:用液晶显示器显示时钟时间。 3>时间:用定时器模块实现计时功能。 <可加整点报时,或闹钟功能)

模拟时钟应用程序

案例五模拟时钟应用程序 以实例为背景学习基于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一次),如果采用全屏删除式重绘则闪烁十分明显,显示效果不佳。本程序采用非删除式重绘,假定指

数字时钟的Multisim设计与仿真(精.选)

电子电路Multisim设计和仿真 学院: 专业和班级: 姓名: 学号:

数字时钟的Multisim设计和仿真 一、设计和仿真要求 学习综合数字电子电路的设计、实现和调试 1.设计一个24或12小时制的数字时钟。 2. 要求:计时、显示精确到秒;有校时功能。采用中小规模集成电路设计。 3.发挥:增加闹钟功能。 二、总体设计和电路框图 1. 设计思路 1).由秒时钟信号发生器、计时电路和校时电路构成电路。 2).秒时钟信号发生器可由555定时器构成。 3).计时电路中采用两个60进制计数器分别完成秒计时和分计时;24进制计数器完成时计时;采用译码器将计数器的输出译码后送七段数码管显示。 4).校时电路采用开关控制时、分、秒计数器的时钟信号为校时脉冲以完成校时。 2. 电路框图 图1. 数字钟电路框图 三、子模块具体设计 1. 由555定时器构成的1Hz秒时钟信号发生器。 由下面的电路图产生1Hz的脉冲信号作为总电路的初输入时钟脉冲。

图2. 时钟信号发生电路 2.分、秒计时电路及显示部分 在数字钟的控制电路中,分和秒的控制都是一样的,都是由一个十进制计数器和一个六进制计数器串联而成的,在电路的设计中我采用的是统一的器件74LS160D的反馈置数法来实现十进制功能和六进制功能,根据74LS160D的结构把输出端的0110(十进制为6)用一个与非门74LS00引到CLR端便可置0,这样就实现了六进制计数。 由两片十进制同步加法计数器74LS160级联产生,采用的是异步清零法。 显示部分用的是七段数码管和两片译码器74LS48D。 图3. 分秒计时电路 3. 时计时电路及显示部分 由两片十进制同步加法计数器74LS160级联产生,采用的是同步置数法,u1输出端为0011(十进制为3)与u2输出端0010(十进制为2)经过与非门接两片的置数端。 显示部分用的是七段数码管和两片译码器74LS48D。

单片机模拟电子时钟设计

单片机课程设计 课题:单片机模拟电子时钟设计 学院:自动化学院 专业: 07电气工程及其自动化 (低压电力智能控制方向) 姓名:谭善文 学号:2007104743002 指导老师:张华

目录 一、前言 (3) 二、设计目的 (3) 三、设计任务与要求 (3) 四、设计原理 (3) 五、总体设计方案 (4) 六、小结与展望 (21) 七、致谢 (22) 八、主要参考文献 (22) (3)、晶振 (5) (4)、LED (5) (5)、复位 (6) (6)、蜂鸣器 (6) (7)、按键 (6) (8)、串行口 (7) (9)、单片机 (7) (10)、数码管 (8) 2、程序编写 (10) 六、小结与展望 (21) 七、致谢 (22) 八、主要参考文献 (22)

一、前言 在当今的工作和生活环境中,有越来越多的单片机在为人们服务,例如电视遥控、手机、洗衣机、空调等,单片机几乎无所不在,学习单片微型计算机这门课程,就是为了对单片微型计算机有进一步感性的认识,了解、掌握、应用,甚至设计开发它。让我们能综合运用单片机的软、硬件技术分析实际问题,为工业生产、科学研究和实验设备等领域的单片机应用和开发打下良好的基础。 二、设计目的 a)通过《单片微型计算机原理与接口技术教程》了解单片微型计算机的发 展; b)根据课程设计的要求,学会用汇编语言设计程序,学会应用程序设计调 试软件; c)通过调试程序设计模块,掌握单片微型计算机的结构原理,了解程序设 计的编程思想; d)通过软件调试熟悉使用单片机指令系统,掌握汇编语言程序设计方法及 编程技巧,掌握子程序的设计与使用,熟悉中断服务程序的设计及调用 过程。 三、设计任务与要求 任务:利用单片机定时功能实现电子时钟的计时 要求:1.设计单片机电子时钟设计控制方案,功能设计; 2.详细描述实现需要的硬件,效果等; 3.编写汇编语言程序设计,在KEIL仿真实现调试程序; 四、设计原理 单片机可以利用定时功能实现电子时钟的计时。设计时利用单片机的定时器

模拟数字时钟的设计

课程设计报告 课程名称:电子技术课程设计 题目:模拟数字时钟的设计 学院:信息工程学院系:电气工程及其自动化专业班级: 学号: 学生姓名: 起讫日期: 指导教师: 学院审核(签名): 审核日期:

一、课程设计的主要内容和基本要求 1.主要内容:设计一种多功能数字钟,该数字钟具有基本功能和扩展功能两部分。其中,基本功能部分的有准确计时,以数字形式显示时、分、秒的时间和校时功能。扩展功能部分则具有:定时控制、仿广播电台正点报时、自动报整点时数和触摸报正点的功能。数字钟的电路也是由主体电路和扩展电路两部分构成,在电路中,基本功能部分由主体电路实现,而扩展功能部分则由扩展电路实现。这两部分都有一个共同特点就是它们都要用到振荡电路提供的1Hz脉冲信号。在计时出现误差时电路还可以进行校时和校分,为了使电路简单所设计的电路不具备校秒的功能。并且要用数码管显示时、分、秒,各位均为两为显示,扩展部分要有相应的响应电路。 2.基本要求:画出电路原理图,元器件及参数选择,PCB文件生成版图。 二、课程设计应完成的软硬件的名称、内容及主要技术指标 1.数字钟的构成 数字钟是实际上是一个对标准频率(1Hz)进行计数的计数电路。通过附加一个校时电路,可对计数的起始时间进行校准,使其与标准时间一致。 1)555振荡电路 利用555构成多谐振荡电路提供一个频率为1HZ的方波信号,保证数字钟的走时准确稳定。 2) 时间计数器电路 时间计数器电路由秒、分、时的个位和十位计数构成,秒和分的计数器为60进制计数,而时的计数器为24进制计数。 3) 电源电路 电源电路由参数为220V AC/9VDV的通用电源及滤波电路构成。原理如图:

multisim_时钟的设计与仿真

[键入公司名称] [键入文档标题] 目录 1.设计要求 2. 总电路图及工作原理 3.电路组成介绍 3.1脉冲形成电路 3.2分频电路 3.3 60进制计数器及显示电路 3.4 24进制计数器及显示电路 3.5 时间设置电路 4. 电路的测试 5. 分析与评价 附录:元器件清单 1.设计要求

本次设计任务是要求用Multisim10.0软件设计一个数字时钟电路,即用数字显示出时间结果。设计要求如下: (a)以数字形式显示时、分、秒。 (b)小时计时采用24进制的计时方式,分、秒采用60进制的计时方式。 (c)要求能够对时钟进行时间设置。 2. 总电路图及工作原理 数字时钟的总电路图如下所示: 数字时钟工作原理:数字时钟电路由555振荡发生器、分频器、两个60进制分秒计数器、一个24进制小时计数器以及6个数字显示器组成。电路工作时由555振荡器产生频率为1000HZ 的脉冲,经由三个74LS90D 构成的千分频的分频器得到频率为1HZ 的脉冲,脉冲输入计数电路(分秒由60进制计数电路计数,小时由24进制计数电路计数),然后将相应数字显示到数字显示器上即所要显示的时间。另外,时钟的时间设置可以通过三个与单刀双掷开关相连的时钟信号发生器来实现。 电路的设计流程图如下所示 3.电路组成介绍

3.1 脉冲形成电路 脉冲形成电路为555计时器组成的振荡电路。考虑到时钟对精度要求较高,故在时钟电路中由555振荡电路产生频率为1KHz的脉冲信号,然后经过千分频的分频器分频产生1Hz脉冲。555振荡器的参数确定:T=0.7(R1+R2)C=1ms,f=1/t=1KHZ,故可令R1=5kΩ,R2=5KΩ,C=100nF。(以上设置在实际仿真的时候速度过慢,故在实际仿真中) 脉冲形成电路如下所示: 3.2 分频电路 分频电路是三个用十进制计数器74LS90串联而成的千分频的分频器。分频原理是在74LS90的输出端子中,从低位输入10个脉冲才从高位输出1个脉冲,这样一片74LS90就可以起十分频的作用,三个74LS90串联就构成了千分频的电路,输出的便是1HZ的标准脉冲信号。 分频电路如下所示: 3.3 60进制计数器及显示电路 在数字时钟电路中,分与秒的计数电路是由两个74LS90D组成的60进制的计数电路实现的。在下图中,U9是十进制计数器,U9的QD作为十进制的进位信号,74ls90计数器是十进制异步计数器,用反馈归零的方法实现十进制计数,U8和与非门构成六进制,其中与非门输出进位信号。 3.4 24进制计数器及显示电路 在数字时钟电路中,小时的计数电路是由两个74LS90D组成的24进制的计数电路实现的。如下图所示,计数电路由U16和U6俩部分组成。当时个位U6计数为4,U16计数为2时,两片74ls90复零,从而构成24进制计数。 3.5 时间设置电路 时间设置电路由一个单刀双掷开关与一个脉冲计数器组成。用单刀双掷开关切换计数功能与调时功能,另一端接计数器的脉冲输入端,开关置于函数发生器这一端便可以校时,置于计数器的进位端便是计时。不校正时间时开关都应打在与非门的那一端,校时时可用键盘操作改变开关的状态。如此,在时钟运行前及正在运行的过程中均可实现调时功能。 时间设置线路图如下所示(双掷开关左打调时,右打计数):

基于Multisim的数字时钟设计

东北大学 课程设计报告 课程设计名称:数字电子技术课程设计 专题题目: 指导教师: 学生姓名:学号: 专业:计算机科学与技术班级: 设计日期: 2017 年7 月 3 日~ 2017 年7 月7日

目录 摘要 (3) Abstract (3) 第1章概述 (4) 1.1设计思路 (4) 1.2主要内容 (4) 第2章课程设计任务及要求 (5) 2.1 设计任务 (5) 2.2 设计要求 (5) 第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器件分析 (8) 3.3.3 计数器设计 (9) 3.3.4 计时电路设计 (11) 3.3.5 数字时钟电路设计 (12) 3.3.6 校时电路 (12) 3.3.7 整点报时 (13) 3.3.8 闹钟电路 (14) 第4章仿真调试 (16) 4.1时钟显示 (17) 4.1.1 时钟显示完整的00:00:00 (17) 4.1.2 时钟完整显示01:00:00 (17) 4.1.3 时钟完整显示23:59:59 (18) 4.1.4 仿真开关校准“秒”电路 (18) 4.1.5 仿真开关校准“分”电路 (19) 4.1.6 仿真开关校准“时”电路 (19) 4.2 整点报时 (20) 4.2.1 07:59:50—07:59:59报时 (20) 4.3 闹钟电路 (21) 4.3.1 7:59:00闹钟设定 (21) 第5章结论 (22) 第6章利用Multisim14.0仿真软件设计体会 (23) 参考文献 (23) 第7章收获、体会和建议 (24)

相关文档
最新文档