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

📄 595驱动显示.c

📁 在keil下实现的普通4X4键盘和595显示驱动
💻 C
字号:
#include<reg51.h>
#include<intrins.h>

#define uchar unsigned char
#define uint unsigned int

uchar code encode[]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};
uchar code bitset[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

#define _time0 1000

sbit ser=P0^0;
sbit sck=P0^1;
sbit rck=P0^2;
uchar point;
uchar ledbuff8[8],cnter8;

void initbuff8()
{
    ledbuff8[0] = ledbuff8[1] = 0x0a;
	ledbuff8[2] = 1;
	ledbuff8[3] = 2;
	ledbuff8[4] = 3;
	ledbuff8[5] = 4;
	ledbuff8[6] = 5;
	ledbuff8[7] = 6;
    point = 0;
    point += bitset[3];
    point += bitset[5];
}

void writ595(uchar num)
{
    uchar i;
	for( i=0 ; i<8 ; i++ )
	{
        sck = 0;
	    if( num&0x80 )
		    ser = 1;
		else
		    ser = 0;
        sck = 1;
		num = num<<1;
	}
}

void display8()
{
    uchar t = encode[ledbuff8[cnter8]];
	if( point&bitset[cnter8] )
	    t -= 0x80;
	writ595( t );
	//writ595(1<<cnter8);
    writ595( bitset[cnter8] );
	rck = 0;
	_nop_() , _nop_();
	rck = 1;
}

void main()
{
    EA = 0 , SP = 0x60;
    TH0 = (65536-_time0)/256;
    TL0 = (65536-_time0)%256;
    TMOD = 0x01;
    TR0 = 1;
    IE = 0x82;
    cnter8 = 0;
    while( 1 )
    {
        initbuff8();
    }
}

void t0isr() using 2 interrupt 1
{
    TR0 = 1;
    TH0 = (65536-_time0)/256;
    TL0 = (65536-_time0)%256;
    cnter8 = (cnter8+1)&7;
    display8();
}

⌨️ 快捷键说明

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