51单片机综合实验报告

2024-08-17

51单片机综合实验报告(精选6篇)

篇1:51单片机综合实验报告

实验报告

班级:

姓名:

学号:

组别:

课程名称:单片机原理及应用

实验室:

实验时间:

实验项目名称:

实验一

MCS-51单片机及其开发系统(仿真器)的认识 一、实验目的:

学习并掌握单片机仿真系统的操作方法,熟悉系统功能及用法。

(1)了解MCS-51单片机开发常用工具。

(2)了解仿真器构成、功能及连接。

(3)掌握MCS-51开发软件(汇编器)安装、功能及基本操作。

(4)掌握源程序的编辑、汇编、运行(包括连续执行、单步执行和跟踪执行)。

(5)掌握汇编语言指令与机器语言指令之间的对应关系。

(6)掌握ORG、DATA、BIT等伪指令的作用。

(7)掌握在仿真开发系统下浏览、修改特殊功能寄存器、内部RAM、外部RAM单元的方法。

(8)理解MCS-51单片机在复位期间及复位后有关引脚的状态、特殊功能寄存器的初值。

二、实验内容及原理:

MdeWin单片机仿真系统的安装、设置、主要功能操作练习。

三、实验器材:

MdeWin单片机仿真系统一套、PC机一台。

四、实验步骤及实验结果分析:

一、程序输入练习:

首先在Medwin下新建一项目,并新建一后缀名为asm的文件(汇编源文件),并添加入项目中。

按规定的格式输入以上程序(只输源程序部分)。

二、程序运行和控制:

1.程序的编译、产生代码并装入: 输入源程序完毕后,可在“项目管理”窗口中点击“编译/汇编”选项,如程序无输入错误、语法错误等,编译完成。在消息窗口中,产生编译成功信息。如有错误,则消息窗口中指出错误所在行及错误类型,请重新修改源程序。

编译成功后,在“项目管理”窗口中点击“产生代码并装入”选项,对编译无误后产生的OBJ文件进行连接,并把代码装入仿真器。代码装入仿真器后,即可实行仿真。

可在反汇编窗口中查看编译产生的机器码,并与上述程序中对照。

记录你认为能说明问题的检查结果。

2.程序的全速、断点、单步等执行方式: 为提高调试程序的运行速度,程序采用全速断点运行方式。

练习设置及取消设置程序断点。

比较单步及跟踪两种程序运行方式的不同。

3.查看单片机各种资源状态及内容:

在“察看”窗口中可以查看单片机内部及程序变量等各种资源,在单步或程序断点运行中可以实时观察单片机SFR、内外RAM、程序变量等内容,可以很方便的观测程序的运行状况。

将观测的结果记录下来以便和程序分析结果相比较。

三.程序输入补充练习1.汇编语言源程序编辑、运行及调试,输入、编辑、汇编、运行(连续、单步执行)如下程序段:

;变量定义区

XVAR DATA

30H

;定义变量 X,Y地址

YVAR DATA

38H

P10 BIT

P1.0

;位定义P1.0定义为P10

ORG

0000H

;伪指令 定义PC开始位置

LJMP

MAIN

;长跳转到主程序位置

ORG

0100H

;伪指令 主程序开始位置 MAIN: MOV SP, #9FH

;设置堆栈地址

MOV A, #55H

;A=55H

MOV XVAR, A

;XVAR(30H)=55H

MOV R0, #XVAR

;R0=30H

MOV @R0, #01H

;(30H)=01H

INC R0

;R0=31H

MOV @R0, #02H

;(31H)=02H

MOV R1, #YVAR

;R1=38H

MOV A, @R0

;A=02H

MOV @R1, A

;(38H)=02H

PUSH Acc

;压栈操作A0,A1存储acc和psw

PUSH PSW

;

MOV A, #0AAH

;A=AAH

SETB RS0

;01 选用第一区寄存器

CLR RS1

MOV R0, #5AH

;R0=5AH

MOV R1, #0A5H

;R1=A5H

POP PSW

;出栈操作释放acc和psw

POP ACC

INC R1

;R1=39H

DEC R0

;R0=30H

MOV A, @R0

;A=01H

MOV @R1, A

;(39H)=01H

CLR P1.0

SETB P1.0

;置位P1.0

MOV 90H, #00H

;(90H)=00H

MOV 90H, #55H

;(90H)=55H

MOV 90H, #0FFH

;(90H)=FFH

MOV P1, #00H

;P1=00H

MOV P1, #55H

;P1=55H

MOV P1, #0FFH

;P1=FFH

SJMP $

END(1)找出每条指令的机器码,并与第3章指令码表对照,指出每一指令的功能、寻址方式、操作数书写形式。

地址

机器码

指令

目的操作数/ / 源操作数

MOV SP, #9FH

目的操作数:直接寻址;源操作数:立即寻址 MOV A, #55H

目的操作数:寄存器寻址;源操作数:立即寻址; MOV XVAR, A

目的操作数:直接寻址;源操作数:寄存器寻址; MOV R0, #XVAR

目的操作数:寄存器寻址;源操作数:立即寻址;

MOV @R0, #01H

目的操作数:寄存器间接寻址;源操作数:立即寻址; INC R0

寄存器寻址 MOV @R0, #02H

目的操作数:寄存器间接寻址;源操作数:立即寻址; MOV R1, #YVAR

目的操作数:寄存器寻址;源操作数:立即寻址; MOV A, @R0

目的操作数:寄存器寻址;源操作数:寄存器间接寻址; MOV @R1, A

目的操作数:寄存器间接寻址;源操作数:寄存器寻址; PUSH Acc;

将Acc中的内容压入堆栈;直接寻址 PUSH PSW

将PSW压入堆栈;直接寻址 MOV A, #0AAH

目的操作数:寄存器寻址;源操作数:立即寻址; SETB RS0

位寻址 CLR RS1

位寻址 MOV R0, #5AH

目的操作数:寄存器寻址;源操作数:立即寻址; MOV R1, #0A5H

目的操作数:寄存器寻址;源操作数:立即寻址; POP PSW

按压栈顺序放入PSW; 直接寻址 POP ACC

按压栈顺序放入Acc;直接寻址 INC R1

寄存器寻址 DEC R0

寄存器寻址

MOV A, @R0

目的操作数:寄存器寻址;源操作数:寄存器间接寻址; MOV @R1, A

机器码:F7;R1=A;

目的操作数:寄存器间接寻址;源操作数:立即寻址; CLR P1.0

将p10口清零 SETB P1.0

将P10口置一; 位寻址 MOV 90H, #00H

机器码:759000;(90H)=00H;目的操作数:直接寻址;源操作数:立即寻址; MOV 90H, #55H

目的操作数:直接寻址;源操作数:立即寻址; MOV 90H, #0FFH

目的操作数:直接寻址;源操作数:立即寻址; MOV P1, #00H

目的操作数:直接寻址;源操作数:立即寻址;

MOV P1, #55H

目的操作数:直接寻址;源操作数:立即寻址; MOV 90H, #0FFH

目的操作数:直接寻址;源操作数:立即寻址; SJMP $

(2)在单步执行过程中,每执行一条命令后,观察并记录有关寄存器、内存单元的变化情况。设置断点后,再连续执行,记录30H、31H、38H单元内容,与复位后的内容进行比较,由此得出什么结论?

全速执行

全速执行后复位

执行至断点处

全速执行到结束 由上图可见,全速执行后并不会输出结果,只有当程序复位之后才会将结果显示出来,但是设置断点后,运行至断点就会显示已运行的结果,由此我得出结论:当全速运行到最后时,系统处于原地跳转状态,只要系统不停下就不显示结果,而设置断点后,到达断点就会停止运行,从而显示运算结果。而单步执行在每一步执行之后,对应地址的数值就会立刻改改变。

(3)修改ORG 100H指令后的地址,重新汇编,观察程序代码在程序存储器中存放位置的变化情况。记录你认为能说明问题的检查结果。

ORG 300H

ORG 1000H 五、在实验过程中遇到的问题及解决方法(1)

软件安装出错

解决:删除注册表,在注册表的删除过程中,必须要删干净,然后换安装包重装。

(2)

出栈时,寄存器的数值改编 解决:psw 出栈时,改变了 rs0,rs1 的值,也就是换回了 0 区寄存器。因此个寄存器的数值均为压栈前的数值。

六、实验结论

本次实验,较为简单,基本上是验证性实验,在学习了理论知识后,通过实践,简单明了的看到了各个地址的数值,并了解到程序的运行过程,单步运行更容易让我们了解到每一步指令的操作效果。另外,在实验过程中,调用各个查看窗口进行实验过程跟踪,能更加直观的认识到指令的作用

篇2:51单片机综合实验报告

实验代码 #include 〈reg51、h> void Delay10ms(unsigned int c); void main(){)1(elihwﻩ { ﻩ

P0

= 0x00;

Delay10ms(50);

;ffx0 =

0Pﻩ

;)05(sm01yaleDﻩ } } void Delay10ms(unsigned int c){

unsigned char a,b;

for(;c>0;c-—)

{)——b;0〉b;83=b(rofﻩ { ﻩ ﻩ

for(a=130;a〉0;a--);

} ﻩ ﻩ }

} 实验原理

W W hi i le(1)表示一直循环。

循环体内首先将 P0 得所有位都置于零,然后延时约5 5 0 *10=500ms,接着 0 P0 位全置于 1 1,于就是 D LED 全亮了。接着循环,直至关掉电源..延迟函数就是通过多个for r 循环实现得。

实验 2 流水灯(不运用库函数)

实验现象 起初 led 只有最右面得那一个不亮,半秒之后从右数第二个led也不亮了,直到最后一个也熄灭,然后 led 除最后一个都亮,接着上述过程 #include <reg52、h> #include <intrins、h> void Delay10ms(unsigned int c);

main(){

unsigned char LED;

LED = 0xfe;

while(1)

{ ﻩ

;DEL = 0Pﻩ

Delay10ms(50);

;1 〈〈 DEL = DELﻩ)00x0 == 0P(fiﻩ {

;efx0 = DELﻩ

} ﻩ } ﻩ} void Delay10ms(unsigned int c)

unsigned char a,b;

for(;c>0;c-—)

{)—-b;0〉b;83=b(rofﻩ { ﻩ ﻩ ﻩ

;)--a;0>a;031=a(rofﻩ

} ﻩ

} ﻩ} 实验原理

这里运用了C语言中得位运算符, , 位运算符左移, , 初始值得二进制为1 111 1 11 0, 之后左移一次变成1 111 1 100 0,当变成0000

0 0000 时通过 f if 语句重置 1 1 11 1 11110、延迟函数在第一个报告已经说出了,不再多说..实验 3 流水灯(库函数版)实验现象

最开始还就是最右边得一个不亮,然后不亮得灯转移到最右边得第二个,此时第一个恢复亮度,这样依次循环.实验代码 #include 〈reg51、h> #include 〈intrins、h〉 void Delay10ms(unsigned int c); void main(void){

unsigned char LED;

;EFx0 = DELﻩ)1(elihwﻩ { ﻩ

P0 = LED;

;)05(sm01yaleDﻩ ﻩ

;)1,DEL(_lorc_ = DELﻩ } ﻩ} void Delay10ms(unsigned int c){

unsigned char a, b;

for(;c〉0;c——)

{ ﻩ

for(b=38;b〉0;b—-)

{ ﻩ ﻩ

;)-—a;0〉a;031=a(rofﻩ

} ﻩ } } 实验原理

利用头文件中得函数,_cro l _(,), 可以比位操作符更方便得进行 2 2 进制得移位操作, , 比位操作符优越得就是,该函数空位 补全时都就是用那个移位移除得数据, , 由此比前一个例子不需要f if 语句重置操作..数码管实验

实验现象 单个数码管按顺序显示0-9与 A-F。

#include<reg51、h> void Delay10ms(unsigned int c);unsigned char code DIG_CODE[16]={0x3F,0x06, 0x5B,0x4F, 0x66, 0x6D, 0x7D, 0x07,0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71}; void main(void){

;0 = i rahc dengisnuﻩ while(1)

{ ﻩ

P0= ~DIG_CODE[i];

;++iﻩ)61 == i(fiﻩ

;0 = iﻩ } ﻩ

;)05(sm01yaleDﻩ }

ﻩ} void Delay10ms(unsigned int c)

//Î ó² î 0us

unsigned char a, b;

for(;c>0;c—-)

{ ﻩ

for(b=38;b〉0;b--)

{

;)—-a;0〉a;031=a(rofﻩ

} ﻩ }

} 实验原理

根据数码管得点亮原理,依次找到代表 0 0 -9 ,A--F F 得位码,用循环与延迟函数就可以达到要求了。

实验 动态数码管 #include〈reg51、h> #define GPIO_DIG

P0 ﻩ#define GPIO_PLACE P1

unsigned char code DIG_PLACE[8] = { 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char code DIG_CODE[17] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

unsigned char DisplayData[8];void DigDisplay();void main(void)

unsigned char i;

for(i=0; i<8;i++)

{ ﻩ

DisplayData[i] = DIG_CODE[i];

} ﻩ while(1)

{ ﻩ

;)(yalpsiDgiDﻩ }

ﻩ ﻩ} void DigDisplay()

;i rahc dengisnuﻩ

;j tni dengisnuﻩ for(i=0;i<8; i++)

{

;]i[ECALP_GID = ECALP_OIPGﻩ ﻩ

;]i[ataDyalpsiD = GID_OIPGﻩ

;01 = jﻩ ﻩ ﻩ

ﻩwhile(j—-);ﻩ

};00x0 = GID_OIPGﻩ ﻩ} 实验原理

依然找到相应数字与字母得编码, , 由于必须通过快速扫 描利用视觉暂留来实现数码管得显示, , 分段码与位码,不断扫描。最后如果更换数字得话, , 需要消隐操作,防止数码管重复显示所带来得不清楚..实验 外部中断 实验现象

每按一下独立按键,就会在数码管显示屏上+1.#include 〈 reg51、h 〉 #include sbit LS138A=P2^2;

sbit LS138B=P2^3;sbit LS138C=P2^4;

unsigned int LedNumVal_1,LedNumVal_2,LedOut[8];Unsigned char code Disp_Tab[]= {0x3f,0x06,0x5b,0x4f, 0x66,0x6d , 0x7d,0x07,0x7f,0x6f , 0x40};

void delay(unsigned int i)

{

char j;

for(i;i > 0; i--)

for(j = 200;j > 0;j—-);} void main(void)

unsigned char i;

P0=0xff;

P1=0xff;

P2=0xff;

IT0=1;

EX0=1;

IT1=1;

EX1=1;

EA=1;

while(1)

LedOut[0]=Disp_Tab[LedNumVal_1%10000/1000];

LedOut[1]=Disp_Tab[LedNumVal_1%1000/100]|0x80;

LedOut[2]=Disp_Tab[LedNumVal_1%100/10];

LedOut[3]=Disp_Tab[LedNumVal_1%10];

;]0001/00001%2_laVmuNdeL[baT_psiD=]4[tuOdeLﻩ

LedOut[5]=Disp_Tab[LedNumVal_2%1000/100];

LedOut[6]=Disp_Tab[LedNumVal_2%100/10];

LedOut[7]=Disp_Tab[LedNumVal_2%10];

for(i=0;i<8; i++)

{

;]i[tuOdeL = 0Pﻩ

switch(i)ﻩ

ﻩcase 0:LS138A=0;LS138B=0;LS138C=0; break; case 1:LS138A=1; LS138B=0;LS138C=0;break; case 2:LS138A=0; LS138B=1; LS138C=0;break; case 3:LS138A=1; LS138B=1;LS138C=0; break;case 4:LS138A=0;LS138B=0;LS138C=1;break;case 5:LS138A=1; LS138B=0; LS138C=1;break;case 6:LS138A=0;LS138B=1; LS138C=1; break;

case 7:LS138A=1;LS138B=1; LS138C=1; break;

}

;)051(yaledﻩ } ﻩ

} } void

counter0(void)interrupt 0

using 1 {

EX0=0;

LedNumVal_1++;

EX0=1; } void

counter1(void)interrupt 2 using 2 {

EX1=0;

LedNumVal_2++;

篇3:51单片机综合实验报告

近年来,单片机技术以前所未有的势头迅猛发展。在生产与技术开发领域,成为电子技术、自动化技术、计算机技术、检测技术和通信技术中的一个重要的开发工具。市场对从事单片机开发人员的需求非常迫切,这也对单片机教学提出了更高的要求。目前大部分学校开设的单片机类的课程还是以MCS-51为蓝本,以汇编语言(或C语言)为编程工具,以并行扩展为核心,讲述单片机的接口技术及单片机的嵌入式应用。但随着微电子技术和信息技术的迅猛发展,以及各种新型数据传输接口技术的出现和新器件的推出,传统的MCS-51由于自身结构的原因,在数据通信和系统扩展方面开始显得捉襟见肘,与各种新技术的发展和应用产生脱节。

AVR是最近10年发展起来的新型、基于增强型RISC结构的单片机。AVR在运行速度、内存容量、内部功能模块的集成化、以串行接口为主的外围扩展、仿真技术等方面都比MCS-51先进,比较充分和全面代表了当前8位单片机和嵌入式应用技术的发展方向。1999年,ATMEL公司与华东师范大学电子系合作,建立了国内第一个AVR实验室,并开设了AVR课程。在教学时间过程中,结合课程特点和实验需求,研制开发了具有专业特色的技术水平较高、扩展性较强、实验内容丰富的AVR单片机多功能实验开发板。

1 硬件结构

1.1 AVR实验开发板结构

传统的单片机实验板透明度不高,实验板上的芯片、接口都是固定连接的,硬件只需要很少连接,甚至不需要连接,就能直接进行编程设计。这就把单片机以硬件为主、软硬结合的训练变相地转化成了纯软件的训练。

单片机系统具有“硬件决定软件,程序基于硬件”的特点。在外表上实现相同功能的系统,其硬件设计往往有多种形式,系统软件的设计也不相同。AVR多功能实验开发板本着使学习者在硬件设计和软件设计方面全面得到真正训练和学习的目的,一改以往的固定线路、固定接口、固定芯片的模式,对开发板上的硬件资源采用了全部开放的结构,提供了比较丰富的接口,以及众多构成单片机系统最常用的、同时也是最基本的外围功能电路。板上的单片机引脚全部开放,同时将单片机系统中最常用的显示、按键、键盘等都作为独立的开放单元模块,其连接信号接口和电源接口也是开放的。这样学习者就可以非常灵活地构建自己的系统。

本文的AVR多功能实验开发板基于“模块独立、开放、灵活”的思想而设计,是一款适用于大学单片机教学和实验使用的多功能板。实验板分成三大部分:系统电源、MCU座和外围功能模块单元。其中外围功能模块单元划分为LED数码管显示、LED点阵显示、矩阵键盘、蜂鸣器、串行接口等多个功能区域,实验板的实物图如图1所示。

1.2 实验板硬件组成

1.2.1 系统电源

在8~12V输入电压范围内提供高稳定的5V/1A的系统电源,配有电源指示灯、极性保护电路及开关。一般工作时,输入电压为9V。系统电源部分采用7805为实验板工作提供需要的5V/1A电源。另外,板上还有多个高、低频电源滤波电容。系统电源部分的原理图如图2所示。

1.2.2 MCU座

实验板预留了两个40引脚的锁紧插座,供MCU插入使用。两个插座引脚全部开放,与外围没有任何连接,MCU座连接的原理图如图3所示。左边40引脚插座与6组短路排(JU1)、2组短路排(X2和X1)、JU2-GND和JU3-VCC配合,构成通用51系列40引脚单片机兼容的方式,适用于AT89S5x系列单片机和ATmega8515单片机;右边40引脚插座与10座短路排(JU4)、3组短路排(JU7)、4组短路排JU8配合,适用于ATmega16、ATmega8535和ATmega32单片机。另外,左边设计了2×5针的ISP下载接口,用于配合与STK200/300兼容的ISP下载线实现对AT89S5x和AVR单片机进行程序下载和熔丝位的配置;右边设计了2×5针的JTAG接口,用于配合使用专用的JTAG仿真器实现对含有JTAG接口的AVR单片机进行在片实时仿真调试,以及程序下载和熔丝位的配置。

由于2个插座引脚是全部开放的,当其中一个插座插入单片机后,另一个就可以作为扩展插座使用,例如插入DIP封装的EEPROM芯片24C256做I2C通信实验等。

1.2.3 外围功能模块单元

外围功能模块单元共分成A~O15个区域,各部分原理图如图4所示。其中A区为8路LEDs,用于输出显示;B区为标准2×16字符的LCD液晶显示器接口,同时还兼容3310图像LCD接口;C区为8位8段LED数码管显示电路,采用共阴极连接,动态扫描方式点亮;D区是由精密电位器与电源组成的0~5V的可调直流电压源,作为ADC的输入电压源,用于实现A/D转换、直流电压表、模拟温度计等实验;E区为8×8LED点阵显示模块;F区为4×3矩阵键盘;G区为4个独立按键;H区为7路300mA功率驱动,用于驱动小型步进电机、继电器等;I区为系统时钟电路;J区为RC滤波电路用于对PWM输出的平滑;K区使用一个2.048MHz的晶体振荡器,经过CD4060分频提供125Hz~128kHz、占空比为50%的10种频率方波脉冲信号,可作为频率、周期测量实验的输入信号;L区为40引脚窄型扩展座和标准PCB板,用于扩展和插入其他芯片;M区提供了一个无源蜂鸣器;N区为单片机外部复位电路选择;O区为RS232串行接口单元。

图4外围功能模块单元(参见下页)

2 实验板功能设计

根据AVR单片机多功能实验开发板硬件功能模块及AVR单片机自有功能,整个实验开发系统板提供了以下几项功能:

(1)系统的资源与能源。电源供电系统单元、可调直流电压单元和脉冲信号发生器单元为实验提供了必要的条件和手段。电源供电系统为实验板提供了高精度的电源;可调直流电压单元为A/D转换提供了输入信号;脉冲信号发生器单元则为计数、频率测量等提供信号源。

(2)基本的输入输出设备或接口。主要为基本实验提供必要的外围设备:按键单元、4×3键盘单元、无源蜂鸣器单元、8×8LED点阵式显示单元、8位LED数码管显示单元、2×16字符型液晶显示单元、LED显示单元、功率驱动单元以及RS232等。

(3)系统的扩展功能。单片机引脚的全面开放,采用2个40引脚的锁紧插座。扩展插座、系统时钟选择、外部复位选择等使得实验板可以非常灵活地扩展、组合,同时也适合多种类型及不同引脚数的单片机使用。由于I2C总线、SPI总线通信接口均是串行通信方式,使用连线较少,因此在做这些实验时,只要将相关的外围芯片插入扩展插座中,再使用几根连线连接电源、地和接口引脚就可以了。

本实验板对于AVR单片机所有的基本功能和单元实验,如I/O使用、ADC、时钟、中断、PWM、键盘、按键、LED、LED数码管、LCD显示、测频率、测周期、功率驱动、蜂鸣器、RS232等,都可以在板上实现。如果将这些单元有机组合,就可以实现一些实际电子产品的设计,如带音乐报时的时钟、秒表、频率计、速度表、电话拨号器、电压表、LED广告屏等。

3 结语

AVR单片机多功能实验开发板不仅可以增加更多的设计性实验内容,提高实验技术水平,而且可以加强硬件动手部分的训练,启发使用者的创造性、发散性思维,更能针对个体的兴趣,选择不同类型和深度的设计性、综合性实验内容,使不同程度的学习者在实验中既掌握AVR单片机课程的基础,又提高了综合设计能力和工程应用水平。另外,本多功能实验板还可以作为一些单片机产品设计的开发板供研发人员使用。

参考文献

[1]倪志莲.单片机课程的实验教学改革[J].实验室研究与探索,2006,25(7):843-844.

[2]马潮.AVR单片机嵌入式系统原理与应用实践[M].北京:北京航空航天大学出版社,2007.

[3]郝莹,孙宏军,王辉.基于PIC单片机设计型实验装置的研制[J].实验室研究与探索,2006,25(8):937-938.

[4]王勇.基于AVR单片机的一体化GPS接收机设计[J].自动化仪表,2008,29(2):65-67.

[5]廖春蓝.AVR单片机在测控实验系统中的应用研究[J].北京电子科技学院学报,2007,15(2):62-64.

[6]陈德明,孙光民,王强,等.基于AVR8位单片机的短距离立体声数字音频无线传输系统开发[J].电子技术应用,2007(9):123-125.

篇4:51单片机综合实验报告

【关键词】单片机 项目教学法 智能小车 教学改革

【中图分类号】G 【文献标识码】A

【文章编号】0450-9889(2016)08C-0161-02

在电子技术快速发展的时代,单片机技术在电子行业中扮演着极其重要的的角色,掌握了单片机技术,就掌握了电子技术的核心,因此,各大中专院校的电气工程、机电工程、自动化专业及计算机专业等电类专业都把单片机作为一门重要专业课程来抓。然而,在现实教学过程中,单片机实验课程教学却存在着诸多的不足。很多学生反映该课程不好学,知识难记,程序难写,讲课内容不好理解等。教师也反映学生刚开始认真学,后来越来越不认真,最后布置的练习和作业都不做,学习态度不好等,由此产生教师的教和学生的学达不到平衡,教学效果不理想,教学过程偏离教学计划,达不到教学的预期培养目标。本文针对上述所存在的问题,以制作“智能小车”为整门课程的大项目,采用项目教学法将课程的各章节融入项目制作过程中,通过做项目,让学生在制作的过程中理解并掌握课程的知识点。

一、单片机实验教学的现状与不足

职业院校不同于普通高等院校,职业院校的学生更是异于普通高等院校的学生。普通高等院校的学生自学能力强,自觉性高,相反,职业院校的学生则大多自我认识不高,自学能力较差,自觉性不高,比较好动。如果在职业院校教学中采用传统的教学方法,教师在黑板前单纯讲课,或通过多媒体单纯授课,学生在下面听,即便教师讲得十分生动、精细,也许台下的学生也是无心听课,不能真正掌握好单片机技术。

一些教师采用计算机房进行授课,先讲一定的教材内容,然后通过计算机演示和示范程序,让学生按照示范程序进行练习,然后用Proteus软件或单片机系统板进行程序仿真。此种教学方法比上述传统方法好很多,但授课一段时间后却发现,学生基本上是将教师的示范程序照抄一遍,然后下载到Proteus软件或单片机系统板中,仿真成功后,接下来就是拿出手机开始玩游戏,没有继续强化知识的意识或精神。而那些打字慢或搬抄过程中存在错漏的学生,可能准备下课了都没打完字,也可能是因为中途编译错误太多,又找不出错误的地方,最后干脆就放弃,直接玩手机或睡觉。

为了避免上述现象问题的发生,提高教学质量和教学效果,我们应该根据职业院校学生的情况,制定出符合他们特点的教学方法,让他们对课程感兴趣,进而激发他们自主去学习和探索知识。

二、单片机实验教学项目教学法改革

经过多年的教学经验总结,本文对51单片机实验课采用项目教学法进行改革,主要由以下几个环节组成:

(一)兴趣入门。心理学上有一个专业的术语叫做“初次效果”,意思是初次见面的一瞬间就能决定胜败。这是对人说的,其实对教学课程也有同样的效果。如果在第一次给学生上这门单片机实验课时,做好开头,让学生从一开始就对这门课充满兴趣和期待,那么,可以说,这门课程的教学就算成功三分之一了。

对本课程第一次课的教学设计,大部分教师都是简单做自我介绍,提出课程的学习要求,然后就开始打开课本上新课。本文的设计则不同,为了做好“初次效果”,本文的第一次课没有直接上新课,而是跟学生一起看视频、交流和讨论,通过交流与讨论的形式让学生对单片机有一个感性的认识,再通过一定手段使学生对课程学习产生兴趣和欲望,然后才慢慢引入新课。具体内容如下:

1.相互认识。先由教师简单向学生做自我介绍,然后再对全班学生进行点名,认识班里的班干,简单了解班级的一些基本情况。

2.看视频。相比学习文字材料,职业院校的学生对图片、视频,甚至实物更加感兴趣,利用这一特点,教师在上课前准备好搬运机器人、足球机器人、工业生产自动焊接机器人等几个具有代表性的视频材料,通过多媒体播放给学生看,然后再向学生介绍这些智能机器人之所以能完成那么多智能控制功能,都是由我们即将学习的单片机芯片来控制,随即放出单片机芯片的相关图片。运用此种方法,通过播放视频和图片的形式,将全班学生的目光吸引到屏幕上,让学生从感官上对单片机有一个初步的认识。

3.项目实物演示。此环节是第一次课的高潮部分,教师准备好本门课程项目教学的项目实物——智能小车,用一纸箱装好,等到这一环节时将它亮相在学生面前,然后试运行给学生看,甚至让学生亲手操作智能小车,让智能小车动起来,最后现场给学生指出单片机芯片,由此激发学生对本课程学习的兴趣。

4.布置项目任务与讨论。通过以上几个步骤后,学生对单片机已经有一定的兴趣,此时,教师粗略地讲一下智能小车的大致工作原理,然后向学生宣布项目任务—— 制作一辆智能小车。教师将实现的功能和要求罗列出来,最后与学生一起讨论如何去完成这个项目,包括硬件部分如何制作,需要用什么电路模块,最后如何去编写程序等,拟出一个大体的方案,调动学生的积极性,激发学生求知欲。

5.材料准备。做完项目布置和讨论环节后,最后一环节就是材料准备的布置,要求学生列出自己项目所需要的材料,然后用一周的时间去准备,材料可以自己制作,也可以购买现成模块,这样,学生有事可做后,也不会再觉得课程枯燥无味,相应地学习兴趣也就提高了。

(二)硬件制作。通过前期学生的材料准备后,接下来就进入硬件的制作过程。

教师将学生带到实验室,通过分小组的形式进行硬件的制作指导。首先对全班学生提出总的制作要求和注意事项,然后将全班学生分成若干个小组,再召集各组的组长进行硬件的制作指导。比如,教师亲自动手示范指导组长们如何装配智能小车的底盘,如何安装驱动电机和轮子,如何安装电路板及相应控制电路模块等,然后再由各组长对本组的组员进行指导和装配示范,组员们按照组长的装配方法进行装配。同时,教师巡视课堂,了解每个组的制作情况和进度,对有问题或装不对的学生进行指导和提醒,最终完成项目的硬件装配与制作过程。

(三)简单驱动。项目的硬件制作完成以后,教师组织学生带上课本和智能小车进入单片机仿真实验室(或计算机机房),对硬件的相应部件进行功能测试以及程序的编写和仿真,完成一些简单功能的驱动任务。

首先驱动智能小车的运动部件,即驱动电机带动轮子转动。在驱动之前,先给学生设一个疑问:如何让轮子转进来?引发学生对本任务的思考。然后对硬件的电路及原理进行简单的讲解,引出单片机的IO口控制知识,并提示学生翻到课本的相应页码,融合课本教材相应内容进行简单的讲解。接着,教师写示范程序并下载到小车单片机中,驱动车轮转起来,再让学生按此方法进行程序的编写和驱动。

学生驱动得电机让小车跑起来后,学习兴趣肯定大大提高,场面也会很热闹。此时,教师又提出探索性任务,提示学生如何驱动LED指示灯亮起来,又如何实现灯闪铄,以及蜂鸣器的驱动等。通过完成这类小任务,学生去探索和驱动其他的一些电路,达到知识拓展的目的,同时也完成单片机IO口的简单驱动任务。

(四)功能完善。通过以上的方法驱动简单电路后,学生对单片机IO口的编程和控制已经有了一定的认识和掌握,接下来就可以引导学生一步一步地将一些功能电路模块综合起来驱动,实现从简单到复杂的智能控制过程。

比如,引导学生运用红外光电传感器来识别路面的黑线,再控制小车的运动情况,如当小车没检测到黑线时,小车一直向前行进;当检测到黑线时,小车停止前进。学生完成此任务后,教师又提出深一点要求,如当小车没检测到黑线时,小车一直向前行进;当检测到黑线时,小车转弯或调头行进等,实现综合性控制功能。

当学生掌握这些较简单的综合控制功能的编程和控制方法后,再往知识较深、程序较难、单片机功能更强的内容去学,比如超声波避障功能、液晶显示功能、定时器使用等,引导学生一步一步地、从简单到复杂地学习,最终完成智能小车所有功能的实现,从而完成本课程主要内容的授课与学习。

(五)考核评比。本课程的最后几次课是项目完成情况的考核评比与总结。当学生把课程项目的所有功能都完成后,安排一个时间对全班学生制作的项目进行演示和考核评比。在教室的讲台做一个演示台,让每个学生将自己的项目作品拿到演示台上,在全班同学面前展示和演示自己做的项目作品,看看所能实现的功能与开学初的计划是否一致,再简单讲解作品的工作原理和制作方法,最后,教师再对作品的结果进行点评和总结。

通过演示作品和教师的点评总结,学生不但收获了学习成功的喜悦,也认识了自己的一些缺陷和不足,进而努力去弥补和更正。同时,教师也能从这个环节中了解到学生学习的掌握情况和教学上存在的不足,进而对下一节课程进行完善和改进。

三、实验教学改革效果分析

51单片机实验课项目教学法的教学改革,打破了传统理论教学和单纯Proteus软件或单片机系统板仿真教学的缺陷,将整门课程改成项目作品的制作,再将课程内容知识融入项目的制作过程中,让学生既学会了课本知识,又掌握了知识的实际运用,达到理论与实践相结合的教学目的。

通过多年的尝试发现,改革后的单片机实验教学,教师的教学过程轻松了很多,对学生的指导时间多了很多,学生学习的兴趣和积极性更是大幅度地提高,课上睡觉或玩手机的学生大幅度地减少,更多学生将时间和精力投入到了项目的制作过程中,碰到问题时,学生也懂得借助网络进行相关资料的查找,学会了知识的探索,最后在毕业设计中,单片机项目的论文尤其是单片机毕业作品都明显多了很多。

综上,以制作“智能小车”为整门课程的大项目,采用项目教学法将课程的各章节融入项目制作过程中,通过学生亲自动手做项目的形式,培养学生对本课程的学习兴趣,提高学生的学习的积极性和主动性,引导学生将理论知识应用到实践中,增强学生的技能水平和实际应用能力,达到理论与实践相结合的目的。经过多年的教学实践证明,改革后的项目教学法不但提高了教育教学质量和教学效果,而且学生学习的兴趣了大为提高,实际动手能力也增强了。

【参考文献】

[1]赵永熹,黄云峰.基于项目驱动法的单片机课程体系建设[J].中国电力教育,2013(4)

[2]谢宏霖.基于“项目驱动法”的单片机类课程教学探索[J].电脑知识与技术,2012(30)

[3]杜志强.机械类专业“单片机原理及应用”课程教学探索与实践[J].理工高教研究,2010(3)

【作者简介】梁 飘(1984— ),男,壮族,广西靖西人,广西大学在读研究生,广西理工职业技术学院助理讲师,专职教师兼实验员。

篇5:51单片机综合实验报告

姓名 吴凯

实验室 S2312

课程 单片机原理与应用

试验项目编号

专业 电子与电子信息工程班级10电专(2)学号 1060710057同组人/组号/指导老师肖鹏程日期成绩试验项目名称单片机定时器的综合应用

一、实验目的1.进一步熟悉Keil uVision2软件的应用;

2.进一步熟悉Proteus7.8软件的应用;

3.掌握单片机软件延时和定时器的使用方法;

4.掌握用C语言编写方波发生器和彩灯控制器的方法。

二、实验环境

1.微机一台;

2.Proteus7.8电路设计和仿真软件;

3.Keil uVision2编译和调试软件;

三、实验原理

图1是单片机实现1KHz方波发生器的电路原理图,P00接示波器,时钟电路接在单片机的DIP18、DIP19,复位电路接在单片机的DIP9,DIP31接Vcc。注意:所有元器件要按实物重新封装。

用C语言编写程序,使该电路的功能为,上电后示波器显示1KHz的方波。当示波器显示的方波频率不是1KHz时,修改程序,使示波器显示标准的1KHz方波。

图1单片机输出控制电路原理图

C语言1KHz方波发生器的程序

图2是单片机实现彩灯控制器的电路原理图,P00接8只LED,时钟电路接在单片机的DIP18、DIP19,复位电路接在单片机的DIP9,DIP31接Vcc。注意:所有元器件要按实物重新封装。

用C语言编写程序,使该电路的功能为,上电后8只LED灯显示彩灯滚动效果。修改程序,使彩灯显示效果发生变化。

图2彩灯控制器电路原理图

C语言彩灯控制器的程序

四、实验步骤

1.在Proteus ISIS环境下设计一个用单片机产生1KHz方波发生器的电路原理图,P00接示波器,时钟电路接在单片机的DIP18、DIP19,复位电路接在单片机的DIP9,DIP31接Vcc。

2.在Keil uVision2环境下,用C语言编写单片机实现1KHz方波发生器的程序,编译生成hex文件。

3.将生成的hex文件加载到单片机,运行仿真,观察现象,记录结果;

4.在Proteus ISIS环境下设计一个用单片机产生彩灯控制器的电路原理图,P0接8只LED灯,时钟电路接在单片机的DIP18、DIP19,复位电路接在单片机的DIP9,DIP31接Vcc。

5.在Keil uVision2环境下,用C语言编写单片机实现彩灯控制器的程序,编译生成hex文件。

6.将生成的hex文件加载到单片机,运行仿真,观察现象,记录结果;

五、实验记录与处理

1.单片机产生1KHz方波发生器的实验结果

图3为1KHz方波发生器的仿真图。

图3 1KHz方波发生器仿真图

当延时常数为(),方波频率为(当延时常数为(),方波频率为(数据处理:从以上数据我们可以看出,2.彩灯控制器的仿真结果

数据处理:从以上数据我们可以看出,。))

六、思考题

1.简述单片机定时的几种方法?每种方法举例具体说明。答:

2.与单片机的定时器有关的SFR有几个?每个SFR具体说明。答:

七、实验小结

篇6:51单片机实训报告

为期一周的单片机实习已经结束了。通过此次实训,让我们掌握了单片机基本原理的基础、单片机的编程知识以及初步掌握单片机应用系统开发实用技术,了解“51”单片机精简开发板的焊接方法。同时培养我们理论与实践相结合的能力,提高分析问题和解决问题的能力,增强学生独立工作能力;培养了我们团结合作、共同探讨、共同前进的精神与严谨的科学作风。

此次实训主要有以下几个方面:

一、实训目的

1.了解“51”精简开发板的工作原理及其结构。2.了解复杂电子产品生产制造的全过程。

3.熟练掌握电子元器件的焊接方法及技巧,训练动手能力,培养工程实践概念。4.能运用51单片机进行简单的单片机应用系统的硬件设计。5.掌握单片机应用系统的硬件、软件调试方法

二、实验原理

流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的硬件组成的单个单片机。

它的电气性能指标:输入电压:DC4.5~6V,典型值为5V。可用干电池组供电,也可用直流稳压电源供电。如图所示:

本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的硬件组成的单个单片机。

三、硬件组成

1、晶振电路部分

单片机系统正常工作的保证,如果振荡器不起振,系统将会不能工作;假如振荡器运行不规律,系统执行程序的时候就会出现时间上的误差,这在通信中会体现的很明显:电路将无法通信。他是由一个晶振和两个瓷片电容组成的,x1和x2分别接单片机的x1和x2,晶振的瓷片电容是没有正负的,注意两个瓷片电容相连的那端一定要接地。

2、复位端、复位电路

给单片机一个复位信号(一个一定时间的低电平)使程序从头开始执行;一般有两中复位方式:上电复位,在系统一上电时利用电容两端电压不能突变的原理给系统一个短时的低电平;手动复位,同过按钮接通低电平给系统复位,时如果手按着一直不放,系统将一直复位,不能正常。当要对晶体重置时,只要对此引脚电平提升至高电平并保持两个及其周期以上的时间便能完成系统重置的各项动作,使得内部特殊功能寄存器内容均被设成已知状态。

如图所示,只要按此开关就能完成LED和开关的重置。

3、发光二极管电路

LED发光二极管依次接P1口,利用共阳极接线,只要P1口由高电平变为低电平LED灯即点亮。

四、安装、焊接及调试 ⑴安装步骤

1.检查元器件的数量、质量和规格,详细阅读硬件说明部分,并将元件对号入座,对于有极性的元器件要注意安装方向,确保一次性焊接成功。

2.先焊接低矮、耐热的元件,比如电阻,再对高一些的元件进行焊接,比如芯片座、排阻等,以此类推,最后焊接高大的元件。⑵焊接部分

1.检查印刷电路裸板电源正负端、各相邻焊点是否短路。

2.检测元器件质量,电容、接插件是否短路,按键通断状态是否正确。3.集成电路一定焊接插座,确定好插座空间安装位置。4.焊接时特别要注意锡不能太多,否则易发生焊点短路。5.电烙铁焊接时间不要过长,以免烫坏焊点。⑶调试部分 1.硬件调试

拿到电路板后,首先要检查加工质量,并确保没有任何方面的错误,如短路和断路,尤其要避免电源短路;元器件在安装前要逐一检查,用万用表测其数值,看是否与所用相同;完成焊接后,应先空载上电(芯片座上不插芯片),并检查各引脚的电位是否正确。若一切正常,方可在断电的情况下将芯片插入,再次检查各引脚的电位及其逻辑关系。将万用表的探针放到单片机接电源的引脚上检测一下,看是否符合要求。

进行串口测试。接上单片机电源和串口线,打开电源开关,电源指示灯D0亮,使用STC89C系列单片机,其本身自带了一个测试程序,上电之后D1~D8便会两个两个的灯亮的闪烁。或者自己下载一个程序,如果串口正常,如不成功,就应该好好检查焊点及串口线。2.流水灯程序调试

将电路板串口连接电脑,把程序烧入STC89C52系统。用USB接口连接电脑,为单片机提供电源。电源接入口,程序开始运行。LED灯开始轮流闪烁,闪烁间隔大概为0.5S。点击复位电路,单片机复位,LED灯从第一盏灯开始又循环亮起。3.C语言程序 #include #include void delay(unsigned int d){while(--d>0);} void main(){ unsigned char i,LED;while(1){LED=0x7f;for(i=7;i>=0;i--){P1=LED;delay(50000);LED=_cror_(LED,1);}}} 在电路调试过程中也许会碰到以下一些故障:

1.接好电池盒,电源这是灯不亮。这些是因为电源插座存在虚焊现象,接触不良。遇到这种情况的时候应该及时检查和修复虚焊点。

2.出现不能正常下载程序。这是因为电路板电源没有正常接通或者下载线焊接组装有误、电池电压低、芯片MAX232不正常工作或管脚虚焊。应该去检查电源是否正常接通,并且更正正确。

3.下载程序不能正常完成流水灯功能。这是因为电池电压低或者发光二极管损坏或者管脚虚焊、电阻R1开路或管脚虚焊。解决这样的方法是更换电池或者修复焊点。

五、结论

通过这次实习让我们可以在实践中检验我们所学的单片机知识,更好的融会贯通,并在实践中发现问题,解决问题。这次设计的流水灯由于比较简单,遇到的问题都不是很困难,我们通过互相之间的交流、查阅书籍以及通过互联网所搜所需的资料都能够比较好的解决。

这次所调试的流水灯系统缺点是程序输入采用串口输入,烧入程序比较复杂。电路比较简单,所实现的功能只有流水灯,时间闪烁的控制需要修改程序才能实现。如果需要改进的,可以增加一个时间设置来设这流水灯的闪烁时间,或者通过流水灯排列的形状不同可以做成花样流水灯。

下图为本次实训结果展示图:

电路板焊接图

电路板实现流水灯图

上一篇:700字的精品作文下一篇:大学生团员批评与自我批评范文