找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1715|回复: 0
收起左侧

单片机连接74hc59驱动数码管

[复制链接]
ID:357812 发表于 2018-6-24 15:36 | 显示全部楼层 |阅读模式
程序如下:


#include <reg51.h> //51芯片管脚定义头文件
#include <intrins.h> //内部包含延时函数



#define uchar unsigned char
#define uint unsigned int

uchar code dat[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};


sbit SER=P2^0 ;         //串行数据输入
sbit S_CLK=P2^1 ;         //移位时钟脉冲
sbit R_CLK=P2^2 ;         //输出锁存器控制脉冲





//**********************************************

//-----delay code (k=1,delay==1ms)---------
void delay(uint k)       
{                               
uint i,j;               
for(i=0;i<k;i++){       
for(j=0;j<121;j++)               
{;}}                               
}

void Ini_595()                                //初始化,两个595输出0               
{
        uchar i,j;
        S_CLK=0;
        R_CLK=0;       
        for (i=4;i>=1;i--)
        {
                for(j=0;j<8;j++)
                {
                        SER=0;
                        S_CLK=0;
                        delay(15);
                        S_CLK=1;
                }
        }
        R_CLK=0;
        delay(15);
        R_CLK=1;
}


/******从SER口发送数据,**********************************/
void        sendbyte(uchar temp)
        {        uchar j;               
                for(j=0;j<8;j++)
                        {
                                S_CLK=0;
                                _nop_() ;
                                _nop_() ;
                                SER=temp&0x80;                                               
                                temp<<=1;
                                S_CLK=1;
                        }

        }

/*****************移位后上升沿锁存***********************/
void        out_595()
        {
                R_CLK=0;
                _nop_() ;
                _nop_() ;                                                       
                R_CLK=1;
        }




main()
{
        uint s1=0x0324;
        Ini_595();
        delay(5);       
               
        while(1)
        {
                        sendbyte(dat[s1/1000]);
                        _nop_() ;
                        sendbyte(dat[s1/100]);
                        _nop_() ;
                        sendbyte(dat[s1/10]);
                        _nop_() ;               
                        sendbyte(dat[s1%10]);
                        out_595();
                        delay(1000);
                        while(1);
               
        }


}


//******************************************************

程序和仿真见附件

4_595.rar

46.61 KB, 下载次数: 2, 下载积分: 黑币 -5

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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