单片机原理课程设计——OLED电子计算器
单片机课程设计报告计算器4

单片机课程设计报告计算器学院信息工程学院专业信息工程(电子信息工程方向) 年级班别 2007级1班学号 3107002948 学生姓名黄锐睿指导教师申柏华2010年 7 月1 设计要求:实现普通十进制计算器的功能,按键采用实验箱上的4×4键盘,显示采用实验箱上16×2点阵式字符LCD,键盘符号定义如下:48-<右下角的“<-”表示退格,按一次删除LCD的最后一个数字或已经输入的符号。
LCD的第一行显示运算式,第二行显示运算结果。
比如要计算12+34,在键盘上按下相应键后,LCD的第一行显示“12+34”,按下“=”号后,LCD的第二行显示“=46”。
其他功能同普通计算器相同(只实现加减乘除四则运算功能)。
2 设计思路所设计的计算器总共由4部分组成1)从键盘读取键值;2)按键对应在LCD上的显示功能;3)退格键的操作;4)对算式的运算功能。
3 设计步骤1)用CodeWarrior IDE软件,新建一个基于MC9S12XE100的工程;2)添加头文件"keyboard.h","ili9320.h","ili9320_font.h"和"myhead.h",其中"keyboard.h"在此前的实验中已经编写好并成功使用,"myhead.h"对相关变量和类型进行了声明。
3)编写main函数,实现计算器功能;4)编译,调试,完成课程设计。
4 程序流程(含流程图及详细步骤解释)5 操作方法功能定义:1)仿真开始,系统初始化,可在键盘输入想要计算的式子,形式为a+b;2)键入“=”号即可显示运算结果。
3)再按下任意键清零,开始新的计算。
6 设计过程遇到的问题以及解决思路及方法●首先是用函数ili9320_PutChar(x,y,key,0x0000,0xFFFF);显示不出想要的字符解:原来用函数ili9320_PutChar(x,y,key,0x0000,0xFFFF);显示的是key的ASCII码,要显示key值的符号就要加上‘0’,所以要用函数ili9320_PutChar(x,y,key+'0',0x0000,0xFFFF)实现。
单片机课程设计报告——简易电子计算器

1、设计要求
通过软件编程,利用 AT89S51 单片机实现设计简易的计算器功能,即可实现 简单加减乘除。实现计算器的键盘输入,进行加、减、乘、除基本四则运算,并 在显示设备上显示相应的结果。要求撰写课程设计报告,并在设计报告中列写系 统方案,画出系统框图;然后分析工作原理、画出硬件电路原理图;同时画出程 序框图,给出程序清单;之后,写出系统调试分析结果。并在最后写出对于本次 课程设计的心得体会。
二、课程设计成果要求(包括课程设计说明书、图纸、图表、软硬件等要求) 1,课程设计报告; 2,系统方案,画出系统框图; 3,分析工作原理、画出硬件电路原理图; 4,画出程序框图,给出程序清单; 5,写出系统调试分析结果 三、课程设计工作进度计划 星期一:设计硬件电路,焊接电路板; 星期二:编写程序,调试并编译生成.hex 文件; 星期三:烧录程序,结合硬件调试程序; 星期四:演示结果,撰写课程设计报告; 星期五:修改报告,打印并答辩。 四、主要参考资料 1.《单片机原理及应用》张毅刚主编,高教出版社,2012.11 2. C51 单片机有关教材和文献资料
指导教师(签名): 2013 年 12 月 20 日
系主任(签名): 2013 年 12 月 20 日
1
目录
1、设计要求.................................................................................................................. 1 2、简易计算器系统设计.............................................................................................. 1 3、简易计算器系统硬件设计...................................................................................... 1
单片机课程设计计算器

单片机课程设计 计算器一、课程目标知识目标:1. 学生能理解单片机的基本原理和功能,掌握计算器的设计流程。
2. 学生能运用所学知识,设计并实现一个具有基本运算功能的单片机计算器。
3. 学生了解并掌握单片机编程的基本语法和逻辑结构。
技能目标:1. 学生掌握使用单片机开发工具进行程序编写、调试和下载的方法。
2. 学生具备分析问题、设计算法和解决问题的能力,能运用单片机技术解决实际计算问题。
3. 学生能够通过小组合作,进行项目设计和实践,提高团队协作能力。
情感态度价值观目标:1. 学生培养对单片机技术及电子工程的兴趣,激发创新意识和探索精神。
2. 学生通过动手实践,体验成功解决问题的喜悦,增强自信心和自主学习能力。
3. 学生在学习过程中,树立正确的价值观,认识到科技发展对社会进步的重要性。
课程性质:本课程为实践性较强的课程,要求学生在理论学习的基础上,动手实践,完成单片机计算器的设计与制作。
学生特点:学生处于高年级阶段,已具备一定的电子技术基础和编程能力,具备独立思考和解决问题的能力。
教学要求:结合学生特点,注重理论与实践相结合,引导学生通过小组合作,完成课程任务,达到课程目标。
同时,关注学生的个性差异,提供个性化的辅导和支持。
在教学过程中,注重培养学生的创新能力、实践能力和团队协作能力,为后续学习打下坚实基础。
二、教学内容根据课程目标,教学内容分为以下三个部分:1. 理论知识学习:- 单片机原理与结构:讲解单片机的组成、工作原理及性能特点,对应教材第1章。
- 编程语言基础:介绍单片机编程的基本语法、逻辑结构和编程规范,对应教材第2章。
2. 实践技能培养:- 硬件设计与连接:学习如何选用合适的元器件,设计计算器硬件电路,对应教材第3章。
- 软件编程与调试:掌握单片机程序编写、调试和下载的方法,对应教材第4章。
3. 项目实践:- 计算器设计与实现:结合所学知识,分组进行计算器项目设计,包括硬件选型、电路设计、程序编写和调试等,对应教材第5章。
单片机课程设计报告简易计算器

{a=a*10+a2[i];
}
if(a2[i]!=14&&a2[i]>9)
//
{m=1; w=a2[i];
四则运算的判断
}
if(a2[i]<10&&m==1) //
第二个数
{b=b*10+a2[i];
}
if(a2[i]==13||o==1)
//
清零
{o=0;
lcd_w_cmd(0x01);
lcd_w_cmd(0x80);
4 软件调试........................................................8 个人小结...........................................................8 参考文 献........................................................... 9 附 录............................................................... 9
lcd_w_dat(a1[ge]);}
if(wan==0&&qian!=0)
//
千位显示
{lcd_w_dat(a1[qian]);
lcd_w_dat(a1[bai]);
lcd_w_dat(a1[shi]);
lcd_w_dat(a1[ge]);}
if(wan==0&&qian==0&&bai!=0) //
delay1();
E=1;
delay1();
P1=dat;
单片机计算器课程设计报告

单片机课程设计课题名称:单片机简易计算器课程设计姓名:XXXX 学号:XXXXXX 年级专业班级:XXXXXXX学院:XXXX设计时间:XXXXXXX设计地点:XXXXXX指导老师:**目录一、单片机课程设计实习目的 (2)1、增进对单片机的感性认识,加深对单片机理论方面的理解; (2)2、掌握单片机的内部功能模块的应用,如定时器/计数器、中断、存贮器、I/O口等; (2)3、了解和掌握单片机应用系统的软硬件设计过程及实现方法。
(2)二、实习课题任务 (2)1、课题:简易计算器的设计 (2)2、设计基本要求: (2)利用单片机试验箱的键盘模块以及显示模块实现百位以内加减乘除。
(2)任选一种显示方式:即中文液晶显示屏、LED数码管可任选一种。
(2)3、功能实现: (2)4、设计任务 (2)5、设计思路 (2)三、系统分析 (4)四、硬件系统设计 (5)1、键盘接口电路 (5)2、数码管显示电路 (6)五、软件系统设计 (6)六、调试结果 (7)1)10以内计算器 (7)2)100以内计算器 (7)七、结论 (8)八、体会与收获 (8)九、附件(程序): (9)1、程序一:只能进行两位数与两位数格式的四则运算 (9)2、程序二:能进行百位以内的四则运算,但一位与两位数运算结果调试不对 (18)一、单片机课程设计实习目的1、增进对单片机的感性认识,加深对单片机理论方面的理解;2、掌握单片机的内部功能模块的应用,如定时器/计数器、中断、存贮器、I/O 口等;3、了解和掌握单片机应用系统的软硬件设计过程及实现方法。
二、实习课题任务1、课题:简易计算器的设计2、设计基本要求:利用单片机试验箱的键盘模块以及显示模块实现百位以内加减乘除。
任选一种显示方式:即中文液晶显示屏、LED数码管可任选一种。
3、功能实现:计算器将完成的功能有两位数以内加、减、乘、除功能,并通过LED数码管显示输入值及结果。
4、设计任务1.扩展4*4键盘,其中10个数字,5个功能键,1个清零2.使用五位数码管接口电路3.完成十进制的四则运算(加、减、乘、除);4.实现低于三位小于255数字的连续运算;5.使用keil C软件编写程序;6.最后用ptoteus仿真;7.具有较强的抗干扰能力;8.体积小、功耗低,便于嵌入其他系统。
单片机课程设计-基于ADuC848的电子计算器

湖南大学电气与信息工程学院本科生课程设计课程:单片机课程设计题目:电子计算器专业:电气工程及其自动化班级:学号:姓名: 指导老师:设计时间:2012年6月20日一.设计任务及要求:1、任务设计一个四则运算的电子计算器,采用LED或LCD显示。
2、要求1)利用小键盘作为数据和命令的输入装置2)利用LED或LCD作为过程和结果的输出装置3)可实现基本的数据运算,包括:力口、减、乘、除、开方等4)未工作时显示北京时间,可调整5)当数据超出范围,可声音提示或报警6)可通过按键控制,随机模拟滚动显示乘法口诀表二.设计原理及原理图:通过单片机的讣算、控制功能和数码管的显示功能,行列键盘的输入功能,可以实现一个汁算器的基本功能如加、减、乘、除、乘n次方,开n次方的功能,但由于ADuC848单片机位数的限制和内存的不足,限制了显示的位数和il•算功能。
本讣算器只能在0到65535的计数范用内正确的处理和显示得数,因为采用按键复用的设讣,克服了键盘上按键不够的难题。
由于内存不足和函数调用不精确等原因,在本计算器内并没有使用keil自带的math头文件来获取乘方开方的函数,而是自己编写了一个整数的乘方开方函数,在适用范用内有可以得到正确得数。
同时,利用了中断子程序设讣了一个简易的时间显示。
可以显示出小时和分钟,同时可以看出秒钟的闪动,显示的时间可调。
在计算器进行计算的同时,时钟程序也在运行,不会因计算的过程对时间的参数造成影响。
三.设计流程图四.硬件原理图tf|rpi 2U63£::—fa. c-§8858^1^PVDDcib lr-snx _____ 7 hang3 40.1 uFX.VDD5AGND6AGND 7 VCl PrF e .AIN5 MCUG AINO MC JOI 11I12卜MM O2ngl 2P1.0.AIN1 P1.1/AIN2P1.2TAirM3/R£FIN2* P1.^AIN4/REFIM2- AVDD AGND REF! N ・ REFIN+ P1 4.AIN5 P15AIN6P1.0fAIN7/IEXC1 P1.7/AIN8/IEXC2 AINCOIWDACADuCfi49 52 5VP2.7/PA/MCLKDGND D'/DD XTAL2 XTAL1 P2iJssrr2P22/MISO P21/MO»P2.0/SCLCCK(SPh39P27PWMCLK 38P20 PWM 1 37 P25 PWMO 36P24 DISCTRL4 35DOND C17 0.1 uFDVDD332231P23 3PI SS LeO 30P22 3FI MISO Le1 29 P21 SPI MOSI Le2 28 P20SPI SCL0Cfce327I2C SDATAI内部有卜电复位47uFRESET图一:HPU 的电路图 JUMP BTN15DVDD r-o :CM 记口内郃无R u 6 ^^^10K43n83CM BTN11 r-O = CM u»o 0-4 BTN7 r-<? i Q~< BTN3[—O : 0-1BTN1Bcog:DVDDLiel-O O —BTN12BTM17 Lie2r-O j O H1-0 X BTM13J12UeOJUMP DGMDBTN15—O : O-Fl 口内部无卜持电8八八咏"gBTN11Le3BTN18r-O : O HBTN14CM BTN8BTN10 -Q = »YBTN&-O I O-H r-OO-i-~o o-1r-O j 0-40-4f —OBTN4r-O -O图2:行列键盘结构DOD1D2D3D4D5D6D7腔與<DISCTRLO 卫戲哄DISCTRL1 腔瞑DISCTRL2 卫些呻<DISCTRL3DSCTR* DISCTRL4图三:数码管连接图四:电源供电电路图中可以看出,行列式键盘的行扫描由P1 口的第四位构成,列扫描由高四位构成。
单片机 课设 简易计算器设计(减、除)

第1章.设计原理本次课程设计我用8255完成了对开关和二极发光管的控制来实现简单计算器的运算。
首先是用开关来输入数据,然后使开关发光管的相应地亮灭。
8255接法:D0接系统的D0口;CS接系统的P27;WR接系统的WR;RD接系统的RD; A口接LED;A0A1口接系统的A0,A1;C口接开关。
设计分两大部分:减法程序和除法程序。
每一部分首先输入数据,然后由控制口控制相应的二极管发光并且延时显示一段时间,然后在数据显示时间内输入第二个数据,然后由系统控制显示,显示完毕后显示计算结果,依然延时显示一段时间。
在每次的计算之前都由系统控制将第一个数据保存,以便计算。
由此,我的程序实现了简单的减、法运算。
第2章.设计方案2.1硬件部分设计方案硬件系统是指构成微机系统的实际装置,通常是由运算器、控制器、存储器、输入接口电路和输入设备、输出接口电路和输出设备等组成。
单片机实质上是一个硬件的芯片,在实际应用中,通常很难直接和被控对象进行电气连接,必须外加各种拓展接口电路、外部设备等才能构成一个单片机应用系统。
2.1.1 单片机部分PC机一台,TD-NMC+实验教学系统一台。
2.1.2 输入部分采用开关控制输入,电路配置灵活,软件结构简单。
2.1.3 显示部分在单片机应用系统中,使用的显示器主要有LED(发光二极管显示器)、LCD 液晶显示亲以及CRT接口。
本实验采用8个发光二极管亮灭来表示数字。
2.2软件部分设计方案软件部分的设计思路时将整个程序划分为开关输入部分、显示部分、运算程序部分。
运算程序部分包括减、除2个子程序。
软件流程大致如下:开始,然后是进行开关输入数据,b口控制输入,然后a,b口相关,即把开关和LED二极数码发光管相关,使开关控制二极管。
接下来使输入数据延时显示一段时间,然后输入下一个数据,先保存第一个输入数据后进行算术运算。
然后延时显示结果。
程序流程图如下:开始输入被减/除数延时显示被减/除数输入减/除数延时显示减/除数保存被减/除数计算结果延时显示结果图1.1第3章系统元器件简介3.1 SST89E554RC 简介SST89E554RC 具有在系统可编程(ISP)和在应用可编程(IAP)技术,该器件是 SST 公司推出的 8 位微控制器 FlashFlex51 家族中的一员,内置仿真程序,完全取代传统的硬件仿真器和编程器。
单片机课程设计——计算器

单片机综合课程设计——计算器一、实验目的1、学习使用单片机内部的I/O功能。
2、熟悉I/O与键盘矩阵和数码管的连接。
3、熟练掌握单片机I/O的编程。
二、实验分工三、功能实现1、采用键盘按键输入,数码管显示的模式。
2、实现计算器两位数以内的基本“+,-,*,/”运算功能。
3、扩展实现了计算器的乘方、阶乘、开平方根功能。
4、实现了计算器的退格功能,可以在运算过程中更改操作数,不影响运算继续进行。
5、数码管操作数显示两位以内,结果显示在四位数以内。
6、键盘各功能键分布如下:1 2 3 + or x a4 5 6 - or n!7 8 9 * orbackspace reset = /由于时间紧张,未来得及实现功能键的复用,只能将扩展功能与基本功能分开,用两个程序实现。
7、具体操作:开始运行程序后,数码管无显示,等待键盘输入。
通过定时中断,定时扫描按键。
有按键按下时,判断为1~9数字键,则显示在数码管上。
按下运算功能键屏幕清零,等待下一个操作数输入。
按下“=”号后,得出计算结果,结果显示于数码管上。
在操作数输入过程中,按下backspace,则数码管显示去掉最后一位数字,继续输入,不影响运算的进行。
按下“reset”,则回到初始状态,数码管显示和运算结果被清除,等待输入新的表达式。
四、实验原理1、通过MSP430 端口控制TM1638 芯片实现读取键盘状态(输入)和控制LED 数码管显示(输出)的功能。
2、键盘:键盘中A-F 分别对应KS1-KS6。
一旦有按键按下,TM1638 中相关的寄存器的值就会改变。
*注意:键盘用坐标形式表示,空白位表示本开发板暂未用到TM1638 最多可以读4个字节,不允许多读。
读数据字节只能按顺序从BYTE1-BYTE4 读取,不可跨字节读。
组合键只能是同一个KS,不同的K 引脚才能做组合键;同一个K 与不同的KS 引脚不可以做成组合键使用。
3、数码管:上图给出一个共阴数码管的连接示意图,如果让该数码管显示“0”,那你需要在GRID1 为低电平的时候让SEG1,SEG2,SEG3,SEG4,SEG5,SEG6 为高电平,SEG7 为低电平,即在00H 地址单元里面写数据3FH 就可以让数码管显示“0”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计(论文)任务书电气与电子工程学院系自动化专业13班级 1班一、课程设计(论文)题目计算器设计二、课程设计(论文)工作自2016 年 1 月 5 日起至2016 年1 月 15 日止。
三、课程设计(论文)的内容要求:实现五位数(可为带小数数)的加减乘除运算,通过按键输入十进制数据。
利用八位数码管显示运算结果。
学生签名:2016 年 1 月日课程设计(论文)评审意见(1)题目复杂程度:复杂()、较复杂()、一般()、简单()(2)总体方案的选择是否正确:正确()、较正确()、欠正确()、不正确()(3) 系统能否满足任务要求:满足()、较满足()、欠满足()、不满足()(4) 元器件选择是否合理:合理()、较合理()、欠合理()、不太合理()(5) 学习实践态度:好()、较好()、一般()、不太好()(6) 独立工作能力:强()、较强()、一般()、较差()(7) 回答问题是否正确:正确()、较正确()、基本正确()、大多不正确()(8) 图表是否符合标准:符合()、较符合()、基本符合()、大多不符合()(9) 撰写是否规范整洁:规范整洁()、较规范()、欠规范()、不太规范()总评成绩:优()、良()、中()、及格()、不及格()评阅人职称副教授2016 年 1 月日目录第一章课程设计题目分析 (1)1.1 课程设计题目要求 (1)1.2 课程设计题目要求分析 (1)第二章设计思想和设计说明 (2)2.1 设计思想 (2)2.2 设计说明 (2)第三章硬件选型 (3)3.1 单片机选型 (3)3.2 LCD选型 (3)3.3 其他器件选型 (3)3.4 使用软件说明 (4)第四章硬件原理 (4)4.1 硬件整体框图 (4)4.2 矩阵键盘电路 (5)4.3 复位电路 (5)4.4 晶振电路 (6)4.5 LCD电路 (6)第五章程序设计原理 (7)5.1 程序设计流程 (7)5.2 按键扫描程序 (8)5.3 输入数据存储与转换算法 (8)5.4 LCD驱动 (8)第六章系统功能描述 (9)第七章设计总结和心得体会 (10)附录1 STC89C52RC资料 (12)附录2 器件选型 (13)附录3 硬件原理图 (14)附录4 程序清单 (15)参考文献 (27)第一章课程设计题目分析1.1 课程设计题目要求本次课程设计要求设计一个能实现五位数(可为带小数数)的加减乘除运算的计算器,通过按键输入十进制数据。
利用八位数据码管显示运算结果。
在经过指导老师的批准后,将题目要求改为用LCD显示运算的结果。
1.2 课程设计题目要求分析分析题目要求可知,本次设计要用到的知识有键盘的设计、单片机I/O口的操作、数制的转换与数值的运算、LCD的驱动显示。
键盘设计部分的主要任务是设计一个用来输入数值、运算符以及结果显示操作的键盘。
单片机的I/O口一是用来接收外部输入的数据,主要是键盘输入的数据,并对这些数据进行判断和处理,第二是用来输出处理过后的数据,主要是将数据输出到LCD上以驱动LCD显示相应的内容。
数制转换与数值运算部分的主要任务有:将键盘输入的十进制数据进行十六进制以及二进制的转换,这些操作由单片机内部自动完成;输入数值的整型以及浮点型的处理,这部分需要通过编程实现;运算结果的整型以及浮点型的控制,这部分需要通过编程实现,LCD驱动数据的整型和浮点型向字符型的转换,这部分需要通过编程实现。
LCD驱动显示部分主要用来显示输入的两个操作数、一个操作运算符及一个运算结果。
通过以上分析可知,本次课程设计的难点在于数制转换与数值运算部分以及LCD驱动显示部分。
在进行课程设计之前需要准备的知识有:Keil软件的使用,Altium Designer软件的使用,数值转换与数值运算相关算法的了解,LCD接口以及驱动的了解。
第二章设计思想和设计说明2.1 设计思想从以上的分析可知,本次课程设计可分为两大部分,第一部分是键盘数据的输入及处理,第二部分是LCD部分的输出驱动及显示。
按照上述分类,本次设计的硬件部分采用先分开调试后联合调试的方法,即先分开调试键盘部分和LCD部分的硬件电路,待各部分的电路都调试通过后,再将两部分电路联合调试,采用这种调试方法,不仅能提高设计的效率,降低出错率,还能在出现问题时快速找到问题的所在。
考虑到LCD 底层驱动程序较为复杂,以及本人对汇编语言的掌握不是太好,本次课程设计的程序语言采用C语言进行编写,并采用模块化编程的思想,将LCD的驱动以及键盘部分的驱动分为两个模块进行编写,同样采用先独立调试再联合调试的方法。
2.2 设计说明本次设计的详细软硬件资料见附录。
设计报告中使用的简写如下:●LCD:Liquid Crystal Display(液晶显示器);●ROM:Read only memory(只读存储器);●RAM:Random access memory(随机存取存储器);●SRAM:Static random access memory(静态随机存取存储器);●PCB:Printed circuit board(印制电路板)。
第三章硬件选型3.1 单片机选型在设计初期采用AT89C51单片机进行调试,发现在LCD的驱动调试好以后占用的ROM已经接近4K,考虑到键盘部分的程序还未编写,所以最终的程序大小可能会超过4K,因此就需要扩展片外的ROM,为了节约设计的制作成本和简化设计的硬件电路,于是采用STC89C52RC单片机进行调试,STC89C52RC单片机拥有8K的Flash RAM以及512B的SRAM和5K的EEPROM,RAM大大小以及ROM的大小完全足够本次设计使用,而且价格适中。
STC89C52RC的具体特性见附录1。
3.2 LCD选型根据以往做项目的经验,LCD的驱动芯片选用SSD1306 128×64液晶显示屏驱动芯片,芯片接口支持SPI协议和IIC协议,通过单片机I/O口的模拟配置就可以驱动显示。
LCD模块选择中景园电子的0.96寸LCD模块,其内部集成SSD1306驱动芯片,支持3.3~5V电源输入,符合本次设计的要求。
3.3 其他器件选型考虑到PCB制作成本的问题,本次设计的电路板使用万能板进行焊制。
由于LCD的驱动代码较多,为了加快系统的运行速度,晶振采用11.0592MHz 的频率,同时也为了方便串口调试时的使用。
其他器件的选型见附录2。
3.4 使用软件说明本次课程设计的软硬件设计在windows 7系统下进行。
程序编写使用Keil uVision4软件;硬件电路图的绘制使用Altium Designer软件;原理框图的绘制使用Microsoft Viso软件;使用stc-isp-15xx-v6.85I软件进行程序的仿真调试与下载。
第四章硬件原理4.1 硬件整体框图硬件整体框图如图1所示。
图1 硬件整体框图本设计硬件整体分为六个小部分,分别为:矩阵键盘电路、复位电路、晶振电路、LCD电路、电源电路和STC89C52RC电路,下面对前四部分进行详细说明。
4.2 矩阵键盘电路矩阵键盘电路如图2所示,采用4×4矩阵键盘,共四行四列十六个按键,占用八个I/O口。
图2 矩阵键盘电路矩阵键盘的四个行分别与单片机的P1.0~P1.3相连接,四个列分别与单片机的P3.4~P3.7相连接,采用行列扫描的方法来检测按下的按键,具体的做法是:检测时先让一列为低电平(此时确定了列),其余几列为高电平,然后立即轮流检测各个行是否有低电平出现,如果检测到了某一行有低电平(此时确定了行),就可以确定是那个按键被按下了。
图中的S1~S10分别对用十进制数0~9,S11代表小数点,S12代表等号,S13~S16分别代表加、减、乘、除四个运算符。
4.3 复位电路复位电路如图3所示。
图3 复位电路在复位按键没有按下时,复位引脚通过下拉电阻和地GND相连接,为低电平,当复位按键按下时,复位引脚和VCC接通,使单片机复位。
4.4 晶振电路晶振电路如图4所示。
11.0592MHz的晶振两端通过两个33皮法的电容接地,组成时钟电路,通过引脚输入到单片机内部以提供时钟。
图4 晶振电路4.5 LCD电路LCD电路如图5所示。
图5 LCD电路LCD与STC89C52RC之间通过J1相连接,由单片机的I/O口模拟SPI接口驱动LCD进行工作。
接口引脚CLK、MOSI、D/C、CS1、FSO、CS2分别与单片机的P0.0~P0.5通过上拉电阻相连接。
第五章程序设计原理5.1 程序设计流程程序的设计流程图如图6所示。
下面对程序的几个主要部分进行说明。
图6 程序设计流程图5.2 按键扫描程序键盘扫描函数的定义为void keyScan();在程序中依次给PO口赋值0XFE、0XFD、0XFB、0XF7来依次使键盘的四个行线为0,然后用temp=P0来读取P0口的状态以用于后面的计算,然后将temp的值与0XF0相“与“判断temp的高四位是否有0,如果temp的高四位没有0,那么与0XF0相与的结果必然等于0XF0,就说明没有按键被按下,如果temp的高四位有0,那么与0XF0相与的结果必然不等于0XF0,就说明有按键被按下,然后再通过P0口的值来判断具体是那个按键被按下。
5.3 输入数据存储与转换算法输入的数据用两个整型变量和两个字符串来存储其定义分别为:✧int BP_dat,AP_dat✧unsigned char BP_str[]=“”,AP_str[]=“” 。
输入的数字用变量key表示,小数点前的整数部分的计算方式为BP_dat=BP_dat*10+key。
小数点后小时部分的计算方式为((float)(AP_dat))/(10^(strlen(AP_str))),然后使用语句BP_dat+((float)(AP_dat))/(10^(strlen(AP_str)))便可得到输入的操作数。
由于LCD显示函数的输入只能是字符型的数据,因此使用sprintf(BP_str,"%d",BP_dat)函数将整型的数据转换成字符型。
其他部分程序见附录4。
5.4 LCD驱动LCD的底层驱动使用SSD1306的开源驱动程序,在此底层驱动的基础上自己编写显示函数。
第六章系统功能描述本次课程设计的作品实物图如图7所示。
图7 作品实物图按键的对应关系如图8所示。
图8 按键功能对应关系作品可实现四个浮点数的加减乘除四则运算,但在计算乘除法,特别是两个浮点数的乘除法时会会产生数据精度被削减的问题,此问题暂时没有找到解决的方法,有待日后改进。
第七章设计总结和心得体会本次课程设计历时两周,在课程设计的过程中遇到了许多的问题,同时也学到了许多知识。