单片机实验指导书
- 格式:doc
- 大小:991.73 KB
- 文档页数:61
第3章MCS-51单片机内部资源应用实验3.1 MCS-51并行口实验一、实验目的1.学习KEIL软件的程序调试方法。
2.学会KEIL C程序设计及调试,重点学会预处理命令、数据类型的定义。
二、实验内容1.单片机P2口的P20和P21各接一个开关K1、K2,P34、P35、P36和P37K2 K1 亮的二极管0 0 L10 1 L21 0 L31 1 L42.设计一个二进制加1计数器,按一次键,加1,并用4个LED显示计数结果,加至16时清零重新计数。
三、实验步骤1.设计实验电路,画出电路原理图2.按照KEIL软件的使用步骤,建立工程。
3.编写程序,保存文件,将源程序文件加载到工程中,当编译通过之后生成HEX文件。
4.用STC-ISP下载软件下载HEX文件到单片机系统。
5.运行、调试程序,观察实验结果。
四、实验参考电路及参考程序1.实验1#include<reg51.h>sbit k1 = P2^0;sbit k2 = P2^1;void main(){while(1){if(k1 == 0&k2 == 0){P3 = 0xef;}if(k1 == 1&k2 == 0){P3 = 0xdf;}if(k1 == 0&k2 == 1){P3 = 0xbf;}if(k1 == 1&k2 == 1){P3 = 0x7f;}}}2.实验2#include<reg52.h>sbit key = P3^2; unsigned char a ;unsigned char count = 0; void delay(unsigned int xms) {unsigned int i,j;for(i=xms;i>0;i--)for(j=110;j>0;j--); }void main(){while(1){if( key==0 ){delay(10);if( key==0){count++;while(!key);if( count==16)count = 0;a = count;a = a<<4;a = ~a;P3 = a;}}}}五、思考题1.设计一个二进制减1计数器,按一次键,减1,并用4个LED显示计数结果,减至0时,重新从15开始计数。
2.用1个按键控制LED的显示,要求显示3种以上的不同模式。
3.2 MCS-51中断系统实验一、实验目的1.掌握单片机的中断系统,学会单片机中断系统的初始化。
2.学会单片机外部中断的应用。
二、实验内容1.采用外部中断的方式实现按键控制1个LED的亮灭。
2.采用外部中断的方式实现4个LED的轮流亮灭。
三、实验步骤1.设计实验电路,画出电路原理图2.按照KEIL软件的使用步骤,建立工程。
3.编写程序,保存文件,将源程序文件加载到工程中,当编译通过之后生成HEX文件。
4.用STC-ISP下载软件下载HEX文件到单片机系统。
5.运行、调试程序,观察实验结果。
四、实验参考电路和参考程序1.实验1#include <reg52.h>sbit P34=P3^4;void main(){IT0=1; //外部中断0连沿触发方式EX0=1; //使能外部中断0EA=1; //开部中断P34=0; //指示灯初始为亮while(1) ;}void int0() interrupt 0 //外部中断0程序入口{P34=!P34;}2.实验2#include <reg52.h>sbit P32=P3^2;void main(){IT0=1; //外部中断0连沿触发方式EX0=1; //使能外部中断0EA=1; //开部中断while(1);}void int0() interrupt 0 //外部中断0程序入口{static unsigned char Bit=0;if(Bit>=4)Bit =0;switch(Bit){case 0:P3 = 0xef; break;case 1:P3 = 0xdf; break;case 2:P3 = 0xbf; break;case 3:P3 = 0x7f; break;}Bit++;}五、思考题1. 采用外部中断的方式实现一个二进制减1计数器,按一次键,减1,并用4个LED显示计数结果,减至0时,重新从15开始计数。
2. 采用外部中断的方式实现用1个按键控制LED的显示,要求显示3种以上的不同模式。
3.3 MCS-51定时器/计数器实验一、实验目的1.掌握单片机的中断系统、定时器的工作原理。
2.学会单片机中断系统、定时器的应用。
二、实验内容1.采用单片机定时器实现1个LED的亮灭,周期为1s。
2. 采用单片机定时器实现实现4个LED的轮流亮灭,每个LED点亮时间为1s。
三、实验步骤1.设计实验电路,画出电路原理图2.按照KEIL软件的使用步骤,建立工程。
3.编写程序,保存文件,将源程序文件加载到工程中,当编译通过之后生成HEX文件。
4.用STC-ISP下载软件下载HEX文件到单片机系统。
5.运行、调试程序,观察实验结果。
四、实验参考电路和参考程序1.实验1#include<reg51.h>#define THC0 0xee#define TLC0 0x00sbit led0=P3^4;void main(){TMOD=0x01;TH0=THC0;TL0=TLC0;TR0=1;ET0=1;EA=1;while(1);}void timer0_ISR(void) interrupt 1 {static unsigned char count=0;TL0=TLC0;TH0=THC0;count++;if(count>=200){count=0;led0=!led0;}}2.实验2#include<reg51.h>#define THC0 0xee#define TLC0 0x00void main(){TMOD=0x01;TL0=TLC0;TH0=THC0;TR0=1;ET0=1;EA=1;while(1);}void timer0_ISR(void) interrupt 1{static unsigned char count=0,Bit=0;TL0=TLC0;TH0=THC0;count++;if(count>=200){count=0;if(Bit>=4)Bit=0;P2=P2|0x78;switch(Bit){case 0:P3 = 0xef; break;case 1:P3 = 0xdf; break;case 2:P3 = 0xbf; break;case 3:P3 = 0x7f; break;}Bit++;}}五、思考题1.设计1个秒计数器,每秒计1次数,在LED上显示出来,计至16清零后重新计数。
2.在上题基础上用按键控制秒计数器的启停,按一次键开始计数,按2次停止计数,按3次又开始计数…。
3.4 基于RS232串行口通信实验一、实验目的1.通过串口实现单片机与PC机的数据通信。
2.了解下位机与上位机通讯过程。
二、实验内容使用串口实现单片机与PC机的数据通信。
运用串口中断,在PC机的“串口调试助手”上向单片机发送共阴极数码管的段码,在数码管上显示出对应的数值或字母,并将段码返回到PC机的“串口调试助手”显示出来。
三、实验步骤1.设计实验电路,画出电路原理图2.按照KEIL软件的使用步骤,建立工程。
3.编写程序,保存文件,将源程序文件加载到工程中,当编译通过之后生成HEX文件。
4.用STC-ISP下载软件下载HEX文件到单片机系统。
5.运行、调试程序。
6.运行“串口调试助手”观察实验结果。
四、串行口的概述串行接口(Serial Interface) 是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。
一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯。
串行通讯的特点是:数据位的传送,按位顺序进行,最少只需一根传输线即可完成;成本低但传送速度慢。
串行通讯的距离可以从几米到几千米;根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。
单片机串行接口是一个可编程的全双工串行通信接口。
它可用作异步通信方式(UART),与串行传送信息的外部设备相连接,或用于通过标准异步通信协议进行全双工的多机系统也能通过同步方式,使用TTL或CMOS移位寄存器来扩充I/O口。
单片机通过管脚RXD(P3.0,串行数据接收端)和管脚TXD(P3.1,串行数据发送端)与外界通信。
SBUF是串行口缓冲寄存器,包括发送寄存器和接收寄存器。
它们有相同名字和地址空间,但不会出现冲突,因为它们两个一个只能被CPU读出数据,一个只能被CPU写入数据。
串行口内部结构:串行口控制寄存器SCON:scon控制寄存器,它是一个可位寻址的专用寄存器,用于串行数据的通信SCON SM0 SM1 SM2 REN TB8 RB8 TI RI位地址9FH 9EH 9DH 9CH 9BH 9AH 99H 98H工作方式选择:SM0 SM1 工作方式0 0 方式00 1 方式11 0 方式21 1 方式3多机通信工作于方式2和方式3,故SM2位主要用于方式2和方式3。
在接收状态,当串行口工作于方式2或3,以及SM2=1时,只有当接收到第9位数据(RB8)为1时,才把接收到的前8位数据送入sbuf,且置位RI发出中断申请,否则会将接受到的数据放弃。
当SM2=0时,就不管第9位数据是0还是1,都得将数据送入sbuf,并发出中断申请。
即此时RI是否置位由SM2和RB8共同决定。
工作于方式0时,SM2必须为0。
3 .REN:允许接收位REN用于控制数据接收的允许和禁止,REN=1时,允许接收,REN=0时,禁止接收。
4 .TB8:发送接收数据位8在方式2和方式3中,TB8是要发送的——即第9位数据位。
在多机通信中同样亦要传输这一位,并且它代表传输的地址还是数据,TB8=0为数据,TB8=1时为地址。
5 .RB8:接收数据位8在方式2和方式3中,RB8存放接收到的第9位数据,用以识别接收到的数据特征。
6 .TI:发送中断标志位可寻址标志位。
方式0时,发送完第8位数据后,由硬件置位,其它方式下,在发送或停止位之前由硬件置位,因此,TI=1表示帧发送结束,TI可由软件置0。
7. RI:接收中断标志位可寻址标志位。
接收完第8位数据后,该位由硬件置位,在其他工作方式下,该位由硬件置位,RI=1表示帧接收完成。