实验四LED数码管显示程序报告Word文档格式.docx

上传人:b****2 文档编号:4182279 上传时间:2023-05-02 格式:DOCX 页数:17 大小:127.23KB
下载 相关 举报
实验四LED数码管显示程序报告Word文档格式.docx_第1页
第1页 / 共17页
实验四LED数码管显示程序报告Word文档格式.docx_第2页
第2页 / 共17页
实验四LED数码管显示程序报告Word文档格式.docx_第3页
第3页 / 共17页
实验四LED数码管显示程序报告Word文档格式.docx_第4页
第4页 / 共17页
实验四LED数码管显示程序报告Word文档格式.docx_第5页
第5页 / 共17页
实验四LED数码管显示程序报告Word文档格式.docx_第6页
第6页 / 共17页
实验四LED数码管显示程序报告Word文档格式.docx_第7页
第7页 / 共17页
实验四LED数码管显示程序报告Word文档格式.docx_第8页
第8页 / 共17页
实验四LED数码管显示程序报告Word文档格式.docx_第9页
第9页 / 共17页
实验四LED数码管显示程序报告Word文档格式.docx_第10页
第10页 / 共17页
实验四LED数码管显示程序报告Word文档格式.docx_第11页
第11页 / 共17页
实验四LED数码管显示程序报告Word文档格式.docx_第12页
第12页 / 共17页
实验四LED数码管显示程序报告Word文档格式.docx_第13页
第13页 / 共17页
实验四LED数码管显示程序报告Word文档格式.docx_第14页
第14页 / 共17页
实验四LED数码管显示程序报告Word文档格式.docx_第15页
第15页 / 共17页
实验四LED数码管显示程序报告Word文档格式.docx_第16页
第16页 / 共17页
实验四LED数码管显示程序报告Word文档格式.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

实验四LED数码管显示程序报告Word文档格式.docx

《实验四LED数码管显示程序报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《实验四LED数码管显示程序报告Word文档格式.docx(17页珍藏版)》请在冰点文库上搜索。

实验四LED数码管显示程序报告Word文档格式.docx

R0-数码管计数器

数据表TABLE-存储对应段码的值

R1-TH0初值

R2-TLO初值

R3-判断标志位,选择对应的数码管亮

R4、R5、R6、R7对应数位显示计数器

R0-数码管计数器

KINT-加速键

四、流程图

1、基础部分

2、提高部分

3、ITOP中断部分

4、IT1P部分

5、INT0部分

五、源代码(含文件头说明、语句行注释)

1、基础部分

;

------------------------------------

-GeneratedInitializationFile--

$include(C8051F310.inc)

ORG0000H

LJMPMAIN

ORG1000H

CLRP3.1

MAIN:

LCALLInit_Device;

设备初始化

CLRP3.1

MOVSP,#40H

MOVDPTR,#TABLE;

赋予DPTR数据表table地址

CLRP0.6;

选择最后一个数码管

CLRP0.7

MOVTMOD,#01H;

设定时器TO为工作方式1

MOVTH0,#06H

MOVTL0,#0C6H

START:

MOVR0,#00H;

通过R0实现0到F

SJMPDISPLAY

LOOP:

JNBTF0,LOOP;

判断是否溢出

CLRTR0;

;

停止计时

CLRTF0;

溢出复位

CJNER0,#10H,DISPLAY;

未溢出时继续显示

SJMPSTART;

溢出返回执行

DISPLAY:

MOVA,R0

MOVCA,@A+DPTR

MOVP1,A

SETBTR0

INCR0

SJMPLOOP

TABLE:

DB0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H,0EEH,3EH,9CH,7AH,9EH,8EH

publicInit_Device

INITSEGMENTCODE

rsegINIT

Peripheralspecificinitializationfunctions,

CalledfromtheInit_Devicelabel

PCA_Init:

anlPCA0MD,#0BFh

movPCA0MD,#000h

ret

Timer_Init:

movTMOD,#001h

movCKCON,#002h

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

Initializationfunctionfordevice,

CallInit_Devicefromyourmainprogram

Init_Device:

lcallPCA_Init

lcallTimer_Init

lcallPort_IO_Init

end

2、提高部分

ORG0000H

LJMPMAIN

ORG0003H

LJMPINT0

ORG000BH

LJMPIT0P

ORG001BH

LJMPIT1P

ORG0100H

LCALLInit_Device

CLRP2.0

MOVSP,#40H;

配置堆栈指针

MOVDPTR,#TABLE;

移动DPTR指针到表格

MOVTH1,#81H;

T1初始化

MOVTL1,#81H

MOVR4,#00H

MOVR5,#00H

MOVR6,#00H

MOVR7,#00H

MOVA,#00H

MOVR1,#83H

MOVR2,#5CH

SETBTR1

LCALLINITIAL;

T0初始化

MOVR0,#00H

MOVA,R0;

提取R0对应的段码

MOVCA,@A+DPTR

CLRP0.6

MOVP1,A;

显示初始化

SETBTR0;

开启计时

LJMPSTAY;

等待中断

IT0P:

CLRTR0;

停止计时器

CLRTF0;

清零溢出位

LCALLINITIAL;

给T0赋值

INCR0;

段码指示器加1

JBP2.0,SKIP1

LCALLCOUNT

JMPSKIP2

SKIP1:

CJNER0,#0FH,RETURN;

判断是否显示完毕

MOVR0,#00H;

初始化R0重新循环

RETURN:

MOVA,R0;

取当前应显示字符

MOVP1,A;

开始显示

SKIP2:

SETBTR0;

开始计时

RETI

IT1P:

CJNER3,#00H,L1

MOVR3,#04H

L1:

LJMPCHOOSE0

L2:

MOVCA,@A+DPTR

MOVP1,A

LCALLJUDGE0

SETBEX0

RETI

COUNT:

INCR4;

内部计数器

CJNER4,#0AH,RETURN2

MOVR4,#00H

INCR5

CJNER5,#0AH,RETURN2

MOVR5,#00H

INCR6

CJNER6,#0AH,RETURN2

INCR7

RET

CJNER7,#02H,RETURN2

MOVR7,#00H

RETURN2:

RET

CHOOSE0:

MOVA,R3

CJNEA,#04H,CHOOSE1

DECR3

MOVA,R4

LJMPL2

CHOOSE1:

CJNEA,#03H,CHOOSE2

DECR3

MOVA,R5

CHOOSE2:

CJNEA,#02H,CHOOSE3

MOVA,R6

CHOOSE3:

MOVA,R7

JUDGE0:

CJNER3,#03H,JUDGE1

CLRP0.7

JUDGE1:

CJNER3,#02H,JUDGE2

CJNER7,#00H,DENT1

CJNER6,#00H,DENT1

CJNER5,#00H,DENT1

MOVP1,#00H

DENT1:

SETBP0.6

JUDGE2:

CJNER3,#01H,JUDGE3

CJNER7,#00H,DENT2

CJNER6,#00H,DENT2

DENT2:

SETBP0.7

JUDGE3:

CJNER7,#00H,DENT3

MOVP1,#00H

RET

DENT3:

SETBP0.7

INITIAL:

MOVTH0,R1

MOVTL0,R2

INT0:

CLREX0

MOVR1,#0F3H

MOVR2,#89H

STAY:

SJMP$

DB0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H

movTMOD,#021h

Interrupts_Init:

movIE,#08Bh

lcallInterrupts_Init

六、程序测试方法与结果

基础部分:

单片机按照规定频率显示0-F

在C8051F310单片机开发板烧录代码:

不按KINT键时,数码管以0.5s的间隔依次显示数,按下KINT键,数码管显示速率会在当前的基础上加快十倍。

七、心得体会

通过此次单片机实验编程,对于定时器中断,外部中断的使用和理解都更上了一个层次。

按键触发中断也显得更加简单。

对于单片机的结构和工作方式理解有一定提高。

也尝试使用4*4键盘,F1控制数码管暂停,F2控制数码管继续显示,F3控制数码管复位,获得成功的实验现象,对于键盘扫描控制程序有了更加深刻的认识。

在程序编程开始阶段,会出现001的情况,通过对控制数码管显示部分程序增加条件语句判断,成功修复了程序BUG,有较高的成就感。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2