单片机实验报告 二
单片机实验二 拆字程序 实验报告

ORG 30H
00H
00H
30H
MOV A,30H
00H
30H里的数
30H里的数
ANL A,#0FH
30H里的数
高四位清零,低四位不变
高四位清零,低四位不变
MOV 22H,A
22H里的数
A高四位清零,低四位不变
A高四位清零,低四位不变
MOV A,30H
A高四位清零,低四位不变
30H里的数
30H里的数
将累加器A内容送片内RAM的20H单元
赋值:A=30H
将累加器A的高低位互换
将互换高低位后的累加器A高四位清零,低四位不变
将累加器A内容送片内RAM的21H单元
结束
单步运行程序,填写下论分析值
实际运行结果值
ORG 00H
00H
00H
00H
LJMP STAR
00H
00H
SWAP A
30H里的数
30H里的数高低位数转换
30H里的数高低位数转换
ANL A,#0FH
30H里的数高低位数转换
高四位清零,低四位不变
高四位清零,低四位不变
MOV 21H,A
21H里的数
A里面的数
A里面的数
SJMP $
00H
00H
00H
END
00H
00H
00H
思考
如何用断点方式调试本程序。
把光标指向语句左边,然后单击,会出现一个符号。同样的方法对需要在结束语句左边做同样的事情,然后全速运行,按下停止按钮,程序就会在相应的位置停止。
佛山科学技术学院
实验报告
课程名称实验项目拆字程序
专业班级姓名学号
单片机实验报告范文

单片机实验报告范文一、实验目的本实验的目的是通过学习单片机的基本原理和使用方法,掌握单片机在各个实际应用中的基本技能。
二、实验器材及原理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灯、按键控制、数码管显示等。
这些技能对于日常生活和工程设计都具有很大的实用性。
在实验过程中,我们遇到了各种问题,如电路连接错误、程序编写错误等。
单片机原理及应用实验二报告

单片机原理及应用实验二报告实验二:单片机IO口的输入输出实验一、实验目的:1.理解并掌握单片机IO口的输入输出原理;2.掌握基础的输入输出编程技巧;3.熟悉单片机实验的基本流程和实验报告格式。
二、实验器材:1.STM32F103C8T6开发板2.LED灯3.电阻(220Ω)4.面包板、杜邦线等。
三、实验原理:单片机的IO口是实现与外部器件进行通信的重要接口,通过编程,我们可以控制IO口的状态(低电平或高电平)来实现对外部器件的控制或检测。
IO口的输入输出原理主要有两种:1.三态输出方式:通过设置IO口的DDR寄存器来将IO口设置为输出模式(推挽输出),并通过设置IO口的ODR寄存器来控制IO口的输出状态为低电平或高电平;2.上拉输入方式:通过设置IO口的DDR寄存器来将IO口设置为输入模式,同时设置IO口的CR寄存器的PUPD位为上拉使能,通过读取IO口的IDR寄存器可以获取IO口的输入状态。
四、实验步骤:1.连接电路:将STM32F103C8T6开发板的VDD和VSS(即5V和GND)分别连接到面包板的3V3和GND,将LED的阳极(长脚)连接到STM32F103C8T6开发板的PA0引脚,将LED的阴极(短脚)通过一个220Ω的电阻连接到GND。
2. 打开Keil uVision5软件,创建一个新的工程,并选择适合的芯片型号(STM32F103C8T6)。
3.编写代码实现将PA0引脚设置为输出模式,并控制LED的亮灭。
五、实验代码:```c#include "stm32f10x.h"void GPIO_Configuration(void)GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);int main(void)GPIO_Configuration(;while (1)GPIO_SetBits(GPIOA, GPIO_Pin_0); // 点亮LEDGPIO_ResetBits(GPIOA, GPIO_Pin_0); // 关闭LED}```六、实验结果与分析:七、实验心得:本次实验主要学习了单片机IO口的输入输出原理,了解了三态输出方式和上拉输入方式,并通过实际编写代码的方式,在STM32F103C8T6开发板上实现了控制LED的亮灭。
单片机实验报告

《单片机原理与外围电路》课程实验报告书
第2次实验
塔里木大学信息工程学院
《单片机原理与外围电路》课程第1实验报告
2.观察仿真结果,检验电路图绘制的正确性。
八个led灯从上到下依次点亮,仿真与设想一样,很成功。
2.实验原理:
单片机流水的实质是单片机各引脚在规定的时间逐个上电,使LED灯能逐个亮起来但过了该引脚通电的时间后便灭灯的过程,实验中使用了单片机的P2端口,对8个LED灯进行控制,要实现逐个亮灯即将P2的各端口逐一置零,中间使用时间间隔隔开各灯的亮灭。
使用rl或rr a 实现位的转换。
单片机定时器及外部中断实验报告

单片机实验报告(二)实验名称:定时器及外部中断*名:**学号:*********班级:通信2班时间:2013.11南京理工大学紫金学院电光系一、实验目的1、学习定时/计数器的应用;2、学习外部中断技术的基本使用方法;3、学习中断处理程序的编程方法。
二、实验原理(1)以P1口作为输出口,定时器实现1s定时,实现显示数的1s加1,外部中断0键盘外接BUTTON,实现对显示数快速加1的控制。
(2)系统板上硬件连线把“单片机系统”A2区的J61接口的P1.0~P1.6端口与D1区的J52接口相连。
把“单片机系统”A2区的INT0端口用导线连接到D1区的KEY1端口上;三、实验内容利用定时器中断控制1s的输出,使用外部中断0使得显示的数加1. 程序如下:#include<reg51.h>#define uchar unsigned char#define uint unsigned intvoid delay(){uint x,y;for(x=100;x>0;x--)for(y=110;y>0;y--);}uchar m,flag;void main(){uchar a,b;TMOD=0x01;TH1=(65536-50000)/256;TL1=(65536-50000)%256;EX0=1; EX1=1; PX1=1; ET0=1; EA=1; 中断开启TR0=1;m=0; P1=0;while(1){while(flag==0); flag=0;if(m==100) m=0;m++;a=m/10;b=m+a*6;P1=b;}}void timer0() interrupt 1 using 0{uchar t;TH1=(65536-50000)/256;TL1=(65536-50000)%256;if(t<20) t++;else { flag=1; t=0; }}void exter0() interrupt 0 using 1{if(INT0==0) delay();if(INT0==0) flag=1;}void exter1() interrupt 2 using 2{if(INT1==0) delay();if(INT1==0) m=0;}将编译好的程序下载到仿真电路中四、小结与体会通过本次定时器中断实验,我对定时器的工作原理有了更加深入的理解,这也是建立在向同学请教的基础上。
单片机原理及应用实验报告2

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

51单片机实验报告一、引言51单片机是一种广泛应用于嵌入式系统开发的微控制器芯片。
本实验旨在通过对51单片机的实验研究,加深对该芯片的理解和应用。
二、实验一:LED灯闪烁控制本实验通过编写程序,控制51单片机上的LED灯以特定的频率闪烁。
为了实现这个目标,我们首先需要了解51单片机的引脚布局,确定LED灯的连接方式。
然后,通过编写相应的汇编程序,控制引脚的电平变化,从而实现LED灯的闪烁。
三、实验二:数码管显示数码管是一种常见的输出设备,通过控制引脚的输出来显示特定的数字。
本实验中,我们通过编写程序,实现通过51单片机控制数码管的显示。
通过对数码管的驱动原理和编程的学习,我们可以灵活地控制数码管的显示内容和频率。
四、实验三:蜂鸣器发声蜂鸣器是一种常见的声音输出设备,通过控制引脚的输出来产生特定的声音。
本实验中,我们通过编写程序,实现通过51单片机控制蜂鸣器的发声。
通过学习蜂鸣器的驱动原理和编程,我们可以根据需要产生不同频率和节奏的声音。
五、实验四:温湿度检测温湿度检测是一种常见的环境监测需求。
本实验中,我们通过引入温湿度传感器,实现通过51单片机获取环境的温度和湿度信息。
通过编写程序和读取传感器的数据,我们可以实时监测环境的温湿度,并进行相应的控制和反馈。
六、实验五:红外遥控红外遥控是一种常见的无线通信方式,通过发送和接收红外信号来实现远程控制。
本实验中,我们通过引入红外发射和接收模块,实现通过51单片机进行红外遥控。
通过编写相应的程序,设置红外遥控的编码和解码方式,我们可以实现对外部设备的遥控操作。
七、实验六:定时器应用定时器是51单片机中的重要模块,它可以实现定时和计数等功能。
本实验中,我们通过学习定时器的工作原理和编程,实现通过51单片机进行定时和计数的应用。
通过编写相应的程序和设置定时器的参数,我们可以实现不同的定时和计数功能,满足各种需要。
八、实验七:串口通信串口通信是一种常见的数据通信方式,通过串口接口发送和接收数据。
单片机实验报告总结

单片机实验报告总结单片机实验报告总结引言:单片机是一种集成电路,具有微处理器核心、存储器、输入输出接口等功能。
在现代电子技术领域中,单片机被广泛应用于各种电子设备中,如家电、汽车、通信设备等。
本文将对我在单片机实验中的学习和实践进行总结,分享我在实验中的收获和心得体会。
实验一:LED灯闪烁实验在这个实验中,我们学习了如何使用单片机控制LED灯的闪烁。
通过编写简单的程序,我们成功地实现了LED灯的闪烁功能。
这个实验让我深刻体会到了单片机的强大和灵活性。
通过控制单片机的GPIO口,我们可以实现各种各样的功能,这让我对单片机的应用前景充满了信心。
实验二:数码管显示实验在这个实验中,我们学习了如何使用单片机控制数码管进行数字的显示。
通过编写程序,我们成功地将数字从0到9依次显示在数码管上。
这个实验让我了解了数码管的工作原理和控制方式。
在实验过程中,我遇到了一些问题,如数字显示不清晰、显示不准确等,但通过不断的调试和优化,最终解决了这些问题。
这个实验让我明白了实践中的问题和挑战,并培养了我解决问题的能力。
实验三:按键控制实验在这个实验中,我们学习了如何使用单片机实现按键控制。
通过编写程序,我们成功地实现了按下按键时LED灯亮起,松开按键时LED灯熄灭的功能。
这个实验让我了解了按键的原理和使用方法。
在实验过程中,我遇到了一些问题,如按键抖动、按键误触等,但通过添加软件消抖和优化程序,最终解决了这些问题。
这个实验让我明白了软件的重要性和优化的必要性。
实验四:PWM调光实验在这个实验中,我们学习了如何使用单片机实现PWM(脉宽调制)调光功能。
通过编写程序,我们成功地实现了LED灯的亮度可调节。
这个实验让我了解了PWM的原理和应用。
在实验过程中,我遇到了一些问题,如PWM频率调节不准确、亮度不连续等,但通过调整参数和优化程序,最终解决了这些问题。
这个实验让我明白了硬件和软件的协同工作的重要性。
实验五:温度检测实验在这个实验中,我们学习了如何使用单片机实现温度检测功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机实验报告二班级:信息工程(微波通信方向)姓名:肖丽学号:1195111040时间:2013.10.29地点:工学院单片机实验室实验题目:第三章课后习题练习一、实验目的1. 掌握Keil集成开发环境基本使用方法;2. 掌握学林51mini仿真器和下载(编程)器的基本使用方法。
二、实验主要仪器及环境:硬件:学林51mini仿真器和下载(编程)器软件:Keil Vision2、XLISP三、实验内容P85.6、8、P77有关的极值排序的程序四、实验步骤1.将P85.6修改存到自己的文件内,用软件仿真。
2.编写P85.8的程序,然后存到自己的文件里,用软件仿真。
3.编写P77有关的极值排序的程序,然后存到自己的文件里,用软件仿真。
五、实验流程框图、实验程序P85.6已知程序执行前有A=02H,SP=42H,(41H)=FFH,(42H)=FFH。
下述程序执行后, A=(80H);SP=(42H);(41H)=(50H);(42H)=(80H);PC=(001EH)。
ORG 0000HMOV A,#02HMOV SP,#42HMOV 41H,#0FFHMOV 41H,#0FFHPOP DPHPOP DPLMOV DPTR,#3000HRL AMOV B,AMOVC A,@A+DPTRPUSH ACCMOV A,BINC AMOVC A,@A+DPTRPUSH ACCSJMP $ORG 3000HDB 10H,80H,30H,80H,50H,80HENDP85.8试编写程序,查找在内部RAM的20H~40H单元中出现“00H”这一数据的次数。
并将查找到的结果存入41H单元。
ORG 0000HSTART: MOV 41H,#00HMOV R0,#20HMOV R2,#21HLOOP: MOV A,@R0JNZ NEXTINC 41HNEXT: INC R0DJNZ R2,LOOPSJMP $ END数据升序排序ORG 0000H MOV 30H,#14H MOV 31H,#13H MOV 32H,#12H MOV 33H,#11H MOV 34H,#10H MOV 35H,#0FH MOV 36H,#0EH MOV 37H,#0DH MOV 38H,#0CH MOV 39H,#0BH MOV 3AH,#0AH MOV 3BH,#09H MOV 3CH,#08H MOV 3DH,#07H MOV 3EH,#06H MOV 3FH,#05H MOV 40H,#04HMOV 42H,#02HMOV 43H,#01HSORT:MOV R0,#30HMOV R7,#13HCLR TR0LOOP:MOV A,@R0;A=R0MOV 45H,A;45H=AINC R0;R0=R0+1MOV 44H,@R0;44H=R0CLR C;C清0SUBB A,@R0;(A)-((R0))-C=AJC NEXT;C为1跳NEXTMOV @R0,45H;(R0)=(45H)DEC R0;R0=R0-1MOV @R0,44H;(R0)=(44H)INC R0;R0=R0+1SETB TR0;TR0置1NEXT:DJNZ R7,LOOP ;R7-1不等于0,跳LOOPJB TR0,SORT;TR0=1,跳SORTHERE:SJMP $END六、实验及程序的分析和讨论P85.6注释结果ORG 0000H;汇编语言源程序的开始,通常都用一条ORG伪指令规定程序的起始地址,目标程序从0000H开始MOV A,#02H;02H→A (A)=02HMOV SP,#42H;42H→SP (SP)=42HMOV 41H,#0FFH;FFH→41H (41H)=FFHMOV 42H,#0FFH;FFH→42H (42H)=FFHPOP DPH;((SP))→DPH,(SP)-1→SP (DPH)=(42H)=FFH,(SP)=41HPOP DPL;((SP))→DPL,(SP)-1→SP (DPL)=(41H)=FFH,(SP)=40H(DPTR)=FFFFHMOV DPTR,#3000H; #3000H→ DPTR (DPTR)=3000HRL A;A的8位向左循环移动,位7循环移入位0 (A)=04HMOV B,A;A→B (B)=04HMOVC A,@A+DPTR; (DPTR)+(A)→A (A)=3004HPUSH ACC;(SP)+1=41H→SP,A→41H (SP)=41H,(41H)=(3004H)MOV A,B;B→A (A)=04HINC A;(A)+1→A (A)=05HMOVC A,@A+DPTR; (DPTR)+(A)→A (A)=3005HPUSH ACC;(SP)+1=42H→SP,A→42H (SP)=42H,(42H)=(3005H)HERE:SJMP HERE;ORG 3000H;汇编语言源程序的开始,通常都用一条ORG伪指令规定程序的起始地址,目标程序从3000H开始DB 10H,80H,30H,80H,50H,80H;DB用于从指定的地址开始, (3000H)=10H在程序存储器的连续 (3001H)=80H(3002H)=30H(3003H)=80H(3004H)=50H(3005H)=80HENDP85.8注释结果ORG 0000H;汇编语言源程序的开始,通常都用一条ORG伪指令规定程序的起始地址,目标程序从0000H开始START: MOV R0,#20H; #20H→R0R0=20HMOV R2,#21H; #21H→R2R0=21HMOV 41H,#00H; #00H→41H41H=00HLOOP: MOV A,@R0;((R0))→A A=(20H)JNZ NEXT;若A=00H,则顺序执行,否则转移到LOOP1INC 41H;(41H)+1→41HNEXT: INC R0; (R0)+1→R0DJNZ R2,LOOP;R2减1不为0,则跳LOOP处继续循环SJMP$;END数据升序排序注释结果ORG 0000H;汇编语言源程序的开始,通常都用一条ORG伪指令规定程序的起始地址,目标程序从0000H开始MOV 30H,#14H;14H→30H (30H)=14HMOV 31H,#13H;13H→31H (31H)=13HMOV 32H,#12H;12H→32H (32H)=12HMOV 33H,#11H;12H→33H (33H)=11HMOV 34H,#10H;10H→34H (34H)=10HMOV 35H,#0FH;0FH→35H (35H)=0FHMOV 36H,#0EH;0EH→36H (36H)=0EHMOV 37H,#0DH;0DH→37H (37H)=0DHMOV 38H,#0CH;0CH→38H (38H)=0CHMOV 39H,#0BH;0BH→39H (39H)=0BHMOV 3AH,#0AH;0AH→3AH (3AH)=0AHMOV 3BH,#09H;09H→3BH (3BH)=09HMOV 3CH,#08H;08H→3CH (3CH)=08HMOV 3DH,#07H;07H→3DH (3DH)=07HMOV 3EH,#06H;06H→3EH (3EH)=06HMOV 3FH,#05H;05H→3FH (3FH)=05HMOV 40H,#04H;04H→40H (40H)=04HMOV 41H,#03H;03H→41H (41H)=03HMOV 42H,#02H;02H→42H (42H)=02HMOV 43H,#01H;01H→43H (43H)=01HSORT:MOV R0,#30H;30H→R0 (R0)=30HMOV R7,#13H;13H→R7 (R7)=13HCLR TR0;互换状态标志清0 (TR0)=00H LOOP:MOV A,@R0;(R0)→(A) A=R0MOV 45H,A;A→45H 45H=A INC R0; (R0)+1→R0 R0=(R0)+1MOV 44H,@R0;(R0)→(44H) 44H=(R0)CLR C;C清0 C=00HSUBB A,@R0;(A)-((R0))-C→A A=(A)-((R0))-C JC NEXT;TR0为1跳NEXTMOV @R0,45H;(45H)→(R0) R0=(45H)DEC R0;(R0)-1→R0 R0=R0-1 MOV @R0,44H;(44H)→(R0) R0=(44H)INC R0;(R0)+1→R0 R0=(R0)+1 SETB TR0;TR0置1 TR0=01HNEXT:DJNZ R7,LOOP ;R7-1不等于0,跳LOOPJB TR0,SORT;TR0=1,跳SORTHERE:SJMP $END七、实验结果P85.6仿真前P85.8仿真前仿真后数据升序排序仿真前对RAM赋20个值(30H~43H)仿真后八、实验总结这次实验所完成的是程序的软件仿真,其中包括关键字查询、数据极值查询的内容。
在第一个程序中,我们没有给题目要求的数赋值,导致得不到预期结果。
同时,在没有调用子程序的情况下实验RET,使程序变得随机了。
在第二个程序中,学会在存储器窗口改数字,继而进行有关出现“00H”次数的计算。
第三个程序是仿照机极值排序完成的。