LED数码管显示实验.docx
《LED数码管显示实验.docx》由会员分享,可在线阅读,更多相关《LED数码管显示实验.docx(10页珍藏版)》请在冰豆网上搜索。
LED数码管显示实验
《微机实验》报告
实验名称LED数码管显示实验
专业班级姓名xxxxx学号
联系方式
【实验目的】
理解LED七段数码管的显示控制原理,掌握数码管与MCU的接口技术,能够编写数码管显示驱动程序;熟悉接口程序调试方法。
【任务要求】
使用C8051F310单片机控制数码管显示器,要求利用末位数码管循环显示数字0-9,显示切换频率为1Hz。
【设计思路】
对振荡器信号频率进行8分频,再对定时器进行48分频,以使在一次定时时间范围内实现1s定时。
采用查询方式进行定时。
位选信号选定末位数码管不改变。
利用顺序查表法逐个取出显示段码数据,寄存器R0的值自增1并赋与寄存器A以改变下一次显示所取的段码数据(查表过程使用代码“MOVCA,@A+DPTR”)。
当寄存器R0的值增至09H后,跳转至开头,重新开始下一轮显示。
【资源分配】
利用查表方式取显示数据段码,段码数据置于数据表TABLE中。
工作寄存器R0所存数据用于调整查表操作所取数据及决定是否开始下一轮的显示。
数据指针DPTR用于查表。
P1口用于输出显示数据段码信号。
定时器T0用于实现1s定时。
【流程图】
【源代码】
;;------------------------------------
;-GeneratedInitializationFile--
;------------------------------------
;--------------------------------------
;Desginedby:
xxxxx
;Date:
11月7号
;class:
xxxxx
;number:
xxxxx
;--------------------------------------
$include(C8051F310.inc)
ORG0000H
LJMPMAIN
ORG1000H
CLRP3.1
MAIN:
LCALLInit_Device;设备初始化
CLRP3.1;关闭蜂鸣器
MOVSP,#60H;设置堆栈保护现场
MOVDPTR,#TABLE;通过dptr访问数据表table
CLRP0.6;选择最后一个数码管显昃数字
CLRP0.7
MOVTMOD,#01H;设定定时器工作方式0
MOVTH0,#06H;给定使砌设订初值
MOVTL0,#0C6H
BEGIN:
MOVR0,#00H;通过R0实现0到9的递增
MOVA,R0
MOVCA,@A+DPTR
MOVP1,A;数码管显示数据
SETBTR0;启动定时器
YICHU:
JNBTF0,YICHU;判断是否溢出
CLRTR0;;停止计时
CLRTF0;;溢出位复位
CJNER0,#09H,CONTINUE;未溢出时继续显示
SJMPBEGIN;溢出返回执行
CONTINUE:
INCR0;R0++
MOVA,R0
MOVCA,@A+DPTR
MOVP1,A
SETBTR0
SJMPYICHU
TABLe:
DB0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H;表中存放的0-9
;Peripheralspecificinitializationfunctions,
;CalledfromtheInit_Devicelabel
PCA_Init:
anlPCA0MD,#0BFh
movPCA0MD,#000h
ret
Timer_Init:
movTMOD,#001h
movCKCON,#002h
ret
Port_IO_Init:
;P0.0-Unassigned,Push-Pull,Digital
;P0.1-Unassigned,Open-Drain,Digital
;P0.2-Unassigned,Push-Pull,Digital
;P0.3-Unassigned,Push-Pull,Digital
;P0.4-Unassigned,Push-Pull,Digital
;P0.5-Unassigned,Push-Pull,Digital
;P0.6-Unassigned,Push-Pull,Digital
;P0.7-Unassigned,Push-Pull,Digital
;P1.0-Unassigned,Open-Drain,Digital
;P1.1-Unassigned,Open-Drain,Digital
;P1.2-Unassigned,Open-Drain,Digital
;P1.3-Unassigned,Open-Drain,Digital
;P1.4-Unassigned,Open-Drain,Digital
;P1.5-Unassigned,Open-Drain,Digital
;P1.6-Unassigned,Open-Drain,Digital
;P1.7-Unassigned,Open-Drain,Digital
;P2.0-Unassigned,Open-Drain,Digital
;P2.1-Unassigned,Open-Drain,Digital
;P2.2-Unassigned,Open-Drain,Digital
;P2.3-Unassigned,Open-Drain,Digital
movP0MDOUT,#0FDh
movXBR1,#040h
ret
;Initializationfunctionfordevice,
;CallInit_Devicefromyourmainprogram
Init_Device:
lcallPCA_Init
lcallTimer_Init
lcallPort_IO_Init
ret
end
【程序测试方法与结果、软件性能分析】
1、软件仿真结果
P0(选定末位数码管)
P1(0~9显示数据输出信号)
0
1
2
3
4
5
6
7
8
9
2、硬件运行结果
【思考题】
●数码管采用动态驱动方式时刷新频率应如何选择?
为什么?
答:
利用人眼视觉暂留效应,若在一定时间范围内,数码管笔端频率越快,则人眼看不出闪烁。
因此,需选择刷新频率高一些,则可看清楚数字。