基于LM3S811的计算器的设计.docx
- 文档编号:9568498
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:13
- 大小:256.42KB
基于LM3S811的计算器的设计.docx
《基于LM3S811的计算器的设计.docx》由会员分享,可在线阅读,更多相关《基于LM3S811的计算器的设计.docx(13页珍藏版)》请在冰豆网上搜索。
基于LM3S811的计算器的设计
延安大学电子技术课程设计
基于单片机LM3S811的简易计算器设计
院系:
信息学院
专业班级:
电子信息工程09
指导老师:
邵婷婷
小组成员:
黄炽华、李蓓蓓、王智敏
摘要:
该设计是用单片机来设计的一个简易计算器,采用一片LM3S811单片机作为系统输入、计算、显示、控制的核心,采用4*4键盘作为输入设备,数码管作为输出设备,进行计算时,可以通过键盘输入算式,经单片机处理,显示器就可以显示计算结果。
该设计实现了三位数以内的“+”、“-”、“*”、“/”的简单运算,在做除法运算时,自动舍去小数部分,只保留整数部分。
运算结果超出可显示的位数时能进行出错提示。
关键字:
LM3S811;计算器;4*4键盘;数码管
Abstract:
Thisdesignisthedesignwithsingle-chipcomputertoasimplecalculator,usingapieceofLM3S811microcontrollerasthesysteminput,calculation,display,controlofthecore,with4*4keyboardasinputequipment,digitaltubeasoutputdevices,andthecalculation,canthroughthekeyboardinputmathematicalformula,SCMprocessing,displaycandisplaythecomputationalresults.Thisdesignrealizedwithinthreedigitsofthe"+"and""and"*","/"simpleoperation,doingdivideoperationautomatically,andeliminatedthedecimalpart,retainonlytheintegerpart.Computationalresultsdisplayeddigitsbeyondcanmakemistakeshints.
Keyword:
LM3S811;Calculator;4*4keyboard;Digitaltube
一、方案设计与论证
整个计算器分为单片机计算控制模块、键盘输入模块、数码管显示模块。
对于每个模块,先提出多个方案进行比较和论证,最终确定适合整个系统的最佳方案。
下面是各模块方案的提出、选择及论证。
1.输入模块
方案一:
阶梯式键盘,将键盘阶梯式形式排布,该方案优点在于排布方式新颖,节省I/O口,其优势在于占用额外元件且扫描方式复杂,如图1所示。
图1:
阶梯式键盘
方案二:
矩阵键盘,将按键以矩阵形式排布,该方案的优点在于外观整齐大方,接线方式统一,比独立式键盘(由一个I/O口单独识别按键)节约了许多系统资源,但在一些较复杂的项目中还是显得过于占用硬件,如图2所示。
图2:
矩阵式键盘
鉴于系统工作量不是很大,我们选择方案二。
2.显示模块
方案一:
用LCD显示,要用LCD显示,需要学习其专用的驱动控制芯片,比
如12864,软件实现较为复杂,且LCD的价格昂贵。
方案二:
采用LED数码管串行静态显示,虽然其显示亮度高,但是如果显示
器的位数较多,需要增加锁存器,故而静态显示占用I/O口线较多,需要增加锁存器,故而静态显示占用I/O口线较多,CPU的开销较大。
方案三:
采用LED数码管并行动态显示,显示亮度不及静态显示,但电路
简单,适合于显示位数较多的情况。
综上所述,采用方案三并行动态显示是本设计的最佳显示方案。
注:
该设计电路中的LED显示器是共阳极的。
二、硬件设计
该计算器以LM3S811为主控芯片,采
用键盘为输入设备,数码管为输出设备
,实现了简单四则运算,系统框图如图
3所示。
1、主控制模块:
该计算器采用LM3S811
低功耗单片机主控芯片,该单片机IO接
口数量多,内部资源丰富,如包含10位
AD转换,16、32位定时器,PWM控制,
USRT接口等,处理能力强大,能够轻松胜任
此任务,其原理图如图4所示。
图3:
系统框图
2、操作模块:
通过操作模块中数字与运算符号实现计算器的四则运算,如图5所示。
图5:
操作模块图4:
LM3S811原理图
3、显示模块:
LED显示器由7条发光二极管组成显示段,有的还有一个小数点
dp。
采用共阳极的接法,将LED的所有阳极并接后连到+5V上,当某一字段的阴极为0时,对应的字段就点亮。
三、软件设计
本作品实现的功能全部是由C语言
程序编写实现。
通过程序的编写使简单
的器件实现丰富的功能。
程序总流程图
如图6所示。
1.先设定LM3S811中使用到的端口:
用
PD口全部,以作为键盘电路的输入与输主函数for(;;)死
出管脚;用PB口全部,以作为三位显示循环,实现多次操作
管的段码输出显示;用PA0、PA1、PA2,
作为三位显示管的位码显示。
2.输入模块:
①第一次输入及显示:
用while语句锁
定输入长度,将按键每次点击的数字依
次存入数组V[i]中,依次在显示管循环
输出,并且系统自动计算所输入数字代
表的数学意义(即数值大小),方便系统
计算。
②第二次输入及显示:
因键盘中每个键
均有自己的键值(0~15,该键值的确定
是由程序赋予的),故当按下键的键值≧
10时,即可确定第一次输入环节结束,
系统进入第二次键值输入环节,此前对
键值10~13分别赋予“+”、“-”、“*”、
“/”的特殊意义,以确定系统的计算逻
辑与方向,第二次输入及显示与第一次
相类似。
图6:
程序总流程图
3.计算及结果显示模块:
第二次键值输入结束的标志是当输入键值>13时,系统认为输入环节结束,开始对两次输入的数字意义进行数学上的计算,以确定两次分别输入了什么数字,再根据所选择的运算逻辑:
“+”、“-”、“*”、“/”,计算出当前输入下所计算出的数据的计算结果,再将结果上的每个位权系数分立出来依次赋给Q[g]数组,再从显示管中显示出这些分立的系数以便容易识别它的数学意义。
4.循环操作:
当一次运算完成之后系统自动回到程序首部以重新开始新一轮运算。
四、硬件调试
1、常见故障:
1.1、逻辑错误:
它是由设计错误或加工过程中的工艺性错误所造成的。
这类错误包括错线、开路、短路等。
B、元器件失效:
有两方面的原因:
一是器件本身已损坏或性能不符合要求;二是组装错误造成元件失效。
C、可靠性差:
引起可靠性差的原因很多,如金属化孔、接插件接触不良会造成系统时好时坏,走线和布局不合理也会引起系统可靠性差。
D、电源故障:
若样机有电源故障,则加电后很容易造成器件损坏。
电源故障包括电压值不符合设计要求,电源引线和插座不对,功率不足,负载能力差等。
2、调试方法:
包括多级调试和联机调试。
在调试过程中要针对可能出现的故障认真分析,直至检查出原因并且排除。
五、课程设计心得体会
本设计采用LM3S811芯片,基本上实现了利用单片机进行了一个简单的计算器设计。
允许对输入数据进行“+”、“-”、“*”、“/”运算以及LED显示。
设计的关键所在是必须非常熟悉单片机的原理与结构,同时还要对整个设计流程有很好的把握,将单片机和其他模块完整的连接。
软件和硬件都完成之后,接下来就是将软件的控制程序写入到硬件里面,从而实现软硬结合的过程,来实现设计要求。
在此设计的基础上,我们还会对它进行完善,让它不仅可以实现三位数的基本的四则运算,而且会使它的功能更加丰富,更符合现代人们的需求。
六、参考文献
【1】阎石,数字电路技术基础。
高等教育出版社,2006
【2】余锡存,单片机原理及其接口技术,西安电子科技大学出版社,2007
【3】沙占友,单片机外围电路设计,北京电子工业出版社,2003
附录
1、LM3S811的简易计算器实物图如图7所示。
图7:
实物图
2、程序清单
2.1键盘扫描程序:
voidCheck_Key(void)
{
unsignedcharrow,col,tmp1,tmp2;
tmp1=0x80;
for(row=0;row<4;row++)
{
GPIOPinWrite(GPIO_PORTD_BASE,0xF0,0xF0-tmp1);
tmp1>>=1;
if((GPIOPinRead(KEY_PORT,0x0F)&0x0f)<0x0f)
{
tmp2=0x01;
for(col=0;col<4;col++)
{
if((GPIOPinRead(KEY_PORT,0x0F)&tmp2)==0x00)
{
key_val=(3-row+(col*4));//获取键值
return;//退出循环
}
tmp2<<=1;//tmp2右移1位
}
}
}
}
2.2显示程序
while(GPIOPinRead(KEY_PORT,0x0F)==0x0f)
{
if(i<=4)
{
for(k=0;k { GPIOPinWrite(GPIO_PORTA_BASE,0xff,at[k]); BT=jiazhi[i-k-2]; GPIOPinWrite(GPIO_PORTB_BASE,0xff,bt[BT]); SysCtlDelay(1*(TheSysClock/3000)); }; } else { for(k=0;k<=2;k++) { GPIOPinWrite(GPIO_PORTA_BASE,0xff,at[k]); BT=jiazhi[i-k-2]; GPIOPinWrite(GPIO_PORTB_BASE,0xff,bt[BT]); SysCtlDelay(1*(TheSysClock/3000)); } } } 2.3简单运算程序 for(m=0;m { vil[m]=vi[m]; for(n=0;n { vi[m]*=10; } VI+=(vi[m]*v[m+1]); } VI=VI/10; for(m=0;m { vi[m]=vil[m]; } if(tp2>13) { if(a==1) { answer=VI+VJ; } elseif(a==2) { answer=VI-VJ; } elseif(a==3) { answer=VI*VJ; } elseif(a==4) { answer=VI/VJ; } } 3、元器件清单,如表1所示。 器件名称 使用数目 LM3S811 1 软键盘 1 电阻200欧姆 若干 三位数码管 1 发光二极管 2 导线 若干 表1: 原器件清单
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 LM3S811 计算器 设计