串口控制74HC164C语言,51单片机74HC164串口控制数码管显示
一般数码管需要接7个脚才能显示,如果用单片机本身的I/O口,虽然可以但是浪费宝贵的i/O口资源。本例用移位寄存器74HC164作为数码管驱动进行控制。
74HC164特性 是一种8位串转并口的控制芯片,用于数码管和液晶显示等.
工作电压2--6V
管脚定义:
1) A,B管脚:与门数据输入引脚。
2)QA---QH 数据并口输出引脚
3) CLR 低电平时,数据清零,不能输入
4) CLK 数据输入时钟,上升沿读取串口数据
:
时序图:
注意脉冲宽度:
本51单片机用的是12MHZ晶振,每条指令最小执行时间1uS》》1ns ,可以根据时序图随便使用.
原理图:
程序代码:
完整的keil工程文件下载地址: http://www.51hei.com/f/k164.rarORG 00H ;程序起始地址00H
START:
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: ;数码管码表
DB40H,79H,24H,30H,19H ;0,1,2,3,4
DB12H,02H,78H,00H,10H ;5,6,7,8,9
END
串口控制74HC164C语言,51单片机74HC164串口控制数码管显示相关推荐
- 51单片机AD转换pcf8591+数码管显示+Proteus仿真二
51单片机AD转换pcf8591+数码管显示+Proteus仿真二
- 基于51单片机的8位数码管显示的可调时电子时钟
基于51单片机的8位数码管显示的可调时电子时钟 本人大二本科生,第一次发东西,功能比较简单,代码有点复杂,希望能有大神指正. 基于51单片机的不可调时间的时钟显示,晶振为11.0592MHZ,60H ...
- 51单片机DS18B20测温数码管显示例程(Proteus仿真+程序)
编号:19 51单片机DS18B20测温数码管显示例程 功能描述: 本设计由STM32单片机+DS18B20温度传感器+四段数码管显示模块组成. 1.主控制器是51单片机 2.DS18B20温度传感器 ...
- 2440 8字数码管 显示0到10 c语言,51单片机对8位数码管依次显示0-7的设计
共阳极数组0~9:display[]={0xC0,0xF9,0xA4,0xB0,0x91,0xA2,0x82,0xF8,0x80,0x90} 共阳极数组A~F:display[]={0x88,0x83 ...
- 51单片机学习笔记-2数码管显示
2 数码管显示 [toc] 注:笔记主要参考B站江科大自化协教学视频"51单片机入门教程-2020版 程序全程纯手打 从零开始入门". 注:工程及代码文件放在了本人的Github仓 ...
- 51单片机入门之五:数码管显示(动态),单片机驱动数码
本文旨在介绍单片机入门的基础知识,为初接触或即将接触单片的新手提供一个入门指导.本文章会陆续推出,隔几天一个章节.所使用单片机为ATMEL公司的AT89C52,软件为PROTEUS和KEIL;只提供原 ...
- 基于51单片机的温度控制系统数码管显示蜂鸣器报警proteus仿真原理图PCB
功能: 0.本系统采用STC89C52作为单片机 1.系统实时监测并显示当前温度,并通过四位数码管显示 2.超过设定阈值,蜂鸣器将报警,同时控制相应继电器实现降温或者加热 3.系统具备三个功能按键,可 ...
- 4个led数码管从左至右显示123451单片机c语言,51单片机:4位数码管动态显示,从1234开始,每次按S1键加1...
#include #include #define uint unsigned long #define uchar unsigned char sbit N1 = P1^0; sbit N2 = P ...
- 基于51单片机及DS18B20温度传感器数码管显示程序
#include<reg52.h> #include<intrins.h> sbit DQ=P1^4;//温度采集 sbit latch1=P2^2;//段锁存 sbit la ...
最新文章
- Oracle11g创建表空间
- 【记录】用Javascript实现文本框textarea高度随内容自动适应增长收缩
- Java中实现统计一个字符串在另一个字符串中出现的次数统计
- linux下设定动态库路径的命令-error while loading shared libraries: xxx.so.x错误的原因和解决办法
- Python导包、模块报错的问题
- AntDesign组件库的使用
- sdio接口_单片机基础 —— 使用SDMMC接口读写SD卡数据
- Ext.grid.GridPanel数据转json
- idea迁移到其他电脑,省去重新安装破解及配置
- 华为有意向西方公司出售 5G 技术;iOS 13 被爆漏洞;GNOME 3.34 正式发布| 极客头条...
- C# 判断程序是否已经在运行
- 大数据可能带来三方面的伦理挑战
- Recursive implementation of the Gaussian filter[翻译]
- JAVA:实现求Median中位数算法(附完整源码)
- 5个聚合导航网站,资源、工具、素材应有尽有
- html中咋样上传照片,如何通过html上传照片(自定义上传图标)
- 一根网线连接两台电脑的方法
- CME ERROR错误代码列表
- android 处理闪屏
- POJ-1436Horizontally Visible Segments