c51 74ls164--165--595
扫描二维码
随时随地手机看文章
164跑马灯,
#include
#include
#define uint unsigned int
#define uchar unsigned char
sbit dat=P2^6;
sbit clk=P2^7;
uchar ii;
uchar code seg7code[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00,0xff};//0-9,-,全灭
void sendbyte(uchar seg)
{
uchar num,c;
num=seg7code[seg];
for(c=0;c<8;c++)
{
dat=num&0x80;
num=_crol_(num,1);
clk=0;
clk=1;
}
}
void delayms(int ms)
{
uchar mi,mj;
for(;ms>0;ms--)
for(mi=6;mi>0;mi--)
for(mj=82;mj>0;mj--);
}
void main()
{
for(ii=0;ii<10;ii++)
{
sendbyte(ii);
delayms(200);
}
}
////////*****************以下为参考
#include
#define uint unsigned int
#define uchar unsigned char
sbit dat=P2^6;
sbit clk=P2^7;
uchar ii;
uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};//0-9,-,全灭
void sendbyte(uchar byte)
{
uchar num,c;
num=tab[byte];
for(c=0;c<8;c++)
{
dat=num&0x80;
num=num<<1;
clk=0;
clk=1;
}
}
void display(uint i) //显示字符序号
{
uchar j,k;
j=i/10;
k=(i-10*j);
sendbyte(k);
sendbyte(j);
}
void delayms(int ms) //1ms delay
{
uchar mi,mj;
for(;ms>0;ms--)
for(mi=6;mi>0;mi--)
for(mj=82;mj>0;mj--);
}
void main()
{
while(1)
{
for(ii=12;ii>0;ii--)
{
display(tab[ii]);
delayms(200);
}
}
}
参考以下资料
作者:龙啸苍天
发表时间:2007-1-6 16:44:18
74hc595的c51驱动程序
带锁存功能的串入并出芯片。这里给出74hc595的c51驱动程序。
//作者:晒太阳的小猪
//个人blog:http://emcu.c51bbs.com
//转载使用请注明
//定时器晶体振荡器11.0592M.
#i nclude
#i nclude
#define uint unsigned int
#define uchar unsigned char
#define nop() _nop_();_nop_();
sbit CLK=P2^0;
sbit DAT=P2^1;
sbit RCLK=P2^2;
//sbit CS=P2^3;
uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};//0-9,-,全灭
void sendbyte(uchar byte)
{
uchar num,c;
num=tab[byte];
for(c=0;c<8;c++)
{
CLK=0;
DAT=num&0x80;
num=num<<1;
CLK=1;
}
// RCLK=0;
// nop();
// nop();
// RCLK=1;
}
void out595(void)
{
RCLK=0;
nop();
RCLK=1;
}
void display(uchar word)
{
uchar i,j;
i=word/10;
j=word-10*i;
sendbyte(j);
sendbyte(i);
out595();
}
main()
{
while(1)
{
display(19);
display(86);
}
while(1);
}
74hc165的驱动程序
//74hc165是常用的并入串出芯片,这里给出74hc165的驱动程序
//作者:晒太阳的小猪
//个人blog:http://emcu.c51bbs.com
//转载使用请注明
//--------------3片74hc165级连读程序---------
/*void read74hc165m(void)
{
uchar basic,basic1,basic2,basic3,c;
PL=1;
nop();
PL=0;
nop();
PL=1;
basic=0;
basic=basic<<1;
if(SETBSC) basic|=0x01;
for(c=0;c<7;c++)
{
CLOCK=0;
nop();
CLOCK=1;
basic=basic<<1;
if(SETBSC) basic|=0x01;
}
basic1=basic;
basic=0;
for(c=0;c<8;c++)
{
CLOCK=0;
nop();
CLOCK=1;
basic=basic<<1;
if(SETBSC) basic|=0x01;
}
basic2=basic;
basic=0;
for(c=0;c<8;c++)
{
CLOCK=0;
nop();
CLOCK=1;
basic=basic<<1;
if(SETBSC) basic|=0x01;
}
basic3=basic;
}
74hc164的驱动程序
74hc64很简单的串入并出芯片。经常用于单片机端口的扩展。这里给出使用74hc164驱动数码管,做静态显示的程序。可以直接调用
//作者:晒太阳的小猪
//个人blog:http://emcu.c51bbs.com
//转载使用请注明
#i nclude
#define uint unsigned int
#define uchar unsigned char
sbit dat=P2^6;
sbit clk=P2^7;
uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};//0-9,-,全灭
void sendbyte(uchar byte)
{
uchar num,c;
num=tab[byte];
for(c=0;c<8;c++)
{dat=num&0x80;
num=num<<1;
clk=0;
clk=1;
}
}
void display(uint i)
{uchar j,k,l,m;
j=i/10;
k=(i-10*j);
sendbyte(k);
sendbyte(j);
}