科学计算器.docx

上传人:b****4 文档编号:24489206 上传时间:2023-05-28 格式:DOCX 页数:12 大小:36.85KB
下载 相关 举报
科学计算器.docx_第1页
第1页 / 共12页
科学计算器.docx_第2页
第2页 / 共12页
科学计算器.docx_第3页
第3页 / 共12页
科学计算器.docx_第4页
第4页 / 共12页
科学计算器.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

科学计算器.docx

《科学计算器.docx》由会员分享,可在线阅读,更多相关《科学计算器.docx(12页珍藏版)》请在冰豆网上搜索。

科学计算器.docx

科学计算器

JIUJIANGUNIVERSITY

DSP应用课程设计

题目:

科学计算器设计

英文题目:

DesignOfScientificCalculator

院系:

电子工程学院

专业:

通信工程

姓名:

年级:

指导教师:

实训地点:

电子信息实验楼203室

二零一四年五月

摘要

计算器有标准型和科学型。

标准型带有足够大、可用手指来操作的按钮,数

字大而清晰并能够满足基本的计算,标准模式支持显示12位数字,算术操作、平方根、百分比、记忆功能。

科学型带有所有普通的函数,所有的函数都分布在键盘上以致于你可以很简便的使用。

 

科学计算器支持显示24位数字,支持运算优先选择模式、进制转换功能、标准数学函数、百分比计算、方根计算、对数、次方、记忆等等功能。

 

科学计算器的常见品牌有卡西欧。

 

【关键字】:

 数学计算按键触发信号常用工具计算器

 

Abstract

CalculatorwithstandardandscientificStandardwithabigenough,useyourfingerstooperatebutton,bigandcleardigitalandcansatisfythebasiccalculation,thestandardmodelsupportshows12digits,arithmeticoperations,squareroot,percentage,andmemoryfunctionsscientificwithallcommonfunctions,allthefunctionsaredistributedonthekeyboardsothatyoucanveryeasytouse.

TheScientificcalculatorsupport24digitsdisplay,supportoperationalpriorities,hexadecimalconversionfunction,standardmathematicalfunctions,percentage,root,logarithm,power,memory,etc.Function

ThecommonbrandofscientificcalculatorhasCasio.

 

【keywords】:

MathematicalcalculationbuttontriggersignalCommontoolscalculator

第1章绪论

1.1科学计算器发展史

1666年,在英国SamuelMorland发明了一部可以计算加数及减数的机械计数机。

1673年,GottfriedLeibniz制造了一部踏式(stepped)圆柱形转轮的计数机,叫“SteppedReckoner”,这部计算器可以把重复的数字相乘,并自动地加入加数器里。

1694年,德国数学家,GottfriedLeibniz,把巴斯卡的Pascalene改良,制造了一部可以计算乘数的机器,它仍然是用齿轮及刻度盘操作。

1775年,ThethirdEarlofStanhope发明了一部与Leibniz相似的乘法计算器。

1893年,第一部四功能计算器被发明。

1931年,VanneverBush发明了一部可以解决差分程序的计数机,这机器可以解决一些令数学家,科学家头痛的复杂差分程序。

1935年,IBM(InternationalBusinessMachineCorporation)引入"IBM601”,它是一部有算术部件及可在1秒钟内计算乘数的穿孔计算机器。

它对科学及商业的计算起很大的作用。

总共制造了1500部。

1937年,AlanTuring想出了一个“通用机器(UniversalMachine)”的概念,可以执行任何的算法,形成了一个“可计算(computability)”的基本概念。

Turing的概念比其它同类型的发明为好,因为他用了符号处理(symbolprocessing)的概念。

 

1.2科学计算器的介绍

计算器是一种小型的手持或桌面的设备,用于完成数学计算。

一般的数学计算器与计算机是不一样,数学计算器通常仅能完成算术运算和少量逻辑操作并显示其结果,但一般不能修改其程序。

除了某些尺寸可比掌上型计算器的PDA之外,计算器的可携性通常高于计算机。

计算器的复杂度随着使用目的而有所不同。

最简单的计算器模块应该包含下列部件:

学计算器支持三角函数、微积分、统计与其他函数。

而最先进的现代计算器甚至可显示图型,并且包含计算机代数系统。

这种计算器可以编写程序,且内含了代数方程式求解程序、经济模型甚至游戏程序。

这类计算器可显示填满显示屏的单一数值。

并可将数字以科学记数法表现至9.999999999*1099。

如果用户试图输入一过大的数值或运算产生过大数值的算式,则计算器仅显示“错误”(error)一词。

因为存储器如此有限的计算器无法存储如此巨大的输入(>=10^160)。

“错误”也用以表示数学上未定义的函数或操作,例如除以零或对负数取平方根(除了某些高级的科学计算器拥有可处理复数的特殊函数,大部分科学计算器不允许复数的存在)。

某些少数计算器可分别这两种错误的不同,虽然用户依然难以了解error1与error2的差别何在。

仅有少数公司研发与制造现代职业工程师与经济学家用的计算器:

最有名的是Casio、夏普、HP与德州仪器。

这些计算器都是嵌入式系统的典范型。

 

第二章科学计算器的DSP实现

在我们的设计中使用的是ICETEK-VC5416-USB-EDU型DSP实验系统,ICETEK-VC5416-A 是一块以TMS320VC5416DSP 为核心的DSP 扩展评估板,它通过扩展接口与实验箱的显示/控制模块连接,可以控制其各种外围设备。

2.1TMS320VC5416DSP的通用引脚

1、TMS320VC5416DSP提供两个通用I/O引脚:

/BIO和XF.。

/BIO用于检测外设的状态,这在时间要求严格的中断中特别有用。

当外部输入是引脚/BIO的电位为低电平事,若带有此测试条件的条件跳转指令BC[D]会做出相应的跳转操作。

XF用于扩展输出标志,软件可编程。

XF的状态位在CPU状态寄存器ST1的bit3位,默认为1(高点平),执行汇编指令“RSBXXF”使引脚XF为低电平,类似执行“SSBXXF”使XF=1。

2、3个多通道缓冲串口(McBSPx,x=0,1,2)的各个引脚满足2个条件是也可以设置成通用I/O引脚使用。

每个McBSP均有7个引脚完成数据的发送和接收,它们分别是串行数据接收引脚DR、串行数据接收时钟引脚CLKR、串行数据接收帧同步引脚FSR、串行数据发送引脚DX、串行数据发送时钟引脚CLKX.、串行数据发送帧同步引脚FSX和外部时钟输入引脚CLKS。

每个McBSP均有多个控制寄存器设置状态,这些寄存器的访问是通过映射在DSP数据区的两个地址上的寄存器进行。

有关子地址寄存器和子地址数据寄存器的地址见表1,有关子地址见表2,McBSP作通用I/O引脚的配置见表3

表1—子地址寄存器和子地址数据寄存器地址表:

多通道缓冲串口名称

McBSP0

McBSP1

McBSP2

子地址寄存器(SPSAx)地址

38H

48H

34H

子地址数据寄存器(SPSDx)地址

39H

49H

35H

表2—子地址:

子地址

寄存器名称

McBSP寄存器说明

0x0000

SPCR1x

串口控制寄存器1

0x0001

SPCR2x

串口控制寄存器2

0x0002

RCR1x

接收控制寄存器1

0x0003

RCR2x

接收控制寄存器2

0x0004

XCR1x

发送控制寄存器1

0x0005

XCR2x

发送控制寄存器2

0x0006

SRGR1x

采样率发生寄存器1

0x0007

SRGR2x

采样率发生寄存器2

0x0008

MCR1x

多通道控制寄存器1

0x0009

MCR2x

多通道控制寄存器2

0x000A

RCERAx

接收通道使能寄存器A

0x000B

RCERBx

接收通道使能寄存器B

0x000C

XCERAx

发送通道使能寄存器A

0x000D

XCERBx

发送通道使能寄存器B

0x000E

PCR

引脚控制寄存器

表3—McBSP作通用I/O引脚的配置:

引脚

使能通用I/O引脚的设置

选作输出引脚的设置

发送输出值的寄存器

选作输入引脚的设置

读引脚输入值的寄存器

CLKX

/XRST=0

XIOEN=1

CLKXM=1

CLKXP

CLKXM=0

CLKXP

FSX

FSXM=1

FSXP

FSXM=0

FSXP

DX

只作输出

DX-STAT

----

---

CLKR

/RRST=0

RIOEN=1

CLKRM=1

CLKRP

CLKRP=0

CLKRP

FSR

FSRM=1

FSRP

FSRM=0

FSRP

DR

---

---

只作输出

DR-STAT

CLKS

/XRST=/RRST=0

XIOEN=RIOEN=1

---

---

只作输出

CLKS-STAT

 

2.2实现功能要求

1) 能够实现按键数值的识别。

2) 能够进行简单的加减运算 。

3)能够进行小数运算思路设计  。

 

2.3程序流程图

图1—程序流程图

 

2.4实现步骤

1、编写科学计算器的代码程序;

2、创建工程程序;

3、将ICETEK-VC5416-A按要求与装有ccs2.0软件的计算机连接,启动软件

运行下载并运行程序,观察结果;

4、通过调试后可实现科学计算器的相关数学计算功能;

第三章总结

 

这一次的实践让人感受良多,在做硬件方面的时候充分的考验了自己的焊接技术,也反映了自己的动手能力,明白了自身的不足,需加强,在做软件方面的时候感觉更加的困难,编写的程序有很多错误,不熟悉各种指令代码的运用,出错了不知道怎样解决,诸多方面显示出理论基础知识功底不扎实,出现各种问题,在老师耐心的指导下诸多难题迎刃而解,从这一次的设计更好的认识到了自身的不足,不论是理论知识还是动手能力都需要加强。

附录

voidxint0_init()

{

*(unsignedint*)IMR=0x0001;//使能int0中断

asm("rsbxINTM");//开总中断

}

 

interruptvoidint0()//中断0中断子程序

{

UINT16temp;intl;

if(x==1)//全局变量x如果为0,则表示上次运算完毕,运行以下语句,数组清零。

{

for(l=0;l<10;l++)

data_buff1[l]=48;

for(l=0;l<10;l++)

data_buff2[l]=48;

for(l=0;l<10;l++)

data_buff3[l]=48;

for(l=0;l<10;l++)

data_buff4[l]=48;

x=0;

delay_100us();

SendCMD(CLEAR);//清除显示

}

*(unsignedint*)IFR=0xFFFF;//清除所有中断标志,"写1清0"

send_buff=CMD_READ;//读键值指令

send();

receive();

asm("nop");

asm("nop");

send_buff=DECODE1;

send();

send_buff=rece_buff;//将接收到的键值送显示

send();

show=~show;

cs_high();//7279CS置高

asm("rsbxINTM");//开总中断

return;

}

接受数据程序:

voidreceive()

{

UINT16p,l;

port0005=0;//DIR配置成输入

asm("nop");

delay_50us();

for(l=0;l<8;l++)

{

port0007=0;//7279clk高

delay_8us();

key7279=port0009&0x0001;

asm("nop");//接收到的数据在D0位

data_buff=data_buff|(key7279<<(15-l));//7279clk低

temp7279=port0007;

delay_8us();

}

asm("nop");//在这里设置断点观察data_buff中的值

rece_buff=(data_buff>>8)&0x00ff;//接收到的数据右移给rece_buff

data_buff=0x0000;//清除data_buff

if(rece_buff==15)//判断是否摁下了等于按键

{

switch(h)//判断符号,选择加减乘除运算

{

case(10):

{shuchu=s1+s2;break;}

case(11):

{shuchu=s1-s2;break;}

case(12):

{shuchu=s1*s2;break;}

case(13):

{shuchu=s1/s2;break;}

}

xianshi();

x=1;y=0;s1=0;s2=0;//运算完成,更改全局变量值,数值清零

}

else

{

if(rece_buff>9)//给符号位赋值

{

xianshi();

h=rece_buff;

y=1;

}

else

{

if(y==0)//选择为那个数赋值

s1=s1*10+rece_buff;

else

s2=s2*10+rece_buff;

}

}

temp7279=port0005;//DIR配置成输出

}

LCD显示函数:

voidxianshi()

{intl,k,z,i;

data_buff1[0]=s1%10+48;//把个位付给data_buff1数组第一位

for(l=1;l<10;l++)//把数值的十位百位等赋值给相应的数组上

{

for(k=0;k

{z=s1/10;}

data_buff1[l]=z%10+48;

}

data_buff3[0]=s2%10+48;//把个位付给data_buff3数组第一位

for(l=1;l<10;l++)

{

for(k=0;k

z=s2/10;

data_buff3[l]=z%10+48;

}

{switch(h)//给符号位赋值

{case(10):

data_buff2[0]=43;break;//赋给相应的ASCII码字

case(11):

data_buff2[0]=45;break;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1