串口控制74HC164C语言,51单片机74HC164串口控制数码管显示

本文介绍了一段使用51单片机进行数码管显示的程序,涉及晶振12MHz下的指令执行时间、数码管显示代码及移位寄存器操作。程序通过查表方式获取数码管段码,并利用移位寄存器产生并行输出数据,实现数码管的动态显示。详细代码和工程文件可在提供的链接中下载。
摘要由CSDN通过智能技术生成

注意脉冲宽度:

e3373247dd4b266c5bcd4b66b96cb788.png

647c03061b807ec78d9ec359e9d95a9c.png

本51单片机用的是12MHZ晶振,每条指令最小执行时间1uS》》1ns ,可以根据时序图随便使用.

原理图:

6b6a375d12d66e6b84a814c4cdb5c358.png

程序代码:

完整的keil工程文件下载地址:http://www.51hei.com/f/k164.rar

ORG 00H ;程序起始地址00H

START:本文引用地址:http://www.eepw.com.cn/article/201612/324309.htm

MOV 50H,#9 ;立即数9放入50H单元 第一个数码管显示9

MOV 51H,#4 ;立即数4放入51H单元 第二个数码管显示4

MOV R0,#50H ;R0=50

MOV R1,#60H ;R1=60

MOV R2,#2

DP0:

MOV DPTR,#TABLE ;将码表首地址给DPTR指针

MOV A,@R0 ;将50H单元中的9给A

MOVC A,@A+DPTR ;查表得到(9+码表首地址)合成的地址中的数给累加器A

MOV @R1,A ;把立即数9的段码,放入 60H单元中

INC R1 ;R1=61H

INC R0 ;R0=51H

DJNZ R2,DP0 ;如果R2不等于0,则跳转到DP0

//---------------从上面计算可得到: (60H)=10H,(61H)=19H

MOV R0,#60H ;R0=60重新建立映射关系

MOV R1,#2 ;数码管有2个段码

DP1:

MOV R2,#8 ;一个71HC164移位寄存器需要移动8次,以产生并口输出数据给数码管

MOV A,@R0 ;(60H)中的数9的段码,赋给累加器A

DP2:

RLC A ;带进位标志的左移操作

MOV P2.0,C ;串行输出一位段码数据

CLR P2.1 ;

SETB P2.1 ;来个上升沿以产生移位时钟, 每次来这个脉冲,移位寄存器上的数往后面移动一位,原来A=1,

;来个脉冲后B=1,在来个脉冲后,C=1,以此类推。。。。。

DJNZ R2,DP2 ;判断8位段码是否输出完整

INC R0 ;下一个需要输出的段码地址加1

DJNZ R1,DP1 ;判断2个段码是否输出完毕

JMP $ ;程序停在此处

TABLE: ;数码管码表

DB 40H,79H,24H,30H,19H ;0,1,2,3,4

DB 12H,02H,78H,00H,10H ;5,6,7,8,9

END

4533f5df30476ce33a1b815a4b1c199a.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值