单片机实验讲稿5课时Word文件下载.docx
- 文档编号:15310434
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:33
- 大小:991.36KB
单片机实验讲稿5课时Word文件下载.docx
《单片机实验讲稿5课时Word文件下载.docx》由会员分享,可在线阅读,更多相关《单片机实验讲稿5课时Word文件下载.docx(33页珍藏版)》请在冰豆网上搜索。
(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
1
模拟量输入方式
AIN1
2
AIN2
3
AIN3
4
A0
5
模拟通道选择
A1
6
A2
7
VSS
8
负电源电压
SDA
9
数据信号
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 实验 讲稿 课时