📄 595.c
字号:
#include<p18f452.h>
//-------------------------------------------------------------
//---定义PIC单片机与74HC595芯片接口连接关系;
#define HC595_sER LATCbits.LATC0
#define HC595_RCLK LATCbits.LATC1
#define HC595_sRCLK LATCbits.LATC2
#define HC595_sRCLR LATCbits.LATC3
#define HC595_OE LATCbits.LATC4
void sendDataToLED(unsigned char *LedData,unsigned char DataLength);
const unsigned char LEDCODE[]=
{
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,
};
//---定义LED数码管显示缓冲区
unsigned char LEDBuffer[6];
void main(void)
{
unsigned char i,j,temp,ledData=6;
TRISC=0X00;
HC595_OE=1;//并行输出为高阻状态
HC595_sRCLR=0;//清空移位寄存器
HC595_sER=0;//清零
HC595_RCLK=0;//移位时钟初始为低
HC595_sRCLK=0;//存储器时钟初始为低
HC595_OE=0;//允许并行输出
HC595_sRCLR=1;//结束复位状态
LEDBuffer[0]=4;
LEDBuffer[1]=3;
LEDBuffer[4]=1;
sendDataToLED(LEDBuffer,sizeof(LEDBuffer));
while(1);
}
void sendDataToLED(unsigned char *LedData,unsigned char DataLength)
{
unsigned char i,j,temp;
for(j=0;j<DataLength;j++)
{
temp=LEDCODE[*LedData];//取出LED显示的代码表送入变量中
for(i=0;i<8;i++)
{
if(0x80==(temp & 0x80))HC595_sER=1;//将字节按位移出
else HC595_sER=0;
HC595_RCLK=1;//将数据送入移位寄存器中
HC595_RCLK=0;
temp<<=1;//当前指针的内容左移一位
}
LedData++;//指针指向下一个数据
}
HC595_sRCLK=1;//将移位寄存器中的内容送到并行输出口
HC595_sRCLK=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -