单片机实验讲稿5课时Word文件下载.docx

上传人:b****1 文档编号:15310434 上传时间:2022-10-29 格式:DOCX 页数:33 大小:991.36KB
下载 相关 举报
单片机实验讲稿5课时Word文件下载.docx_第1页
第1页 / 共33页
单片机实验讲稿5课时Word文件下载.docx_第2页
第2页 / 共33页
单片机实验讲稿5课时Word文件下载.docx_第3页
第3页 / 共33页
单片机实验讲稿5课时Word文件下载.docx_第4页
第4页 / 共33页
单片机实验讲稿5课时Word文件下载.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

单片机实验讲稿5课时Word文件下载.docx

《单片机实验讲稿5课时Word文件下载.docx》由会员分享,可在线阅读,更多相关《单片机实验讲稿5课时Word文件下载.docx(33页珍藏版)》请在冰豆网上搜索。

单片机实验讲稿5课时Word文件下载.docx

(3)选择要使用的仿真头和要进行仿真的单片机芯片的型号;

(4)选择编译器:

单击“仿真器”菜单或工具按钮→选择“仿真器设置”选项→“语言”标签→选中“伟福汇编器”;

(5)输入需要仿真的程序进行调试:

1)强调:

输入程序和指令的格式要求、标点符号的要求、保存程序的方法(.asm或.C)。

标签和断点的设置与取消;

2)标签和断点的查看(应用);

3)标签和断点的设置与取消;

4)标签和断点的查看(应用);

5)存储单元窗口的显示与查看,包括REG、SFR、DATA和XDATA、CODE窗口等

6)端口窗口的显示与查看;

7)定时/计数器初值与初始化程序的设置;

8)程序的几种模拟运行方式的区别;

9)根据程序运行后各存储单元和运行结果的指示进行调试。

实验二汇编程序仿真调试

掌握应用WAVE软件进行单片机汇编语言的编程和编译,对语法错误的修改,对程序运行结果的跟踪等,从而在没有硬件系统的情况下,实现对所编程序的调试。

1、以下程序实现了把片内RAM2000H开始的10个单元中的内容送到片内RAM地址从30H开始的10个单元中。

MOVDPTR,#2000H

MOVR0,#30H

START:

MOVXA,@DPTR

MOV@R0,A

INCDPTR

INCR0

CJNER0,#3AH,START

RET

打开编辑窗口,输入源程序,按“*.asm”格式保存文件。

2、调试以上程序,通过CPU窗口观测程序的执行情况,通过存储器窗口观察并分析片外和片内RAM中各涉及到的存储器单元中的数据变化情况。

实验三按键输入与LED指示灯控制

1)熟悉单片机对按键的控制原理,掌握通过单片机对按键信号的读取与识别;

2)掌握根据按键状态控制LED指示灯的两灭。

二、实验内容

如图1所示,监视开关K1(接在P3.0端口上),用发光二极管L1(接在单片机P1.0端口上)显示开关状态,如果开关合上,L1亮,开关打开,L1熄灭,实现模拟开关灯显示。

1、电路原理图

图1

2、程序设计内容

(1)开关状态的检测过程

单片机对开关状态的检测相对于单片机来说,是从单片机的P3.0端口输入信号,而输入的信号只有高电平和低电平两种,当拨开开关K1拨上去,即输入高电平,相当开关断开,当拨动开关K1拨下去,即输入低电平,相当开关闭合。

单片机可以采用JB BIT,REL或者是JNB BIT,REL指令来完成对开关状态的检测即可。

(2)输出控制

如图1所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管的单向导电性可知,这时发光二极管L1熄灭;

当P1.0端口输出低电平,即P1.0=0时,发光二极管L1亮;

我们可以使用SETB P1.0指令使P1.0端口输出高电平,使用CLR P1.0指令使P1.0端口输出低电平。

(3)程序框图

图2

三、参考源程序

ORG00H

JBP3.0,LIG

CLRP1.0

SJMPSTART

LIG:

SETBP1.0

END

实验四LED的定时中断控制

一、实验目的

1学习内部定时/计数器的使用

2学习定时中断处理程序的编程方法

P1口作为输出口,接发光二极管,编写相应的程序使发光二极管点亮。

发光二极管亮灭的时间间隔可以由定时中断子程序进行控制。

要求0.5S中亮一个。

#include"

reg51.h"

intrins.h"

#defineucharunsignedchar

#defineuintunsignedint

uintnum=4;

ucharXX=0x01;

voidtimer0()interrupt1

{

num--;

TH0=0x0B;

TL0=0xDC;

//重新设置初值

if(num==0)

{

XX=_crol_(XX,1);

//或者是XX=XX<

<

1

num=4;

}

}

voidmain()

TMOD=0x01;

//setmodelone

//设置初值

EA=1;

//总中断允许

ET0=1;

//定时中断允许

TR0=1;

//定时开始

for(;

;

P1=XX;

//计时溢出时,退出循环,跳到中断子程序

实验五A/D、D/A转换实验

通过实验进一步学习AD、D/A转换芯片的基本原理以及在单片机系统中扩展AD、D/A转换器的方法,掌握AD、D/A转换芯片的性能及编程。

2、实验内容

1.PCF8591介绍

PCF8591是一个单片集成、单独供电、低功耗、8-bitCMOS数据获取器件。

PCF8591具有4个模拟输入、1个模拟输出和1个串行I2C总线接口。

PCF8591的3个地址引脚A0,A1和A2可用于硬件地址编程,允许在同个I2C总线上接入8个PCF8591器件,而无需额外的硬件。

在PCF8591器件上输入输出的地址、控制和数据信号都是通过双线双向I2C总线以串行的方式进行传输。

引脚

引脚序号

引脚功能

AIN0

模拟量输入方式

AIN1

AIN2

AIN3

A0

模拟通道选择

A1

A2

VSS

负电源电压

SDA

数据信号

SCL

10

时钟信号

OSC

11

振荡器

EXT

12

振荡器输入的外部内部转换

AGND

13

模拟接地端

Vref

14

输入的参考电压

AOUT

15

模拟量输出

Vdd

16

正的电源电压

2.内容:

通过改变学习板上的2个电位器对应的2段模拟输入,实现模拟输入,观察数码管的数字变化情况。

通过改D[4]的值,实现模拟输出,观察学习板上DA处LED的亮度变化。

3、参考源程序

1.main

#include<

reg52.h>

#include<

I2C.H>

#definePCF85910x90//PCF8591地址

//elseIO

sbitLS138A=P2^2;

sbitLS138B=P2^3;

sbitLS138C=P2^4;

//此表为LED的字模,共阴数码管0-9-

unsignedcharcodeDisp_Tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

unsignedcharAD_CHANNEL;

unsignedlongxdataLedOut[8];

unsignedintD[32];

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

DAC变换,转化函数

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

bitDACconversion(unsignedcharsla,unsignedcharc,unsignedcharVal)

Start_I2c();

//启动总线

SendByte(sla);

//发送器件地址

if(ack==0)return(0);

SendByte(c);

//发送控制字节

SendByte(Val);

//发送DAC的数值

Stop_I2c();

//结束总线

return

(1);

ADC发送字节[命令]数据函数

bitISendByte(unsignedcharsla,unsignedcharc)

//发送数据

ADC读字节数据函数

unsignedcharIRcvByte(unsignedcharsla)

{unsignedcharc;

SendByte(sla+1);

c=RcvByte();

//读取数据0

Ack_I2c

(1);

//发送非就答位

return(c);

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

main()

{chari,j;

while

(1)

{/********以下AD-DA处理*************/

switch(AD_CHANNEL)

case0:

ISendByte(PCF8591,0x41);

D[0]=IRcvByte(PCF8591)*2;

//ADC0模数转换1放大2倍显示

break;

case1:

ISendByte(PCF8591,0x42);

D[1]=IRcvByte(PCF8591)*2;

//ADC1模数转换2

case2:

ISendByte(PCF8591,0x43);

D[2]=IRcvByte(PCF8591)*2;

//ADC2模数转换3

case3:

ISendByte(PCF8591,0x40);

D[3]=IRcvByte(PCF8591)*2;

//ADC3模数转换4

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1