单片机实验报告

发布时间:2020-05-09 07:30:05   来源:文档文库   
字号:

本科生实验报告

实验课程 单片机原理及应用

学院名称 核技术与自动化工程学院

专业名称 电气工程及其自动化

学生姓名

学生学号

指导教师 任家富

实验地点 6C902

实验成绩

〇一五月 二〇一五

单片机最小系统设计及应用

摘要

目前,单片机以其高可靠性,在工业控制系统、数据采集系统、智能化仪器仪表等领域得到极其广泛的应用。因此对于在校的大学生熟练的掌握和使用单片机是具有深远的意义。通过本次课程设计掌握单片机硬件和软件方面的知识,更深入的了解单片机的实际应用,本次设计课程采用STC89C52单片机和ADC0804LED显示,键盘,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单片机集成开发环境应用

2.1.1实验目的

1、集成开发环境Keil介绍及开发流程

1)建立您的第一个项目

点击Project 菜单,选择弹出的下拉式菜单中的New Project,如图12。接着弹出一个标准Windows 文件对话窗口,如图13,用法技巧也不是这里要说的,以后的章节中出现类似情况将不再说明。在文件名中输入您的第一个C 程序项目名称,这里我们用“test”,这是笔者惯用的名称,大家不必照搬就是了,只要符合Windows 文件规则的文件名都行。保存后的文件扩展名为uv2,这是KEIL uVision2 项目文件扩展名,以后我们可以直接点击此文件以打开先前做的项目。

2)选择所要的单片机

选择所要的单片机,这里我们选择常用的Ateml 公司的AT89C51。此时屏幕如图1-4 所示。AT89C51 有什么功能、特点呢?请看图中右边有简单的介绍,是英文的。稍后的章节会作较详细的介绍。完成上面步骤后,我们就可以进行程序的编写了。

3)在项目中创建新的程序文件或加入已经存在的程序文件

首先我们要在项目中创建新的程序文件或加入已经存在的程序文件。如果您没有现成的程序,那么就要新建一个程序文件。在KEIL中有一些程序的Demo,在这里我们还是以一个C程序为例介绍如何新建一个C程序和如何加到您的第一个项目中吧。点击新建文件的快捷按钮,在2中出现一个新的文字编辑窗口。

4)如果没有已经存在的程序文件,新建、保存

点击图15 中的3 保存新建的程序,也可以用菜单FileSave 或快捷键CTRL+S进行保存。因是新文件所以保存时会弹出类似图13 的文件操作窗口,我们把第一个程序命名为test1.c,保存在项目所在的目录中,这时您会发现程序单词有了不同的颜色,说明KEIL C语法检查生效了。如图16 鼠标在屏幕左边的Source Group1 文件夹图标上右击弹出菜单,在这里可以做在项目中增加减少文件等操作。我们选“ Add File to Group ‘Source Group 1’”弹出文件窗口,选择刚刚保存的文件,按ADD 按钮,关闭文件窗,程序文件已加到项目中了。这时在Source Group1 文件夹图标左边出现了一个小+号说明,文件组中有了文件,点击它可以展开查看。

5)编译调试

C程序文件已被我们加到了项目中了,下面就剩下编译运行了。这个项目我们只是用做学习新建程序项目和编译运行仿真的基本方法,所以使用软件默认的编译设置,它不会生成用于芯片烧写的HEX文件。要生成用于芯片烧写的HEX文件,应进行如下设置:在Creat HEX File前打选择。

如果先前编译过一次之后文件没有做动编辑改动,这时再点击是不会再次重新编译的。3是重新编译,每点击一次均会再次编译链接一次,不管程序是否有改动。在3右边的是停止编译按钮,只有点击了前三个中的任一个,停止按钮才会生效。5是菜单中的它们,我个人就不习惯用它了。嘿嘿,这个项目只有一个文件,您按1.2.3中的一个都可以编译。在4 中可以看到编译的错误信息和使用的系统资源情况等,以后我们就依靠它来进行查错。6 是有一个小放大镜的按钮,这就是开启\关闭调试模式的按钮,它也存在于菜单DebugStart\Stop Debug Session,快捷键为Ctrl+F5

6)调试 、生成HEX文件

进入调试模式,软件窗口样式大致如图1-8 所示。图中1 为运行,当程序处于停止状态时才有效,2 为停止,程序处于运行状态时才有效。3 是复位,模拟芯片的复位,程序回到最开头处执行。

3、下载到单片机的内部运行

1)用KEIL生成的HEX文件

步骤:

①点击Project 菜单,选择弹出的下拉式菜单中的New Project。

②选择所要的单片机,如选择常用的Ateml 公司的AT89C51。

③在项目中创建新的程序文件或加入已经存在的程序文件。

④如果没有已经存在的程序文件,新建、保存。

⑤编译

⑥调试 、生成HEX文件

2)下载

本实验板提供ISP方式的下载,将KEIL生成的HEX文件下载到单片机的内部flash。连接计算机串口和单片机的串口下载。注意:单片机的P1.0 P1.6 P1.1不能被短接。

3)ISP下载方法

使用STC-ISP软件,操作方法见前面。

ISP下载步骤:

①选择器件

②装载HEX文件

③下载程序

4)运行

将KEIL生成的HEX文件下载到单片机的内部flash后,即可自动运行单片机的内部的程序

2.1.2实验内容

照实验内容开始进行实验,熟悉Keil软件的使用,自行建立工程,并新建一个文件(汇编文件为.ASM扩展名,C文件为.C扩展名),编写自己的程序,再把此文件添加到工程当中,最后进行编译,如果没有错误,则进行在线软件的仿真调试。仿真调试分为两种:软件仿真和硬件仿真,前者不使用仿真器,后者使用硬件仿真器。

本实验箱提供ISP方式的下载,将KEIL生成的HEX文件下载到单片机的内部flash,重复此部分内容,直到熟练掌握开发环境的使用。

2.1.3实验程序

1、汇编程序:

ORG 0000H

SJMP  START

ORG  0030H

START:MOV P1,#00000010B ;将P1.0与P1.1分别置低电平、高电平

NOP ;空指令,不执行任何操作

NOP

NOP

LJMP  START ;跳转到STA

END ;程序结束

2、C程序:

附:关于此程序的C51实现

#include

#include

void main()

{

while(1)

{

P1 = 0x02; //置位P1.1,清零P1.0

}

}

2.1.4 实验结果及分析

点亮了第二个发光二极管,P1^0-P1^8分别控制八个发光二极管,0x02表示点亮第二个发光二极管。

将程序下载到单片机内运行结果正确。

2.1.5 收获及思考题回答

1,如果二极管的阴、阳极插反,怎么改进程序,使之发光?

P1 = 0x02改为P1 = 0xf即可。

2,用软件延时的办法实现指示灯的闪烁。

添加一个延时程序即可,例如延时0.2ms

MOV R6,#200

LOOP1: MOV R7,#248

NOP

LOOP2: DJNZ R7,LOOP2

DJNZ R6,LOOP1

RET

END

本次实验学会了使用KEIl软件编写程序,并用下载器将程序下载到单片机当中运行。

2.2单片机I/O口实验

2.2.1实验目的

1、熟悉单片机I/O口的特点

2、掌握单片机I/O口的编程

2.2.2实验内容

1、 P1口交通灯程序编写(调试时连接JP3的8个跳线)

2、 蜂鸣器发声程序

2.2.3 实验程序

1、蜂鸣器程序:

ORG 0000H

LJMP MAIN

MAIN: SETB P1.2

LCALL DELAY

CLR P1.2

LCALL DELAY

SJMP MAIN

DELAY: MOV R7,#255

D1: MOV R6,#255

D2: DJNZ R6,D2

DJNZ R7,D1

RET

END

2、流水灯:

ORG 0000H

AJMP MAIN

ORG 0030H

MAIN: MOV DPTR,#2000H

MOV @R0,#0FEH

MOV A,@R0

MOVX @DPTR,A

ACALL DELAY ;延时

MOV R3,#07H ;设置左移7

LOOP: RL A ;左移一位

MOVX @DPTR,A

ACALL DELAY ;延时

DJNZ R3,LOOP ;R3是否为0不为0LOOP继续执行

AJMP MAIN ;返回主程循环执

DELAY: MOV R7,#255 ;延时子程序

D1: MOV R6,#255

D2: DJNZ R6,D2

DJNZ R7,D1

RET ;子程序返回

END

2.2.4 实验结果及分析

调试时连接JP3的8个跳线。

编译正确,P1.2给低电平蜂鸣器就会发声音。流水灯关键在于循环。

2.2.5 收获及思考题回答

C51实现流水灯和蜂鸣器

#include

#include

unsigned char a,b,k,j;

sbit beep=P2^3;

void delay10ms()

{

for(a=100;a>0;a--)

for(b=225;b>0;b--);

}

void main()

{

k=0xfe;

while(1)

{

delay10ms();

beep=0;

delay10ms();

beep=1;

j=_crol_(k,1);

k=j;

P1=j;

}

}

对蜂鸣器有了一定了解,在用C语言编写程序是学会了新命令_crol_(a,b)

2.3定时器中断

2.3.1实验目的

1、熟悉单片机中断的概念;

2、熟悉单片机内部定时器的硬件结构;

3、掌握单片机定时器的编程;

4、掌握单片机的时序及锁存器的使用;

5、掌握用定时器实现交通灯和流水灯显示.

2.3.2实验内容

1、中断是指CPU正在处理某些事务的时候,外部又发生了某一事件,请求CPU及时处理。于是,CPU暂时中断当前的工作,转而处理所发生的事件。处理完毕,再回到原来被中断的地方,继续原来的工作。这样的过程,称为中断。下图分别为中断方式流程和嵌套流程。

2、单片机共有5个中断源,两个优先级,并可以实现两级中断嵌套。

图4-4 中断系统结构

MCS-51单片机响应中断有四个条件:

中断源有请求;

寄存器IE的总允许位EA=1,且IE相应的中断允许位为1

无同级或高级中断正在服务;

现行指令执行完最后一个机器周期。

3,单片机有两个16位的硬件定时器/计数器,分别称为Timer0和Timer1。每个定时器都有四种工作方式,称为方式0、方式1、方式2和方式3。工作方式有软件控制。其结构图如下。

图4-5 定时器/计数器结构

单片机的定时器/计数器都统称为定时器,是为定时器是对机器周期进行计数,而计数器是对外部的脉冲进行计数。通常情况下,都称为定时器。

定时器的四种工作方式是由软件来控制的,如下表所示,定时器工作方式寄存器TMOD中的M0、M1两为决定了它的工作方式。

M1 M0

工作方式

说 明

0 0

方式0

13位计数器

0 1

方式1

16位计数器

1 0

方式2

自动再装入8位计数器

1 1

方式3

定时器0:分为两个8位计数器

定时器1:对外部停止计数

表4-1 定时器的四种工作方式

4、使用单片机的定时器T0产生100ms的定时信号,使实验仪主板上的流水灯(8只红色发光二极管)依次发光,并循环。

设此时系统的时钟频率为6MHz,再根据它来决定定时器T0的初始值。由于时钟频率为6MHZ,所以,机器周期为2µs。初始值计算有以下公式的出,t=216-T0初值)×机器周期,就可以计算出初始值,公式是依据定时器的工作原理的出的,51单片机的定时器是加法计数的,即由有一个数开始,每一个机器周期加一,直至溢出。

5、实验主板上的8只红色发光二极管的亮/灭是由8位锁存器74HC573进行锁存。电路如下图。

由图可以看出,锁存器是挂在系统总线上的,有外部地址进行统一编址,是外部地址64K地址空间的一部分。74HC573的锁存信号有译码电路产生,又因为573在控制端C引脚为高电平时,数据通道打开,从高变到低时,数据被锁存,所以,C端门控信号是由74HC138译码器的输出端(译码地址:2000H)在加一个反相器得到的。

2.3..3 实验程序

程序设计:由系统总线扩展I/O口,实现流水灯的程序设计

ORG 0000H

AJMP MAIN

ORG 0030H

MAIN: MOV DPTR,#2000H

MOV @R0,#0FEH

MOV A,@R0

MOVX @DPTR,A

ACALL DELAY ;延时

MOV R3,#07H ;设置左移7次

LOOP: RL A ;左移一位

MOVX @DPTR,A

ACALL DELAY ;延时

DJNZ R3,LOOP ;R3是否为0,不为0转LOOP继续执行

AJMP MAIN ;返回主程循环执

DELAY: MOV R7,#255 ;延时子程序

D1: MOV R6,#255

D2: DJNZ R6,D2

DJNZ R7,D1

RET ;子程序返回

END ;程序结束

给出定时器的中断服务程序,同学可以进行修改,形成由中断完成的流水灯程序设计。

ORG 0000H

LJMP MAIN

ORG 000BH

LJMP TIME

MAIN:

MOV TH0,#0D8H

MOV TL0,#0A0H

MOV TMOD,#01H;定时器工作方式1

SETB ET0 ;开定时中断

SETB EA ;开总中断

SETB TR0;定时器开始计时

中断服务程序:

TIME:

MOV TH0,#0D8H

MOV TL0,#0A0H

RETI

2.3.4 实验结果及分析

中断中断源有请求;

寄存器IE的总允许位EA=1,且IE相应的中断允许位为1

无同级或高级中断正在服务;

中断初始化:

1,确定工作方式,对TMOD寄存器进行赋值

2,计算计数初值

3,置位ETx允许定时器中断

4,置位EA开总中断

5,置位TRx启动定时器工作

2.3.5 收获及思考题回答

1,用C51采用定时器延时设计流水灯实验,让流水灯依次点亮或熄灭程序

#include

#include

#define uint unsigned int

#define uchar unsigned char

sbit P1_0=P1^0;

uchar tt,a;

void main()

{

a=0xfe;

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TR0=1;

while(1);

}

void timer0() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

tt++;

if(tt==20)

{

tt=0;

P1=_crol_(a,1);

}

}

这次实验掌握了定时器的结构和使用,学会了如何使用定时器精确定时。

2.4通信实验

2.4.1实验目的

1、熟悉单片机通信的原理;

2、熟悉MCS-51单片机UART四种工作方式;

3、掌握UART的编程方法

2.4.2实验内容

1、串行通信基本知识

在MCS-51单片机内部,有一个通用异步接收/发送器(UART)。这是一个全双工串行接口,能同时进行发送和接收数据。利用这个串行接口,可以实现单片机之间的单机通信、多机通信,以及与PC机之间的通信。

通信方式种类:一种是并行通信,一种是串行通信。

串行通信的三种方式:单工通信、半双工通信和全双工通信。

同步技术分为:异步通信、同步通信,它们之间的不同点可以参考相关参考书目。

异步通信的一般数据格式为:

图7-1 异步通信的一帧数据格式

同步通信的数据格式为:

图6-1 同步通信的数据格式

2、MCS-51单片机的通用串行口结构

MCS-51有一个可编程的全双工串行通信接口,可作为通用异步接收/发送器UART,也可作为同步移位寄存器。它的帧格式有8位、10位和11位,可以设置为固定波特率和可变波特率。串口的工作方式主要有SCON和PCON两个寄存器来决定。

SCON的最高两位SM0、SM1表示串行口工作方式控制位,两位对应四种工作方式,如表7-1所示(fosc是晶振频率)。

PCON的最高位SMOD是波特率倍增位。串行口工作在方式1、方式2、方式3时,若SMOD=1,则波特率提高一倍;若SMOD=0,则波特率不提高一倍。单片机复位时,SMOD=0

3、单片机串口的工作方式

(1)方式0的波特率

工作方式0时,移位脉冲由机器周期的第6个状态周期S6给出,每个机器周期产生一个移位脉冲,发送或接收一位数据。因此,波特率是固定的,为振荡频率的1/12,不受PCON寄存器中SMOD的影响。用公式表示为:

工作方式0的波特率=fosc/12(fosc时钟频率)

(2)方式2的波特率

工作方式2时,移位脉冲由振荡频率fosc的第二节拍P2时钟(即fosc/2)给出,所以,方式2波特率取决于PCON中的SMOD位的值,当SMOD=0时,波特率为fosc的1/64;当SMOD=1时,波特率为fosc的1/32,用公式表示为;

工作方式2波特率=(2SMOD/64)×fosc

(3)工作方式1和方式3的波特率

这两种工作方式的波特率由定时器T1的溢出率决定,波特率的数值可以参考教科书中的表。

4、实验箱统中的串行接口电路

下图为实验箱系统中的串行接口电路采用的接口芯片是MAX232。

5、串行接口接收程序

可使用串口调试助手程序来接收和发送数据

2.4.3实验程序

程序设计1:实现将计算机端发送过来的数据返回给计算机终端。

ORG 0000H

LJMP MAIN

ORG 0023H

LJMP UART

MAIN: MOV TMOD,#20H

MOV TL1,#0F3H

MOV TH1,#0F3

MOV PCON,#80H

SETB ES

MOV SCON,#50H

SETB TR1

SETB EA

SJMP $

UART: CLR ES

JNB RI,LL

MOV A,SBUF

MOV SBUF,A

SETB ES

LJMP EXIT

LL: CLR TI

SETB ES

EXIT: RETI

END

2、根据实验箱系统提供的原理图,熟悉实验提供的参考程序。完成使用UART的同步方式,实现数码管显示。

ORG 0000H

LJMP START

MTD EQU 30H ;发送缓冲区首址MTD=30H,伪指令。

START: MOV SCON,#00H ;串口中断方式0

MOV R1,#MTD ;发送缓冲器数据初始化

MOV @R1,#03H ;"0"

INC R1

MOV @R1,#9FH ;"1"

INC R1

MOV @R1,#25H ;"2"

INC R1

MOV @R1,#0DH ;"3"

INC R1

MOV @R1,#99H ;"4"

INC R1

MOV @R1,#49H ;"5"

INC R1

MOV @R1,#041H ;"6"

INC R1

MOV @R1,#1FH ;"7"

INC R1

MOV @R1,#01H ;"8"

INC R1

MOV @R1,#09H ;"9"

INC R1

MOV R2,#10 ;送发送缓冲区的代码个数

LOOP: LCALL UARTNO ;显示子程序

MOV R2,#10 ;再次送发送缓冲区的代码个数,以便循环显示

SJMP LOOP ;循环显示

UARTNO: MOV R0,#MTD ;缓冲区首址入R0

SOUT: MOV A,@R0 ;发送数据入A

MOV SBUF,A ;启动发送

CALL DELAY ;延时

WAIO: JNB TI,WAIO ;发送等待

CLR TI ;发送结束标志清0

INC R0 ;指向下一个发送数据地址

DJNZ R2,SOUT ;10个字节发送完?未完转SOUT

DELAY: MOV R7,#255 ;延时子程序

D1: MOV R6,#255

D2: DJNZ R6,D2

DJNZ R7,D1

RET ;子程序返回

END ;程序结束

2.4.4 实验结果及分析

将程序下载到单片机当中数码管显示正确,程序分析见注释。

2.4.5 收获及思考题回答

各种常见波特率及其初值

2.5LED显示设计

2.5.1实验目的

1,掌了解LED数码管的原理

2,掌握LED数码管编程

2.5.2实验内容

1.LED显示电路

2.LED译码地址

MCS-51单片机显示部分,外接4片74LS273芯片作为4位LED显示器的静态显示接口,并行输出端分别接LED显示器的各段对应的引脚上。在单片机应用系统中,显示器显示用静态显示显示。

2.5.3 实验程序

1、CLS子程序

CLS: MOV A,#0FFH

MOV DPTR,#8000H

MOVX @DPTR,A

MOV DPTR,#9000H

MOVX @DPTR,A

MOV DPTR,#0A000H

MOVX @DPTR,A

MOV DPTR,#0B000H

MOVX @DPTR,A

RET

2、DISP子程序

DISP: MOV A,70H

MOV DPTR,#8000H

MOVX @DPTR,A

MOV A,71H

MOV DPTR,#9000H

MOVX @DPTR,A

MOV A,72H

MOV DPTR,#0A000H

MOVX @DPTR,A

MOV A,73H

MOV DPTR,#0B000H

MOVX @DPTR,A

RET

3、PRINT子程序

PRINT: MOV A,70H

SUBB A,#30H

MOV DPTR,#TABLED

MOVC A,@A+DPTR

MOV DPTR,#0B000H

MOVX @DPTR,A

MOV A,71H

SUBB A,#30H

MOV DPTR,#TABLED

MOVC A,@A+DPTR

MOV DPTR,#0A000H

MOVX @DPTR,A

MOV A,72H

SUBB A,#30H

MOV DPTR,#TABLED

MOVC A,@A+DPTR

MOV DPTR,#9000H

MOVX @DPTR,A

MOV A,73H

SUBB A,#30H

MOV DPTR,#TABLED

MOVC A,@A+DPTR

MOV DPTR,#8000H

MOVX @DPTR,A

RET

TABLED: DB 0C0H,0F9H,0A4H,0B0H, 99H,92H,82H,0F8H, 80H ;0-8

DB 90H, 88H, 83H,0C6H,0A1H,86H,8EH,0FFH, 8CH ;9 A B,C,D E F P

DB 0BFH ;42

4、显示“HELL”子程序

HELL: MOV A,#89H

MOV DPTR,#0B000H

MOVX @DPTR,A

MOV A,#86H

MOV DPTR,#0A000H

MOVX @DPTR,A

MOV A,#0C7H

MOV DPTR,#9000H

MOVX @DPTR,A

MOV A,#0C7H

MOV DPTR,#8000H

MOVX @DPTR,A

RET

1、显示”P232”

LCALL SET232

MOV 70H,#41H

MOV 71H,#32H

MOV 72H,#33H

MOV 73H,#32H

LCALL PRINT

LCALL KEY

RET

2、显示”----“

MOV 70H,#42H

MOV 71H,#42H

MOV 72H,#42H

MOV 73H,#42H

LCALL PRINT

RET

2.5.4 实验结果及分析

共阳极数码管0C0H,0F9H,0A4H,0B0H, 99H,92H,82H,0F8H, 80H ,90H, 88H, 83H,0C6H,0A1H,86H,8EH,0FFH, 8CH分别表示0-F

2.5.5 收获及思考题回答

1、编写显示整型变量功能子程序

#include

#define uint unsigned int

#define uchar unsigned char

sbit dula=P2^6;

sbit wela=P2^7;

uint temp,b,s,g;

uchar code table[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

void delay(uint z);

void display(uint b,uint s,uint g);

void main()

{

temp=888;

b=temp/100;

s=temp%100/10;

g=temp%10;

while(1)

display(b,s,g);

}

void display(uint b,uint s,uint g)

{

dula=1;

P0=table[b];

dula=0;

wela=1;

P0=0xfe;

wela=0;

delay(5);

dula=1;

P0=table[s];

dula=0;

wela=1;

P0=0xfd;

wela=0;

delay(5);

dula=1;

P0=table[g];

dula=0;

wela=1;

P0=0xfb;

wela=0;

delay(5);

}

void delay(uint z)

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

本次实验学会了如何在数码管上显示各种不同的字母符号的编程。

第3章 实验总结

万事开头难,要勇敢的迈出第一步,不要总找借口说没有学习过就总推脱。凡事都有第一步可以先可简单的来,然后可以逐步的向深层次学习。可以从建项目开始,然后可以找一个简单的小程序先把它敲进单片机内他运行起来,感觉一下单片机的运行,让自己了解单片机整个运行。程序不要只是看别人得,一定要自己写过才是自己的。开始不懂可以参考别人的,看看每一句代表着什么意思,能够实现什么现象。明白之后自己再重新写一遍,你会发现看别人的能懂到自己写的时候很困难。当你自己能写出来的时候说明你真懂了。

单片机并不象传统的数字电路或模拟电路那样比较直观,原因是除了“硬件”之外还存在一个“软件”的因素。正是这个“软件”的原因使得许多初学者怎么也弄不懂单片机的工作过程,怎么也不明白为什么将几个数送来送去就能让数码管显示一串字符或控制一个电机的变速。对初学单片机的人来说,需要从书中大概了解一下单片机的各个功能寄存器,如果看的多了反而容易搞乱,现在市场上大多数讲单片机的书一开始就讲解较复杂的内存、地址、存储器什么的,更让初学者感到不知所云、难以入门。学习单片机的最有效方法是理论与实践并重。学习与实践结合,边学习、边演练,循序渐进,这样举一反三,就能将用到的指令理解、吃透、扎根于脑海,甚至“根深蒂固”。也就是说,当你此次学习完某几条指令后(一次数量不求多,只求懂),接下去就该做实验了,通过实验,使你感受刚才的指令产生的控制效果,眼睛看得见(灯光)、耳朵听得到(声音),通过这些感性认识就能深刻理解指令是怎样转化成信号去控制电子元器件的。

除了对此次设计的准备工作之外,我们还学到了很多平时难得的东西,首先是团队协作,在这次设计当中,难免和同学产生观点和意见的分歧,以及分工明细、时间安排等不合理,通过这次设计,我们体会到了团结合作的重要性及力量之强大,还有让我们处理事情更加有条理,思路更加清晰明了了。为以后的职业生涯奠定了坚实的基础。

本文来源:https://www.2haoxitong.net/k/doc/aa6de34abcd5b9f3f90f76c66137ee06eff94e90.html

《单片机实验报告.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式