74HC595驱动数码管上显示数字
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/*******************************************************************************
* 标题: 试验74HC595驱动数码管上显示数字(C语言)*
连接方法:JP12用条线冒短接JP3和JP2 用8PIN排线连接
********************************************************************************
* 通过本例程了解74HC595(串入并出)基本原理和使用*
请学员认真消化本例程,懂74C595在C语言中的操作*
********************************************************************************/
#include
#include
#define NOP() _nop_() /* 定义空指令*/
//SPI IO
sbit MOSIO =P3^4; //串行数据线
sbit R_CLK =P3^5; //数据并行输出控制
sbit S_CLK =P3^6; //串行时钟线
void delay(unsigned int i); //函数声名
void HC595SendData(unsigned char SendV al); //函数声名
// 此表为LED 的字模// 0 1 2 3 4 5 6 7 8 9 A b c d E - L P U Hidden _ (20) unsigned char code LED7Code[] = {~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5E,~0x79,~0x71};
main()
{ unsigned char HC595SendVal;
unsigned int LedNumVal = 1;
while(1)
{
LedNumVal++;
HC595SendVal = LED7Code[LedNumV al%16]; //LED7;显示0-F LedNumVal%10 显示0-9
HC595SendData(HC595SendVal); //调用595驱动函数
delay(200);
}
}
/*******************延时函数************/
void delay(unsigned int i)
{
unsigned int j;
for(i; i > 0; i--) //CPU循环执行i*300次
for(j = 300; j > 0; j--);
}
/********************************************************************************************************* ** 函数名称: HC595SendData
** 功能描述: 向SPI总线发送数据
*********************************************************************************************************/ void HC595SendData(unsigned char SendV al)
{
unsigned char i;
for(i=0;i<8;i++)
{
if((SendVal<
else MOSIO=0; // 如果为真MOSIO = 1
S_CLK=0;
NOP(); //短暂延时产生一定宽度的脉冲信号
NOP(); //短暂延时
S_CLK=1;
}
R_CLK=0; //set dataline low
NOP(); //短暂延时
NOP(); //短暂延时
R_CLK=1; //
}