【单片机原理】实验报告 ,外部中断原理及外部中断的使用,计数/定时器的使用,串口发送数据和接受(上海理工大学)
目录
实验 4—-中断原理及外部中断的使用
1、掌握 C51 单片机中断的工作原理;
2、掌握外部中断的使用;
3、基本实验:
4、提升实验:
步骤:
实验结果及分析:单片机产生中断信号后,p1.0 到 p1.7 相应的管脚接地,L0 到 L7对应的 LED 灯亮。
实验 5—-定时/计数器的使用
实验目的:
实验原理:
1、计数实验:
步骤:
2、定时实验:
定时器:
实验6
第 7 章—-串口数据发送和接收(大实验,4 课时)
实验目的:
实验原理:
实验内容:
步骤:
实验 4—-中断原理及外部中断的使用
实验目的:
1、掌握 C51 单片机中断的工作原理;
2、掌握外部中断的使用;
实验原理:
实验设备:计算机、Keil uVision4 软件、实验板
实验内容:(参考第 5 章:例 5-3)
如图所示,采用外部中断 0,中断申请从 INT0 输入,并采用了去抖动
电路。当 P1.0~P1.3 的任何一位输出 0 时,相应的发光二极管就会发光。
当开关 K 来回拔动一次时,将产生一个下降沿信号,通过 INT0 发出中
断请求。中断服务程序的矢量地址为 0003H。
对应实验板原理图:用杜邦线在 J4 插座上第 8 管脚与地触碰,模拟产
生 INT1 中断中断信号,在产生外部中断时,读取按键,并在 LED 上显
示出来,完成例题要求的功能。中断服务程序的矢量地址为 0013H。
3、基本实验:
1、设计完整的主程序及中断服务程序,实现指定功能
2、关闭除 INTT1 以外的所有中断,中断 INT1 的优先级设置为
高优先级
3、用汇编语言设计程序,编译成功后下载到实验板,观察并记
录实验现像
4、提升实验:
对中断次数进行计数,并将计数结果在 6 位数码管上显示出来
步骤:
1. 新建工程,命名为 zhongduan,选择 at89c52,
2.添加 exam5-1 源文件,进入编辑界面
3 在 option output 里点击 creat HEX file ,点击运行,生成待烧录的 HEX
文件
4 将生成的 HEX 文件烧录到单片机上,打开 STC—ISP,打开
zhongduan.HEX 文件,下载到单片机上。5.观察现象:产生中断信号后,将 p1.0 到 p1.7 相对应的管脚接地,
L0 到 L7 对应的 LED 灯亮。
程序代码:
»Û¾»µç×Ó51ʵÑé°åÀý³Ì************************
* ƽ̨£ºSTC89C52
* Ãû³Æ£ºÖжϷþÎñ³ÌÐòÀý³Ì5-1
* ¾§Õñ:11.0592MHZ
******************************************************************/
ORG 0000H
RESET: LJMP MAIN ;Éϵ磬תÏòÖ÷³ÌÐò
; ORG 0003H ;ÍⲿÖжÏ0Èë¿ÚµØÖ·
; LJMP INT0_SERVICE ;תÏòÖжϷþÎñ³ÌÐò
; ORG 000BH ;¶¨Ê±Æ÷ÖжÏ0Èë¿ÚµØÖ·
; JMP T0_SERVICE ;תÏòÖжϷþÎñ³ÌÐò
; ORG 0013H ;ÍⲿÖжÏ1Èë¿ÚµØÖ·
; JMP INT1_SERVICE ;תÏòÖжϷþÎñ³ÌÐò
; ORG 001BH ;¶¨Ê±Æ÷ÖжÏ1Èë¿ÚµØÖ·
; JMP T1_SERVICE ;תÏòÖжϷþÎñ³ÌÐò
; ORG 0023H ;´®¿ÚÖжÏÈë¿ÚµØÖ·
; JMP SERIAL_SERVICE ;תÏòÖжϷþÎñ³ÌÐò
;**************************************
;main
;**************************************
ORG 0030H ;Ö÷³ÌÐò
MAIN: MOV SP,#60H ;ÉèÖöÑÕ»Ö¸Õë
MOV TMOD,#06H ;ÉèÖÃT0Ϊģʽ2,¼ÆÊý·½Ê½
MOV TH0,#0H ;Éè³õʼֵ00
MOV TL0,#0H
; CLR ET0 ;
; CLR EA ;
SETB TR0 ;Æô¶¯¶¨Ê±
LOOP: MOV A,TL0 ;¶ÁÈ¡¼ÆÊýÆ÷µÄÖµ
CPL A
MOV P1,A
SJMP LOOP ;µÈ´ýÖжÏ
;**************************************
END
实验结果及分析:
单片机产生中断信号后,p1.0 到 p1.7 相应的管脚接地,L0 到 L7
对应的 LED 灯亮。
实验 5—-定时/计数器的使用
实验目的:
1、掌握 C51 单片机定时器/计数器的工作原理;
2、掌握定时器/计数器不同的工作模式和不同工作方式;掌握计数器/定时器的
初始化;
3、利用定时器产生不同占空比的方波,控制 LED0 的亮度
4、利用定时/计数器 0 对外部脉冲 P3.4 上的脉冲进行计数,并计数用 LED 灯
显示出来。
实验原理:
定时/计数器的结构定时/计数器的实质是加 1 计数器(16 位),由
高 8 位和低 8 位两个寄存器组成。TMOD 是定时/计数器的工作方式寄存器,确
定工作方式和功能;TCON 是控制寄存器,控制 T0、T1 的启动和停止及设置溢
出标志。
实验设备:计算机、Keil uVision4 软件、实验板
实验内容:
1、计数实验:
利用定时/计数器 0 工作在方式 2,从 0 开始,对外部按
键 K1 的按键次数进行计数,并计数结果送到 L0-L7 显示出来,L0
对应低位,L7 对应高位
按 1 次按键
L7 L6 L5 L4 L3 L2 L1 L0
按 2 次按键
L7 L6 L5 L4 L3 L2 L1 L0
按 3 次按键
L7 L6 L5 L4 L3 L2 L1 L0
按 4 次按键
L7 L6 L5 L4 L3 L2 L1 L0
…
按 255 次按键 L7 L6 L5 L4 L3 L2 L1 L0
步骤:
计数器 1.建立工程,命名为 5,选择 AT89C52
2 添加源文件代码到 source group 1,选择 char6,exam5-1 到编辑界面。3.生成可执行的 HEX 文件,在 options 中选择 create HEX file,在编辑界面选择 build,在子文件夹中找到生成的 HEX 文件。
4 烧录 5.HEX 程序到单片机上,打开 STC-ISP 软件,选择单片机接在电脑上的 COM 接口,打开程序文件,选择 5.HEX 文件,点击下载。
5,观察现象,按一次键 L0 亮,按两次键 L1 亮,按三次键 L1,L0亮,从 L0 到 L7,代表 8 位二进制数从低位到高位,亮表示 1,灭表示零,表示的二进制数为当前按键次数,功能是按键次数计数。
1.计数器
ORG 0000H
RESET: LJMP MAIN
;
ORG 0003H ;
;
LJMP INT0_SERVICE ;
;
ORG 000BH ;
;
JMP T0_SERVICE ;
;
ORG 0013H
;
JMP INT1_SERVICE ;
;
ORG 001BH
;
;
JMP T1_SERVICE ;
;
ORG 0023H ;´
;
JMP SERIAL_SERVICE ;
;main
ORG
0030H
MAIN:
MOV
SP,#60H
;
MOV
TMOD,#06H
;
MOV
TH0,#0H
;
MOV
TL0,#0H
;
CLR
ET0
;
;
CLR
EA
;
SETB TR0
;
LOOP:
MOV A,TL0 ;
CPL A
MOV
P1,A
SJMP LOOP ;
END
2、定时实验:
参考书上例 6-5,晶体频率微 11.0592MHz,试编写利用
T0 产生 1s 的定时程序,在 P1.7 端口产生一个周期为 2 秒的方波,
控制 L7 亮 1 秒、暗 1 秒,交替明暗变化。
3、分别编写 1、2 两个实验程序,编译产生 HEX 文件,下载到实验板,
并观察及记录实验现象,并分析实验结果与设计是否相符;
4、若不正确,修改程序,重新修改,重复步骤 3;
定时器:
1.打开编译软件,新建工程,命名为 DINGSHI,进行
程序的编写。
2. 将编 写 好 的 程 序 生 成 为 可 执 行 HEX 文件
3.打开烧录软件,选择文件,烧录程序。
4,观察到单片机 L7 的 LED 灯发生明暗间隔 1 秒的闪烁。
2.定时器
ORG 0000H
LJMP MAIN
ORG 000BH
AJMP SERVE
ORG 0030H
MAIN: MOV SP,#60H
MOV B,#0AH
MOV TMOD,#01H
MOV TL0,#0B0H
MOV TH0,#3CH
SETB TR0
SETB ET0
SETB EA
SJMP $
ORG 000BH
SERVE:MOV TL0,#0B0H
MOV TH0,#3CH
DJNZ B,LOOP
CPL P1.7
MOV B,#0AH
LOOP:RETI
END
实验6
第 7 章—-串口数据发送和接收(大实验,4 课时)
实验目的:
1、掌握 C51 单片机串口通讯的基本原理;
2、掌握波特率发生器的工作原理;
3、掌握串口通讯相关寄存器的初始化,包括波特率、数据位数、奇偶校验等;
4、掌握采用中断方式发送、接收数据的程序设计方法
5、理解串口通讯协议;
实验原理:
实验设备:计算机、Keil uVision4 软件、实验板
实验内容:
通过下载器的 USB 转串口,实现实验板与计算机的串口通讯。实验
板上,振荡频率为 11.0592MHz,波特率设置为 9600 b/s。实验内容:
1、基本实验:打开计算机的串口调试工具,用于接收和发送数据,
完成计算机与单片机的串口通讯。单片机检测按键 K1 的按键次数,
并将按键次数通过串口发送到计算机。计算机上接收到单片机发送
的按键次数后,将接收到的数据加 1,反馈给单片机,单片机将接收
到的计算机发送的数据在 LED 灯 L0-L7 上显示出来。并观察数 LED
显示与计算机显示的数据是否相同。
2、进阶实验:字符串发送与接收。通过计算机发送自己学号的后 6
位到单片机.单片机接收到数据后,判断接收到的学号是否是自己学
号的后 6 位,是反馈字符“1”,不是反馈字符“0”。
步骤:
1. 用 keil c51 建设工程,点击上方的 project,creat new
project,命名为串口。
在选择设备界面选择 AT89C52。
2. 添加图形编码文件,点击右侧 project 的 source group1,进入添加菜单,选择。(我们是有源码文件,没有的小伙伴可以新建工程,复制下面的代码)在一个像魔术棒的菜单里,修改 option,在 output 菜单中勾选
CREAT HEX FILE,生成可以烧录的可执行文件。
勾选 OK,返回编辑菜单,点击左上角的 build 键,有一个箭头
的。
就可以在子文件夹里看到生成的文件了
3. 烧录程序到单片机上,打开 STC-ISP 软件,选择合适的 COM 接口,点击“打开程序文件”,勾选“串口。HEX“
点击 DOWNLOAD 下载,给单片机上电,显示下载
成功。
4 观察现象,打开串口助手,选择晶体频率 9600,点
击单片机的 K2 键,可以看到每按一次,接受缓冲区
收到一个从 01 递加的数,每次传来的数与按键次数
相等。
发送字符 7,看到接受的单片机上 LED 灯 L0,L1,L2 亮。对应二
进制数 7.
/**********************»Û¾»µç×Ó51ʵÑé°åÀý³Ì************************
* ƽ̨£ºSTC89C52
* Ãû³Æ£ºÖжϷþÎñ³ÌÐòÀý³Ì5-1
* ¾§Õñ:11.0592MHZ
******************************************************************/
ORG 0000H
RESET: LJMP MAIN ;Éϵ磬תÏòÖ÷³ÌÐò
; ORG 0003H ;ÍⲿÖжÏ0Èë¿ÚµØÖ·
; LJMP INT0_SERVICE ;תÏòÖжϷþÎñ³ÌÐò
; ORG 000BH ;¶¨Ê±Æ÷ÖжÏ0Èë¿ÚµØÖ·
; JMP T0_SERVICE ;תÏòÖжϷþÎñ³ÌÐò
; ORG 0013H ;ÍⲿÖжÏ1Èë¿ÚµØÖ·
; JMP INT1_SERVICE ;תÏòÖжϷþÎñ³ÌÐò
; ORG 001BH ;¶¨Ê±Æ÷ÖжÏ1Èë¿ÚµØÖ·
; JMP T1_SERVICE ;תÏòÖжϷþÎñ³ÌÐò
ORG 0023H ;´®¿ÚÖжÏÈë¿ÚµØÖ·
JMP SERIAL_SERVICE ;תÏòÖжϷþÎñ³ÌÐò
;**************************************
;main
;**************************************
ORG 0030H ;Ö÷³ÌÐò
MAIN: MOV SP,#40H ;ÉèÖöÑÕ»Ö¸Õë
MOV TMOD,#20H ;¶¨Ê±Æ÷1ÉèΪģʽ2
MOV TL1,#0FDH ;¶¨Ê±Æ÷³õÖµ f=11059200,baut=9600b/s
MOV TH1,#0FDH ;8λÖØ×°Öµ
SETB TR1 ;Æô¶¯¶¨Ê±Æ÷1
MOV SCON ,#50H ;ÉèÖÃΪ·½Ê½1£¬
;REN=1
MOV R0,#00H ;¼ÆÊýÇåÁã
SETB ES ;
SETB EA ;
LOOP: JB P3.5,LOOP ;²éѯ°´¼üK2ÊÇ·ñ°´ÏÂ
ACALL DELAY ;ÑÓʱ10msÏû¶¶
JB P3.5,LOOP ;Åжϰ´¼üK2ÊÇ·ñÒ»Ö±°´ÏÂ
JNB P3.5,$ ;µÈ´ý°´¼ü·Å¿ª
INC R0 ;¼ÆÊý+1
ACALL SOUT
AJMP LOOP
;**************************************
;ÖжϷþÎñ³ÌÐò
;**************************************
ORG 0100H
SERIAL_SERVICE:
JNB RI ,SEND ;TI=1,Ϊ·¢ËÍÖжÏ
CLR RI
ACALL SIN ;RI=1,Ϊ½ÓÊÕÖжÏ
SJMP NEXT ;תÖÁͳһµÄ³ö¿Ú
SEND:
CLR TI ;µ÷Ó÷¢ËÍ×Ó³ÌÐò
NEXT:
RETI ;ÖжϷµ»Ø
;**************************************
;·¢ËÍ×Óº¯Êý
;**************************************
SOUT: MOV A ,R0 ;È¡°´¼ü´ÎÊýA
MOV SBUF , A ;·¢ËÍASCIIÂë
RET ;·µ»Ø
;**************************************
;½ÓÊÕ×Óº¯Êý
;**************************************
SIN: MOV A ,SBUF ;¶Á³ö½ÓÊÕ»º³åÇøÄÚÈÝ
CPL A
MOV P1,A ;µãÁÁLED
RET ;·µ»Ø
;**************************************
;ÑÓʱ×Óº¯Êý10ms×óÓÒ
;**************************************
DELAY: MOV R2,#020
D1: MOV R3,#0FFH
D2: DJNZ R3,D2
DJNZ R2,D1
RET
;**************************************
END
资料仅供学习使用
如有错误欢迎留言交流
上理考研周导师的其他专栏:
光电融合集成电路技术 电路原理
C语言 复变函数与积分变换
单片机原理
模式识别原理
数字电子技术
自动控制原理 传感器技术
模拟电子技术
数据结构
概率论与数理统计
高等数学
传感器检测技术
智能控制
嵌入式系统
图像处理与机器视觉
热工与工程流体力学
数字信号处理
线性代数
工程测试技术
上理考研周导师了解更多
作者:中国周文龙