新手上路
- 积分
- 25
- 金钱
- 25
- 注册时间
- 2016-11-28
- 在线时间
- 3 小时
|
发表于 2016-12-6 15:31:20
|
显示全部楼层
#include "stm32f10x.h"
#include "delay.h"
#define ds PAout(0)
#define sck PAout(1)
#define rck PAout(2)
#define oe PAout(3)
unsigned int tab1[]={0x0001,0x0002,0x0004,0x0008,0x0010,0x0020,0x0040,0x0080,0x0100,0x0200,0x0400,0x0800,0x1000,0x2000,0x4000,0x8000};
void wr_595(u16 one);
void out_595(void);
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能PA端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All ; // 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_All);
delay_init();
while(1)
{
u8 a=0;
for(a=0;a<16;a++)
{
wr_595(tab1[a]);
out_595();
delay_ms(500);
}
}
}
void wr_595(u16 one)
{
unsigned char i;
sck=1;
rck=1;
oe=1;
for(i=0;i<16;i++)
{
if((one<<i)&0x8000) ds=1;
else ds=0;
sck=0;
delay_us(20);
sck=1;
}
}
void out_595(void)
{
rck=0;
delay_us(20);
rck=1;
oe=0;
}
这是级联的16个LED也可以用
|
|