⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xianshi.c

📁 单片机串行控制74HC595
💻 C
字号:
#include <reg51.h>
#include <intrins.h>
#include <math.h>
#include <stdio.h>

sbit CLK=P2^2;
sbit DAT=P2^0;
sbit RCLK=P2^1;

sbit KEY=P2^4;

unsigned char code con[16]={0x80,0x40,0x20,0x10,0x08,0x04,0x82,0x9f,0xa8,0x89,0x95,0xc1,0xc0,0x8f,0x80,0x81};

void out595();
void display(unsigned char word,unsigned char dot);
void delay(unsigned char i);

void main()
{
	unsigned long m2;
    float m1;
	unsigned int num1,num2,num3,num4,num5;
    _nop_();
/*    SCON=0x57;
    TMOD=0x20;
    TCON=0x40;
    TH1=0xfd;
    TL1=0xfd;
    TI=1;
    TR1=1;*/

	m1=123.45;

    while(1)
	{
		m2=54321;
//        printf("%f",m1);
//		printf("\n");
 
        num1=m2/10000;     
        m2=m2%10000;
		num2=m2/1000;
        if(num2!=0)
		{
		   num2+=40;
		   display(num2,0x00);
		   num2=num2-40;
		   delay(100);   
		}
		if(num1!=0)
		{
		   num1+=50;
           display(num1,0x00);
           num2+=40;
		   display(num2,0x00);
		   delay(100);
		}		
        m2=m2%1000;
		num3=m2/100;
		num3+=30;
		display(num3,0x80);
		delay(150);
        m2=m2%100;
		num4=m2/10;
		num4+=20;
		display(num4,0x00);
		delay(150);
        m2=m2%10;
		num5=m2;		
		num5+=10;
		display(num5,0x00);
    }
}

void out595()
{
    unsigned int i;
	RCLK=0;
	for(i=0;i<100;i++);
	RCLK=1;
}

void display(unsigned char word,unsigned char dot)
{
    unsigned char i,j;
    unsigned char temp,k;
	i=word/10;
	j=word-10*i;
	j=j+6;
	temp=con[j]-dot;
	for(k=0;k<8;k++)
	{
	   CLK=0;
	   DAT=temp&0x80;
	   temp=temp<<1;
	   CLK=1;
	}	 
    temp=con[i];
	for(k=0;k<8;k++)
	{
	   CLK=0;
	   DAT=temp&0x80;
	   temp=temp<<1;
	   CLK=1;
	}	 
	out595();
}

void delay(unsigned char i)
{
    unsigned char j;
	for(j=i;j>0;j--);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -