当前位置:文档之家› 单片机计算器设计

单片机计算器设计

单片机计算器设计
单片机计算器设计

目录

第1章绪论 (2)

§1.1 设计的意义 (2)

§1.2 要解决的问题 (2)

§1.3 计算器发展概况 (2)

第2章需求分析 (3)

§2.1 计算器设计要求 (3)

§2.2 程序开发环境 (3)

§2.3 计算器原理图 (3)

§2.3.1 键盘系统分析 (4)

§2.3.2 LED显示灯系统分析 (5)

第3章计算器程序设计 (7)

§3.1 总体设计 (7)

§3.2 硬件设计 (7)

§3.3 软件设计 (8)

§3.3.1 软件模块划分 (8)

§3.3.2 软件流程设计 (9)

第4章测试分析 (10)

第5章总结 (12)

参考文献 (13)

附录 (14)

第1章绪论

§1.1 设计的意义

随着科学技术的飞速发展,单片机具有集成度高、功能强、结构简单、易于掌握、应用灵活、可靠性高、价格低廉等优点,在工业控制、机电一体化、通信终端、智能仪表、家用电器等诸多领域得到了广泛的应用,已成为传统机电设备向智能化机电设备转变的重要手段。单片机的应用正在不断加深,同时带动传统控制检测技术日益跟新。在实时检测和自动控制的单片机系统中,单片机往往作为一个核心部件来使用,仅单片机方面的知识是不够的,还应根据具体硬件结构软硬结合,加以完善。本任务是简易的一位数的四则运算,程序是根据教材内容参考编写而成的,在功能上还不完善,限制也比较多。

§1.2 要解决的问题

计算器以AT89S52单片机为核心芯片,通过扫描键盘来得到数据,将得到数据

按要求进行运算并将结果送到显示电路进行显示。

§1.3 计算器发展概况

提起计算器,值得我们骄傲的是最早的计算工具诞生在中国。中国古代最早采用的一种计算工具叫筹策,又叫做算筹,这种算筹多用竹子制成,也有用木头、兽骨充当材料的,约270,枚一束,放在布袋里克随身携带。17世纪初,西方国家的计算工

具有了较大的发展,英国数学家纳皮尔发明的“纳皮尔算筹”,英国牧师奥却德法发明了圆柱形对数计算尺,这种计算尺不仅能做加减乘除、乘方、开方运算,甚至可以计算三角函数、指数函数和对数函数,这些计算工具不仅带动了计算机的发展,也为现代计算器的发展奠定了良好的基础,计算器已经成为现代社会应用广泛的计算工具。

第2章需求分析

§2.1 计算器设计要求

基于AT89S52单片机的简易计算器,采用22.1184MHZ晶振。设计要求如下:(1)计算器能正常显示输入数据和得到的结果

(2)计算器能对1位整数进行简单的加、减、乘、除四则运算,在做除法时能自动舍去小数部分。

§2.2 程序开发环境

1. 硬件:PC 机一台,实验开发板CS-1。

2. 软件 Windows98/XP系统,KEIL集成开发环境,ISP 下载软件。

§2.3 计算器原理图

基于AT89S52单片机的简易计算器由电源电路、单片机主控电路、按键电路、显示电路和复位电路几部分组成,框图组成如图2-1所示。

图2-1 基于AT89S52单片机的简易计算器系统框图由实验板CS-1电路原理图可知AT89S52的P0端口连接的数码管显示,P2端口连接的是键盘,于是在计算器程序的设计中,我们可以通过定时器调用中断,不断的向P0端口输出电平,来显示我们所要显示的数字。然后通过P2端口来获得键盘的输入。

图2-2 基于AT89S52单片机简易计算器电路原理图

§2.3.1 键盘系统分析

图 3.3.1 键盘结构图

实验板上是一个4*4的键盘矩阵,可以采用逐行扫描或全扫描的方式实现按键的读取,行线和列线加驱动后空载时为高电平,逐行扫描的方法为逐行使行线的每位为低,再判断列线的返回信号,如果没有键按下,返回的信号全为高;如果返回的信号中有列线为低,那么肯定是有按键按下,根据列线和行线的交点可以判断按键的具体位置。

全扫描的方法为先行线全为低,判断列线,如果列线有为低的,则可以判断有键按下,此时还不能判断某列的具体的键和行,还需反过来将列线全为低,再判断具体

的行,根据行列即确定具体的按键。

§2.3.2 LED显示灯系统分析

LED数码管也称半导体数码管,是目前数字电路中最常用的显示器件。它是以发光二极管作笔段并按共阴极方式或共阳极方式连接后封装而成的。图5-41所示是两种LED数码管的外形与内部结构,+、-分别表示公共阳极和公共阴极,a~g是7个笔段电极,DP为小数点。LED数码管型号较多,规格尺寸也各异,显示颜色有红、

绿、橙等。

从上图可以看出,要使数码管显示数字,有两个条件:1、是要在VT端(3.8脚)加正电源;2、要使(a,b,c,d,e,f,g,dp)端接高电平或“1”电平,这样才能显示的。

数码管内部为8个发光二极管,并排列为8字形,同时加一个位表示小数点,通过这8个发光二极管的合理组合,可以构成不同的数字字型和简单的字母字型,同时

数码管还有一个位选信号。即8个数码管的公共端,数码管分为共阳和共阴两种,也就是说高电平选中或低电平选中。

每个数码管都有a、b、c、d、e、f、g七个笔划和一个小数点dp,这八个点对应二极管阳极,阴极都联在一起(称共阴极)。以四位数码管矩阵为例,四个数码管的a、b、c、d、e、f、g七个笔划和一个小数点DP电极分别并联在一起。当c行高电平,3列低电平,其他行列都为高阻态时,第三个数码管的c笔划亮,通过扫描方式在短时间内八个数码管的笔划该亮的都亮一次,由于视觉暂留,就会看到结果。

第3章计算器程序设计

§3.1 总体设计

主要用到的硬件:AT89S52 LED数码管显示器编码键盘

硬件分配:

1、P0、P1口:作为输出口,控制LED数码管显示数据的结果。

2、P2口:作为输入口,与键盘连接,实现数据的输入。

§3.2 硬件设计

LED数码管显示模块:

图3.2-1实验板LED灯模块

单片机AT89S52P1口接LED的位码,P0口段码,通过计数器0调用中断来显示当前数据,计数时间为20ms。

LED显示器由七段发光二极管组成,排列成8字形状,因此也成为七段显示器。为了显示数字或符号,要为LED显示器提供代码,即字形代码。七段发光二极管,再加上一个小数点位,共计8段,因此提供的字形代码的长度正好是一个字节。简易计

键盘模块设计:

图3.2-1键盘模块

单片机P2口连接键盘,通过P2口读取键盘信息。首先利用P2口低字节读取键盘行信息,判断是否有按键被按下,若有则利用P2继续读取高字节信息,然后和低字节的信息相异或得到按键码。获取按键码的程序由单片机主程序循环调用。

§3.3 软件设计

由于本设计主要是算法问题,所以程序采用汇编语言编写。主函数对单片机进行初始化,并不断调用扫描函数和运算函数。显示函数采用20ms定时中断来对显示数据进行实时跟新。

§3.3.1 软件模块划分

程序主要分成显示模块、按键扫描模块、计算模块。基于AT89S52单片机简易计算器程序模块划分及简要流程图如3-3所示。

显示模块

计算模块扫描程序模块

图3.3-1程序模块划分

§3.3.2 软件流程设计

图3.3.2-1 计算器程序流程图

第4章测试分析

一、对一位数加减乘除四则运算法则的测试:

测试发现问题:

测试1:

输入运算符时,LED数码管没有显示出输入的运算符,而是出现的乱码。

错误代码如下:

cjne a,#0x79,next2 ;判断控制键类型

mov a,buffer ;如果是等号键,将两数相加

add a,buffer_num

mov buffer,#0x00 ;清楚第一个操作数

mov dptr,#dis_number ;查找当前运算结果对应的字符码

movc a,@a+dptr

mov buffer_dis,a ;将当前运算结果的字符码送显示缓冲区

分析源代码后可知,代码中没有判断运算符号的部分,此时也没有有将输入的运算符号送入显示缓存区。于是我们对代码进行修改,加入运算符判断类型的代码,判断之后对执行相应的运算操作。

测试2:

计算器无法实现连加现象。例如:顺序输入1+2= 之后会显示结果为4,然后继续输入+1,结果并不为5。

错误原因分析,在获得结果4之后没有将数据4放入操作数缓存。于是我在等号运算执行后的代码下面加上将计算机结果放入操作书缓存的代码,以此来实现计算器连加的功能。

测试3:

无法识别按键9。

错误代码如下:

;在数码管上显示按下的键

search:

mov temp,r5 ;保存扫描码

mov dptr,#key ;取键盘码数组的地址

mov r6,#0x00

nextone:

clr a

movc a,@a+dptr ;取键盘码

inc dptr

inc r6

cjne r6,#0x0A,num_key ;判断是数字还是控制键

分析代码可知,在判断按键是控制键还是数字键的时候,我对按键进行匹配时,将r6会小于0X0A的数字认为是数字键,但是r6的初始值并不为0。所以,应该是r6小

于0x0B的都为数字键。这里将#0x0A改为#0x0B即可

测试4:

对正常一位数的加、减、乘、除进行测试。

若除数为0则出现错误结果,错用一个小数区减大数,仍会出错误结果。除以上两种情况外,其余测试均正常通过。

第5章总结

课程设计是培养学生运用综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实际能力的重要环节,是对我们实际工作能力的具体训练和考察过程。随着科学技术发展的日新月异,单片机已经成为当今计算机应用中空前活跃的领域,在生活中无处在。作为计算机专业的学生来说单片机的开发技术十分重要。

我做的题目是基于AT89S52单片机的简易计算器设计,对于我们这些实践中的新手来说,这是一次考验。怎样才能找到课堂所学与实践运用的最佳结合点。这都是我们要考虑和努力的。在此次课程设计中,通过老师的精心指导和在网上找的资料,主要掌握了数码管显示的编程,数据在内部运算的编程方法。调试也是此次的重点,这其中最重要的就是软件的调试了,也是我此次问题出现最多的地方。这要求我们对每个模块在整个程序中的作用的了如指掌。通过此次课程设计,我发现我对程序的掌握还不够,尤其是单片机汇编语言掌握的不牢固。这次课程设计使我懂得实践的重要性,只有理论知识远远不够,只有把所学的理论知识与实践相结合才能算是掌握了所学的知识。随着就业形势的日趋严峻,大学生的动手能力、实际能力和综合素质越来越受到学校和用人单位的重视。

此次设计单片机十分简易,只实现1位数的加减乘除,并且还有结果不能得到负数和除数不能为0的Bug,所以这次我们设计的计算器是并不实用的,但是同过本次课程设计,使我了解到了如何使用单片机来进行计算器的设计,学会了如何对LED灯进行控制,也学会了如何使用键盘来获得输入的数据,同时提高了我的编码能力。在设计计算器的过程中运动了很多问题,解决了这些问题之后,提高了我们自己动手解决问题的能力。

这次单片机设计中使我对步进机有了更深的了解,对单片机也有了更高层次的了解。单片机编程需要对电路进行认真的分析,然后画出流程图,善于查阅相关资料才能编出好的程序。这次单片机应用系统设计中遇到到很大的困难,主要原因是平时的知识掌握的不够,通过查阅很多资料和类似的论文,才做成的。由于时间仓促,经验少,知识局限,设计有一定的不足。但通过此次设计自己的能力提高了不少,我会认真总结设计中的经验教训,为以后更多的设计做好铺垫。

参考文献

[1] 冯育长主编.单片机系统设计与实例分析.西安:西安电子科技大学出版社,2007

[2] 谢维成,杨加国主编.单片机原理与应用及C51程序设计.北京:清华大学出版社,2006.

[3] 王思明,张金敏主编.单片机原理及应用.兰州大学出版社,2001年

[4] 宋晖,余张国主编。单片机原理与应用。电子科技大学出版社,2008年

附录

程序清单如下:

temp equ 0x10 ; 自定义变量temp,指向片内ram 的10h 地址buffer_dis equ 0x11 ;显示字符缓冲区

buffer_con equ 0x12 ;控制键缓冲区

buffer_num equ 0x13 ;按键值缓冲区

buffer equ 0x14 ;首个操作数16 进制值

buffer_opr equ 0x15 ;记录操作运算符

org 0x00 ;程序入口

sjmp start ;跳到主程序执行

org 0x000b ;定时器/计数器0 中断入口

ljmp timer0_over

org 0x30 ;程序代码部分

/*******************************************************

名称: 主程序

功能:应用程序入口

*******************************************************/

start:

mov sp,#0x30 ;初始化堆栈

mov TL0,#0xD8 ;置定时器初值(中断时间为25ms)

mov TH0,#0xF0

mov TMOD,#0x01 ;设定定时器/计数器0 工作方式为1

setb EA ;允许中断

setb ET0 ;允许定时器/计数器0 溢出中断

setb TR0 ;启动定时器/计数器0

mov buffer_dis,#0x00

mov P1,#0xDF ;打开开?65 个数码管214365 loop:

acall sea_key

sjmp loop 、

/*******************************************************

名称: 字形码扫描模块

功能:判断当前按键是数字还是字符,如果是字符;将当前按

键的字形码存入buffer_dis,并且当前按键的十六进制值

存入buffer_num,如果是控制键,将控制键存入buffer_con

如果控制键为不为等号,则将运算符存入buffer_opr

入口:sea_key

*******************************************************/

sea_key:

acall scan ;调用键盘扫描子程序

acall delay

cjne r5,#0xFF,search ;有键按下转到search

sjmp sea_key ;无键按下继续扫描

;在数码管上显示按下的键

search:

mov temp,r5 ;保存扫描码

mov dptr,#key ;取键盘码数组的地址

mov r6,#0x00

nextone:

clr a

movc a,@a+dptr ;取键盘码

inc dptr

inc r6

cjne r6,#0x0B,num_key ;判断是数字还是控制键

;控制键处理

con_key:

cjne a,temp,nextone ;与扫描码比较,不等取下一个键盘码mov a,#0Fh

movc a,@a+dptr ;取对应的数码

mov buffer_con,a ;控制键存入缓冲区

cjne a, #0x71,noequl

jmp equl

noequl:

mov buffer_opr,a

equl:

acall control ;调用控制键处理模块

ret

;数字键处理程序

num_key:

jnc con_key

cjne a,temp,nextone ;与扫描码比较,不等取下一个键盘码;相等

mov a,#0Fh

movc a,@a+dptr ;取对应的数码

mov buffer_dis,a ;送显示缓冲区

dec r6

mov buffer_num,r6 ;当前按键的16 进制值送缓冲区

ret

/*******************************************************

名称: 键盘码扫描模块

功能:获取当前的按键

入口:scan

返回值:r5:返回当前按键的键值,若无键按下,返回0xFF

*******************************************************/

scan:

mov P2,#0xF0 ;扫描低字节

mov a,P2 ;读出当前P2 口值

cjne a,#0xF0,next_key ;不等于输出状态,跳至有键按下状态

sjmp no_down ;扫描结束,跳到无键按下状态

next_key:

mov P2,#0x0F ;扫描高字节

mov r5,P2 ;读出当前P2 口值

xrl a,r5 ;两次读取的值相异或得当前按键的键值

mov r5,a ;当前键值送r5 保存

ret

no_down:

mov r5,#0xFF ;返回无键按下状态

ret

/*******************************************************

名称: 基本延时模块

功能:利用软件的方法实现延时

入口:delay

返回值:无

*******************************************************/

delay:

mov r3,#0xFF ;传送数据,1t

dl2:

mov r4,#0xFF ;传送数据,1t

dl1:

nop ;空指令,1t

nop ;空指令,1t

djnz r4,dl1 ;不为0 转,为0 顺执,需要2t

djnz r3,dl2 ;不为0 转,为0 顺执,需要2t

ret ;返回需2t

/*******************************************************

名称: 控制键处理模块

功能:根据运算符实现两数的加减乘除

入口:control

返回值:无

*******************************************************/

control:

mov buffer_dis,buffer_con ;当前控制键送显示缓冲区

mov a,buffer_con

cjne a,#0x77,next1 ;判断控制键类型,加号77 A+ 7C B- 39 C* 5E D/ 71 F= mov buffer_dis,#0x77

next1:

cjne a,#0x7C,next2

mov buffer_dis,#0x7C

next2:

cjne a,#0x39,next3

mov buffer_dis,#0x39

next3:

cjne a,#0x5E,next4

mov buffer_dis,#0x5E

next4:

;mov buffer_dis,

cjne a,#0x71,ending

mov a, buffer_opr

cjne a,#0x77,subex

mov a,buffer ;如果是等号键,将两数相加

add a,buffer_num

mov buffer_num,a

mov buffer,#0x00 ;清楚第一个操作数

mov dptr,#dis_number ;查找当前运算结果对应的字符码

movc a,@a+dptr

mov buffer_dis,a ;将当前运算结果的字符码送显示缓冲区subex:

mov a, buffer_opr

cjne a,#0x7C,mulex

mov a,buffer ;如果是等号键,将两数相加

subb a,buffer_num

mov buffer_num,a

mov buffer,#0x00 ;清楚第一个操作数

mov dptr,#dis_number ;查找当前运算结果对应的字符码

movc a,@a+dptr

mov buffer_dis,a ;将当前运算结果的字符码送显示缓冲区mulex:

mov a, buffer_opr

cjne a,#0x39,divex

mov a,buffer ;如果是等号键,将两数相加

mov b, buffer_num

mul ab

mov buffer_num,a

mov buffer,#0x00 ;清楚第一个操作数

mov dptr,#dis_number ;查找当前运算结果对应的字符码

movc a,@a+dptr

mov buffer_dis,a ;将当前运算结果的字符码送显示缓冲区

divex:

mov a, buffer_opr

cjne a,#0x5E,ending

mov a,buffer ;如果是等号键,将两数相加

mov b, buffer_num

div ab

mov buffer_num,a

mov buffer,#0x00 ;清楚第一个操作数

mov dptr,#dis_number ;查找当前运算结果对应的字符码

movc a,@a+dptr

mov buffer_dis,a ;将当前运算结果的字符码送显示缓冲区

ending:

mov buffer,buffer_num ;如果不是等号键,保存当前输入的数字的十六进制值

ret

/*******************************************************

名称: 定时器0 中断服务程序

功能:显示显示缓冲区中的字符码

入口:无

返回值:无

*******************************************************/

timer0_over:

mov P0,buffer_dis

mov TL0,#0xD8 ;重新设定时器/计数器0 初值

mov TH0,#0xF0

reti ;中断服务返回

;**********************************************************

; 预定义数组

;*********************************************************

;键盘扫描码

key:

;按键数码

; 0 1 2 3 4 5 6 7

db 0x7E,0xBE,0xDE,0xEE,0x7D,0xBD,0xDD,0xED

; 8 9 A B C D E F

db 0x7B,0xBB,0xDB,0xEB,0x77,0xB7,0xD7,0xE7

dis_number:

db 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F ;十六进制字形数据

; 0 1 2 3 4 5 6 7 8 9 ----- 十进制数db 0x77,0x7C,0x39,0x5E,0x79,0x71 ;十六进制字形数据; A B C D E F ------------------------ 十进制数

end

单片机课程设计 简易计算器的设计

目录 摘要 (1) 绪论 (1) 1.设计要求及功能分析 (1) 1.1 设计要求 (1) 1.2 基本功能 (2) 2.设计方案 (2) 2.1 硬件部分设计方案 (2) 2.1.1 单片机部分 (2) 2.1.2 按键部分 (2) 2.1.3 显示部分 (2) 2.2 软件部分设计方案 (2) 3.系统的硬件总体设计 (4) 3.1 系统的总体硬件设计 (4) 3.2 键盘连接电路 (4) 3.3 显示屏连接电路 (5) 3.4 单片机芯片AT89C51 (6) 3.5 外接电路 (7) 4.系统的软件总体设计 (8) 4.1 键盘识别程序设计 (8) 4.2 显示程序 (11) 4.3 运算程序 (11) 5.元器件清单及程序清单 (12) 5.1 元器件清单 (12) 5.2 程序清单 (12) 6.软件仿真 (18) 6.1 仿真验证 (18) 6.2 性能分析 (20) 6.3 出现故障及其原因 (20) 6.4 解决方法 (20) 结论 (20) 参考文献 (21) 致谢 (21) 附录PCB图 (22)

简易计算器的设计 学生:李飞马鹏超舒宏超 指导老师:王孝俭 摘要:单片机是指一个集成在一块芯片上的完整计算机系统。尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。同时集成诸如通讯接口、定时器,实时时钟等外围设备。而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。单片机内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元即可,用它来做一些控制电器一类不是很复杂的工作足矣了。我们现在用的全自动滚筒洗衣机、排烟罩、VCD等等的家电里面都可以看到它的身影!它主要是作为控制部分的核心部件。它是一种在线式实时控制计算机,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,这也是和离线式计算机的(比如家用PC)的主要区别。单片机比专用处理器最适合应用于嵌入式系统,因此它得到了最多的应用。事实上单片机是世界上数量最多的计算机。现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。而个人电脑中也会有为数不少的单片机在工作。汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!单片机的数量不仅远超过PC机和其他计算的综合,甚至比人类的数量还要多。 关键词:单片机、计算器、控制电路、仿真。 绪论 设计要求掌握数码管移位动态扫描显示的编程方法,掌握矩阵扫描的编程方法,掌握数据在内部运算的编程方法。设计任务实现最大8位正整数加、减、乘、除,具备清零、等于功能,16个按键功能依次为:数字0、数字1、数字2、数字3、数字4、数字5、数字6、数字7、数字8、数字9、清零、等于、加、减、乘、除。 1.设计要求及功能分析 1.1设计要求: 本次单片微型计算机与接口技术课程设计做的是利用C51单片机为主体的计算器,实现了简单的加、减、乘、除功能。采取的是键盘输入和液晶显示屏的输出结果显示。主要硬件构成部分由四个,一个AT89C51单片机芯片,一个液晶显示屏,一个4*4键盘和一个排阻(10K)做P0口的上拉电阻,可以实现16位的数值操作计算。 1.2基本功能: 首先,计算器可现实8位数字,开机运行时,只有数码管最低位显示为“0”,其他位全部不显示;

AT89C51单片机简易计算器的设计

AT89C51单片机简易计算器的设计 单片机的出现是计算机制造技术高速发展的产物,它是嵌入式控制系统的核心,如今,它已广泛的应用到我们生活的各个领域,电子、科技、通信、汽车、工业等。本设计是基于51系列单片机来进行的数字计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除六位数范围内的基本四则运算,并在LCD上显示相应的结果。设计电路采用AT89C51单片机为主要控制电路,利用MM74C922作为计算器4*4键盘的扫描IC读取键盘上的输入。显示采用字符LCD静态显示。软件方面使用C语言编程,并用PROTUES仿真。 一、总体设计 根据功能和指标要求,本系统选用MCS-51系列单片机为主控机。通过扩展必要的外围接口电路,实现对计算器的设计。具体设计如下:(1)由于要设计的是简单的计算器,可以进行四则运算,为了得到较好的显示效果,采用LCD 显示数据和结果。 (2)另外键盘包括数字键(0~9)、符号键(+、-、×、÷)、清除键和等号键,故只需要16 个按键即可,设计中采用集成的计算键盘。 (3)执行过程:开机显示零,等待键入数值,当键入数字,通过LCD显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数

值,按等号就会在LCD上输出运算结果。 (4)错误提示:当计算器执行过程中有错误时,会在LCD上显示相应的提示,如:当输入的数值或计算得到的结果大于计算器的表示范围时,计算器会在LCD上提示溢出;当除数为0时,计算器会在LCD 上提示错误。 系统模块图: 二、硬件设计 (一)、总体硬件设计 本设计选用AT89C51单片机为主控单元。显示部分:采用LCD 静态显示。按键部分:采用4*4键盘;利用MM74C922为4*4的键盘扫描IC,读取输入的键值。 总体设计效果如下图:

C++课程设计报告--小型特殊计算器

课程设计报告 课程:面向对象程序设计学号: 姓名: 班级: 教师:

课程设计名称:小型特殊计算器 1.设计内容: 实现一个特殊的计算器,可以实现复数、有理数、矩阵和集合的特殊计算。程序可以实现复数、有理数的加、减、乘、除,可以实现矩阵的加法、减法和乘法运算,也可以实现集合的求交集、并集、子集的运算。 2.设计目的与要求: 2.1设计目的 达到熟练掌握C++语言的基本知识和技能; 基本掌握面向对象程序设计的基本思路和方法; 能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。 2.2设计要求 要求利用面向对象的方法以及C++的编程思想来完成系统的设计; 要求在设计的过程中,建立清晰的类层次; 在系统的设计中,至少要用到面向对象的一种机制。 3.系统分析与设计 3.1主要知识点 运算符重载增加了C++语言的可扩充性。运算符的重载实际上就是一种函数调用的形式,可以用成员函数重载运算符,就是将运算符重载定义为一个类的成员函数的形式;也可以用友元函数重载。用友元重载运算符的友元函数是独立于类以外的一般函数。 3.2关键技术 程序中每一种数据类型用一个类来实现,共设计了4个类。复数类complex,矩阵类matrix,有理数类rational以及集合类set。每一种类都定义了相应的运算符重载函数。具体定义如下所示: (1)类complex 类complex中,成员变量image表示虚部,real表示实部。成员函数print()用来显示数据。运算符重载函数都是用友元函数来实现的。分别重载+、-、*、/运算符。 (2)类matrix 类matrix中,成员变量elems用来存放矩阵的所有元素,rows表示矩阵的行,cols表示矩阵的列。成员函数SetElems()用来给矩阵中的每一个元素赋值,Disp()用来显示矩阵中的所有元素。其它友元函数分别重载+、-、*、/运算符。 (3)类rational 类rational中,有两个成员变量:denominator用来表示有理数的分母,numerator表示有理数的分子。有理数成员函数print()用来显示有理数,optimization()用来优化有理数函数。友元函数real()用来将有理数转换为实数,其它友元函数分别重载+、-、*、/运算符。 (4)类set

单片机课程设计计算器

课程设计说明书 课程设计名称:单片机课程设计 课程设计题目:四位数加法计算器的设计学院名称:电气信息学院 专业班级: 学生学号:

学生姓名: 学生成绩: 指导教师: 课程设计时间:至

格式说明(打印版格式,手写版不做要求) (1)任务书三项的内容用小四号宋体,倍行距。 (2)目录(黑体,四号,居中,中间空四格),内容自动生成,宋体小四号。 (3)章的标题用四号黑体加粗(居中排)。 (4)章以下的标题用小四号宋体加粗(顶格排)。 (5)正文用小四号宋体,倍行距;段落两端对齐,每个段落首行缩进两个字。 (6)图和表中文字用五号宋体,图名和表名分别置于图的下方和表的上方,用五号宋体(居中排)。(7)页眉中的文字采用五号宋体,居中排。页眉统一为:武汉工程大学本科课程设计。 (8)页码:封面、扉页不占页码;目录采用希腊字母Ⅰ、Ⅱ、Ⅲ…排列,正文采用阿拉伯数字1、2、3…排列;页码位于页脚,居中位置。 (9)标题编号应统一,如:第一章,1,,……;论文中的表、图和公式按章编号,如:表、表……;图、图……;公式()、公式()。

课程设计任务书 一、课程设计的任务和基本要求 (一)设计任务(从“单片机课程设计题目”汇总文档中任选1题,根 据所选课题的具体设计要求来填写此栏) 1. 系统通过4x4的矩阵键盘输入数字及运算符。 2. 可以进行4位十进制数以内的加法运算,如果计算结果超过4位十进制数,则屏幕显示E。 3. 可以进行加法以外的计算(乘、除、减)。 4. 创新部分:使用LCD1602液晶显示屏进行显示,有开机欢迎界面,计算数据与结果分两行显示,支持小数运算。 (二)基本要求 1.有硬件结构图、电路图及文字说明; 2.有程序设计的分析、思路说明; 3.有程序流程框图、程序代码及注释说明; 4.完成系统调试(硬件系统可以借助实验装置实现,也可在Proteus 软件中仿真模拟); 5.有程序运行结果的截屏图片。

基于单片机的简易计算器设计

目录 引言 (1) 第一章设计原理及要求 (2) 1.1设计方案的确定 (2) 1.2系统的设计方案 (2) 1.3系统的设计要求 (2) 第二章硬件模块设计 (4) 2.1单片机AT89C51 (4) 2.1.1 AT89C51芯片的特点 (5) 2.1.2 管脚说明 (5) 2.1.3 振荡器特性 (7) 2.1.4 芯片擦除 (7) 2.2键盘控制模块 (7) 2.2.1 矩阵键盘的工作原理 (8) 2.2.2 键盘电路主要器件介绍 (8) 2.3LCD显示模块 (10) 2.3.1 显示电路 (11) 2.3.2 LCD1602主要技术参数 (11) 2.3.3 引脚功能说明 (11) 2.4运算模块(单片机控制) (12) 第三章软件设计 (14) 3.1功能介绍 (14) 3.2系统流程图 (14) 3.3程序 (16) 第四章系统调试 (17) 4.1软件介绍 (17) 4.1.1 Keil uVision2仿真软件简介 (17) 4.1.2 protues简介 (17)

4.2软件调试 (18) 4.2.1 软件分析及常见故障 (18) 4.2.2 仿真结果演示 (20) 4.3硬件调试 (21) 结束语 (23) 参考文献 (24) 附录 (25) 致谢 (36)

引言 计算工具最早诞生于中国,中国古代最早采用的一种计算工具叫筹策,也被叫做算筹。这种算筹多用竹子制成,也有用木头,兽骨充当材料的,约二百七十枚一束,放在布袋里可随身携带。另外直到今天仍在使用的珠算盘,是中国古代计算工具领域中的另一项发明,明代时的珠算盘已经与现代的珠算盘几乎相同。 17世纪初,西方国家的计算工具有了较大的发展,英国数学家纳皮尔发明的“纳皮尔算筹”,英国牧师奥却德发明了圆柱型对数计算尺,这种计算尺不仅能做加、减、乘、除、乘方和开方运算,甚至可以计算三角函数、指数函数和对数函数。这些计算工具不仅带动了计算器的发展,也为现代计算器发展奠定了良好的基础,成为现代社会应用广泛的计算工具。1642年,年仅19岁的法国伟大科学家帕斯卡引用算盘的原理,发明了第一部机械式计算器,在他的计算器中有一些互相联锁的齿轮,一个转过十位的齿轮会使另一个齿轮转过一位,人们可以像拨电话号码盘那样,把数字拨进去,计算结果就会出现在另一个窗口中,但是它只能做加减运算。1694年,莱布尼兹在德国将其改进成可以进行乘除的计算。此后,一直到20世纪50年代末才有电子计算器的出现。

计算机科学与专业技术学院课程设计成绩单

计算机科学与技术学院课程设计成绩单

————————————————————————————————作者:————————————————————————————————日期:

计算机科学与技术学院课程设计成绩单 课程名称:数据库系统原理指导教师: 姓名性别学号班级 综合成绩成绩等级 程序运行情况 (占总成绩20%) □能正确运行□基本能正确运行□能运行但结果不完善 (20分)(15分)(10分) 程序功能的完善 程度 (占总成绩10%)□完善□基本完善□不完善(10分)(8分)(5分) 程序结构的合理 性 (占总成绩10%)□合理□基本合理□不太合理(10分)(8分)(5分) 对问题的答辩情况 (占总成绩40%)□概念正确有创新□能正确回答所有问题□基本能正确回答(40分)(35分)(30分) □部分问题回答概念不清晰 (20分) 学生的工作态度与独立工作能力(占总成绩10%)□工作态度认真能独立完成任务□工作态度认真但独立性较差(10分)(8分) □工作态度基本认真但缺乏独立性 (5分) 设计报告的规范 性 (占总成绩10%)□符合规范□基本符合规范□规范性较差(10分)(8分)(5分) 优秀:90分~100分良好:80分~89分中等:70~79分及格:60~69分不及格0分~59分 武汉科技大学计算机科学与技术学院制表

计算机科学与技术学院 课程设计报告 课程名称:数据库系统原理专业: 班级:级班学号: 姓名: 指导老师:

网上选课系统 一、实验目的 利用一种DBMS作为设计工具,理解并应用课程中关于数据库设计的相关理论,能按照设计流程完成完整的数据库设计,包括需求分析、概念设计、逻辑设计、物理设计和实施。同时能够应用各个阶段的典型工具 二、设备与环境 (1) 硬件设备:PC机一台 (2) 软件环境:安装Windows操作系统,安装数据库管理系统SQL Server2000等。 三、实验内容 完整实践应用数据库设计的工程过程:需求分析\概念设计\逻辑设计\物理设计和实施: (1)需求分析:选定一个应用,对所设计的数据库系统有一定的调研分析,其结果应该以 简单的需求分析说明书\数据字典和数据流图(2级数据流即可)表示; (2)概念分析:使用E-R图作为描述工具.描述出局部和全局的E-R图; (3)逻辑设计:将E-R图转化为相应的关系模式,并根据范式理论进行优化分析,关系模 式不少于3个; (4)物理设计:根据需要设计必要的索引等结构; (5)实施:以某种DBMS为工具创建出完整的数据库.在数据库中要表现出的知识点包括 ①登录控制 (标准登录或混合登录) ②数据完整性(参照完整性、实体完整性、自定义完整性(包括触发器) ③设置用户,并相应设计用户的权限和角色(用户设计至少3个,有不同的权限) ④以游标或存储过程完成相关操作至少2个,以文件方式保存 (6)以上内容,请详细描述,并有必要抓图. 四、实验结果及分析 1.需求分析 随着信息时代科技不断提高,学校规模不断扩大,教学质量不断提高,大学期间有许多公共选修课,以往的选修课方法是课堂报名或者纸上填写方式报名,这种方法虽然直接,但是造成选课的盲目性,而且学生选过课程后不好在更改查看,一方面浪费大量的人力,物力资源,另一方面浪费时间以及在认为统计过程中不可避免的出现差错的情况。这给广大的老师和学生带来诸多的不便,管理起来也相当困难。使用网上选课系统可以提前进行网上选课,并且选课以后学生还可以在查看和更改,随意选择各个老师的课程,老师管理起来也比较方便。鉴于

AT89C51单片机C实现简易计算器

AT89C51单片机简易计算器的设计 一、总体设计 根据功能和指标要求,本系统选用MCS-51系列单片机为主控机。通过扩展必要的外围接口电路,实现对计算器的设计。具体设计如下:(1)由于要设计的是简单的计算器,可以进行四则运算,为了得到较好的显示效果,采用LCD 显示数据和结果。 (2)另外键盘包括数字键(0~9)、符号键(+、-、×、÷)、清除键和等号键,故只需要16 个按键即可,设计中采用集成的计算键盘。 (3)执行过程:开机显示零,等待键入数值,当键入数字,通过LCD显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LCD上输出运算结果。 (4)错误提示:当计算器执行过程中有错误时,会在LCD上显示相应的提示,如:当输入的数值或计算得到的结果大于计算器的表示范围时,计算器会在LCD上提示溢出;当除数为0时,计算器会在LCD 上提示错误。 系统模块图:

二、硬件设计 (一)、总体硬件设计 本设计选用AT89C51单片机为主控单元。显示部分:采用LCD 静态显示。按键部分:采用4*4键盘;利用MM74C922为4*4的键盘扫描IC,读取输入的键值。 总体设计效果如下图:

(二)、键盘接口电路 计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会很简单,但是会占用大量的I/O 口资源,因此在很多情况下都不采用这种方式,而是采用矩阵键盘的方案。矩阵键盘采用四条I/O 线作为行线,四条I/O 线作为列线组成键盘,在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4×4个。这种行列式键盘结构能有效地提高单片机系统中I/O 口的利用率。 矩阵键盘的工作原理: 计算器的键盘布局如图2所示:一般有16个键组成,在单片机中正好可以用一个P口实现16个按键功能,这种形式在单片机系统中也最常用。 图 2 矩阵键盘布局图 矩阵键盘内部电路图如图3所示:

单片机设计简易计算器

简易计算器 Simply Calculator 1 设计思想 此计算器有键盘部分、单片机、显示部分三部分组成,键盘部分主要完成输入功能;单片机主要完成数据处理功能,包括确定按键,完成运算,以及输出数据;显示器部分主要完成单片机输出的显示。 本设计的思路是利用单片机性能好,稳定性强的优点来实现系统的运行。设计大致可以分为三个步骤:第一步,硬件的选取和设计;第二步,程序的设计和调试;第三步,Protues 系统仿真。 硬件是设计的骨骼,不仅关系到设计总体方向的确定,还要综合考虑节能,环保,以及稳定性和经济性等各种因素。因此需要花费大量的时间。硬件的选取最为重要,包括选用的芯片,显示设备的选取,输入设备的选取等。本设计是通过单片机来实现的,因此选用了ATMEGA16单片机作为主体,输入设备选用矩阵键盘。程序是硬件的灵魂,是实现设计的中心环节。本设计使用的程序语言是C语言,在“ICC AVR”中运行,调试,直到运行出正确结果,然后输出后缀名为.HEX格式的文件,以备在Protues中仿真使用。程序是设计的关键,程序的调试需要大量的时间,耐心,还够要有足的细心才能成功。本设计中就出现了大量的错误,经过认真修改,最终才能运行出正确结果。最后的系统仿真是设计是否成功的验证,是设计不可缺少的重要环节。这就要求能掌握Protues的一些基本操作。2原理分析 矩阵键盘的扫描 —

》 图矩阵键盘图 如图所示,单片机的8个I/O口和矩阵键盘相连,用8个I/O口来控制矩阵键盘的16个按键是非常有意思的,首先我们设置单片机的PD0—PD7为输出,且PD0—PD3依次设置为低电平,而PD4—PD7设置为高电平,然后我们设置PD4—PD7为输入,而PD0—PD3仍然为输出,假如此时M1键按下,则PD0与PD4相连,因为PD0是低电平,而PD4是输入,所以PD4会被拉为低电平,同理,如果M2被按下,则PD5会被拉低,M3按下,PD6会被拉低,M4按下,PD7被拉低。这是判断有无键盘按下的过程,当我们判断是那一个键盘按下时,我们首先设置8个I/O口为输出,输出为FE,即,PD0为低电平,其他全为高电平,然后我们设置PD4—PD7为输入,如果M1被按下,则PD4会比被拉为低电平,此时会变成EE,同理可以知道M2被按下时会变为DE,M3被按下时会变为BE,M4被按下时会变为7E。同理我们可以设置8个I/O口输出FD来检测M5—M8是否被按下,设置8个I/O口输出FC来来检测M9—M12,设置8个I/O口输出F7来检测M13—M16,如果M1—M4没有被按下,就继续检测M4—M8,一次类推,就可以检测出16个按键了。在这次设计中,16个按键M1—M16所对应检测值分别为:EE,DE,BE,7E,ED,DD,BD,7D,EB,DB,BB,7B,E7,D7,B7,77。 数字显示与计算 本次设计选用的显示器是1602液晶显示器,此液晶显示器能显示32个字符,VSS接地,VDD接电源正极,E为时使能信号,R/W为读写选择端(H/L),RS为数据/命令选择端(H/L),D0—D7为数据I/O口。 首先我们初始化液晶显示器,然后显示出第一个被按下的数,并且使光标右移,如果有第二个数按下,则据继续显示,以此类推,然后把所有显示出来的数换算成一个数,如果按下“+”号,则显示出“+”,并且同理显示出“+”号后面按下的数字,然后调用加子程序,运算出结果,如果按下的是“-”,则调用减子程序,如果按下“*”,则调用乘子程序,如果按下“/”,则调用除子程序。然后再调用显示结果子程序,显示出结果。 《

C++ 科学计算器-课程设计报告

DONGFANG COLLEGE,FUJIAN AGRICULTURE AND FORESTRY UNIVERSITY 课程名称:堆栈计算器 系别:计算机 年级专业:11级计算机科学与技术 学号:1150303040 姓名:蔡新云 任课教师:林励成绩: 2013 年 6 月13 日

引言 堆栈计算器 简介: 计算带括号的数学算式,可以判断优先级,错误判断等功能。友好的操作界面,美观的视觉效果。 截图 界面: 计算演示: 结果:

错误判断: 数据结构:应用了栈,做数值缓存,应用了递归处理括号内算式。其他知识:mfc界面设计;c++类的封装(.h与.cpp分离)。 编译环境:使用了vs2012,通过修改vs2010也可以打开。

程序简单流程图: (注:eval 的代码在下面。。。) 功能实现原理与代码: //栈的实现 //初始化 stack::stack(int len) { lengh=len; date=new double[len]; date[0]=0; top=0; } stack::stack() { date=new double[100]; MFC 文本框 按钮事件 = 事件 Cal.eval() 调用函数eval(),返回结果到文本框 当 =事件 发生 从文本框取出表达式到eval ()函数

date[0]=0; top=0; } //判断为空 bool stack::is_empty() { if(top==0) { return true; } return false; } //进栈 void stack::push(double number) { date[top++]=number; } //出栈 double stack::pop() { if(!is_empty()) return date[--top]; } //calculator类(核心代码) 初始化 calculator::calculator() { error="null"; } 是否为数字 bool calculator::is_num(char num) { if(num<='9' && num>='0'||num=='.') { return true; }

单片机课程设计——基于C51简易计算器

单片机双字节十六进制减法实验设计 摘要 本设计是基于51系列的单片机进行的双字节十六进制减法设计,可以完成计 算器的键盘输入,进行加、减、3位无符号数字的简单运算,并在LED上相应的显示结果。 设计过程在硬件与软件方面进行同步设计。硬件方面从功能考虑,首先选择内部存储资源丰富的AT89C51单片机,输入采用5个键盘。显示采用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 程序清单.................................. 一、设计任务和要求

单片机的计算器设计方案(完整)

单片机的计算器设计方案(完整)

3.1 硬件连接 图3-1所示为简易计算器的电路原理图。P3口用于键盘输入,接4*4矩 阵键盘,键值与键盘的对应表如表----所示,p0口和p2口用于显示,p2口用于显示数值的高位,po口用于显示数值的低位。 图3-1 简易计算器电路原理图 键值与功能对应表

键值0 1 2 3 4 5 6 7 8 9 + - ×/ = ON/C 功能0 1 2 3 4 5 6 7 8 9 + - ×÷= 清零 表3-1 3.2 计算器的软件设计 #include //头文件 #define uint unsigned int // #define uchar unsigned char sbit lcden=P2^3。 //定义引脚 sbit rs=P2^4。 sbit rw=P2^0。 sbit busy=P0^7。 char i,j,temp,num,num_1。 long a,b,c。//a,第一个数b,第二个数c,得数 float a_c,b_c。 uchar flag,fuhao。//flag表示是否有符号键按下,fuhao表征按下的是哪个符号 uchar code table[]={ 7,8,9,0, 4,5,6,0, 1,2,3,0, 0,0,0,0}。

uchar code table1[]={ 7,8,9,0x2f-0x30, 4,5,6,0x2a-0x30, 1,2,3,0x2d-0x30, 0x01-0x30,0,0x3d-0x30,0x2b-0x30}。 void delay(uchar z> // 延迟函数 { uchar y。 for(z。z>0。z--> for(y=0。y<110。y++>。 } void check(> // 判断忙或空闲 { do{ P0=0xFF。 rs=0。//指令 rw=1。//读 lcden=0。//禁止读写 delay(1>。 //等待,液晶显示器处理数据 lcden=1。//允许读写 }while(busy==1>。 //判断是否为空闲,1为忙,0为空闲

单片机简易计算器课程设计

课程设计 题目名称简易计算器设计 课程名称单片机原理及应用 学生姓名 班级学号 2018年6 月20日

目录 一设计目的 本设计是基于51系列单片机来进行的简单数字计算器设计,可以完成计算器的键盘输入,进行加、减、乘、除六位整数数范围内的基本四则运算,并在LED上显示相应的结果。软件方面使用C语言编程,并用PROTUES仿真。 二总体设计及功能介绍 根据功能和指标要求,本系统选用MCS-51系列单片机为主控机,实现对计算器的设计。具体设计及功能如下: 由于要设计的是简单的计算器,可以进行四则运算,为了得到较好的显示效果,采用LED显示数据和结果; 另外键盘包括数字键(0~9)、符号键(+、-、×、÷)、清除键和等号键,故只需要16个按键即可,设计中采用集成的计算键盘; 执行过程:开机显示零,等待键入数值,当键入数字,通过LED显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LED上输出运算结果。

三硬件仿真图 硬件部分比较简单,当键盘按键按下时它的那一行、那一列的端口为低电平。因此,只要扫描行、列端口是否都为低电平就可以确定是哪个键被按下。 四主程序流程图 程序的主要思想是:将按键抽象为字符,然后就是对字符的处理。将操作数分别转化为字符串存储,操作符存储为字符形式。然后调用compute()函数进行计算并返回结果。具体程序及看注释还有流程图 五程序源代码 #include #include #include/* isdigit()函数*/ #include/* atoi()函数*/ #define uchar unsigned char #define uint unsigned int

JAVA实现计算器课程设计

JAVA实现计算器课程设计 计算机科学系 计应0701班 指导老师:刘其昌 设计人员:陈秀桃 设计日期:2009年11月10日——2009年12月20日 计算器的设计 目录 第一章绪 论 ..................................................................... .. (2)

1.1 开发环 境 ..................................................................... . (2) 1.2 基本功能介 绍 ..................................................................... ......... 2 第二章系统设 计 ..................................................................... (3) 2.1 系统流程 图 ..................................................................... . (3) 2.2 系统功能框 图 ..................................................................... (3) 2.3 需求分 析 ..................................................................... ................ 4 第三章软件设 计 ..................................................................... (5) 3.1 界面设 计 ..................................................................... . (5) 3.2 代码设 计 .....................................................................

单片机课程设计——基于C51简易计算器

单片机十进制加法计算器设计 摘要 本设计是基于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 程序清单..................................

基于单片机的计算器设计(DOC)

专业:电子信息工程1111班

指导老师: 姓名: 学号: 摘要 近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,但仅单片机方面的知识是不够的,还应根据具体硬件结构、软硬件结合,来加以完善。 计算机在人们的日常生活中是比较常见的电子产品之一。可是它还在发展之中,以后必将出现功能更加强大的计算机,基于这样的理念,本次设计是用AT89S51单片机、LCD显示器、控制按键为元件来设计的计算器。利用此设计熟悉单片机微控制器及C语言编程,对其片资源及各个I/O端口的功能和基本用途的了解。掌握Microsoft Visual C++ 6.0应用程序开发环境,常用的LCD显示器的使用方法和一般键盘的使用方法。 关键字:AT89C51 LCD 控制按键 第一章简介 1.1 课题简介 当今社会,随着人们物质生活的不断提高,电子产品已经走进了家家户户,无论是生活或学习,还是娱乐和消遣几乎样样都

离不开电子产品,大型复杂的计算能力是人脑所不能胜任的,而且比较容易出错。计算器作为一种快速通用的计算工具方便了用户的使用。计算器可谓是我们最亲密的电子伙伴之一。本设计着重在于分析计算器软件和开发过程中的环节和步骤,并从实践经验出发对计算器设计做了详细的分析和研究。 单片机由于其微小的体积和极低的成本,广泛的应用于家用电器、工业控制等领域中。在工业生产中。单片微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。 本系统就是充分利用了8051芯片的I/O引脚。系统以采用MCS-51系列单片机Intel8051为中心器件来设计计算器控制器,实现了能根据实际输入值显示并存储的功能,计算程序则是参照教材。至于位数和功能,如果有需要可以通过设计扩充原系统来实现。 1.2 设计目的 通过本次课题设计,应用《单片机应用基础》、《计算机应用基础》等所学相关知识及查阅资料,完成简易计算器的设计,以达到理论与实践更好的结合、进一步提高综合运用所学知识和设计的能力的目的。 通过本次设计的训练,可以使我在基本思路和基本方法上对基于MCS-51单片机的嵌入式系统设计有一个比较感性的认识,并具备一定程度的设计能力。

VB科学计算器课程设计

湖南医药学院 VB计算器课程设计题目: VB科学计算器 院(系)别临床医学院 专业临床医学 班级本临一班 学号 2015101010121 姓名夏铭锴 指导教师李跃强 二○一六年四月

目录 一、设计内容及要求 二、设计原始资料 三、设计完成后提交的文件和图表设计 四、进程安排 五、主要参考资料 [摘要] 用VB制作这个程序的简单计算器,它包括一个标准的计算器和一个科学计算器。它可以实现简单的加减乘除四则运算,数字的平方、平方根,正弦、余弦、正切,倒数、指数函数、对数函数,角度、弧度、梯度的转换,以及各进制的相互转换。而且它的功能还有退格,清除当前数据,清除所有数据,复制数据,粘贴数据。 在这个计算器的程序中,我用到了单行选择语句If…Then…Else…, 块语句if…then…end if,If语句的嵌套,多条件选择语句Select Case,而且还用到了按钮、文本框、框架、单选按钮控件,菜单的设计。 在此报告中我重点叙述了计算机的各个功能及用法。特别是进制间的转换和数字与运算符之间的联系。。虽然描述的不太完整,但我会尽力使用系统结构图,划分多个模块,让大家明白我设计的运算器的功能的。 [关键词] Visual Basic;计算器;对象;代码 1

2

3

四、进程安排 (1)创建应用程序的界面。 (2)设置属性。 (3)编写代码。 4

附页: 设计原始资料 Private Sub Command1_Click() '删除数字的最后一位If Label3.Caption <> "" Then Label3.Caption = Left(Label3.Caption, Len(Label3.Caption) - 1) Else c = MsgBox("内容已为空!不可删除一位!", 49, "注意!") End If End Sub Private Sub Command10_Click() '输入数字6 Label3.Caption = Label3.Caption + Command10.Caption End Sub Private Sub Command11_Click() If Label3.Caption <> "" Then '输入符号* Label1.Caption = Label3.Caption Label2.Caption = Command11.Caption Label3.Caption = "" Else c = MsgBox("请输入数据后输入符号!", 49, "注意!") End If End Sub 5

单片机4X4键盘计算器课程设计报告书

《单片机课程设计报告》 教学院: 专业班级: 学号: 学生: 指导教师: 时间: 地点:

单片机课程设计任务书 一、课题名称 单片机课程设计 二、设计目的 为了进一步巩固学习的理论知识,增强学生对所学知识的实际应用能力和运用所学的知识解决实际问题的能力,开始为期两周的单片机课程设计。通过实训使学生在巩固所学知识的基础之上具有初步的单片机系统设计与应用能力。 三、设计容 设计基于51单片机的简易计算器系统电路,并以该电路为基础进行编程,要求能够实现0-99之间的数进行加、减、乘、除运算的功能。 四、设计要求 1、设计简易计算器,要求能对0-99之间的数进行加、减、乘、除运算。 2、用4×4的键盘作为输入设备。 3、用LED或LCD进行显示。 4、编写无符号数加、减、乘、除运算、输入和显示的程序。 5、对系统的进行综合和调试,使其具有对0-99之间的数进行加、减、乘、除运算的功能。 6、编写课程设计的总结

六、设计报告 课程设计报告的基本容至少包括封面、正文、附录三部分。课程设计报告要求统一格式,字体工整规。 1、封面 封面包括“《单片机课程设计》课程设计报告”、班级、、学号以及完成日期等。 2、正文 正文是实践设计报告的主体,具体由以下几部分组成: (1)课程设计题目; (2)课程设计任务与要求; (3)设计过程(包括设计方案、设计原理、创新点以及采用的新技术等); (4)方案的比较与论证; (5)硬件电路设计,各个模块的设计与器件的选择; (6)软件程序的设计与调试; (7)课程设计总结(包括自己的收获与体会;遇到的问题和解决的方法;技术实现技巧和创新点;作品存在的问题和改进设想等); 3.附录 附录1:系统设计原理图 附录2:系统硬件元器件清单 附录3:系统的程序 七、考核方式与成绩评定办法 及格(60分~69分)、60分以下为不及格。

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