栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

单片机实验八、数码管实验

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

单片机实验八、数码管实验

目录

一.实验目的:

二.实验内容:

三.实验步骤:

四.实验程序

五、实验结果

六、实验小结


一.实验目的:

1.掌握51单片机前后台程序结构及编程方法;

2.了解数码管段码和位码的控制。

二.实验内容:

通过手动按键K3,使得数码管0位从“0”-“f”显示

通过手动按键K4,使得数码管1位从“0”-“f”显示

三.实验步骤:

1.理解共阴极数码管工作原理。

2.理解3-8译码器工作原理.

3.查询按键小兜并使得内存单元加1。

4.依次显示数码管0,1位上变化的数据。

四.实验程序
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INT_K3;使机器执行下一条指令时无条件转移到addr16处执行程序,对应题目要求按动K3数码管0位显示次数(16进制)
ORG 0013H
LJMP INT_K4;同上,对应题目要求按动K4数码管1位显示次数(16进制)

ORG 0030H

MAIN:

SETB EA;EA置1,打开总中断
SETB IE0;允许定时器0中断   
SETB IE1;允许外部中断

CLR IT0 ;令中断0为电平触发,这个方式需要有延时程序。否则,单片机处理速度快,按一下按键,已经处理了很多个低电平中断了
CLR IT1;外部中断1以低电平方式触发   

SETB EX0;外部中断INT0的中断允许EX0=1打开外部中断
SETB EX1;打开定时器1的中断

MOV DPTR,#TAB;将表的首地址赋值给数据指针DPTR
MOV R5,#0;将寄存器R5清零
MOV R6,#0;将寄存器R6清零

L1:;本实验应用了3-8译码器的原理,本句指令为3-8评码器输出Y1
ACALL LOOP;调用循环,显示F后要求重新为0,不是进位变成1,需要用循环查表,此处为调用循环指令
LJMP L1;转移至L1

INT_K3:
ACALL LOOP
JNB P3.2,INT_K3;控制数码管0位
INC R5;R5内容加一
CJNE R5,#16,EIXT;判断R5是否为16,如果是的
MOV R5,#0;将R5清零(不进位)
RETI;中断返回指令

INT_K4:
ACALL LOOP
JNB P3.3,INT_K4;控制数码管1位
INC R6;R6内容加一
CJNE R6,#16,EIXT;判断R6是否为16,如果是的
MOV R6,#0;将R6清零(不进位
RETI;中断返回指令

LOOP:
MOV P2,#11111111B;将二进制数11111111B传送到P2锁存器中     
MOV A,R5;
MOVC A,@A+DPTR;将形成的新地址中的数取出给A
MOV P0,A

ACALL DELAY;调用延时

MOV A,#11111011B
MOV P2,A;将二进制数11111011B传送到P2锁存器中  
MOV A,R6
MOVC A,@A+DPTR;将形成的新地址中的数取出给A
MOV P0,A

ACALL DELAY;调用延时

RET

EIXT:

RETI

DELAY:

MOV R1,#10

DELY1: MOV R2,#10

DJNZ R2,$;R2内容减一,非0跳转

DJNZ R1,DELY1;

RET


TAB:

DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H;端口控制状态值
END

五、实验结果

 

 

 

 

六、实验小结

 红外线对数码管有影响,红外源从数码管旁经过一次,即使没有按键,数码管的数值也会加一,所以当按动一次数值加多了的话,可以尝试一下将红外源远离单片机。要求不要有进位,即显示F后不可以为1,所以应用了循环查表。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/976990.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号