51单片机的高手,救命啊

如题所述

第1个回答  推荐于2016-06-09
/*******************************************************
* 程序名称:hc595.c
* 程序功能:595的应用文件,595控制数码管
* 程序作者:吴鉴鹰
* 创建时间:2013-12-7
* 修改时间:2013-12-9
* 程序版本:V0.2
******************************************************/
/*
* 包含头文件
*/
#include "inc/hc595.h"
#include "reg51.h"

/*
* 定义引脚
*/
/* 595控制数码管时钟信号线引脚定义 */
sbit HC595CLK = P1^1;
/* 595控制数码管片选信号线引脚定义 */
sbit HC595RCK = P1^0;
/* 595控制数码管数据输入引脚定义 */
sbit HC595DATA = P1^4;

/******************************************************
* 函数名称:SendData
* 函数功能:74HC595数据的发送
* 入口参数:unsigned int uiDataOne, unsigned int uiDataTwo
* 出口参数:void
*******************************************************/
void SendData(unsigned int uiDataOne, unsigned int uiDataTwo)
{

unsigned int i = 0;

/* 将片选信号置为低电平 */
HC595RCK = 0;

/* 输入第一个数据:uiDataOne */
for (i = 0; i < 8; i++)
{
/* 给出脉冲信号,首先将CLK置为0 */
HC595CLK = 0;
if (0 != (uiDataOne & 0x80))
{
HC595DATA = 1;
}
else
{
HC595DATA = 0;
}
/* 给出脉冲信号,首先将CLK置为1 */
HC595CLK = 1;
/* 准备第二个数据 */
uiDataOne = uiDataOne << 1;
}

/* 输入第二个数据:uiDataTwo */
for (i = 0; i < 8; i++)
{
/* 给出脉冲信号,首先将CLK置为0 */
HC595CLK = 0;
if (0 != (uiDataTwo & 0x80))
{
HC595DATA = 1;
}
else
{
HC595DATA = 0;
}
/* 给出脉冲信号,首先将CLK置为1 */
HC595CLK = 1;
/* 准备第二个数据 */
uiDataTwo = uiDataTwo << 1;
}

/* 将片选信号置为高电平 */
HC595RCK = 1;
}本回答被提问者和网友采纳
第2个回答  2015-10-25
汇编语言 爱莫能助追问

还是谢谢你了。现在考试呢,郁闷

相似回答