实验报告(单片机实验报告)
电子实习单片机实验报告
一、实验目的1. 理解单片机的基本工作原理和组成结构。
2. 掌握单片机编程的基本方法,包括汇编语言和C语言。
3. 学会使用Keil uVision等集成开发环境进行单片机程序的开发和调试。
4. 通过实验,了解单片机在实际应用中的功能和使用方法。
二、实验仪器设备1. 单片机实验板2. 电脑3. 示波器4. 信号发生器5. 电源6. 电阻、电容、电位器等电子元器件三、实验内容1. 单片机最小系统搭建- 搭建单片机最小系统,包括时钟电路、复位电路、电源电路等。
- 测试单片机是否能够正常工作。
2. LED流水灯实验- 利用单片机的I/O口控制LED灯的亮灭,实现流水灯效果。
- 通过编程实现LED灯的移位控制,观察流水灯的动态效果。
3. 按键输入实验- 设计按键输入电路,实现按键控制LED灯的亮灭。
- 编写程序,实现按键去抖动功能,确保按键信号的稳定性。
4. 定时器实验- 利用单片机的定时器实现定时功能,例如定时闪烁LED灯。
- 编写程序,设置定时器的时间间隔,观察LED灯的闪烁频率。
5. 串口通信实验- 配置单片机的串口通信参数,实现单片机与电脑之间的数据传输。
- 编写程序,实现数据的发送和接收,测试串口通信的稳定性。
四、实验步骤1. 单片机最小系统搭建- 根据实验板说明书,连接时钟电路、复位电路、电源电路等。
- 测试单片机的电源电压和复位功能。
2. LED流水灯实验- 编写程序,初始化I/O口,设置LED灯的移位控制方式。
- 编写延时函数,实现LED灯的动态效果。
- 将程序烧录到单片机中,观察LED流水灯效果。
3. 按键输入实验- 设计按键输入电路,连接到单片机的I/O口。
- 编写程序,实现按键的读取和去抖动功能。
- 将程序烧录到单片机中,测试按键输入功能。
4. 定时器实验- 配置单片机的定时器参数,设置定时器的时间间隔。
- 编写程序,实现定时器的中断处理,控制LED灯的闪烁。
- 将程序烧录到单片机中,观察LED灯的闪烁频率。
单片机实验报告 附含说明书
第一章 DICE-5208K开发型单片机综合实验仪概述一、系统简介DICE-5208K型单片机实验系统由DICE-5208K开发型单片机综合实验箱、DICE-3000型仿真器、扩展卡和DICE-51仿真开发系统软件等组成。
是《MCS-51单片机原理与接口》、《单片机控制技术》、《C8051Fxxx高速SOC单片机原理及应用》、《EDA》、《VHDL硬件描述语言》、《CPLD/FPGA应用基础》等课程教学的配套实验设备。
新增加了几乎所有最实用、新颖的接口电路(如1 WIRE /I2C/SPI总线等)和通讯类接口实验(如USB2.0通讯/TCP/IP网络通讯/CAN总线/红外线收发等)。
可进行MCS-51、C8051F嵌入式单片机、CPLD/FPGA等课程的开放式实验教学。
二、主要特点1.该实验系统配置DICE-3000型高性能MCS-51硬件仿真器,64K数据空间,64K程序空间全部开放,不占用CPU资源,采用双CPU模式,仿真CPU和用户CPU独立运行,上位仿真软件支持汇编、C语言、PL/M语言。
可运行于WIN98/2000/NT/XP操作系统平台。
2.实验系统带有ISP在线下载电路,学生在完成实验后可脱离仿真机和PC机独立运行学生自行设计的单片机系统。
(可在线编程AT89S51/52/53系列单片机)。
3.该实验系统可扩展C8051F020嵌入式实验开发模块, 并配有DICE-EC5型USB高速通讯仿真器,通过4脚的JTAG接口可以进行非侵入式、全速的在线系统调试、仿真;集成开发环境支持Silicon Labs IDE和KEIL C软件。
4.该实验系统可扩展CPLD/FPGA模块,并配有相应的并口下载电路,轻松变成一台EDA实验开发平台。
5.该实验系统可扩展“数控式电子演示装置”,该装置是本公司的专利产品,结合上位演示软件和USB接口,可为该实验系统扩展多达十五个生动、形象、复杂的实验,其中大部分是闭环实验,实验践性非常强。
单片机中断实验报告
通过单片机的下载接口,将可执行的二进制文件 下载到单片机中。
实验测试
通过按键触发外部中断,观察LED灯的状态变化, 验证程序的正确性。
04
实验结果与分析
中断响应时间测试
总结词
响应时间快
详细描述
在测试中,我们发现单片机的中断响应时间非常快,能够在极短的时间内对外 部事件做出响应。这主要得益于单片机的硬件架构和中断处理机制,使得单片 机能够迅速识别并处理外部事件。
提高编程能力
通过本次实验,我们认识到自己的编程能力还有很大的提升空间。在未来的学习中,我们将注重提高自 己的编程能力,包括代码的优化、调试技巧等方面。
THANKS
感谢观看
实验中的问题与解决方案
在实验过程中,我们遇到了一些问题,如中断触发条件不 稳定等,通过调整相关参数和优化代码,最终解决了这些 问题。
对实验的反思与建议
01
实验操作流程的不足
在实验过程中,我们发现操作流程仍存在一些不足之处,如某些步骤的
描述不够清晰,导致实验过程中出现了一些不必要的困惑。建议在后续
的实验指导书中对操作流程进行更加详细的描述。
深入学习单片机中断机制
通过本次实验,我们对单片机的中断机制有了初步的了解。在未来的学习中,我们计划深入学习单片机的中断机制, 了解更多关于中断的细节和应用技巧。
探索更多中断应用场景
除了本次实验中实现的按键中断和定时器中断外,我们还计划探索更多的中断应用场景,如串口中断、ADC中断等 ,以拓宽我们的知识面和应用能力。
05
结论与建议
实验结论
实验目标达成情况
实验目标是通过单片机实现外部中断和定时器中断,实验 过程中成功实现了外部按键中断和定时器中断,验证了单 片机的中断处理机制。
单片机双机通信实验报告
单片机双机通信实验报告
实验目的:
1. 了解单片机之间的串口通信原理;
2. 掌握单片机之间的双机通信方法;
3. 实现单片机之间的数据互相传输。
实验器材:
1. 单片机开发板(两块);
2. USB转串口模块(两个);
3. 杜邦线若干;
4. 电脑。
实验步骤:
首先,将单片机开发板和USB转串口模块进行连接,具体的连接方法如下:
1. 将USB转串口模块的TXD引脚连接到单片机开发板的RXD引脚上;
2. 将USB转串口模块的RXD引脚连接到单片机开发板的TXD引脚上;
3. 将USB转串口模块的GND引脚连接到单片机开发板的GND引脚上;
4. 将USB转串口模块的VCC引脚连接到单片机开发板的VCC引脚上。
接下来的步骤如下:
1. 打开两台电脑上的串口调试助手软件,并分别将波特率设置为相同的数值(例如9600);
2. 在一台电脑上,发送数据给另一台电脑。
具体的操作是在串口调试助手软件上输入要发送的数据,然后点击发送按钮;
3. 在另一台电脑上,接收来自第一台电脑发送的数据。
具体的操作是在串口调试助手软件上点击接收按钮,然后可以看到接收到的数据。
实验结果:
通过实验可以看到,单片机之间成功地实现了数据的双向传输。
一台单片机发送的数据可以被另一台单片机接收到。
实验总结:
本实验通过串口通信的方式实现了单片机之间的双机通信。
通过这种方式,可以方便地实现单片机之间的数据互相传输,可以用于各种应用场景,如传感器与控制器之间的数据传输等。
同时要注意,串口通信的波特率要设置一致,否则数据将无法正确接收。
单片机生产实习报告
单片机生产实习报告(经典版)编制人:__________________审核人:__________________审批人:__________________编制单位:__________________编制时间:____年____月____日序言下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!并且,本店铺为大家提供各种类型的经典范文,如工作计划、工作总结、合同协议、条据书信、规章制度、应急预案、策划方案、教学资料、作文大全、其他范文等等,想了解不同范文格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!Moreover, our store provides various types of classic sample essays, such as work plans, work summaries, contract agreements, document letters, rules and regulations, emergency plans, planning plans, teaching materials, complete essays, and other sample essays. If you want to learn about different sample formats and writing methods, please pay attention!单片机生产实习报告单片机生产实习报告精选7篇单片机生产实习报告篇1一、实习目的单片机是一种集成电路芯片,采用超大规模集成电路技术把CPU、ROM、RAM等功能集成到一块硅片上构成一块小而完善的微型计算机系统,在工业控制领域广泛应用。
51单片机实验报告
51单片机实验报告51单片机是一款非常流行的单片机芯片,被广泛应用于各种电子产品中。
在这篇文章中,我们来探讨一下51单片机的一些实验,以及对于这些实验的理解和体会。
第一部分:实验内容我们进行的51单片机实验主要包括以下几个方面:1. 闪烁LED灯实验:这个实验是入门级别的,主要是为了熟悉51单片机的基本操作和编程方法。
在这个实验中,我们使用了一块51单片机开发板和几个LED灯,通过控制单片机的IO口信号来实现LED灯的闪烁。
2. 按键控制LED实验:这个实验是在闪烁LED实验的基础上进一步延伸的,主要是为了了解如何通过外部按键来控制单片机的输出。
在这个实验中,我们运用了单片机的外部中断和定时器等功能,实现了按键控制LED灯的亮灭。
3. LCD1602显示屏实验:这个实验是为了让我们熟悉如何在51单片机中使用LCD1602液晶显示屏。
在这个实验中,我们使用了I2C总线来与LCD1602进行通信,通过向LCD1602发送命令和数据来实现字符的显示。
4. 电机驱动实验:这个实验是让我们了解如何使用51单片机来控制电机的运转。
在这个实验中,我们运用了单片机的PWM控制功能,通过改变PWM波的占空比来控制电机的转速和方向。
第二部分:实验体会通过这些实验,我对于51单片机有了更深刻的理解和体会。
在这里,我想分享一下我的一些体会。
首先,我认为51单片机具有非常强大的控制能力和灵活性。
通过编写程序,我们可以控制单片机的各种IO口、定时器、PWM输出等功能,从而实现各种复杂的控制任务。
同时,由于其能够直接操作硬件,所以可以快速响应各种外部事件,对实时性要求较高的应用场景有很好的适应性。
其次,我发现在51单片机开发中,良好的软硬件结合非常重要。
由于51单片机具有丰富的外部中断、定时器等功能,因此我们可以很好地利用这些硬件资源来实现各种功能。
同时,在编写程序时,我们也需要充分发挥51单片机的硬件优势,例如使用定时器来完成计时任务,使用外部中断来完成输入检测等等。
单片机流水灯实验报告
实验目的:实现单片机流水 灯功能
实验结果:LED灯按照预设 顺序依次点亮,实现流水灯
效果
分析与讨论:实验结果与预 期相符,验证了单片机流水
灯功能的实现。
实验结果分析
实验目的:验证单片 机流水灯控制电路的
设计与实现
实验设备:单片机、 LED灯、电阻、电源
等
实验步骤:编写程序、 连接电路、运行程序、
观察现象
实验过程中,对实验结果 的分析不够全面,容易导 致实验结论不准确。
实验过程中,对实验数据 的记录不够详细,容易导 致实验数据丢失。
实验过程中,对实验设备 的维护不够重视,容易导 致实验设备损坏。
实验过程中,对实验环境 的控制不够严格,容易导 致实验结果不准确。
对未来实验的展望
创新实验方法:尝试新的实 验方法,提高实验效果
掌握流水灯电路 的搭建方法
学习单片机的编 程和调试方法
掌握流水灯电路 的调试方法
添加标题
添加标题
添加标题
添加标题
培养实践操作和问题解决能力
通过实验操作, 提高动手能力
学习单片机的基 本原理和编程方
法
培养发现问题、 分析问题和解 决问题的能力
提高团队合作和 沟通能力
02
实验设备
单片机开发板
添加标题 添加标题 添加标题 添加标题 添加标题 添加标题
编写流水灯程序
确定流水灯的 硬件连接方式
编写流水灯控 制程序
编译并下载程 序到单片机
调试程序,确 保流水灯正常 工作
0
0
0
0
1
2
3
4
烧录程序到单片机
准备烧录器:选择合适的烧录器,如USB烧录器 连接单片机:将烧录器连接到单片机的烧录接口 打开烧录软件:启动烧录软件,选择要烧录的程序文件 开始烧录:点击烧录按钮,开始烧录程序到单片机 检查烧录结果:烧录完成后,检查单片机的运行情况,确保程序正常运行
【报告】南邮单片机实验报告
【报告】南邮单片机实验报告一、实验目的本次南邮单片机实验旨在通过实际操作和实践,深入了解单片机的工作原理、编程方法以及其在实际应用中的功能实现。
通过完成一系列实验任务,提高我们对单片机系统的设计、开发和调试能力,为今后在电子信息领域的学习和工作打下坚实的基础。
二、实验设备1、单片机开发板2、计算机3、编程软件(如 Keil C51)4、下载器5、示波器6、万用表三、实验内容(一)点亮 LED 灯1、原理通过控制单片机的引脚输出高低电平,来控制连接在引脚上的 LED 灯的亮灭。
2、编程实现使用 C 语言编写程序,设置相应引脚为输出模式,并通过循环语句实现 LED 灯的闪烁效果。
3、调试与观察将程序下载到单片机中,观察 LED 灯的闪烁情况,使用示波器测量引脚的电平变化,以验证程序的正确性。
(二)数码管显示1、原理数码管由多个发光二极管组成,通过控制不同段的发光二极管的亮灭,可以显示不同的数字和字符。
2、编程实现编写程序,实现数码管的动态扫描显示,将需要显示的数字或字符转换为对应的段码,并通过定时中断实现动态刷新。
3、调试与观察下载程序后,观察数码管的显示效果,检查是否能够正确显示预定的数字和字符。
(三)按键控制1、原理按键连接到单片机的引脚,当按键按下时,引脚的电平发生变化,通过检测引脚电平的变化来实现按键的识别和响应。
2、编程实现设置引脚为输入模式,采用查询或中断的方式检测按键状态,根据按键的不同操作执行相应的功能。
3、调试与观察按下不同的按键,观察系统的响应是否符合预期,如 LED 灯的状态改变、数码管显示内容的变化等。
(四)温度传感器采集与显示1、原理使用数字式温度传感器(如 DS18B20)采集环境温度,传感器将温度转换为数字信号,单片机通过特定的通信协议读取温度数据。
2、编程实现编写驱动程序,实现与温度传感器的通信,读取温度值,并将其转换为合适的显示格式。
3、调试与观察将传感器置于不同的温度环境中,观察数码管或液晶显示屏上显示的温度值是否准确。
单片机实验报告总结
单片机实验报告总结单片机实验报告总结引言:单片机是一种集成电路,具有微处理器核心、存储器、输入输出接口等功能。
在现代电子技术领域中,单片机被广泛应用于各种电子设备中,如家电、汽车、通信设备等。
本文将对我在单片机实验中的学习和实践进行总结,分享我在实验中的收获和心得体会。
实验一:LED灯闪烁实验在这个实验中,我们学习了如何使用单片机控制LED灯的闪烁。
通过编写简单的程序,我们成功地实现了LED灯的闪烁功能。
这个实验让我深刻体会到了单片机的强大和灵活性。
通过控制单片机的GPIO口,我们可以实现各种各样的功能,这让我对单片机的应用前景充满了信心。
实验二:数码管显示实验在这个实验中,我们学习了如何使用单片机控制数码管进行数字的显示。
通过编写程序,我们成功地将数字从0到9依次显示在数码管上。
这个实验让我了解了数码管的工作原理和控制方式。
在实验过程中,我遇到了一些问题,如数字显示不清晰、显示不准确等,但通过不断的调试和优化,最终解决了这些问题。
这个实验让我明白了实践中的问题和挑战,并培养了我解决问题的能力。
实验三:按键控制实验在这个实验中,我们学习了如何使用单片机实现按键控制。
通过编写程序,我们成功地实现了按下按键时LED灯亮起,松开按键时LED灯熄灭的功能。
这个实验让我了解了按键的原理和使用方法。
在实验过程中,我遇到了一些问题,如按键抖动、按键误触等,但通过添加软件消抖和优化程序,最终解决了这些问题。
这个实验让我明白了软件的重要性和优化的必要性。
实验四:PWM调光实验在这个实验中,我们学习了如何使用单片机实现PWM(脉宽调制)调光功能。
通过编写程序,我们成功地实现了LED灯的亮度可调节。
这个实验让我了解了PWM的原理和应用。
在实验过程中,我遇到了一些问题,如PWM频率调节不准确、亮度不连续等,但通过调整参数和优化程序,最终解决了这些问题。
这个实验让我明白了硬件和软件的协同工作的重要性。
实验五:温度检测实验在这个实验中,我们学习了如何使用单片机实现温度检测功能。
单片机实验报告总结
单片机实验报告总结单片机实验报告总结单片机实验心得体会单片机实验心得体会时间过得真快,不经意间,一个学期就到了尾声,进入到如火如荼的期末考试阶段。
在学习单片机这门课程之前,就早早的听各种任课老师和学长学姐们说过这门课程的重要性和学好这门课程的关键~~多做单片机实验。
这个学期,我们除了在课堂上学习理论知识,还在实验室做了7次实验。
将所学知识运用到实践中,在实践中发现问题,强化理论知识。
现在,单片机课程已经结束,即将开始考试了,需要来好好的反思和回顾总结下了。
第一次是借点亮LED灯来熟悉keil软件的使用和试验箱上器材。
第一次实验体现了一个人对新事物的接受能力和敏感度。
虽然之前做过许多种实验。
但依旧发现自己存在一个很大的问题,对已懂的东西没耐心听下去,容易开小差;在听老师讲解软件使用时,思路容易停滞,然后就跟不上老师的步骤了,结果需要别人再次指导;对软件的功能没有太大的热情去研究探索,把一个个图标点开,进去看看。
所以第一次试验相对失败。
鉴于此,我自己在宿舍下载了软件,然后去熟悉它的各个功能,使自己熟练掌握。
在做实验中,第二个问题应该是准备不充分吧。
一开始,由于没有课前准备的意识,每每都是到了实验室才开始编程,完成作业,导致每次时间都有些仓促。
后来在老师的批评下,认识到这是个很大的问题:老师提前把任务告诉我们,就是希望我们私下把程序编好。
于是我便在上机之前把程序编好,拷到U盘,这样上机时只需调试,解决出现的问题。
这样就会节约出时间和同学讨论,换种思路,换种方法,把问题给吃透。
发现、提出、分析、解决问题和实践能力是作为我们这个专业的基本素质。
三是我的依赖性很大,刚开始编程序时喜欢套用书上的语句,却对语句的理解不够。
于是当程序出现问题时,不知道如何修改,眼前的程序都是一块一块的被拼凑整合起来的,没法知道哪里错了。
但是编程是一件很严肃的事情,容不得半点错误。
于是便只能狠下决心,坚持自己编写,即使套用时,也把每条语句弄懂。
单片机实验报告 中断
单片机实验报告中断单片机实验报告:中断引言:单片机是一种集成电路,具有微处理器、存储器和输入输出接口等功能。
在嵌入式系统中,单片机常常被用于控制和管理各种设备。
而中断是单片机中一种重要的机制,它可以在特定条件下打断程序的正常执行,执行一段特定的代码,然后返回到原来的程序中。
本文将介绍中断的概念、分类以及在单片机实验中的应用。
一、中断的概念中断是一种硬件或软件生成的信号,用于打断正在执行的程序。
当中断信号发生时,单片机会立即停止当前的任务,转而执行中断服务程序。
中断可以提高程序的响应速度和效率,使单片机能够及时处理紧急事件。
二、中断的分类中断可以分为外部中断和内部中断两种类型。
1. 外部中断外部中断是由外部设备产生的中断信号。
当外部设备需要单片机的处理时,会发送中断请求信号。
单片机在接收到中断请求后,会立即停止当前任务,转而执行与中断相关的程序。
外部中断常用于处理外部设备的输入信号,如按键、传感器等。
2. 内部中断内部中断是由单片机内部产生的中断信号。
内部中断通常由单片机的一些特定事件触发,如定时器溢出、串口接收完成等。
内部中断常用于周期性的任务处理和数据通信等。
三、中断的实验应用在单片机实验中,中断被广泛应用于各种场景,下面将介绍两个实验应用的例子。
1. 外部中断实验假设我们需要设计一个按键控制LED灯的实验。
当按下按键时,LED灯亮起;当松开按键时,LED灯熄灭。
这个实验可以使用外部中断来实现。
首先,我们需要将按键连接到单片机的外部中断引脚。
当按键按下时,外部中断引脚会产生一个中断请求信号。
单片机接收到中断请求后,会执行相应的中断服务程序。
在中断服务程序中,我们可以控制LED灯的亮灭。
通过这个实验,我们可以学习到如何使用外部中断来处理外部设备的输入信号,并且了解到中断的响应速度和效率优势。
2. 内部中断实验假设我们需要设计一个定时器实验,要求每隔一段时间点亮一次LED灯。
这个实验可以使用内部中断来实现。
单片机实验报告二 单片机IO口实验
南昌大学实验报告学生姓名:学号:专业班级:实验类型:⃞验证⃞综合⃞设计⃞创新实验日期:2019.4.16 实验成绩:实验二单片机I/O口实验(一)实验目的1.掌握单片机最小系统的构成,学习如何控制I/O口来驱动发光二极管,掌握移位和软件延时程序的编写。
2.熟练掌握STC型开发板的使用方法和注意事项。
3.掌握应用STC_ISP烧录过程;(二)设计要求利用51单片机及4个LED发光二极管,设计一个单片机流水灯程序,P4.7 /P4.6/ P1.6/ P1.7 来演示跑马灯。
其中流水灯的变化形式多样。
(三)实验原理STC实验箱单片机型号为IAP15W4K32S4-Student,其在线编程与在线仿真可由Keil uVision4集成开发环境和STC系列单片机在线可编程(ISP)电路实现:1.设置STC仿真器:运行STC-ISP在线编程软件,选择“keil 仿真设置”选项,如图1所示,单击“添加型号和头文件到keil中/ 添加STC仿真器驱动到keil中”,弹出“浏览文件夹”对话框,在浏览文件夹中选择keil的安装目录,单击“确定”按钮即完成添加。
根据所用芯片,单击“将IAP15W4K32S4-Student设置为仿真芯片”。
图12.Keil uVision4环境设置:选择菜单命令Project →Options for Target →Debug,选中“STC Monitor-51 Driver”,勾选“Load Application at Startup”选项和“Run to main()”选项,如图2所示。
单击图2右上角的“settings”按钮,弹出硬件参数设置对话框,如图2所示,根据仿真电路所使用的串口号(本机所用为串口5)选择串口端口,如图3所示:图2图33.STC15单击串口TTL电平通信模块结构如图4所示,P1.6、P1.7、P4.6、P4.7所连接的LED灯为共阳极LED,控制对应I/O口为低电平即可点亮LED。
单片机实验报告范文
单片机实验报告范文单片机(Microcontroller)是指一种封装了微处理器(Microprocessor)、存储器和各种输入输出接口电路功能的集成电路。
单片机在电子设计与开发中有广泛应用,可以用于控制和监测各种系统和设备。
本实验报告将介绍在实验中使用单片机所进行的实验步骤和实验结果。
实验目的:1.理解单片机的基本工作原理和功能。
2.掌握单片机的编程和调试方法。
3.应用单片机实现简单的控制功能。
实验仪器和材料:1.单片机开发板2.计算机B数据线4.电源适配器5.LED灯6.麦克风模块7.温度传感器实验步骤:1.准备工作:将单片机开发板与计算机连接,接通电源适配器。
2.熟悉开发工具:安装单片机开发软件,并了解软件的基本功能。
3.学习编程语言:了解单片机的编程语言,例如C语言或汇编语言,并编写简单的程序。
4.硬件连接:将LED灯、麦克风模块和温度传感器连接至开发板的相应引脚。
5.编程实现:根据实验要求,编写相应的程序,控制LED灯、获取麦克风模块的声音信号或获取温度传感器的温度值。
7.实验结果:根据实验要求,记录LED灯的亮灭状态、麦克风模块的声音信号强度或温度传感器的温度数值。
实验结果:通过实验,我们成功地控制了LED灯的亮灭状态,获取了麦克风模块的声音信号强度和温度传感器的温度数值。
在编程实现过程中,我们学会了使用单片机编程语言,了解了一些常用的语法和函数。
在调试测试中,我们可以通过相关的输出或显示结果来判断程序的正确性,及时发现和修复错误。
实验总结:本实验通过单片机开发板和相应的硬件以及编程实现了简单的控制和监测功能。
通过实验,我们深入了解了单片机的基本工作原理和功能,并掌握了一些基本的编程和调试方法。
实验结果表明,我们成功实现了实验要求,并对单片机的应用有了更加深入的理解。
通过这次实验,我们不仅提高了动手实践能力,也增加了对科技发展的看法。
单片机实验报告
目录一、实验一 (1)二、实验二 (7)三、实验三 (11)四、实验四 (15)实验一定时/计数器验证实验一、实验目的熟悉定时/计数器T0的特点,学会合理选择定时方式并能根据具体情况结合软件的方式定时;二、实验设备及器件IBMPC机一台PROTEUS硬件仿真软件KeilC51;三、实验内容用AT89C51单片机的定时/计数器T0产生1s的定时时间,作为秒计数时间,当1s产生时秒计数加1;秒计数到60时,自动从0开始;四、实验要求要求采用Proteus软件实现上述实验;五、实验步骤1.打开ProteusISIS编辑环境,按照表1-1所列的元件清单添加元件;元件全部添加后,在ProteusISIS的编辑区域中按图1-1所示的原理图连接硬件电路;图1-1电路原理图2.根据参考程序绘出流程图,并辅以适当的说明;流程图如图1-2所示:图1-2程序流程图3.打开KeilμVision4,新建Keil项目,选择AT89C51单片机作为CPU,将参考程序导入到“SourceGroup1”中;在“OptionsforTarget”对话窗口中,选中“Output”选项卡中的“CreateHEXFile”选项和“Debug”选项卡中的“Use:ProteusVSMSimulator”选项;编译汇编源程序,改正程序中的错误;4.在ProteusISIS中,选中AT89C51并单击鼠标左键,打开“EditComponent”对话窗口,设置单片机晶振频率为12MHz,在此窗口中的“ProgramFile”栏中,选择先前用Keil生成的.HEX文件;在ProteusISIS的菜单栏中选择“File”→“SaveDesign”选项,保存设计,在ProteusISIS的菜单栏中,打开“Debug”下拉菜单,在菜单中选中“UseRemoteDebugMonitor”选项,以支持与Keil的联合调试;5.在Keil的菜单栏中选择“Debug”→“Start/StopDebugSession“选项,或者直接单击工具栏中的“Debug”→“Start/StopDebugSession”图标,进入程序调试环境;按“F5”键,顺序运行程序;调出“ProteusISIS”界面可以看到7段数码管显示从0~59s的计数值,每个数值显示1s,如图1-3所示;图1-3程序运行结果六、实验程序SECOND EQU 30HCOUNT EQU 31HORG 00HLJMP STARTORG 0BHLJMP INT_T0START: MOV SECOND,00HMOV COUNT,00HMOV DPTR,TABLECLR AMOV P0,AMOV P2,AMOV TMOD,00HMOV TH0,65536-50000/256MOV TL0,65536-50000MOD256SETB TR0SETB ET0SETB EAMOVIE,82HLJMP $INT_T0:MOV TH0,65536-50000/256MOV TL0,65536-50000MOD256INC COUNTMOV A,COUNTCJNE A,20,I2MOV COUNT,00HINC SECONDMOV A,SECONDCJNE A,60,I1MOV SECOND,00HI1: MOV A,SECONDMOV B,10HDIV ABMOVC A,A+DPTRMOV P0,AMOV A,BMOVC A,A+DPTRMOV P2,AI2: RETITABLE: DB 3FH,06H,5BH,4FH,66HDB 6DH,7DH,07H,7FH,6FHEND七、思考题1.罗列一下Proteus软件的能带给我们的好处,指出一点最能帮助你的地方;使用Proteus软件能使我们方便的搭建电路,同时在没有元器件的情况下进行便于仿真,方便我们在将程序写入单片机前确认运行是否正确,同时可在采购器件之前即可开始开发产品,而不必等到器件采购完后搭建电路才进行程序调试;2.用Proteus界面中的播放键运行仿真与KeilμVision4的环境中联调运行它们两者的区别在什么地方3.用Proteus界面中的播放键运行仿真仅可以观察运行结果,即程序运行在硬件表面上的表现;而联调的时候可以再Keil软件里查看各寄存器和存储器的状况,即硬件的内部情况;4.Keil软件软件仿真与Proteus的仿真对比;使用Proteus仿真可从硬件的角度观察仿真结果,使仿真结果更加形象直观,使我们可从硬件运行状态清楚的判断运行结果是否正确;而在Keil环境中则是从程序的角度通过观察程序中数据的变化来观察仿真结果,需要对程序运行结果充分了解;八、实验总结及相关问题通过本次实验了解了Ptoteus软件的使用方法,以及在掌握了Keil的使用方法下,学会了Proteus与Keil软件联调的方法;在用Proteus中由于忽略了要在总线处放置网络标号导致联调失败,最后通过观察发现数码管引脚电平无变化发现此问题,放置网络标号后运行仿真时数码管引脚电平发生变化可是数码管却没有变亮,经过多次检查接线,未发现接线错误后,觉得可能是软件本身错误,故将总线及数码管周围硬件线路重新绘制一遍后再次运行仿真及可得到图1-3的结果;实验二单片机I/O口控制实验一、实验目的利用单片机的P1口作IO口,使同学学会利用P1口作为输入和输出口;二、实验设备及器件IBMPC机一台DP-51PRO单片机仿真器、编程器、实验仪三合一综合开发平台一台三、实验内容1.编写一段程序,用P1口作为控制端口,使D1区的LED轮流亮;2.编写一段程序,用P1.0~P1.6口控制LED,P1.7控制LED的亮和灭P1.7接按键,按下时LED亮,不按时LED灭;四、实验要求学会使用单片机的P1口作IO口,如果有时间同学也可以利用P3口作IO口来做该实验;五、实验步骤1.用导线把A2区的J61接口与D1区的J52接口相连;原理如图2-1所示;图2-1实验二原理图2.先编写一个延时程序;延时程序见程序1子程序DELAY;3.将LED轮流亮的程序编写完整并使用TKStudyICE调试运行;LED轮流亮程序见程序1;调试运行结果:D1区LED轮流亮;4.使用导线把A2区的J61接口的P1.0~P1.6与D1区的J52接口的LED1~LED7相连,另外A2区J61接口的P1.7与D1区的J53的KEY1相连;5.编写P1.7控制LED的程序,并调试运行;按下K1看是否全亮;P1.7控制LED的程序见程序2;调试运行结果:按下P1.7后D1区LED全灭;6.A2区J61接口的P1.7与D1区的J54的SW1相连;然后再使用TKStudyICE运行程序,查看结果;P1.7控制LED的程序见程序2;调试运行结果:按下P1.7后D1区LED全亮;六、实验参考程序程序1:ORG 0000HLJMP MAINORG 0100HMAIN: MOV A,0FFHCLR CMAINLOOP:CALL DELAYRLC AMOV P1,ASJMP MAINLOOPDELAY: MOV R7,0LOOP: MOV R6,0DJNZ R6,$DJNZ R6,$DJNZ R6,$DJNZ R7,LOOPRETEND程序2:ORG 000HLJMP MAINORG 0100HMAIN: JB P1.7,SETLEDCLRLED:CLR P1.0CLR P1.1CLR P1.2CLR P1.3CLR P1.4CLR P1.5CLR P1.6SJMP MAINSETLED:SETB P1.0SETB P1.1SETB P1.2SETB P1.3SETB P1.4SETB P1.5SETB P1.6SJMP MAINEND七、实验思考题1.请同学思考一下,想出几个实现以上功能的编程方法;程序1可利用单片机的定时计数器通过选择定时计数器工作方式和预置初值设定延时时间,通过定时计数器产生的中断在中断程序中对A进行移位后输出至P1口;程序2可在判断P1.7高低电平后根据判断结果直接将80H或7F直接送P1口而不必逐位进行位操作;2.请同学再思考一下,第二个程序中如果使用KEY1作为外部中断控制LED的亮和灭时,程序应如何修改;此时将KEY1接/INT0口,在主程序中开启外部中断设置外部中断触发方式,通过中断服务子程序控制LED亮灭;程序如下所示:ORG 000HLJMP MAINORG 0003H ;中断服务程序LJMP SETLEDMAIN: MOV SP,40HSETB ET0 ;开外部中断CLR IT0 ;设置为电平触发SETB EACLRLED:CLR P1.0CLR P1.1CLR P1.2CLR P1.3CLR P1.4CLR P1.5CLR P1.6SJMP CLRLEDSETLED:SETB P1.0SETB P1.1SETB P1.2SETB P1.3SETB P1.4SETB P1.5SETB P1.6RETIEND八、实验总结及相关问题通过本次实验掌握了使用TKStudyICE进行硬件仿真调试的方法,在设置仿真器驱动程序声明时对C:\Keil目录下的Tools.ini文件添加描述时,由于添加的路径错误导致无法进行硬件仿真调试,修改为正确路径后方可在DEBUG窗口中的Use选项中找到对应的选项;使用TKStudyICE进行硬件仿真调试相比本学期的电子系统设计中用到的调试方法更快捷,使用更方便;与此同时,通过本次实验对单片机的I/O控制有了更深入的了接,同时加深入对单片机I/O编程的理解;实验三串转并I/O口实验一、实验目的熟悉并掌握串转并的I/O口扩展方法;二、实验设备及器件IBMPC机一台DP-51PRO单片机仿真器、编程器、实验仪三合一综合开发平台一台三、实验内容1.写程序,通过单片机的P1口控制74HC164的串行输入端口,实现串并转换;2.验证串并转换数据的正确性;四、实验要求熟悉串并转换芯片的工作原理,学会使用串并转换芯片扩展单片机的I/O口资源;表3-174HC164真值表五、实验步骤1.短接C5区JP10接口,将C5区J43接口与A2区J61接口的P10~P13对应相连CLK对P10等等;如图3-1所示;图3-1实验三原理图2.运行编写好的软件程序,完成一次串并转换;实验程序见实验参考程序;2.使用C2区的逻辑笔或D1区的J52接口LED指示灯测试并行输出数据Q0~Q7数据的正确性;调试运行结果:通过观察LED的亮灭情况可判断完成一次串并转换,且转换结果正确无误;六、实验参考程序CLK EQU P1.0DINA EQUP1.1DINB EQU P1.2CLR164 EQUP1.3ORG 0000HLJMP MAINORG 0100HMAIN: MOV SP,60HNOPCLR CLKSETB DINBCLR CLR164SETB CLR164MOV A,0FFHMOV R4,08HSLCHG: RLC AMOV DINA,CSETB CLKNOPCLR CLKNOPDJNZ R4,SLCHGSJMP$END七、实验思考题参考图3-2电路图,尝试编写软件程序,实现8位LED流水灯的控制;图3.2实验原理图可利用单片机的定时计数器通过选择定时计数器工作方式和预置初值设定延时时间,通过定时计数器产生的中断在中断程序中对A进行移位;程序如下所示:CLK EQU P1.0DINA EQUP1.1DINB EQU P1.2CLR164 EQUP1.3ORG 0000HLJMP MAINORG 000BH ;定时器0中断服务程序LJMP SLCHGMAIN: MOV SP,60HNOPCLR CLKSETB DINBCLR CLR164SETB CLR164MOV A,0FFHMOV TMOD,01H ;定时器0工作方式1MOV TH0,18H ;送2ms时间常数MOV TL0,0FCHSETB TR0 ;开中断SETB ET0SETB EASJMP $SLCHG: MOV TH0,18HMOV TL0,0FCHRLC AMOV DINA,CSETB CLKNOPCLR CLKRETIEND八、实验总结及相关问题由于具有之前实验的基础所以本实验基本没碰到什么问题,调试运行都符合实验要求,通过本次实验对串并转化程序的编写有了一定了解,通过编写流水灯程序加深了对单片机串并口的了解;实验四继电器控制实验一、实验目的加深理解继电器的工作原理和特点,掌握利用单片机的IO口控制继电器的一般方法;二、实验设备及器件IBMPC机一台DP-51PRO单片机仿真器、编程器、实验仪三合一综合开发平台一台三、实验内容1.利用D1区的拨动开关和LED,学习继电器的工作原理和特点;2.编写一段程序,用P1.0口控制继电器,继电器控制LED的亮和灭,COM与CLOSE连通时,一盏LED亮;不连通时该LED灭;COM与OPEN连通时,另一盏LED亮,不通时该LED灭;四、实验要求学会继电器的使用和利用单片机的IO口控制继电器的方法;五、实验步骤图4-1继电器驱动控制电路图1.用短路帽短接JP7,使用导线把D1区J54接口的SW1与C7区J9接口的KJ任意一根针相连接;2.使用导线把D1区J52接口的LED1、LED2与C7区J103接口的OPEN1,CLOSE1分别相连,另外C7区J103接口的COM1接地GND;3.接好线后,同学可以拨动D1区的SW1拨动开关,观察现象拨到1时LED2亮,拨到0时LED1亮,并得出结论;运行结果:拨到1时LED2亮,拨到0时LED1亮,说明每拨动一次开关改变一次继电器的状态;4.然后把C7区J9接口的KJ改接到A2区的J61接口的P10;再编写一个程序程序参考实验二,使P1.0口延时一段时间后改变电平值,来控制继电器的开关;实验程序见实验参考程序;调试运行结果:两个LED交替变亮,继电器状态不断改变;六、实验参考程序ORG 0000HLJMP MAINORG 0100HMAIN: MOV R7,0LOOP: MOV R6,0DJNZ R6,$DJNZ R6,$DJNZ R6,$DJNZ R7,LOOPCPL P1.0SJMP MAINEND七、实验思考题1.请同学思考一下,改由OPEN2、COM2、CLOSE2时本实验如何进行;同使用OPEN1、COM1和CLOSE1时连接方法类似,把D1区J52接口的LED1、LED2与C7区J103接口的OPEN2,CLOSE2分别相连,另外C7区J103接口的COM2接地GND即可;2.请同学再思考一下,继电器的用途,并举例说明;继电器是一种电控制,是当输入量激励量的变化达到规定要求时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器;它具有又称输入回路和被控制系统又称输出回路之间的互动关系;通常应用于自动化的控制中,它实际上是用小电流去控制大电流运作的一种“自动开关”;故在电路中起着自动调节、安全保护、转换电路等作用;按照其工作原理可有以下应用:电磁继电器固体继电器温度继电器舌簧继电器时间继电器高频继电器极化继电器其他类型的继电器八、实验总结及相关问题由于具有之前实验的基础所以本实验基本没碰到什么问题,调试运行都符合实验要求,通过本次实验了解了继电器的控制方法;对继电器这一器件有了一定了解;。
单片机实验报告二-数码管显示实验
单片机实验报告二-数码管显示实验摘要:本实验使用单片机控制数码管的显示,在实验过程中通过学习单片机的GPIO口的编程,调试程序、调节电路来达到正确的显示效果。
最终按照要求实现了单片机控制数码管的计数器。
关键词:单片机、数码管、GPIO口、计数器一、实验介绍数码管是一种介于机械仪表和液晶显示器之间的电子显示器件,广泛应用于计时器、计数器、仪表等电子产品中。
本实验旨在通过单片机控制数码管的显示来加深对GPIO口的使用和调试程序的理解,同时了解数码管的原理。
本实验主要分为两部分:数码管显示基础实验和数码管控制开关实验。
通过这两部分的实验可以了解数码管的工作原理和单片机的基本控制方式。
二、实验原理2.1 数码管的基本原理数码管显示器将数字显示为一组符号,例如“0”到“9”。
表示不同数字的符号被编码成一个数字码。
七段数码管用一个七段数码字母来表示数字,如下表所示:| 数字 | a | b | c | d | e | f | g || ---- | - | - | - | - | - | - | - || 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 || 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 || 2 | 1 | 1 | 0 | 1 | 1 | 0 | 1 || 3 | 1 | 1 | 1 | 1 | 0 | 0 | 1 || 4 | 0 | 1 | 1 | 0 | 0 | 1 | 1 || 5 | 1 | 0 | 1 | 1 | 0 | 1 | 1 || 6 | 0 | 0 | 1 | 1 | 1 | 1 | 1 || 7 | 1 | 1 | 1 | 0 | 0 | 0 | 0 || 8 | 1 | 1 | 1 | 1 | 1 | 1 | 1 || 9 | 1 | 1 | 1 | 1 | 0 | 1 | 1 |通过控制数码管的七个LED灯的亮灭,可以实现不同符号显示。
单片机实验报告(完整版)
单片机原理与应用实验报告学院(部):专业:学生姓名:班级:学号:最终评定成绩:实验一存储器读写一、实验目的:1、掌握寄存器、存储器读写等汇编指令;2、掌握编程软件编辑、编译、调试等基本操作。
二、实验仪器设备1.PC机,1台2.WAVE软件开发系统三、实验内容及步骤:1、将下面的汇编程序输入到W A VE集成开发软件中ORG 0000HSJMP STARTORG 0030HSTART:MOV R0,#07HMOV 70H,#08HMOV R1,#70HMOV DPTR,#2000HLOOP:MOVX A,@R1MOVX A,@DPTRINC R1INC ADJNZ R7,LOOPSJMP $END2、选择菜单“仿真器”→“仿真器设置”,按下图所示完成软件初始设置。
3、选择菜单“项目”下“编译”,编译通过后,选择“单步运行”,观察记录寄存器(R0、R1)、累加器(A)、程序状态字(PSW)、外部存储器(2000H单元)、I/O端口(P1)的数据变化。
四、源程序源程序:ORG 0000H ;定义起始地址SJMP STARTORG 0030HSTART:MOV R0,#07HMOV 70H,#08H ;给内部RAM的70H单元赋初值MOV R1,#70H ;使R1指向内部70H单元MOV DPTR,#2000H ;定义外部存储器开始单元LOOP:MOVX A,@R1 ;将R1所指向的70H的内容赋给AMOVX @DPTR,A;将A的内容赋给外部存储器单元INC R1 ;内部RAM地址加1INC DPTR ;外部存储器地址加1DJNZ R7,LOOP ;循环,直到RAM中70H~7FH;单元的内容全部相应赋给;外部2000H~2007H单元SJMP $END3、记录下程序单步运行时,寄存器(R0、R1)、累加器(A)、程序状态字(PSW)、外部存储器(2000H单元)、I/O端口(P1)的数据变化。
五、仿真效果图实验二I/O端口操作一、实验目的:1、掌握I/O端口读写等基本汇编指令;2、掌握单片机最小系统硬件电路设计及仿真软件PROTEUS仿真、调试等基本操作方法。
单片机综合实验报告格式实验报告2
单片机综合实验报告格式实验报告2实验报告2:单片机综合实验一、实验目的本实验的目的是通过应用所学的单片机知识,综合运用各种功能模块,设计并实现一个完整的单片机系统。
二、实验器材1. STC89C52单片机开发板2. 七段数码管模块3. LED灯模块4. 蜂鸣器模块5. 按键模块6. 电阻、电容等常规元件7. 万用表等实验工具三、实验原理本实验的设计要求是实现一个闹钟功能,包括当前时间显示、闹钟时间设置和闹钟响铃等功能。
具体实现过程如下:1. 使用七段数码管模块显示当前时间,通过定时器中断实现时间的自动更新。
2. 使用按键模块设置闹钟时间,通过按键中断实现设置的功能。
3. 使用LED灯模块和蜂鸣器模块作为闹钟的响铃指示信号。
四、实验过程1. 确定使用的IO口,连接相应的模块到单片机开发板上。
2. 编写初始化程序,包括定时器的初始化配置,IO口的设置等。
3. 编写定时器中断程序,用于更新时间显示的逻辑。
4. 编写按键中断程序,用于接收设置闹钟时间的信号。
5. 编写闹钟响铃程序,通过控制LED灯和蜂鸣器的开关来实现。
6. 编写主程序,实现整个闹钟功能的循环执行。
五、实验结果经过实验测试,实现了一个完整的闹钟功能,能够准确显示当前时间,并能够根据设置的闹钟时间进行响铃。
六、实验总结通过这次实验,我巩固了单片机的基础知识,并熟悉了各种功能模块的使用方法。
同时,我也学会了如何综合运用这些知识和技能,设计并实现一个完整的单片机系统。
实践中遇到的问题和挑战也促使我进一步提高了解决问题的能力和创新思维。
总的来说,这次实验对我来说是一次很有意义和收获的实践。
单片机按键扫描实验报告
单片机按键扫描实验报告
实验目的:
通过实验,掌握单片机按键的原理和按键的扫描方法。
实验器材:
1. STC89C52单片机开发板
2. 按键模块
3. 面包板、杜邦线等
实验原理:
单片机按键的原理是通过按键模块接通或断开单片机的某个IO口,从而改变该IO口的电平状态,由单片机检测到电平状态的改变,从而实现对按键的检测和响应。
按键模块一般采用矩阵按键的形式,通过多个IO口设为输出,多个IO口设为输入的方式,实现对多个按键的扫描检测。
按键模块一般会采用行列扫描的方法,即将按键分为多个行和列,按下按键时,某一行和某一列之间接通,从而改变了IO口的电平状态。
实验步骤:
1. 将按键模块连接到单片机开发板的IO口上。
根据按键模块的接口定义将VCC、GND和各个行列引脚分别连接到开发板上。
2. 根据按键模块的引脚定义,编写单片机程序进行按键的扫描。
通过循环检测每个行引脚和每个列引脚之间的电平变化,来判断按键是否被按下。
3. 在程序中可以通过LED等显示设备来显示按键是否被按下的状态。
4. 执行程序,观察按键是否可以正常检测和响应。
实验结果:
实验完成后,观察到按键的检测和响应正常,按下按键时,LED等显示设备可以正确显示按键被按下的状态。
经过实验,掌握了单片机按键的原理和按键的扫描方法,进一步提升了对单片机设备的理解和应用能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 双字节无符号数加法例1: 双字节无符号数加法(R0 R1)+(R2 R3) → (R4 R5),R0、 R2、 R4存放16位数的高字节, R1、 R3、 R5存放低字节。
已知(R0 R1)=(93h,79h);(R2 R3)=(25h,a4h)假设其和不超过16位。
请编程。
org 0000hLjmp startorg 0050hstart:mov R0,#93hmov R1, #79hmov R2,#25hmov R3, #0a4hmov A,R1ADD A,R3mov R5,Amov A,R0ADDC A,R2mov R4,Ass: jmp ssend2双字节无符号数减法例2: 双字节无符号数相减(R0 R1)-(R2 R3) → (R4 R5)。
R0、 R2、R4存放16位数的高字节, R1、 R3、 R5存放低字节,已知(R0 R1)=(93h,79h);(R2 R3)=(25h,a4h);请编程。
同学自己可以设置被减数与减数数值org 0000hLjmp startorg 0050hstart:mov R0,#93hmov R1,#79hmov R2,#25hmov R3,#0a4hmov A,R1CLR CSUBB A,R3mov R5,Amov A,R0SUBB A,R2mov R4,Ass: jmp ssend3双字节数乘以单字节数例3: 利用单字节乘法指令,进行双字节数乘以单字节数运算。
若被乘数为16位无符号数, 地址为M1(30H) 和M1+1(31H)(低位先、高位后), 乘数为8位无符号数, 地址为M2(32H), 积由高位到低位存入R2、 R3和R4三个寄存器中。
30H,31H,32H内容 12H,34H,56H ;org 0000hLjmp startorg 0050hstart:mov 30h,#12hmov 31h,#34hmov 32h,#56hmov a,(30h)mov b,(32h)mul abmov R3,bmov R4,amov a,(31h)mov b,(32h)mul abadd A,R3mov R3,Amov A,bADDC A,#00hmov R2,Ass: jmp ssend4. 把8位二进制数转换为3位BCD例4: 利用除法指令把累加器A中的8位二进制数转换为3位BCD 数, 并以压缩形式存放在地址M1、 M2单元中。
设A中放A8H ,M1、 M2单元地址是 30H,31Horg 0000hLjmp startorg 0050hstart:mov A ,#0A8hmov b,#64hdiv Abmov (30h),Amov A,bmov b,#0Ahdiv Abswap Aadd A,bmov (31h),Ass: jmp ssend5双字节压缩BCD码加法例6: 双字节压缩BCD码加法。
设R5(高)、 R4(低)为被加数; R3(高)、 R2(低)为加数, 相加和的结果存入: R6(万)、 R5(千、百)、 R4(十、个)。
被加数98H,76H;加数 54H,32Horg 0000hLjmp startorg 0050hstart:mov R5,#98h ;R5mov R4,#76h ;R4mov R3,#54h ;R3mov R2,#32h ;R2mov A,R4add A,R2DA Amov R4,Amov A,R5ADDC A,R3DA Amov R5,Amov A,#0hmov R6,#0haddc a,R6mov R6,Ass: jmp ssend6 利用DPTR取数据,并保持DPTR原数不变例6: 若在外部ROM/EPROM中2000H单元开始依次存放0~9的平方值, 原来数据指针(DPTR)=3A00H, 请用查表指令取出2003H单元的数据后, 要求保持DPTR中的内容不变。
org 0000hLjmp startstart:mov DPTR,#3a00hpush DPHmov DPTR,#TABLEmov a, #03hmovc a,@A+DPTRpop DPHss: jmp ssorg 2000hTABLE: DB 0,1,4,9,16,25,36,49,64,81End7 16 位数的算术左移16 位数的算术左移。
16位数在内存中低 8 位存放在M1单元, 高 8 位存放在M1+1单元。
16位数是1234H ,M1为30H,M2为31Horg 0000hljmp startorg 0050hstart:mov (30h),#34Hmov (31h),#12hmov a,30hmov b,#02hmul abmov 30h,amov r1,bmov a,31hmov b,#02hmul abadd a,r1mov 31h,ass:jmp ssend8 比较内部RAM I、J单元中A、B两数的大小例 3: 比较内部RAM I、 J单元中A、 B两数的大小,设A、 B数均为带符号数, 以补码数存入I、 J中, 若A=B, 则使内部RAM的位K 置 1; 若A≠B, 则大数存M单元, 小数存N单元。
设内部RAM I、 J 是30H,40H;(A)=58H,(B)=97HM单元=50H,N单元=60H,位K=00H该带符号数比较子程序的比较过程示意图如图 3 ― 9 所示。
org 0000hljmp startorg 0050hstart:mov (30h),#58hmov (40h),#58hmov a,30hanl a,#80hjnz m ;a<0mov a,40hanl a,#80hjnz m2 ;b<0mov a,(40h) ;两个数字都大于0的情况subb a,(30h)jz m3jnc m1jc m2n1: ;两个数字都小于0的情况 mov a,(40h)subb a,(30h)jz m3jnc m2jc m1m: mov a,40hanl a,#80hjnz n1 ;b<0m1: mov (50h),(40h)mov (60h),(30h)jmp ssm2: mov (50h),(30h)mov (60h),(40h)jmp ssm3: mov (00h),#1ss:jmp ssend9 双字节压缩BCD码转换成二进制码例 2: 双字节压缩BCD码转换成二进制码子程序。
提示: 该转换的算法为: (d3d2d1d0)BCD=(d3×10+d2)×100+(d1×10+d0)实现该算法的参考子程序如下:入口: R5(千位、百位)、R4(十位、个位)为BCD码。
出口: R5R4(16 位无符号二进制整数)。
org 0000hljmp startorg 0050hstart:mov r5,#10hmov r4,#10hljmp BCD2Borg 2000hBCD2B:mov a,r5anl a,#0F0hswap amov b,#0ah;b>>10mul abmov r3,a ;暂存相乘结果 mov a,r5anl a,#0fhadd a,r3mov b,#64h;b>>100mul abmov r5,bmov r3,amov a,r4anl a,#0F0hswap amov b,#0ah;b>>10mul abmov r2,a ;暂存相乘结果 mov a,r4anl a,#0fhadd a,r2add a,r3mov r4,ass: ljmp ssend10 冒泡排序有8个数据存放在20H为首地址的内部RAM,进行升序排列编程,原始数据:39,27,13,44,78,22,6,51;设R7 为比较次数计数器,初始值为07H,F0为标志位,F0=0表明无互换发生,F0=1表明有互换发生org 0000hljmp startorg 0050hstart:mov (20h),#39;27hmov (21h),#27 ; 1Bhmov (22h),#13 ;0DHmov (23h),#44 ;2CHmov (24h),#78 ;4EHmov (25h),#22 ; 16Hmov (26h),#6 ; 06Hmov (27h),#51 ;33Ha0: mov r0,#20hmov r1,#1fhmov r7,#07hclr f0clr ca1:mov a,@r0inc r0inc r1mov b,asubb a,@r0jc a3a2: mov a,bxch a,@r0 mov @r1,a setb f0a3: djnz r7,a1 jb f0, a0ss: ljmp ssEnd11中断方式下定时器应用设计设单片机的晶振为12MHz,,定时器0方式0工作,产生1ms定时,在P1.0引脚上输出周期为2ms的方波,中断方式完成,试设计程序。
org 000BHLJMP INTorg 2000Hljmp startstart:mov TMOD ,#00Hmov th0 , #1chmov tl1 ,#18hsetb EAsetb ET0setb TR0sjmp $INT: CPL p1.0 ;输出方波MOV TH0,#1ch ;重新装入计数初值,如果是方式2就不需要重装。
MOV TL0,#18hRETIss:jmp ssend12查询方式下定时器应用设计设单片机的晶振为12MHz,,定时器0方式0工作,产生1ms定时,在P1.0引脚上输出周期为2ms的方波,查询方式完成,试设计程序。
org 2000Hljmp startstart:mov TMOD ,#00Hmov th0 , #1chmov tl1 ,#18hmov a,#00hmov IE ,#00Hsetb TR0loop: jbc tf0 ,loop1sjmp looploop1:clr tf0CPL p1.0 ;输出方波inc aMOV TH0,#1ch ;重新装入计数初值,如果是方式2就不需要重装。
MOV TL0,#18hsjmp loopss:jmp ssEnd13中断方式下定时器应用设计设片内RAM的70H单元的初值为01H,要求每1秒钟将其内容左环移一位,采用定时器T1,采用定时方式1,晶振频率为6MHz。
中断方式完成,试设计程序。
ORG 0000HLJMP MAINORG 001BH ;T1中断入口LJMP INT ;转至INT处ORG 2000H ;主程序MAIN:MOV TMOD,#10H ;T1工作于方式1MOV TH1,#3CH ;设置计数初值MOV TL1,#0B0HSETB EA ;CPU开中断SETB ET1 ;允许T1中断SETB TR1 ;启动T1定时MOV 70h,#01H ;将初值送入70H单元中MOV R0,#0AH ;设置软件计数器HALT: SJMP HALT ;等待中断INT: DJNZ R0,NEXT ;中断服务程序MOV A,70H ;时间已到,将70H单元内容送ARL A ;左环移一位MOV 70H,A ;回送MOV R0,#0AH ;重新设置软件计数器NEXT:MOV TH1,#3CH ;重新设置计数初值 MOV TL1,#0B0HRETI ;中断返回ss:jmp ssEND。