




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
赣南师范学院基于C51单片机的简易计算器学院物理与电子信息学院专业电子信息工程班级电子信息工程1101学名周李兵学号110802055指导教师李秋生日期2014年1月1号2目录1绪论32系统软件设计方案421设计目标和实现方法422整体方案论证43系统硬件的设计与介绍531复位电路的设计与运用532时钟振荡器电路的设计与运用633输入电路的设计634输出电路的设计84系统程序的设计与介绍1141LED显示程序流程图设计1142读键输入程序流程图设计1343主程序流程图设计1444仿真与调试155结论17元件清单18附录1简易计算器源程序1931绪论中国古代最早采用的一种计算工具叫筹策,又被叫做算筹。这种算筹多是用竹子制成,也有用木头,兽骨充当材料的。大约二百七十枚一束,放在布袋里可以随身携带。直到今天仍在使用的珠算盘,是中国古代计算工具领域中的另一项发明,明代时期的珠算盘已经与现代的珠算盘几乎没有差别。17世纪初,西方国家的计算工具已经有了较大的发展,英国数学家纳皮尔发明的“纳皮尔算筹“,英国牧师奥却德发明了圆柱型对数计算尺,这种计算尺不仅能做加减乘除、乘方、开方运算,甚至可以计算三角函数,指数函数和对数函数,这些计算工具不仅带动了计算器的快速发展,也为实现现代计算器发展奠定了良好的基础,成为现代社会应用广泛的计算工具。1642年,年仅19岁的法国伟大科学家帕斯卡引用算盘的原理,发明了世界上第一部机械式计算器,在他的计算器中有一些互相联锁的齿轮,一个转过十位的齿轮会使另一个齿轮转过一位,人们可以像拨电话号码盘那样,把数字拨进去,计算结果就会出现在另外一个窗口中,但是只能做加减计算。1694年,莱布尼兹在德国将其改进成可以进行乘除的计算。此后,一直要到20世纪50年代末才有了电子计算器的出现。42软件设计方案21设计目标和实现方法为了满足简易计算器的基本要求,可以进行基本的运算(加减乘除),数据归零和出错警告提示,我们采用基于51单片机设计计算器,并用七段共阴级LED数码管显示数据,44的矩阵键盘实现数据的输入。22整体方案论述根据简单计算器的功能和本方案中的设计指标要求,本系统选用了MCS51单片机为主控机。通过扩展必要的外围接口电路,实现对简单计算器的设计。具体设计考虑如下由于要设计的是简单的计算器,可以进行基本的四则运算,对数字的大小范围要求不高,故我们采用可以进行四位数字的运算,选用8个LED数码管显示数据和运算结果。另外键盘包括数字键(09)、符号键(、)、清除键和等号键,故只需要16个按键即可。系统模块图图21系统模块图53系统硬件的设计31复位电路的设计上电复位的原理VCC上电时,C充电,在10K电阻上出现了电压,使单片机复位;几个毫秒后,C充满,10K电阻上电流降为0,电压也为0,使得单片机进入工作状态。手动复位的原理工作期间,按下S,C放电。S松手,C又充电,在10K电阻上出现电压,使得单片机复位。几个毫秒后,单片机进入工作状态。如SW复位键按下时RST经1K电阻接VCC,获得10K电阻上所分得电压,形成高电平,进入“复位状态”。当SW复位键断开时RST经10K电阻接地,电流降为0,电阻上的电压也将为0,RST降为低电平,开始正常工作。对于成熟产品,从降低成本角度,可以使用上电复位。另外,作为产品,最好使用上电复位。因为使用者通常没有专业知识,就知道断电通电,对他们来说,按键复位成了摆设。按键复位比较适合样品制作或者实验室调试场合,上电复位电路成本也低一些。综上所述我们在本方案中选用了上电自动复位电路。上位自动复位电路图和手动复位电路图如下图两种复位方式如图31632时钟振荡电路的设计能够产生振荡电流的电路叫做振荡电路。一般由电阻、电感、电容等元件和电子器件所组成。由电感线圈L和电容器C相连而成的LC电路是最简单的一种振荡电路,其固有频率为FSX12LC。一种不用外加激励就能自行产生交流信号输出的电路。它在电子科学技术领域中得到广泛地应用,如通信系统中发射机的载波振荡器、接收机中的本机振荡器、医疗仪器以及测量仪器中的信号源等。XTAL1反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2来自反向振荡器的输出。XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用此振动器。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。使用片内振荡器,可以节省IO引脚,减少成本,但是内部振荡器使用阻容震荡,导致它的精度不高,如果使用了串口、或者PWM等对时钟比较敏感的功能,最好还是使用外部晶体振荡。在本方案中我们选择了内部时钟方式,如下图两种时钟方式如图3233输入电路的设计每一个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线分别通过两并行接口和CPU通信。键盘的一端(列线)通过电阻接VCC,而接地是通过程序输出数字“0”实现的。键盘处理程序的任7务是确定有无键按下,判断哪一个键按下,键的功能是什么还要消除按键在闭合或断开时的抖动。两个并行口中,一个输出扫描码,使按键逐行动态接地;另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。当无按键闭合时,P10P13与P14P17之间开路;当有键闭合时,与闭合键相连的两条I/O口线之间短路。判断有无按键按下的方法是第一步,置列线P14P17为输入状态,从行线P10P13输出低电平,读入列线数据,若某一列线为低电平,则该列线上有键闭合。第二步,行线轮流输出低电平,从列线P14P17读入数据,若有某一列为低电平,则对应行线上表示有键按下。综合一二两步的结果,可以确定按键编号。但是键闭合一次只能进行一次键功能操作,因此须等到按键释放后,再进行键功能操作,否则按一次键,有可能会连续多次进行同样的键操作。键盘是单片机系统中常用的人机对话输入设备,用户通过键盘向单片机输入数据或者指令。键盘控制程序需要完成的任务有监测是否有键按下,有键按下时,在无硬件去抖的动电路时,应用软件延时方法消除按键抖动影响;当有多个键同时按下时,只处理一个按键,不管一次按键持续多长时间,仅执行一次按键功能程序。矩阵按键扫描程序是一种节省IO口的方法,按键数目越多节省IO口就越可观,思路先判断某一列(行)是否有按键按下,再判断该行(列)是那一只键按下。但是,在程序的写法上,采用了最简单的方法,使得程序的效率最高。本程序中,如果检测到了某个键按下了,就不再检测其它的按键,这完全能满足绝大多数需要,又能节省大量的CPU时间。本键盘扫描程序的优点在于不使用专门的按键延时程序,提高了CPU效率,也不用中断来扫描键盘,节省了硬件资源。另外,本键盘扫描程序,每次扫描占用CPU时最短,不论有键按下或者无键按下都可以在很短的时间完成一次扫描。本键盘扫描子程序名叫KEY,每次要扫描时用LCALLKEY调用即可。键盘可分为两类编码键盘和非编码键盘。编码键盘是较多按键(20个以上)和专用驱动芯片的组合,当按下某个键时,它能够处理按键抖动、连击等问题,直接输出按键的编码,无需系统软件干预。通用PC机使用的标准键盘就8是编码键盘。在智能仪器中,使用并行接口芯片8279或串行接口芯片HD7279均可以组成编码键盘,同时还可以兼顾数码管的显示驱动,其相关的接口电路和接口软件均可以在相关资料中得到。当系统功能比较复杂,案件数量很多时,采用编码键盘可以简化软件设计。但大多数智能仪器和电子产品的按键数目都不很多(20个以内),为了降低成本和简化电路通常采用非编码键盘。非编码键盘的电路由设计者根据需要自己决定,按键信息通过接口软件来获取。本课题需要16个按键,故选择非编码键盘,为了减少所占用的端口,由P1口采用44矩阵式键盘。图33键盘样式34输出电路设计数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳级数码管是指将所有发光二极管的阳极接到一起形成公共阳极COM的数码管。共阳级数码管在应用时应将公共极COM接到5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,对应的字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形9成公共阴极COM的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,对应的字段就不亮。LED显示器由七段发光二极管组成,排列成8字形状,因此也成为七段LED显示器,器排列形状如下图所示图34LED段码为了显示数字或符号,要为LED显示器提供代码,即字形代码。七段发光二极管,再加上一个小数点位,共计8段,因此提供的字形代码的长度正好是一个字节。简易计算器用到的数字09的共阴极字形代码如下表31所示显示字型GFEDCBA段码001111113FH1000011006H210110115BH310011114FH4110011066H511011016DH611111017DH7000011107H811111117FH10911011116FH表3509七段数码管共阴级字形代码由于数值单元存放的是二进制数,而我们大家熟悉的是十进制数,所以应将数值单元中的二进制数字转换为十进制数字,即BCD码。要通过数码管显示出当前的数值,还必须将BCD码进一步转换为七段码,转换的最终结果数据存放于显示缓冲区30H33H单元中,其中30H单元存放数值的个位七段码,31H单元存放数值的十位七段码,32H单元存放数值的百位七段码,33H单元存放数值的千位七段码。本方案设计中由P1口输出字形码,P0口输出字位码。先将存放于30H单元的数值个位七段码由P1口输出,同时P0口输出使数值个位显示数码管点亮的字位码。由于采用的是共阴数码管,所以只有该位数码管对应的P00为1,其他位P01P03位0,点亮延时10MS。然后P1口输出数值十位七段码,P01位1,数值十位数码管点亮,延时10MS。接着P1口输出数值百位七段码,P02为1,数值百位数码管点亮,延时10MS。最后P1口输出数值千位七段码,P03为1,数值千位数码管点亮,延时10MS。发光二极管LED是单片机应用系统中的一种简单而最常用的输出设备,其在系统中的主要作用是显示单片机的输出数据、状态等。因而作为典型的外围器件,LED显示单元是反映系统输出和操作输入的有效元器件。LED具备数字接口可以方便的和单片机引脚连接;它的优点是价格低,寿命长,对电压电流的要求低以及容易实现多路等,因而在单片机应用系统中获得了广泛的应用,所以在此设计中我首先选用了LED作为显示器件。如图310所示11图36数码显示管4程序设计本方案中的程序设计采用了模块化设计,各部分程序都分别进行独立的设计,最后主程序通过调用各模块程序来运行,编程中所使用的语言全部都是C语言,可以利用KEIL软件进行灵活的编译,编译完成后也可生成HEX文件,利用ISP编程软件通过串口写到单片机中。本方案程序设计中部分包括主程序模块、液晶显示模块、功能按键和控制输出等部分。下面仅仅叙述了各部分程序设计的基本思想和流程图,详细程序请参阅附录。41读键输入程序流程图为了实现键盘的数据输入功能和命令处理功能,每个键都有其处理子程序,为此每个键都对应一个码键码。为了得到被按键的键码,现使用行扫描法识别按键。列扫描信号进行读入行的信号判断该列是否有列的输出是则进行按照行列计算键盘的值,查表取得键码并返回若否则进行再次扫描。程序框图如下41图12开始初始化地址读入行扫描信号输出列扫描信号等待按键释放该列有信号四列扫描完返回根据行列计算键值返回列扫描信号位移查表得键码是否是否键盘输入流程图411342LED显示程序流程图设计LED数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们需要的数位,因此根据LED数码管的驱动方式的不同,可以分为静态式和动态式两类。A、静态显示驱动静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O埠进行驱动,或者使用如BCD码二十进位器进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O埠多,如驱动5个数码管静态显示则需要5840根I/O埠来驱动,要知道一个89S51单片机可用的I/O埠才32个呢。故实际应用时必须增加驱动器进行驱动,增加了硬体电路的复杂性。B、动态显示驱动数码管动态显示介面是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划“A,B,C,D,E,F,G,DP“的同名端连在一起,另外为每个数码管的公共极COM增加位元选通控制电路,位元选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是哪个数码管会显示出字形,取决于单片机对位元选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位元就会显示出字形,没有选通的数码管就不会亮。透过分时轮流控制各个LED数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位元数码管的点亮时间为12MS,由于人的视觉暂留现象及发光二极体的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示资料,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O埠,而且功耗更低。综上所述我们在本设计方案中选用了动态显示。146位LED显示的程序框图如图42所示图42LED显示流程图43主程序设计主程序进行程序中用到的一些存储单元的初始化,数值显示和44键盘扫描。首先,进行存储单元初始化,给数码管显示单元30H33H赋予“0000”字形数据,将数值计数单元,存储单元,23H25H,34H37H,38H,39H,3AH,3BH,3CH,赋予初值零。之后,调用键盘扫描子程序,和数码管显示数据转换程序,数码管动态显示子程序。主程序不断进行键盘扫描,数码管显示数据转换子程序和动态显示子程序。首先初始化参数,送LED低位显示“0”,功能键(“”、“”、“”、“/”、“”)位不显示。然后扫描键盘看是否有键输入,若有,读取键码。判断键码是数字键、清零键还是“”、“”、“”“/”,是数值键则送LED显示并保存数值,是清零键则做清零处理,是功能键则又判断是“”还是运算键,若是“”则计算最后结果并送LED显示,若是运算键则保存相对15运算程序的首地址。运算主程序框图如43所示图43运算主程序框图44仿真与调试在程序设计方法上,模块化程序设计是单片机应用中最常用的程序设计方法。设计的中心思想是把一个复杂应用程序按整体功能划分成若干相对独立的程序模块,各模块可以进行单独的设计、编程和调试,然后组合起来。这种方法便于设计和调试,容易实现多个程序共存,但各个模块之间的连接有一定的难度。根据需要我们可以采取自上而下的程序设计方法,此方法先从主程序开16始设计,然后再编制各从属程序和子程序,层层细化逐步完成,最终完成一个复杂程序的设计。这种方法比较符合人们的日常思维,缺点是一级的程序错误会对整个程序产生影响。功能和操作加减乘除运算和显示。A上电后,屏幕初始化,按下“ON/C”键。B计算。按下数字键,屏幕显示要运算的第一个数字,再按下符号键,然后再按下数字键,屏幕显示要运算的第二个数字,最后按下“”号键,屏幕上显示出计算结果。C如果要再次计算,可以按下“ON/C”键清零,或者按下单片机的复位键,重新初始化。硬件联系图如下图17硬件连线图445结论课程设计是培养学生运用所学的专业知识,发现,提出,分析和解决实际问题,锻炼实际动手能力的重要环节,是对学生实际工作能力的具体训练和考察,随着科学技术日新月异的发展,单片机已经成为当今计算机应用中空前活跃的领域,在生活中可以说遍布我们生活之中。这次设计进一步端正了我的学习态度,学会了实事求是,严谨的作风,对自己要严格要求。急于求成是不好的,通过此次毕业设计我深有体会。如果省略了那些必要的步骤,急于求成,不仅会浪费时间,还会适得其反。我觉得动手之前,应该有清楚的步骤,这一步是很重要的。就目前来说,我的动手能力虽然还有差距,但我知道,通过我的不懈努力,在动手方面,我会得到提高。这一点,我坚信。在此次的课程设计中我最大的体会就是进一步认识到了理论联系实践的重要性。一份耕耘,一份收获。通过这段时间的设计,让我明白科学的思维方法和学习方法是多么重要,只有这样才能够有很高的效率,才能够让自己的工作更完美。总而言之,此次毕业设计让我学到了好多平时在课堂上学不到的东西,增加了我的知识运用能力,增强我的实际操作能力。谢谢老师给我们提供这么好的机会,为我们之后走向社会奠定了一个好的基础。在我做课程设计的整个过程中,无论是在设计的选题、构思和资料的收集方面,还是在设计的研究方法以及成文定稿方面,或是在论文的写作过程中,都得到了许多同学的宝贵建议,在此一并致以诚挚的谢意。感谢所有关心、支持、帮助过我的同学。186元件清单元件数量单价(元)12M晶振11STC89C52芯片14轻触按键2001排阻105四位一体公阴数码管215电阻若干05杜邦线4001排针4001电容若干05总计19519附录1简易计算器源程序INCLUDEDEFINEUCHARUNSIGNEDCHARDEFINEUINTUNSIGNEDINTDEFINEDUANP0/数码管显示段选定义DEFINEWEIP2/数码管显示位选定义DEFINEKEYP3/键盘接口定义SBITOFFP10/关机键定义UNSIGNEDLONGINTSHU1,SHU2/进行运算的两个变量数UCHARNUM/键盘扫描返回值CHARFLAG1,FLAG_SHU,FLAG_FUHAO,FUHAO,NEWKEY/FLAG1开机标志NEWKEY新按键标志,FUHAO运算符CHARKEY_SHU/按键值UNSIGNEDCHARCODEWE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025成都银行总行金融科技岗(第三批次)招聘考前自测高频考点模拟试题及一套参考答案详解
- 2025河南新乡事业单位招录203人模拟试卷及答案详解(名校卷)
- 2025安徽阜阳市界首市“政录企用”人才引进8人模拟试卷有答案详解
- 2025广东深圳长虹聚和源科技有限公司招聘业务经理岗位人员考前自测高频考点模拟试题有答案详解
- 2025福建医科大学安全保卫人员招聘2人(四)模拟试卷及答案详解(考点梳理)
- 2025贵阳市某企业招聘工作人员考前自测高频考点模拟试题含答案详解
- 2025年山东辉煌国际物流发展有限公司社会招聘考前自测高频考点模拟试题及答案详解参考
- 2025广东惠州市博罗县碧盛环保科技有限公司招聘及考前自测高频考点模拟试题及答案详解一套
- 2025河南郑州市建筑设计研究院招聘35人考前自测高频考点模拟试题及完整答案详解
- 2025福建南平市供电服务有限公司招聘52人模拟试卷及1套完整答案详解
- 国开2025年《行政领导学》形考作业1-4答案
- 广东省广州市天河执信中学2024-2025学年九年级上学期期中考试化学试卷(含答案)
- 安徽省蚌埠市2025-2026学年高三上学期调研性监测语文(含答案)
- 医生进修6个月汇报大纲
- 外科病人的心理护理讲课件
- 2024年亳州利辛县招聘城市社区专职工作者考试真题
- 农村土地使用权转让协议书
- 部编人教版小学三年级语文上册全册教案
- DL∕T 817-2014 立式水轮发电机检修技术规程
- (高清版)DZT 0334-2020 石油天然气探明储量报告编写规范
- 2024年浙江卷1月读后续写(路痴的自我救赎)讲义-高考英语作文复习专项2
评论
0/150
提交评论