微机原理实验四 LED数码管显示实验.docx
- 文档编号:5359878
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:3
- 大小:16.93KB
微机原理实验四 LED数码管显示实验.docx
《微机原理实验四 LED数码管显示实验.docx》由会员分享,可在线阅读,更多相关《微机原理实验四 LED数码管显示实验.docx(3页珍藏版)》请在冰豆网上搜索。
微机原理实验四LED数码管显示实验
微机原理实验四LED数码管显示实验
微机实验余成驹光电1202班U201214134 实验名称 LED数码管显示实验指导教师 专业班级 姓名 学号 联系方式 一实验要求:
实验四LED数码管显示实验 实验目的:
理解LED七段数码管的显示控制原理,掌握数码管与MCU的接口技术, 能够编写数码管显示驱动程序;熟悉接口程序调试方法。
实验内容:
利用C8051F310单片机控制数码管显示器基本要求:
利用末位数码管循环显示数字0-F,显示切换频率为1Hz。
提高要求:
在数码管上显示0→199计数,计数间隔为秒。
二、设计思路 1基本要求:
对F310信号频率进行8分频,再对定时器进行48分频,以使在一次定时时间范围内实现1s定时。
采用查询方式进行定时。
,作为位选信号来一直选择末位数码管输出信号。
再利用R0作为相对寻址来储存数据并赋值给A。
通过MOVCA,@A+DPTR指令,利用顺序查表法取出显示段码数据。
寄存器R0自增1,并赋给A以取出下一个显示段码数据。
2提高要求:
微机实验余成驹光电1202班U201214134 依然对信号频率八分频,对定时器进行48分频,通过P0,6,进行位控选择数码管输出,定时器定时,当溢出时进入中断,并通过中断程序将段位控制按序加一,R3,R6,R7分别储存第一第二第三位数码管段位码,利用A为中间变量,通过P1输出储存的值,查表输出数码管值,达到119时结束。
三、资源分配 1基本要求:
:
位选信号端口:
位选信号端口P1:
输出段码数据R0:
存放显示数据 DPTR:
指向段码数据表首 2提高要求:
:
位选信号端口:
位选信号端口P1:
输出段码数据DPTR:
指向段码数据表首 R3,R6,R7:
分别储存第三第二第一位数码管数据 四、流程图 1基本要求 2提高要求:
主程序 微机实验余成驹光电1202班U201214134 延时程序微机实验余成驹光电1202班U201214134 接--2提高要求:
动态扫描程序 中断程序 微机实验余成驹光电1202班U201214134 五、源代码 1基本要求:
ORG0000HLJMPMAIN ORG0100HMAIN:
LCALLInit_DeviceMOVSP,#40H MOVDPTR,#TAB ;将DPTR地址指向表头 MOVTMOD,#01H ;定时器采用T0定时方式一MOVTH0,#06H ;定时器赋予初值MOVTL0,#0C6H CLR ;选择末位数码管CLR START:
MOVR0,#00H ;赋初值0CLRA MOVCA,@A+DPTR;查表输出MOVP1,A SETBTR0 ;定时器开始工作HERE:
JNBTF0,HERE;等待溢出CLRTR0CLRTF0 MOVTH0,#06H;重新赋予初值MOVTL0,#0C6H CJNER0,#0FH,NEXT;等待末位数码管到FSJMPSTARTNEXT:
INCR0 ;R0加一MOVA,R0 MOVCA,@A+DPTR MOVP1,A ;P1输出SETBTR0 SJMPHERE ;踏步
微机实验余成驹光电1202班U201214134 org1000h TAB:
DB0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0HDB0FEH,0E6H,0EEH,3EH,1AH,7AH,9EH,8EH ;------------------------------------;-GeneratedInitializationFile--;------------------------------------$include() publicInit_Device INITSEGMENTCODE rsegINIT ;Peripheralspecificinitializationfunctions,;CalledfromtheInit_DevicelabelPCA_Init:
anlPCA0MD, #0BFh movPCA0MD, #000h ret Timer_Init:
movCKCON, #002h ret Port_IO_Init:
;-Unassigned,Open-Drain,Digital ;-Unassigned,Open-Drain,Digital ;-Unassigned,Open-Drain,Digital ;-Unassigned,Open-Drain,Digital ;-Unassigned,Open-Drain,Digital ;-Unassigned,Open-Drain,Digital ;-Unassigned,Open-Drain,Digital ;-Unassigned,Open-Drain,Digital ;-Unassigned,Push-Pull,Digital ;-Unassigned,Push-Pull,Digital ;-Unassigned,Push-Pull,Digital ;-Unassigned,Push-Pull,Digital ;-Unassigned,Push-Pull,Digital ;-Unassigned,Push-Pull,Digital ;-Unassigned,Push-Pull,Digital ;-Unassigned,Push-Pull,Digital ;-Unassigned,Open-Drain,Digital 微机实验余成驹光电1202班U201214134 ;-Unassigned,Open-Drain,Digital ;-Unassigned,Open-Drain,Digital ;-Unassigned,Open-Drain,Digital movP1MDOUT,#0FFh movP2MDOUT,#0C0h movXBR1, #040h ret ;Initializationfunctionfordevice,;CallInit_DevicefromyourmainprogramInit_Device:
lcallPCA_Init lcallTimer_Init lcallPort_IO_Init ret END 2提高部分:
ORG0000H LJMPSTART ORG000BH LJMPTI00 ORG0300HSTART:
LCALLInit_Device MOVR3,#00H ;百位数码管赋予初值MOVR6,#00HMOVR7,#01HMOV61H,#40HMOV62H,#80H SETBET0 SETBEA ;十位数码管赋予初值;个位数码管赋予初值 ;开外中断T0 MOV60H,#00H ;设置位控码 MOVTMOD,#01H;选择定时器T0方式一 微机实验余成驹光电1202班U201214134 MOVTH0,#131 MOVTL0,#99MAIN:
LJMPDISP ;跳入动态输出子程序MAIN1:
LCALLCOUNTERAJMPMAIN ;重新扫描 ;=================动态输出子程序==================DISP:
MOVSP,#30H ;设置堆栈指针MOVR1,#60H ;位选指针赋初值 MOVP1,#00H ;灯全灭;=================LD0:
MOVA,@R1 ;取出位选码 ANLP0,#3FH ;将P0端口高两位置零 ORLP0,A ;输出位选信号MOVA,R7 ;取出段选码MOVDPTR,#TAB ;DPTR指向段选码表第一个数据 MOVCA,@A+DPTR;查表,取出段选码MOVP1,A ;输出段选码LCALLDL1MS ;延时1ms,灯亮1msMOVP1,#00H ;灯全灭 INCR1 ;位选指针加一MOVA,@R1 ;取出位选码 ANLP0,#3FH ;将P0端口高两位置零 ORLP0,A ;输出位选信号MOVA,R6 ;取出段选码MOVDPTR,#TAB ;DPTR指向段选码表第一个数据 MOVCA,@A+DPTR;查表,取出段选码MOVP1,A ;输出段选码LCALLDL1MS ;延时1ms,灯亮1ms ;定时器赋予初值 微机实验余成驹光电1202班U201214134 MOVP1,#00H ;灯全灭 INCR1 MOVA,@R1 ;取出位选码 ANLP0,#3FH ;将P0端口高两位置零 ORLP0,A ;输出位选信号MOVA,R3 ;取出段选码MOVDPTR,#TAB ;DPTR指向段选码表第一个数据 MOVCA,@A+DPTR;查表,取出段选码MOVP1,A ;输出段选码LCALLDL1MS ;延时1ms,灯亮1msMOVP1,#00H ;灯全灭LJMPMAIN1 ;返回主程序 ;===============延时1ms子程序============= ORG0050HDL1MS:
MOVR4,#4D1:
NOP MOVR5,#253DJNZR5,$DJNZR4,D1RET ;延时程序通过R4,R5实现 ORG0100HCOUNTER:
SETBTR0 RET ;中断程序TI00:
MOVTH0,#133;中断程序重新赋予初值 MOVTL0,#99 INCR7 ;个位加一;重新将个位归零 CJNER7,#0BH,S1;判断个位是否进位 MOVR7,#01H CJNER6,#00H,S2;判断此时十位是否显示 ;定时器开启 微机实验余成驹光电1202班U201214134 MOVR6,#01H;若不显示则开启显示S2:
INCR6 ;十位加一 CJNER6,#0BH,S1;判断十位是否进位 CJNER3,#00H,S3;判断百位是否显示 MOVR3,#01HS3:
INCR3 ;百位加一;十位重新归零 ;如果到200则数码管全熄灭;踏步停止 MOVR6,#01H MOVP1,#00H SJMP$S1:
RETI ORG0200H ;===============段选码表==============; TAB:
DB00H,0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H; $include() publicInit_Device INITSEGMENTCODE rsegINIT ;Peripheralspecificinitializationfunctions,;CalledfromtheInit_DevicelabelPCA_Init:
anlPCA0MD, #0BFh movPCA0MD, #000h ret Timer_Init:
movCKCON, #002h ret ;中断返回 CJNER3,#03H,S1;判断百位是否到2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机原理实验四 LED数码管显示实验 微机 原理 实验 LED 数码管 显示