您的位置 首页 国产IC

51单片机C编程(十五 74HC595操控四位数码管)

includereg51h>includeintrinsh>defineucharunsignedchardefineuintunsignedintucharcodeDAT[10]={0x

#include
#include

#define uchar unsigned char
#define uint unsigned int

uchar code DAT[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x02,0xf8,0x00,0x10};
sbit SDATA_595=P1^0;//串行数据输入
sbit SCLK_595=P1^1;//移位时钟脉冲
sbit RCK_595=P1^2;//输出锁存器操控脉冲

sbit P20=P2^0;
sbit P21=P2^1;
sbit P22=P2^2;
sbit P23=P2^3;
sbit P24=P2^4;
sbit P25=P2^5;
sbit P26=P2^6;
sbit P27=P2^7;
sbit P30=P3^0;
sbit P31=P3^1;

uchar temp;

void delay(int ms)
{
int k;
while(ms–)
{
for(k=0;k<250;k++)
{
_nop_();
_nop_();

}
}
}

void WR_595(void)//将显现数据送入74HC595内部移位寄存器
{
uchar j;
for(j=0;j<8;j++)
{
temp=temp<<1;
SDATA_595=CY;
SCLK_595=1;
_nop_();
_nop_();
SCLK_595=0;
}
}

void OUT_595(void)//将移位寄存器内的数据所存到输出寄存器并显现
{
RCK_595=0;
_nop_();
_nop_();
RCK_595=1;//上升沿将数据送入输出锁存器
_nop_();
_nop_();
_nop_();
RCK_595=0;
}

void key_scan()
{
if(P20==0)
{
while(P20==0);
temp=DAT[1];
WR_595();
OUT_595();
}
if(P21==0)
{
while(P21==0);
temp=DAT[2];
WR_595();
OUT_595();
}
if(P22==0)
{
while(P22==0);
temp=DAT[3];
WR_595();
OUT_595();
}
if(P23==0)
{
while(P23==0);
temp=DAT[4];
WR_595();
OUT_595();
}
if(P24==0)
{
while(P24==0);
temp=DAT[5];
WR_595();
OUT_595();
}
if(P25==0)
{
while(P25==0);
temp=DAT[6];
WR_595();
OUT_595();
}
if(P26==0)
{
while(P26==0);
temp=DAT[7];
WR_595();
OUT_595();
}
if(P27==0)
{
while(P27==0);
temp=DAT[8];
WR_595();
OUT_595();
}
if(P30==0)
{
while(P30==0);
temp=DAT[9];
WR_595();
OUT_595();
}
if(P31==0)
{
while(P31==0);
temp=DAT[0];
WR_595();
OUT_595();
}
}

void main()
{
SCLK_595=0;
RCK_595=1;
while(1)
{
key_scan();
//uchar i;
//for(i=0;i<10;i++)
//{
// temp=DAT[i];//取显现数据
//WR_595();
//OUT_595();
//delay(200);
//}
}
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/ic/256888.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部