单片机
返回首页

51单片机+74HC595驱动数码管程序

2015-06-26 来源:51hei

这里是电路图:

完整的源码和图纸下载地址: http://www.51hei.com/bbs/dpj-20392-1.html
下面是51单片机驱动74hc595芯片的程序:     
#include                            //包含51单片机的头文件
#include
#define uint unsigned int
#define uchar unsigned char

//sbit sin_595    =P1^0;
//sbit rclk_595   =P1^1;
//sbit sclk_595   =P1^2;
//sbit s_clr      =P1^3;
sbit  a_cp_595   =P2^4;      //串行移位时钟脉冲  sh_cp_595 
sbit  b_cp_595   =P2^3;      //输出锁存器控制脉冲 st_cp_595
//sbit  _oe_595    =P1^5;      //8位并行输出使能/禁止(高阻态)
sbit  ds_595    =P2^2;      //串行数据输入
extern uchar  datas[6];    //存放6个数码管的显示数字
 
uchar  ledcode[]={
 0xC0,  // 0
 0xF9,  // 1
 0xA4,  // 2
 0xB0,  // 3
 0x99,  // 4
 0x92,  // 5
 0x82,  // 6
 0xF8,  // 7
 0x80,  // 8
 0x90,  // 9
 0x88,  // A
 0x83,  // B
 0xC6,  // C
 0xA1,  // D
 0x86,  // E
 0x8E  // F
};
 
void delay(uint z)
{
 uint t1,y;
 for(t1=z;t1>0;t1--)
  for(y=110;y>0;y--);
}
 
void led_display(void)
{  
   uchar i,j;
   bit testb;
   uchar bdata movebit[6];
   uchar bdata test; 
    //_oe_595=0;                         //选中数码管
   for(i=0;i<6;i++)
   movebit[i]=ledcode[datas[i]];
  // P1=0;
   delay(1);
   for(i=0;i<6;i++)                         //数据移位
   {
   test=movebit[i];
   for(j=0;j<8;j++)
   {
   testb=test&0x80;
   test=test<<1;
   if(testb)
   {
    ds_595=1; 
   }
   else
   {
 ds_595=0;
   }
 a_cp_595=1;
   a_cp_595=0;
   }                                //数据移位  
   }
   b_cp_595=0;
   b_cp_595=1;
   b_cp_595=0;
        
}
进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 家用电源无载自动断电装置的设计与制作

  • 使用ESP8266从NTP服务器获取时间并在OLED显示器上显示

  • 用NE555制作定时器

  • RS-485基础知识:处理空闲总线条件的两种常见方法

  • 带有短路保护系统的5V直流稳压电源电路图

  • 如何调制IC555振荡器

    相关电子头条文章