×
单片机 > 单片机程序设计 > 详情

c51 74ls164--165--595

发布时间:2020-06-19 发布时间:
|

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);

}


关键字:c51  74ls164  165  595 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ARM 汇编的必知必会