当前位置:文档之家› 模拟时钟行走 C语言程序

模拟时钟行走 C语言程序

模拟时钟行走   C语言程序
模拟时钟行走   C语言程序

模拟时钟行走

课程设计总体要求

采用模块儿化程序设计;

鼓励可视化编程;

源程序中有足够的注释;

学生可自行增加新功能模块儿;

必须上机调试通过;

注重算法运用,优化存储效率与运算效率;

需提交源程序及相关文件;

目录

1 课程任务书

2 系统设计

3 模块设计

3.1 总体结构

3.2 流程图

3.3 使用的主要函数

4 调试及测试

1、调试过程中的问题

2、调试结果

5 设计总结

6 心得体会及致谢

7 答辩记录

8 教师意见

一、课程设计任务书

在屏幕上显示一个活动时钟;能模拟机械钟表行走;准确地利用数字显示日期和时间;按任意键时程序退出。

二、系统设计

总体结构:在绘图窗口中先画出表盘后获取系统的时间,利用得到的系统时间计算表针的位置,并将时间在屏幕上输出。每隔一秒读取一次时间,直到键盘有输入为止。

流程图

开始

初始化绘画窗口

画表盘

获取系统时间

结束

使用的主要函数:

setlinestyle 设置画线

setcolor 设置颜色

line(int x1,int y1,int x2,int y2)画直线

circle(int x,int y,int r)画圆

outtextxy(int x,int y,char *textstring)在指定位置输出字符

initgraph(int x, int y); 初始化绘图窗口

setwritemode( ); 设置绘图模式

kbhit() 检查是否有键盘输入

GetLocalTime(&ti); 获取当前时间

sleep() 程序暂停若干时间

三、模块设计

主要模块功能、源代码及注释:

1.计算表针的位置并画出表针

void Drawzhizhen(int hour, int minute, int second)

{

double a_hour, a_min, a_sec; // 时、分、秒针的弧度值

int x_hour, y_hour, x_min, y_min, x_sec, y_sec; // 时、分、秒针的位置

a_sec = second * 2 * PI / 60; // 计算时、分、秒针的弧度值

a_min = minute * 2 * PI / 60 + a_sec / 60;

a_hour= hour * 2 * PI / 12 + a_min / 12;

x_sec = int(120 * sin(a_sec)); y_sec = int(120 * cos(a_sec)); ///计算时、分、秒针的位置

x_min = int(100 * sin(a_min)); y_min = int(100 * cos(a_min));

x_hour= int(70 * sin(a_hour)); y_hour= int(70 * cos(a_hour));

setlinestyle(PS_SOLID, NULL, 10); // 画时针

setcolor(BLUE);

line(300 + x_hour, 240 - y_hour, 300, 240 );

setlinestyle(PS_SOLID, NULL, 5);// 画分针

setcolor(GREEN);

line(300 + x_min, 240 - y_min, 300, 240 );

setlinestyle(PS_SOLID, NULL, 2); // 画秒针

setcolor(WHITE);

line(300 + x_sec, 240 - y_sec, 300, 240 );

}

2.画表盘

void Drawbiaopan()

{

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

setbkcolor(1);

circle(300,240,180);

circle(300,240,185);

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

if(i%5==0)

l=15;

else

l=5;

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

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

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

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

line(x1,y1,x2,y2);

}

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");

}

3.将获取的整数型时间变量转换成字符型

void ch1(int a,int x) //将年转换成字符型并输出{

char b,c,d,e;

b=(char)(a/1000+48);

c=(char)((a%1000)/100+48);

d=(char)((a%100)/10+48);

e=(char)(a%10+48);

outtextxy(x,10,b);

outtextxy(x+10,10,c);

outtextxy(x+20,10,d);

outtextxy(x+30,10,e);

}

void ch2(int a,int x) //其他时间转换成字符型并输出{

char b,c;

b=(char)(a/10+48);

c=(char)(a%10+48);

outtextxy(x,10,b);

outtextxy(x+10,10,c);

}

主函数:

void main()

{

initgraph(640, 480); // 初始化绘图窗口

Drawbiaopan(); // 绘制表盘

setwritemode(R2_XORPEN); // 设置绘图模式SYSTEMTIME ti; // 定义ti保存当前时间

while(!kbhit()) // 按任意键退出钟表程序

{

GetLocalTime(&ti); // 获取当前时间

ch1(ti.wYear,10);

outtextxy(50,10,"年"); //输出时间

ch2(ti.wMonth,65);

outtextxy(85,10,"月");

ch2(ti.wDay,100);

outtextxy(120,10,"日");

ch2(ti.wHour,135);

outtextxy(155,10,":");

ch2(ti.wMinute,165);

outtextxy(185,10,":");

ch2(ti.wSecond,195);

Drawzhizhen(ti.wHour, ti.wMinute, ti.wSecond); // 画表针

Sleep(1000); // 延时1 秒

Drawzhizhen(ti.wHour, ti.wMinute, ti.wSecond); // 画表针

}

closegraph(); // 关闭绘图窗口

}

四调试及测试

使用vc企业版进行反复调试

五设计总结

调试过程出现的问题:

1.Vc++6.0中没有“graphics.h”,安装turboc.

2.0中的函数库EasyX后出现权限问题。

解决办法:安装vc企业版解决权限问题,然后导入graphics.h。

2.无法获取系统时间

解决办法:使用函数GetLocalTime( );并使用#include 声明3.Outtextxy()函数无法显示整数型时间

解决办法:将整数型时间变量转换为字符型再输出

六、心得体会及致谢

由于C语言没有学过图形方面的知识,很多东西都要去查资料。在设计的过程中遇到很多问题,都需要花很多时间去尝试,去解决。这个程序总体来说不复杂,思路也简单,编写的过程中询问了相关知识的专业人士,上网搜集很多前人所作的资料,查询借阅图书馆的相关书籍,对自己在思维方面的帮助很大。

参考文献

1.谭浩强著,C程序设计(第三版),北京:清华大学出版社。

2. Gary J.Bronson著,刘勇译,C++程序开发与设计(第二版)北京:人民邮电出版社

3.朱站立编著,数据结构——使用C语言(第4版)北京:电子工业出版社

4.谭浩强,张基温,唐永炎编著,C语言程序设计教程,北京:高等教育出版社1992

5.谭浩强编著,C程序设计题解与上机指导(第二版),北京:清华大学出版社,1992

6.谭浩强编著,QBASIC语言教程,北京:电子工业出版社,1997

7.谭浩强编著,田数清编著,PASCAL语言程序设计(第二版),北京:高等教育出版社,1998

8.C程序编写组,常用C语言用法速查手册,北京:龙门书局,1995

9.H M Peitel,P J Deitei.C How to progrom,second Edition. 蒋才鹏等译,C程序设计教程,北京:机械工业出版社,2000

10.Herbert Schild著,王曦若,李沛译,ANSIC标准详解,北京:学院出版社,1994

七、答辩记录

八、教师意见

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

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

数字钟设计(带仿真和连接图)

- 数字电子技术课程设计报告 题目:数字钟的设计与制作 : 专业:电气本一班 学号:姓名: 指导教师: 时间: - —

一、设计内容 数字钟设计 … 技术指标: (1)时间以24小时为周期; (2能够显示时,分,秒; (3)有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间; (4)计时过程具有报时功能,当时间到达整点前5秒进行蜂鸣报时; (5)为了保证计时的稳定及准确须由晶体振荡器提供表针时间基准信号. ~ 二、设计时间: 第十五、十六周 三、设计要求: (1)画出设计的电路原理图; $ (2) 选择好元器件及给出参数,在原理图中反应出来; (3)并用仿真软件进行模拟电路工作情况; (4)编写课程报告。

! 摘要 数字钟实际上是一个对标准频率(1Hz)进行计数的计数电路。振荡器产生的时钟信号经过分频器形成秒脉冲信号,秒脉冲信号输入计数器进行计数,并把累计结果以“时”、“分”、“秒”的数字显示出来。秒计数器电路计满60后触发分计数器电路,分计数器电路计满60后触发时计数器电路,当计满24小时后又开始下一轮的循环计数。一般由振荡器、分频器、计数器、译码器、数码显示器等几部分组成。 振荡电路:主要用来产生时间标准信号,因为时钟的精度主要取决于时间标准信号的频率及稳定度,所以采用石英晶体振荡器。 分频器:因为振荡器产生的标准信号频率很高,要是要得到“秒”信号,需一定级数的分频器进行分频。 计数器:有了“秒”信号,则可以根据60秒为1分,24小时为1天的进制,分别设定“时”、“分”、“秒”的计数器,分别为60进制,60进制,24进制计数器,并输出一分,一小时,一天的进位信号。 译码显示:将“时”“分”“秒”显示出来。将计数器输入状态,输入到译码器,产生驱动数码显示器信号,呈现出对应的进位数字字型。 由于计数的起始时间不可能与标准时间(如北京时间)一致,故需要在电路上加一个校时电路可以对分和时进行校时。另外,计时过程要具有报时功能,当时间到达整点前10秒开始,蜂鸣器1秒响1秒停地响5次。 } 为了使数字钟使用方便,在设计上使用了一个变压器和一个整流桥来实现数字钟电能的输入,使得可以方便地直接插入220V的交流电就可以正常地使用了。关键词数字钟振荡计数校正报时

C语言程序设计模拟试题1(附答案)

《C语言程序设计》模拟试卷一 一、单项选择题(每题2分,共30分) 1、下列有关C语言的叙述中错误的是()。 A) C语句必须以分号结束 B) 任何一个C程序中有且只有一个主函数 C) 复合语句在语法上可被看作一条语句 D) C程序中对数据的任何操作都可由运算符实现 2、以下不能定义为用户标识符的是()。 A) MAIN B) _HJ C) 2ong D) LINE1 3、下列符号中用来表示C语言中的回车换行的是()。 A) \r B) \n C) \b D) \t 4、如有如下定义:int a=1,则语句printf(“%d,%d”, a, ++a);的运行结果为()。 A) 1, 1 B) 1, 2 C) 2, 2 D) 2, 1 5、已知ch为字符型变量,下面表达式中正确的是()。 A) ch=’\xff ’B) ch=’\ff ’C) ch=’ ff ’D) ch=” ff ” 6、以下能正确定义一维数组的是()。 A) int a[5]={0,1,2,3,4,5}; B) int a[5]=”012345”; C) char a[ ]=”012345”; D) char a[5]={0,1,2,3,4,5}; 7、以下语句中能正确定义变量并赋初值的是()。 A) char c=65; B) float f=f+1.1; C) double x=12.3e3.6; D) int m=n=2.0; 8、在执行下列程序时输入:1357924,则程序的运行结果为()。 main( ) { int x, y; scanf(“%2d%2d”,&x,&y); printf(“%2d”,x*y); } A) 13 B) 1357 C) 74 D) 741 9、执行下列程序段后输出的结果是()。 x = 9; while (x > 7)

模拟简单计算器实训

苏州市职业大学 课程设计说明书 名称___模拟简单计算器_______________ 2011 年12月26 日至2011年12月31 日共1 周 院系__ 计算机工程系 班级10嵌入式 姓名 系主任____李金祥 教研室主任刘文芝 指导教师徐丽华、刘文芝

目录 一.课程设计的目的与要求 (2) 1.课程设计的目的 (2) 2.课程设计的要求 (2) 二.题目说明 (2) 2.1开发背景 (3) 2.2 开发工具介绍 (4) 2.3 小组成员分工 (4) 三.硬件方案 (5) 3.1硬件设计 (5) 3.2电路原理图 (7) 四.软件设计 (8) 4.1 模块划分 (8) 4.2 模块结构图 (9) 4.3 液晶显示模块 (9) 4. 4 定时器模块 (6) 五.运行结果分析与系统改进 (10) 六.遇到的问题和解决方法 (11) 七.课程设计总结 (11) 八.参考文献 (11)

一.课程设计的目的与要求 1.课程设计的目的 《单片机原理与应用》是一门专业技术基础课,是一门实践性很强的课,单片机课程设计要求将所学的理论知识通过实践加强理解和认识,提高学生们对单片机的认识,同时提高同学们的设计能力和实践动手能力。 同时《单片机原理与应用》也是一门应用性很强的专业课,其理论与实践技能是从事嵌入式专业技术工作的人员所不可少的。本次课程设计选择AW60实验板进行模拟应用设计与开发,要求学生掌握使用 C 语言进行单片机程序设计和调试的方法,提高综合运用所学的理论知识独立分析和解决问题的能力。同时也为了提高学生的学习能力,锻炼同学之间的合作能力。 2.课程设计的要求 在本课程设计过程中要求学生:重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务;按照课程设计的题目要求,独立地完成各项任务,不允许相互抄袭;按时到机房上机,并接受教师的检查。 认真编写课程设计报告。 课程设计可以由2~4名同学合作完成一个课题。全体成员应共同完成选题,确定设计思想,进行功能模块划分,然后由组长为各成员分配任务。 整个设计期间,组长负责协调工作。各小组成员明确自己的任务后,应独立完成设计、编码和调试。 课题设计完成后,小组成员要理解同组其他成员设计的源程序,熟练操作本组设计,各自完成课程设计说明书。 1、对系统进行功能需求分析; 2、设计合理的模块结构和系统框架; 3、编程简练,程序功能齐全,能正确运行; 4、说明书、流程图要清楚; 5、课题完成后必须按要求提交课程设计报告;

数字时钟的设计与仿真

湖北民族学院 课程设计报告 数字时钟设计与仿真 课程:电子线路课程设计 专业:电子信息科学与技术 班级: 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 小时制。

java编写的简单的计算器程序

j a v a编写的简单的计 算器程序 -CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN

计算器 项目内容:编写一个Applet,模仿windows附件所带计算器的功能,可以帮助用户完成计算功能,具体如下图所示。 项目要求:使用图形的方式借助窗口、菜单、按钮等标准界面元素和鼠标操作,来帮助用户方便地向计算机系统发出命令,启动操作,并将系统运行的结果同样以图形的方式显示给用户,这样更加直观和生动; 1.Applet容器中组件的添加与设置,包括面板以及菜单的使用; 2.容器中组件的布局管理; 3.Java核心包中数组、数学计算类的使用; 4.异常的处理; 5.事件处理模型中的三类对象的使用: 1.Event-事件,用户对界面操作在java语言上的描述,以类的形式出现,例如键盘操作对应的事件类是KeyEvent。 2.Event Source-事件源,事件发生的场所,通常就是各个组件,例如按钮Button。 3.Event handler-事件处理者,接收事件对象并对其进行处理的对象。 6.程序中事件处理的流程:

1.计算流程的细化

参考代码: import .*; import .*; import .*; import import import public class Calculator implements ActionListener { #############"); dd(panel); panel1 = new JPanel(); panel2 = new JPanel(); (new BorderLayout()); 键入计算的第一个数字。\n"); ("2. 单击“+”执行加、“-”执行减、“*”执行乘或“/”执行除。\n"); ("3. 键入计算的下一个数字。\n"); ("4. 输入所有剩余的运算符和数字。\n"); ("5. 单击“=”。\n"); aboutCal = new JMenuItem(" 关于计算器(A)"); (this);

数字时钟的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,结果仿真结果反应很慢,后把频率加大,这才在短时间内就能看到全部结果。总之,通过这次对数字时钟的设计与仿真,为以后的电路设计打下良好的基础,一些经验和教训,将成为宝贵的学习财富。

数字电子钟设计说明..

数字电子钟课程设计 一、设计任务与要求 (1)设计一个能显示时、分、秒的数字电子钟,显示时间从00: 00: 00到23: 59: 59; (2)设计的电路包括产生时钟信号,时、分、秒的计时电路和显示电路(3)电 路能实现校正 (5)整点报时 二、单元电路设计与参数计算 1. 振荡器 石英晶体振荡器的特点是振荡频率准确、电路结构简单、频率易调整。它还具有压电效应,在晶体某一方向加一电场,则在与此垂直的方向产生机械振动,有 了机械振动,就会在相应的垂直面上产生电场,从而机械振动和电场互为因果,这种循环过程一直持续到晶体的机械强度限止时,才达到最后稳定。这用压电谐振的频率即为晶体振荡器的固有频率。 2. 分频器 由于振荡器产生的频率很高,要得到秒脉冲需要分频,本实验采用一片74LS90 和两片74LS160实现,得到需要的秒脉冲信号。

3. 计数器 秒脉冲信号经过计数器,分别得到“秒”个位、十位、“分”个位、十位以及 “时”个位、十位的计时。“秒” “分”计数器为六十进制,小时为二十四进制。 (1)六十进制计数 由分频器来的秒脉冲信号,首先送到“秒”计数器进行累加计数,秒计数器应完 成一分钟之内秒数目的累加,并达到 60秒时产生一个进位信号。本作品选用一 片74LS161和一片74LS160采取同步置数的方式组成六十进制的计数器。 (2)二十四进制计数 “24翻1”小时计数器按照“ 00— 01—02,, 22—23— 00—01”规律计数。与生 活中计数规律相同。二十四进制计数同样选用74LS161和74LS160计数芯片。但 清零方式采用的是异步清零方式。 MMgM 加 EHagij Z 1 进位信号 脉冲

C语言程序设计模拟试题A附答案

《C语言程序设计》模拟试卷A 一、单项选择题(每题2分,共20分) 1、下列有关C语言的叙述中错误的就是(D)。 A) C语句必须以分号结束 B) 任何一个C程序中有且只有一个主函数 C) 复合语句在语法上可被瞧作一条语句 D) C程序中对数据的任何操作都可由运算符实现 2、以下不能定义为用户标识符的就是(C)。 A) MAIN B) _HJ C) 2ong D) LINE1 3、以下能正确定义一维数组的就是(C)。 A) int a[5]={0,1,2,3,4,5}; B) int a[5]=”012345”; C) char a[ ]=”012345”;D) char a[5]={0,1,2,3,4,5}; 4、执行下列程序段后输出的结果就是(C)。 x = 9; while (x > 7) { printf(“*”); x- -; } A) **** B) *** C) ** D) * 5、设char str1[10] = “ABCDE”, str2[10] = “xyz”; 则执行语句 printf(“%d”, strlen(strcpy(str1, str2))); 后的输出结果就是(D)。 解析: strcpy(str1,str2); 后,str1[] 里就是"XYZ", Z 后面有字符串结束符 strcpy(str1,str2); 执行后,函数返回的就是str1, 因为str1[] 里就是新值"XYZ", 而 strlen(strcpy(str1,str2)) 就就是strlen(str1的新值),所以得3。 strlen 统计到字符串结束符以前,即,不计入字符串结束符。 A) 9 B) 8 C) 5 D) 3 6、若用数组名作为函数调用的实参,则传递给形参的就是(A)。

简单计算器程序设计

简单计算器程序设计 2010-01-20 16:44 1、编写一个程序实现十进制加减乘除运算 2、在命令提示后输入算式,运算符号不超过四个 3、回车后进行计算并以十进制显示结果 ;能做带括号的运算,输入错误能报警 data segment msg1 db 'Please Input an Expression:',0AH,0DH,'$' msg2 db 'the result is:$' db '(' num db 200 dup (0) temp1 db 200 dup(0),13 temp dw 0 data ends stack segment db 200 dup (?) stack ends code segment assume cs:code,ds:data,ss:stack start: mov ax,data mov ds,ax lea dx,msg1 mov ah,9 int 21h call input again2: lea si,num again1: inc si cmp byte ptr[si],13 je outt cmp byte ptr[si],')' jne again1 call chasc1 call count push ax jmp again2 outt:pop bx mov ah,2

mov dl,10 int 21h mov dl,13 int 21h lea dx,msg2 mov ah,9 int 21h call chaou mov ah,8 int 21h mov ah,4ch int 21h ;************************************** input proc ;输入子程序能纠错 push ax push bx push cx push dx push si push di xor si,si xor bh,bh mov bl,0ffh xor cx,cx top: mov ah,8 int 21h cmp al,8 jne next1 cmp si,0 jne ne1 mov bl,0ffh jmp next6 ne1: mov ah,2 mov dl,8 int 21h mov dl,0 int 21h mov dl,8 int 21h dec si

基于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)

C语言程序设计期末考试试题(含答案)

C语言程序设计 期末考试试题及其答案 一、单项选择题(本大题共20题,每题2 分,共40分) 1、以下不是C语言的特点的是( ) A、C语言简洁、紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件进行操作 D、C语言移植性好 2、以下不正确的C语言标识符是( ) A、ABC B、abc C、a_bc D、ab.c 3、一个C语言程序是由( ) A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是( ) A、有零个或多个输入 B、有零个或多个输出 C、有穷性 D、可行性 5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为( ) A、int B、float C、double D、不确定 6、在C语言中,char型数据在内存中的存储形式是( ) A、补码 B、反码 C、源码 D、ASCII码 7、有如下程序,输入数据:12345M678<cR>后(表示回车),x的值是( ) 。 #include main(){ int x; float y; scanf("%3d%f",&x,&y); } A、12345 B、123 C、45 D、345 8、若有以下定义int a,b; float x,则正确的赋值语句是( ) A、a=1,b=2 B、b++; C、a=b=5 D、b=int(x); 9、以下程序的执行结果是( )

#include { int i=10,j=10; printf("%d,%d\n",++i,j--); } A、11,10 B、9,10 C、11,9 D、10,9 10、巳知字母A的ASCII码是65,以下程序的执行结果是( ) #include main() { char c1='A',c2='Y'; printf("%d,%d\n",c1,c2); A、A,Y B、65,65 C、65,90 D、65,89 11、下列运算符中优先级最高的是( ) A、< B、十 C、% D、!= 12、设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0是( ) 。 A、’x’&&’y’ B、x<=y C、x||y+z&&y-z D、!((x<y)&&!z ||1) 13、判断char型变量cl是否为小写字母的正确表达式为( ) A、’a’<=c1<=f’z’ B、(c1>=a)&&(c1<=z) C、(‘a’>=c1) (‘z’<=c1) D、(c1>=’a’)&&(c1<=’z’) 14、字符串"a"在内存中占据的字节个数为( ) A、0 B、 1 C、 2 D、 3 15、下面有关for循环的正确描述是( ) A、for循环只能用于循环次数已经确定的情况 B、for循环是先执行循环体语句,后判定表达式 C、在for循环中,不能用break语句跳出循环体 D、for循环体语句中,可以包含多条语句,但要用花括号括起来 16、下面程序的运行结果是( ) #include main() {int num=0; while(num<=2) {num++; printf(“%d ,num); } } A、 1 B、 1 2 C、 1 2 3

简单计算器可视化程序编程

简单计算器

一、基本功能描述二进制、八进制、十进制及十六进制数的加、减、乘、除、乘方、取模等简单计算 科学计算函数,包括(反)正弦、(反)余弦、(反)正切、(反)余切、开方、指数等函数运行 以角度、弧度两种方式实现上述部分函数 具备历史计算的记忆功能 对不正确的表达式能指出其错误原因 二、流程图

图1 输入数据子函数流程图 图2 三、 设计步骤 打开Microsoft Visual C++ ,在文件中点击新建,在弹出框内选择MFC AppWizard[exe]工程,输入工程名Calculter 及其所在位置,点击确定,如图3所示。 N 输入数据子函数

图3 新建MFC AppWizard[exe]工程 将弹出MFC AppWizard-step 1对话框,选择基本对话框,点击完成,如图4所示。 图4 基本对话框 这样,MFC AppWizard就建立了一个基于对话窗口的程序框架,如图5所示。 图5 新建的对话框 四、界面设计 1、创建控件 在图5所示的Resoure View选项卡中打开Dialog资源组,双击IDD_CALCULATOR_DIALOG,在右边的窗口中显示出待编辑的对话框。开始摆放控件,包括编辑框和按钮的创建。按钮的创建以“1”为例进行介绍,其他按钮的创建可参照此进行操作。 1)在图5中Controls的“编辑框”按钮上单击鼠标左键,在对话框编辑窗口上合适的位置按下鼠标左键并拖动鼠标画出一个大小合适的编辑框。在编辑框上单击鼠标右键,在弹出的快捷莱单中选择属性选项,此时弹出Edit属性对话框,如图6所示,在该对话框中输入ID属性。 图6 Edit属性对话框 2)在图3中Controls的“Button”按钮上单击鼠标左键,在对话框上的合适的位置上按下鼠标左键并拖动鼠标画出一个大小合适的下压式按钮。在按钮上单击鼠标右键,在弹出的快捷菜单中选择

数字电子钟仿真

数字电子钟课程总结 题目:基于Multisim10.0的多功能电子钟的设计与仿真 学院:电子工程学院 专业:电子信息工程 学 号: 20121271008 姓名:卫丽业 指导教师:蒋品群 2014年 05月

基于Multisim10.0的多功能电子钟的设计与仿真 摘 要: 数字钟是由555定时器电路产生1KHz秒时钟信号, 经过分频器分频后输出稳定的秒脉冲, 作为时间基准。秒计数器满60向分计数 器进位,分计数器满60向时计数器进位, 时计数器以24为一个周 期。计数器的输出经译码器送到数码管显示,可将时、分、秒在相 应位置正确显示。计时出现误差或者调整时间时可以用校时电路 进行时、分的调整,并实现整点报时功能。 关键词: 数字钟 分频器 译码器 校时电路 整点报时电路 定时器 1.概述 主要是通过Multisim10.0软件作为应用平台,设计出电子数字钟逻辑电路,并在这个平台上进行仿真,验证它的工作状态是否正常,以实现要求的功能电路。 1.1 研究目标与任务 设计一个24小时制的数字时钟。要求计时、显示精确到秒、有校时功能,采用中小规模集成电路设计。 1.2 研究步骤 (1)根据要求,设计出比较合理的方案,选取合适的硬件器件,熟悉各个器件的性能; (2)通过Multisim10.0软件进行仿真和调试; (6)实验总结。 2.总体设计和电路框图 2.1 设计思路 1).由秒时钟信号发生器、计时电路、校时电路和整点报时电路构成。 2).秒时钟信号发生器可由555定时器构成。 3).计时电路中采用两个60进制计数器分别完成秒计时和分计时;24进制计数器完成时计时;采用译码器将计数器的输出译码后送七段数码管显示。 4).校时电路采用开关控制时、分计数器的时钟信号为校时脉冲以完成校时。 2.2 电路框图

数字时钟的multisim设计与仿真.doc

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

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

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

C语言程序设计模拟试题2(附答案)

《C语言程序设计》模拟试卷二 一、填空题。(每空2分,共30分) 1.设有变量说明语句 int x=1,y=2; 则执行下述printf语句的输出结果是___1.000000___ _____。 printf("%f\n",1.0+x/y); 2.执行下述程序 #include main() { int x,y; scanf("%2d%*2s%1d",&x,&y); printf("%d\n",x+y); } 若从键盘输入 12345671 则程序的输出结果是__17______。 3.以下程序的功能是:从键盘上输入若干名学生的成绩(百分制,可带小数,以输入负数或0为结束标志),统计并输出最高成绩和最低成绩。请填空。 #include main() {

float x,amax,amin; scanf("%f",&x); amax=x; amin=x; while ( X>0&&X<=100 ) { if (x>amax) amax=x; else if (x

_k++ _________; d=1.0/(k*(k+1)); } while (k<=n); printf("%f\n",s); 5.执行下述程序的输出结果是_-3 -4 0 4 4 3___ ____。 #inclued main() { int a[6],i; for (i=0;i<6;i++) { a[i]=9*(i-2+4*(i>3))%5; printf("%3d",a[i]); } printf("\n"); } 6.执行下述程序时的输出结果是____6_____ ________。 #include main() { int a[]={2,4,6,},*ptr=&a[0],x=8,y,z; for (y=0;y<3;y++) z=(*(ptr+y)

简单的计算器模拟程序的设计和实现

简单的计算器模拟程序的设计和实现1.问题描述 对任意给定的正确四则运算表达式,程序计算其结果值并输出。程序无需查错功能,假定所输入的都是正确的四则运算表达式,并且表达式中运算分量均为无正负号整数,运算符为 +、-、*、/,表达式以字符 "=" 结束。程序应有操作提示、输入和输出,界面追求友好,最好是菜单式的界面。 2.设计说明 2.1简要的分析 根据要求,要先输入包含有+,-,*,/的运算符的表达式,然后经过计算得到正确的答案。从键盘中输入的是ASCII码,因此要将其转换为十进制的数据然后才能进行计算。如果输入混合表达式,要将中缀式先变化成后缀式,然后再进行计算。 2.2概要分析 2.2.1 定义的数据段 用于定义一些中间变量,并将显示在试验界面上,以及提示信息。data segment stri db 50 dup(0) exp db 30 dup(0) track db 30 dup(0) instr db 100 dup(0) msg0 db 'please input your formular:',0dh,0ah,'$' msg1 db 0dh,0ah,'wrong input','$' msg2 db 0dh,0ah,') and ( does not match','$' msg3 db 0dh,0ah,'div zero error','$' msg4 db 0dh,0ah,'sorry,minus data appears','$' msg5 db 0dh,0ah,'any key to continue,esc to exit','$' data ends

数字时钟的Multisim设计与仿真

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

二、子模块具体设计 1.由555定时器构成的1Hz 秒时钟信号发生器。 由下面的电路图产生1Hz 的脉冲信号作为总电路的初输入时钟脉冲 图2.时钟信号发生电路 2. 分、秒计时电路及显示部分 -VC K ? OTT - ? THR ? T£L1 - O0&I H L : ? r GND ,,, 48kQ R2 48kQ —10uF 士伯 DtiF ....... ■ ■ j - ■ ■ >100Q

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

数据结构课程设计 模拟计算器程序

数据结构课程设计 题目名称:模拟计算器程序 计算机科学与技术学院 课程设计任务书 一、设计任务 设计一个模拟计算器的程序 二、设计要求 1、要求对包含加、减、乘、除、括号运算符及SQR和ABS函数的任意整型表达式进 行求解

2、程序基本功能要求实现完整,并有简单的验证。 3、设计报告要求格式规范,符合学校课程设计报告要求。 4、报告中流程图要求描述规范,算法设计清楚正确。 三、设计期限 2018年3月5日到2018年3月30日 前言 利用本学期所学的《数据结构》课程,运用相关知识,查阅相关资料,编写C语言程序,设计一个简单计算器,要求编写的简单计算器能够模拟windows系统的计算器,用户能够用键盘输入相关数据,要求对包含加、减、乘、除、括号运算符及SQR和ABS函数的任意整型表达式进行求解,并且在程序运行过程中能够正常的退出程序。

这个程序实际上就是对一个表达式进行计算。而一个算术表达式中包含各种运算符,每个运算符的等级可能会不同,这就成了本程序需要解决的一个主要的问题之一了。另外计算器中需要有各种数学函数,比如:abs sqrt sin cos tan等,如何对这些函数进行处理,也是本程序能成功的一个关键。还有一个问题就是如何处理操作符和操作数之间的关系也是一个要点。例如:1+2*(3-2/1),经过怎么样的变换和处理能得出结果5。数据的输入这里应该要用字符,然后通过字符和整形之间的关系进行转换即可,这样处理的话,就方便很多了。 在计算器程序运行中,输入数据时如果遇到输入错误的情况,能够能过键盘上的退格键进行删除,并且重新输入正确的数据。在数据输入完成后,如果需要放弃本次计算操作,可以利用程序中设置好的按键进行清零,并为下一次运算作准备。 本课程设计主要解决的是传统计算器中,不能对表达式进行运算的问题,通过制作该计算器模拟程序,可以做到快速的求解表达式的值,并且能够判定用户输入的表达式是否合法。该模拟计算器的核心部分就在用户输入的中缀表达式的转化,程序中用到了“栈”的后进先出的基本性质。 目录 第1章需求分析‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 5 1.1系统设计流程图‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 5 1.2 主要功能表‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥‥ 6

基于FPGA的数字时钟的设计1

基于FPGA 的数字时钟的设计 课 题: 基于FPGA 的数字时钟的设计 学 院: 电气信息工程学院 专 业 : 测量控制与仪器 班 级 : 08测控(2)班 姓 名 : 潘 志 东 学 号 : 08314239 合作者姓名: 颜志林 2010 年 12 月 12 日

综述 近年来随着数字技术的迅速发展,各种中、大规模集成电路在数字系统、控制系统、信号处理等方面都得到了广泛的应用。这就迫切要求理工科大学生熟悉和掌握常用中、大规模集成电路功能及其在实际中的应用方法,除通过实验教学培养数字电路的基本实验方法、分析问题和故障检查方法以及双踪示波器等常用仪器使用方法等基本电路的基本实验技能外,还必须培养大学生工程设计和组织实验能力。 本次课程设计的目的在于培养学生对基本电路的应用和掌握,使学生在实验原理的指导下,初步具备基本电路的分析和设计能力,并掌握其应用方法;自行拟定实验步骤,检查和排除故障、分析和处理实验结果及撰写实验报告的能力。综合实验的设计目的是培养学生初步掌握小型数字系统的设计能力,包括选择设计方案,进行电路设计、安装、调试等环节,运用所学知识进行工程设计、提高实验技能的实践。数字电子钟是一种计时装置,它具有时、分、秒计时功能和显示时间功能;具有整点报时功能。 本次设计我查阅了大量的文献资料,学到了很多关于数字电路方面的知识,并且更加巩固和掌握了课堂上所学的课本知识,使自己对数字电子技术有了更进一步的认识和了解。

1、课题要求 1.1课程设计的性质与任务 本课程是电子与信息类专业的专业的专业基础必修课——“数字电路”的配套实验课程。目的在于培养学生的理论联系实际,分析和解决问题的能力。通过本课程设计,使学生在理论设计、计算机仿真、指标调测、故障排除等方面得到进一步的训练,加强学生的实践能力。学生通过设计、仿真、调试、撰写设计报告等过程,培养学生的动手能力和严谨的工作作风。 1.2课程设计的基本技术要求 1)根据课题要求,复习巩固数字电路有关专业基础知识; 2)掌握数字电路的设计方法,特别是熟悉模块化的设计思想; 3) 掌握QUARTUS-2软件的使用方法; 4) 熟练掌握EDA工具的使用,特别是原理图输入,波形仿真,能对仿真波形进行分析; 5) 具备EDA技术基础,能够熟练使用VHDL语言进行编程,掌握层次化设计方法; 6) 掌握多功能数字钟的工作原理,学会不同进制计数器及时钟控制电路的设计方法; 7) 能根据设计要求对设计电路进行仿真和测试; 8) 掌握将所设计软件下载到FPGA芯片的下载步骤等等。 9) 将硬件与软件连接起来,调试电路的功能。 1.3课程设计的功能要求 基本功能:能进行正常的时、分、秒计时功能,分别由6个数码管显示24小时,60分钟,60秒钟的计数器显示。 附加功能:1)能利用硬件部分按键实现“校时”“校分”“清零”功能; 2)能利用蜂鸣器做整点报时:当计时到达59’59’’时开始报时,鸣叫时间1秒钟; 3)定时闹铃:本设计中设置的是在七点时进行闹钟功能,鸣叫过程中,能够进行中断闹铃工作。 本人工作:负责软件的编程与波形的仿真分析。 2、方案设计与分析

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