实验数码管基本输入输出实验.docx

上传人:b****7 文档编号:9457293 上传时间:2023-02-04 格式:DOCX 页数:14 大小:396.61KB
下载 相关 举报
实验数码管基本输入输出实验.docx_第1页
第1页 / 共14页
实验数码管基本输入输出实验.docx_第2页
第2页 / 共14页
实验数码管基本输入输出实验.docx_第3页
第3页 / 共14页
实验数码管基本输入输出实验.docx_第4页
第4页 / 共14页
实验数码管基本输入输出实验.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

实验数码管基本输入输出实验.docx

《实验数码管基本输入输出实验.docx》由会员分享,可在线阅读,更多相关《实验数码管基本输入输出实验.docx(14页珍藏版)》请在冰豆网上搜索。

实验数码管基本输入输出实验.docx

实验数码管基本输入输出实验

 

实验报告

 

课程名称:

PIC单片机实验

任课教师:

周燕

 

云南大学信息学院

一、实验目的

1.掌握输入、输出口的基本输入、输出功能的操作使用方法;

2.掌握B口的弱上拉功能的原理和使用方法;

3.看懂电路原理图,掌握将按键和显示电路连接到输入、输出口的连接方法;

4.进一步熟练集成开发环境的使用方法;

二、实验功能内容

一、基本输入/输出实验

功能:

本实验要求用PIC16F877A的PORTB0-5监控与之相连的六个按键KEY0-KEY5,用PORTD0-5控制与之相连的六个发光二极管LED0-LED5。

每当有按键被按下时就点亮该按键对应的发光二极管,按键被释放后就熄灭所有的发光二极管。

运行程序,不断按击KEY0-KEY5键,看LED变化情况

二、数码管显示实验

功能:

用PIC中档单片机的I/O口控制两位共阴极的数码管,显示小数“2.3”.其中数码管的7个笔段和小数点位分别用一;个的完整I/O口的8个引脚来控制,两位数码管的位选信号则用另外两个I/O口来控制。

运行程序,观察两只数码管的变化情况

三、实现功能用到的硬件电路设计和电路板的链接方法

1.基本输入输出实验

参看电路原理图

说明:

将跳线器JP_RB与KEY0-KEY5,JP_RD的LED0-LED7短接。

2.数码管实验

参看电路原理图

说明:

将跳线器JP_RB的KEY0,JP_RD的SEG_A~DP短接

四、软件设计

流程图设计

流程:

将p16f877a.inc包含进来

定义段码寄存器

定义COUNT1寄存器用于延时常数

定义COUNT2寄存器用于延时常数

定义程序其实

空指令

跳转到MAIN主程序

转到体1

将PORTE0设置为输出端口

将PORTE1设置为输出端口

将PORTD设置为输出端口

转到体0

将PORTD清零

将PORTE0清零

将PORTE1清零

将2存入W

与0FH相与屏蔽高4位

调用查表子程序获得笔段码

将断码值存入ONE_BIT

与80H相加,加入小数点段码

送出个位段码

关闭小数点后1位

选通个位显示位

调用延时子程序

将3与0FH相与屏蔽高4位

调用查表指令获得笔段码

送出3的段码

关闭个位显示位码和小数点

选通小数位显示位码

调用延时

跳回重复显示

 

3.程序设计和注释

基本输入输出

;****************************************Copyright(c)***************************************************

;**SchoolofInformationScienceandEngineering,

;**YunnanUniversity

;**

;**--------------FileInfo-------------------------------------------------------------------------------

;**Filename:

1.asm

;**LastmodifiedDate:

2010-09-15

;**LastVersion:

1.0

;**Descriptions:

;**

;**------------------------------------------------------------------------------------------------------

;**Createdby:

Zoujin

;**Createddate:

2010-09-15

;**Version:

1.0

;**Descriptions:

Theoriginalversion

;**

;********************************************************************************************************

;********************************************************************************************************

;**功能:

本实验要求用PIC16F877A的PORTB0~5监控与之相连的六个按键KEY0~KEY5,用PORTD0~5控制与之相连的六个发光

;二极管LED0~LED5。

每当有按键被按下时就点亮该按键对应的发光二极管,按键被释放后就熄灭所有的发光二极

;管。

;**说明:

将跳线器JP_RB的KEY0~KEY5,JP_RD的LED0~LED7短接。

;运行程序,不断按击KEY0~KEY5键,看LED变化情况。

;********************************************************************************************************

;**

#includep16f877a.inc

TEMPEQU20H;定义TEMP寄存器

;********************************************************************************************************

;**

ORG00H

NOP;空指令

GOTOMAIN

;**

;********************************************************************************************************

;**函数名称:

main

;**函数功能:

获取RB端口的值,判断哪个按键被按击,病点亮对应的LED,松开按键熄灭所有LED。

;**使用说明:

;********************************************************************************************************

;**

MAIN

BCFSTATUS,RP1

BSFSTATUS,RP0;转到体

CLRFOPTION_REG;开启内部弱上拉

CLRFTRISD;将PORTD设置为输出端口

MOVLWB'00111111'

MOVWFTRISB;将RB0-RB5设置为输入端口

BCFSTATUS,RP0;转到体

CLRFPORTD;将PORTD清零

LOOP

MOVFPORTB,0;是,把PORTB存到TEMP

MOVWFTEMP

COMFTEMP,1;TEMP取反

MOVLW0x3F;将F存到W寄存器

ANDWFTEMP,1

MOVFTEMP,0;将TEMP送到W寄存器

MOVWFPORTD;点亮按键有变化对应的LED

GOTOLOOP;子程序返回

;*********************************************************************************************************

END

;*********************************************************************************************************

;**EndOfFile

;*********************************************************************************************************

 

数码管显示:

;****************************************Copyright(c)***************************************************

;**SchoolofInformationScienceandEngineering,

;**YunnanUniversity

;**

;**--------------FileInfo-------------------------------------------------------------------------------

;**Filename:

2.asm

;**LastmodifiedDate:

2010-09-15

;**LastVersion:

1.0

;**Descriptions:

;**

;**------------------------------------------------------------------------------------------------------

;**Createdby:

Zoujin

;**Createddate:

2010-09-15

;**Version:

1.0

;**Descriptions:

Theoriginalversion

;**

;********************************************************************************************************

;********************************************************************************************************

;**功能:

用PIC中档单片机的I/O口控制两位共阴极的数码管,显示小数“.3”.其中数码管的个笔段和小数点位分别用一

;个的完整I/O口的个引脚来控制,两位数码管的位选信号则用另外两个I/O口来控制。

;**说明:

将跳线器JP_RB的KEY0,JP_RD的SEG_A~DP短接。

;运行程序,观察两只数码管的变化情况。

;********************************************************************************************************

;**

#includep16f877a.inc

ONE_BITEQU20H;定义TEMP寄存器

COUNT1EQU21H;定义COUNT1寄存器

COUNT2EQU22H;定义COUNT2寄存器

;********************************************************************************************************

;**

ORG00H

NOP;空指令

GOTOMAIN

;**

;********************************************************************************************************

;**函数名称:

main

;**函数功能:

通过RE端口来控制选通哪一只数码管,通过RD端口来控制数码管输出结果。

;**使用说明:

;********************************************************************************************************

;**

MAIN

BCFSTATUS,RP1

BSFSTATUS,RP0;转到体

BCFTRISE,0;将PORTE0设置为输出端口

BCFTRISE,1;将PORTE1设置为输出端口

CLRFTRISD;将PORTD设置为输出端口

BCFSTATUS,RP0;转到体

CLRFPORTD;将PORTD清零

BCFPORTE,0;将PORTE0清零

BCFPORTE,1;将PORTE1清零

LOOP

MOVLW.2

ANDLW0FH

CALLTABLE;调用查表指令

MOVWFONE_BIT

MOVLW80H

ADDWFONE_BIT,0

MOVWFPORTD;显示个位段码和小数点

BCFPORTE,0;关闭小数点后位显示位码

BSFPORTE,1;选通个位显示位码

CALLDELAY_20ms

MOVLW.3

ANDLW0FH

CALLTABLE;调用查表指令

MOVWFPORTD;显示小数段码

BCFPORTE,1;关闭个位显示位码和小数点

BSFPORTE,0;选通小数位显示位码

CALLDELAY_20ms

GOTOLOOP

;**

;********************************************************************************************************

;查表子程序,用于显示段码数字

;数码管为共阴数码管

;********************************************************************************************************

;**

TABLE

ADDWFPCL,1

RETLW3FH;"0"

RETLW06H;"1"

RETLW5BH;"2"

RETLW4FH;"3"

RETLW66H;"4"

RETLW6DH;"5"

RETLW7DH;"6"

RETLW07H;"7"

RETLW7FH;"8"

RETLW6FH;"9"

;**

;********************************************************************************************************

;**函数名称:

DELAY_20ms

;**函数功能:

延时ms

;**入口参数:

;**出口参数:

;********************************************************************************************************

;**

DELAY_20ms

MOVLWD'28';设置外部循环次数

MOVWFCOUNT1;

LOOP1

MOVLWD'237';设置内部循环次数

MOVWFCOUNT2;

DECFSZCOUNT2,1;内部循环变量自减,为则跳转

GOTO$-1;

DECFSZCOUNT1,1;外部循环变量自减,为则跳转

GOTOLOOP1;

RETURN;返回主程序

;*********************************************************************************************************

END

;*********************************************************************************************************

;**EndOfFile

;*********************************************************************************************************

五、实验结果与分析

 

六、实验小结(碰到的问题及解决方法)

1.在实验中,开始无法使LED管发光,最后发现是跳线器没有接对

2注意弱上拉的开启设置,数码管的表的设置;

3注意在数码管实验中的公共端的设置;

4实验前先检查电路是否连接完好,若没有,用跳脱线将所要用的电路连接起来,否则无法显示连接状态和显示结果;

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

当前位置:首页 > 人文社科 > 军事政治

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1