一般数码管需要接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串口控制数码管显示相关推荐

  1. 51单片机AD转换pcf8591+数码管显示+Proteus仿真二

    51单片机AD转换pcf8591+数码管显示+Proteus仿真二

  2. 基于51单片机的8位数码管显示的可调时电子时钟

     基于51单片机的8位数码管显示的可调时电子时钟 本人大二本科生,第一次发东西,功能比较简单,代码有点复杂,希望能有大神指正. 基于51单片机的不可调时间的时钟显示,晶振为11.0592MHZ,60H ...

  3. 51单片机DS18B20测温数码管显示例程(Proteus仿真+程序)

    编号:19 51单片机DS18B20测温数码管显示例程 功能描述: 本设计由STM32单片机+DS18B20温度传感器+四段数码管显示模块组成. 1.主控制器是51单片机 2.DS18B20温度传感器 ...

  4. 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 ...

  5. 51单片机学习笔记-2数码管显示

    2 数码管显示 [toc] 注:笔记主要参考B站江科大自化协教学视频"51单片机入门教程-2020版 程序全程纯手打 从零开始入门". 注:工程及代码文件放在了本人的Github仓 ...

  6. 51单片机入门之五:数码管显示(动态),单片机驱动数码

    本文旨在介绍单片机入门的基础知识,为初接触或即将接触单片的新手提供一个入门指导.本文章会陆续推出,隔几天一个章节.所使用单片机为ATMEL公司的AT89C52,软件为PROTEUS和KEIL;只提供原 ...

  7. 基于51单片机的温度控制系统数码管显示蜂鸣器报警proteus仿真原理图PCB

    功能: 0.本系统采用STC89C52作为单片机 1.系统实时监测并显示当前温度,并通过四位数码管显示 2.超过设定阈值,蜂鸣器将报警,同时控制相应继电器实现降温或者加热 3.系统具备三个功能按键,可 ...

  8. 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 ...

  9. 基于51单片机及DS18B20温度传感器数码管显示程序

    #include<reg52.h> #include<intrins.h> sbit DQ=P1^4;//温度采集 sbit latch1=P2^2;//段锁存 sbit la ...

最新文章

  1. Oracle11g创建表空间
  2. 【记录】用Javascript实现文本框textarea高度随内容自动适应增长收缩
  3. Java中实现统计一个字符串在另一个字符串中出现的次数统计
  4. linux下设定动态库路径的命令-error while loading shared libraries: xxx.so.x错误的原因和解决办法
  5. Python导包、模块报错的问题
  6. AntDesign组件库的使用
  7. sdio接口_单片机基础 —— 使用SDMMC接口读写SD卡数据
  8. Ext.grid.GridPanel数据转json
  9. idea迁移到其他电脑,省去重新安装破解及配置
  10. 华为有意向西方公司出售 5G 技术;iOS 13 被爆漏洞;GNOME 3.34 正式发布| 极客头条...
  11. C# 判断程序是否已经在运行
  12. 大数据可能带来三方面的伦理挑战
  13. Recursive implementation of the Gaussian filter[翻译]
  14. JAVA:实现求Median中位数算法(附完整源码)
  15. 5个聚合导航网站,资源、工具、素材应有尽有
  16. html中咋样上传照片,如何通过html上传照片(自定义上传图标)
  17. 一根网线连接两台电脑的方法
  18. CME ERROR错误代码列表
  19. android 处理闪屏
  20. POJ-1436Horizontally Visible Segments

热门文章

  1. Chrome/edge inspect远程调试移动设备
  2. 生鲜配送APP软件开发快速制作
  3. 【奶奶看了也不会】AI绘画 Mac安装stable-diffusion-webui绘制AI妹子保姆级教程
  4. 人事系统中如何根据打卡数据自动产生考勤记录
  5. 荣耀10鸿蒙系统禁用列表
  6. 证券基金经营机构信息技术管理办法
  7. 烟台有线电视频率与节目表
  8. uniCloud云开发
  9. MySQL学习总结(一)DB、DMBS、SQL的含义/MySQL语法规范
  10. app抓包工具_抓包助手app下载安装_抓包助手软件最新版免费下载