简易计算器单片机课程设计报告.doc

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机课程设计实验报告 简易计算器 学院:信息工程学院 班级:自动化三班 姓名: 学号:2009550335 日期:9月28日 目 录 一、设计任务和性能指标 1.1设计任务 1.2性能指标 二、设计方案 三、系统硬件设计 3.1单片机最小系统 3.2键盘接口电路 3.3数码管显示电路 3.5按键监视电路…………………………………………………6 四、系统软件设计 4.1键盘扫描子程序设计 4.2移位子程序及结果计算子程序设计 4.3显示子程序设计 4.4主程序设计 五、调试及性能分析 5.1调试步骤 5.2性能分析 六、心得体会 参考文献 附录1系统硬件电路图 附录2 附录 一、设计任务和性能指标 1.1设计任务 自制一个单片机最小系统,包括复位电路,采用外部小键盘输入数据,能够实现加法、乘法及一个科学计算,计算结果显示在四位一体的数码管上。 1.2性能指标 加法:四位加法,计算结果若超过四位则显示计算错误; 减法:四位减法,计算结果若小于零则显示计算错误; 乘法:个位数乘法; 除法:整数除法; 取对数; 开平方; 指数运算; 有清零功能 二.设计方案 按照系统设计的功能的要求,初步确定设计系统由主控模块、监测模块、显示模块、键扫描接口电路共四个模块组成,电路系统构成框图如图1.1所示。主控芯片使用51系列AT89C52单片机,采用高性能的静态80C51设计,由先进工艺制造,并带有非易失性Flash程序存储器。它是一种高性能、低功耗的8位COMS微处理芯片,市场应用最多。 监测模块采用二极管和扬声器(实验室用二极管代替)组成电路。 键盘电路采用4*4矩阵键盘电路。 显示模块采用4枚共阳极数码管和74ls273锁存芯片构成等器件构成。 整个单片机的接口电路: P0用于显示输出; P1用于键扫描输入; P2用于数码管位选控制; P3用于键盘扩展(部分运算符输入); 三.系统硬件设计 3.1单片机最小系统 单片机最小系统就是支持主芯片正常工作的最小电路部分,包括主控芯片、复位电路和晶振电路。 主控芯片选取STC89C52RC芯片,因其具有良好的性能及稳定性,价格便宜应用方便。 晶振选取11.0592MHz,晶振旁电容选取20pF。 采用按键复位电路,电阻分别选取100Ω和10K,电容选取10μF。 以下为单片机最小系统硬件电路图。 单片机最小系统硬件电路 3.2键盘接口电路 计算器所需按键有: 数字键:’1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’,’0’ 功能键:’+’, ’-‘ , ’*’, ’/ ’ , ’ = ’, ’ C( 清零)’ 扩展键:“log”,“ln”,“x^2”“小数点”,“开方” 共计25个按键,采用4*4矩阵键盘,键盘的行和列之间都有公共端相连,四行和四列的8个公共端分别接P1.0~P1.7,这样扫描P1口就可以完成对矩阵键盘的扫描,通过对16个按键进行编码,从而得到键盘的口地址,对比P1口德扫描结果和各按键的地址,我们就可以得到是哪个键按下,从而完成键盘的功能。 以下为键盘接口电路的硬件电路图 键盘接口电路 实物图: 扩展键接口电路: 3.3数码管显示电路 采用8位数码管对计算数据和结果的显示(实验时只用到了4位),这里选取共阴数码管,利用74LS244N对数码管进行驱动,为了节省I/O资源,采取动态显示的方法来显示计算数据及结果。 P0口输出显示值, P2.0~P2.7(实际操作用到P2.0-P2.3)用来作为位选端,控制哪几位数码管进行显示。 以下为数码显示电路的硬件电路图 3.4按键监视电路 按键监视电路就是在按键时,发出声音提醒,以确保输入数字有效。这里就采用5V蜂鸣器作为示音设备(实际操作用发光二极管代替)。用p3.7口输出信号。 以下为报警电路硬件电路图 按键监视电路图 系统整体硬件电路图见附录一 四、系统软件设计 4.1键盘扫描子程序设计 要进行数据的计算就必须先进行数据的输入,也就必须确定按键输入的数值是什么,这就需要对键盘进行扫描,从而确定究竟是哪个键按下。 以下为键盘扫描子程序的程序清单。 uchar Keyscan(void) { uchar i,j, temp, Buffer[4] = {0xef, 0xdf, 0xbf, 0x7f}; for(j=0; j4; j++) { P1 = Buffer[j]

文档评论(0)

文档分享 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档