单片机课程设计设计报告多功能电子计算器设计.docx
- 文档编号:16357226
- 上传时间:2023-07-12
- 格式:DOCX
- 页数:18
- 大小:967.01KB
单片机课程设计设计报告多功能电子计算器设计.docx
《单片机课程设计设计报告多功能电子计算器设计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计设计报告多功能电子计算器设计.docx(18页珍藏版)》请在冰点文库上搜索。
单片机课程设计设计报告多功能电子计算器设计
韶关学院
课程设计论文
题目:
多功能电子计算器设计
学生姓名:
学号:
系(院):
专业:
电子信息科学与技术
班级:
指导教师姓名及职称:
讲师
助理实验师
起止时间:
2015年9月——2015年12月
多功能电子计算器设计
摘要:
本设计是实现一个有四则运算及函数运算的多功能计算器。
它的硬件部分主要包括:
一个STC89C52RC单片机芯片,一块LCD12864液晶显示屏,一个4*4的矩阵键盘,外加3个设置按键。
以STC89C52RC单片机为核心控制电路,LCD12864液晶显示屏负责显示输入输出数据,4*4矩阵键盘与3个功能按键完成电路的键入操作部分,来实现计算器的多功能。
电路简单,功能丰富。
软件部分采用C语言编写,除了实现了8位正整数的加、减、乘、除基本的四则运算,还附有“sin”、“cos”、“tan”、“平方”、“开方”、“二进制转十进制”、“十进制转二进制”、“十进制转十六进制”8个常用数学函数运算。
这样一个简易的计算器实现了多功能,比较实用和方便。
关键字:
多功能;计算器;单片机;C语言
Designofmultifunctionalelectroniccalculator
Abstract:
Thisdesignistoachieveafouroperationandfunctionofthemulti-functioncalculator.Itshardwarepartmainlyincludes:
aSTC89C52RCchip,aLCD12864LCDscreen,a4*4matrixkeyboard,plus3buttons.STC89C52RCmicrocontrollerasthecorecontrolcircuit,LCD12864LCDscreenisresponsibleforthedisplayofinputandoutputdata,4*4matrixkeyboardand3functionalkeystocompletetheinputofthecircuitpart,toachievethefunctionofthecalculator.Circuitissimple,thefunctionisrich.
PartofthesoftwareusingClanguage,inadditiontoachievethe8-bitisanintegeradd,subtract,multiply,inadditiontothefourbasicoperations,accompaniedby"sin","cos","tan","square","root","binarytodecimal",decimaltobinary","decimalsystemturnhexadecimal"eightcommonlyusedmathematicalfunctionscomputing.Suchasimplecalculatortoachievemorefeatures,morepracticalandconvenient.
Keywords:
multifunction;calculator;singlechipmicrocomputer;Clanguage
目录
1绪论1
1.1概述1
1.2项目设计的具体功能1
2系统设计的硬件方案1
2.1硬件方案的论证2
2.1.1方案一:
采用FPGA控制2
2.1.2方案二:
采用STC89C52控制2
2.1.3方案的比较与选择2
2.2系统设计总框图2
2.3单元电路的设计与分析3
2.3.1单片机电路板的设计与分析3
2.3.2键盘模块电路4
2.3.3LCD12864液晶显示模块电路4
2.3硬件方案小结5
3系统设计的软件方案5
3.1系统总体设计方案5
3.2单元模块的软件设计6
3.2.1矩阵键盘扫描6
3.2.2显示部分的软件设计7
3.3软件设计小结10
4系统调试10
4.1硬件系统的调试10
4.2软件系统的调试11
4.3整机调试11
5总结12
参考文献14
附录15
附录A:
电路原理图15
附录B:
PCB电路板图15
附录C:
实物照片16
多功能电子计算器设计
1绪论
计算器的出现为我们带来许多便捷,日常生活中的计算已经少不了它。
如今运用我们所学知识,也能够做出简单的计算器。
本文便是讲述了如何使用所学来设计一个计算器。
1.1概述
随着科技的日益更新,嵌入式系统与我们的生活愈发息息相关,一些能够使用单片机完成的工具也频繁出现于日常生活中,比如计算器。
计算器是现代人发明的可以进行数字运算的电子机器。
电子计算器功能简便,价格便宜,利于携带,稳定性好。
1.2项目设计的具体功能
该设计实现了8位正整数的加、减、乘、除基本运算功能,另有三角函数运算、平方运算、开方运算、二进制转十进制功能、十进制转二进制功能、十进制转十六进制功能。
2系统设计的硬件方案
设计一款计算器的方法很多,在此,在了解计算器各部分组成之后,列出方案,进行对比,选择出最合适的一种方案。
2.1硬件方案的论证
2.1.1方案一:
采用FPGA控制
FPGA是一种高密度的可编程逻辑器件,自从Xilinx公司1985年推出第一片FPGA以来,FPGA的集成密度和性能提高很快,其集成密度最高达500万门/片以上,系统性能可达200MHz。
由于FPGA器件集成度高,方便易用,开发和上市周期短,在数字设计和电子生产中得到迅速普及和应用,并一度在高密度的可编程逻辑器件领域中独占鳌头。
但是而基于SRAM编程的FPGA,其编程信息需存放在外部存储器上,需外部存储器芯片,且使用方法复杂,保密性差,而其对于一个简单的计算器而言,实用FPGA有点大材小用,成本太高。
2.1.2方案二:
采用STC89C52控制
单片机是单片微型机的简称,故又称为微控制器MCU(MicroControlUnit)。
通常由单块集成电路芯片组成,内部包含有计算机的基本功能部件:
中央处理器CPU,存储器和I/O接口电路等。
因此,单片机只要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。
单片机广泛用于智能产品,智能仪表,测控技术,智能接口等,具有操作简单,实用方便,价格便宜等优点,而其中AT89S52以MCS-51为内核,是单片机中最典型的代表,应用于各种控制领域。
2.1.3方案的比较与选择
通过以上两种方案论证和对比,从设计的实用性,方便性和成本出发,选择了以STC89C52单片机作为核心控制单元进行对计算器的设计。
2.2系统设计总框图
该计算器设计主要由STC89C52单片机核心控制器,4X4矩阵键盘,12864液晶显示器等组成,它的系统框图如图2.1所示。
图2.1
2.3单元电路的设计与分析
2.3.1单片机电路板的设计与分析
为了使STC89C52单片机正常稳定工作,除了电源供电(带有USB电源接入与DC电源接入)、复位按键外,还需要提供晶振电路、旁路电容滤波电路,另附上电源指示灯。
具体电路如下。
图2.2
由图2.2可知,9脚外接的是按键复位电路,18、19脚外接的是晶振电路,这样,就构成了单片机正常工作的必备电路。
同时,为使P0口正常工作,并增加其带负载能力,P0口需接了上拉电阻。
图中EA为程序存储器选择端,如CPU需要访问外部程序存储器,EA端须保持低电平(接地)。
在此,STC89C52单片机的程序存储器有8k,已经足够,不需要另外添加外部程序储存器,故EA接高电平。
2.3.2键盘模块电路
键盘电路用来实现人的运算表达式输入,达到人机交流的作用。
该电路如图2.3所示,共18个按键,其中K1~K16共16个按键组成一组4*4的矩阵键盘,行线1-4行分别接在P2.0~P2.3口,列线1-4列分别接在P2.4~P2.7口,如此实现P2口对4*4的矩阵键盘的接线。
此外,为了方便,另外增加了2个独立按键S1,S2。
他们分别接在P3.2和P3.3口。
图2.3
2.3.3LCD12864液晶显示模块电路
LCD是本次设计的重要组成部分之一,主要用于显示输入和输出。
液晶显示电路电路如图2.4所示,LCD数据端与单片机P0口相连,控制端与P1.0~P1.2连接,电位器用于调节对比度。
图2.4
2.3硬件方案小结
本章主要介绍了计算器各个主要硬件模块,包括:
单片机MCU模块,液晶显示模块,键盘电路,以及一些扩展方面的设计方案。
3系统设计的软件方案
软件编程平台选择最常用的keil软件。
由于该程序并未涉及到底层的驱动问题,因此选择方便快捷的C语言编程。
以下重点介绍核心程序算法设计。
3.1系统总体设计方案
在编程中,为了方便调试,所以采用了模块化设计。
该程序主要分为四个模块:
延时模块、12864液晶显示模块、按键控制与处理计算函数表达式的模块、主函数模块。
其中按键控制与处理计算函数表达式的模块又分为五个子模块:
start(开始)、one(第一个数输入)、two(第二个数输入)、control(特殊功能模块)、answer(运算处理模块)。
从start开始进行初始化,自动进入one,输入第一个数并按下相应的特殊功能键触发来进入下一个环节。
如果按下加减乘除功能键,进入two,再按下P3.2等号功能按键进入answer;如果按下P3.3特殊功能转换键,进入contorl,再按下相应的功能键进入answer。
3.2单元模块的软件设计
3.2.1矩阵键盘扫描
矩阵键盘扫描程序,先读出P2的低四位,后读出P2口的高四位,利用一个switch语句及变量确定某种功能,接着该按键功能会赋值(每个功能分别有属于自己特殊的值)到一个变量上,最后将变量传输给单片机,由单片机进行对该功能的作具体操作。
读键程序使用的是扫描法读键,不管键盘矩阵的规模大小,均进行两层读键。
第一层扫描行线,从P2口的值读入键盘信息(行信息),扫到某位为低电平则进入第二层;第二层扫描列线,从P2口的值读入键盘信息(列信息),扫到某位为低电平,即可确认按键位置。
独立键盘只需要按下能出现低电平即出现按键,确认判断即可。
部分相关代码如下:
P2=0xfe;
if(P2!
=0xfe)
{
delay_ms(40);
if(P2!
=0xfe)
{
switch(P2&0xf0)
{
case0xe0:
……;break;
case0xd0:
……;break;
case0xb0:
……;break;
case0x70:
……;break;
}
if(P2!
=0xfe)
delay_ms(30);
while(P2!
=0xfe);
}
}
3.2.2显示部分的软件设计
显示模块程序首先要初始化显示模块,其次要能控制光标位置。
用sbit指令定义液晶显示的控制端口,之后设置初始化、清屏、读写操作、显示位置的首地址等函数。
部分相关代码如下:
/***********LCD128*64控制脚***********/
sbitLCD_RS=P1^0;
sbitLCD_RW=P1^1;
sbitLCD_EN=P1^2;
/***********读"忙"***********/
voidRead_busy()
{
LCD_Data=0X00;
LCD_RS=0;
LCD_RW=1;
LCD_EN=1;
while(LCD_Data&0x00);
LCD_EN=0;
}
/***********写指令************/
voidLCD_write_cmd(ucharcmd)
{
Read_busy();//每次读写进行忙判断
LCD_RS=0;
LCD_RW=0;
LCD_Data=cmd;
LCD_EN=1;//EN由1——0锁存有效数据
Delay100us();
LCD_EN=0;
}
/***********写数据*************/
voidLCD_write_dat(uchardat)
{
Read_busy();//每次读写进行忙判断
LCD_RS=1;
LCD_RW=0;
LCD_Data=dat;
LCD_EN=1;
Delay100us();
LCD_EN=0;
}
/***********读数据*************/
ucharLCD_read_dat(void)
{
uchardat;//定义变量必须放在函数首位
Read_busy();//每次读写进行忙判断
LCD_Data=0xff;
LCD_RS=1;
LCD_RW=1;
LCD_EN=1;
dat=LCD_Data;
LCD_EN=0;
return(dat);
}
/***********清屏***********/
voidLCD_clearscreen()
{
LCD_write_cmd(0x01);//显示清屏
Delay100us();
}
/***********初始化***********/
voidLCD_Init(void)
{
LCD_write_cmd(0x30);//功能设置,一次送8位数据,基本指令集
LCD_write_cmd(0x0C);//整理显示,游标off,游标位置off
LCD_write_cmd(0x01);//清除DDRAM
LCD_write_cmd(0x02);//DDRAM地址归位
LCD_write_cmd(0x80);//设定DDRAM7位地址000,0000到AC
LCD_clearscreen();
}
/***********设置汉字x,y坐标***********/
voidLCD_setxy(ucharx,uchary)
{
switch(y)
{
case1:
{LCD_write_cmd(0x80|x);}break;
case2:
{LCD_write_cmd(0x90|x);}break;
case3:
{LCD_write_cmd(0x88|x);}break;
case4:
{LCD_write_cmd(0x98|x);}break;
}
}
3.3软件设计小结
本章主要介绍计算器各个软件模块详细的运行流程以及设计方案。
采用C语言程序设计以及模块化设计,都使这些程序更加清晰条理。
4系统调试
4.1硬件系统的调试
对硬件的测试主要由以下步骤:
①PCB板检查。
用万用表测试电路板是否存在短路或者断路甚至是虚焊,短路则用美工刀分开,断路则补上锡,虚焊则重新焊一次。
之后再用万用表测一次,确保无误后再进行下一个步骤。
②电源检查。
上电通过万用表测试各电源输出值是否正常,或者观察电源指示灯是否正常点亮。
去掉板上各电源输出的0R电阻,串万用表测试电流(万用表打到电流档,表笔测量为电流输出档),记录此时各电源负载的工作状态和电源的输出电流,再查芯片数据手册对比是否正常。
③主芯片检查。
主芯片供电正常后,可调试其最小系统外围电路。
这个环节容易出问题的就是复位电路工作不正常,主芯片某些引脚虚焊。
主芯片的系统配置正确与否暂时不会影响到芯片是否工作,可以最后检查。
用万用表测量外部晶振脚的电压,如果显示在2V附近,说明晶振起振了。
测量复位信号电压是否满足设计要求,上电复位时间是否满足要求;
⑤EA脚检查。
用万用表测量EA上电平,如果是5V则表明烧片子运行的硬件条件已经满足了。
⑥串口通信调试。
可提供串口调试的主芯片,需先调试好串口,再进行主芯片其他接口的调试,以便实时打印串口信息,确认程序编写是否有问题。
4.2软件系统的调试
单击仿真工具中的暂停按钮,调出源码调试窗口,窗口右上角提供多个调试按钮。
修改程序至编译后显示creatinghexfilefrom"单片机测试"...0Error(成功创建hex文件,0个错误)为止。
由于STC89C52芯片的内部存储只有8K,所以还要确保code值不超过8192,否则程序需要优化才能成功烧录。
4.3整机调试
开机运行后,各按键如图4.1所示。
其中0’~‘9’为数字按键;“+”“-”“*”“/”为运算符号;
图4.1
按下功能切换按键后,其中有sin函数,cos函数,tan函数,平方函数,开方函数,十进制转十六进制功能(d→x),十进制转二进制功能(d→b),二进制转十进制功能(b→d),函数功能按键如图4.2所示。
图4.2
烧录程序后,尝试运行,看是否正常。
图4.3是抽取随机数值进行测试结果:
图4.3
经过测试,功能暂未发现异常。
5总结
本次课程设计是多功能电子计算器设计。
它相比以往的课程设计仅考核了我们硬件技术,还考验了我们的软件编程能力,有着更上一层的要求。
有着经过几次课程设计之后积累的经验,设计原理图、PCB图,不会向以往那么迷糊。
遇到知识空白区会自己主动在网上查阅资料。
整一个硬件流程没有遇到过多的问题。
主要问题仅出现在于蜂鸣器。
由于使用了5V的有源蜂鸣器,导致蜂鸣器所发出的声音过小;换成3.3V的蜂鸣器就能正常鸣叫。
发现还有一种方法,就是在P1.6口(控制蜂鸣器的MCU脚)和VCC之间接一个上拉电阻,同样可以解决问题。
软件编程方面我主要是通过C语言来编写。
由于长期没有使用keil和编写C语言,所以我用了较多的时间在重新探索。
虽然花在里面的时间和心血很多,但每次实现一个目标任务,我都能获取到非常良好的成就感,这给予了我非常大的学习动力。
更重要的是,我发现我以前学习编程的方法是严重偏离了轨道,所以效率很低。
相信这次的进步不仅仅体现在量上,还体现在质上。
在编写多功能电子计算器的程序之前,我先查阅资料,构思设计。
本设计所涉及的按键数量是条件限制的,所以我就思索着如何能实现所有按键。
这样我就必须先做好计划,预算,还要思考如何看起来会让人觉得更直观,如何安置会让人使用起来如何更便捷。
要做到计算器的简明易懂,就不能随便潦草就开始编程。
初次写出来的程序超过了STC89C52RC的RAM内存最大值8K,经过多种方式尝试后,在不更换芯片或者是外加外部数据存储器的情况下,我将程序更进一步地优化了,把不必要的程序剔除。
除此之外,我了解到,STC89C54的RAM内存是STC89C52的2倍,即16K,而上网查阅,更推荐使用STC12C5A60S2制作计算器,其内存有足足64K,它的指令代码完全兼容传统8051,但在同样晶振的情况下,速度快8-12倍,更适合满足制作多功能科学计算的需求。
本次课程设计让我对电路设计有了进一步的掌握,对系统的分析和问题的解决有了切身的认识和体会,在此实践过程中增长了知识、丰富了经验,提高了解决问题的能力。
参考文献
[1]谭浩强.C程序设计(第四版)[M].北京:
清华大学出版社,2010.174-200.
[2]彭真真.单片机区别LCD12864的应用——科学计算器的设计与制作[J/0L].中国知网,2011.07
附录
附录A:
电路原理图
附录B:
PCB电路板图
附录C:
实物照片
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 设计 报告 多功能 电子 计算器