单片机实验.docx
- 文档编号:9201543
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:20
- 大小:1.04MB
单片机实验.docx
《单片机实验.docx》由会员分享,可在线阅读,更多相关《单片机实验.docx(20页珍藏版)》请在冰点文库上搜索。
单片机实验
实验五数码管显示0-7
数码管显示输出是单片机系统中最常用的一种显示输出,主要用于单片机控制中的数据输出和状态信息显示。
1.实验任务
先将“0-7”数码管的段码值写入显示存储器中,使8位数码管从右至左显示0–7。
2.实验线路
图6.9数码管显示电路
ME850采用8位数码管动态扫描显示,可以简化硬件电路、方便软件编程和减少电源的功耗。
具体的电路原理图如图6.9所示。
8位数码管动态扫描显示,就是将8个数码管的8个相同的段线并接在一起,通过限流电阻RP5、RP6接到AT89S52的P0口,由P0口控制字段输出(低电平有效)。
而各位共阳极数码管的COM由AT89S52的P2口(低电平有效)通过限流电阻RP7、RP8控制Q20-Q27来实现8位数码管的位输出控制(高电平有效)。
2.1数码管动态扫描原理简介
从数码管动态扫描显示电路的原理可知,对于8位数码管动态扫描显示需要由两组信号来控制:
一组是字段输出口输出的字形代码,用来控制显示的字形,称为段码;另一组是位输出口输出的控制信号,用来选择第几位数码管工作,称为位码。
由于各位数码管的段线并联,段码的输出对各位数码管来说都是相同的。
因此,在同一时刻如果各位数码管的位选线都处于选通状态的话,8位数码管将显示相同的字符。
若要各位数码管能够显示出与本位相应的字符,就必须采用扫描显示方式。
即在某一时刻,只让某一位的位选线处于导通状态,而其它各位的位选线处于关闭状态。
同时,段线上输出相应位要显示字符的字型码。
这样在同一时刻,只有选通的那一位显示出字符,而其它各位则是熄灭的,如此循环下去,就可以使各位数码管显示出将要显示的字符。
虽然这些字符是在不同时刻出现的,而且同一时刻,只有一位显示,其它各位熄灭,但由于数码管具有余辉特性和人眼有视觉暂留现象,只要每位数码管显示间隔足够短,给人眼的视觉印象就会是连续稳定地显示。
数码管不同位显示的时间间隔可以通过调整延时程序的延时长短来完成。
数码管显示的时间间隔也能够确定数码管显示时的亮度,若显示的时间间隔长,显示时数码管的亮度将亮些,若显示的时间间隔短,显示时数码管的亮度将暗些。
若显示的时间间隔过长的话,数码管显示时将产生闪烁现象。
所以,在调整显示的时间间隔时,即要考虑到显示时数码管的亮度,又要数码管显示时不产生闪烁现象。
2.2数码管组成结构
图6.10数码管结构图
数码管内部是由7个条形的发光二极管和右下方一个圆形的发光二极管组成,这样一共有8个段线,恰好适用于8位的并行系统。
数码管按内部连接方式分为共阴极数码管和共阳极数码管两种。
(1)共阴极数码管
共阴极数码管是将所有发光二极管的阴极接在一起作为公共端COM,当公共端接低电平时,某一段阳极上的电平为“1”时,该段点亮,电平为“0”时,该段熄灭。
图6.11共阴数码管结构图
(2)共阳极数码管
共阳极数码管是将所有发光二极管的阳极接在一起作为公共端COM,当公共端接高电平时,某一段阴极上的电平为“0”时,该段点亮,电平为“1”时,该段熄灭。
图6.12共阳数码管结构图
(3)共阳极数码管的字型代码表
举例:
如果你想让图1最右边的数码管显示“0”的话,首先将段码“0C0H”送达P0口,然后将P2.0清为低电平。
当P2.0为低电平时,三极管Q20导通,其该位数码管的公共阳极接至+5V,于是该位数码管就显示“0”。
MOVP0,#0C0H;送段码到P0口
MOVP2,#0FEH;清P2.0为低电平
3.实验步骤
将JP21的8个短接子用短接帽短接,使数码管的位控制线与P2端口接通。
将JP22的9个短接子用短接帽短接,使数码管的数据线与P0端口接通,并使VCC向数码管接口电路供电。
将JP24的OFF端用短接帽短接,禁止LCD1602显示功能,否则数码管将不能正常显示。
4.程序设计
数码管显示程序的编程方法
1)先准备好要显示的数据,放入相应的显示存储单元中。
2)根据要使用的数码管的具体位置来确定扫描初值和扫描方向。
3)根据使用数码管的个数来确定扫描的位数。
4)查表将要显示的数据转换为能使数码管正确显示相对应的段码。
5)分时送段码和位码,数码管开始循环显示。
5.程序流程图
图6.13EX5_7SEG流程图
6.汇编源程序
DISSTARTEQU40H;显示单元首地址
LED_DATAEQUP0;数码管数据口定义
;----------------------------------------------------------
ORG0000H
AJMPMAIN
ORG0050H
;----------------------------------------------------------
;主程序
;----------------------------------------------------------
MAIN:
MOVSP,#60H
MOVP0,#0FFH;初始化
MOVP2,#0FFH
MOVR2,#08H;8组数据
MOVR0,#DISSTART;显示存储单元首地址
MOVR1,#00H
MAIN1:
MOVA,R1
MOV@R0,A;将0-7分别存入显示存储单元
INCR1
INCR0
DJNZR2,MAIN1;
LOOP:
ACALLPLAY;循环显示
SJMPLOOP
;----------------------------------------------------------
;显示子程序
;----------------------------------------------------------
PLAY:
MOVR0,#DISSTART;获得显示单元首地址
MOVR1,#0FEH;位码初始值
MOVR2,#08H;有8位数码管显示
DISP1:
MOVA,@R0;取要显示的数据
MOVDPTR,#TAB_NU;置段码表首址
MOVCA,@A+DPTR;根据数据查段码表
MOVLED_DATA,A;段码输出
MOVP2,R1;位码输出
MOVA,R1;准备下一次显示的位码
RLA
MOVR1,A;保存位码
INCR0;取下一个显存单元地址
ACALLDELAY;调用延时
DJNZR2,DISP1;8位数码管是否显示完
MOVP2,#0FFH;关闭显示
RET;显示完成,返回
;---------------------------------------------------------
;1MS延时子程序
;---------------------------------------------------------
DELAY:
MOVR6,#5
DEL1:
MOVR7,#93
DEL2:
DJNZR7,DEL2;第一层循环
DJNZR6,DEL1;第二层循环
RET
;---------------------------------------------------------
;段码表
;---------------------------------------------------------
TAB_NU:
DB0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H
DB090H,088H,083H,0C6H,0A1H,086H,08EH,0FFH
;---------------------------------------------------------
END;结束
;---------------------------------------------------------
实验七外部中断
1.实验任务
利用单片机的外部中断功能进行计数,然后将计数值输出到数码管上显示。
K5键-计数值加1(外部中断0)
K6键-计数值减1(外部中断1)
1位数码管静态显示方法,最大准确显示的计数值9。
2.实验线路
3.实验步骤
将JP21的8个短接子全部用短接帽短接,使DG0~DG7与P2端口接通。
将JP22的9个短接子全部用短接帽短接,使A~DP与P0端口接通,VCC向数码管模块供电。
将JP8的8个短接子全部用短接帽短接,使独立按键与相应的端口接通。
将1602LCD的使能跳线JP24短接在OFF端以禁用1602LCD,避免1602LCD干扰数码管显示
4.程序流程图
汇编源程序
K5BITP3.2
K6BITP3.3
COUNTEQU30H;计数单元
;*******************************************************************
ORG0000H
AJMPMAIN
ORG0003H
AJMPINT0_EX0
ORG0013H
AJMPINT1_EX1
ORG0050H
;*********************************************************
;主程序
;*********************************************************
MAIN:
MOVSP,#60H
MOVP0,#0FFH
MOVP2,#0FEH
MOVDPTR,#TAB_NU
MOVCOUNT,#00H;计数单元清零
MOV@R0,#00H;清显存单元
CLRIT0;INT0为电平触发
;SETBIT0;INT0为下降沿触发
CLRIT1;INT1为电平触发
;SETBIT1;INT1为下降沿触发
SETBEA
SETBEX0
SETBEX1
SJMP$
;*********************************************************
;INT0外部中断服务子程序(加计数)
;*********************************************************
INT0_EX0:
INCCOUNT;计数值加1
MOVA,COUNT
MOVCA,@A+DPTR
MOVP0,A
ACALLDELAY1MS
RETI
;*********************************************************
;INT1外部中断服务子程序(减计数)
;*********************************************************
INT1_EX1:
DECCOUNT;计数值减1
MOVA,COUNT
MOVCA,@A+DPTR
MOVP0,A
ACALLDELAY1MS
RETI
DELAY1MS:
;延时1ms
MOVR6,#5
DEL1:
MOVR7,#93
DJNZR7,$
DJNZR6,DEL1
RET
TAB_NU:
DB0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H
DB090H,088H,083H,0C6H,0A1H,086H,08EH,0FFH
END
实验十二RS232串口通信
1.实验任务
先通过串口向计算机发送中英文字符串和字符。
英文字符串:
welcometoMeasurement&ControlLab
中文字符串:
工程学院测控实验室
然后从机等待接收主机发送来的数据,当从机接收到主机发送来的数据后,将此数据再发送回主机。
2.实验线路
图6.31RS232串口通信电路
3.实验步骤
短接JP26短接子,使芯片的串行端口(RXD-P3.0、TXD-P3.1)与RS232接口芯片MAX232C连接。
将JP19和JP20短接子上的短接帽全部取掉。
上位机使用伟纳编写的“串口TT”(comTT)串口调试程序。
1)“串口TT”参数设定:
端口号:
COM1(实际使用的端口号)波特率:
9600
数据位:
8校验位:
None停止位:
1
2)将接收信息框(左上信息框)显示模式均设置为文本模式。
3)将发送信息框(左下信息框)显示模式均设置为文本模式。
4.程序流程图
图6.33EX12_UART流程图
5.汇编源程序
;*******************************************************************
;**
;*描述:
*
;**
;*1、单片机发送字符串给主机*
;*2、将接收的数据再发回主机*
;**
;******************************************************************/
ORG0000H
AJMPMAIN
ORG0050H
;*********************************************************
;主程序
;*********************************************************
MAIN:
MOVSP,#60H
MOVP0,#0FFH
MOVP2,#0FFH
MOVTMOD,#20H;定时器1工作于8位自动重载模式,用于产生波特率
MOVTH1,#0FDH
MOVTL1,#0FDH;波特率9600
MOVSCON,#50H;设定串行口工作方式1,接收使能
ANLPCON,#00H;波特率不倍增
SETBEA;允许总中断
SETBTR1;启动定时器1
MOVR5,#100
ACALLDELAY
MOVDPTR,#TAB_ENG;字串表格地址
ACALLSEND_STRING
MOVR5,#100
ACALLDELAY
MOVDPTR,#TAB_CHS;字串表格地址
ACALLSEND_STRING
MOVR5,#100
ACALLDELAY
MOVA,#'O';发送字符“O”
ACALLTXD_CHAR
MOVA,#'K';发送字符“K”
ACALLTXD_CHAR
MOVA,#0AH;换行
ACALLTXD_CHAR
LOOP:
ACALLRXD_CHAR;接收数据
ACALLTXD_CHAR;发送数据
AJMPLOOP
;*********************************************************
;发送数据子程序
;*********************************************************
TXD_CHAR:
MOVSBUF,A;发送数据
JNBTI,$;等特数据传送完毕
CLRTI;清除中断标志
RET
;*********************************************************
;接收数据子程序
;*********************************************************
RXD_CHAR:
JNBRI,$;等特数据接收完毕
MOVA,SBUF;接收数据
CLRRI;清除中断标志
RET
;**********************************************************
;发送字符串子程序
;**********************************************************
SEND_STRING:
CLRA
MOVCA,@A+DPTR
JZS_END;查到00H时,表示字串结束
ACALLTXD_CHAR
INCDPTR;下一字符
SJMPSEND_STRING
S_END:
RET
;*********************************************************
;延时10MS子程序
;*********************************************************
DELAY:
MOVR6,#50
DEL1:
MOVR7,#93
DEL2:
DJNZR7,DEL2
DJNZR6,DEL1
DJNZR5,DELAY
RET
;**********************************************************
TAB_ENG:
DB"WelcometoMeasurement&ControlLab"
DB0AH;换行
DB00H
TAB_CHS:
DB"工程学院测控实验室"
DB0AH;换行
DB00H
;*********************************************************
END;结束
;*********************************************************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 实验