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

合集下载

单片机课程设计报告计算器4

单片机课程设计报告计算器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)实现。

单片机课程设计报告——简易电子计算器

单片机课程设计报告——简易电子计算器
2
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的电子计算器

单片机课程设计-基于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”。

单片机简易计算器课程设计

单片机简易计算器课程设计

课程设计题目名称简易计算器设计课程名称单片机原理及应用学生姓名班级学号2018年6 月20日目录一设计目的 (2)二总体设计及功能介绍 (2)三硬件仿真图 (3)四主程序流程图 (4)五程序源代码 (4)六课程设计体会 (17)一设计目的本设计是基于51系列单片机来进行的简单数字计算器设计,可以完成计算器的键盘输入,进行加、减、乘、除六位整数数范围内的基本四则运算,并在LED上显示相应的结果。

软件方面使用C语言编程,并用PROTUES仿真。

二总体设计及功能介绍根据功能和指标要求,本系统选用MCS-51系列单片机为主控机,实现对计算器的设计。

具体设计及功能如下:由于要设计的是简单的计算器,可以进行四则运算,为了得到较好的显示效果,采用LED 显示数据和结果;另外键盘包括数字键(0~9)、符号键(+、-、×、÷)、清除键和等号键,故只需要16 个按键即可,设计中采用集成的计算键盘;执行过程:开机显示零,等待键入数值,当键入数字,通过LED显示出来,当键入+、-、*、/运算符,计算器在内部执行数值转换和存储,并等待再次键入数值,当再键入数值后将显示键入的数值,按等号就会在LED上输出运算结果。

三硬件仿真图硬件部分比较简单,当键盘按键按下时它的那一行、那一列的端口为低电平。

因此,只要扫描行、列端口是否都为低电平就可以确定是哪个键被按下。

四主程序流程图程序的主要思想是:将按键抽象为字符,然后就是对字符的处理。

将操作数分别转化为字符串存储,操作符存储为字符形式。

然后调用compute()函数进行计算并返回结果。

具体程序及看注释还有流程图五程序源代码#include<reg51.h>#include<intrins.h>#include<ctype.h>/* isdigit()函数*/#include<stdlib.h>/* atoi()函数*/#define uchar unsigned char#define uint unsigned intuchar operand1[9], operand2[9]; /* 操作数*/uchar operator; /* 操作符*/void delay(uint);uchar keyscan();void disp(void);void buf(uint value);uint compute(uint va1,uint va2,uchar optor);uchar code table[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; /* 字符码表*/ uchar dbuf[8] = {10,10,10,10,10,10,10,10}; /* 显示缓存*/ /* 延时函数*/void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}/*******************************************键盘扫描程序将按键转化为字符并作为输出'$','#'分别表示清零键和没有键按下*******************************************/uchar keyscan(){uchar skey; /* 按键值标记变量*/ /***********************扫描键盘第1行************************/P1 = 0xfe;while((P1 & 0xf0) != 0xf0) /* 有按键按下*/ {delay(3); /* 去抖动延时*/while((P1 & 0xf0) != 0xf0) /* 仍有键按下*/{switch(P1) /* 识别按键并赋值*/{case 0xee: skey ='7'; break;case 0xde: skey ='8'; break;case 0xbe: skey ='9'; break;case 0x7e: skey ='/'; break;default:skey ='#';}while((P1 & 0xf0) != 0xf0) /* 等待按键松开*/;}}/***********************扫描键盘第2行************************/P1 = 0xfd;while((P1 & 0xf0) != 0xf0){delay(3);while((P1 & 0xf0) != 0xf0){switch(P1){case 0xed: skey ='4'; break;case 0xdd: skey ='5'; break;case 0xbd: skey ='6'; break;case 0x7d: skey ='*'; break;default:skey ='#';}while((P1 & 0xf0) != 0xf0);}}/***********************扫描键盘第3行************************/P1 = 0xfb;while((P1 & 0xf0) != 0xf0){delay(3);while((P1 & 0xf0) != 0xf0){switch(P1){case 0xeb: skey ='1'; break;case 0xdb: skey ='2'; break;case 0xbb: skey ='3'; break;case 0x7b: skey ='-'; break;default: skey ='#';}while((P1 & 0xf0) != 0xf0);}}/***********************扫描键盘第4行************************/P1 = 0xf7;while((P1 & 0xf0) != 0xf0){delay(3);while((P1 & 0xf0) != 0xf0){switch(P1){case 0xe7: skey ='$'; break;case 0xd7: skey ='0'; break;case 0xb7: skey ='='; break;case 0x77: skey ='+'; break;default:skey ='#';}while((P1 & 0xf0) != 0xf0);}}return skey;}void main(){uint value1, value2, value; /* 数值1,数值2,结果*/uchar ckey, cut1 =0, cut2 =0; /* ckey键盘输入字符*/uchar operator; /* 运算符*/ uchar i, bool=0;init:/* goto语句定位标签*/buf(0); /* 初始化*/disp();value =0;cut1 = cut2 =0;bool=0;for(i =0;i <9;i++){operand1[i] ='\0';operand2[i] ='\0';} /* 初始化*/while(1){ckey = keyscan(); /* 读取键盘*/if(ckey !='#'){ /* isdigit函数,字符是阿拉伯数字返回非0值,否则返回0 */if(isdigit(ckey)){switch(bool){case0:operand1[cut1] = ckey;operand1[cut1+1] ='\0';value1 = atoi(operand1); /* atoi函数,将字符串转化为,int整数*/cut1++;buf(value1);disp();break;case1:operand2[cut2] = ckey;operand2[cut2+1] ='\0';value2 = atoi(operand2);cut2++;buf(value2);disp();break;default:break;}}else if(ckey=='+'||ckey=='-'||ckey=='*'||ckey=='/') {bool=1;operator= ckey;buf(0);dbuf[7] =10;disp();}else if(ckey =='='){value = compute(value1,value2,operator);buf(value);disp();while(1) /* 计算结束等待清零键按下*/{ckey = keyscan();if(ckey =='$') /* 如果有清零键按下跳转到开始*/goto init;else{buf(value);disp();}}}else if(ckey =='$'){ goto init;}}disp();}}/******************************************运算函数输入:操作数和操作符输出:计算结果*******************************************/ uint compute(uint va1,uint va2,uchar optor) {uint value;switch(optor){case'+': value = va1+va2; break;case'-': value = va1-va2; break;case'*': value = va1*va2; break;case'/': value = va1/va2; break;default:break;}return value;}/*******************************************更新显示缓存输入:无符号整数输出:将输入送入显示缓存*******************************************/ void buf(uint val){uchar i;if(val ==0){dbuf[7] =0;i =6;}elsefor(i =7; val >0; i--){dbuf[i] = val %10;val /=10;}for( ; i >0; i--)dbuf[i] =10;}/*******************************************显示函数*******************************************/void disp(void){uchar bsel, n;bsel=0x01;for(n=0;n<8;n++){P2=bsel;P0=table[dbuf[n]];bsel=_crol_(bsel,1);delay(3);P0=0xff;}}六课程设计体会接到这个课题以后,我先是学习了PROTEUS软件的使用,按照题目所要求来进行分析,设计,连接电路图,调试,最终完成计算器的仿真。

单片机课程设计设计报告(多功能电子计算器设计)

单片机课程设计设计报告(多功能电子计算器设计)

韶关学院课程设计论文题目:多功能电子计算器设计学生姓名:学号:系(院):专业:电子信息科学与技术班级:指导教师姓名及职称:讲师助理实验师起止时间:2015 年9 月——2015 年12 月多功能电子计算器设计摘要:本设计是实现一个有四则运算及函数运算的多功能计算器。

它的硬件部分主要包括:一个STC89C52RC单片机芯片,一块LCD12864液晶显示屏,一个4*4的矩阵键盘,外加3个设置按键。

以STC89C52RC单片机为核心控制电路,LCD12864液晶显示屏负责显示输入输出数据,4*4矩阵键盘与3个功能按键完成电路的键入操作部分,来实现计算器的多功能。

电路简单,功能丰富。

软件部分采用C语言编写,除了实现了8位正整数的加、减、乘、除基本的四则运算,还附有“sin”、“cos”、“tan”、“平方”、“开方”、“二进制转十进制”、“十进制转二进制”、“十进制转十六进制”8个常用数学函数运算。

这样一个简易的计算器实现了多功能,比较实用和方便。

关键字:多功能;计算器;单片机;C语言Design of multifunctional electronic calculator Abstract:This design is to achieve a four operation and function of the multi-function calculator. Its hardware part mainly includes: a STC89C52RC chip, a LCD12864 LCD screen, a 4*4 matrix keyboard, plus 3 buttons. STC89C52RC microcontroller as the core control circuit, LCD12864 LCD screen is responsible for the display of input and output data, 4*4 matrix keyboard and 3 functional keys to complete the input of the circuit part, to achieve the function of the calculator. Circuit is simple, the function is rich.Part of the software using C language, in addition to achieve the 8-bit is an integer add, subtract, multiply, in addition to the four basic operations, accompanied by "sin", "cos", "tan", "square", "root", "binary to decimal", decimal to binary "," decimal system turn hexadecimal "eight commonly used mathematical functions computing. Such a simple calculator to achieve more features, more practical and convenient.Key words:multi function; calculator; single chip microcomputer; C language目录目录1 绪论 (1)1.1 概述 (1)1.2 项目设计的具体功能 (1)2 系统设计的硬件方案 (1)2.1 硬件方案的论证 (1)2.1.1 方案一:采用FPGA控制 (1)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.3 LCD12864液晶显示模块电路 (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:实物照片 (15)多功能电子计算器设计1 绪论计算器的出现为我们带来许多便捷,日常生活中的计算已经少不了它。

单片机课程设计报告(简易计算机)

单片机课程设计报告(简易计算机)

专业综合课程设计任务书班级:学号:姓名:成绩:电子与信息工程学院计算机科学系图1.2 图1.3图1.42.3键盘电路这部分有16个button构成4*4矩阵,通过p1口进行行扫描方式实现按键的读取。

硬件电路图如图1.4。

2.4总体硬件图如图1.5图1.53 软件详细设计3.1键盘扫描子程序要进行数据的计算就必须进行数据的输入,也就是确定按键输入的数值是什么,这就需要对键盘进行行扫描,从而确定究竟是那个键按下。

对于键盘的扫描,既可以使用行扫描也可以使用列扫描,这里采用行扫描的方法完成对键盘的扫描行扫描就是逐行扫描键盘,看那一行有键按下,再通过返回的见马来确定究竟是哪个按键按下。

对第一行扫描就置p1.0为底电平,其余p1口为高电平,如果有按键按下,则p1口的值就会变为别的值,再由新值来确定是那个键按下。

程序流程图如图1.6图1.6dd:mov r0,#0f7h mov r1,#0cc:mov a,r0 mov p1,amov a,p1 mov r2,asetb c mov r3,#4bb:rlc a jnc aaee:inc r1 djnz r3,bbmov a,r0 setb crrc a mov r0,ajc cc ljmp ddKAOO:LJMP KAO BBB2:LJMP BB2aa:lcall mm mov a,p1xrl a,r2 nz eeff:mov a,p1 xrl a,r2jz ff MOV A,51HCJNE A,#1,BBB2RET3.4主程序及其他部分程序下图为主程序流程图:主要有:初始化子程序,清屏子程序,固定字符显示,单元定义,端口定义,字模部分。

主程序:RG 0LJMP STARTSTART:MOV SP,#60HLCALL INT ;调用初始化子程序START1:LCALL CLEAR ;调用清屏子程序初始化子程序:INT: MOV COM,#0C0H ;设置显示起始行为第一行LCALL PRM0LCALL PRR0MOV COM,#3FH ;开显示设置LCALL PRM0LCALL PRR0RET清屏子程序:CLEAR:MOV R4,#00H。

单片机原理及应用课程设计报告简易计算器

单片机原理及应用课程设计报告简易计算器
1.2 设计任务
在本次的项目设计中,主要完成如下的设计任务: 1、简要阐述单片机技术发展的国内外现状及 LCD 动态显示和矩阵键盘 基本原理。 2、掌握 51 单片机系列某种产品的最小电路及外围扩展电路的设计方 法。 3、完成主要功能模块的硬件电路设计及必要的参数确定; 4、用软件完成原理电路图的绘制; 5、实现+、-、*、%的基本运算,运算结果用液晶进行显示。
图 2.1 系统结构框图
2
安徽新华学院信息工程学3 院单片机原理课程设计
3 硬件设计
3.1 按键模块
键盘是单片机系统中最常用的人机对话输入设备, 用户通过按键向单片机 输入指令和数据。键盘控制程序需完成的任务有:检查是否有按键按下,有键按 下时,如无硬件去抖动电路时,应用软件延时方法消除按键抖动;当有多个按键 按下时,只响应一个按键,不管持续多长时间,仅执行一次按键功能程序。现用 矩阵按键用作计算器的键盘,其结构图如 3.1 所示。
3 硬件设计.................................................................................................................3 3.1 按键模块..................................................................................................... 3 3.2 LCD 显示模块.............................................................................................3 3.3 蜂鸣器发生模块....................................................................................... 4

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

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

目录一、概述 (2)二、实验内容 (2)三、硬件设计 (3)1 设计总体框图 (3)2 实际电路 (3)(1)复位电路 (4)(2)时钟电路 (5)(3)EA/VPP(31脚)的功能和接法 (6)(4)键盘输入电路 (6)(5)数码管显示电路 (7)四、软件设计 (8)1 程序内容 (8)2 C语言程序 (9)五、Protues仿真 (9)六、设计总结 (10)七、附录 (11)1 C语言程序: (11)2焊接电路板实物图 (18)3 芯片引脚图 (19)一、概述单片机课程设计是一门实践课程,要求学生具有制作调试单片机最小系统及外设的能力,能够掌握单片机内部资源的使用。

单片机课程设计内容包括硬件设计、制作及软件编写、调试,学生在熟练掌握焊接技术的基础上,能熟练使用单片机软件开发环境Keil C51编程调试,并使用STC ISP调试工具采用串口下载方式联调制作的单片机最小系统。

单片机课程设计题目包含基本部分及扩展部分,基本部分即单片机最小系统部分,扩展部分是对单片机内部资源及外部IO口的功能扩展,使制作的单片机系统具有一定的功能。

二、实验内容自制一个单片机最小系统,包括串口下载、复位电路,采用外部小键盘输入数据,能够实现加法、乘法及一个科学计算,计算结果显示在四位一体的数码管上。

三、硬件设计1 设计总体框图2实际电路在单片机系统中,复位电路是非常关键的,当程序跑飞(运行不正常)或死机(停止运行)时,就需要进行复位。

MCS-5l 系列单片机的复位引脚RST(第9 管脚)出现2个机器周期以上的高电平时,单片机就执行复位操作。

如果RST 持续为高电平,单片机就处于循环复位状态。

复位操作通常有两种基本形式:上电自动复位和开关复位。

上电瞬间,电容两端电压不能突变,此时电容的负极和RESET 相连,电压全部加在了电阻上,RESET 的输入为高,芯片被复位。

随之+5V 电源给电容充电,电阻上的电压逐渐减小,最后约等于0,芯片正常工作。

单片机原理课程设计OLED电子计算器

单片机原理课程设计OLED电子计算器
技术进步:OLED技术不断进步,显示效果更佳 应用领域:OLED电子计算器将应用于更多领域,如智能家居、物联网等 智能化:OLED电子计算器将更加智能化,具备更多功能 环保节能:OLED电子计算器将更加环保节能,降低能耗
感谢您的观看
汇报人:
接口编程:初始化、数据传输、显示控制 等
接口信号:数据线、时钟线、控制线等
接口测试:数据传输、显示效果等
单片机对OLED显示器的控制程序实现
单片机与OLED显 示器的连接方式
单片机对OLED显 示器的控制指令
单片机对OLED显 示器的显示效果控 制
单片机对OLED显 示器的亮度、对比 度等参数的调整
单片机的定义和作用
添加项标题
定义:单片机是一种集成电路芯片,将微处理器、存储器、输 入/输出接口等集成在一起,可以独立完成特定的任务。
添加项标题
作用:单片机广泛应用于各种电子设备中,如家电、汽车、工 业控制等领域,具有体积小、功耗低、可靠性高等优点。
添加项标题
特点:单片机具有可编程性,可以通过编程实现各种功能,具 有很高的灵活性和扩展性。
解决方案: 通过查阅 资料和请 教老师, 逐步掌握 硬件设计 技能
问题:软 件编程难 度大,需 要掌握多 种编程语 言
解决方案: 通过实践 和练习, 逐步掌握 软件编程 技能
问题:项 目进度控 制困难, 容易拖延
解决方案: 制定详细 的项目计 划,定期 检查进度, 及时调整 计划
OLED电子计算器的发展趋势和未来展望
添加项标题
应用:单片机在电子计算器中的应用,可以实现计算、存储、 显示等功能,提高计算器的性能和可靠性。
单片机的分类和特点
单片机分类:根 据功能、性能、 应用领域等不同, 可以分为8位、 16位、32位等不 同类型

单片机原理课程设计-OLED电子计算器-图文

单片机原理课程设计-OLED电子计算器-图文

单片机原理课程设计-OLED电子计算器-图文一、设计目的本单片机原理课程设计旨在使用单片机和OLED显示屏设计一款简易电子计算器。

通过该设计,可以巩固和应用所学的单片机原理和电子计算器相关知识,提升学生对单片机的应用能力和创新能力。

二、设计原理该电子计算器设计的主要原理如下:1.输入处理:用户通过按键输入数字和运算符,并通过按下“=”键来结束输入。

2.运算处理:计算器根据用户输入的数字和运算符进行运算,并在OLED显示屏上显示计算结果。

3.结果显示:计算结果通过OLED显示屏进行显示。

三、设计步骤1.硬件设计:(1)主控芯片选择:选择合适的单片机作为主控芯片,例如用AT89S52(2)按键输入:设计按键输入电路,通过按键输入数字和运算符。

可以通过矩阵键盘或者独立按键来实现。

(3)OLED显示屏:连接OLED显示屏的VCC、GND、SCL和SDA引脚到单片机相应的引脚上。

2.软件设计:(1)初始化:对单片机进行初始化,包括设置按键输入引脚为输入模式,设置OLED显示屏相关引脚为输出模式,以及初始化OLED显示屏。

(2)输入处理:通过轮询按键输入的方式,获取用户输入的数字和运算符,并进行相应的处理。

(3)运算处理:根据用户输入的数字和运算符进行相应的运算处理,并得到计算结果。

(4)结果显示:将计算得到的结果通过OLED显示屏进行显示。

3.调试测试:(1)硬件连接测试:通过万用表等工具检查硬件电路连接是否正确。

(2)功能测试:测试按键输入的功能是否正常,以及计算结果是否正确显示。

四、设计要点1.按键编码:根据不同的按键,对其进行编码,便于在程序中识别。

2.输入处理:对用户输入的数字和运算符进行处理,保证输入正确并能够进行相应的运算。

3.运算处理:根据用户输入的数字和运算符进行相应的运算处理,并得到正确的结果。

4.结果显示:将计算得到的结果通过OLED显示屏进行显示,保证显示结果正确。

五、设计思考1.按键布局:合理布局按键,便于用户输入数字和运算符。

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

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

课程设计(论文)任务书电气与电子工程学院系自动化专业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 课程设计题目要求本次课程设计要求设计一个能实现五位数(可为带小数数)的加减乘除运算的计算器,通过按键输入十进制数据。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 按键功能对应关系作品可实现四个浮点数的加减乘除四则运算,但在计算乘除法,特别是两个浮点数的乘除法时会会产生数据精度被削减的问题,此问题暂时没有找到解决的方法,有待日后改进。

第七章设计总结和心得体会本次课程设计历时两周,在课程设计的过程中遇到了许多的问题,同时也学到了许多知识。

相关文档
最新文档