单片机实验指导书93577Word格式文档下载.docx
《单片机实验指导书93577Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机实验指导书93577Word格式文档下载.docx(24页珍藏版)》请在冰豆网上搜索。
然后编写程序,编译程序,下载到单片机,完成流水灯实验和开关控制灯实验。
六、实验程序(选用12M晶振)
实验A、开关控制灯实验:
ORG00H
MAIN:
JNBP3.0,S1OK;
检测按键是否按下
JNBP3.1,S2OK
JNBP3.2,S3OK
JNBP3.3,S4OK
MOVP1,#0FFh;
没有键按下,LED2—LED5全部熄灭
JMPMAIN
S1OK:
MOVP1,#0FEh;
点亮LED2
S2OK:
MOVP1,#0FDh;
点亮LED3
S3OK:
MOVP1,#0FBh;
点亮LED4
S4OK:
MOVP1,#0F7h;
点亮LED5
END
实验B、流水灯实验:
START:
MOVA,#0FFH;
赋初值
CLRC
MOVR2,#8
LOOP:
RRCA;
带进位右移
MOVP1,A
CALLDELAY
DJNZR2,LOOP
MOVR2,#7
LOOP1:
RLCA;
带进位左移
DJNZR2,LOOP1
JMPSTART
DELAY:
MOVR3,#20;
延时0.2秒
D1:
MOVR4,#20
D2:
MOVR5,#248
DJNZR5,$
DJNZR4,D2
DJNZR3,D1
RET
END
七、实验结果记录
1.请记录实验A中输入与输出的对应关系。
2.若要求开关按下后,灯保持状态不变,如何修改程序?
3.请记录实验B的实验现象。
4.如果将亮灯间隔1秒,应该如何修改程序?
5.请画出实验A和实验B的程序流程图。
实验二定时器/计数器实验和外部中断实验
●熟悉单片机定时器/计数器的工作原理、寄存器设置以及工作方式的选择。
●熟悉单片机中断系统结构、中断寄存器设置,理解中断响应的处理过程。
1.使用定时器/计数器T1完成循环流水灯实验,定时时间100ms。
2.使用外部中断INT0完成外部中断实验,按一下S3(INT0)按键,8个LED全亮,再按一下S3按键,8个LED全灭,使LED状态取反。
mini80E开发板上8个发光二极管LED2--LED9,小按键S3,插针J11。
首先点亮LED2,其它LED熄灭,启动定时器T1延时100ms,当定时时间到产生中断,单片机执行中断程序,点亮下一个灯LED3,其它LED熄灭,T1再延时100ms点亮LED4,如此循环下去,当点亮LED9后延时100ms再点亮LED2,形成循环流水灯现象。
单片机引脚P3.2的第二功能是外部中断INT0输入端,低电平有效,下降沿触发。
首先软件设置中断寄存器将INT0中断功能打开,小按键S3按下,引脚P3.2的电平由高变为低,触发中断,单片机执行中断程序,将LED状态取反。
1.进行定时器/计数器实验,编写软件。
首先设置T1工作在方式1,根据定时时间100ms计算定时初值,打开中断,启动定时器,等待中断。
进入中断后点亮下一个LED灯,实现流水灯。
2.进行外部中断实验,编写软件。
首先设置中断寄存器IE、IP和TCON,打开中断,等待按键按下触发中断,当按键按下时进入中断程序,LED状态取反。
实验A、定时器/计数器实验:
ORG0000H
LJMPMAIN
ORG000BH;
定时器0中断入口地址
LJMPINT
ORG0030H
MOVR0,#00H;
中断次数R0清0
MOVA,#0FEH
MOVP1,A;
MOVTMOD,#01H;
定时器0工作方式1
MOVTH0,#3CH;
置50ms定时初值
MOVTL0,#0AFH
SETBEA;
开总中断
SETBET0;
开T0中断
SETBTR0
SJMP$;
动态暂停
ORG0050H;
中断程序
INT:
INCR0;
中断次数R0加1
CJNER0,#2,EXIT;
R0等于2,即中断两次,定时100ms,如果没到100ms,跳至EXIT退出
MOVR0,#00H;
RLA;
A的值循环左移;
点亮下一个灯
MOVP1,A
EXIT:
RETI
实验B、外部中断实验:
AJMPMAIN
ORG0003H
AJMPIN0
MOVA,#0FFH
MOVP1,A;
8个LED全灭
SETBEX0;
开外部中断
SETBIT0
SJMP$;
等待中断
IN0:
CLREX0;
关外部中断
CALLDELAY_10;
延时10ms去抖动
JNBP3.2,$;
等待按键松开
MOVA,P1
CPLA;
P1口状态取反
MOVP1,A
RETI
DELAY_10:
MOVR7,#20
D4:
MOVR6,#250
DJNZR6,$
DJNZR7,D4
1.记录实验A的现象。
2.在实验A中,如果流水灯定时时间间隔改为1秒,程序应该如何修改?
3.在实验B中,将语句MAIN:
MOVA,#0FFH改成MAIN:
MOVA,#0F0H,实验现象是怎样的?
如果改成MAIN:
MOVA,#55H,实验现象又是怎样的?
4.请画出实验A和实验B的程序流程图。
实验三串口通信实验
1.理解串行通信的基本概念和51系列单片机的串行通信接口结构。
2.熟悉串口的4种工作方式、通信连线和应用编程。
1.使用串口实现单片机1与单片机2的数据通信,实现互相控制。
要求按下单片机1系统板上的S3—S4键,单片机2系统板上LED4—LED5分别点亮。
按下单片机2系统板上的S3—S4键,单片机1系统板上LED4—LED5也分别点亮。
2.使用串口实现单片机与PC机的数据通信。
要求按下单片机系统板上中断INT0时,单片机向PC机发送0-9这十个数字,并用“串口调试助手”接收显示。
在“串口调试助手”上发送0-9中任何一个数字时,单片机用8个发光二极管显示对应的ASCII码值。
编程软件keil,程序烧写软件STC_ISP_V3.1,串口调试工具。
两块mini80E开发板,板上资源用到发光二极管LED3,小按键S3,插针J11。
MAX232芯片用于电平转换,实现RS232电平与TTL电平(单片机)的互相转换。
本次实验单片机之间通信不使用握手信号,只需3根信号线:
TXD(发送线),RXD(接收线),GND(地线)。
单片机之间通信的原理图如图1所示,当单片机1(主机)查询外接控制开关S3按下时,单片机1发送一个自定义信号给单片机2(从机),单片机2收到信号后点亮指示灯LED4。
图1单片机之间通信的原理图
单片机与PC机之间通信原理图如图2所示。
S3键接P3.2,作为外部中断INT0输入端,当S3按下,产生中断,执行中断程序发送0-9这十个数字,在PC机上用“串口调试助手”接收并显示。
图2单片机与PC机之间通信
1.进行单片机1与单片机2的通信实验。
硬件连接:
将J11的左边两个引脚针(1和2)用跳冒连接,用三根导线分别连接两个串口的RX、TX、GND。
编写软件:
首先设置单片机1和单片机2的TMOD寄存器,使定时器T1为工作方式2,作为波特率时钟。
设定波特率为1200,根据公式计算出定时器1的定时初值并启动T1。
设置SCON寄存器,使串口工作在方式1(波特率可变10位异步通信方式)。
单片机1串口负责发送数据,程序中查询P3.2--P3.3的电平,其中有一个为低电平表示S3—S4有一个按下,串口发送自定义信号。
单片机2串口负责接收数据,收到信号并点亮相对应的灯LED4—LED5。
当单片机2这边S3—S4有键按下时,单片机板1上也点亮相对应的灯LED4—LED5。
2.进行单片机与PC机的通信实验。
将J11左边两个引脚针(1和2)用跳冒连接,用串口下载线将PC机与单片机连接。
单片机1串口负责发送0-9十个数据,按照上个实验的设置来配置串口的工作方式。
设置中断寄存器IE、IP和TCON,打开中断,当S3按下时出发中断开始发送数据。
“串口调试助手”是在电脑上运行的程序,它可以接收并显示电脑串口上的数据,设置如图3所示。
图3串口调试助手界面
实验A、单片机1与单片机2的通信实验:
ORG0023H
AJMPINTRT
MOVTMOD,#20H;
设置定时器1的工作方式
MOVTH1,#0E6H;
设置波特率1200
MOVTL1,#0E6H
SETBTR1;
启动定时器1
MOVSCON,#50H;
设置串口工作方式
CLRRI;
清除标志位
CLRTI;
SETBES;
开串口中断
JNBP3.2,S3OK;
AJMPLOOP
MOVA,#0FBH;
MOVSBUF,A
JNBTI,$;
等待发送完
SJMPLOOP2
MOVA,#0F7H;
等待发送完
LOOP2:
ACALLDELAY
INTRT:
PUSHACC
JNBTI,NEXT
CLRTI
AJMPOUT
NEXT:
CLRRI;
清标志
MOVA,SBUF;
读取接收的数据
MOVP1,A;
送P1口
OUT:
POPACC
MOVR3,#60;
延时0.6秒
实验B、单片机与PC机的通信实验:
MOVTH1,#0E6H;
MOVTL1,#0E6H
SETBTR1;
MOVSCON,#50H;
CLRTI;
SETBEX0;
SETBEA;
SETBIT0
GO_ON:
CLRRI
JNBRI,$
MOVA,SBUF
CPLA
MOVP1,A
SJMPGO_ON;
等待
PUSHACC
关外部中断
JBP3.2,OUT
JNBP3.2,$
MOVR0,#30H
MOVA,R0;
向PC机发送P2口采集到的信号
MOVSBUF,A
INCR0
CJNER0,#3AH,LOOP
POPACC
1.请记录实验A的实验现象。
2.在实验A中,若要求按下S3键时LED6点亮,应该如何修改程序?
3.在实验B中,如果要在“串口调试助手”上显示A,B,C,D,E,F,G,H,I,J这10个字母,程序应该如何修改?
实验四数码管显示和扫描键盘实验
1.熟悉单片机4个并行口的结构、使用特点和程序设计。
2.学习用并行口设计LED显示电路和键盘电路。
1.八个数码管显示0-7这8个数字,采用动态显示方式。
2.编写44键盘扫描程序,按下按键时能返回键值,并将按键的编号用数码管显示。
共有16个按键,编号分别为1-16。
mini80E开发板上小按键S1-S16,八位共阴数码管,锁存器74HC573和译码器74HC138,插针J11和J6。
带串口的PC机一台以及串口下载线一根(如果PC机没有串口,请用USB转串口下载线)。
数码管连接电路如图1所示,P0口输出码型,P2口输出位选。
锁存器74HC573起驱动作用,提供驱动电流供数码管发光。
译码器74HC138将位选地址转换成位选信号,例如当前是第5个数码管显示,那么P2口输出位选地址05H,译码器输入CBA=110,输出位选信号Y7-Y0=11101111,其中Y5=0,第5个数码管选通并显示,其它数码管不显示。
实验时将J6的左边两个引脚针(1和2)用跳冒连接,锁存器11脚接VCC,关闭锁存功能。
数码管显示方式为动态扫描方式,当P0口送第一个数0的码型到锁存器时,P2送位选地址01H,即Y0=0,只有第一个数码管亮,显示0,其他数码管不显示。
当P0口送第二个数1的码型到锁存器时,P2送位选地址02H,即Y1=0,只有第二个数码管亮,显示1,其他数码管不显示。
即每次只有一个数码管点亮,8个数码管是轮流被点亮的,轮流点亮的间隔时间很短(一般用延时程序延时几个毫秒),由于视觉的暂留现象,看到的却好象全都点亮着,这就是动态扫描。
图1数码管连接电路
数码管显示数字的码型由数码管的数据脚a~dp决定,图2为数码管的笔段分布图,由于是共阴极的,所以当a~dp为高电平时相应的笔段会亮,电路中P1.0~P1.7分别接数码管的a.b.c.d.e.f.g.dp,得到0~9这10个数字的码型如表1所示。
图2数码管的笔段分布图
表1数字的码型表
引脚
P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
P0.1
P0.0
数字
码型
笔段
dp
g
f
e
d
c
b
a
1
3FH
06H
2
5BH
3
4FH
4
66H
5
6DH
6
7DH
7
07H
8
7FH
9
6FH
小数点
80H
44键盘电路如图3所示,用跳冒将J11的右边两个引脚针(2和3)连接,键盘S1—S16是被配置成44键盘。
机械按键在动作时会有抖动,所以在程序中要加入延时程序来避免抖动带来的干扰,一般软件延时时间为1020毫秒。
图344键盘电路
3.进行数码管显示实验。
将J6的左边两个引脚针(1和2)用跳冒连接。
参考下列示例程序及注释。
4.进行单片机与PC机的通信实验。
将J11的右边两个引脚针(2和3)连接。
实验A、数码管显示实验:
MOV20H,#3FH
MOV21H,#06H
MOV22H,#5BH
MOV23H,#4FH
MOV24H,#66H
MOV25H,#6DH
MOV26H,#7DH
MOV27H,#07H
CALLSCAN
SCAN:
MOVA,#0;
扫描子程序
MOVR0,#20H
MOVP2,A
MOVP0,@R0
ADDA,#01H
DJNZR2,LOOP;
循环显示8个数字
CLRA
MOVR3,#1;
扫描延时
MOVR4,#2
MOVR5,#248
实验B、矩阵键盘实验:
MOV20H,#00H;
初始化,清显示
MOV21H,#00H
MOV22H,#00H
MOV23H,#00H
MOV24H,#00H
MOV25H,#00H
MOV26H,#00H
MOV27H,#00H
LCALLSCAN;
显示
S1:
LCALLKEY;
调用键盘扫描程序,并返回键值
LCALLSCAN;
JNBF0,S1;
有键按下继续执行,否则继续返回S1扫描
CLRF0;
清标志
MOVA,3FH
MOV46H,A;
存按键的编号到46H
LCALLZHUAN;
将16进制的编号转换成十进制的BCD码
LCALLCHA_BIAO;
查表,将数字对应的码型值存于相应寄存器
MOVA,7AH
MOV26H,A;
高位的码型值存于26H
MOVA,7BH
MOV27H,A;
低位的码型值存于27H
LCALLSCAN
AJMPS1
/////////数码管显示程序/////////////////////////////////////
////////////////////////////////////////////////////////////
//////将46H单元中存放的十六进制数转换成十进制的BCD码并存放于7CH(最高位),7DH,7EH(最低位)单元中////////////
ZHUAN:
MOVA,46H
MOVB,#0AH
DIVAB
MOV7EH