单片机计算器
单片机的简易计算器

单片机的简易计算器单片机简易计算器的设计与实现一、引言计算器是一种用于计算数学运算的工具,现在已经成为人们日常生活中必不可少的设备之一、在这个数字化的时代,我们经常需要进行简单的数学运算,如加、减、乘、除等。
为了满足人们的需求,我们可以使用单片机来设计和实现一个简易的计算器。
二、设计目标我们的设计目标是实现一个能够进行基本的加减乘除四则运算的简易计算器。
具体来说,我们希望计算器能够实现以下功能:1.输入两个数字进行计算,并显示结果。
2.支持加法、减法、乘法和除法运算。
3.具备简单的误操作处理能力,如输入错误提示等。
三、设计思路我们将使用8051系列单片机来设计和实现计算器。
具体的设计思路如下:1.使用矩阵键盘作为输入设备,通过扫描矩阵键盘来获取输入的数字和运算符。
2.通过数码管来显示计算结果。
3.使用中断处理器来处理键盘输入和计算结果的显示。
4.根据输入的运算符进行相应的运算,然后将结果显示在数码管上。
四、硬件设计1.选择合适的单片机,如STC89C52,AT89S52等,它们都是基于8051核心的单片机。
2.连接矩阵键盘到单片机的IO口,通过矩阵键盘的扫描来获取输入的数字和运算符。
3.连接数码管到单片机的IO口,用于显示计算结果。
五、软件设计1.在主程序中初始化单片机的IO端口和中断向量。
2.编写中断服务程序,用于处理键盘输入和计算结果的显示。
3.设计一个状态机来处理键盘输入和计算结果的显示。
4.根据状态机的状态来进行相应的运算和显示。
六、实现步骤1.编写主程序,包括对IO口和中断向量的初始化。
2.编写中断服务程序,用于处理键盘输入和计算结果的显示。
3.设计一个状态机,并实现状态机的状态转换和运算结果的计算。
4.测试并调试系统,确保计算结果的准确性。
七、总结通过使用单片机,我们成功地设计并实现了一个简易的计算器。
这个计算器不仅能够进行基本的加减乘除四则运算,还具备了简单的误操作处理能力。
在实际使用中,我们可以通过添加更多的功能和改进设计来进一步完善这个简易计算器。
基于单片机的计算器结构设计

基于单片机的计算器结构设计一、引言计算器是一种用来进行各种基本数学运算的电子设备,用于简化和加速数学计算过程。
基于单片机的计算器是一种利用单片机进行计算操作的计算器设计方案,具有更高的计算速度和更丰富的功能。
本文将介绍基于单片机的计算器结构设计方案,包括计算器的硬件设计和软件设计。
二、硬件设计1.单片机选择为了保证计算的速度和性能,我们选择了性能较高且容易获取的8051单片机作为计算器的核心控制芯片。
8051单片机具有强大的计算能力和丰富的周边资源,可以满足计算器的需求。
2.输入和输出设备计算器的输入设备采用矩阵键盘,通过键盘输入数字、运算符和功能键等。
输出设备采用液晶显示屏,用于显示输入的数字、运算结果和其他信息。
3.时钟和定时器为了实现计算器的正常运行,需要引入时钟和定时器来进行计时和计数。
其中,时钟用于控制单片机的运行频率,定时器用于产生一个固定的时间间隔来进行计时。
4.存储器计算器需要存储用户输入的数字和进行运算的结果等信息。
因此,需要引入存储器来进行数据的存储和读取。
其中,内部存储器用于存储程序代码和运算过程中的临时数据,外部存储器用于存储用户自定义的函数和变量等。
5.电源管理计算器需要一个稳定可靠的电源供电。
可以采用电池或者插电源的方式来为计算器提供电源,并通过电源管理电路来保证电源的稳定和可靠。
三、软件设计1.系统初始化计算器在开机时需要进行初始化操作,包括初始化存储器、设置时钟和定时器、设置输入输出设备等。
2.数字输入用户通过键盘输入数字,计算器将数字存储到相应的变量中,用于进行后续的运算。
3.运算操作计算器支持加、减、乘、除等基本运算操作,并可以进行括号内的优先计算。
计算器通过解析用户输入的运算表达式,并利用算法对其进行计算,并将结果存储到相应的变量中。
4.结果显示计算器将计算结果显示在液晶显示屏上,用户可以通过屏幕来查看运算结果。
5.错误处理在计算过程中,可能会出现一些错误,如除数为零等。
单片机计算器

单片机计算器关键信息项:1、产品名称:单片机计算器2、功能描述:具备基本的四则运算、存储功能等3、技术规格:处理器型号、内存容量等4、质量标准:符合相关行业标准5、交付时间:具体日期6、价格及付款方式:总价、预付款比例等7、售后服务:保修期限、维修方式等8、知识产权归属:明确相关权利归属9、保密条款:对涉及技术、商业秘密的保护约定1、产品概述11 本协议所涉及的单片机计算器是一款专为特定需求设计的计算设备。
111 该计算器采用先进的单片机技术,具备高效、准确的计算能力。
112 其外观设计简洁,操作方便,适用于多种应用场景。
2、功能与性能21 单片机计算器应具备以下基本功能:211 加法、减法、乘法和除法四则运算。
212 具备存储功能,能够保存一定数量的计算结果。
213 支持小数和整数的计算。
22 性能方面,应满足以下要求:221 计算响应速度快,结果准确无误。
222 在连续使用过程中,性能稳定,无卡顿现象。
3、技术规格31 所采用的单片机型号为具体型号。
32 内存容量不少于具体容量。
33 显示屏分辨率为具体分辨率。
4、质量标准41 产品应符合国家和行业相关的质量标准。
42 经过严格的测试和检验,确保无质量缺陷。
5、交付与验收51 交付时间为具体日期。
52 交付地点为具体地点。
53 验收标准包括功能完整性、性能稳定性等。
6、价格与付款方式61 产品总价为具体金额。
62 付款方式如下:621 签订协议后,需支付预付款预付款比例。
622 在产品交付验收合格后,支付剩余款项。
7、售后服务71 提供保修期限的免费保修服务。
72 在保修期内,非人为原因导致的故障,负责免费维修或更换。
73 保修期满后,提供有偿维修服务,收费标准合理公正。
8、知识产权归属81 产品所涉及的相关知识产权归归属方所有。
82 未经授权,任何一方不得擅自使用或转让相关知识产权。
9、保密条款91 双方应对在协议履行过程中知悉的对方技术、商业秘密予以保密。
单片机的简易计算器

单片机的简易计算器在现代科技的不断发展中,单片机已经成为了人们生活中不可或缺的一部分,其广泛应用于各个领域中。
其中,单片机作为计算器的应用是人们最为熟悉的,本文将介绍一个基于单片机的简易计算器。
1.引言计算器作为一种广泛使用的工具,早已融入人们的生活中。
随着电子技术的不断发展,计算器逐渐从机械式逐渐转变为电子式。
而单片机作为电子计算器中的核心,因其体积小、功耗低、成本低等优点,成为了电子计算器的首选之一2.原理介绍单片机简易计算器的原理是通过单片机对输入的数字和运算符进行解析,然后利用内部的算法进行计算,最后将结果显示在输出设备上。
该计算器主要包括输入模块、解析模块、计算模块以及显示模块四个部分。
3.输入模块输入模块主要包括键盘和显示屏。
键盘用于用户输入数字和运算符,显示屏用于显示输入和计算结果。
在单片机上,键盘和显示屏一般通过矩阵按键扫描和数码管显示等方式实现。
4.解析模块解析模块负责解析用户的输入,并将其转化为内部可以处理的格式。
例如,用户输入的数字和运算符将被解析为二进制码或其他表示形式。
解析模块一般通过状态机等方式实现。
5.计算模块计算模块是单片机简易计算器的核心部分,主要负责对输入的数字和运算符进行计算,并生成计算结果。
计算模块可以使用常见的算法,如加法、减法、乘法、除法,也可以实现特殊的运算功能,如开方、幂运算等。
6.显示模块显示模块负责将计算结果显示在输出设备上。
单片机简易计算器一般采用数码管显示,可以显示整数和小数。
在显示过程中,还需要考虑显示精度和位数等问题。
7.程序设计单片机简易计算器的程序设计需要考虑输入和输出的实时性和准确性。
需要设计相应的中断处理函数,实现按键的响应和显示的更新。
程序设计还需要考虑算法的优化和计算结果的溢出等问题。
8.功能扩展单片机简易计算器还可以进行功能的扩展,如添加转换功能、存储功能等。
例如,可以添加进制转换功能,实现十进制与二进制、八进制、十六进制之间的转换;还可以添加存储功能,实现计算结果的存储和读取。
51单片机的1602计算器

51单片机的1602计算器一、51 单片机和 1602 液晶显示屏简介51 单片机是指英特尔公司生产的 8051 系列单片机,它具有丰富的资源,包括 I/O 端口、定时器、中断等。
通过编程,可以让 51 单片机完成各种复杂的任务。
1602 液晶显示屏是一种字符型液晶显示模块,它能够显示两行,每行 16 个字符。
1602 液晶显示屏的控制方式相对简单,通过发送特定的指令和数据,就可以实现字符的显示。
二、硬件设计要实现 51 单片机的 1602 计算器,首先需要进行硬件设计。
硬件部分主要包括 51 单片机最小系统、1602 液晶显示屏、按键等。
51 单片机最小系统通常包括单片机芯片、晶振电路和复位电路。
晶振电路为单片机提供时钟信号,复位电路则保证单片机能够正常启动。
1602 液晶显示屏与51 单片机的连接需要用到一些数据线和控制线。
数据线用于传输要显示的数据,控制线用于控制显示屏的工作状态。
按键用于输入数字和运算符,常见的按键有数字键 0 9 、运算符+、、、/以及等于号=等。
三、软件编程软件编程是实现 51 单片机 1602 计算器的关键。
在编程过程中,需要实现以下几个主要功能:1、初始化 1602 液晶显示屏在程序开始时,需要对 1602 液晶显示屏进行初始化,设置显示模式、光标显示等。
2、按键扫描通过不断扫描按键状态,获取用户输入的数字和运算符。
3、数据处理根据用户输入的数字和运算符,进行相应的计算,并将结果存储起来。
4、显示结果将计算结果显示在 1602 液晶显示屏上。
```cinclude <reg52h> //包含 51 单片机的头文件//定义 1602 液晶显示屏的控制引脚sbit RS = P2^0;sbit RW = P2^1;sbit EN = P2^2;//定义 1602 液晶显示屏的数据引脚sbit D0 = P0^0;sbit D1 = P0^1;sbit D2 = P0^2;sbit D3 = P0^3;sbit D4 = P0^4;sbit D5 = P0^5;sbit D6 = P0^6;sbit D7 = P0^7;//定义按键引脚sbit key0 = P1^0;sbit key1 = P1^1;sbit key2 = P1^2;sbit key3 = P1^3;sbit key4 = P1^4;sbit key5 = P1^5;sbit key6 = P1^6;sbit key7 = P1^7;sbit key8 = P3^0;sbit key9 = P3^1;sbit key_add = P3^2;sbit key_sub = P3^3;sbit key_mul = P3^4;sbit key_div = P3^5;sbit key_eq = P3^6;//定义变量unsigned char num1, num2, op, result;unsigned char flag = 0; //标志位,用于判断输入状态//写指令函数void write_command(unsigned char command){RS = 0;RW = 0;EN = 0;P0 = command;EN = 1;EN = 0;}//写数据函数void write_data(unsigned char data){RS = 1;RW = 0;EN = 0;P0 = data;EN = 1;EN = 0;}//初始化 1602 液晶显示屏函数void init_1602(){write_command(0x38);// 8 位数据,2 行显示,5x7 点阵write_command(0x0c);//显示开,光标关,闪烁关write_command(0x06);//字符右移,地址指针加 1 write_command(0x01);//清屏}//按键扫描函数void key_scan(){if (key0 == 0){delay_ms(10);//消抖if (key0 == 0){if (flag == 0){num1 = num1 10 + 0;write_data('0');}else{num2 = num2 10 + 0;write_data('0');}}while (!key0);//等待按键松开}//其他按键扫描类似}//计算函数void calculate(){switch (op){case '+':result = num1 + num2;break;case '':result = num1 num2;break;case '':result = num1 num2;break;case '/':if (num2!= 0)result = num1 / num2;elsewrite_data('E');//除数为 0 ,显示错误break;}}//主函数void main(){init_1602();while (1){key_scan();if (key_add == 0 || key_sub == 0 || key_mul == 0 ||key_div == 0){delay_ms(10);//消抖if (key_add == 0){op ='+';flag = 1;write_data('+');}//其他运算符处理类似}if (key_eq == 0){delay_ms(10);//消抖if (key_eq == 0){calculate();write_data(result);num1 = 0;num2 = 0;flag = 0;}}}}```上述代码只是一个简单的示例,实际应用中还需要进行更多的优化和完善,比如处理输入错误、添加更多的功能等。
基于STC89C52单片机的计算器

基于STC89C52单片机的计算器一、引言计算器作为一种常见的电子设备,经常被人们用于日常的数学计算。
本文将介绍一种基于STC89C52单片机的计算器的设计与实现。
该计算器具有基本的四则运算功能,并且支持浮点数的运算。
二、硬件设计1.单片机选择本文选择STC89C52单片机作为计算器的核心处理器。
STC89C52是基于8051架构的单片机,具有强大的计算和控制能力,适合用于计算器的设计。
2.显示器设计本文选用16x2LCD液晶显示器作为计算器的显示器。
液晶显示器具有容量小、功耗低、反射型等优点,非常适合计算器的显示要求。
3.按键设计本文选用矩阵按键设计。
通过矩阵按键设计,可以设计出较多的按键功能,并且能够节省IO口的使用。
4.电源设计计算器使用直流电源供电,可以选择使用电池或者外部电源适配器供电。
三、软件设计计算器的软件设计主要包括界面设计和计算功能设计两个方面。
1.界面设计计算器的界面设计主要包括显示数字和调用函数。
a.显示数字通过将用户输入的数字显示到LCD液晶屏上,实现数字的显示功能。
液晶屏可以显示16个字符,可以一次性显示一个较长的数字。
b.调用函数通过监测用户按键的输入,调用相应的函数实现计算功能。
可以设置加、减、乘、除等函数,并通过按键的组合调用相应的函数。
2.计算功能设计计算器的计算功能设计主要包括四则运算和浮点数运算两个方面。
a.四则运算通过四个函数实现加、减、乘、除的功能。
在用户按下相应的运算符号键后,调用相应的函数对输入的数字进行相应的运算,并将结果显示在LCD液晶屏上。
b.浮点数运算在用户输入的数字或运算结果存在小数的情况下,可以设计相应的浮点数运算函数,通过运算可以得到带有小数点的结果,并将结果显示在LCD液晶屏上。
四、系统实现五、总结基于STC89C52单片机的计算器设计和实现包括硬件设计和软件设计两个方面。
通过合理的硬件设计和功能完善的软件设计,可以实现一款功能强大的计算器。
单片机简易计算器的设计

单片机简易计算器的设计设计一个单片机简易计算器,我们首先需要明确计算器的功能和要求。
在这个设计中,我们将实现基本的四则运算功能和一些其他的功能,如开方、求倒数等。
我们将采用Keil C51来编写程序,并在STC89C52单片机上进行实现。
首先,我们需要定义一些输入和输出的接口。
我们将使用4个按键作为操作输入,它们分别是加、减、乘和除。
此外,我们还需要一个用于计算结果的显示屏,并使用一个7段数码管来显示输出结果。
在连接电路图中,我们需要将4个按键分别连接到P0口的4个IO引脚上,并将7段数码管的引脚连接到P2口。
此外,我们还需要将一个用于切换输入的按键连接到P1口。
接下来,我们将定义一些全局变量和函数来实现我们的计算器功能。
首先,我们需要定义一些常量,如加、减、乘和除的符号。
然后,我们需要定义一些变量来存储输入的数字和操作符号,以及存储计算结果的变量。
接下来,我们需要定义一些函数来实现不同的计算功能。
我们将实现加、减、乘和除的函数,并在这些函数中将数字和操作符号作为参数进行传递。
然后,我们需要定义一个主函数来对按键进行读取和执行不同的操作。
我们将使用一个无限循环来不断读取按键输入,根据不同的按键进行不同的操作。
在主函数中,我们还需要使用一个延时函数来防止按键的抖动效应。
最后,我们需要将计算结果显示在数码管上。
我们将编写一个函数来将计算结果转换为7段数码管上的数字,并将其显示出来。
在这个函数中,我们将使用一个循环来依次点亮不同的数码管段。
整个程序的流程如下:1.初始化所有的IO口2.定义常量和全局变量3.定义计算函数4.定义显示函数5.定义主函数-读取按键输入-根据不同的按键执行不同的操作-调用计算函数进行计算-调用显示函数显示结果在这个设计中,我们使用了一个简单的计算例子,这只是一个基础框架。
如果要实现更多功能,如开方、求倒数等,只需要在函数中进行相应的修改即可。
此外,我们还可以添加一些其他的功能,如存储和读取计算结果等。
51单片机简易计算器设计

51单片机简易计算器设计一、设计思路计算器的基本功能包括加法、减法、乘法和除法。
我们可以使用按键作为输入方式,将输入的数字和操作符暂时保存在内存中,然后根据操作符进行相应的运算。
最后再将运算结果显示在数码管上。
具体设计思路如下:1.确定计算器所需的硬件组件:数码管、按键、51单片机和相关电路。
2.定义按键与数字和操作符的对应关系。
3.编写51单片机的程序,实现按键输入、运算和结果显示的功能。
二、硬件设计1.数码管:使用常见的7段数码管作为显示器,通过引脚连接到51单片机的IO口。
2.按键:使用4个按键分别表示数字输入键、加法键、减法键和等于键。
三、软件设计1.初始化:将数码管引脚设为输出模式,将按键引脚设为输入模式。
2.按键处理:采用中断方式检测按键输入,通过编程判断所按的键。
3.数字输入:将按键所对应的数字保存在变量中,最多支持四位数的输入。
4.操作符输入:将按下的操作符保存在变量中。
5.运算:根据保存的操作符进行相应的运算,并将结果保存在变量中。
6.结果显示:将结果显示在数码管上。
四、代码实现下面是一个示例代码的框架,供参考:```c#include <reg52.h>sbit SDA = P0^0; // I2C总线数据线sbit SCL = P0^1; // I2C总线时钟线//定义按键的IO口sbit BUTTON0 = P1^0; // 数字输入键sbit BUTTON1 = P1^1; // 加法键sbit BUTTON2 = P1^2; // 减法键sbit BUTTON3 = P1^3; //等于键unsigned char num1 = 0; // 第一个操作数unsigned char num2 = 0; // 第二个操作数unsigned char op = 0; // 操作符unsigned char result = 0; // 运算结果//判断按键所对应的数字或操作符void buttonif (BUTTON0 == 0) // 数字输入键//将按键所对应的数字保存在变量中//显示数字}else if (BUTTON1 == 0) // 加法键//保存操作符为加号}else if (BUTTON2 == 0) // 减法键//保存操作符为减号}else if (BUTTON3 == 0) //等于键//根据保存的操作符进行相应的运算//将结果保存在变量中//显示结果}void mainwhile (1)button(; // 按键处理}```五、总结通过以上的设计思路和示例代码,我们可以轻松地实现一个简易的计算器。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//显示1位数字
void lcdwrite_num1(uint n)
{
lcdwrite_data(n+48);
}
//显示任意位数字
void lcdwrite_num(long n)
{
uchar length=0,j,a[8]={0,0,0,0,0,0,0,0};
long nx;
if(n==0)
{
lcdwrite_data('0');
s++;
}
}
//设置lcd光标值
void lcd_setxy(uchar x,uchar y)
{
uchar address;
y&=0x0f;
if(!x)
address=0x80+y; // 0在第一行
else
address=0xc0+y; // 1在第二行
lcdwrite_com(address);
LCDEN=1;
}
//写数据
void lcdwrite_data(uchar i)
{
P0=i;
LCDRS=1;
LCDRW=0;
LCDEN=0;
delayms(1);
LCDEN=1;
}
//写字符串
void lcdwrite_string(uchar *s)
{
while(*s)
{
lcdwrite_data(*s);
lcdwrite_data(nxtemp%1000000/100000+0x30); //显示第6位小数
if((nxtemp%1000000%100000%10000%1000%100/10!=0)||(nxtemp%1000000%100000%10000%1000/100!=0)||(nxtemp%1000000%100000%10000/1000!=0)||(nxtemp%1000000%100000/10000!=0))
sbit LCDRS=P2^0;
sbit LCDRW=P2^1;
sbit LCDEN=P2^2;
uchar keyscan();
void maininit(void);
//附4:LCD1602显示程序
//#include<reg52.h>
//#include"lcd1602_8.h"
//#include<math.h>
EA=1; //开全局中断
}
//清零中断程序
void EX0_int() interrupt 0
{
if(beepflag==1) //若开声音则每一次按键均鸣叫
{
beep=0;
delayms(100);
beep=1;
}
lcdwrite_com(0x01); //显示清屏
lcd_setxy(0,0);
n=0-n;
}
nxtemp=n;
n=n;//+0.000002;
lcdwrite_num(nxtemp);
if((n-nxtemp)>0.000009)
{
lcdwrite_data('.');
n=(n-nxtemp)*10000000;
// n=n-1;
nxtemp=n;
//if(nxtemp%10!=0)
//延时1ms程序
void delayms(uint x) //12M延时1ms
{
unsigned int TempMS=x*110;
while(TempMS--);
}
//写命令
void lcdwrite_com(uchar i)
{
P0=i;
LCDRS=0;
LCDRW=0;
LCDEN=0;
delayms(1);
lcdwrite_data(nxtemp/10000000+0x30); //显示第7位小数
if((nxtemp%1000000%100000%10000%1000%100/10!=0)||(nxtemp%1000000%100000%10000%1000/100!=0)||(nxtemp%1000000%100000%10000/1000!=0)||(nxtemp%1000000%100000/10000!=0)||(nxtemp%1000000/100000!=0))
bit sqrtflag1=0; //开方1标志位
bit sqrtflag2=0; //开方2标志位
sbit keybeep=P3^3; //蜂鸣器开关按键
sbit beep=P2^7; //蜂鸣器控制口
sbit keysqrt=P3^4; //开方按键
sbit keypow=P3^5; //任意次方按键
lcdwrite_data(nxtemp%1000000%100000/10000+0x30); //显示第5位小数
if((nxtemp%1000000%100000%10000%1000%100/10!=0)||(nxtemp%1000000%100000%10000%1000/100!=0)||(nxtemp%1000000%100000%10000/1000!=0))
return;
}
if(n<0)
{
lcdwrite_data('-');
n=0-n;
}
nx=n;
for(j=0;j<8;j++)
{
if(nx>=1)
length++;
nx/=10;
}
nx=n;
for(;length>0;length--)
{
a[length-1]=nx%10+0x30;
nx/=10;
}
uchar num1[8]={0},num2[8]={0}; //按键存储数组
float ans1=0,ans2=0,ans=0,point=0; //运算数据
bit conflag=0; //继续运算标志位
bit newcalc=0; //新运算标志位
bit ac=0; //清零标志,1为清零
bit beepflag=0; //蜂鸣器标志位
lcdwrite_data(nxtemp%1000000%100000%10000/1000+0x30); //显示第4位小数
if((nxtemp%1000000%100000%10000%1000%100/10!=0)||(nxtemp%1000000%100000%10000%1000/100!=0))
lcdwrite_data(nxtemp%1000000%100000%10000%1000/100+0x30); //显示第3位小数
if(nxtemp%1000000%100000%10000%1000%100/10!=0)
lcdwrite_data(nxtemp%1000000%100000%10000%1000%100/10+0x30); //显示第2位小数
temp=temp&0xf0;
while(temp!=0xf0) //扫描列
{
delayms(10);
temp=P1;
switch(temp)
{
case 0xee:num='+';
break;
case 0xde:num='=';
break;
case 0xbe:num='.';
break;
case 0x7e:num=0;
lcdwrite_data('0');
lcd_setxy(0,0);
num='N'; //数字初始化
keynum1=0,keynum2=0,sign=0;
ans1=0,ans2=0,ans=0,point=0;
conflag=0,newcalc=0;
ac=1;
}
//声音中断程序
void EX1_int() interrupt 2
temp=P1;
temp=temp&0xf0;
while(temp!=0xf0) //扫描列
{
delayms(10);
temp=P1;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P1;
switch(temp)
{
case 0xe7:num='/';
break;
case 0xd7:num=9;
break;
}
while(temp!=0xf0) //等待松手
{
temp=P1;
temp=temp&0xf0;
}
}
P1=0xfd; //扫描第二行
temp=P1;
temp=temp&0xf0;
while(temp!=0xf0) //扫描列
{
delayms(10);
temp=P1;
temp=temp&0xf0;
//lcdwrite_data(nxtemp%10+0x30); //显示第1位小数
}
else return;
}
//初始化液晶
void lcd_init(void)
{
lcdwrite_com(0x01); //显示清屏
lcdwrite_com(0x01); //显示清屏
lcdwrite_com(0x38); //设置成1602显示
while(temp!=0xf0)