单片机实验
单片机实验心得体会8篇

单片机实验心得体会8篇单片机实验心得体会1三月七号下午我们做了第一次单片机实验,虽然对单片机还不是很了解,但在学长的带领下我们基本上了解了单片机的的开发环境,进行了简单的编程。
李老师的一番话令我很受启发。
实践出真知,这是永恒不变的真理。
只有将理论付诸于实践并在实践中纠正发展理论,我们才能算是得到了真正的.知识。
实验开始,学长直接从具体的编译细节讲起。
没有太多的介绍和理论的空谈。
就像老师说的没有必要把人民币的各个细节都了解的很清楚后才开始用钱一样。
很多时候我们正是在那些细枝末节上浪费了太多不必要的时间和精力。
通过一个简单的程序的讲解,我们就对CVAVR和AVRStudio有了初步的掌握。
看着一闪一闪的LED,我们小组感到了单片机的神奇和奥秘,一种难以言表的激动涌上心头。
我们就像看到了交通拥挤的路上因为有了我们设计的红绿灯而变得秩序井然一样欣慰。
接下来我们组稍微改了下程序,变为了同时控制四个灯,而且让它们依次亮起,只是延迟的时间比预定的要长一些。
这也应该是十字路口的交通灯的原理吧。
总结起来,本次试验还是比较成功的。
但对下一次的试验充满了期待,希望能做出更有用,更贴近生活的作品。
我想也正是在这种不断的自我期望中,人类才能不断的总结经验,阔步向前。
单片机实验心得体会2学了一年多的单片机,对单片机也有了一个基础的了解。
在这一年里,我学了DS18B20、12864大液晶、数码管显示等。
从最初的跑马灯,到整体融合,经历了一段时间。
单片机只有P0,P1,P2,P3,如果想把很多功能合在一起的话,就得复用,或着用到扩展,但是那个扩展模块不好用,写起程序来会比较麻烦,其实复用好的话,基本IO口都够用!学习的时候总是难免碰到一些问题!但是我的总结是:没关系,边做边想!或着讲瞎搞!不搞肯定不知道,搞了才会懂!过去的一些问题在现在看来都是小case,什么定时器赋值啊,定时器的使用类型(模式0,模式1,模式2),当时就自己在那里看书理解,一大堆的文字在那里,看了很久也不懂!不过后来我懂得了上网找视频教程!刚开始的时候也总是想为什么这么做,为什么这么做,为什么这么做,一堆的为什么。
[整理]单片机6个必做实验
![[整理]单片机6个必做实验](https://img.taocdn.com/s3/m/1361a0cf7e192279168884868762caaedd33bac0.png)
第一部分软件实验实验一二进制到BCD码转换一、实验目的1、掌握简单的数值转换算法2、基本了解数值的各种表达方法二、实验说明单片机中的数值有各种表达方式,这是单片机的基础。
掌握各种数制之间的转换是一种基本功。
我们将给定的一个二进制数,转换成二十进制(BCD)码。
将累加器A的值拆为三个BCD码,并存入RESULT开始的三个单元,例程A赋值#123。
三、实验内容及步骤1、启动计算机,打开伟福仿真软件,进入仿真环境。
首先进行仿真器的设置,选择使用伟福软件模拟器。
2、打开TH2.ASM源程序进行编译,编译无误后,全速运行程序,打开数据窗口(DATA),点击暂停按钮,观察地址30H、31H、32H的数据变化,30H更新为01,31H更新为02,32H更新为03。
用键盘输入改变地址30H、31H、32H的值,点击复位按钮后,可再次运行程序,观察其实验效果。
修改源程序中给累加器A的赋值,重复实验,观察实验效果。
3、打开CPU窗口,选择单步或跟踪执行方式运行程序,观察CPU窗口各寄存器的变化,可以看到程序执行的过程,加深对实验的了解。
四、流程图及源程序1.源程序RESULT EQU 30HORG 0000HLJMP STARTBINTOBCD:MOV B,#100DIV ABMOV RESULT,A ;除以100得百位数MOV A,BMOV B,#10DIV ABMOV RESULT+1,A ;余数除以10得十位数MOV RESULT+2,B ;余数为个位数RETSTART:MOV SP,#40HMOV A,#123CALL BINTOBCDLJMP $END2.流程图实验四程序跳转表一、实验目的1、了解程序的多分支结构2、掌握多分支结构程序的编程方法二、实验说明多分支结构是程序中常见的结构,在多分支结构的程序中,能够按调用号执行相应的功能,完成指定操作。
若给出调用号来调用子程序,一般用查表方法,查到子程序的地址,转到相应子程序。
单片机按键实验实训报告

一、实验目的1. 理解单片机按键的工作原理和电路连接方法;2. 掌握按键消抖原理及其实现方法;3. 学会使用单片机编程控制按键功能,实现简单的输入控制;4. 提高单片机实验操作能力和编程能力。
二、实验仪器及设备1. 单片机开发板(如STC89C52);2. 按键;3. 万用表;4. 电脑;5. Keil C编译器。
三、实验原理1. 按键原理:按键是一种电子开关,按下时导通,松开时断开。
在单片机应用中,按键常用于输入控制信号。
2. 按键消抖原理:由于按键机械弹性,闭合和断开时会有一连串的抖动。
若直接读取按键状态,容易导致误操作。
因此,需要进行消抖处理。
3. 消抖方法:主要有软件消抖和硬件消抖两种方法。
本实验采用软件消抖方法,即在读取按键状态后,延时一段时间再读取,若两次读取结果一致,则认为按键状态稳定。
四、实验步骤1. 硬件连接:将按键一端接地,另一端与单片机的某个I/O口相连。
2. 编写程序:使用Keil C编译器编写程序,实现以下功能:(1)初始化I/O口,将按键连接的I/O口设置为输入模式;(2)读取按键状态,判断按键是否被按下;(3)进行消抖处理,若按键状态稳定,则执行相应的功能。
3. 编译程序:将编写好的程序编译成HEX文件。
4. 烧录程序:将编译好的HEX文件烧录到单片机中。
5. 实验验证:观察实验现象,验证按键功能是否实现。
五、实验结果与分析1. 硬件连接正确,程序编译无误。
2. 实验现象:当按下按键时,单片机执行相应的功能;松开按键后,按键功能停止。
3. 分析:通过软件消抖处理,有效避免了按键抖动导致的误操作。
六、实验总结1. 本实验成功实现了单片机按键控制功能,掌握了按键消抖原理及实现方法。
2. 通过实验,提高了单片机编程和实验操作能力。
3. 在后续的单片机应用中,可以灵活运用按键控制功能,实现各种输入控制需求。
4. 本次实验为单片机应用奠定了基础,为进一步学习单片机技术打下了良好基础。
单片机实验报告范文

单片机实验报告范文一、实验目的本实验的目的是通过学习单片机的基本原理和使用方法,掌握单片机在各个实际应用中的基本技能。
二、实验器材及原理1.实验器材:STC89C52单片机、电源、晶振、按键、LED灯、蜂鸣器等。
2.实验原理:单片机是一种微处理器,能够完成各种复杂的功能。
通过学习单片机的工作原理和编程方法,可以控制各种外围设备,实现不同的功能。
三、实验内容及步骤1.实验一:点亮LED灯步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)编写程序,点亮LED灯。
2.实验二:按键控制LED灯步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)将按键和LED灯与单片机相连。
(3)编写程序,实现按下按键控制LED灯亮灭。
3.实验三:数码管显示步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)将数码管与单片机相连。
(3)编写程序,将数字输出到数码管上显示。
4.实验四:定时器应用步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)编写程序,实现定时器功能。
四、实验结果及分析1.实验一:点亮LED灯LED灯成功点亮,证明单片机与外部设备的连接正常。
2.实验二:按键控制LED灯按下按键后,LED灯亮起,松开按键后,LED灯熄灭。
按键控制LED 灯的效果良好,说明单片机的输入输出功能正常。
3.实验三:数码管显示数码管成功显示数字,说明单片机能够实现数字输出功能。
通过程序设计,可以实现数码管显示不同的数字。
4.实验四:定时器应用定时器正常运行,能够实现精确的定时功能。
通过调节定时器的参数,可以实现不同的定时功能。
五、实验总结通过本次实验,我们学习了单片机的基本原理和使用方法。
通过掌握单片机的编程技巧,我们能够实现各种复杂的功能,如控制LED灯、按键控制、数码管显示等。
这些技能对于日常生活和工程设计都具有很大的实用性。
在实验过程中,我们遇到了各种问题,如电路连接错误、程序编写错误等。
实验1单片机系统认识实验ppt课件

2、程序调试步骤: ① 进入调试环境:CTRL+F5 ② 修改程序计数器PC的值 ③ 单步执行:F10(连续F5,断点) ④ 观察调试窗口的数据正确与否 ⑤ 退出调试环境。
.
六.书写实验报告
1.实验目的 2.实验设备 3.实验内容
画出单片机最小系统的基本电路; 结合图1.5描述小灯亮灭的原理; 如何使小灯两灭的时间间隔变长? 4.写出实验过程中遇到的问题及其解决方法
.
谢机系统认识实验
.
一、实验目的:
1、认识单片机最小系统的组成 2、掌握单片机最小系统的设计
二、实验内容:
1、熟悉最小系统的组成器件 2、理解最小系统的硬件电路 3、编写程序并下载运行,点亮小灯
.
三、硬件电路
.
四、参考程序
.
五、程序设计与调试步骤 (重要)
1、程序设计步骤: ① 创建工程 ② 选择单片机型号 ③ 新建源文件,编辑汇编或C51语言程序 ④ 保存源程序.asm或.c,并加入到工程中 ⑤ 进行编译;若不成功,要调试修改
单片机实验——精选推荐

实验一认识实验一.实验目的1.了解仿真器的硬件结构与接线。
2.了解MCS-51单片机复位功能及复位后的内部状态。
3.通过示例程序的键入与执行,学习仿真器的使用与操作方法。
二.实验内容1.对照实验指导书,查对实验机具体接线。
2.按照开发系统的使用方法,分别查看复位后PC、SP、DPTR等特殊功能寄存器及片内、片外RAM的内容。
3.熟悉开发器的使用,将下面程序键入实验机。
ORG 2000H2000 74AA MOV A,#0AAH2002 75F0BB MOV B,#0BBH2005 E5F0 MOV A,B2007 78CC MOV R0,#0CCH2009 E8 MOV A,R0200A 80FE SJMP $4.程序键入后,检查各存储单元所储机器码是否正确如有误,重新键入,达到修正的目的。
5.单步执行示例程序,逐步检查执行结果,核查与分析结果是否相符,直到执行完最后一条指令。
6.练习连续执行示例程序,检查执行结果,核查与分析结果是否相符。
7.自己在示例程序中插入一条指令,执行并查看结果,然后删除,熟悉插入/删除操作。
8.将示例程序移到另外一个存储区,执行并查看结果,熟悉程序块移动操作。
三.实验预习要求1.认真阅读指导书的相关内容,熟悉开发系统的各种操作。
2.实验前应写出规定操作任务的具体操作方法步骤。
四.思考题1.MCS-51单片机怎样实现内部复位,画出一种复位电路。
2.PC、SP、P0、P1、P2、P3复位状态是什么?各有何意义?3.示例程序中最后一条指令SJMP $的作用是什么?如果取掉这一条指令,程序的执行将发生什么变化?4.实验机监控系统怎样实现程序“单步执行”功能?五.实验报告要求1.按实验顺序,写出实验操作的方法步骤。
2.写出实验中所遇到的问题与解决过程。
写出思考题的答案。
实验二建立数据区、数据块传送一.实验目的1.进一步熟悉实验机操作,练习程序调试方法。
2.理解并掌握建立数据区与数据块传送程序。
单片机原理及应用实验报告2

单片机原理及应用实验报告2单片机原理及应用实验报告2实验报告:单片机原理及应用实验一、实验目的1、了解单片机的基本工作原理;2、掌握单片机的编程方法和编写汇编语言程序的能力;3、学习单片机的应用实验。
二、实验原理单片机是一种集成电路,内部包含了中央处理器、存储器和各种输入输出端口。
单片机的工作原理是通过对输入信号的处理和对输出信号的控制来实现各种功能。
单片机的编程方法一般采用汇编语言编写程序。
汇编语言是一种低级语言,可以直接对单片机进行操作。
通过编写汇编语言程序,可以实现各种功能,如控制LED灯的亮灭、控制电机的转动等。
本次实验主要通过控制LED灯的亮灭来演示单片机的应用。
在实验中,我们将使用汇编语言编写程序,通过编程来控制LED灯的亮灭。
三、实验步骤2、编写汇编语言程序:打开编程软件,进入编程界面,编写程序代码;3、编译程序:将编写好的程序进行编译,生成机器码;4、烧录程序:用编程工具将编译好的机器码烧录到单片机中;5、连接电路:使用面包板将单片机与LED灯连接起来;6、测试程序:将单片机的电源接通,观察LED灯的亮灭情况。
四、实验结果与分析经过以上步骤,我们成功地编写了汇编语言程序,并将程序烧录到了单片机中。
在实验中,我们观察到LED灯根据程序的控制产生了相应的亮灭效果。
实验结果表明,通过编程可以实现对单片机的控制,从而实现各种功能。
单片机在嵌入式系统、自动控制系统、家电等方面有着广泛的应用。
五、应用实例1、家居智能化控制:通过编程控制单片机,可以实现对家电的智能化控制。
例如,可以根据日出日落时间控制窗帘的开闭,根据室内温度控制空调的开关等。
2、工业自动化:在工业生产中,单片机可以用来控制各种设备和机械,实现生产线的自动化控制。
例如,可以根据产品的规格和数量,自动调整机械的工作速度和工作时间。
3、智能交通系统:在交通领域,单片机可以用来控制信号灯、道闸等设备,实现交通流量的控制。
例如,可以根据道路的拥堵程度和车辆的行驶速度,调整信号灯的红绿灯时间,从而达到交通畅通的目的。
单片机原理及接口技术实验报告

单片机原理及接口技术实验报告一、引言单片机(Microcontroller)是一种集成为了处理器、存储器和各种接口电路的微型计算机系统。
它具有体积小、功耗低、成本低等优点,广泛应用于嵌入式系统、自动化控制、电子设备等领域。
本实验旨在深入了解单片机的原理和接口技术,并通过实验验证相关理论。
二、实验目的1. 理解单片机的基本原理和结构。
2. 掌握单片机与外部器件的接口技术。
3. 进一步培养实际操作能力和解决问题的能力。
三、实验仪器与材料1. 单片机开辟板2. 电脑3. 串口线4. LED灯5. 蜂鸣器6. 数码管7. 按键开关8. 电阻、电容等元件四、实验内容与步骤1. 单片机原理实验1.1 单片机的基本结构单片机由中央处理器(CPU)、存储器(RAM、ROM)、输入输出接口(I/O)、定时器/计数器、串行通信接口等组成。
通过学习单片机的基本结构,我们可以了解各个部份的功能和作用。
1.2 单片机的工作原理单片机的工作原理是指单片机在不同工作模式下的内部状态和运行规律。
通过学习单片机的工作原理,我们可以更好地理解单片机的工作过程,为后续的实验操作提供基础。
2. 单片机接口技术实验2.1 LED灯接口实验将LED灯与单片机相连,通过控制单片机的输出口电平,控制LED灯的亮灭。
通过实验,我们可以学习到单片机的输出接口的使用方法。
2.2 蜂鸣器接口实验将蜂鸣器与单片机相连,通过控制单片机的输出口电平和频率,控制蜂鸣器的声音。
通过实验,我们可以学习到单片机的输出接口的使用方法。
2.3 数码管接口实验将数码管与单片机相连,通过控制单片机的输出口电平和数据,显示不同的数字。
通过实验,我们可以学习到单片机的输出接口和数码管的使用方法。
2.4 按键开关接口实验将按键开关与单片机相连,通过检测单片机的输入口电平,实现按键的功能。
通过实验,我们可以学习到单片机的输入接口的使用方法。
五、实验结果与分析1. 单片机原理实验结果通过学习单片机的基本结构和工作原理,我们深入了解了单片机的内部组成和工作过程,为后续的接口技术实验打下了基础。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
石家庄铁道大学单片机实验题目实验一数据区赋值(用指针、at、宏分别设计程序)实现给片内RAM 30H和片外RAM 3000H开始的16字节区域分别赋值为0x01、0x02......0x0f。
At#include<absacc.h> //atdata unsigned char buffer1[16] _at_ 0x30;xdata unsigned char buffer2[16] _at_ 0x0030;void main(){unsigned int i,j;for(i=0;i<16;i++){buffer1[i]=i;}for(j=0;j<16;j++){buffer2[j]=j;}while(1);}宏#include<absacc.h>//宏void main(){unsigned int i,a,b;a=0x30;b=0x0030;for(i=0;i<16;i++){DBYTE[a++]=i;XBYTE[b++]=i;}while(1);}指针#include<absacc.h> //指针void main(void){unsigned char data*p1;unsigned char xdata*p2;unsigned int i;p1=0x30;p2=0x3000;for(i=0;i<16;i++){*p1=i;p1++;*p2=i;p2++;}}实验二数据区数据处理对30H开始的内存区数据0x01~0x0f进行处理:将30H开始的内容变成0x01、0x23、0x45......0xef存到40H开始的单元将40H开始的内容变成0xef、0xcd.....0x23、0x01存到50H开始的单元将50H开始的内容变成0x0f、0x0e、0x0d......0x01、0x00存到60H开始的单元#include<stdio.h>#include<math.h>#include<adsacc.h>data unsigned char buffer1[16] _at_ 0x30;data unsigned char buffer2[8] _at_ 0x40;data unsigned char buffer3[8] _at_ 0x50;data unsigned char buffer4[16] _at_ 0x60;void main(){unsigned int i,j,k,r;for(i=0;i<16;i++){buffer1[i]=i;}//30H赋值for(j=0;j<8;j++){buffer2[j]=buffer1[2*j]<<4|buffer1[2*j+1];}//40H{buffer3[k]=buffer2[7-k];}//50Hfor(r=1;r<16;r++){if(r%2==0)buffer4[r-1]=buffer3[r/2-1]>>4;else buffer4[r-1]=buffer3[r/2]&0x0f;}//60H}实验三并行口实验P3.0接开关K0,设计程序实现:当K0=0时,P1口连接的8个LED灯从LED0~LED7依次点亮;当K0=1时,P1口连接的8个LED灯从LED7~LED0依次点亮;#include<reg51.h>#define unchar unsigned charvoid delay(){unchar i,j;for(i=0;i<255;i++)for(j=0;j<255;j++);}void mian(){unchar a,b,i;do{P3=0xff;//将P3置为输入状态a=P3;a=a&0x01;//屏蔽高7位if (a==0){b=0x01;for(i=0;i<8;i++){P1=b;delay();b=b<<1;}}else{b=0x80;{P1=b;delay();b=b>>1;}}}while(1);}根据P3.1和P3.0连接的开关K1和K0的状态实现P1口连接的8只LED灯按以下形式#define unchar unsigned charvoid delay(){unchar i,j;for(i=0;i<255;i++)for(j=0;j<255;j++);}void mian(){unchar a,b,c,i;do{P3=0xff;a=P3;a=a&0x03;//屏蔽高六位switch(a){case 0:{for(i=0;i<2;i++){P1=0x00;delay();P1=0x0ff;delay();}}break;case 1:{for(i=0;i<2;i++){P1=0x0f;delay();P1=0x0f0;delay();}}break;case 2:{P1=0x00;for(i=0;i<4;i++){b=(0x01<<i)&0x0f;c=(0x80>>i)&0xf0;P1=b+c;delay();}for(i=0;i<4;i++){b=(0x08>>i)&0x0f;c=(0x10<<i)&0xf0;P1=b+c;delay();}}break;case 3:{P1=0xff;for(i=0;i<4;i++){b=(~(0x01<<i))&0x0f;c=(~(0x80>>i))&0xf0;P1=b+c;delay();}for(i=0;i<4;i++){b=(~(0x08>>i))&0x0f;c=(~(0x10<<i))&0xf0;P1=b+c;delay();}}break;}//switch结束} while(1);}实验四外部中断实验1INT0中断:P1接8个LED灯,点动开关接P3.2(INT0),负跳变产生中断,编写程序实现:主程序8只LED灯一起亮灭闪烁循环往复;INT0中断程序实现8个LED灯左右点亮循环5次后退出中断。
#include<reg51.h>#include<intrins.h>#define unchar unsigned charvoid delay(){unchar i,j;for(i=0;i<255;i++)for(j=0;j<255;j++);}void main(){EA=1;EX0=1;IT0=1;do{P1=0x00;delay();P1=0xff;delay();}while(1);}void int0() interrupt 0 using 1{unchar k,m;k=0x80;for(m=0;m<40;m++)//左点亮循环5次{P1=k;delay();k=_cror_(k,1);}}INT1中断:P1接8个LED灯,点动开关接P3.2(INT0),负跳变产生中断,编写程序实现:主程序8只LED灯一起亮灭闪烁循环往复;INT0中断程序实现8个LED灯左右点亮循环5次后退出中断。
#include<reg51.h>#include<intrins.h>#define unchar unsigned charvoid delay(){unchar i,j;for(i=0;i<255;i++)for(j=0;j<255;j++);}void main(){EA=1;EX1=1;IT1=1;do{P1=0x00;delay();P1=0xff;delay();}while(1);}void int1() interrupt 2 using 2{unchar a,b,c;EX1=0;a=0x80;for(b=0;b<5;b++) //左右点亮循环5次{for(c=0;c<8;c++){P1=0x80>>c;delay();}for(c=0;c<8;c++){P1=0x01<<c;delay();}}}实验五外部中断实验2:(中断优先级和中断嵌套实验)两个外部中断:P1接8个LED灯,点动开关接P3.2 (INT0),K0开关接P3.3(INT1),均为负跳变产生中断和低优先级,编写程序实现如下功能:①主程序8只LED灯一起亮灭闪烁循环往复。
②INT0中断程序实现:8个LED灯左点亮循环5次后退出中断;INT1中断程序实现8个LED灯右点亮循环5次后退出中断。
(为方便实验现象观察,中断程序里的循环次数可改为10次)运行程序,观察在INT0中断服务期间,INT1申请中断是否会响应?(不会)在INT1中断期间,INT0申请中断是否会响应?(不会)解释实验现象理解同优先级下的中断优先顺序的知识。
(自然优先级INT0>INT1,但进入中断后互不干扰;自然优先级下若同时触发INT0和INT1,则先响应INT0)修改程序,INT0设为低优先级,INT1设为高优先级,运行程序观察实验现象:在INT0中断程序运行中,INT1中断请求能否得到相应?(可以)在INT1中断程序运行中,INT0中断请求能否得到相应?(不可以)修改程序,INT0设为高优先级,INT1设为低优先级,运行程序观察实验现象:在INT0中断程序运行中,INT1中断请求能否得到相应?(不可以)在INT1中断程序运行中,INT0中断请求能否得到相应?(可以)解释原因,加强对中断嵌套知识的理解。
(若手动设置优先级,(如PX0=1,PX1=0使INT0为高级中断、INT1为低级中断),高级中断可以打断执行中的低级中断)(实验设置目的:体会中断管理机制,理解中断嵌套规则。
)#include<reg51.h>#include<intrins.h>#define unchar unsigned charvoid delay(){unchar i,j;for(i=0;i<255;i++)for(j=0;j<255;j++);}void main(){EA=1;EX0=1;EX1=1;IT0=1;IT1=1;IP=0;//1.IP=0即PX0=0;PX1=1;同为低优先级//2.PX0=0;PX1=1;//3.PX0=1;PX1=0;do{P1=0x00;delay();P1=0xff;delay();}while(1);}void int0() interrupt 0 using 1{unchar a,b;b=0x80;for(a=0;a<40;a++){P1=b;delay();k=_cror_(b,1);}}void int1() interrupt 2 using 2{unchar k,m;k=0x01;for(m=0;m<40;m++){P1=k;delay();k=_crol_(k,1);}}实验六定时器实验P1接8个LED灯,点动开关接P3.2 (INT0),负跳变产生中断。