📄 74hc595.c
字号:
/********************************************************************************
快乐的实验室
*******************************************************************************/
#include "74HC595.h"
u8 seg_wei;
u8 const duan[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,
0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xBF};
//共阳 段码0、1、2、3、4、5、6、7、8、9 ---F、-.
u8 const wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
//1.2.3.4.5.6.7.8位码 高电平有效共阳数码管
u8 const dispiay_temp[]={"0123456789"};
u8 num_wei1,num_wei2,num_wei3,num_wei4,num_wei5,num_wei6,num_wei7,num_wei8;
/*--------------------------------------------------------------------------------
函数功能: 74HC595数码管显示管脚配置
---------------------------------------------------------------------------------*/
void GPIO_74HC595_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOF, ENABLE);//使能pc端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15; //
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//工作速率
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 推挽输出
GPIO_Init(GPIOF,&GPIO_InitStructure); //端口结构
// GPIO_SetBits(GPIOF, GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9);
}
/*--------------------------------------------------------------------------------
函数功能: 74HC595发送函数
---------------------------------------------------------------------------------*/
void send595(u8 dat1,u8 dat2)
{
u8 i;
for(i=0;i<8;i++)
{
SH_CP_LOW;
if(dat1&0x80)
{DS_HIGH;}
else
{ DS_LOW;}
SH_CP_HIGH; //上升沿
dat1<<=1;
}
for(i=0;i<8;i++)
{
SH_CP_LOW;
if(dat2&0x80)
{DS_HIGH;}
else
{DS_LOW;}
SH_CP_HIGH; //上升沿
dat2<<=1;
}
ST_CP_LOW;
SysTick_delay(us,1);
ST_CP_HIGH;
SysTick_delay(us,1);
ST_CP_LOW;
}
/*--------------------------------------------------------------------------------
函数功能: 74HC595发送函数
---------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------
函数功能: 74HC595显示函数
---------------------------------------------------------------------------------*/
void dis_595(u16 data1 ,u16 data2)
{
num_wei1=data1/1000;
num_wei2=data1%1000/100;
num_wei3=data1%100/10;
num_wei4=data1%10;
num_wei5=data2/1000;
num_wei6=data2%1000/100;
num_wei7=data2%100/10;
num_wei8=data2%10;
switch(seg_wei)
{
case 0:send595(wei[0],duan[num_wei1]);seg_wei=1;break;
case 1:send595(wei[1],duan[num_wei2]);seg_wei=2;break;
case 2:send595(wei[2],duan[num_wei3]);seg_wei=3;break;
case 3:send595(wei[3],duan[num_wei4]);seg_wei=4;break;
case 4:send595(wei[4],duan[num_wei5]);seg_wei=5;break;
case 5:send595(wei[5],duan[num_wei6]);seg_wei=6;break;
case 6:send595(wei[6],duan[num_wei7]);seg_wei=7;break;
case 7:send595(wei[7],duan[num_wei8]);seg_wei=0;break;
default :seg_wei=0; break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -