当前位置:文档之家› 单片机实验报告

单片机实验报告

单片机实验报告
单片机实验报告

西安电子科技大学

机电院

单片机上机实验报告

第一次实验:编程与环境学习

[实验目的]

1) 熟悉μ’nSP? IDE环境及在该环境下用汇编语言或C语言编写应用程序;

2) 熟悉简单的μ’nSP?汇编语言指令。

[实验设备]

装有WINDOWS系统和μ’nSP? IDE仿真环境的PC机一台。

[实验内容[

1)用汇编实现1到200中的偶数的累加计算;

2)用汇编语言编写一个排序程序。

.IRAM

Array .DW 5,89,40,12,55,32,18,46,77,21

[实验步骤]

1)将μ’nSP? IDE打开后,建立一个新工程;

2)在该项目的源文件夹(SOURCE FILES)下建立一个新的汇编语言文件;

3)编写汇编代码;

4)编译程序软件调试观察并跟踪其结果。

[实验准备]

(要求实验前写出实验内容中的两个程序)

实验1:

实验程序:.RAM //定义RAM 段

.VAR G_Sum; //定义G_Sum 存储累加结果

.CODE //定义CODE

.PUBLIC _main; //主程序声

_main:

R1 = 0x0002;

R2 = 0x0000;

L_SumLoop:

R2 += R1; //累加值保存到R2

R1 +=2 ;

CMP R1,200; //是否加到100

JNAL_SumLoop; //否返回到L_SumLoop;

[G_Sum] = R2; //保存最终值

L_ProgramEndLoop:

JMPL_ProgramEndLoop;

.END

实验2:

实验程序:

.IRAM

Array .DW 5,89,40,12,55,32,18,46,77,21

.var flag//定义数据交换标志

.code

.public _main

_main:

R1=0x000a; //设置要比较的数的个数;

BP=Array;//取待排序数的有效地址;

R4=0x0000;

[flag]=R4 ;//清交换标志

L_LOOP:R2=[BP];

R3=[BP+1];

cmp r2,r3;//比较相邻两数的大小;

JBE L_LOOP1;

[BP]=R3;//不符合大小顺序,交换位置,存储在原位置

[BP+1]=R2 ;

R3=0x0001 ;

[flag]=R3;//交换标志置1

L_LOOP1:BP=BP+1;//符合大小顺序的两数位置

R1-=1;

JNZ L_LOOP;

R4=[flag];

Jnz _main;

MAINLOOP: //看门狗操作

nop:

jmp MAINLOOP;

.END

[实验总结]

第二次实验:并行I/O口

(可参考实验三、四、五、六)

实验三:使用汇编语言实现A口的输出实验

实验四:使用C语言实现A口的输出实验

实验五:使用汇编语言实现A口为输入B口为输出实验

实验六:使用C语言实现A口为输入B口为输出实验

[实验目的]

1)通过实验掌握A口、B口作为输入和输出口时的使用方法;

2)使用汇编语言或C语言来实现A口或B口作为输入和输出口的实验。

[实验原理]

实验三、四:通过点亮不同发光二极管来显示A口输出的数值不同。

实验五、六:根据按键的不同,A口的数据就不同,则传送到B口的数据就不同,相应的发

光二极管被控制。

1)逻辑电平指示灯:具有8 路,阳极接电阻排至V5( Vcc),I/O 端口低电平“点亮”。逻辑电平指示灯电路8 路图见下图:

逻辑电平指示灯电路原理图

2)1*8键盘电路

可分别“H”或“L”,由SW 选择,配合内部的上拉/下拉电阻合理使用。

1*8 键盘电路原理图[实验硬件连接]

实验三、四:

实验五、六:

[实验内容]

1、学习实验三或实验四,写出实验结果。

答:实验三的结果:从低位到高位,按照二进制1出现的顺序,依次点亮对应位的灯。

2、学习实验五或实验六,写出实验结果。

答:实验五的结果:开始时,所有灯全灭,每次按一个开关,相应的灯就是被点亮。松开后,相应的灯再一次熄灭。

3、对实验五或六修改,将以前的输入与输出口进行变换,即按键连接B口作为输入,A

口为输出连接发光二极管,并要求发光二极管事先全灭,按下键时控制相应的二极管亮。说明如何修改,写出修改地方的程序。

(注:不要在源文件中修改。重新建立项目或拷贝到其它地方进行修改)

Main函数里:

L_User_Init_IO: 改为:L_User_Init_IO:

R1 = 0x0000; R1 = 0x0000;

[P_IOA_Dir] = R1; [P_IOB_Dir] = R1;

[P_IOA_Attrib] = R1; [P_IOB_Attrib] = R1;

[P_IOA_Data] = R1; [P_IOB_Data] = R1

R1 = 0xffff; R1 = 0xffff;

[P_IOB_Dir] = R1; [P_IOA_Dir] = R1;

[P_IOB_Attrib] = R1; [P_IOA_Attrib] = R1;

R1 = 0x0000; R1 = 0x0000;

[P_IOB_Data] = R1; [P_IOA_Data] = R1;

RETF; RETF;

KEY函数里:

(1)F_Key_Scan_ServiceLoop:

r1 = [P_IOA_Data]; //从IOA口获取按键数据

改为:F_Key_Scan_ServiceLoop:

r1 = [P_IOB_Data] ; //从IOB口获取按键数据

(2)F_Key_Scan_ServiceLoop_2:

r1 = [P_IOA_Buffer];//IOA7位置为0

r1 &= 0xFF7F;

[P_IOA_Buffer] = r1;

r1 = [P_IOA_Data]; //从IOA口获取按键数据

r1 &= 0x000F;

r2 = r1;

r3 = r2 xor 0xffff;

nop;

nop;

r1 = [P_IOA_Buffer];// IOA7位置为1

r1 |= 0x0080;

[P_IOA_Buffer] = r1;

r1 = [P_IOA_Data];

改为:

r1 = [P_IOB_Buffer]; // IOA7位置为0

r1 &= 0xFF7F;

[P_IOB_Buffer] = r1;

r1 = [P_IOB_Data];//从IOB口获取按键数据

r1 &= 0x000F;

r2 = r1;

r3 = r2 xor 0xffff;

nop;

nop;

r1 = [P_IOB_Buffer]; // IOA7位置为1

r1 |= 0x0080;

[P_IOB_Buffer] = r1;

r1 = [P_IOB_Data];

(注:程序主要的修改是调换A、B口属性值,由于要求发光二极管事先全灭,所以把原来的同相改为反相,而初始值不变([P_IOB_Data]=0x0000)。

[实验总结]

实验三中,题目要求使用B入A出,我一开始,只修改了main.asm中的相关位置,发现结果不对,后来当我一点一点分析后发现,key.asm中的相关代码页需要修改。最后实验成功了。在以后的实验中,不但要看懂主程序,也要搞清楚其子程序和相关函数的实现。

第三次实验:系统时钟与定时器

参看:

实验七:定时器Timer A/B实验

实验八:系统时钟实验

[实验目的]

1)通过实验了解定时器Timer A/B的结构及使用方法;掌握预置数单元P_TimerA/B_Data

和定时控制单元P_ TimerA/B_Ctrl的设置方法;熟悉定时器Timer A/B的编程方法。

2)了解SPCE061 PLL 振荡器的功能及其应用;掌握系统时钟单元P_SystemClock的设置方

法;熟悉系统时钟和CPU时钟频率的编程方法。

[实验原理]

实验七:TimerA和TimerB定时器启动后在预置数单元P_TimerA_Data或P_TimerB_Data内置入一个计数初值N后,定时器/计数器会在选择的时钟源频率下开始向计数增加的方向计数,N+1,N+2,……FFFEH,当计数到FFFFH后定时器/计数器溢出。

一方面,产生一个中断请求信号TA_TimeOut_Int或TB_TimeOut_IntCPU,响应后执行相应的中断服务程序,与此同时计数初值N会被自动重新置入定时器/计数器内并重复上述加计数的过程。

另一方面,该溢出信号会作为脉宽调制输出计数器的时钟源输入,使其输出一个具有四位可调的脉宽调制占空比输出信号APWMO或BPWMO,其中IOB8,IOB9分别为APWM,BPWM的输出端。

IOB8接一个发光二极管,可以通过观察二极管亮灭的快慢来对比频率的变化。

实验八:在SPCE061A内,P_SystemClock(写)($7013H)单元控制着系统时钟和CPU时钟,通过设置该单元的b5-b7位可以改变系统时钟的频率(Fosc=20/24/32/40/49MHz);将第0-2位置为111可以使CPU时钟停止工作,系统切换至低功耗的备用状态。本实验通过选择不同Fosc信号频率或改变CPUClk频率来观察发光二极管亮灭的快慢。

[实验硬件连接]

实验七:定时器A时,IOB8接一个发光二极管

实验八:

[实验内容]

1)学习实验七、八;

2)对于实验七,

1、固定初值,改变不同的输入时钟观察输出的变化;

改变:

LED灯闪烁频率发生变化。频率越大,闪烁越快。

2、固定时钟,如CLK为4096HZ,设置不同的计数初值,观察输出;

答:改变

R1: R1=0xff9f;

[P_TimerA_Data]=R1;

R1=C_Time_Clk_4096;

LED灯闪烁频率发生变化。计数初值越小。闪烁越慢。

3、选择同一时钟源,改变占空比,观察灯的闪烁变化。

答:周期不变,但在一个周期内,LED灯点亮的时间改变。

3)将实验七中的定时器A改用定时器B完成。应作怎样的修改?写出修改的地方。.DEFINE P_TimerB_Data 0x700C;

.DEFINE P_TimerB_Ctrl 0x700D;

_main:

R1=0x0200; //IOB9 设置为同相低电平输出口

[P_IO B_DIR]=R1;

[P_IO B_ATTRI]=R1;

R1=0x0000;

[P_IO B_DATA ]=R1;

R1=0x0200;

[P_Feedback]=R1; //设置IOB9 口为BPWMO 端口

R1=0xff9f; //设定TA_TIMEOUT/16=(C_Time_Clk/96)/16=8kHz

//R1=0x0f9f;

[P_Timer B_Data]=R1;

R1=C_Time_Clk;

//R1=C_Time_Pwm

[P_Timer B_Ctrl]=R1;

注:定义P_TimerB_Data和P_TimerB_Ctrl,改特殊功能输出口IOB8为IOB9并改变[P_Feedback]的值;

4)对实验八

1 选择不同FOSC信号频率,观察发光二极管亮灭快慢;

2 改变CPUCLK频率,观察发光二极管亮灭快慢。

答:不同的FOSC信号频率和CPUCLK频率决定了程序语句执行速度的快慢,进而决定了延时子程序所延时间的长短,即显示灯亮灭时间的长短,所以当两者频率增大时,发光二极管亮灭变快。

[实验总结]

在本次试验中,我学会了如何通过改变计数初值和输入时钟的频率来产生不同频率的输出信号。最值得注意的是TimerA和TimerB的脉宽调制输出端口是不一样的。

第四次实验:A/D转换,双通道D/A 参看:

实验十七:A/D转换

实验十八:双通道D/A

实验十九:一路输入的录音

[实验目的]

1)了解ADC输入接口的结构与转换原理;熟悉模拟量输入口LINE_IN1—LINE_IN7的使用;掌握P_ADC P_ADC_Ctrl单元的设置方法。

2)了解音频输出接口的结构与转换原理;掌握P_DAC2P_DAC1 P_DAC_Ctrl单元的设置方法。

3)了解ADC输入接口的结构转换原理及实时录音并实时播放的功能;熟悉麦克风输入口MIC_IN的使用;进一步掌握P_ADC、P_ADC_Ctrl、P_DAC1、

P_DAC2、P_DAC_Ctrl各单元的设置方法。

[实验设备]同以前实验。

[实验内容]

1)学习实验十七,观察结果,并说明实现A/D转换,需要对哪些寄存器进行设置?

各完成什么任务?

答:结果:转动旋钮,八个LED灯以二进制的形式亮灭,表示当前输入的大小。寄存器设置:

①P_IOB_ATTRI、P_IOB_DIR、P_IOB_DATA:IOB口设置为同向输出口。②P_ADC_MUX_Ctrl:选择通道LINE_IN。③P_ADC_Ctrl:允许A/D转换

2)学习实验十八,观察结果,并说明实现D/A转换,需要对哪些寄存器进行设置?

各完成什么任务?如何实现三角波?

答:结果:声音逐渐增大后,突然消失。并循环往复。寄存器设置:

①P_DAC_Ctrl:设置DAC输出数据锁存方式,A/D转换方式。

②②P_DAC1、P_DAC2:输出。

每次让R1加一个数R3并输出。这样声音逐渐增大。当R1溢出时,此时R1=0,声音消失。以此循环往复,实现三角波。

3)学习十九,观察结果,并说明实验的原理。

答:设定定时器A的频率,即为采样率。采用自动方式,当定时器A溢出时,触发中断,进入中断服务程序。把通过MIC_IN输入的语音信号经过A/D转换后,再经过D/A转换,并在通过AUD1和AUD2两个通道播放

[实验总结]

通过本次试验,我学会了在凌阳16为单片机上经行数模和模数转化。并完成了录音和放音的功能

第五次实验:中断实验

参看包括实验九、十、十一、十二、十三、十四、十五

实验九:FIQ中断实验

实验十:IRQ0/IRQ1/IRQ2中断实验

实验十一:IRQ4 中断

实验十二:IRQ5 中断实验

实验十三:IRQ6中断实验

实验十四:外部中断EXT1,EXT2实验

实验十五:键唤醒

[实验目的]

1)了解各中断向量和中断源;掌握中断控制单元P_INT_Ctrl, P_INT_Clear的设置方法;熟悉中断的编程方法。

2)了解SPCE061睡眠和唤醒的结构原理;熟悉SPCE061睡眠和唤醒的编程方法。

[实验设备]同上

[实验原理]

实验九:FIQ中断对应PWM、TMA、TMB中断源;通过写P_INT_Ctrl来设置中断允许,FIQ_TMA,FIQ_TMB中断源分别是通过定时器A、定时器B产生的。当计满溢出时产生中断请求信号TA_TIMEOUT_Int或TB_TIMEOUT_Int,CPU响应后进入中断执行相应的子程序,中断程序里可以通过读取P_INT_Ctrl单元,判断是哪个中断源并进入相应的子程序控制发光二极管点亮。

实验十:IRQ0_TWM、IRQ1_TMA、IRQ2_TMB中断源,通过写P_INT_Ctrl来设置中断允许,IRQ_TMA和IRQ_TMB 中断源分别是通过定时器A、定时器B产生的。当计数满溢出时产生中断请求信号TA_TIMEOUT_Int或TB_TIMEOUT_IntCPU,响应后进入对应的中断,并在相应的中断程序里执行控制发光二极管亮灭的程序。

实验十一、十二、十三、十四:IRQ3、IRQ4、IRQ5、IRQ6中断分别对应不同频率的中断源,通过写P_INT_Ctrl来设置中断允许,CPU响应后进入中断,编写一个用中断方式控制发光二极管亮灭的程序, 中断程序里读取P_INT_Ctrl单元,判断是哪个中断源,转到相应中断程序,控制对应发光二极管亮或灭。IRQ3是外部中断。

实验十五:系统正常运行时点亮8个LED,按KEY1,系统接收到睡眠信号时,关闭系统时钟(PLL振荡器)进入睡眠状态,8个LED全部熄灭,系统睡眠指示灯(黄色LED)被点亮,按任意键,收到唤醒信号后接通系统时钟(PLL振荡器),同时CPU会响应唤醒事件的处理并进行初始化,这时8个LED循环亮灭。

[实验硬件连接]

实验九:A口的低四位接LED灯,B口的低四位接LED灯

实验十:A口的低四位接LED灯,B口的低四位接LED灯

实验十一:IRQ4中断有三个中断源1KHz、2KHz和4KHz,每一个中断分别控制与IOA0-IOA1、IOA2-IOA3和IOA4-IOA7相连的LED灯。

实验十二:IRQ5中断有两个中断源2Hz和4Hz,每个中断分别控制二极管的亮灭,即2Hz中断控制与A口的IOA0-IOA3位相连的LED,4Hz中断控制与IOB口的IOB0-IOB3位相连的LED灯。

实验十三:中断有两个中断源IRQ6_TMB1和IRQ6_TMB2,每个中断都控制着二极管亮灭,即IRQ6_TMB2中断控制与B口的低4位相连的LED的亮灭,IRQ6_TMB1中断控制与A 口的低4位相连的LED的亮灭。

实验十四:实验十五:

[实验内容]

1)按照要求学习实验十一、十二、十三、十四、十五。分别记录各实验的结果。

实验十一:与IOA0-IOA1相连的灯:1秒亮,1秒灭,以此循环。

与IOA2-IOA3相连的灯:0.5秒亮,0.5秒灭,以此循环。与IOA4-IOA7相连的灯:0.25秒亮,0.25秒灭,以此循环。

实验十二:与IOA0-IOA3相连的灯:1秒亮,1秒灭,以此循环。与IOB0-IOB3相连的灯:0.5秒亮,0.5秒灭,以此循环。实验十三:与IOA0-IOA3相连的灯:1秒亮,1秒灭,以此循环。与IOB0-IOB3相连的灯:0.5秒亮,0.5秒灭,以此循环。

实验十四:当与IOB2相连的开关产生一个负跳沿时,与IOA0-IOA3相连的LED灯点亮。

当与IOB3相连的开关产生一个负跳沿时,与IOA4-IOA7相连的LED灯点亮。

实验十五:当与IOA0相连的键按下时,进入睡眠,熄灭与IOB0-IOB7相连LED灯。按任意键唤醒,循环熄灭与IOB0-IOB7相连LED灯。

2)编写完整的项目(或选择一个合适的实验进行拷贝,然后修改),实现定时器A,B 中断,控制发光A口和B口二极管分别以2s,4s周期闪烁;

说明实现的原理,写出关键的程序语句。

答:实现原理:IRQ1_TMA、IRQ2_TMB中断源,通过写P_INT_Ctrl来设置中断允许,IRQ_TMA和IRQ_TMB 中断源分别是通过定时器A、定时器B产生的。当计数满溢出时产生中断请求信号TA_TIMEOUT_Int或TB_TIMEOUT_Int,CPU响应后进入对应的中断,并在相应的中断程序里执行控制发光二极管亮灭的程序。

实验程序:

//***************************************************************************** /

// 名称: IRQ_0_1_2

// 来源:《SPCE061A单片机实验指导书》,"实验十 IRQ0/IRQ1/IRQ2中断实验"

// 描述: IRQ0_PWM、IRQ1_TMA、IRQ2_TMB三个中断,当定时器A或B

// 计满溢出时产生中断请求信号TA_TIMEOUT_INT或TA_TIMEOUT_INT,

// CPU响应后执行相应的中断服务子程序

// A口的低四位接LED灯,B口的低四位接LED灯.

// 日期: 2002/12/5

//***************************************************************************** /

.DEFINE P_IOA_DATA 0x7000;

.DEFINE P_IOA_DIR 0x7002;

.DEFINE P_IOA_ATTRI 0x7003;

.DEFINE P_IOB_DATA 0x7005;

.DEFINE P_IOB_DIR 0x7007;

.DEFINE P_IOB_ATTRI 0x7008;

.DEFINE P_INT_CTRL 0x7010;

.DEFINE P_INT_CLEAR 0x7011;

.DEFINE P_TimerA_Data 0x700A;

.DEFINE P_TimerA_Ctrl 0x700B;

.DEFINE P_TimerB_Data 0x700C;

.DEFINE P_TimerB_Ctrl 0x700D;

.DEFINE C_Timea_Clk 0x020d;1024

.DEFINE C_Timeb_Clk 0x0004;4096

.CODE

//============================================================================= // 函数: main()

// 描述:主函数

//============================================================================= .PUBLIC _main

_main:

INT off;

R1 = 0xffff; //A口设置为同相高电平输出

[P_IOA_ATTRI] = R1;

[P_IOA_DIR] = R1;

//R1 = 0x0000 ;

[P_IOA_DATA] = R1;

R1 = 0xffff; //B口设置为同相高电平输出

[P_IOB_DIR] = R1;

[P_IOB_ATTRI] = R1;

//R1 = 0x0000;

[P_IOB_DATA] = R1;

R1=0xfbff;

[P_TimerA_Data] = R1;

R1=0xdfff;

[P_TimerB_Data] = R1;

R1 = C_Timea_Clk;

[P_TimerA_Ctrl] = R1;

R1 = C_Timeb_Clk;

[P_TimerB_Ctrl] = R1;

R1 = 0x5400; //开中断IRQ0_TMA、IRQ1_TMA、IRQ1_TMB [P_INT_CTRL] = R1;

INT IRQ;

L_Loop:

NOP;

NOP;

NOP;

JMP L_Loop;

.TEXT

.PUBLIC _IRQ0;

.PUBLIC _IRQ1;

.PUBLIC _IRQ2;

_IRQ0:

PUSH R1,R5 TO [sp]; //压栈保护

R1 = 0x4000;

[P_INT_CLEAR] = R1;

POP R1,R5 FROM [sp];

RETI;

_IRQ1:

PUSH R1,R5 TO [sp]; //压栈保护

//点亮与A口低四位相连的LED灯

R1=[P_IOA_DATA] ;

R1^=0xFFFF;

[P_IOA_DATA]=r1;

R1 = 0x1000;

[P_INT_CLEAR] = R1;

POP R1,R5 FROM [sp];

RETI;

_IRQ2:

PUSH R1,R5 TO [sp]; //压栈保护

R1^=0xFFFF;

[P_IOA_DATA]=r1;

R1 = 0x1000;

R1 = 0x0400;

[P_INT_CLEAR] = R1;

POP R1,R5 FROM [sp];

RETI;

//***************************************************************************** /

// main.asm 结束

//***************************************************************************** /

3)编写完整的项目(或选择一个合适的实验进行拷贝,然后修改),实现时基信号中断,控制发光A口和B口二极管分别以2s,4s周期闪烁。

说明实现的原理,写出关键的程序语句。

答:实验原理: IRQ4中断源,通过写P_INT_Ctrl来设置中断允许,CPU响应后进入中断,编写一个用中断方式控制发光二极管亮灭的程序, 中断程序里读取P_INT_Ctrl单元,判断是哪个中断源,转到相应中断程序,控制对应发光二极管亮或灭。

//********************************************************************** *******/

// 名称: IRQ5

// 来源:《SPCE061A单片机实验指导书》,"实验十二IRQ5 中断实验"

// 描述: IRQ5中断有两个中断源:2Hz和4Hz,分别控制二极管的亮灭

// 即2Hz对应A口的IOA0-IOA3位,4Hz对应IOB口的IOB0-IOB3位;

// A口的低四位接LED灯,B口的低四位接LED灯.

// 日期: 2002/12/5

//********************************************************************** *******/

.DEFINE P_IOA_DATA 0x7000;

.DEFINE P_IOA_DIR 0x7002;

.DEFINE P_IOA_ATTRI 0x7003;

.DEFINE P_IOB_DATA 0x7005;

.DEFINE P_IOB_DIR 0x7007;

.DEFINE P_IOB_ATTRI 0x7008;

.DEFINE P_INT_CTRL 0x7010;

.DEFINE P_INT_CTRL_NEW 0x702D;

.DEFINE P_INT_CLEAR 0x7011;

.RAM

.VAR G_Time2

.VAR G_Time4

.CODE

//====================================================================== =======

// 函数: main()

// 描述:主函数

//====================================================================== =======

.PUBLIC _main

_main:

INT OFF

R1 = 0xffff //IOA口为同相高电平输出口;

[P_IOA_ATTRI] = R1

[P_IOA_DIR] = R1

[P_IOA_DATA] = R1

R1 = 0xffff //IOB口为同相高电平输出口;

[P_IOB_ATTRI] = R1

[P_IOB_DIR] = R1

[P_IOB_DATA] = R1

R1 = 0x000c //开中断IRQ5_4Hz和IRQ5_2Hz

[P_INT_CTRL] = R1

[P_INT_CTRL_NEW] = R1

R1 = 0

[G_Time2] = R1

[G_Time4] = R1

INT irq

L_Loop:

NOP

NOP

NOP

NOP

JMP L_Loop

.TEXT

.PUBLIC _IRQ5

_IRQ5:

push R1,R5 to [sp] //压栈保护

R1 = 0x0008

TEST R1,[P_INT_CTRL] //比较是否为4Hz的中断源

JNZ L_irq5_4 //是,则转至对应程序段

L_irq5_2: //否,则进入2Hz程序段

R1 = 0x0004

[P_INT_CLEAR] = R1

R2 = [G_Time2]

R2+ = 0x0001

[G_Time2] = R2

CMP R2,2 //比较是否为1秒

JBE L_LED2HZ_OFF //小于等于则LED灭

R1 = 0xfff0 //大于则LED亮

[P_IOA_DATA] = R1

CMP R2,3 //比较是否为两秒

JBE L_LED2Hz_RET //小于等于则LED继续亮

R2 = 0x000 //否则,TIME1单元清零,返回中断

[G_Time2] = R2

JMP L_LED2Hz_RET

L_LED2HZ_OFF:

R1 = 0xffff

[P_IOA_DATA] = R1

L_LED2Hz_RET:

POP R1,R5 FROM [sp]

RETI

L_irq5_4:

R1 = 0x0008

[P_INT_CLEAR] = R1

R2 = [G_Time4]

R2 += 0x0001

[G_Time4] = R2

CMP R2,7 //比较是否为0.5秒

JBE L_LED4HZ_OFF //小于等于则LED灭

R1 = 0xfff0 //大于则LED亮

[P_IOB_DATA] = R1

CMP R2,15 //比较是否为1秒

JBE L_LED4Hz_RET //小于等于则LED继续亮

R2 = 0x000 //否则,G_Time2单元清零,返回中断

[G_Time4] = R2

JMP L_LED4Hz_RET

L_LED4HZ_OFF:

R1 = 0xffff

[P_IOB_DATA] = R1

L_LED4Hz_RET:

pop R1,R5 from [sp]

RETI

//********************************************************************** *******/

// main.asm 结束

//****************************************************************** [总结]

答:通过本次试验,让我对凌阳单片机的5种中断方式有了更深的理解,了解了各中断向量和中断源,掌握了中断控制单元P_INT_Ctrl, P_INT_Clear的设置方法并熟悉了中断的编程方法及SPCE061睡眠和唤醒的结构原理。着重练习了定时中断和时基中断两种中断方式。

第六次实验语音实验

参看六个实验:

实验一: SACM-A2000

实验二: SACM-480

实验三:SACM-240

实验四:SACM_MS01实验

实验五: SACM_A2000与S480/S720混合实验

实验六: SACM-DVR

[实验目的]

1)了解凌阳单片机以SACM_A2000、SACM-480、SACM-240、SACM_MS01等语音格式播放及程序的编写方法。

2)了解凌阳音频编码算法库(SACM_Lib)。

3)了解语音录制、压缩和播放过程。

4)学会简单语音编程并会扩展SRAM。

[实验原理]

麦克风输入所生成的WAVE 文件,其占用的存储空间很大,对于单片机来说想要存储大量的信息显然是不可能的,而凌阳的SPCE061A 提出了解决的方法,即SACM-LIB。该库将A/D、编码、解码、存储及D/A 作成相应的模块,对于每个模块都有其应用程序接口API,所以只需了解每个模块所要实现的功能及其参数的内容,然后调用该API 函数即可实现该功能。

凌阳音频压缩算法根据不同的压缩比分为以下几种:

SACM-A2000压缩比为8:8:1.258:1.5

SACM-S480 压缩比为80:380:4.5

SACM-S240 压缩比为80:1.5

按音质排序A2000>S480>S240

凌阳音频压缩编码:

1)波形编码——SACM-A2000

特点:高质量高码率适于高保真语音音乐

2)参数编码——SACM-S240

特点:压缩比大计算量大音质不高廉价

3)混合编码——SACM-S480

特点:综合参数和波形编码之优点

除此之外还具有FM音乐合成方式即SACM-MS01;SACM-DVR具有录音和放音功能。

[实验硬件连接]

实验四:实验五:

单片机实验报告

院系:计算机科学学院专业:智能科学与技术年级: 2012 学号:2012213865 姓名:冉靖 指导教师:王文涛 2014年 6月1日

一. 以下是端口的各个寄存器的使用方式: 1.方向寄存器:PxDIR:Bit=1,输出模式;Bit=0,输入模式。 2.输入寄存器:PxIN,Bit=1,输入高电平;Bit=0,输入低电平。 3.输出寄存器:PxOUT,Bit=1,输出高电平;Bit=0,输出低电平。 4.上下拉电阻使能寄存器:PxREN,Bit=1,使能;Bit=0,禁用。 5.功能选择寄存器:PxSEL,Bit=0,选择为I/O端口;Bit=1,选择为外设功能。6.驱动强度寄存器:PxDS,Bit=0,低驱动强度;Bit=1,高驱动强度。 7.中断使能寄存器:PxIE,Bit=1,允许中断;Bit=0,禁止中断。 8.中断触发沿寄存器:PxIES,Bit=1,下降沿置位,Bit=0:上升沿置位。 9.中断标志寄存器:PxIFG,Bit=0:没有中断请求;Bit=1:有中断请求。 二.实验相关电路图: 1 MSP430F6638 P4 口功能框图: 主板上右下角S1~S5按键与MSP430F6638 P4.0~P4.4口连接: 2按键模块原理图: 我们需要设置两个相关的寄存器:P4OUT和P4DIR。其中P4DIR为方向寄存器,P4OUT 为数据输出寄存器。 主板上右下角LED1~LED5指示灯与MSP430F6638 P4.5~P4.7、P5.7、P8.0连接:

3 LED指示灯模块原理图: P4IN和P4OUT分别是输入数据和输出数据寄存器,PDIR为方向寄存器,P4REN 为使能寄存器: #define P4IN (PBIN_H) /* Port 4 Input */ #define P4OUT (PBOUT_H) /* Port 4 Output */ #define P4DIR(PBDIR_H) /* Port 4 Direction */ #define P4REN (PBREN_H) /* Port 4 Resistor Enable */ 三实验分析 1 编程思路: 关闭看门狗定时器后,对P4.0 的输出方式、输出模式和使能方式初始化,然后进行查询判断,最后对P4.0 的电平高低分别作处理来控制LED 灯。 程序流程图: 2 关键代码分析: #include void main(void) { WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗 P4DIR |= BIT5; // 设置4.5口为输出模式 P4OUT |= BIT0; // 选中P4.0为输出方式 P4REN |= BIT0; // P4.0使能 while (1) // Test P1.4 { if (P4IN & BIT0) //如果P4.0为1则执行,这是查询方式按下去后是低,否则为高

单片机实验报告书

并行I/O 接口实验 一、 实验目的 熟悉掌握单片机并行I/O 接口输入和输出的应用方法。 二、 实验设备及器件 个人计算机1台,装载了 Keil C51集成开发环境软件。 机仿真器、编程器、实验仪三合一综合开发平台 1台。 、实验内容 (1)P1 口做输出口,接八只发光二极管,编写程序,使发光二极管延时 (0.5-1秒)循环点亮。实验原理图如图 3.2-1所示。 图3.2-1单片机并行输出原理图 实验程序及仿真 ORG 0000H LJMP START ORG 0100H START:MOV R2,#8 MOV A,#0FEH LOOP:MOV P1,A LCALL DELAY 、 LED1 P1.0 VCC T a LED2 r 1k P1.1 .LED8 1k P1. 7 U1 DP-51PRO.NE 单片

RL A

DJNZ R2,L00P LJMP START DELAY:MOV R5,#20 D1:MOV R6,#20 D2:MOV R7,#248 D3:DJNZ R7,D3 DJNZ R6,D2 DJNZ R5,D1 RET END 中断实验 一、实验目的 熟悉并掌握单片机中断系统的使用方法,包括初始化方法和中断服务程序的 编写方法。 、实验设备及器件 个人计算机 1 台,装载了 Keil C51 集成开发环境软件。 DP-51PR0.NE 单片机仿真器、编程器、实验仪三合一综合开发平台 1台 三、实验内容 AT eK 1 -LJIU1L AUDIOZ20H A^-: M02NP01[EF L^D-GR^NI LEDRSP ■艮 A 4 - i i H - 330 -T I P H T H rs&oRJEtw F 轉-3 BEEN ■jHEEFl U1 30. Pt B -4 PUjfl PO(WO PO.WAtH FQ.27AIE FO3W3 Robert FO.57AW POBWe POJAW F2.1TO F2^fA10 PSjUAH P2 剤MZ F2.5fA13 F2.afAM P2.MM6 P3J0URXD 啊1XW FJ- ZflUTD pa.anHTi FM 4T 「| P3.0>T1 P3JWM PSJ^D 33C> 33P 町E 4 阿5REEF4 XTAL2 RST PSEH ALE

单片机实验报告

单片机实验报告 班级:信科09-3 姓名:王艳辉 学号:08093581 指导老师:陈岱 完成时间:2012年1月8日

实验一 I/O接口P1、P3口实验 一,实验题目 1,用P1口做输出,接八只发光二极管,编写程序,使发光二极管循环点亮。 2,用P3口做输入口,接八个扭子开关,通过P1口在实验箱上LED 灯上输出,编写程序读取开关状态,将此状态,在发光二极管上显示出来。 二,实验目的 1.熟悉使用CPLD实验箱进行单片机实验的方法。 2.设计出符合实验要求的CPLD硬件电路。 3.学习单片机仿真开发软件Keil 51的使用方法。 4.学习MCS-51汇编语言编程方法。 5.学习Pl口的使用方法。 6.学习延时子程序的编写和使用。 三,实验准备 P1和P3口为准双向口,Pl、P3的每一位都能独立地定义为输出线或输入线,作为输入时,必须向锁存器相应位写入“l”,该位才能作为输入。803l中所有口锁存器在复位时均置为“1”,如果后来在口锁存器写入过“0”,在需要时应写入一个“l”使它再成为一个输入。再来看一下延时程序的实现。现常用的有两种方法:一是用定时器中断来实现,一是用指令循环来实现。在系统时间允许的情况下可以采用后一种方法。根据实验系统的工作主频,计算出延时0.1s的

时间常量,编制延时程序: MOV R7, #200 (1) DEl:MOy R6,#X (2) DE2:DJNZ R6,DE2 (3) DJNZ R7,DEl (4) 上面MOV、DJNZ指令均需两个机器周期,所以每执行一条指令需1÷0.256us现求出X值: (X*1/0.256+1/0.256+l/0.256)*200+l/0.256=0.1*10^6。解出X=l26。代入上式可知实际延时约0.100O04s,近似符合要求。 四,实验步骤 (1)打开MAX+PLUSⅡ CPLD实验开发系统。 (2)点击File菜单Project子菜单之Name项,出现Project Name 对话框。为当前的实验选择恰当的路径并创建项目名称”E:\AT8031”。(3)点击File菜单之New项,出现对话框,为选择输入方式,选择Graphic Editor File。出现图形编辑窗口。 (4)双击空白编辑区,出现Enter Symbol 对话框。 (5)从Symbol Libraries项中选择mf子目录(双击),在prim子目录中选择输入脚input 和输出引脚output。 (6)在图形编辑窗口中的左侧点击连线按钮,并完成对电路的连线。(7)在引脚的PIN_NAME处左键双击使之变黑,键入引脚名称。

实验报告(单片机实验报告)

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 0000h Ljmp start org 0050h start: mov R0,#93h mov R1, #79h mov R2,#25h mov R3, #0a4h mov A,R1 ADD A,R3 mov R5,A mov A,R0 ADDC A,R2 mov R4,A ss: jmp ss end 2双字节无符号数减法

例2: 双字节无符号数相减(R0 R1)-(R2 R3) → (R4 R5)。R0、 R2、R4存放16位数的高字节, R1、 R3、 R5存放低字节,已知(R0 R1)=(93h,79h);(R2 R3)=(25h,a4h);请编程。同学自己可以设置被减数与减数数值 org 0000h Ljmp start org 0050h start: mov R0,#93h mov R1,#79h mov R2,#25h mov R3,#0a4h mov A,R1 CLR C SUBB A,R3 mov R5,A mov A,R0 SUBB A,R2 mov R4,A ss: jmp ss end 3双字节数乘以单字节数

例3: 利用单字节乘法指令,进行双字节数乘以单字节数运算。若被乘数为16位无符号数, 地址为M1(30H) 和M1+1(31H)(低位先、高位后), 乘数为8位无符号数, 地址为M2(32H), 积由高位到低位存入R2、 R3和R4三个寄存器中。 30H,31H,32H内容 12H,34H,56H ; org 0000h Ljmp start org 0050h start: mov 30h,#12h mov 31h,#34h mov 32h,#56h mov a,(30h) mov b,(32h) mul ab mov R3,b mov R4,a mov a,(31h) mov b,(32h) mul ab add A,R3 mov R3,A

单片机实验报告

实验报告 专业:计算机科学与技术班级:C093 姓名:孙丽君 学号:098677

实验一:数据传送实验 1.实验内容: 将8031内部RAM 40H—4FH单元置初值A0H—A FH,然后将片内RAM 40H—4FH单元中的数据传送到片内RAM 50H—5FH单元。将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。 2. 源程序清单: ORG 0000H RESET:AJMP MAIN ORG 003FH MAIN:MOV R0,#40H MOV R2,#10H MOV A,#0A0H A1:MOV@R0,A INC R0 INC A DJNZ R2, A1 MOV R1,#40H MOV R0, #50H

MOV R2, #10H A3: MOV A, @R1 MOV @R0, A INC R0 INC R1 DJNZ R2, A3 LJMP 0000H 3.实验结果: 4. CPU 对8031内部RAM存储器有哪些寻址方式? 答:直接寻址,寄存器寻址,寄存器间接寻址,位寻址。

5. 执行程序后下列各单元的内容是什么? 内部RAM 40H~4FH内容:A0~AF 内部RAM 50H~5FH内容:A0~AF 实验二多字节十进制加法实验 1.实验内容: 多字节十进制加法。加数首地址由R0 指出,被加数和结果的存储单元首地址由R1指出,字节数由R2 指出。将程序经模拟调试通过后,运行程序,检查相应的存储单元的内容。 2. 源程序清单: ORG0000H RESET: AJMP MAIN ORG0100H MAIN: MOV SP, #60H MOV R0, #31H MOV@R0, #22H DEC R0 MOV@R0, #33H

51单片机实验报告94890

《单片机与接口技术》实验报告 信息工程学院 2016年9月

辽东学院信息技术学院 《单片机与接口技术》实验报告 姓名:王瑛 学号: 0913140319 班级: B1403 专业:网络工程 层次:本科 2016年9月

目录 实验题目:实验环境的初识、使用及调试方法(第一章) 实验题目:单片机工程初步实验(第二章) 实验题目:基本指令实验(第三章)4 实验题目:定时器/计数器实验(第五章)4 实验题目:中断实验(第六章)4 实验题目:输入接口实验(第八章)4 实验题目:I/O口扩展实验(第九章)4 实验题目:串行通信实验(第十一章)4 实验题目:A/D,D/A转换实验(第十七章)4

实验题目:实验环境的初识、使用及调试方法实验 实验类型:验证性实验课时: 1 时间:2016年10月24日 一、实验内容和要求 了解单片机的基础知识 了解51单片机的组成和工作方法 掌握项目工程的建立、编辑、编译和下载的过程方法 熟练单片机开发调试工具和方法 二、实验结果及分析 单片机最小系统的构成: Keil集成开发环境:

STC-ISP:

实验题目:单片机工程初步实验 实验类型:验证性实验课时: 1 时间:2016 年10 月24 日一、实验内容和要求 点亮一个LED小灯 程序下载到单片机中 二、实验结果及分析 1、点亮一个LED小灯 点亮LED小灯的程序: #include //包含特殊功能寄存器定义的头文件 sbit LED = P0^0; sbit ADDR0 = P1^0; //sbit必须小写,P必须大写 sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; void main() { ENLED = 0; ADDR3 = 1; ADDR2 = 1; ADDR1 = 1; ADDR0 = 0; LED = 0; //点亮小灯 while (1); //程序停止 } 2、程序下载 首先,我们要把硬件连接好,把板子插到我们的电脑上,打开设备管理器查看所使用的COM 口,如图所示:

单片机实训心得体会

单片机实训心得体会 篇一: 通过今次单片机实训,使我对单片机的认识有了更深刻的理解。系统以51单片机为核心部件,利用汇编软件编程,通过键盘控制和数码管显示实现了基本时钟显示功能、时间调节功能,能实现本设计题目的基本要求和发挥部分。 由于时间有限和本身知识水平的限制,本系统还存在一些不够完善的地方,要作为实际应用还有一些具体细节问题需要解决。例如:不能实现只用两个按键来控制时钟时间,还不能实现闹钟等扩展功能。 踉踉跄跄地忙碌了两周,我的时钟程序终于编译成功。当看着自己的程序,自己成天相伴的系统能够健康的运行,真是莫大的幸福和欣慰。我相信其中的酸甜苦辣最终都会化为甜美的甘泉。 但在这次实训中同时使我对汇编语言有了更深的认识。当我第一次接触汇编语言就感觉很难,特别是今次实训要用到汇编语言,尽管困难重重,可我们还是克服了。这次的实训使培养了我们严肃认真的做事作风,增强了我们之间的团队合作能力,使我们认识到了团队合作精神的重要性。 这次实训的经历也会使我终身受益,我感受到这次实训是要真真正正用心去做的一件事情,是真正的自己学习的过

程和研究的过程,没有学习就不可能有研究的能力,没有自己的研究,就不会有所突破。希望这次的经历能让我在以后学习中激励我继续进步。 篇二:单片机实验心得 通过这次单片机实习,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。创新可以是在原有的基础上进行改进,使之功能不断完善,成为真己的东西。 作为一名自动化专业的快大三学生,我觉得做单片机实习是十分必要的。在已度过的大学时间里,我们大多数接触的是专业课。我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力,如何把我们所学的专业基础课理论知识运用到实践中去,我想做类似实习就为我们提供了良好的实践平台 学习单片机没有捷径,不能指望两三天就学会,要坚持不懈,重在积累单片机是一门应用性和实践性很强的学科,要多动手,多做实验。 (4)要学会参考别人的程序,减少自己琢磨的时间,迅速提高自己的编程能力。 (5)碰到问题可以借助网络来搜寻答案和对自己有帮助的问题,一定会有所收获。

单片机实验报告书

并行I/O接口实验 一、实验目的 熟悉掌握单片机并行I/O接口输入和输出的应用方法。 二、实验设备及器件 个人计算机1台,装载了Keil C51集成开发环境软件。https://www.doczj.com/doc/3c5788258.html,单片机仿真器、编程器、实验仪三合一综合开发平台1台。 三、实验内容 (1)P1口做输出口,接八只发光二极管,编写程序,使发光二极管延时(0.5-1秒)循环点亮。实验原理图如图3.2-1所示。 图3.2-1单片机并行输出原理图 实验程序及仿真 ORG 0000H LJMP START ORG 0100H START:MOV R2,#8 MOV A,#0FEH LOOP:MOV P1,A LCALL DELAY RL A

DJNZ R2,LOOP LJMP START DELAY:MOV R5,#20 D1:MOV R6,#20 D2:MOV R7,#248 D3:DJNZ R7,D3 DJNZ R6,D2 DJNZ R5,D1 RET END 中断实验 一、实验目的 熟悉并掌握单片机中断系统的使用方法,包括初始化方法和中断服务程序的编写方法。 二、实验设备及器件

个人计算机1台,装载了Keil C51集成开发环境软件。 https://www.doczj.com/doc/3c5788258.html,单片机仿真器、编程器、实验仪三合一综合开发平台1台。 三、实验内容 (2)用P1口输出控制8个发光二极管LED1~LED8,实现未中断前8个LED闪烁,响应中断时循环点亮。 实验程序及仿真 ORG 0000H LJMP MAIN ORG 0003H LJMP INT00 ORG 0010H MAIN: A1:MOV A,#00H MOV P1,A MOV A,#0FFH MOV P1,A SETB EX0 JB P3.2,B1 SETB IT0 SJMP C1 B1:CLR IT0 C1:SETB EA NOP SJMP A1 INT00:PUSH Acc PUSH PSW MOV R2,#8 MOV A,#0FEH LOOP: MOV P1,A LCALL DELAY RL A DJNZ R2,LOOP

51单片机实验报告

51单片机实验报告

实验一 点亮流水灯 实验现象 Led灯交替亮,间隔大约10ms。实验代码 #include void Delay10ms(unsigned int c); void main() { while(1) { P0 = 0x00; Delay10ms(50); P0 = 0xff; Delay10ms(50); } }

void Delay10ms(unsigned int c) { unsigned char a, b; for (;c>0;c--) { for (b=38;b>0;b--) { for (a=130;a>0;a--); } } } 实验原理 While(1)表示一直循环。 循环体首先将P0的所有位都置于零,然后延时约50*10=500ms,接着P0位全置于1,于是LED全亮了。接着循环,直至关掉电源。延迟函数是通过多个for循环实现的。 实验2 流水灯(不运用库函数) 实验现象 起初led只有最右面的那一个不亮,半秒之后从右数第二个led

也不亮了,直到最后一个也熄灭,然后led除最后一个都亮,接着上述过程 #include #include void Delay10ms(unsigned int c); main() { unsigned char LED; LED = 0xfe; while (1) { P0 = LED; Delay10ms(50); LED = LED << 1; if (P0 == 0x00) { LED = 0xfe; } } } void Delay10ms(unsigned int c)

工作报告之大学单片机实验报告

大学单片机实验报告 【篇一:单片机实验报告】 单片机实验报告 姓名:班级:学号:任课教师:上课地点: 实验一流水灯实验 一、实验目的及要求 1、闪烁的led; 2、从左到右的流水灯; 3、8只led左右来回点亮; 4、led模拟交通灯。 要求1:led按设定的时间间隔闪烁 要求2:接在p0口的8个led从左到右循环依次点亮,产生走马灯效果要求3:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果; 二、实验原理电路图1、 电路图2、 三、源程序 要求1: #includereg51.h #define uchar unsigned char #define uint unsigned int sbit led=p1^0; //延时 void delayms(uint x) { uchar i; while(x--) {for(i=0;i120;i++); } } //主程序 void main() { while(1) {led=~led;delayms(150); } } 要求2: #include reg51.h #include intrins.h //包含程序中的_cror_(p0,y) #define uchar unsigned char #define uint unsigned int uchar led; void delay(unsigned int i) { uint j; uchar k; for(j=i;j0;j-- )for(k=125;k0;k--); } void main() { led=0x7f;//只亮第一个 delay(1000); while(1) { p0=led; delay(500); led=_cror_(led,1);//p0逐步右移一位。} } 要求3: #include reg51.h

单片机实验报告

南京晓庄学院电子工程学院 实验报告 课程名称:单片机系统设计与应用 姓名:森 专业:电子信息科学与技术 年级:14级 学号:05 2016年12 月1 日

实验项目列表 序号实验项目名称成绩指导教师 1 单片机仿真软件的使用 2 单片机I/O接口应用实验——流水灯 3 外部中断实验——工业顺序控制模拟 4 定时/计数器实验——矩形波 5 定时/计数器实验——计数器 6 综合实验 7 8 9 10 注: 1、实验箱端口为com6。 2、芯片选择切换到51 3、停止运行使用实验箱上的复位按钮

实验室号:___ 实验时间:成绩: 实验一仿真软件的使用 1.实验目的和要求 1)熟悉Keil C51软件界面,以及编辑、编译、运行程序的步骤; 2)掌握单片机仿真软件使用和调试的方法。 2.实验原理 Keil C51软件使用 在Keil C51集成开发环境下,建立一个工程并编辑源程序,熟悉Keil C51集成开发环境下各种菜单、命令的使用。 3.主要仪器设备(实验用的软硬件环境) 安装有Keil C51软件的PC机1台 4.操作方法与实验步骤 Keil C51软件使用 (1)建立用户文件夹 (2)建立工程 (3)建立文件并编码。输入以下源程序,并保存在项目所在的目录中 (4)把文件加入工程中 (5)编译工程。编译时观察在界面下方的“Build”页中的到编译错误信息和使用的系统资源情况等。 (6)调试。利用常用调试命令,如复位、运行、暂停、单步、单步跳过、执行完当前子程序、运行到当前行、下一状态、打开跟踪、观察跟踪、反汇编窗口、观察窗口、代码作用范围分析、1#串行窗口、内存窗口、性能分析、工具按钮等命令进行调试,观察并分析调试结果。 (7)目标代码文件的生成。运行生成相应的.HEX文件。 5.实验内容及程序 1)从DATA区地址起始地址为40H的连续10个内存单元的内容传送到XDATA区起始地址为2000H的10个内存单元中。 注意:DATA区地址起始地址为40H的连续10个内存单元必须先赋初值。 P83-5源程序 #include #define uchar unsigned char xdata unsigned char buffer1[10]_at_ 0x2000; //在xdata区定义数组变量BUF1,首地址为2000H data unsigned char buffer2[10]_at_ 0x40; //在data区定义数组变量BUF2,首地址为40H void main(void)

单片机实验报告书

并行I/O接口实验 一、实验目得 熟悉掌握单片机并行I/O接口输入与输出得应用方法。 二、实验设备及器件 个人计算机1台,装载了Keil C51集成开发环境软件。DP—51PRO、NET 单片机仿真器、编程器、实验仪三合一综合开发平台1台。 三、实验内容 (1)P1口做输出口,接八只发光二极管,编写程序,使发光二极管延时(0、5-1秒)循环点亮。实验原理图如图3、2-1所示。 图3、2—1单片机并行输出原理图 实验程序及仿真 ORG 0000H LJMP START ORG 0100H START:MOV R2,#8 ??MOV A,#0FEH LOOP:MOV P1,A ??LCALL DELAY ??RL A

???DJNZ R2,LOOP LJMP START DELAY:MOV R5,#20 D1:MOVR6,#20 D2:MOVR7,#248 D3:DJNZ R7,D3 DJNZ R6,D2 DJNZ R5,D1 ?RET ?END 中断实验 一、实验目得 熟悉并掌握单片机中断系统得使用方法,包括初始化方法与中断服务程序得编写方法。 二、实验设备及器件 个人计算机1台,装载了Keil C51集成开发环境软件。 DP-51PRO、NET单片机仿真器、编程器、实验仪三合一综合开发平台1

台. 三、实验内容 (2) 用P1口输出控制8个发光二极管LED1~LED8,实现未中断前8个LED闪烁,响应中断时循环点亮。 实验程序及仿真 ORG0000H LJMPMAIN ORG 0003H LJMPINT00 ORG 0010H MAIN: A1:MOVA,#00H MOV P1,A MOV A,#0FFH MOV P1,A SETB EX0 JB P3、2,B1 SETB IT0 ?SJMP C1 B1:CLR IT0 C1:SETB EA ?NOP SJMPA1 INT00:PUSH Acc PUSH PSW MOV R2,#8 ?MOV A,#0FEH LOOP: MOV P1,A LCALLDELAY RL A DJNZ R2,LOOP POP PSW

单片机实验报告一

单片机实验报告 1 姓名 陈奋裕 时间 2014/10/30 地点 机电实验大楼B526 实验题目 软件开发环境和简单程序设计 一、实验目的 1. 熟悉WAVE 软件使用 2. 学习简单程序的调试方法 二、实验主要仪器及环境 PC 机、WA VE 软件、仿真器+仿真头、实验板、电源等。 三、实验内容及步骤 1.启动PC 机,打开WAVE 软件,软件设置为模拟调试状态。在所建的项目文件中输入源程序,进行编译,编译无误后,执行程序,点击全速执行快捷按钮,点击暂停按钮,观察存储块数据变化情况,点击复位按钮,可再次运行程序。 2.打开CPU 窗口,选择单步或跟踪执行方式运行程序,观察CPU 窗口各寄存器的变化,可以看到程序执行的过程,加深对实验的了解。 四、流程图及参考程序 实验1 1)参考程序 2)流程图 ORG 0000H START EQU 30H MOV R0, #START MOV R2, #10 mov a,#01h Loop: MOV @R0,A NOP LJMP $ END

五、实验及程序的分析和讨论 (1)第一个程序是将地址为30H到39H的寄存器的内容全部置1。先在R0中存放内部存储器的起始地址30H,R2中存放内部存储器的长度10个,累加器置1,然后利用循环控制指令DJNZ R2,Loop控制10次循环给上述10个单元赋值1.最后,使单片机自身跳转。 (2)实验得到全速执行后相应的测试结果: (3)实验得到30H到39H寄存器执行后的内容: 从该表中也可以看出该程序的功能,即将30H到39H的寄存器内容置1,说明自己的分析是对的。 六、实验小结 1、汇编语言的结果在软件里面全部都是黑色字体,无法编译,在老师的 提醒下,知道了WAVE软件只能执行ASM文件,所以实验前要先将文件 的类型改为.ASM。 2、程序中的逗号要在英文的状态下面编写;若提示有空余符号,则是分 号后面直接写注释,不要添加空格 七、思考题 1、软件开发环境提供了哪些调试手段?各有何特点? 答: 1.伟福仿真器为我们的调试提供了多种方法,它可以编译,以便查 找语法错误; 2.单步执行,来检查每句程序的功能; 3.全速执行程序,来检查整段程序要完成的功能; 4.还可以设置断点进行调试,以便分段执行程序。 2、如何将存储器块的内容移动到另一位置? 答:借助指针和寄存器,利用转移类指令即可将存储器块的内容移动到 另一位置。

单片机实验报告

实 验 报 告 实验课程:单片机原理及应用 班级: 12自动化2班 学号: 姓名: 教师:张玲 成绩: 实验日期:年月日 实验名称:实验1——计数显示器 一、实验目的: 学习Proteus 软件的使用,掌握单片机原理图的绘图方法。 二、实验内容: 1、绘制“计数显示器”电路原理图; 2、利用提供的hex文件验证此电路的运行效果。 三、实验要求: 提交的实验报告中应包括:1、绘图方法简述,要求说明元件与电源的选取、摆放及属性编辑,总线与标签的画法等内容;2、电路原理图; 3、仿真运行效果展示,要求就仿真文件加载方法及3~4幅运行截图进行简要说明;4、实验小结,说明遇到的主要问题或实验

1体会等。 参考电路原理图如下: 元件类别电路符号元件名称 Microproces sor ICs “U1”80C51 Miscellaneo us “X1”/12MHz CRYSTAL Capacitors“C1”~“C2” /1nF CAP Capacitors“C3”/22μF CAP-ELEC Resistors Packs “RP1”/7-100ΩRESPACK-7 Resistors“R1”/100ΩRES Optoelectro nics “LED1”~ “LED2” 7SEG-COM-CAT-G RN Switches & Relays “BUT”BUTTON 1、编程思路及C51源程序:

2、电路原理图: 3、仿真运行效果展示:

4、实验小结: 熟悉Proteus软件,了解软件的结构组成与功能;学习ISIS模块的使用方法, 学会设置图纸、选元件、线画总线、修改属性等基本操作;学会可执行文件 加载及程序仿法;理解Proteus在单片机开发中的作用,完成单片机电路原 理图的绘制。

哈尔滨工业大学单片机实验报告

H a r b i n I n s t i t u t e o f T e c h n o l o g y 单片机原理与应用 实验报告 学生姓名: 学号: 班级: 通信工程 专业: 任课教师: 所在单位: 电子与信息工程学院 月5年2013. 软件实验 在软件实验部分,通过实验程序的调试,使学生熟悉MCS-51的指令系统,了解程序设计过程,掌握汇编语言设计方法以及如何使用实验系统提供的调试手段来排除程序错误。 实验一清零程序 一、实验目的 掌握汇编语言设计和调试方法,熟悉键盘操作。 二、实验内容 把2000~20FFh的内容清零。 三、程序框图

四、实验过程 1、LED环境 ⑴在“P.”状态下按“0→EV/UN”,装载实验所需的代码程序。 ⑵在“P.”状态下键入0640,然后按“STEP”或“EXEC”进入实验项目的调试与运行。. 2、PC环境 在与PC联机状态下,编译、连接、下载PH51\se01.asm,用连续或单步方式运行程序。 3、运行结果检查 ⑴在单步运行时,每走一步可观察其运行结果。 ⑵在连续运行状态下,应按“暂停图标”或实验箱上的“暂停按钮”,使系统无条件退出用户运行状态返回监控,然后再用相应的命令键观察与检查2000~20FFH 中执行程序前后的内容变化。 五、实验结果及分析 实验前截图: 实验后截图:

: 实验源程序ORG 0640H SE01: MOV R0,#00H DPTR MOV DPTR,#2000H ;(2000H送(DPTR 送LOO1: MOVX @DPTR,A ;0INC DPTR ;DPTR+1 1 INC R0 ;字节数加个字节再清FF不到CJNE R0,#00H,LOO1 ; SJMP $ END 实验问题:2000H~20FFh中的内容是什么? 解答:实验运行之前,2000H~20FFh中的内容是随机分配的;在执行完清零程序之后, 2000H~20FFh中的内容都变为0. 实验二拆字程序 一、实验目的 掌握汇编语言设计和调试方法。 二、实验内容 把2000h的内容拆开,高位送2001h低位,低位送2002h低位,2001h、2002h高位清零,一般本程序用于把数据送显示缓冲区时用。 三、程序流程

单片机串行通信实验报告(实验要求、原理、仿真图及例程)

《嵌入式系统原理与实验》实验指导 实验三调度器设计基础 一、实验目的和要求 1.熟练使用Keil C51 IDE集成开发环境,熟练使用Proteus软件。 2.掌握Keil与Proteus的联调技巧。 3.掌握串行通信在单片机系统中的使用。 4.掌握调度器设计的基础知识:函数指针。 二、实验设备 1.PC机一套 2.Keil C51开发系统一套 3.Proteus 仿真系统一套 三、实验内容 1.甲机通过串口控制乙机LED闪烁 (1)要求 a.甲单片机的K1按键可通过串口分别控制乙单片机的LED1闪烁,LED2闪烁,LED1和LED2同时 闪烁,关闭所有的LED。 b.两片8051的串口都工作在模式1,甲机对乙机完成以下4项控制。 i.甲机发送“A”,控制乙机LED1闪烁。 ii.甲机发送“B”,控制乙机LED2闪烁。 iii.甲机发送“C”,控制乙机LED1,LED2闪烁。 iv.甲机发送“C”,控制乙机LED1,LED2停止闪烁。 c.甲机负责发送和停止控制命令,乙机负责接收控制命令并完成控制LED的动作。两机的程序要 分别编写。 d.两个单片机都工作在串口模式1下,程序要先进行初始化,具体步骤如下: i.设置串口模式(SCON) ii.设置定时器1的工作模式(TMOD) iii.计算定时器1的初值 iv.启动定时器 v.如果串口工作在中断方式,还必须设置IE和ES,并编写中断服务程序。

(2)电路原理图 Figure 1 甲机通过串口控制乙机LED闪烁的原理图 (3)程序设计提示 a.模式1下波特率由定时器控制,波特率计算公式参考: b.可以不用使用中断方式,使用查询方式实现发送与接收,通过查询TI和RI标志位完成。 2.单片机与PC串口通讯及函数指针的使用 (1)要求: a.编写用单片机求取整数平方的函数。 b.单片机把计算结果向PC机发送字符串。 c.PC机接收计算结果并显示出来。 d.可以调用Keil C51 中的printf来实现字符串的发送。 e.单片机的数码港显示发送的次数,每9次清零。

单片机实验报告

本科生实验报告 实验课程单片机原理及应用 学院名称核技术与自动化工程学院 专业名称电气工程及其自动化 学生姓名 学生学号 指导教师任家富 实验地点6C902 实验成绩 二〇一五年三月二〇一五年六月 单片机最小系统设计及应用 摘要 目前,单片机以其高可靠性,在工业控制系统、数据采集系统、智能化仪器仪表等领域得到极其广泛的应用。因此对于在校的大学生熟练的掌握和使用单片机是具有深远的意义。通过本次课程设计掌握单片机硬件和软件方面的知识,更深入的了解单片机的实际应用,本次设计课程采用STC89C52单片机和ADC0804,LED显示,键盘,RS232等设计一个单片机开发板系统。进行了LED显示程序设计,键盘程序设计,RS232通信程序设计等。实现了单片机的各个程序的各个功能。对仿真软件keil的应用提升了一个新的高度。单片机体积小、成本低、使用方便,所以被广

泛地应用于仪器仪表、现场数据的采集和控制。通过本实验的学习,可以让学生掌握单片机原理、接口技术及自动控制技术,并能设计一些小型的、综合性的控制系统,以达到真正对单片机应用的理解。 关键词:单片机;智能;最小系统;ADC;RS232;显示;STC89C52 第1章概述 单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。单片机采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。 它最早是被用在工业控制领域,由于单片机在工业控制领域的广泛应用,单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。 现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!单片机的数量不仅远超过PC机和其他计算的总和,甚至比人类的数量还要多。单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。 第2章实验内容 2.1单片机集成开发环境应用

单片机实验报告

课程设计课程名称单片机原理及应用 课题名称基于1602电子时钟设计 专业电子信息工程 班级 学号 姓名 指导老师 2017年12月21日 电气信息学院

课程设计任务书 课题名称基于1602电子时钟设计 姓名专业电子信息工程班级学号 指导老师 课程设计时间2017年12月4日-2017年12月15日(14、15周) 教研室意见意见:审核人: 一、任务及要求 设计任务: 以单片机为核心设计一个电子时钟。能焊接开发板的同学,在开发板上进行调试。 (1)时间显示在1602液晶上,并且按秒实时更新。 (2)使用按键随时调节时钟的时、分、秒,按键可设计三个有效键,分别为功能选择键、数值增大键和数值减小键。 (3)每次有键按下时地,蜂鸣器都以短“滴”声报警。 (4)如何继续断电前的时间。 设计要求: (1)确定系统设计方案; (2)进行系统的硬件设计; (3)完成必要的参数计算与元器件选择; (4)开发板焊接及测试 (5)完成应用程序设计; (6)应用系统的硬件和软件的调试。

二、进度安排 第一周: 周一:集中布置课程设计相关事宜,并查阅、收集相关设计资料。 周二:系统方案设计。 周三~周五:实验室进行硬件设计,软件设计及调试。 第二周: 周一~周二:实验室系统仿真及硬件调试。 周三:实验室检查调试结果。 周四:撰写设计报告。 周五:进行答辩和上交设计说明书。 三、参考资料 1、周向红.51系列单片机应用与实践教程.北京航空航天大学出版社.2008.5 2、周向红.51单片机课程设计.华中科技大学出版社.2011.1 3、王迎旭.单片机原理及应用(第2版).机械工业出版社.2012.2 4、郭天祥.51单片机C语言教程(入门提高开发拓展全攻略).电子工业出版社.2012.1 5、樊思奇.80C51单片机C语言程序设计完全手册.电子工业出版社.2014.5 6、彭伟.单片机C语言程序设计实训100例基于8051+Proteus仿真.电子工业出版社.2009.6 7、孙安青.MCS-51单片机C语言编程100例(第二版).中国电力出版社.2017.6 8、赵建领.零基础学单片机C语言程序设计.机械工业出版社.2012.9

单片机实验报告(学期全部实验)

单片机程序设计 实 验 报 告 姓名: 学号: 专业班级:

第二节课: 实验一:1357,2468位置的灯交替闪烁 一实验要求 1357,2468位置的灯交替闪烁。 二硬件连接图与结果 三原理简述 程序直接控制LED各位置的灯亮灭,时间间隔简单的用了一个延时的语句。四程序 #include main () { int i; P0=0XAA; //1357四个灯亮 for (i=0;i<=25000;i++); //延时程序 P0=0X55; //2468四个灯亮 for (i=0;i<=25000;i++); //延时程序 }

五所遇问题与解决方式 程序比较简单,没有遇到问题。 实验二:流水灯 一实验要求 流水灯,一个接一个的灯亮,亮到最后一个后,全部的灯亮,然后重头开始。二硬件连接图与结果 三原理简述 程序定义第一个位置的灯亮,通过一个时间间隔,运用一个循环移位程序转

移到下一个灯,移位7次后全部的灯亮,最后定义整个循环。时间间隔简单的用了一个延时的语句。 因为移位时是直接补0,发送低电平不亮,所以直接移位达到要求。 四程序 //流水灯 #include main () { int i,j; while(1) { P0=0X01; //第1个灯亮 for (i=0;i<=30000;i++); //延时程序 for(j=0;j<=7;j++) //移位循环程序 { P0=P0<<1; //移位 for (i=0;i<=30000;i++); //延时程序 } P0=0xff; //全亮 for (i=0;i<=30000;i++); //延时程序 } }

单片机实验报告

哈尔滨师范大学计算机科学与信息工程学院 实验报告手册 课程名称:嵌入式系统原理与应用指导教师:王洪侠 专业:计算机科学与技术20 18 年—20 19 年第 1 学期姓名:吴晗学号:2016040860 年级:2016级班级: 2 班

实验报告内容 实验题目:P1口输出实验 实验目的:通过实验了解P1口做为输入输出方式使用时,CPU对P1口的操作方式 实验要求:控制8个LED灯,完成从左到右然后从右到左再从左到右依次的循序流水实验器材:计算机和普中科技STC89C52单片机电路板 实验步骤/程序流程分析: 1.单片机由P2口控制流水灯 2.根据题目要求实现每点亮一盏灯就熄灭前一盏 3.套用循环实现从左到右的动态流水式亮灯 4.完成从左到右再从右到左再从左刀右流水亮灯 程序源代码: #include "reg52.h" #include typedef unsigned int u16; typedef unsigned char u8; #define led P2 void delay(u16 i) { while(i--); } void main() { u8 i; led=0xfe; delay(50000); // while(1) { /* for(i=0;i<8;i++) { P2=~(0x01<

相关主题
文本预览
相关文档 最新文档