DSP设计科学计算器实验报告.docx
- 文档编号:2486708
- 上传时间:2022-10-30
- 格式:DOCX
- 页数:7
- 大小:31.46KB
DSP设计科学计算器实验报告.docx
《DSP设计科学计算器实验报告.docx》由会员分享,可在线阅读,更多相关《DSP设计科学计算器实验报告.docx(7页珍藏版)》请在冰豆网上搜索。
基于DSP的科学型计算器设计
一、题目要求:
基于DSPF2812利用实验箱及软件编程设计一款科学型计算器使其满足如下功能:
(1)能够实现按键数值的识别,并在数码管上显示
(2)能够进行简单的加减运算
(3)能够进行小数运算
二、思路设计
1、TMS320X2812实验箱资源功能简介:
●采用TMS320X2812片上的GPIOA及GPIOB作为IO口接受实验箱上的按键值进行判断。
同时设置两个IO口进行循环0,1发送给row1,row2实现键盘扫描,从而实现识别k11~k23的值。
●将箱上的k1~k8,k11~k23作为计算器键盘。
k1~k8为0~7,k11为8,k12为9,k13为清零键,k21为“=”键,k22为+,k23为-。
三、综合设计的程序分析
LED显示过程
循环扫描进入模块
键值输入
●程序框图
#include"DSP28_Device.h"
引脚定义:
#defineKey1 GpioDataRegs.GPADAT.bit.GPIOA0//0
#defineKey2GpioDataRegs.GPADAT.bit.GPIOA1//1
#defineKey3GpioDataRegs.GPADAT.bit.GPIOA2//2
#defineKey4 GpioDataRegs.GPADAT.bit.GPIOA3//3
#defineKey5 GpioDataRegs.GPADAT.bit.GPIOA4//4
#defineKey6GpioDataRegs.GPADAT.bit.GPIOA5//5
#defineKey7GpioDataRegs.GPADAT.bit.GPIOA8//6
#defineKey8 GpioDataRegs.GPADAT.bit.GPIOA9//7*/
#definerow1 GpioDataRegs.GPBDAT.bit.GPIOB0//PWM7
#definecol1GpioDataRegs.GPBDAT.bit.GPIOB1//PWM8
#definerow2GpioDataRegs.GPBDAT.bit.GPIOB2//PWM9
#definecol2 GpioDataRegs.GPBDAT.bit.GPIOB3//PWM10
#definecol3GpioDataRegs.GPBDAT.bit.GPIOB4//PWM11
/*k1~k8,k11~k23作为计算器键盘。
k1~k8为0~7,k11为8,k12为9,k13为清零键,k21为“=”键,k22为+,k23为-
#defineAdd0x0A
#defineSub0x0B
#defineClear0x0C
#definemulti0x04
#definedivi0x08
#definedot0x0D
unsignedcharScanKey(void);
intnum(void);
unsignedintEnter(void);
intifdot(void);
//Relativetospi_receive,notuserightnow
unsignedintSpi_VarRx[100];
unsignedinti,j,key;
externunsignedintInt_Flag;
主函数如下:
voidmain(void)
{unsignedintcountnum,shownum,countnum1,countnum2,count=0,co,step=1,math=0;
intnoun=-1,dot1=0;
countnum=0;countnum1=0;countnum2=0;co=0;
while
(1)
{
noun=num();//键值
key=ScanKey();
dot1=ifdot();
if(key!
=0)noun=key;
//输入第一个数
if(noun>=0&&noun<=9)
{if(dot1==0)
{if(step==1)
{
if(count<4)
{
count++;
countnum1=noun+countnum1*10;
}
else
{
count=0;countnum1=0;
}
countnum=countnum1;
shownum=BIN2BCD(countnum);
ShowBCD(shownum);
}
elseif(step==2)
{
if(count<4)
{
count++;
countnum2=noun+countnum2*10;
}
else
{
count=0;countnum2=0;
}
shownum=BIN2BCD(countnum2);
ShowBCD(shownum);
}
}
if(dot1==1)
{
if(step==1)
{
if(count<4)
{
count++;
countnum1=noun+countnum1*10;
}
else
{
count=0;countnum1=0;
}
countnum=countnum1;
shownum=BIN2BCD(countnum);
ShowBCD1(shownum);
}
elseif(step==2)
{ if(count<4)
{
count++;
countnum2=noun+countnum2*10;
}
else
{
count=0;countnum2=0;
}
shownum=BIN2BCD(countnum2);
ShowBCD1(shownum);
}
}
}
if(noun==Add)
{ step=2;count=0;
math=1;
}
elseif(noun==Sub)
{
step=2;count=0;
math=2;
}
elseif(noun==Clear)
{
countnum=0;step=1;
countnum1=0;
countnum2=0;
math=0;
count=0;
noun=-1;
shownum=BIN2BCD(countnum);
ShowBCD(shownum);
}
elseif(Enter()==1)
{
switch(math)
{
case1:
countnum=countnum1+countnum2;break;
case2:
countnum=countnum1-countnum2;break;
default:
break;
}
shownum=BIN2BCD(countnum);
ShowBCD(shownum);
math=0;
countnum1=0;countnum2=0;
step=1;
}
}
}
//K11至K23的按键原理图如下(键盘扫描):
"等于"按键分配函数如下:
unsignedintEnter(void)
{
unsignedintk11,k12,k13,k21,k22,k23;
unsignedintc10,c20,c30,c21,c11,c31;
k11=0;k12=0;k13=0;k21=0;k22=0;k23=0;
GpioDataRegs.GPBDAT.bit.GPIOB2=1;//row2
GpioDataRegs.GPBDAT.bit.GPIOB0=0;//row1
c10=col1;c20=col2;c30=col3;
GpioDataRegs.GPBDAT.bit.GPIOB2=0;//row2
GpioDataRegs.GPBDAT.bit.GPIOB0=1;//row1
c11=col1;c21=col2;c31=col3;
if(c11==0&c10==1)k21=1;
if(k21)return1;
elsereturn0;
}
分配加、减、清零及小数点的按键:
unsignedcharScanKey(void)
{unsignedintk11,k12,k13,k21,k22,k23;
unsignedintc10,c20,c30,c21,c11,c31;
k11=0;k21=0;k12=0;k22=0;k21=0;k23=0;k13=0;
GpioDataRegs.GPBDAT.bit.GPIOB2=1;//row2
GpioDataRegs.GPBDAT.bit.GPIOB0=0;//row1
c10=col1;c20=col2;c30=col3;
GpioDataRegs.GPBDAT.bit.GPIOB2=0;//row2
GpioDataRegs.GPBDAT.bit.GPIOB0=1;//row1
c11=col1;c21=col2;c31=col3;
if(c21==0&c20==1)k22=1;
if(c21==1&c20==0)k12=1;
if(c31==0&c30==1)k23=1;
if(c31==1&c30==0)k13=1;
if(k22==1)KeyData=Add;
elseif(k
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 设计 科学 计算器 实验 报告