搜档网
当前位置:搜档网 › 4位数加法计算器.

4位数加法计算器.

4位数加法计算器.
4位数加法计算器.

安庆师范大学

2014级单片机原理与应用

课程设计报告

课题名称4位数加法计算器的设计

姓名吴昊天、伍浩然、王鹏、万吉

学号070814018、070814008、070814005、070814001 院、系、部计算机学院物联网工程

专业物联网工程

指导教师汪文明

2016年 6月 6日

一、设计任务及要求:

设计任务:

1、通过4*4矩阵键盘输入数字及运算符;

2、可以进行4位十进制数以内的加法预算。如果计算结果超出四位数,则全部显示“E”;

3、可以进行加减乘除所有运算;

4、添加其他功能。

要求:

首先进行预设计,根据设计的任务要求,先确定设计的硬件电路方案,然后进行硬件电路的初步设计,在计算机上画出硬件电路图,在老师的指导下进行修正硬件电路图,并对所涉及的参数进行计算。

在确定硬件的基础上,要进行软件的总体设计,包括软件主流程的设计以及各子程序的设计,同时,要写出详细的操作说明,如时间的调整方法,显示窗口的时间切换等,以配合软件的设计。

然后进入硬件的调试及编程工作,设计组内的同学可根据任务分工,有调试硬件各功能模块的,如键盘子程序、显示子程序等,有进行整体程序的编制的,各模块的编制过程中要注意资源的衔接。

最后进入联机调试,联机调试的原则也要采用分步走的原则,各个功能模块要逐步套入,通过一个再增加一项功能,从而达到设计的总体要求,不要上来编制个最大的程序,最后无法查找错误。

最后写出设计报告。

指导教师签名:

2016年 6 月 6 日

三、成绩

指导教师签名:

年月日

目录

一、绪言 (1)

二、系统设计 (1)

2.1设计任务 (1)

2.2方案比较与论证 (1)

2.2.1系统整体流程图 (2)

2.2.2单片机的选择方案论证 (2)

2.2.3键盘选择方案论证 (2)

2.2.4显示模块的选择方案论证 (2)

2.2.5蜂鸣器的选择方案论证 (2)

三、硬件电路设计 (2)

3.1计算器的控制电路图 (2)

3.2矩阵键盘的设计 (3)

3.3 LCD1602显示电路的设计 (3)

3.4蜂鸣器驱动电路的设计 (4)

3.5主要元器件选择 (4)

四、程序流程图 (5)

五、c语言程序设计 (5)

六、计算器的仿真 (19)

6.1 Keil调试 (19)

6.2 Proteus调试 (19)

七、结束语 (20)

八、参考文献 (21)

一、绪 言

近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月异更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。 电子时钟是现代社会中的主要计时工具之一,广泛应用于手机,电脑,汽车等社会生活需要的各个方面,及对时间有要求的场合。本设计采用AT89C52单片机作为主要核心部件,附以上电复位电路,时钟电路及按键调时电路组成。数字钟已成为人们日常生活中: 必不可少的必需品, 广泛用于个人家庭以及车站、 码头、剧场、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。 由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性 能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。

二、系统设计

2.1 设计任务

1、通过4*4矩阵键盘输入数字及运算符;

2、可以进行4位十进制数以内的加法预算。如果计算结果超出四位数,则全部显示“E ”;

3、可以进行加减乘除所有运算;

4、添加其他功能。

2.2 方案比较与论证

2.2.1 系统整体流程图

图1 系统整体流程图

2.2.2 计算器的控制方案论证

用4*4的矩阵键盘组成0-9数字键及加、减、乘、除、等于、清零按键,LCD 屏幕实时显

键盘接口

显示电路

软件控制程序

电源电路

单片机控制电路

示输入的数字和运算符号,每按下一个按键都有蜂鸣器发出的响声。从矩阵键盘输入一个数字,选择运算符,再输入一个数字,然后按下“等于”键,最后的计算结果会呈现在LCD 屏幕上。

2.2.3 单片机的选择方案论证

方案一:采用可编程逻辑期间CPLD 作为控制器。CPLD可以实现各种复杂的逻辑功能、规模大、密度高、体积小、稳定性高、I/O资源丰富、易于进行功能扩展。采用并行的输入输出方式,提高了系统的处理速度,适合作为大规模控制系统的控制核心。但本系统不需要复杂的逻辑功能,对数据的处理速度的要求也不是非常高,且从使用及经济的角度考虑我们放弃了此方案

方案二:采用Atmel公司的AT89C52单片机作为控制器。AT89C52是一个低功耗,高性能的51内核的CMOS 8位单片机,片内含8k空间的可反复擦些1000次的Flash只读存储器,具有256 bytes的随机存取数据存储器(RAM),32个双向I/O口,2个16位可编程定时计数器。

综合考虑,选择方案二,采用Atmel公司的AT89C52单片机作为控制器。

2.2.4 键盘选择方案论证

方案一:采用独立式键盘。由于各键相互独立,每个按键各接一根输入线,通过检测输入线的电平状态可以很容易的判断哪个按键被按下。此种键盘适用于按键较少或操作速度较高的场合。但本题发挥部分要求16个功能键,按键数目较多,这就需要较多的输入口线,而且电路结构复杂。故此方案不可取。

方案二:采用矩阵键盘。它由行和列组成,按键位于行列的交叉点上,行线信号和列线信号分别通过两个接口和CPU相连,通过行列扫描法判定按键的位置,此方案适用于按键较多的场合。

通过对4位数加法计算器题目的分析,采用4*4行列式键盘。

2.2.5 显示模块的选择方案论证

方案一:采用带字库LCD模块显示。能显示复杂的信息,具有质量轻,体积小,功耗低,指令功能强,接口简单,可靠性强等优点,显示内容丰富,图形美观,易于人机交流。但是价格昂贵。

方案二:采用LED数码管显示。数码管能显示数字和符号,但是占用I/O口资源较多,对于简单的电路可以选用此方案。

计算器,需要较为强大的人机交互界面,故选用方案一,显示所需信息。

2.2.6 蜂鸣器的选择方案论证

方案一:采用有源蜂鸣器。有源蜂鸣器内部带震荡源,只要一通电就会发出响声。

方案二:采用无源蜂鸣器。无源蜂鸣器内部不带震荡源,所以用直流信号无法令其鸣叫,必须用2K~5K的方波去驱动它。

综合考虑,为了程序控制的方便,选用了方案一。

三硬件电路设计

3.1 计算器控制电路图

图2 计算器控制线路图

3.2 矩阵式键盘的设计

键盘电路如图3所示。设计数字键0~9 的键号依次为0~9,运算符号分别为“+”、“-”、“*”、“/”,以及“=”和清零“C”,通过逐行扫描函数来确定按下的键位。

图3 键盘电路

3.3 LCD1602显示电路的设计

LCD1602液晶屏采用LM016L型号元件,其电路如图3所示。

图4 LCD1602显示电路

3.4 蜂鸣器驱动电路的设计

蜂鸣器的驱动采用PNP三极管来驱动,低电平有效。其电路如图5 所示。

图5 蜂鸣器电路图3.5 主要元器件选择

主要元器件选用型号和数量如表1所示:

序号材料名称

规格型

元件代

1 单片机AT89C5

2 1 U1

2 晶振12MHz 1 X1

3 三级管MJE350 1 Q1

4 键盘4*4 16

5 LCD1602 LM016L 1 LCD1602

6 蜂鸣器 1 BEEP

7 电阻1k 1 R1

表1 主要元器件清单

四、程序流程图

五 C语言程序设计

#include

#include

#define uchar unsigned char

#define uint unsigned int

sbit lcden=P2^1; //定义E口

sbit lcdrs=P2^0; //定义RS口

sbit beep=P2^2; //定义蜂鸣器

uchar code table[]={'0','1','2','3','4','5','6', //创建键位数组,数字,运算符号,等于号,清零(小数点)'7','8','9','+','-','*','/','=','.'};

uchar key,flag1,js,k1,k2;

uchar a[20],b[20];

float jieguo=0;

void delay(uchar z) //延迟函数

{

uchar x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void write_cmd(uchar cmd) //写命令函数

{

lcdrs=0;

P1=cmd;

delay(5);

lcden=1;

delay(4);

lcden=0;

}

void write_data(uchar date) //写数据函数

{

lcdrs=1;

P1=date;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

void init() //LCD初始化函数

{

lcden=0;

write_cmd(0x38); //设置16x2显示,8位数据接口

write_cmd(0x0c); //设置开显示,不显示光标(关显示是0x08)write_cmd(0x06); //写一个字符后地址指针加1

write_cmd(0x01); //清屏

}

void keyscan()

{

uchar temp,uu=0xf7;

uint i;

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

{

uu=_crol_(uu,1); //左移

P3=uu;

temp=P3;

temp=temp&0x0f;

if(temp!=0x0f)

{

delay(10);

temp=P3;

temp=temp&0x0f;

if(temp!=0x0f)

{

temp=P3;

switch(temp)

{

case 0xee:key=1;beep=0;delay(200);beep=1;break; //延迟200响声

case 0xde:key=2;beep=0;delay(200);beep=1;break;

case 0xbe:key=3;beep=0;delay(200);beep=1;break;

case 0x7e:key=10;beep=0;delay(200);beep=1;break;

case 0xed:key=4;beep=0;delay(200);beep=1;break;

case 0xdd:key=5;beep=0;delay(200);beep=1;break;

case 0xbd:key=6;beep=0;delay(200);beep=1;break;

case 0x7d:key=11;beep=0;delay(200);beep=1;break;

case 0xeb:key=7;beep=0;delay(200);beep=1;break;

case 0xdb:key=8;beep=0;delay(200);beep=1;break;

case 0xbb:key=9;beep=0;delay(200);beep=1;break;

case 0x7b:key=12;beep=0;delay(200);beep=1;break;

case 0xe7:key=0;beep=0;delay(200);beep=1;break;

case 0xd7:key=15;beep=0;delay(200);beep=1;

beep=0;delay(200);beep=1;beep=0;delay(200);beep=1;break; //清零长响声

case 0xb7:key=13;beep=0;delay(200);beep=1;break;

case 0x77:key=14;beep=0;delay(180);beep=1;delay(100);

beep=0;delay(180);beep=1;break; //等于按键两声短响,中间较短间隔

}

while(temp!=0x0f)

{

temp=P3;

temp=temp&0x0f;

}

flag1=1;

}

}

}

}

void jscl() //计算显示函数

{

uchar i,j,n;

float s,temp2;

long int s1,s2,a1,b1,c1,temp1;

a1=1;

b1=1;

s1=0;

s2=0;

s=0;

if(k2!=0)

{

for(j=0;j

{

for(i=0;i

a1=a1*10;

s1=s1+a[j]*a1;

a1=1;

}

for(j=k1+1;j

{

for(i=0;i

b1=b1*10;

s2=s2+a[j]*b1;

b1=1;

}

if(js==10) //判断运算符号

{

s=s1+s2;

}

if(js==11)

{

s=s1-s2;

}

if(js==12)

{

s=s1*s2;

}

if(js==13)

{

s=(s1*0.1)/(s2*0.1);

}

jieguo=s;

}

else

s=jieguo;

if(jieguo>9999||s>=9999)

{

write_data('E');

else //运算结果小数的处理{

c1=(long int)(s*1000)%10;

if(c1>=5)

s=s+0.01;

temp1=(long int)(s);

temp2=s-temp1;

n=0;

while(temp1)

{

b[n]=temp1%10;

temp1=temp1/10;

n++;

}

b[n]=temp2*10;

b[n+1]=(uchar)(temp2*100)%10;

for(i=n;i>0;i--)

{

write_data(table[b[i-1]]);

}

if(jieguo<1)

{

write_data(table[0]);

write_data(table[15]);

write_data(table[b[n]]);

write_data(table[b[n+1]]);

}

else

{

write_data(table[15]);

write_data(table[b[n]]);

write_data(table[b[n+1]]);

}

}

}

void main()

{

uchar i,j;

init();

write_cmd(0x80); //将液晶指针定位在第一行第一个单元

key=15;

i=0;

flag1=0;

while(1)

keyscan();

if(flag1==1)

{

if(key==15) //判断为清零操作

{

write_cmd(0x01);

i=0;

for(j=0;j<20;j++)

{

a[j]=0;

b[j]=0;

}

k1=0;

k2=0;

}

else if(key<10) //判断为数字

{

write_data(table[key]);

a[i]=key;

i++;

}

else if(key<14) //判断为运算符号

{

write_data(table[key]);

k1=i-1;

js=key;

}

else //判断为等于操作

{

write_data(table[key]);

if(i==0)

k2=0;

else

k2=i-1;

write_cmd(0x80+0x40);

jscl();

}

flag1=0;

}

}

}

6.计算器仿真

在完成了计算器硬件设计和软件设计以后,便进入系统的调试阶段。系统的调试步骤和方法基本上是相同的,但具体细节和所采用的开发系统以及用户系统选用的单片机型号有关,如可选用Keil软件进行软件调试,用Proteus软件完成硬件调试。

6.1 Keil调试

6.2 Proteus调试

7 结束语

通过这次课程设计,使我们得到了一次用专业知识和专业技能去分析问题、解决问题全面系统的锻炼。使我们在单片机的基本原理、单片机应用系统开发过程,以及用C语言设计程序的思路技巧等方面都能向前迈了一大步,为我们日后成为合格的应用型人才打下良好的基础。

8 参考文献

1.期刊类

【格式】[序号]作者.篇名[J].刊名,出版年份,卷号(期号):起止页码.

[1] 王海粟.浅议会计信息披露模式[J].财政研究,2004,21(1):56-58.

[2] 夏鲁惠.高等学校毕业论文教学情况调研报告[J].高等理科教育,2004(1):46-52.

[3] Heider, E.R.& D.C.Oliver. The structure of color space in naming and memory of two languages [J]. Foreign Language Teaching and Research, 1999, (3): 62 – 67.

2.专著类

【格式】[序号]作者.书名[M].出版地:出版社,出版年份:起止页码.

【举例】[4] 葛家澍,林志军.现代西方财务会计理论[M].厦门:厦门大学出版社,2001:42.

[5] Gill, R. Mastering English Literature [M]. London: Macmillan, 1985: 42-45.

3.报纸类

【格式】[序号]作者.篇名[N].报纸名,出版日期(版次).

【举例】

[6] 李大伦.经济全球化的重要性[N]. 光明日报,1998-12-27(3).

[7] French, W. Between Silences: A Voice from China[N]. Atlantic Weekly, 1987-8-15(33).

4.论文集

【格式】[序号]作者.篇名[C].出版地:出版者,出版年份:起始页码.

【举例】

[8] 伍蠡甫.西方文论选[C]. 上海:上海译文出版社,1979:12-17.

[9] Spivak,G. “Can the Subaltern Speak?”[A]. In C.Nelson & L. Grossberg(eds.). Victory in Limbo: Imigism [C]. Urbana: University of Illinois Press, 1988, pp.271-313.

[10] Almarza, G.G. Student foreign language teacher’s knowledge growth [A]. In

D.Freeman and J.C.Richards (eds.). Teacher Learning in Language Teaching [C]. New York: Cambridge University Press. 1996. pp.50-78.

5.学位论文

【格式】[序号]作者.篇名[D].出版地:保存者,出版年份:起始页码.

【举例】

[11] 张筑生.微分半动力系统的不变集[D].北京:北京大学数学系数学研究所, 1983:1-7.

【格式】[序号]作者.篇名[R].出版地:出版者,出版年份:起始页码.

【举例】

[12] 冯西桥.核反应堆压力管道与压力容器的LBB分析[R].北京:清华大学核能技术设计研究院, 1997:9-10.

7.条例

【格式】[序号]颁布单位.条例名称.发布日期

【举例】[15] 中华人民共和国科学技术委员会.科学技术期刊管理办法[Z].1991—06—05 8.译著

【格式】[序号]原著作者. 书名[M].译者,译.出版地:出版社,出版年份:起止页码.

说明:

1 正文部分采用宋体小四,1.5倍行距。

2 一级标题黑体小三号加黑,二级标题黑体四号加黑,三级标题黑体小四号加黑。全部标题均不居中,段前段后都为0行,行间距为1.5倍。

3 参考文献不少于10个。

4 图和表分别采用通篇编号方式,必须有标题。图的标题在图下方,表的标题在表上方。

同步二进制加法计数器

同步二进制加法计数器 F0302011 5030209303 刘冉 计数器是用来累计时钟脉冲(CP脉冲)个数的时序逻辑部件。它是数字系统中用途最广泛的基本部件之一,几乎在各种数字系统中都有计数器。它不仅可以计数,还可以对CP 脉冲分频,以及构成时间分配器或时序发生器,对数字系统进行定时、程序控制操作。此外,还能用它执行数字运算。 1、计数器的特点: 在数字电路中,把记忆输入CP脉冲个数的操作叫做计数,能实现计数状态的电子电路称为计数器。特点为(1)该电路一般为Moore型电路,输入端只有CP信号。 (2)从电路组成看,其主要组成单元是时钟触发器。 2、计数器分类 1) 按CP脉冲输入方式,计数器分为同步计数器和异步计数器两种。 同步计数器:计数脉冲引到所有触发器的时钟脉冲输入端,使应翻转的触发器在外接的CP脉冲作用下同时翻转。 异步计数器:计数脉冲并不引到所有触发器的时钟脉冲输入端,有的触发器的时钟脉冲输入端是其它触发器的输出,因此,触发器不是同时动作。 2) 按计数增减趋势,计数器分为加法计数器、减法计数器和可逆计数器三种。 加法计数器:计数器在CP脉冲作用下进行累加计数(每来一个CP脉冲,计数器加1)。 3) 按数制分为二进制计数器和非二进制计数器两类。 二进制计数器:按二进制规律计数。最常用的有四位二进制计数器,计数范围从0000到1111。 异步加法的缺点是运算速度慢,但是其电路比较简单,因此对运算速度要求不高的设备中,仍不失为一种可取的全加器。同步加法优点是速度快,虽然只比异步加法快千分之一甚至几千分之一秒,但对于计数器来讲,却是十分重要的。所以在这个高科技现代社会中,同步二进制计数器应用十分广泛。 下图为三位二进制加法计数器的电路图。 图1 三位二进制计数器 图示电路为对时钟信号计数的三位二进制加法计数器或称为八进制加法计数器。 该电路的经典分析过程: 1.根据电路写出输出方程、驱动方程和状态方程 2. 求出状态图 3.检查电路能否自启动 4.文字叙述逻辑功能 解:

汇编语言实现十进制加减计算器

课程设计 题目十进制数加减计算器学院计算机科学与技术 专业计算机科学与技术 班级计算机0808班 姓名何爽 指导教师袁小玲 2010 年12 月31 日

课程设计任务书 学生姓名:何爽专业班级:计算机0808班 指导教师:袁小玲工作单位:计算机科学与技术学院 题目: 十进制数加减计算器的设计 初始条件: 理论:学完“汇编语言程序设计”、“课程计算机概论”、“高级语言程序设计”和“数字逻辑”。 实践:计算机学院科学系实验中心提供计算机和软件平台。如果自己有计算机可以在其上进行设计。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求) (1)十进制数加减计算器的设计。 (2)程序应有操作提示、输入和输出,界面追求友好,最好是菜单式的界面。 (3)设计若干用例(测试数据),上机测试程序并分析(评价)所设计的程序。 (4)设计报告格式按附件要求书写。课程设计报告书正文的内容应包括: 在正文第一行写课程设计题目; 1.需求说明(要求、功能简述)或问题描述; 2.设计说明(简要的分析与概要设计); 3.详细的算法描述; 4.源程序与执行结果(含测试方法和测试结果); 5.使用说明; 6.总结,包括设计心得(设计的特点、不足、收获与体会)和展望(该 程序进一步改进扩展的设想)。 时间安排: 设计时间一周:周1:查阅相关资料。 周2:系统分析,设计。 周3~4:编程并上机调试。 周5:撰写课程设计报告。 设计验收安排:20周星期五8:00起到计算机学院科学系实验中心进行上机验收。 设计报告书收取时间:20周的星期五下午5:00之前。 指导教师签名: 2010年12月31日 系主任(或责任教师)签名: 2010年12月31日

简易计算器的设计与实现

沈阳航空航天大学 课程设计报告 课程设计名称:单片机系统综合课程设计课程设计题目:简易计算器的设计与实现 院(系): 专业: 班级: 学号: 姓名: 指导教师: 完成日期:

沈阳航空航天大学课程设计报告 目录 第1章总体设计方案 (1) 1.1设计内容 (1) 1.2设计原理 (1) 1.3设计思路 (2) 1.4实验环境 (2) 第2章详细设计方案 (3) 2.1硬件电路设计 (3) 2.2主程序设计 (7) 2.2功能模块的设计与实现 (8) 第3章结果测试及分析 (11) 3.1结果测试 (11) 3.2结果分析 (11) 参考文献 (12) 附录1 元件清单 (13) 附录2 总电路图 (14) 附录3 程序代码 (15)

第1章总体设计方案 1.1 设计内容 本设计是基于51系列的单片机进行的十进制计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除1位无符号数字的简单四则运算,并在6位8段数码管上显示相应的结果。 设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的8751单片机,输入采用4×4矩阵键盘。显示采用6位8段共阳极数码管动态显示。软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。编程语言方面从程序总体设计以及高效性和功能性对C语言和汇编语言进行比较分析,最终选用汇编语言进行编程,并用protel99se涉及硬件电路。 1.2 设计原理 在该课程设计中,主要用到一个8751芯片和串接的共阳数码管,和一组阵列式键盘。作为该设计的主要部分,下面将对它们的原理及功能做详细介绍和说明。 1)提出方案 以8751为核心,和数码管以及键盘用实验箱上已有的器件实现计算器的功能。 2) 总体方案实现 (1)要解决键值得读入。先向键盘的全部列线送低电平,在检测键盘的行线,如果有一行为低电平,说明可能有按键按下,则程序转入抖动检测---就是延时10ms再读键盘的行线,如读得的数据与第一次的相同,说明真的有按键按下,程序转入确认哪一键按下的程序,该程序是依次向键盘的列线送低电平,然后读键盘的行线,如果读的值与第一次相同就停止读,此时就会的到键盘的行码与列码

四位二进制加法计数器课程设计

成绩评定表 学生姓名郝晓鹏班级学号1103060129 专业通信工程课程设计题目四位二进制加法 计数器 评语 组长签字: 成绩 日期20 年月日

课程设计任务书 学院信息科学与工程学院专业通信工程 学生姓名郝晓鹏班级学号1103060129 课程设计题目四位二进制加法计数(缺0010 0011 1101 1110) 实践教学要求与任务: 1、了解数字系统设计方法。 2、熟悉VHDL语言及其仿真环境、下载方法。 3、熟悉Multisim仿真环境。 4、设计实现四位二进制加计数(缺0010 0011 1101 1110) 工作计划与进度安排: 第一周:熟悉Multisim及QuartusII环境,练习数字系统设计方法。包括采用触发器设计和超高速硬件描述语言设计,体会自上而下、自下而上设计 方法的优缺点 第二周:1.在QuartusII环境中仿真实现四位二进制加计数(缺0100 0101 1001 1010 )。 2.在Multisim环境中仿真实现四位二进制加计数,缺(0100 0101 1001 1010),并通过虚拟仪器验证其正确性。 指导教师: 201 年月日专业负责人: 201 年月日 学院教学副院长: 201 年月日

摘要 本文采用在MAXPLUSⅡ环境中用VHDL语言实现四位二进制加法计数(缺0010 0011 1101 1110),在仿真器上显示结果波形,并下载到目标芯片上,在实验箱上观察输出结果。在Multisim环境中仿真实现四位二进制加法计数器(缺0010 0011 1101 1110),并通过虚拟仪器验证其正确性。 关键词:MAXPLUSⅡ环境;VHDL语言;四位二进制加计数;Multisim环境

十进制4位加法计数器设计

洛阳理工学院 十 进 制 4 位 加 法 计 数 器 系别:电气工程与自动化系 姓名:李奇杰学号:B10041016

十进制4位加法计数器设计 设计要求: 设计一个十进制4位加法计数器设计 设计目的: 1.掌握EDA设计流程 2.熟练VHDL语法 3.理解层次化设计的内在含义和实现 设计原理 通过数电知识了解到十进制异步加法器的逻辑电路图如下 Q3 则可以通过对JK触发器以及与门的例化连接实现十进制异步加法器的设计 设计内容 JK JK触发器的VHDL文本描述实现: --JK触发器描述 library ieee; use ieee.std_logic_1164.all; entity jk_ff is

port( j,k,clk: in std_logic; q,qn:out std_logic ); end jk_ff; architecture one of jk_ff is signal q_s: std_logic; begin process(j,k,clk) begin if clk'event and clk='0' then if j='0' and k='0' then q_s <= q_s; elsif j='0' and k='1' then q_s <= '0'; elsif j='1' and k='0' then q_s <= '1'; elsif j='1' and k='1' then q_s <= not q_s; end if; end if; end process; q <= q_s; qn <= not q_s; end one; 元件门级电路: 与门VHDL文本描述实现: --与门描述library ieee; use ieee.std_logic_1164.all;

4位数加法计算器

安庆师范大学2014级单片机原理与应用 课程设计报告 课题名称4位数加法计算器的设计姓名吴昊天、伍浩然、王鹏、万吉 学号070814018 070814008 070814005 070814001 院、系、部计算机学院物联网工程 专业物联网工程 指导教师汪文明 2016 年6月6日

一、设计任务及要求:设计任务: 1、通过4*4矩阵键盘输入数字及运算符; 2、可以进行4位十进制数以内的加法预算。如果计算结果超出四位数,则全部显示 “ E ; 3、可以进行加减乘除所有运算; 4、添加其他功能。 要求: 首先进行预设计,根据设计的任务要求,先确定设计的硬件电路方案,然后进行硬件电路的初步设计,在计算机上画出硬件电路图,在老师的指导下进行修正硬件电路图,并对所涉及的参数进行计算。 在确定硬件的基础上,要进行软件的总体设计,包括软件主流程的设计以及各子程序的设计,同时,要写出详细的操作说明,如时间的调整方法,显示窗口的时间切换等,以配合软件的设计。 然后进入硬件的调试及编程工作,设计组内的同学可根据任务分工,有调试硬件各功能模块的,如键盘子程序、显示子程序等,有进行整体程序的编制的,各模块的编制过程中要注意资源的衔接。 最后进入联机调试,联机调试的原则也要采用分步走的原则,各个功能模块要逐步套入,通过一个再增加一项功能,从而达到设计的总体要求,不要上来编制个最大的程序,最后无法查找错误。 最后写出设计报告。 指导教师签名: 2016年6月6日 、成绩 指导教师签名: 年月曰 一、绪言 (1)

二、系统设计 (1) 2.1设计任务 (1) 2.2方案比较与论证 (1) 2.2.1系统整体流程图 (2) 222单片机的选择方案论证 (2) 2.2.3键盘选择方案论证 (2) 2.2.4显示模块的选择方案论证 (2) 2.2.5蜂鸣器的选择方案论证 (2) 三、硬件电路设计 (2) 3.1计算器的控制电路图 (2) 3.2矩阵键盘的设计................................................ (3) 3.3 LCD1602显示电路的设计 (3) 3.4蜂鸣器驱动电路的设计 (4) 3.5主要元器件选择 (4) 四、程序流程图 (5) 五、c语言程序设计 (5) 六、计算器的仿真 (19) 6.1Keil 调试 (19) 6.2Proteus 调试 (19) 七、结束语 (20) 八、参考文献 (21) 一、绪言 近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日

MFC做的一个简单的计算器

目录 一.设计题目。 (1) 二.设计目的和内容。 (1) 三.基本功能描述。 (2) 四.设计思路。 (2) 五.软件设计:设计步骤、界面设计、关键功能的实现。 (3) a)设计步骤。 (3) b)界面设计。 (4) c)关键功能的实现。 (5) 六.附录。 (8) 一.设计题目。 小型计算器程序的编写. 二.设计目的和内容。 【设计目的】 1学习Visual C++的MFC开发程序的步骤。 2综合运用所学的类、继承和多态的知识。 3进一步掌握程序的调试方法。 【设计内容】 1利用MFC的向导,创建基于对话框的应用程序,添加按钮、编辑框等控件; 第1页

2实现算术加、减、乘、除等运算; 3选做:三角函数的运算、对数运算、指数运算、进制转换等。 三.基本功能描述。 具备整型数据、浮点型数据的算术(加、减、乘、除)运算功能。依次输入第一个运算数、运算符(+,-,*,/)、第二个运算数,然后输出结果,按‘C E’键清屏。 四.设计思路。 a)首先考虑对所有按键分为两类,数字类和符号类。0,1,2,3,4,5,6,7,8,9为 数字类,+,-,*,/为符号类。数字在计算过程中最多需要保存两个,所以定义了两个double型变量num1和num2来进行存储,符号需要一个char型变量cal来存储。 b)为显示数字的编辑框设立一个double型的关联变量m_Num,为显示符号的编 辑框设立一个CString型的关联变量m_result,设立一个int型的小数点标志dotflag,设立一个int型的键入数字标志numflag,设立一个long型的小数部分权值quan,最后为了防止用户输入错误,设立一个判断输入是否为数字的int型标志mark。 c)然后考虑到在计算过程中num1和num2的储存状态有三种,num1==0和 num2==0,也就是程序开始运行还没有开始录入数字的状态;num1!=0和num2==0,也就是第一个数字已经录入,第二个数字还没有录入的状态这时候把m_Num的值赋给num1,m_Num归零;num1!=0和num2!=0,把m_Num的值赋给num2,m_Num归零,令m_Num等于num1和num2合并后的值。

verilog HDL十进制加减法计数器报告

十进制加减法计数器 1.实验要求 (1)在Modelsim环境中编写十进制加减法计数器程序; (2)编译无误后编写配套的测试程序; (3)仿真后添加信号,观察输出结果。 2.设计程序如下 module decade_counter #(parameter SIZE=4) (input clock,load_n,clear_n,updown, input [SIZE-1:0]load_data, output reg [SIZE-1:0]q ); always @(negedge load_n,negedge clear_n,posedge clock) if (!load_n) q<=load_data; else if (!clear_n) q<=0; else //clock??? if(updown) q<=(q+1)%10; else begin if(q==0) q<=9; else q<=q-1; end endmodule 3.测试程序如下 `timescale 1ns/1ns module test_decade_counte; reg clock,load_n,clear_n,updown; reg [3:0]load_data; wire [3:0]q; decade_counter T1(clock,load_n,clear_n,updown,load_data,q); initial begin clock=0;clear_n=0;

#30 clear_n=1;load_n=0;load_data=7; #30 load_n=1;updown=0; #300 updown=1; #300 updown=0; #300 updown=1; #300 $stop; end always #10 clock=~clock; always @(q) $display("At time%t,q=%d",$time,q); endmodule 4.波形如下 5.测试结果如下 # At time 0,q= 0 # At time 30,q= 7 # At time 70,q= 6 # At time 90,q= 5 # At time 110,q= 4 # At time 130,q= 3 # At time 150,q= 2 # At time 170,q= 1 # At time 190,q= 0 # At time 210,q= 9 # At time 230,q= 8 # At time 250,q= 7 # At time 270,q= 6 # At time 290,q= 5 # At time 310,q= 4 # At time 330,q= 3

第02讲 简易计算器的设计

第02讲计算器 2.1 计算器简介 大家都知道,计算器是日常生活中不可缺少的一个工具,在Microsoft的Windows操作系统中,附带了一个计算器程序,有标准型和科学型两种模式。Windows XP下的标准型和科学型计算器程序分别如图2-1和图2-2所示。 图2-1 Windows XP下的标准型计算器 图2-2 Windows XP下的科学型计算器 Windows操作系统下附带的计算器程序功能相当的强大,本课我们将模仿Windows的计算器,使用Visual C# 2005开发平台开发一个功能相对简单的计算器应用程序,它能完成加、减、乘、除运算。 接下来详细的介绍简易计算器的设计方法和步骤。

2.2 界面设计及属性设置 用户界面设计是软件开发中非常重要的一个部分,用户界面的好坏直接影响软件的质量,本节将介绍如何设计简易计算器的用户界面以及界面上各控件的属性设置。 2.2.1 界面设计 打开Visual Studio 2005开发工具,新建一个Windows应用程序,然后在窗体上依次放置1个TextBox和17个Button控件,如图2-1所示(设置好属性后)。 图2-1 计算器用户界面 2.2.2 属性设置 窗体和各控件的属性设置如表2-1所示。 表2-1 窗体和各控件的属性

2.3 编写代码 本程序需要用到一些公共变量,例如用来接收操作数、运算结果,判断输入的是否为小数等,因此首先在代码的通用段声明以下变量: //****************************************************************** double num1, num2, result; // 操作数及运算结果 bool decimalFlag = false; // 判断输入的是否为小数 string myOperator; // 操作类型 //******************************************************************

EDA实验报告(四选一、四位比较器、加法器、计数器、巴克码发生器)

EDA实验报告

实验14选1数据选择器的设计 一、实验目的 1.学习EDA软件的基本操作。 2.学习使用原理图进行设计输入。 3.初步掌握器件设计输入、编译、仿真和编程的过程。 4.学习实验开发系统的使用方法。 二、实验仪器与器材 1.EDA开发软件一套 2.微机一台 3.实验开发系统一台 4.打印机一台 三、实验说明 本实验通过使用基本门电路完成4选1数据选择器的设计,初步掌握EDA设计方法中的设计输入、编译、综合、仿真和编程的过程。实验结果可通过实验开发系统验证,在实验开发系统上选择高、低电平开关作为输入,选择发光二极管显示输出电平值。 本实验使用Quartus II 软件作为设计工具,要求熟悉Quartus II 软件的使用环境和基本操作,如设计输入、编译和适配的过程等。 实验中的设计文件要求用原理图方法输入,实验时,注意原理图编辑器的使用方法。例如,元件、连线、网络名的放置方法和放大、缩小、存盘、退出等命令的使用。学会管脚锁定以及编程下载的方法等。 四、实验要求 1.完成4选1数据选择器的原理图输入并进行编译; 2.对设计的电路进行仿真验证; 3.编程下载并在实验开发系统上验证设计结果。 五、实验结果 4选1数据选择器的原理图: 仿真波形图:

管脚分配:

实验2 四位比较器 一、实验目的 1.设计四位二进制码比较器,并在实验开发系统上验证。 2.学习层次化设计方法。 二、实验仪器与器材 1.EDA 开发软件 一套 2.微机 一台 3.实验开发系统 一台 4.打印机 一台 5.其它器件与材料 若干 三、实验说明 本实验实现两个4位二进制码的比较器,输入为两个4位二进制码0123A A A A 和 0123B B B B ,输出为M (A=B ),G (A>B )和L (A

简易计算器

单片机十进制加法计算器设计 摘要 本设计是基于51系列的单片机进行的十进制计算器系统设计,可以完成计 算器的键盘输入,进行加、减、乘、除3位无符号数字的简单四则运算,并在LED上相应的显示结果。 设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的AT89C51单片机,输入采用4×4矩阵键盘。显示采用3位7段共阴极LED动态显示。软件方面从分析计算器功能、流程图设计,再到程序的编写进行系统设计。编程语言方面从程序总体设计以及高效性和功能性对C 语言和汇编语言进行比较分析,针对计算器四则运算算法特别是乘法和除法运算的实现,最终选用全球编译效率最高的KEIL公司的μVision3软件,采用汇编语言进行编程,并用proteus仿真。 引言 十进制加法计算器的原理与设计是单片机课程设计课题中的一个。在完成理论学习和必要的实验后,我们掌握了单片机的基本原理以及编程和各种基本功能的应用,但对单片机的硬件实际应用设计和单片机完整的用户程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。 单片机课程设计既要让学生巩固课本学到的理论,还要让学生学习单片机硬件电路设计和用户程序设计,使所学的知识更深一层的理解,十进制加法计算器原理与硬软件的课程设计主要是通过学生独立设计方案并自己动手用计算机电路设计软件,编写和调试,最后仿真用户程序,来加深对单片机的认识,充分发挥学生的个人创新能力,并提高学生对单片机的兴趣,同时学习查阅资料、参考资料的方法。 关键词:单片机、计算器、AT89C51芯片、汇编语言、数码管、加减乘除

目录 摘要 (01) 引言 (01) 一、设计任务和要求............................. 1、1 设计要求 1、2 性能指标 1、3 设计方案的确定 二、单片机简要原理............................. 2、1 AT89C51的介绍 2、2 单片机最小系统 2、3 七段共阳极数码管 三、硬件设计................................... 3、1 键盘电路的设计 3、2 显示电路的设计 四、软件设计................................... 4、1 系统设计 4、2 显示电路的设计 五、调试与仿真................................. 5、1 Keil C51单片机软件开发系统 5、2 proteus的操作 六、心得体会.................................... 参考文献......................................... 附录1 系统硬件电路图............................ 附录2 程序清单..................................

实验十进制加减法计数器

实验1 十进制加减法计数器 实验地点:电子楼218 实验时间:2012年10月19日指导老师:黄秋萍、陈虞苏 实验要求:设计十进制加减法计数器,保留测试程序、设计程序、仿真结果 1.设计程序: module count(EN,CLK,DOUT,F,RST); input EN,CLK,F,RST; output [3:0]DOUT; reg [3:0]DOUT; always@(posedge CLK) begin :abc if(EN) if(!RST) if(F) begin :a DOUT=DOUT+1; if(DOUT==10) DOUT=0; end //END A else begin :b DOUT=DOUT-1; if(DOUT==15) DOUT=9; end else DOUT=0; else DOUT=DOUT; end endmodule 2.测试程序 `timescale 10ns/1ns module test_count; wire [3:0] DOUT; reg EN,F,RST,CLK; count M(EN,CLK,DOUT,F,RST); initial begin :ABC CLK=0; EN=0;

RST=1; F=1; #100 EN=1; #200 RST=0; #1500 F=0; #3000 $stop; end always #50 CLK=~CLK; initial $monitor("EN=%b,F=%b,RST=%b,DOUT%D",EN,F,RST,DOUT); endmodule 3.测试结果 # EN=0,F=1,RST=1,DOUT x # EN=1,F=1,RST=1,DOUT x # EN=1,F=1,RST=1,DOUT 0 # EN=1,F=1,RST=0,DOUT 0 # EN=1,F=1,RST=0,DOUT 1 # EN=1,F=1,RST=0,DOUT 2 # EN=1,F=1,RST=0,DOUT 3 # EN=1,F=1,RST=0,DOUT 4 # EN=1,F=1,RST=0,DOUT 5 # EN=1,F=1,RST=0,DOUT 6 # EN=1,F=1,RST=0,DOUT 7 # EN=1,F=1,RST=0,DOUT 8 # EN=1,F=1,RST=0,DOUT 9 # EN=1,F=1,RST=0,DOUT 0 # EN=1,F=1,RST=0,DOUT 1 # EN=1,F=1,RST=0,DOUT 2 # EN=1,F=1,RST=0,DOUT 3 # EN=1,F=1,RST=0,DOUT 4 # EN=1,F=1,RST=0,DOUT 5 # EN=1,F=0,RST=0,DOUT 5 # EN=1,F=0,RST=0,DOUT 4 # EN=1,F=0,RST=0,DOUT 3 # EN=1,F=0,RST=0,DOUT 2 # EN=1,F=0,RST=0,DOUT 1 # EN=1,F=0,RST=0,DOUT 0 # EN=1,F=0,RST=0,DOUT 9 # EN=1,F=0,RST=0,DOUT 8 # EN=1,F=0,RST=0,DOUT 7 # EN=1,F=0,RST=0,DOUT 6 # EN=1,F=0,RST=0,DOUT 5

简易计算器课程设计

评阅教师评语:课程设计成绩 考勤成绩 实做成绩 报告成绩 总评成绩指导教师签名: 课程设计报告 论文题目基于ARM的简易计算器设计 学院(系):电子信息与自动化学院 班级:测控技术与仪器 学生姓名:同组同学: 学号:学号: 指导教师:杨泽林王先全杨继森鲁进时间:从2013年 6 月10 日到2013年 6 月28 日 1

目录 1、封面—————————————————————P1 2、目录—————————————————————P2 3、前言—————————————————————P3 4、关键字————————————————————P3 5、原理与总体方案————————————————P3 6、硬件设计———————————————————P6 7、调试—————————————————————P10 8、测试与分析——————————————————P11 9、总结—————————————————————P13

10、附件—————————————————————P14 前言 近几年,随着大规模集成电路的发展,各种便携式嵌入式设备,具有十分广阔的市场前景。嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波炉、录像机、汽车等,都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是是由单个程序实现整个控制逻辑。在嵌入式系统中,数据和命令通过网络接口或串行口经过ARM程序处理后,或显示在LCD上,或传输到远端PC上。 本文通过周立功的LPC2106芯片完成的简易计算器,正是对嵌入式应用的学习和探索。 一、摘要: 计算器一般是指“电子计算器”,是能进行数学运算的手持机器,拥有集成电路芯片。对于嵌入式系统,以其占用资源少、专用性强,在汽车电子、航空和工控领域得到了广泛地应用。本设计就是先通过C语言进行相应程序的编写然后在ADS中进行运行最后导入PROTUES进行仿真。最后利用ARM中的LPC2106芯片来控制液晶显示器和4X4矩阵式键盘,从而实现简单的加、减、乘、除等四则运算功能。 关键字:中断,扫描,仿真,计算 二、原理与总体方案: 主程序在初始化后调用键盘程序,再判断返回的值。若为数字0—9,则根据按键的次数进行保存和显示处理。若为功能键,则先判断上次的功能键,根据代号执行不同功能,并将按键次数清零。程序中键盘部分使用行列式扫描原理,若无键按下则调用动态显示程序,并继续检测键盘;若有键按下则得其键值,并通过查表转换为数字0—9和功能键与清零键的代号。最后将计算结果拆分成个、十、百位,再返回主程序继续检测键盘并显示;若为清零键,则返回主程序的最开始。 电路设计与原理:通过LPC2106芯片进行相应的设置来控制LCD显示器。 而通过对键盘上的值进行扫描,把相应的键值通过MM74C922芯片进行运算从而

10进制加法计数器课程设计

西北师范大学知行学院 数字电子实践论文 课题:74ls161组成的十进制加法计数器 (置数法) 班级:14电本 学号:14040101114 姓名:于能海

指导老师:崔用明 目录 第1章前言 (1) 1.1 摘要 (1) 1.2 设计目的 (2) 1.3 设计内容及要求 (2) 第2章设计方案 (3) ....................................................................................................................... 错误!未定义书签。 2.1主要芯片功能介绍 (3) 2.2.1 四位二进制计数器74161介绍 (3) ............................................................................................................... 错误!未定义书签。 2.2 工作原理 (4) 第3章硬件设计 (4) 3.1 单元电路设计 (4) 3.2 总硬件电路图 (5) 第4章仿真与试验 (6) 4.1 仿真结果 (6) 4.2 调试中遇到的问题 (7) 第5章结论和体会 (8)

第1章前言 1.1 摘要在数字电路技术的课程中,计数器的功能是记忆脉冲的个数,它是数字系统中应用最广泛的基本时序逻辑构件。计数器在微型计算机系统中的主要作用就是为CPU和I/O设备提供实时时钟,以实现定时中断、定时检测、定时扫描、定时显示等定时控制,或者对外部事件进行计数。一般的微机系统和微机应用系统中均配置了定时器/计数器电路,它既可当作计数器作用,又可当作定时器使用,其基本的工作原理就是"减1"计数。计数器:CLK输入脉冲是一个非周期事件计数脉冲,当计算单元为零时,OUT输出一个脉冲信号,以示计数完毕。 本十进制加法计数器是基于74161芯片而设计的, 该十进制加法计数器设计理念是用于工厂流水线上产品计数,自动计数,方便简单。 关键词:74ls161计数器 Introduction In the course of digital circuit technology, the counter memory function is the number of pulses, it is a digital system, the most widely used basic sequential logic components. The main role of the counter in the micro-computer system is to provide real-time clock for the CPU and I / O devices to achieve the timer interrupt, timing detection, scheduled scanning, the timing display timing control, or to count external events. General computer systems and computer application systems are equipped with a timer / counter circuit, it can as a counter action, but also as a timer, the basic working principle is "minus 1" count. Counter: CLK input pulse is a non-periodic event count pulses to zero when calculating unit, OUT outputs a pulse signal, to show the count is completed. The decimal addition counter is designed based on the 74161 chip, the low potential sensor senses when to rely on external signals, sensors in an object within the sensing range, otherwise it is a high potential. Within the sensing range of the sensor when an object is moved out of date, sensor potential from high to low and then high, appears on the edge. Counter is automatically incremented and displayed on a digital control. The decimal addition counters have two seven-segment LED. It can count from 0 to 99 objects, and easy to expand. The design concept of decimal addition counter is used to count on a factory assembly line products, automatic counting, convenient and simple. Keywords:74ls161counter

四位二进制加法计数器

学院信息学院专业通信工程姓名陈洁学号02 设计题目数字系统课程设计 内容四位二进制加法计数器 技术参数和要求0000→0001→0010→0011→0110→0111→1000→1001→1010→1011→1100→→1101→1110→1111→0000 缺0100→0101 设计任务 1.按要求设计VHDL程序, 2.在Xinlinx Ise环境中运行程序并输出仿真波形。 工作进度和安排第18周: 1.学习Xinlinx Ise软件知识,熟悉软件相关操作; 2.学习multsim软件知识,熟悉其在画逻辑电路时的应用; 3.查阅相关资料,学习时序逻辑电路设计知识。 第20周: 1.按要求编写程序代码,; 2.运行并输出仿真波形; 3.程序下载到电路板测试; 4.利用multsim软件,设计时序电路; 5.运行并验证结果; 6.撰写报告。 指导教师(签字): 年月日学院院长(签字): 年月日

目录 一.数字系统简介 (3) 二.设计目的和要求 (3) 三.设计内容 (3) 四.VHDL程序设计 (3) 五.波形仿真 (11) 六. 逻辑电路设计 (12) 六.设计体会 (13) 七.参考文献 (13)

一.数字系统简介 在数字逻辑设计领域,迫切需要一种共同的工业标准来统一对数字逻辑电路及系统的描述,这样就能把系统的设计分解为逻辑设计(前端),电路实现(后端)和验证桑相互独立而又相关的部分。由于逻辑设计的相对独立性就可以把专家们设计的各种数字逻辑电路和组件建成宏单元或软件核,即ip库共设计者引用,设计者可以利用它们的模型设计电路并验证其他电路。VHDL这种工业标准的产生顺应了历史潮流。 二.设计目的和要求 1、通过《数字系统课程设计》的课程实验使电子类专业的学生能深入了解集成中规 模芯片的使用方法。 2、培养学生的实际动手能力,并使之初步具有分析,解决工程实际问题的能力。三.设计内容 四位二进制加计数,时序图如下: 0000→0001→0010→0011→0110→0111→1000→1001→1010→1011→1100→→1101→1110→1111 →0000 缺0100→0101 。由JK触发器组成4位异步二进制加法计数器。 四.VHDL程序设计 四位二进制加计数,缺0100,0101(sw向上是0(on);灯亮为0) LIBRARY IEEE; USE entity count10 is PORT (cp,r:IN STD_LOGIC; q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); end count10; ARCHITECTURE Behavioral OF count10 IS SIGNAL count:STD_LOGIC_VECTOR(3 DOWNTO 0) ; BEGIN PROCESS (cp,r) BEGIN if r='0' then count<="0000"; elsiF cp'EVENT AND cp='1' THEN if count="0011" THEN count <="0110"; ELSE count <= count +1; END IF; end if; END PROCESS; q<= count; end Behavioral;

4位数加法计算器

安庆师范大学 2014级单片机原理与应用 课程设计报告 课题名称4位数加法计算器的设计 姓名吴昊天、伍浩然、王鹏、万吉 学号070814018、070814008、070814005、070814001 院、系、部计算机学院物联网工程 专业物联网工程 指导教师汪文明 2016年 6月 6日

一、设计任务及要求: 设计任务: 1、通过4*4矩阵键盘输入数字及运算符; 2、可以进行4位十进制数以内的加法预算。如果计算结果超出四位数,则全部显示“E”; 3、可以进行加减乘除所有运算; 4、添加其他功能。 要求: 首先进行预设计,根据设计的任务要求,先确定设计的硬件电路方案,然后进行硬件电路的初步设计,在计算机上画出硬件电路图,在老师的指导下进行修正硬件电路图,并对所涉及的参数进行计算。 在确定硬件的基础上,要进行软件的总体设计,包括软件主流程的设计以及各子程序的设计,同时,要写出详细的操作说明,如时间的调整方法,显示窗口的时间切换等,以配合软件的设计。 然后进入硬件的调试及编程工作,设计组内的同学可根据任务分工,有调试硬件各功能模块的,如键盘子程序、显示子程序等,有进行整体程序的编制的,各模块的编制过程中要注意资源的衔接。 最后进入联机调试,联机调试的原则也要采用分步走的原则,各个功能模块要逐步套入,通过一个再增加一项功能,从而达到设计的总体要求,不要上来编制个最大的程序,最后无法查找错误。 最后写出设计报告。 指导教师签名: 2016年 6 月 6 日 三、成绩 指导教师签名: 年月日

目录 一、绪言 (1) 二、系统设计 (1) 2.1设计任务 (1) 2.2方案比较与论证 (1) 2.2.1系统整体流程图 (2) 2.2.2单片机的选择方案论证 (2) 2.2.3键盘选择方案论证 (2) 2.2.4显示模块的选择方案论证 (2) 2.2.5蜂鸣器的选择方案论证 (2) 三、硬件电路设计 (2) 3.1计算器的控制电路图 (2) 3.2矩阵键盘的设计 (3) 3.3 LCD1602显示电路的设计 (3) 3.4蜂鸣器驱动电路的设计 (4) 3.5主要元器件选择 (4) 四、程序流程图 (5) 五、c语言程序设计 (5) 六、计算器的仿真 (19) 6.1 Keil调试 (19) 6.2 Proteus调试 (19) 七、结束语 (20) 八、参考文献 (21)

相关主题