找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7918|回复: 5
收起左侧

C51单片机+单个74HC595动态扫描4位数码管(原理图+实物制作+源码)

  [复制链接]
ID:424598 发表于 2018-12-8 13:20 | 显示全部楼层 |阅读模式
先上原理图
74HC595 4位数码管.png


根据原理图焊好的板子
数码管位用的是圆孔排插,方便更换数码管
IMG_20181208_130706.jpg
反面
IMG_20181208_130724.jpg


开始测试
四位数码管
IMG_20181208_124659.jpg


四位时钟数码管
IMG_20181208_124525.jpg


为了不占贴子长度, 源码贴在二楼

C51 单个74HC595动态扫描4位数码管.zip

23.76 KB, 下载次数: 158, 下载积分: 黑币 -5

评分

参与人数 1黑币 +100 收起 理由
admin + 100 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:424598 发表于 2018-12-8 13:21 | 显示全部楼层
  1. /***********74HC595动态扫描4位数码管************/
  2. //MCU:AT89S52RC
  3. //晶振:11.0592M.
  4. //采用4位数码管
  5. /***************************************************/
  6. #include<reg51.h>
  7. #include <INTRINS.H>
  8. #define uint unsigned int
  9. #define uchar unsigned char
  10. #define nop() _nop_();_nop_();

  11. sbit CLK=P2^0; //74HC595的11引脚
  12. sbit DAT=P2^1; //74HC595的14引脚
  13. sbit RCLK=P2^2;        //74HC595的12引脚
  14. sbit CS1=P2^3; //数码管段位COM1(公共端)即数码管的12脚
  15. sbit CS2=P2^4; //数码管段位COM2(公共端)即数码管的9脚
  16. sbit CS3=P2^5; //数码管段位COM3(公共端)即数码管的8脚
  17. sbit CS4=P2^6; //数码管段位COM4(公共端)即数码管的6脚

  18. //本程序支持4位共阳和共阴数码管(包插四位时钟)可根据你的数码管是共阴还是共阳,开启下面匹配的tab[]
  19. //                 0    1    2    3    4    5    6    7    8    9    A    B    C    D    E    F   全亮 全灭
  20. //uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x00,0xff}; //共阳数码管 不显示0xff 全亮0x00 只显示点0x7f
  21. uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0xff,0x00}; //共阴数码管 不显示0x00 全亮0xff 只显示点0x80
  22. uchar t;
  23. uchar count = 0;

  24. /* //延时函数
  25. void delay(uchar z)
  26. {
  27.         uchar x,y;
  28.         for(x=z;x>0;x--)
  29.                 for(y=120;y>0;y--);
  30. }
  31. */

  32. //写数码管函数
  33. void write595(unsigned char word,uchar k1)
  34. {
  35.         uchar num,c; //变量
  36.         if(k1==1){ //如果k1的值为1,则点亮时钟数码管的:点(如果是普通的四位数码管,则点亮第二位的小数点)
  37.                 num=tab[word]|0x80; //关键就在|0x80
  38.         } else {
  39.                 num=tab[word];
  40.         }
  41.         //循环8个LED
  42.         for(c=0;c<8;c++)
  43.         {
  44.            CLK=0;
  45.            DAT=num&0x80;
  46.            num=num<<1;
  47.            CLK=1;
  48.         }
  49.         RCLK=0;
  50.         //nop();
  51.         //nop();
  52.         RCLK=1;
  53. }

  54. void select1(void)
  55. { //第一位数码管
  56.         CS1=0;
  57.         CS2=1;
  58.         CS3=1;
  59.         CS4=1;
  60. }

  61. void select2(void)
  62. { //第二位数码管
  63.         CS1=1;
  64.         CS2=0;
  65.         CS3=1;
  66.         CS4=1;
  67. }

  68. void select3(void)
  69. { //第三位数码管
  70.         CS1=1;
  71.         CS2=1;
  72.         CS3=0;
  73.         CS4=1;
  74. }

  75. void select4(void)
  76. { //第四位数码管
  77.         CS1=1;
  78.         CS2=1;
  79.         CS3=1;
  80.         CS4=0;
  81. }

  82. void init() //启动定时器
  83. {
  84.     TMOD=0X01;
  85.     TH0=(65535-46080)/256;
  86.     TL0=(65535-46080)%256;
  87.     ET0=1;
  88.     EA=1;
  89.     TR0=1;
  90. }

  91. void T0_time() interrupt 1 //定时器
  92. {     
  93.         if (count == 20) {
  94.                 t++;
  95.                 count = 0;
  96.         } else {
  97.                 ++count;
  98.         }
  99. }

  100. int main(void) //主程序
  101. {   
  102. //unsigned char i;
  103.         init(); //启动定时器
  104.         while(1)
  105.    { //无限循环
  106.            if(t>9) {t=0;} //当t>9,则初始为0
  107.            write595(t,0); //要写的值
  108.            select1(); //显示第一位数码管  
  109.            //for(i=0;i<10;i++) _nop_();  
  110.            write595(t+1,1); //要写的值
  111.            select2(); //显示第二位数码管
  112.            write595(t+2,0); //要写的值
  113.            select3(); //显示第三位数码管
  114.            write595(t+3,0); //要写的值
  115.            select4(); //显示第四位数码管
  116.    }
  117. }
复制代码


回复

使用道具 举报

ID:142652 发表于 2019-2-15 21:41 | 显示全部楼层
谢谢分享的资料
回复

使用道具 举报

ID:21568 发表于 2019-6-13 11:34 | 显示全部楼层
仿真后不成功,可能程序有问题请指导。
回复

使用道具 举报

ID:621733 发表于 2019-10-10 14:48 | 显示全部楼层
下载学习学习,谢谢
回复

使用道具 举报

ID:630309 发表于 2020-6-6 07:41 | 显示全部楼层
下载学习,谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表