计算器单片机实训报告
关于单片机实训报告万能【六篇】
关于单片机实训报告万能【六篇】【篇1】单片机实训报告万能通过今次单片机实训,使我对单片机的认识有了更深刻的理解。
系统以51单片机为核心部件,利用汇编软件编程,通过键盘控制和数码管显示实现了基本时钟显示功能、时间调节功能,能实现本设计题目的基本要求和发挥部分。
由于时间有限和本身知识水平的限制,本系统还存在一些不够完善的地方,要作为实际应用还有一些具体细节问题需要解决。
例如:不能实现只用两个按键来控制时钟时间,还不能实现闹钟等扩展功能。
踉踉跄跄地忙碌了两周,我的时钟程序终于编译成功。
当看着自己的程序,自己成天相伴的系统能够健康的运行,真是莫大的幸福和欣慰。
我相信其中的酸甜苦辣最终都会化为甜美的甘泉。
但在这次实训中同时使我对汇编语言有了更深的认识。
当我第一次接触汇编语言就感觉很难,特别是今次实训要用到汇编语言,尽管困难重重,可我们还是克服了。
这次的实训使培养了我们严肃认真的做事作风,增强了我们之间的团队合作能力,使我们认识到了团队合作精神的重要性。
这次实训的经历也会使我终身受益,我感受到这次实训是要真真正正用心去做的一件事情,是真正的自己学习的过程和研究的过程,没有学习就不可能有研究的能力,没有自己的研究,就不会有所突破。
希望这次的经历能让我在以后学习中激励我继续进步。
【篇2】单片机实训报告万能通过这一个学期的单片机学习,我收获了很多关于单片机的知识,并且这些知识和日常的生活息息相关。
了解了一些简单程序的录入,LED显示器、键盘、和显示器的应用和原理。
LED显示器:LED显示器是由发光二管组成显示字段的器件。
通常的8段LED显示器是由8个发光二极管组成,LED显示器分共阳极和共阴极两种。
有段选码和和位选码。
当LED显示器每段的平均电流位5MA时,就有较满意的亮度,一般选择断码5-10MA 电流;位线的电流应选择40-80MA。
LED显示器的显示方式有动态和静态两种。
7289A芯片是具有SPI串行接口功能的显示键盘控制芯片,它可同时取得8位共阴极数码管和64个键的键盘矩阵。
单片机实训综合报告
一、前言单片机作为一种微型的计算机系统,因其体积小、功耗低、功能强、成本低等特点,在工业控制、智能家居、通信等领域得到了广泛的应用。
为了提高学生的实践能力,培养创新精神和工程实践能力,我们进行了单片机实训。
本文将对本次实训进行总结,分析实训过程中遇到的问题及解决方法,并对实训成果进行展示。
二、实训目的1. 熟悉单片机的基本原理和组成,掌握单片机的开发环境。
2. 学习单片机编程,了解C语言在单片机中的应用。
3. 学会使用单片机外围电路,实现基本的功能。
4. 培养学生的动手能力、团队协作能力和创新精神。
三、实训内容1. 单片机硬件电路搭建在本次实训中,我们搭建了基于51单片机的最小系统,包括单片机、晶振、复位电路、电源电路等。
通过搭建电路,使学生了解单片机的硬件组成,为后续编程打下基础。
2. 单片机编程使用C语言对单片机进行编程,实现以下功能:(1)LED流水灯:通过控制LED灯的亮灭,实现流水灯效果。
(2)按键控制LED灯:通过按键控制LED灯的开关。
(3)数码管显示:将当前时间显示在数码管上。
3. 单片机外围电路应用(1)使用继电器控制外部设备:通过单片机控制继电器,实现外部设备的开关。
(2)使用蜂鸣器发出声音:通过单片机控制蜂鸣器,实现不同频率的声音。
四、实训过程及问题解决1. 电路搭建过程中,遇到电路连接错误、元器件损坏等问题。
通过查阅资料、请教老师,逐一解决了这些问题。
2. 编程过程中,遇到程序运行不稳定、功能实现不完善等问题。
通过分析程序逻辑、修改代码,使程序运行稳定,功能完善。
3. 在单片机外围电路应用过程中,遇到继电器控制不灵敏、蜂鸣器声音不稳定等问题。
通过调整电路参数、优化代码,使继电器控制灵敏,蜂鸣器声音稳定。
五、实训成果1. 完成了基于51单片机的最小系统搭建。
2. 编写并调试了LED流水灯、按键控制LED灯、数码管显示等程序。
3. 应用单片机外围电路,实现了继电器控制和蜂鸣器发声等功能。
单片机计算器报告
基于51单片机实验报告(计算器)一.计算器模块1.功能介绍利用8051 单片机硬件资源和常用外围电路如LCD1602,七段数码管,时钟(DS1302)温度传感器(18B20)等实现一个能做简单四则运算,并具有时钟显示,温度显示附加功能的计算器。
2.设计方案利用STC89C52为内核的单片机,PC机。
四则运算利用4*4矩阵键盘实现从0—9和运算符号的输入,并将操作过程和结果显示在LCD1602上。
时钟显示和温度显示,可以利用DS1302产生年份,月份,日期,星期,时,分,秒的数据,并将数据送往LCD1602显示,同样可以利用单片机开发板上面集成的DS18B20温度传感器来测试周围环境的温度,将获取的温度通过在LCD1602来显示。
系统设计框图3.具体实现代码计算器四则运算部分主要分为键盘扫描的键值读取,判断运算符号实现乘除优先级计算,LCD1602显示。
键盘扫描常用的有行扫描法,线反转法,此处我们用行扫描法,可以更明了读取键值。
unsigned char temp;key = null;//第一行按键P3 = 0xfe;temp = P3;temp = temp & 0xf0;if (temp != 0xf0){delay(10); //延时软件去抖动temp = P3;temp = temp & 0xf0;if (temp != 0xf0) //确认有键按下{temp = P3;switch (temp){case 0xee:key = 'D'; //读键值break;case 0xde:key = 0;break;case 0xbe:key = '=';break;case 0x7e:key = '/';break;}flag++;}}读完按键值之后我们需要读取运算的数字与运算符号,通过判断键值为数字则通过nun=nun*10+key,计算出数字,判断键值为运算符号则读出数字和键值。
单片机实训报告优选范文5篇分享
单片机实训报告优选范文5篇分享单片)是一种集成电路芯片,是具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器计数器等功能集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。
下面就是小编给大家带来的单片机实训报告优选范文5篇分享,希望大家喜欢!单片机实训报告范文(一)前言一周的单片机实训很快就结束咯,在这一周的时间里,我学到了很多关于单片机各方面的知识。
老师在实训课中也教会咯我们很多关于单片机软件编程与硬件设施的知识。
一周的实训中我们一共实训咯好几个项目,通过这几个项目的实训,我们掌握咯一些单片机的汇编语言和硬件调试,达到了很好的效果。
一周时间实训过后,我把之前在课堂上不懂的知识点,通过实际操作的练习,我都搞明白咯。
当然在实训过程中也遇到咯很多问题,就是有时在调试方面不能调试成功,有时程序是没有错误,但是就是调试不好,一直找原因也找不出是什么原因。
希望以后能够拥有更多的实训时间和机会学习单片机。
实训任务一一、实验目的熟悉Keil C51集成开发环境的使用方法二、实验设备及器件IBM PC机三、实验内容按照本书的第2章的2.1节到2.4节内容进行Keil C51集成开发环境的安装和使用练习。
然后按照以下内容建立文件并编译产生HEX文件。
ORG 8000HLJMP MainORG 80F0HMain:MOV R7,#0LOOP:MOV R6,#0DJNZ R6,$DJNZ R6,$DJNZ R6,$DJNZ R6,$DJNZ R7,LOOP ;延时一台CPL P1.0CPL P1.1CPL P1.2CPL P1.3CPL P1.4CPL P1.5CPL P1.6CPL P1.7SJMP MainEND ;P1.0取反 ;P1.1取反 ;P1.2取反 ;P1.3取反 ;P1.4取反 ;P1.5取反 ;P1.6取反 ;P1.7取反通过该程序实现八盏灯的同时亮和同时灭的功能,更好的掌握汇编指令。
单片机计算器报告
单片机课程设计学号: 56姓名:张世军班级:电子0702一设计内容与实验目的本次实验的任务就是要以51系列单片机为核心实现一个简易计算器,它的结构非常简单,外部主要由键盘和一个LCD1602A液晶显示屏,一块STC89C52RC单片机构成,通过软件编程要求能完成四则运算并能实现循环显示。
本次实验的目的包括了解并熟练掌握proteus仿真软件的使用;掌握C语言,学会用它们进行单片机编程;学会使用Keil C编译工具进行编程和编译,并掌握proteus和Keil C 联调以实现在proteus上的软硬件仿真。
二硬件电路的设计1、数码显示电路,LCD1602A的引脚详细介绍见下图:采用LCD1602A来显示,要求能显示两行。
它的D—7D引脚分别接到单片机的P0.0~P0.7引脚;RS、R/W、E管脚分别接到单片机的P2.4、P2.0、P2.3 。
具体连接见后面的电路图。
2、4*4键盘扫描电路用STC89C52RC的P3口中的P3.0,P3.1,P3.2和P3.3四根线作为按键的行输入线,用P3.4,P3.5,P3.6和P3.7作为按键的列输出线。
通过按次依次给P3口的高四位的每根线输出一个低电平列信号,每当一根列线输出后,将信号锁住,然后读取行线,看有没有哪一根出现低电平。
如果有,则说明有按键按下了,依据P3口是哪一根行线出现低电平和列线出现低电平,可以判别是第几行和第几列的按键按下了,如果读取行线没有出现低电平,则表示对应的列没有按键按下,那么换另一列输出低电平,在读取行信号,判别新的一列有没有键按下。
依此办法轮流使每一列依次输出低电平,判别每一列是否有键按下,直到把所有的按键判别完。
3、单片机微控制电路微控制电路就是以STC89C52RC为核心的控制核心,主要注意晶振电路的接法和RST法。
4、整体电路图见下图三软件设计程序及描述分析可知共分为七个模块:键盘扫描部分,定义各个位置上的键值部分,延迟部分,存贮部分,液晶显示部分,运算部分,动态显示部分。
单片机实践简易计算器实验报告
零基础DIY单片机简易计算器实践
单片机是一种很有趣的微处理器,它广泛应用于电子产品中。
学习单片机可以帮助我们更深入理解计算机原理和底层运作。
本实验将介绍如何使用单片机来制作一个简易计算器。
所需材料:
1. 单片机开发板
2. 4位7段显示器
3. 数字按键开关
4. 杜邦线
5. 电位器
6. 板子外壳
步骤1:连接电路
将数码管和数字按键开关与单片机开发板连接。
使用杜邦线将每个组件的引脚连接到开发板的相应引脚。
电位器可用于调节数码管显示的亮度。
步骤2:编写程序
使用C语言编写程序。
程序需要识别按键输入的数字和运算符,
并根据不同的情况显示计算结果。
程序中需要使用条件语句、循环语
句和函数等基本语言结构。
步骤3:测试程序
将编写好的程序上传到单片机开发板中。
测试程序的过程中要注
意按键输入的顺序和正确性。
如果按键输入错误,程序需要能够正确
地识别并给出错误提示。
步骤4:完成外壳
将单片机开发板和数码管装进铝盒中,并将数字按键开关与外壳
相连。
在外壳上打开一个窗口,以便能看到数码管和按键。
为了美观,可以涂上一些喜欢的颜色或加上小贴纸等装饰。
通过这个实验,我们深入了解了单片机的基本原理和运作方式,
掌握了C语言编程语言基础知识,并制作了一个实用的计算器。
在实
践中,我们不仅锻炼了问题解决能力和动手能力,还增强了对电子产
品的兴趣和信心。
单片机实践简易计算器实验报告
单片机实践简易计算器实验报告本次实验的目的是通过单片机实现一个简易计算器,实现加减乘除四则运算。
在实验过程中,我们使用了STC89C52单片机,通过编写程序实现计算器的功能。
实验步骤:1. 确定硬件电路连接我们需要确定硬件电路连接。
本次实验使用的是STC89C52单片机,需要将其与LCD1602液晶屏、4x4矩阵键盘、蜂鸣器等硬件连接。
具体连接方式如下:STC89C52单片机:P0口:连接LCD1602液晶屏的数据线D0-D7P1口:连接LCD1602液晶屏的控制线RS、RW、EP2口:连接4x4矩阵键盘的行线R1-R4P3口:连接4x4矩阵键盘的列线C1-C4P4口:连接蜂鸣器2. 编写程序接下来,我们需要编写程序实现计算器的功能。
程序主要分为以下几个部分:(1)LCD1602液晶屏初始化(2)4x4矩阵键盘扫描(3)计算器功能实现(4)LCD1602液晶屏显示结果3. 调试程序编写完程序后,我们需要进行调试。
在调试过程中,我们需要注意以下几点:(1)检查硬件连接是否正确(2)检查程序是否有语法错误(3)检查程序是否能够正常运行4. 实验结果经过调试,我们成功实现了一个简易计算器。
在使用过程中,用户可以通过4x4矩阵键盘输入数字和运算符,计算器会自动进行计算,并在LCD1602液晶屏上显示结果。
同时,计算器还具有清零、退格等功能,方便用户进行操作。
总结:通过本次实验,我们学习了单片机的基本原理和编程方法,掌握了如何使用单片机实现一个简易计算器。
同时,我们还学习了如何进行硬件电路连接和程序调试,提高了我们的实践能力和动手能力。
单片机课程设计报告简易计算器
{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;
单片机项目实训实验报告
一、实验背景与目的随着科技的发展,单片机作为嵌入式系统的重要组成部分,广泛应用于各个领域。
为了提高学生的实践能力和创新精神,我们选择了单片机项目实训作为实验课程。
本次实训旨在让学生掌握单片机的基本原理,熟悉其硬件和软件设计,并通过实际项目实践,提高学生的动手能力和解决问题的能力。
二、实验内容与步骤本次实训项目为设计一款基于ATmega16单片机的简易计算器。
该计算器能够实现基本的四则运算,并通过矩阵键盘和LCD1602显示屏进行人机交互。
1. 实验内容(1)设计计算器的硬件电路,包括ATmega16单片机、矩阵键盘、LCD1602显示屏等。
(2)编写计算器的软件程序,实现四则运算功能。
(3)测试计算器的功能,确保其正常运行。
2. 实验步骤(1)硬件设计根据实验要求,设计计算器的硬件电路。
主要包括以下步骤:1)选择合适的ATmega16单片机开发板。
2)设计矩阵键盘电路,包括按键布局和连接方式。
3)设计LCD1602显示屏电路,包括数据线和控制线。
4)将以上电路连接到ATmega16单片机开发板上。
(2)软件设计编写计算器的软件程序,实现以下功能:1)初始化ATmega16单片机,设置时钟频率。
2)初始化LCD1602显示屏,显示“0”作为初始值。
3)编写矩阵键盘扫描程序,检测按键状态。
4)根据按键输入,执行相应的四则运算。
5)将运算结果显示在LCD1602显示屏上。
6)实现清零、退格等功能。
(3)测试与调试1)将编写好的程序烧录到ATmega16单片机中。
2)连接计算器硬件电路,进行功能测试。
3)针对测试过程中发现的问题,进行调试和修改。
4)确保计算器能够正常运行,实现预期功能。
三、实验结果与分析经过实际操作和调试,我们成功设计并实现了一款基于ATmega16单片机的简易计算器。
该计算器能够实现基本的四则运算,并通过矩阵键盘和LCD1602显示屏进行人机交互。
以下是实验结果分析:1. 硬件设计方面,我们选择了合适的ATmega16单片机开发板,并设计了简洁的矩阵键盘和LCD1602显示屏电路。
单片机-十进制计算器
单片机实验报告 四姓名 学号时间 2015.05.14 地点 B526 实验题目 简易十进制计算器一、实验目的1. 掌握单片机编程和调试方法。
2. 掌握键盘、LED 显示接口工作原理及编程方法。
二、实验内容利用MCS-51单片机,设计一个简易十进制计算器,完成一位十进制有符号数的加、减、乘、除运算。
16个按键的安排:10个数字键(0-9),用于输入运算的数字;5个功能键:+、-、×、÷、=、清零(符号选择)。
本实验要求显示:输入的十进制数字及符号,正数不显示符号,负数在数的前面显示“-”;运算符显示(显示字形自定);运算结果显示,包括数字和符号。
三、实验电路连线P0 P1评 阅四、实验说明本实验采用动态显示电路,即6个数码管分时循环工作,刷新频率≥25Hz。
键盘采用矩阵式电路,L1-L4作为输出,H1-H4作为输入。
(详细工作原理请参考教材第10章)。
要求所有的程序预先在WA VE仿真调试通过,达到设计要求后下载程序到单片机芯片在实验板上实际运行。
程序的下载由实验室提供编程器统一烧写,单片机芯片由实验室提供,调试完成后交回。
五、实验仪器和设备PC机、WA VE软件、仿真器、实验板、编程器、电源等。
六、程序流程图及程序YJ EQU 50H ;结果存放YJ1 EQU 51H ;中间结果存放GONG EQU 52H ;功能键存放ORG 00HSTART: MOV R3,#0 ;初始化显示为空MOV GONG,#0MOV 32H,#00HMOV 33H,#00HMOV 34H,#00HMLOOP: CALL DISP ;调显示子程序WAIT: CALL TESTKEY ;判断有无按键JZ WAITCALL GETKEY ;读键INC R3 ;按键个数CJNE A,#0,NEXT1 ;判断是否数字键LJMP E1 ;转数字键处理NEXT1: CJNE A,#1,NEXT2LJMP E1NEXT2: CJNE A,#2,NEXT3LJMP E1NEXT3: CJNE A,#3,NEXT4LJMP E1NEXT4: CJNE A,#4,NEXT5LJMP E1NEXT5: CJNE A,#5,NEXT6LJMP E1NEXT6: CJNE A,#6,NEXT7LJMP E1NEXT7: CJNE A,#7,NEXT8LJMP E1NEXT8: CJNE A,#8,NEXT9LJMP E1NEXT9: CJNE A,#9,NEXT10LJMP E1NEXT10: CJNE A,#10,NEXT11 ;判断是否功能键LJMP E2 ;转功能键处理NEXT11: CJNE A,#11,NEXT12LJMP E2NEXT12: CJNE A,#12, NEXT13LJMP E2NEXT13: CJNE A,#13,NEXT14LJMP E2NEXT14: CJNE A,#14,NEXT15LJMP E2NEXT15: LJMP E3 ;判断是否清除键E1: CJNE R3,#1,N1 ;判断第几次按键LJMP E11 ;为第一个数字N1: CJNE R3,#2,N2LJMP E12 ;为第二个数字N2: CJNE R3,#3,N3LJMP E13 ;为第三个数字N3: LJMP E3 ;第四个数字转溢出E11: MOV R4,A ;输入值暂存R4MOV 34H,A ;输入值送显示缓存MOV 33H,#00HMOV 32H,#00HLJMP MLOOP ;等待再次输入E12: MOV R7,A ;个位数暂存R7MOV B,#10MOV A,R4MUL AB ;十位数ADD A,R7MOV R4,A ;输入值存R4MOV 32H,#00H ;输入值送显示缓存MOV 33H,34HMOV 34H,R7LJMP MLOOPE13: MOV R7,AMOV B,#10MOV A,R4MUL ABJB OV,E3 ;输入溢出ADD A,R7JB CY,E3 ;输入溢出MOV R4,AMOV 32H,33H ;输入值送显示缓存MOV 33H,34HMOV 34H,R7LJMP MLOOPE3: MOV R3,#0 ;按键次数清零MOV R4,#0 ;输入值清零MOV YJ,#0 ;计算结果清零MOV GONG,#0 ;功能键设为零MOV 32H,#00H ;显示清空MOV 33H,#00HMOV 34H,#00HLJMP MLOOPE2: MOV 34H,#00HMOV 33H,#00HMOV 32H,#00HMOV R0,GONG ;与上次功能键交换MOV GONG,AMOV A,R0CJNE A,#10,N21 ;判断功能键LJMP JIA ;"+"N21: CJNE A,#11,N22LJMP JIAN ;"-"N22: CJNE A,#12,N23LJMP CHENG ;"*"N23: CJNE A,#13,N24LJMP CHU ;"/"N24: CJNE A,#0,N25LJMP FIRST ;首次按功能键N25: LJMP DEN ;"="N4: LJMP E3FIRST: MOV YJ,R4 ;输入值送结果MOV R3,#0 ;按键次数清零LJMP DISP1 ;结果处理JIA: MOV A,YJ ;上次结果送累加器ADD A,R4 ;上次结果加输入值JB CY,N4 ;溢出MOV YJ,A ;存本次结果MOV R3,#0 ;按键次数清零LJMP DISP1JIAN: MOV A,YJSUBB A,R4 ;上次结果减输入值JB CY,N4 ;负数溢出MOV YJ,AMOV R3,#0LJMP DISP1CHENG: MOV A,YJMOV B,AMOV A,R4MUL AB ;上次结果乘输入值JB OV,N4 ;溢出MOV YJ,ALJMP DISP1CHU: MOV A,R4MOV B,AMOV A,YJDIV AB ;上次结果除输入值MOV YJ,AMOV R3,#0LJMP DISP1DEN: MOV R3,#0LJMP DISP1DISP1: MOV B,#10MOV A,YJ ;结果送累加器DIV AB ;结果除10MOV YJ1,A ;暂存"商"MOV A,B ;取个位数MOV 34H,A ;个位数送显示缓存MOV A,YJ1JZ DISP11MOV B,#10MOV A,YJ1DIV ABMOV YJ1,AMOV A,BMOV 33H,A ;十位送显示缓存MOV A,YJ1JZ DISP11 ;结果是否为二位数MOV 32H,A ;百位数送显示缓存DISP11: LJMP MLOOPDISP: MOV R0,#34HDIR1: MOV DPTR,#SEGTABMOV A,@R0MOVC A,@A+DPTRMOV P0,ACJNE R0,#34H,DIR2SETB P2.0CALL D1MSCLR P2.0DEC R0SJMP DIR1DIR2: CJNE R0,#33H,DIR3SETB P2.1CALL D1MSCLR P2.1DEC R0SJMP DIR1DIR3: SETB P2.2CALL D1MSCLR P2.2RETD1MS: MOV R7,#02HDMS: MOV R6,#0F0HDJNZ R6,$DJNZ R7,DMSRETSEGTAB: DB 0C0H, 0F9H, 0A4H, 0B0HDB 99H, 92H, 82H, 0F8HDB 80H, 90H, 88H, 83HDB 0C6H, 0A1H, 86H, 8EHTESTKEY:ACALL DISPMOV P1,#0FH ;读入键状态MOV A,P1CPL AANL A,#0FH ;高四位不用RETKEYTABLE:DB 0EEH,0EDH,0DDH,0BDH ;键码定义DB 0EBH,0DBH,0BBH,0E7HDB 0D7H,0B7H,0DEH,0BEHDB 07EH,07DH,07BH,077HGETKEY: MOV R6,#10 ;读键子程序ACALL DELAYMOV P1,#0FHMOV A,P1CJNE A,0FH,K12LJMP MLOOPK12: MOV B,AMOV P1,#0EFHMOV A,P1CJNE A,#0EFH,K13MOV P1,#0DFHMOV A,P1CJNE A,#0DFH,K13MOV P1,#0BFHMOV A,P1CJNE A,#0BFH,K13MOV P1,#07FHMOV A,P1CJNE A,#07FH,K13LJMP MLOOPK13: ANL A,#0F0HORL A,BMOV B,AMOV R1,#16MOV R2,#0MOV DPTR,#KEYTABLEK14: MOV A,R2MOVC A,@A+DPTRCJNE A,B,K16MOV P1,#0FHK15: MOV A,P1CJNE A,#0FH,K15MOV R6,#10ACALL DELAYMOV A,R2RETK16: INC R2DJNZ R1,K14AJMP MLOOPDELAY: MOV R7,#10TS1: MOV R6,#0FFHTS2: NOPNOPDJNZ R6,TS2DJNZ R7,TS1RETEND七、实验报告1、硬件电路设计(画出电路图),分析电路工作原理;矩阵键盘的工作原理:计算器的键盘布局如图所示:一般有16个键组成,在单片机中正好可以用一个P口实现16个按键功能,这种形式在单片机系统中也最常用。
单片机实训计算器报告
一、引言随着科技的飞速发展,单片机技术作为嵌入式系统的重要组成部分,已经在各个领域得到了广泛的应用。
为了提高学生对单片机技术的理解和实践能力,我们开展了单片机实训课程。
本次实训报告以设计一个简易计算器为例,详细介绍单片机在计算器中的应用及其设计过程。
二、实训目的1. 熟悉单片机的基本原理和编程方法。
2. 掌握单片机外围设备的接口技术。
3. 培养学生的实际动手能力和创新意识。
三、实训内容1. 设计要求本次实训要求设计一个基于单片机的简易计算器,能够实现以下功能:(1)加、减、乘、除四则运算;(2)结果显示在LCD1602显示屏上;(3)具有简单的错误处理功能。
2. 系统组成本计算器系统主要由以下几部分组成:(1)AT89C51单片机:作为系统的核心控制器,负责控制整个计算器的运行;(2)LCD1602显示屏:用于显示输入的数字、运算符和计算结果;(3)矩阵键盘:用于输入数字和运算符;(4)按键:用于控制计算器的开关、清零和退出等功能。
3. 硬件设计(1)AT89C51单片机:选用AT89C51单片机作为核心控制器,具有丰富的I/O端口和片内资源,可以满足计算器的需求。
(2)LCD1602显示屏:通过单片机的PORTD端口与LCD1602显示屏相连,实现数据显示功能。
(3)矩阵键盘:采用4x4矩阵键盘,将行线连接到单片机的PB0-PB3端口,列线连接到PB4-PB7端口。
(4)按键:设置三个按键,分别用于控制计算器的开关、清零和退出功能。
4. 软件设计(1)初始化:首先对单片机的I/O端口、LCD1602显示屏和矩阵键盘进行初始化。
(2)键盘扫描:通过扫描矩阵键盘,获取用户输入的数字和运算符。
(3)运算逻辑处理:根据用户输入的数字和运算符,进行相应的运算。
(4)结果显示:将计算结果显示在LCD1602显示屏上。
(5)错误处理:当输入错误或发生溢出时,显示错误信息。
四、实训过程1. 硬件电路搭建:根据设计要求,将AT89C51单片机、LCD1602显示屏、矩阵键盘和按键连接到一起,搭建计算器的硬件电路。
单片机实验-计算器
键盘功能示意:
四、实验代码 ORG 0000H SJMP START ORG 0030H START: CLR 00H CLR 01H CLR P3.0 MOV R7, #00H ; 按键次数计数器 LOOP: ACALL KEY CJNE R7, #01H, NEXT1 MOV R0, #30H ;存放第一个数的个位 MOV 31H, @R0 NEXT1: JB 00H,NEXT2 CJNE R7, #02H, NEXT2 MOV R0, #30H ;存放第一个数的十位 MOV A, #09H SUBB A, @R0 MOV32H,#00H ;异常处理 INC R7 JC NEXT2 DEC R7 MOV R2,31H MOV 31H, @R0 MOV 32H,R2 SETB 00H ;重来时要记得清 0 NEXT2: CJNE R7, #03H, NEXT3 MOV R0, #30H ; 存放操作数 有 “加减乘除”四 种情况 MOV 33H, @R0 NEXT3: CJNE R7, #04H, NEXT4 MOV R0, #30H ;存放第二个数的个位 MOV 34H, @R0 NEXT4: JB 01H,NEXT5 CJNE R7, #05H, NEXT5 MOV R0, #30H ;存放第二个数的十位 MOV A, #09H SUBB A, @R0 MOV 35H,#00H ;异常处理 INC R7 JC NEXT5 DEC R7 MOV R2,34H MOV 34H, @R0 MOV 35H,R2 SETB 01H ;重来时要记得清 0 NEXT5: CJNE R7, #06H, NEXT6 MOV R0, #30H ;存放操作数 等于号 0EH MOV 36H, @R0 NEXT6: LCALL DISPLAY CJNE R7, #06H, LOOP MOV R0, #36H CJNE @R0, #0EH, FU;存放开始计算的操作数 等待 等号 的键值 SJMP CK FU: DEC R7 LJMP LOOP ;开始计算 CK: MOV R7, #00H CLR 00H
基于C51单片机计算器实训报告
目录一、设计的意义二、设计的流程三、设计的原理四、设计的模块五、元器件清单六、成品的制作七、设计的总结一、设计的意义计算器是日常工作和学习生活中的常用工具,人们利用它代替了许多复杂计算,包括加减乘除和其他运算。
尤其是小型计算器,它携带方便,在生活中用起来方便快捷,成为了财政、学习、生意上都青睐的必需品。
它的需求广泛,在计算器的发展上存在很大的空间和市场意义。
单片机在我国的各行各业得到了广泛使用,单片机的出现是计算机制造技术高速发展的产物。
如今,它已经广泛应用到我们生活中的各个领域,如:电子、科技、通信、汽车、工业等。
一般只需几块钱,有着经济廉价的优势,用单片机可以很方便的实现计算器的设计。
本设计是以单片机为基础设计出简单的一次式计算器。
二、设计的流程本设计的计算器硬件电路采用三部分电路模块构成,第一部分是键盘模块,采用4*4矩阵键盘作为输入电路;第二部分是LCD1602液晶显示模块;第三部分是以89C52单片机作为控制核心。
软件程序主要由三部分组成:主程序、按键扫描程序和LCD1602显示程序。
下图为硬件模块框图:下图为设计流程图:三、设计的原理硬件电路原理图:四、设计的模块1、电源模块:电源的设计采用了自锁开关控制电源正极的接通与断开,当P1接上+5V直流电源时;若S1没有按下,此时S1的1与5端口接通,+5V电流不流通到电路,电路不工作;当S1按下后,3与5端口接通,此时+5V电流流通到电路是电路工作。
2、89C52单片机模块:此模块式是本设计的控制核心模块,常称为单片机最小系统;单片机最小系统由三部分组成:STC89C52芯片部分、复位部分(由按键开关、极性电容、10K电阻组成)、晶振部分(由12M石英晶振、两个30PF的瓷片电容组成)。
主要起程序的输入与控制、程序的复位、时间频率控制的作用。
3、4*4矩阵键盘模块:键盘可分为两类:编码键盘和非编码键盘。
编码键盘是较多按键(20个以上)和专用驱动芯片的组合,当按下某个按键时,它能够处理按键抖动、连击等问题,直接输出按键的编码,无需系统软件干预。
计算器实习报告
单片机实习报告学院:xx专业:2班号:4学号:4姓名:11指导老师:报告目录:1.元器件的购买,电路板的焊接情况2.实习项目:基于STC89C52单片机的计算器设计(1)计算器的功能概述(2)计算器的各部分功能介绍1)1602液晶电路和程序2)芯片AT89S52电路图3)扫面键盘及程序4)外围电路图(3)计算器程序设计流程图(4) 计算器程序详细设计3.编写程序遇到的问题及解决办法4.计算器制作过程中的心得体会5.计算器的源程序(附录)一.元器件购买和焊接1.购买过程;开发板元器件的购买总共用了三次才买完,第一次是我和宿舍几个同学一起去购买,我们来到华中电子市场,在伟芯电子购买基本的元器件,我将清单给老板,然后他就帮我们找到了所需要的元器件,我们将买到的元器件分成几份,每人拿一份,在买二脚蓝色插座时老板说不够,我们就去旁边的店购买也没有,于是我们就购买了几个三脚蓝色插座代替,也就是将三脚蓝色插座的旁边一个脚拆掉了,这样就代替了二脚插座。
在焊接完买回来的元器件后,发现少了多个200欧姆电阻和0.1微法的瓷片电容,于是我们便再来到这里购买,在老板拿来电阻后,我们就用万用表测电阻的大小,是200欧,之后我们便回去继续焊接。
2.电路板的焊接心得体会如果电烙铁长时间的接触焊接管脚肯定会损坏IC芯片的。
贴片IC有专门的焊锡膏及吹焊器具。
首先,工具上对你的电烙铁的电烙头要保护好,不要出现黑色的氧化物,如果有就磨掉磨掉后马上粘松香补焊锡。
焊锡的选取上,你尽量选取焊丝中间加有助焊剂的焊丝,焊丝表面应该光亮。
其次,焊接时将元器件管脚对应好焊接电路板的焊接位置上,接着先将焊丝接触然后电烙头从下至上的较快速的上锡,焊接出来的焊点应该饱满,这样才减少或避免虚焊。
在焊接的过程中,先焊接电阻,底座,在焊接底座的时候不要将芯片插上去,以免高温将芯片烧坏,在焊接基本完成后,我就将芯片插上去,后来拔芯片的时候用力过大,将ADC0809的引脚折断了两根,于是我又到华中电子市场花12元购买了一个,完成了开发板。
基于51单片机实验报告(计算器)
基于51单片机实验报告(计算器)一.计算器模块1.功能介绍利用8051 单片机硬件资源和常用外围电路如LCD1602,七段数码管,时钟(DS1302)温度传感器(18B20)等实现一个能做简单四则运算,并具有时钟显示,温度显示附加功能的计算器。
2.设计方案利用STC89C52为内核的单片机,PC机。
四则运算利用4*4矩阵键盘实现从0—9和运算符号的输入,并将操作过程和结果显示在LCD1602上。
时钟显示和温度显示,可以利用DS1302产生年份,月份,日期,星期,时,分,秒的数据,并将数据送往LCD1602显示,同样可以利用单片机开发板上面集成的DS18B20温度传感器来测试周围环境的温度,将获取的温度通过在LCD1602来显示。
系统设计框图3.具体实现代码计算器四则运算部分主要分为键盘扫描的键值读取,判断运算符号实现乘除优先级计算,LCD1602显示。
键盘扫描常用的有行扫描法,线反转法,此处我们用行扫描法,可以更明了读取键值。
unsigned char temp;key = null;//第一行按键P3 = 0xfe;temp = P3;temp = temp & 0xf0;if (temp != 0xf0){delay(10); //延时软件去抖动temp = P3;temp = temp & 0xf0;if (temp != 0xf0) //确认有键按下{temp = P3;switch (temp){case 0xee:key = 'D'; //读键值break;case 0xde:key = 0;break;case 0xbe:key = '=';break;case 0x7e:key = '/';break;}flag++;}}读完按键值之后我们需要读取运算的数字与运算符号,通过判断键值为数字则通过nun=nun*10+key,计算出数字,判断键值为运算符号则读出数字和键值。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
重庆电力高等专科学校单片机实训报告简易计算器专业:电子信息工程技术班级:信息1212组员:***学号:************组员:***学号:************组员:***学号:************指导老师:李景明、任照富重庆电力高等专科学校目录摘要 (3)第一章绪论 (3)第二章总体方案 (3)2.2 简易计算器系统的组成 (3)2.3 方案的论证和比较 (4)2.3.1 单片机型系统的选择与论证 (4)2.3 2 显示模块的选择与论证 (4)2.3.3 计算实现 (4)2.4系统框图 (4)第三章硬件电路 (6)第四章软件设计 (10)4.1 系统框图 (11)4.2 I/O并行口直接驱动LCD显示 (11)第五章实训过程 (12)第六章整体调试 (12)5.1 Proteus 简介 (12)5.3利用keil与Proteus进行的调试 (13)5.3.1 利用keil与Proteus进行的调试 (13)5.4硬件电路调试 (15)5.4.1 硬件电路调试过程 (15)5.4.2 实物拍照 (16)第七章实训心得 (17)7.1 张忠艳的心得体会 (17)7.2 王传胜的心得体会 (17)7.3 汤承练的心得体会 (17)附录: (18)1.源程序: (18)1.1主函数: (18)1.2 LCD1602的驱动程序 (18)1.3 按键相关处理程序 (20)2.仿真电路图 (22)3. 元器件清单 (22)摘要计算器(calculator ;counter)一般是指“电子计算器”,该名词由日文传入中国。
计算器能进行数学运算。
计算器一般由运算器、控制器、存储器、键盘、显示器、电源和一些可选外围设备组成。
低档计算器的运算器、控制器由数字逻辑电路实现简单的串行运算,其随机存储器只有一、二个单元,供累加存储用。
使用简单计算器可进行加(+)、减(-)、乘(*)、除(/)、开方(sqrt)、百分数(%)、倒数(1/x)等简单算术计算。
本次设计只完成加(+)、减(-)、乘(*)、除(/)运算。
关键字:加减乘除、优先级、进制转换、数据选择、有效数字、正负第一章绪论单片机由于其微小的体积和极低的成本,广泛的应用于家用电器、工业控制等领域中。
在工业生产中。
单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。
单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。
本系统就是充分利用了MCS-51芯片的I/O引脚。
系统采用MSC-51系列单片机Intel8051为中心器件来设计计算器控制器,实现了能根据实际输入值显示并存储,计算程序则是参照教材。
至于位数和功能,如果有需要可以设计扩充原系统来实现。
第二章总体方案2.1 设计要求及扩展要求:可以完成计算器的键盘输入,进行加、减、乘、除无符号数字运算,并在LED上同步显示操作数和运算结果。
输入采用4×4矩阵键盘,16个键依次对应0~9,“+”,“-”,“*”,“/”,“=”和清零键。
可以进行小于65535的数的加减乘除运算,并可以连续运算。
第一次按下显示“D1”;第二次按下时,显示“D1D2”;第三次按下时,显示“D1D2D3”,当输入值大于65535时,将自动清零,可以重新输入。
要求考虑运算符的优先级。
2.2 简易计算器系统的组成单片机因体积小、功能强、价格低廉而得到广泛应用。
AT89C51单片机设计简易计算器的方法,仅需AT89C51最小系统,扩展一组矩阵键盘,再接LCD液晶显示器来显示输入输出的数字就可以实现硬件电路。
显示部分:用P0口接上拉电阻再接LCD液晶显示器,用P2.0接使能端EN,P2.1接读写信号RW,P2.2接寄存器选择端口RS,再接上一个滑动变阻器来调节LCD。
按键部分:实际上就是把每个按键所对应的值经过处理后发给单片机,再在单片机内把数字当作指针指向所对应的数字或运算符。
2.3 方案的论证和比较2.3.1 单片机型系统的选择与论证方案一:此方案采用AT89C51八位单片机实现。
它内存较小,只有4K字节Flash 闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,无在线下载编程功能,也无在线仿真功能。
只能通过编程器烧写成以.hex为后缀名的文件。
方案二:此方案采用AT89S52八位单片机实现。
它内存较大,有8K的字节Flash闪速存储器,比AT89C51要多4K。
它可在线编程,可在线仿真的功能,这让调试变得方便。
单片机软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制。
而且体积小,硬件实现简单,安装方便。
另外AT89S52在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟。
综上所述,我们采用了第二个方案,即AT89S52。
2.3 2 显示模块的选择与论证方案一:采用LCD点阵显示,用来显示文字、图形、图像、等各种信息的显示屏幕。
在简单的计算器中不需要那么复杂,在软件编程方面也有一定的难度。
方案二:采用液晶(lcd1602)显示器件。
对于LCD点阵显示器来说,液晶显示器简单且容易操作,也比较便宜,但由于设计显示比 2 较的简单,只用于数字的显示,所以要求也比较低,而且显示的东西比较多,可以显示出整个式子,还可以显示出其他字符。
方案三:采用8位led数码管,因为只要求可以进行四则运算,对数字的大小范围要求不高,所以可以采用进行四位数字的运算的8 个LED 数码管来显示数据和结果,但是连线比较复杂,布线比较麻烦。
综合以上分析,在该项设计中,采用第二方案来实现设计的显示模块。
2.3.3 计算实现在硬件的基础上,直接采用单片机的计算器通过软件系统C语言程序编程以实现计算器的计算功能。
2.4系统框图该系统通过计算器按键随意输入所要计算去式子,作为电平送给主体电路,中央处理器通过识别,解码输出对应的数字或运算符,显示在LCD上。
具体关系如图3-1所示:时钟电路复位电路按键电路显示电路下图即为此次设计中的简易计算器的整体硬件结构图,我们运用单片机的最小系统,用P3口的高四位和P3口的低四位作4X4矩阵式按键的接口,用P0口作LCD与、液晶显示器的接口,用P2.0接使能端EN,P2.1接读写信号RW,P2.2接寄存器选择端口RS。
第三章硬件电路3.1 AT89C523.1.1 AT89C52简介AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。
外形及引脚排列如图3-1所示:图3-1 3.1.2管脚功能P0:P0 口是一组8 位漏极开路型双向I/O 口,也即地址/数据总线复用口。
作为输出口用时,每位能吸收电流的方式驱动8 个TTL逻辑门电路,对端口P0 写“1”时,可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8 位)和数据总线复用,在访问期间激活内部上拉电阻。
在Flash编程时,P0 口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1:P1 是一个带内部上拉电阻的8 位双向I/O 口, P1 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
与AT89C51 不同之处是,P1.0 和P1.1 还可分别作为定时/计数器2 的外部计数输入(P1.0/T2)和输入(P1.1/T2EX),参见表1。
Flash 编程和程序校验期间,P1 接收低8 位地址。
引脚号功能特性P1.0 T2,时钟输出P1.1 T2EX(定时/计数)P2 是一个带有内部上拉电阻的8 位双向I/O 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。
对端口P2 写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
在访问外部程序存储器或16 位地址的外部数据存储器(例如执行MOVX@DPTR 指令)时,P2 口送出高8 位地址数据。
在访问8 位地址的外部数据存储器(如执行MOVX@RI 指令)时,P2 口输出P2锁存器的内容。
Flash编程或校验时,P2亦接收高位地址和一些控制信号。
P3:P3 口是一组带有内部上拉电阻的8 位双向I/O 口。
P3 口输出缓冲级可驱动(吸收或输出电流)4 个TTL 逻辑门电路。
对P3 口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。
此时,被外部拉低的P3 口将用上拉电阻输出电流(IIL)。
P3 口除了作为一般的I/O 口线外,更重要的用途是它的第二功能P3 口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。
RST:复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8 位字节。
一般情况下,ALE 仍以时钟振荡频率的1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:每当访问外部数据存储器时将跳过一个ALE 脉冲。
对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH 单元的D0 位置位,可禁止ALE 操作。
该位置位后,只有一条MOVX 和MOVC指令才能将ALE 激活。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE 禁止位无效。
PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C52 由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN 有效,即输出两个脉冲。
在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
EA/VPP:外部访问允许。
欲使CPU 仅访问外部程序存储器(地址为0000H—FFFFH),EA 端必须保持低电平(接地)。
需注意的是:如果加密位LB1 被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU 则执行内部程序存储器中的指令。
Flash存储器编程时,该引脚加上+12V 的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。