四则运算计算器

合集下载

计算器使用方法和功能

计算器使用方法和功能

计算器使用方法和功能计算器是一种用于进行数学运算的工具,它被广泛应用在日常生活和工作中。

计算器通常具有简单易用的界面和多种功能,可以执行基本的四则运算,以及一些复杂的科学运算和统计计算。

计算器的使用方法主要分为以下几个方面:一、基本运算功能:计算器最基本的功能是进行加减乘除的四则运算。

使用计算器进行基本运算很简单,只需要在输入框中输入待计算的数值,然后点击相应的运算符,计算器将会给出计算结果。

例如,输入“2 + 3”,点击“=”键,计算器会显示结果“5”。

同样地,计算减法、乘法、除法也是类似的操作。

二、科学运算功能:除了基本的四则运算,计算器通常还具备科学运算功能,如开方、平方、对数、三角函数等。

这些功能可以通过计算器上的相应按钮进行调用。

比如,若需要计算2的平方根,只需要在输入框中输入“2”,然后点击开方按钮,并点击“=”键,计算器将会给出结果“1.414213562”。

三、统计计算功能:计算器还可以用于一些统计计算,如平均值、方差、标准差等。

通过计算器上的相应按钮,可以输入一组数据,以及需要进行的统计计算,计算器将会给出相应的结果。

比如,计算一组数的平均值,只需要输入这组数中的每个数,然后点击平均值按钮,并点击“=”键,计算器将会给出平均值的结果。

四、单位转换功能:一些计算器还具备单位转换的功能,可以进行长度、重量、时间、温度等多种单位的转换。

用户只需要输入初始单位和目标单位,计算器将会给出相应的转换结果。

比如,将10英里转换为公里,用户只需要输入“10”,点击英里到公里的按钮,并点击“=”键,计算器将会给出结果“16.09344”。

五、多功能键:计算器通常还配备了一些多功能键,用于实现一些特殊的操作。

比如,清除键可以用来清除输入框中的内容;删除键可以用来删除输入框中的最后一个字符;取反键可以用来改变输入框中的数值的符号。

除了以上几个主要方面,计算器还有一些其他的使用方法和功能。

比如,计算器通常会有一个记忆功能,可以将一些结果或数值保存在记忆中,方便后续使用。

计算器使用技巧

计算器使用技巧

计算器使用技巧计算器是一种广泛使用的工具,它能够简化数学运算和计算复杂问题的步骤。

虽然计算器已经普及多年,但仍然有很多人不熟悉其使用技巧。

本文将介绍一些常用的计算器使用技巧,帮助您更加高效地使用计算器。

首先,对于基本的四则运算,计算器通常有专门的按键,包括加号 (+)、减号 (-)、乘号 (×)和除号 (÷)。

使用这些按键,您可以直接输入数学表达式,然后按下等号 (=) 进行计算。

比如,输入 2+3,然后按下等号,计算器将显示结果为 5。

其次,计算器通常还具有存储器功能。

这意味着您可以将一些数字或结果存储在存储器中,以备后续使用。

通常,计算器上会有存储器按钮,标有M 或MR,以及相关的存储器编号键。

例如,按下M+键可以将当前结果存储到存储器中,然后使用MR键可以调用存储器中的数值。

这在多次使用相同数字进行计算时非常方便。

此外,对于一些常见的数学操作,如开方、平方等,计算器通常有指定的按键。

使用这些特殊按键,您可以轻松地进行这些数学操作。

比如,要计算4的平方,可以先输入4,然后按下平方的专用按键 (通常标有 x^2),计算器将给出结果为16。

另外,有一些复杂的数学运算,如三角函数、对数、指数等,计算器也可以处理。

这些功能通常位于计算器上的第二功能键(Shift键) 或第三功能键 (Mode键) 下。

通过按下这些功能键,您可以输入并计算这些复杂的数学运算。

使用这些功能,您可以进行更高级的数学问题求解。

除了以上技巧外,还有一些其他的计算器使用技巧可以帮助您更加高效地进行计算。

比如,您可以使用括号来分组不同的数学运算,这有助于确保正确的优先级。

此外,您还可以使用记忆功能 (MRC键),将当前结果存储到存储器中,并在需要时进行调用。

这在复杂的计算过程中非常有用。

总之,计算器是一个非常方便的工具,可以帮助我们进行各种数学运算和复杂问题求解。

掌握一些计算器的使用技巧,可以让我们更加高效地进行计算,节省时间和精力。

学生计算器使用方法

学生计算器使用方法

学生计算器使用方法学生是每个国家的希望与未来,而计算器作为学生的得力助手,是学习中不可或缺的工具之一、计算器的功能多样,使用方法也各有不同。

下面我将详细介绍学生计算器的使用方法。

首先,学生计算器主要有基本四则运算、科学计算和统计运算三大类功能,我们可以根据需要选择相应的功能模式。

以下是详细的使用方法:1.基本四则运算:基本四则运算是计算器最常用的功能,包括加、减、乘、除四种运算。

使用基本四则运算功能,首先需要将计算器设置为基本计算模式。

一般来说,计算器上会有加、减、乘、除四个按键,我们可以依次按下需要进行的运算符号,然后输入数字,最后按下等号键得到结果。

例如,计算3加4的结果可以按下3+4=。

2.科学计算:科学计算是计算器的高级功能,适合进行复杂的数学运算,例如开平方、乘方、三角函数等。

使用科学计算功能,我们需要将计算器设置为科学计算模式。

一般来说,计算器上会有sin、cos、tan、x^2、√等按键,我们可以按下这些按键进行相应的运算。

例如,计算2的平方可以按下2^2=,计算sin30度可以按下sin30=。

3.统计运算:统计运算适合进行数据统计和分析,例如计算平均值、标准差、方差等。

使用统计运算功能,我们需要将计算器设置为统计计算模式。

一般来说,计算器上会有sum、avg、sd等按键,我们可以按下这些按键进行相应的运算。

例如,计算一组数据的平均值可以按下1,2,3,4,sum=4,avg=。

除了以上三大类功能,学生计算器还具有其他实用的功能,如百分数计算、倒数计算、阶乘计算、分数计算等等。

使用这些功能,我们可以更方便地进行各种数值计算和转换。

此外,学生计算器还具有存储记忆功能,可以存储一个数值或一个运算结果。

我们可以使用M+、M-、MR等按键将数据存储到存储器中,然后使用MR按键进行读取。

这个功能可以很方便地保存和调用计算结果,节省时间和精力。

总结一下,学生计算器的使用方法分为基本四则运算、科学计算、统计运算和其他实用功能。

计算器的使用

计算器的使用

计算器的使用1. 引言计算器是一种常见的工具,用于进行数学运算。

现在,大多数人都使用电子计算器或手机上的计算器应用程序来进行各种计算,但是一些基本的计算器使用技巧还是值得了解的。

本文将介绍如何正确地使用计算器进行简单和复杂的计算。

2. 基本计算计算器的最基本功能是进行四则运算:加法、减法、乘法和除法。

下面是一些基本计算的示例:2.1. 加法加法是将两个数值相加。

在计算器上输入第一个数值,然后按下加号(+)按钮,然后输入第二个数值,最后按下等号(=)按钮即可得到结果。

示例:计算 10 + 510 + 5 =结果:152.2. 减法减法是将一个数值减去另一个数值。

在计算器上输入第一个数值,然后按下减号(-)按钮,然后输入第二个数值,最后按下等号(=)按钮即可得到结果。

示例:计算 10 - 510 - 5 =结果:52.3. 乘法乘法是将两个数值相乘。

在计算器上输入第一个数值,然后按下乘号(*)按钮,然后输入第二个数值,最后按下等号(=)按钮即可得到结果。

示例:计算 10 * 510 * 5 =结果:502.4. 除法除法是将一个数值除以另一个数值。

在计算器上输入第一个数值,然后按下除号(/)按钮,然后输入第二个数值,最后按下等号(=)按钮即可得到结果。

示例:计算 10 / 510 / 5 =结果:23. 进阶计算除了基本的四则运算,计算器还可以进行一些进阶的计算,如求平方根、百分数计算等。

3.1. 求平方根要计算一个数值的平方根,可以使用计算器上的平方根按钮,通常表示为√。

输入要计算的数值,然后按下平方根按钮,最后按下等号(=)按钮即可得到结果。

示例:计算平方根 25√25 =结果:53.2. 百分数计算计算器也可以进行百分数计算,包括百分号的加法和减法、百分比的乘法和除法等。

具体操作如下:•百分号的加法和减法:先输入一个数值,然后按下加号(+)或减号(-)按钮,再输入一个百分比数值,最后按下等号(=)按钮即可得到结果。

计算器的正确使用方法

计算器的正确使用方法

计算器的正确使用方法计算器是一种便携式的电子计算工具,能够进行各种数学运算。

它的使用方法简单方便,但是一些人在使用过程中可能会遇到困惑。

本文将介绍计算器的正确使用方法,以帮助大家更好地利用计算器进行计算。

一、基本操作1. 打开计算器。

通常计算器的开关位于正面或背面,找到开关位置按下即可打开。

2. 数字输入。

计算器通常具有数字键盘,直接按下相应的数字键即可输入具体的数值。

3. 运算符输入。

计算器上通常还配备了各种运算符,如加号、减号、乘号、除号等,根据需要按下相应的运算符。

4. 进行计算。

按下等号键即可得到计算结果。

二、基本功能1. 四则运算。

使用计算器最基本的功能是进行四则运算。

通过输入数字和运算符,按下等号键即可得到计算结果。

2. 百分数计算。

计算器通常具备百分数计算功能。

输入一个数值,按下百分号键,再输入一个百分数,按下等号键即可得到计算结果。

3. 开方和平方。

许多计算器都配备了开方和平方功能。

输入一个数值,按下相应的开方或平方键,再按下等号键即可得到计算结果。

4. 小数的转换。

计算器通常具备小数之间的转换功能。

输入一个小数,按下相应的转换键,再按下等号键即可得到转换结果。

三、注意事项1. 保持计算器干净。

计算器上的按键容易受到灰尘、污垢等影响,应定期清洁计算器,保持按键灵敏。

2. 避免暴露在阳光下。

长时间暴露在阳光下会使计算器受热,可能影响计算器的正常使用。

3. 避免使用尖锐物品敲击计算器。

计算器的外壳通常是塑料制品,敲击或使用尖锐物品可能导致计算器损坏。

4. 购买正规厂家的计算器。

选择质量可靠的计算器品牌,确保使用过程中的准确性和稳定性。

四、常见问题解答1. 为什么计算结果不准确?答:可能是因为输入错误或者按键故障。

请检查输入的数字和运算符是否正确,如果经过核对仍然不准确,可能需要修理或更换计算器。

2. 如何清零计算器?答:计算器通常具有清零功能,可以通过按下"C"或"CE"键来清零。

计算器使用的公式

计算器使用的公式

计算器使用的公式计算器是一种便捷的电子设备,用于进行各种数学计算和运算。

它可以执行基本的四则运算,如加法、减法、乘法和除法,还可以进行复杂的科学计算、统计计算和金融计算等。

下面将介绍一些常见的计算器使用的公式,帮助你更好地理解和使用计算器。

1.四则运算公式:-加法公式:a+b=c(其中,a和b为加法的两个操作数,c为它们的和)-减法公式:a-b=c(其中,a为被减数,b为减数,c为它们的差)-乘法公式:a×b=c(其中,a和b为乘法的两个操作数,c为它们的积)-除法公式:a÷b=c(其中,a为被除数,b为除数,c为它们的商)2.科学计算公式:-平方公式:a^2=b(其中,a为被平方数,b为它的平方值)-开方公式:√a=b(其中,a为被开方数,b为它的平方根值)- 对数公式:loga(x) = b(其中,a为对数的底数,x为真数,b为它们的对数值)- 正弦公式:sin(x) = a(其中,x为角度值,a为它的正弦值)3.统计计算公式:- 平均值公式:平均值 = (x1 + x2 + ... + xn) / n(其中,x1、x2、..、xn为一组数据,n为数据的个数)- 方差公式:方差 = [(x1-平均值)^2 + (x2-平均值)^2 + ... + (xn-平均值)^2] / n(其中,x1、x2、..、xn为一组数据,平均值为数据的平均值,n为数据的个数)-标准差公式:标准差=√方差(其中,方差为数据的方差)4.金融计算公式:-简单利息公式:利息=本金×利率×时间(其中,本金为投资的初始金额,利率为投资的年利率,时间为投资的年数)-复利公式:复利=本金×(1+利率)^时间(其中,本金为投资的初始金额,利率为投资的年利率,时间为投资的年数)除了上述公式,计算器还可以进行百分数计算、倒数计算、阶乘计算、乘方计算等。

此外,现代计算器还具备科学计算、统计计算和金融计算等更高级的功能。

计算器的使用与技巧

计算器的使用与技巧

计算器的使用与技巧计算器是一种常见的电子设备,被广泛应用于各行各业。

无论是在学习、工作还是日常生活中,计算器都可以帮助我们进行各种数值计算和数据处理。

本文将为大家介绍使用计算器的一些基本技巧和注意事项。

一、基本操作与功能1.1 打开与关闭计算器将计算器的电源开关调至“ON”位置即可打开计算器。

通常,在不使用计算器时,建议将电源开关调至“OFF”位置,以节省电池电量并延长电池使用寿命。

1.2 四则运算计算器最基本的功能之一就是进行四则运算。

通过按下数字键、加减乘除符号键和等号键,可以轻松进行加法、减法、乘法和除法运算。

例如,要计算3加5等于几,只需按下“3 + 5 =”即可得出结果。

1.3 百分比计算计算器可以非常方便地进行百分比计算。

要计算一个数的百分之几,只需将该数乘以百分数,然后按下等号键即可得出结果。

例如,要计算100的30%,只需输入“100 × 30 =”。

1.4 括号计算在复杂的数学运算中,括号的使用可以改变运算顺序。

计算器同样支持括号计算。

要进行括号计算,只需按下左括号键、输入相应的运算式,再按下右括号键即可。

例如,要计算(3 + 5) × 2,只需输入“(3+ 5)× 2 =”。

二、高级操作与技巧2.1 科学计数法科学计数法是一种用于表示非常大或非常小的数的方法。

计算器可以方便地进行科学计数法的运算。

要输入一个科学计数法,可以使用“EE”键(表示10的幂)。

例如,要输入3×10^5,可以输入“3 × 10 EE5 =”。

2.2 统计与数据处理除了基本的四则运算,计算器还可以进行统计和数据处理。

一些高级的计算器具备统计功能,可以计算均值、标准差等统计指标。

此外,还可以使用计算器进行数据排序、查找和删除等操作。

2.3 单位转换一些计算器具备单位转换功能,可以进行长度、重量、温度等单位之间的转换。

通过输入数值和原始单位,再选择目标单位,计算器可以迅速完成单位转换计算,非常便捷。

计算器的基本操作

计算器的基本操作

计算器的基本操作在我们日常生活中,计算器是一个非常常见和实用的工具。

不论是在工作中还是在学习中,计算器的基本操作都是我们必须掌握的。

本文将介绍计算器的基本操作方法,以帮助读者更好地使用计算器。

1. 开机与关机计算器的开机和关机是使用计算器的第一步。

通常,计算器上会有一个开关按钮,我们只需要按下开关按钮即可实现开机功能,同样地,按下开关按钮一段时间可以实现关机功能。

2. 数字输入计算器的最基本功能是进行数字的计算,因此我们需要掌握数字的输入方法。

通常,计算器上会有一个十个数字的按钮,分别代表0到9的数字。

我们只需要按下相应的数字按钮,计算器上就会显示相应的数字。

3. 四则运算计算器不仅可以进行数字的输入,还可以进行各种数学运算,包括加法、减法、乘法和除法。

在计算器上,通常有四个基本运算符号的按钮,分别是加号(+)、减号(-)、乘号(×)和除号(÷)。

我们只需要按下相应的运算符号按钮,然后输入要计算的数字,最后按下等号(=)按钮,计算器就会给出计算结果。

4. 小数与分数计算除了整数计算之外,计算器还可以进行小数和分数的计算。

在计算小数时,我们可以输入小数点(.)来分隔整数部分和小数部分。

在计算分数时,通常会有一个分数键或者倒数键,通过按下相应的按钮,我们可以输入分子和分母的数值,计算器就会给出相应的结果。

5. 百分数计算百分数是日常生活中经常应用到的一种计算方式,计算器也可以帮助我们进行百分数的计算。

在计算器上,通常有一个百分号(%)的按钮,我们可以按下该按钮,然后输入相应的数字,计算器就会将其转换成对应的百分数。

6. 平方、开方与倒数计算器还具有求平方、开方和倒数的功能。

在计算器上,通常会有一个平方(x²)按钮、一个开方(√)按钮和一个倒数(1/x)按钮。

我们只需要按下相应的按钮,然后输入要进行计算的数字,计算器就会给出计算结果。

7. 清零功能在使用计算器时,我们可能会输入错误或者需要重新计算。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于单片机实现的四则运算计算器姓名学号:班级:专业名称:测控技术与仪器指导教师:东北大学2016年1月课程设计(论文)任务书目录课程设计(论文)任务书................................................................................................ i i 摘要 (1)第1章绪论 (2)1.1计算器简介 (2)1.2设计主要内容 (2)第2章系统硬件设计 (4)2.1硬件组成 (4)2.2输入模块 (4)2.3输出模块 (5)2.4运算模块 (5)第3章系统软件设计 (7)3.1 主程序 (7)3.1.1主程序框图及初始化 (7)3.1.2LCD程序框图及初始化 (8)3.1.3键盘程序框图及初始化 (9)3.1.4运算程序框图 (10)第4章调试测试与实验分析 (11)4.1 计算器调试 (11)参考文献 (12)心得体会 (13)附录硬件原理图及PCB图 (14)附录程序清单 (15)附录实物照片 (28)摘要单片机的出现是计算机制造技术高速发展的产物,它是嵌入式控制系统的核心,如今,它已广泛的应用到我们生活的各个领域,电子、科技、通信、汽车、工业等。

本设计是基于89C52RC单片机来进行的四则运算计算器系统设计,可以完成计算器的键盘输入,进行加、减、乘、除的基本四则运算,并在LCD1602液晶显示屏上显示相应的结果。

本电路采用89C52RC单片机为主要控制电路,利用4*4矩阵键盘作为计算器以及运算符的输入。

显示采用字符LCD静态显示。

软件用C语言编程,并用开发板进行演示。

关键词:计算器,89C52RC单片机,LCD,矩阵键盘第1章绪论1.1计算器简介计算器是现代人们发明的可以进行数字运算的电子机器。

现代的电子计算器能进行数学运算的手持电子机器,除显示计算结果外,还常有溢出指示、错误指示等,拥有集成电路芯片,但结构比电脑简单得多,可以说是第一代的电子计算机(电脑),且功能也较弱,但较为方便与廉价,可广泛运用于商业交易和学习计算中,是必备的学习和办公用品之一[1]。

1.2设计主要内容1.2.1设计概述本系统使用89C52RC单片机作为主控芯片,通过矩阵键盘输入,进行运算,并在LCD 上显示相应的数字和结果,主要功能如下:(1) LCD第一行显示运算符号之前的数字,第二行显示运算符号和运算符号之后的数字,按下等号键得到结果。

(2)在任何时候按下清零键则清零。

(3)当运算完第一次完整的计算之后,可以在不按任何键的情况下,进行新的一轮计算。

1.2.2设计思路本系统采用MCS-52系列单片机作为主控机,通过拓展必要的外围电路,实现对计算器的设计,具体设计如下:(1)因为想显示运算符号,用数码管不能很好的显示出来,所以采用LCD1602液晶显示器作为显示模块。

(2)计算器一般包含数字键(0~9),符号键(+,—,*,/),等号键,清零键。

故采用4*4矩阵键盘结合键盘扫描技术来达到要求。

(3)开机后1602显示‘0’,等待按键输入,当键入数字,在LCD上显示出来,计算器内部把数据储存起来,并等待下一按键输入,当键入运算符号时,计算器内部步数加1,然后等待再次输入数值,按等于号就在LCD上显示结果。

(4)清零功能:在运算的任何时候键入清零键,则把数据清零,等待下一次运算。

1.2.3电路图设计根据给的开发板的原理图在protel中设计并连接电路图,分析电路图的正确性,输出PCB图。

1.2.4软件的编程利用C语言编程,分模块测试板子的好坏,然后编写程序,在keil中进行调试。

第2章系统硬件设计2.1硬件组成硬件以89C52单片机为核心,外部扩展用LCD实现显示功能,用4*4矩阵键盘实现输入功能。

基本硬件结构图如图2.1所示。

图2.1 四则运算计算器基本硬件结构图2.2输入模块计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键的方式,在这种情况下,编程会简单,但I/0口不够用,所以采用矩阵键盘形式,本次采用4*4矩阵键盘的形式,采用四条I/O 线作为行线,四条I/O 线作为列线组成键盘。

在行线和列线的每个交叉点上设置一个按键,这样键盘上按键的个数就为4×4个。

图2-2输入模块电路图矩阵键盘功能:预设16个键位,分别是0~9数字键,加减乘除,等于和清零功能。

单片机不停扫描键盘当发现有按键按下时,若为数字键则在lcd上显示,功能键则实现对应的功能。

例如,按下5时,lcd上显示数字5,按下加号,即实现加法功能也在lcd 上显示加号。

2.3输出模块采用LCD1602来显示字符和数字,1602能够同事显示16*02即32个字符。

1602液晶模块内部的字符发生储存器已经储存了160个不同的点阵字符图形,这些字符有:阿拉伯数字,英文字母大小写,常用的符号等,每一个字符有一个固定的代码。

在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的。

每次输入指令前都要判断液晶模块是否处于忙的状态。

图2-3输出模块电路图lcd1602能够同时显示16*2个字符,用它接收单片机送来的信号,然后在上边显示相应的数字或符号,实现显示功能。

2.4运算模块单片机是靠程序运行的,并且可以修改。

通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,通过上网查找运算代码作参考,然后对单片机进行程序编写,从而实现运算功能。

第3章系统软件设计3.1 主程序3.1.1主程序框图及初始化主程序框图如图3.1所示图3.1 主程序框图主程序说明:接通电源后,先让lcd显示屏初始化显示0,然后通过键盘扫描看是否有键按下,若有键按下,则分析按下键的性能,若为数字键或清零键则通过lcd显示,若为功能键,实现功能然后lcd显示。

3.1.2LCD程序框图及初始化图3.2 LCD程序框图Lcd初始化显示0,开始后判断是否有键按下,有键按下判断是否是数字键,若为数字键则显示键值,若不是,则为功能键,再判断功能键是否是等号,若为等号,则显示计算结果,若不是实现功能,等待输入。

3.1.3键盘程序框图及初始化图3.3 键盘程序框图开始后,扫描键盘,若没有键按下则继续扫描,有键按下,若为等号键则显示结果然后结束,若不是看是否是计算符,不是计算符则读入内存然后lcd显示,若是计算符读进内存,等待输入。

3.1.4运算程序框图图3.4 运算程序框图运算程序:先判断运算符,若为加或乘则要判断运算结果是否溢出,若溢出,则lcd 显示-1表示运算错误,若为除号,判断除数是否为0,若为0,则lcd显示-1表示运算错误,其他情况则可直接送至lcd显示。

东北大学课程设计报告第4章调试测试与实验分析第4章调试测试与实验分析4.1 计算器调试(1)问题:将已编好的程序用烧录进开发板后,发现开发板上LCD显示屏只发光但是没有任何数字。

(2)分析:这种现象可能存在两个问题:1)LCD显示屏有问题2)程序存在错误(3)解决方案:重新检查开发板元器件,将开发版资料已给的1602液晶显示程序烧录开发板中,发现LCD仍然只发光不显示任何东西,初步判定是LCD未调节好或者故障,经检测是LCD显示字符的亮度未调节合适,拿螺丝刀调节,LCD就能显示字符。

(4)再次检测:再次将已编好的程序烧录进开发板,打开开发板电源,LCD上先显示‘0’字符。

矩阵键盘输入‘3*4’进行计算,发现显示屏上第一行显示‘3’,第二行显示‘4’和‘*’,然后在键盘上输入‘=’,显示屏上得出结果12。

东北大学课程设计报告参考文献参考文献[1]李小坚郝晓丽.protel DXP电路设计与制版实用教程[J].人民邮电出版社, 2015,10.[2]张秋菊刘继超. 单片机应用实训教程[J]. 化学工业出版社, 2015,10.东北大学课程设计报告心得体会心得体会周二早上开始选课题的时候,感觉我们的能力不是很强,所以想选一个简单一点的题目,然后就选了一个四则运算计算器,这个题目硬件上的确不难,但是软件上却令我们很困扰,很头疼。

周二下午写计划的时候,看到被老师打回来这么多份计划,我们就想自己好好的写一写,可是还是改了两遍,也用了一晚上的时间,但是这个计划却对我们之后几天的工作有一个很好的指导。

第二天学习protel,老师没有怎么讲,我们一开始也不会用,只能是哪里不会哪里百度,但是有的元件还是没有找到,周四早上才知道原来资料里有单片机上的元件库,于是把那个元件库导入,画图便容易多了。

我们硬件没有什么东西,于是第三天下午便开始编程了,可是我们对着程序看了一下午也没有什么头绪,反而整得自己要发疯了一样,对课设也失去了信心。

后来老师来检查的时候告诉我们要一步一步的调试,不可能一口吃个大胖子,我们就把程序分开来调试,通过从图书馆借来的资料一步一步的来,程序中不懂的地方便查书或者通过网络解决。

这几天的确是蛮痛苦的,天天早晨起来到教室里,一坐一天,感觉比上课累多了,可也有了自己的收获,没有老师指导,需要的东西基本上要自己来查找,也锻炼了自己的能力。

实物的焊接也锻炼了我们的动手能力,课程设计对于我们的益处是很大的。

也希望自己通过知识与实际的结合不断的提高自己。

附录硬件原理图及PCB图附录程序清单LCD1602#include <reg52.h>#define LCD1602_DB P0sbit LCD1602_RS = P1^0;sbit LCD1602_RW = P1^1;sbit LCD1602_E = P1^2;/* 等待液晶准备好*/void LcdWaitReady(){unsigned char sta;LCD1602_DB = 0xFF;LCD1602_RS = 0;LCD1602_RW = 1;do {LCD1602_E = 1;sta = LCD1602_DB; //读取状态字LCD1602_E = 0;} while (sta & 0x80); //bit7等于1表示液晶正忙,重复检测直到其等于0为止}/* 向LCD1602液晶写入一字节命令,cmd-待写入命令值*/void LcdWriteCmd(unsigned char cmd){LcdWaitReady();LCD1602_RS = 0;LCD1602_RW = 0;LCD1602_DB = cmd;LCD1602_E = 1;LCD1602_E = 0;}/* 向LCD1602液晶写入一字节数据,dat-待写入数据值*/void LcdWriteDat(unsigned char dat){LcdWaitReady();LCD1602_RS = 1;LCD1602_RW = 0;LCD1602_DB = dat;LCD1602_E = 1;LCD1602_E = 0;}/* 设置显示RAM起始地址,亦即光标位置,(x,y)-对应屏幕上的字符坐标*/ void LcdSetCursor(unsigned char x, unsigned char y){unsigned char addr;if (y == 0) //由输入的屏幕坐标计算显示RAM的地址addr = 0x00 + x; //第一行字符地址从0x00起始elseaddr = 0x40 + x; //第二行字符地址从0x40起始LcdWriteCmd(addr | 0x80); //设置RAM地址}/* 在液晶上显示字符串,(x,y)-对应屏幕上的起始坐标,str-字符串指针*/ void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str){LcdSetCursor(x, y); //设置起始地址while (*str != '\0') //连续写入字符串数据,直到检测到结束符{LcdWriteDat(*str++);}}/* 区域清除,清除从(x,y)坐标起始的len个字符位*/void LcdAreaClear(unsigned char x, unsigned char y, unsigned char len) {LcdSetCursor(x, y); //设置起始地址while (len--) //连续写入空格{LcdWriteDat(' ');}}/* 整屏清除*/void LcdFullClear(){LcdWriteCmd(0x01);}/* 初始化1602液晶*/void InitLcd1602(){LcdWriteCmd(0x38); //16*2显示,5*7点阵,8位数据接口LcdWriteCmd(0x0C); //显示器开,光标关闭LcdWriteCmd(0x06); //文字不动,地址自动+1LcdWriteCmd(0x01); //清屏}矩阵键盘#include <reg52.h>sbit KEY_IN_1 = P2^4;sbit KEY_IN_2 = P2^5;sbit KEY_IN_3 = P2^6;sbit KEY_IN_4 = P2^7;sbit KEY_OUT_1 = P2^3;sbit KEY_OUT_2 = P2^2;sbit KEY_OUT_3 = P2^1;sbit KEY_OUT_4 = P2^0;unsigned char code KeyCodeMap[4][4] = { //矩阵按键编号到标准键盘键码的映射表{ '1', '2', '3', 0x26 }, //数字键1、数字键2、数字键3、向上键{ '4', '5', '6', 0x25 }, //数字键4、数字键5、数字键6、向左键{ '7', '8', '9', 0x28 }, //数字键7、数字键8、数字键9、向下键{ '0', 0x1B, 0x0D, 0x27 } //数字键0、ESC键、回车键、向右键};unsigned char pdata KeySta[4][4] = { //全部矩阵按键的当前状态{1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}};extern void Reset();extern void GetResult();extern void NumKeyAction(unsigned char n);extern void OprtKeyAction(unsigned char type);extern void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str);void KeyAction(unsigned char keycode){if((keycode >= '0') && (keycode <= '9')){NumKeyAction(keycode - '0');}else if(keycode == 0x26){OprtKeyAction(0);}else if(keycode == 0x28){OprtKeyAction(1);}else if(keycode == 0x25){OprtKeyAction(2);}else if(keycode == 0x27){OprtKeyAction(3);}else if(keycode == 0x0D){GetResult();}else if(keycode == 0x1B){Reset();LcdShowStr(15, 1, "0");}}/* 按键驱动函数,检测按键动作,调度相应动作函数,需在主循环中调用*/ void KeyDriver(){unsigned char i, j;static unsigned char pdata backup[4][4] = { //按键值备份,保存前一次的值{1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1} };for (i=0; i<4; i++) //循环检测4*4的矩阵按键{for (j=0; j<4; j++){if (backup[i][j] != KeySta[i][j]) //检测按键动作{if (backup[i][j] != 0) //按键按下时执行动作{KeyAction(KeyCodeMap[i][j]); //调用按键动作函数}backup[i][j] = KeySta[i][j]; //刷新前一次的备份值}}}}/* 按键扫描函数,需在定时中断中调用,推荐调用间隔1ms */void KeyScan(){unsigned char i;static unsigned char keyout = 0; //矩阵按键扫描输出索引static unsigned char keybuf[4][4] = { //矩阵按键扫描缓冲区{0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 0xFF, 0xFF},{0xFF, 0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 0xFF, 0xFF} };//将一行的4个按键值移入缓冲区keybuf[keyout][0] = (keybuf[keyout][0] << 1) | KEY_IN_1;keybuf[keyout][1] = (keybuf[keyout][1] << 1) | KEY_IN_2;keybuf[keyout][2] = (keybuf[keyout][2] << 1) | KEY_IN_3;keybuf[keyout][3] = (keybuf[keyout][3] << 1) | KEY_IN_4;//消抖后更新按键状态for (i=0; i<4; i++) //每行4个按键,所以循环4次{if ((keybuf[keyout][i] & 0x0F) == 0x00){ //连续4次扫描值为0,即4*4ms内都是按下状态时,可认为按键已稳定的按下KeySta[keyout][i] = 0;}else if ((keybuf[keyout][i] & 0x0F) == 0x0F){ //连续4次扫描值为1,即4*4ms内都是弹起状态时,可认为按键已稳定的弹起KeySta[keyout][i] = 1;}}//执行下一次的扫描输出keyout++; //输出索引递增keyout &= 0x03; //索引值加到4即归零switch (keyout) //根据索引,释放当前输出引脚,拉低下次的输出引脚{case 0: KEY_OUT_4 = 1; KEY_OUT_1 = 0; break;case 1: KEY_OUT_1 = 1; KEY_OUT_2 = 0; break;case 2: KEY_OUT_2 = 1; KEY_OUT_3 = 0; break;case 3: KEY_OUT_3 = 1; KEY_OUT_4 = 0; break;default: break;}}主函数#include <reg52.h>unsigned char step = 0;unsigned char oprt = 0;signed long num1 = 0;signed long num2 = 0;signed long result = 0;unsigned char T0RH = 0;unsigned char T0RL = 0;void ConfigTimer0(unsigned int ms);extern void KeyScan();extern void KeyDriver();extern void InitLcd1602();extern void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str); extern void LcdFullClear();extern void LcdAreaClear(unsigned char x, unsigned char y, unsigned char len);void main(){EA = 1; //开总中断ConfigTimer0(1); //配置T0定时1msInitLcd1602(); //初始化液晶LcdShowStr(15, 1, "0"); //初始显示一个数字0while (1){KeyDriver(); //调用按键驱动}}unsigned char LongToString(unsigned char *str, signed long dat) {signed char i = 0;unsigned char len = 0;unsigned char buf[12];if(dat < 0){dat = -dat;*str++ = '-';len++;}do{buf[i++] = dat % 10;dat /= 10;}while(dat > 0);len += i;while(i-- > 0){*str++ = buf[i] + '0';}*str = '\0';return len;}void ShowOprt(unsigned char y, unsigned char type){switch(type){case 0: LcdShowStr(0, y, "+"); break;case 1: LcdShowStr(0, y, "-"); break;case 2: LcdShowStr(0, y, "*"); break;case 3: LcdShowStr(0, y, "/"); break;default: break;}}void Reset(){num1 = 0;num2 = 0;step = 0;LcdFullClear();}void NumKeyAction(unsigned char n){unsigned char len = 0;unsigned char str[12];if(step > 1){Reset();}if(step == 0){num1 = num1*10 + n;len = LongToString(str, num1);LcdShowStr(16 - len, 1, str);}else{num2 = num2*10 + n;len = LongToString(str, num2);LcdShowStr(16 - len, 1, str);}}void OprtKeyAction(unsigned char type) {unsigned char len;unsigned char str[12];if(step == 0){len = LongToString(str, num1);LcdAreaClear(0, 0, 16-len);LcdShowStr(16-len, 0, str);ShowOprt(1, type);LcdAreaClear(1, 1, 14);LcdShowStr(15, 1, "0");oprt = type;step = 1;}}void GetResult(){unsigned char len;unsigned char str[12];if(step == 1){step = 2;switch(oprt){case 0: result = num1 + num2; break;case 1: result = num1 - num2; break;case 2: result = num1 * num2; break;case 3: result = num1 / num2; break;default: break;}len = LongToString(str, num2);ShowOprt(0, oprt);LcdAreaClear(1, 0, 16-1-len);LcdShowStr(16-len, 0, str);len = LongToString(str, result);LcdShowStr(0, 1, "=");LcdAreaClear(1, 1, 16-1-len);LcdShowStr(16-len, 1, str);}}/* 配置并启动T0,ms-T0定时时间*/void ConfigTimer0(unsigned int ms){unsigned long tmp; //临时变量tmp = 11059200 / 12; //定时器计数频率tmp = (tmp * ms) / 1000; //计算所需的计数值tmp = 65536 - tmp; //计算定时器重载值tmp = tmp + 12; //补偿中断响应延时造成的误差T0RH = (unsigned char)(tmp>>8); //定时器重载值拆分为高低字节T0RL = (unsigned char)tmp;TMOD &= 0xF0; //清零T0的控制位TMOD |= 0x01; //配置T0为模式1TH0 = T0RH; //加载T0重载值TL0 = T0RL;ET0 = 1; //使能T0中断TR0 = 1; //启动T0}/* T0中断服务函数,执行按键扫描*/ void InterruptTimer0() interrupt 1{TH0 = T0RH; //重新加载重载值TL0 = T0RL;KeyScan(); //按键扫描}附录实物照片加法:减法:乘法:除法:。

相关文档
最新文档