您的位置:首页 > 其它

串行通信 软件仿真STM32与74LS164通信

2016-11-03 00:20 295 查看

1、串行通信



2、常见的4种串行通信标准



3、对74LS164芯片的介绍

74LS164:串行转并行芯片,内部是1个8位的移位寄存器组成,由8个D触发器组成

缺点是:不带锁存寄存器,移位寄存器移位的过程会表现在164的输出引脚上,容易产生输出干扰。







4、用KEIL4进行软件仿真时,按正常步骤建立工程,然后在下图位置按照下图设置即可。



5、软件仿真:STM32与74LS164进行通信的程序如下:

#include "stm32f10x.h"

#define GPIOA_ODR_A GPIOA_BASE+0X0C
#define GPIOA_IDR_A GPIOA_BASE+0X08

#define GPIOB_ODR_A GPIOB_BASE+0X0C
#define GPIOB_IDR_A GPIOB_BASE+0X08

#define GPIOC_ODR_A GPIOC_BASE+0X0C
#define GPIOC_IDR_A GPIOC_BASE+0X08

#define GPIOD_ODR_A GPIOD_BASE+0X0C
#define GPIOD_IDR_A GPIOD_BASE+0X08

#define GPIOE_ODR_A GPIOE_BASE+0X0C
#define GPIOE_IDR_A GPIOE_BASE+0X08

#define BitBand(Addr,BitNum) *((volatile unsigned long *)((Addr &0xf0000000)+ 0X2000000 + ((Addr&0Xfffff)<<5)+(BitNum<<2)))
// AliasAddr = 0x2200 0000 + ((A-0X2000 0000)*8+n)*4 (n= 0~7)
// = 0x2200 0000+ (A-0X2000 0000)*32+n*4 4个字节,32个位;

#define PAout(n) BitBand(GPIOA_ODR_A,n) //PAout输出表达式;
#define PAin(n) BitBand(GPIOA_IDR_A,n) //PAin输出表达式;

#define PBout(n) BitBand(GPIOB_ODR_A,n)
#define PBin(n) BitBand(GPIOB_IDR_A , n)

#define PCout(n) BitBand(GPIOC_ODR_A , n)
#define PCin(n) BitBand(GPIOC_IDR_A , n)

#define PDout(n) BitBand(GPIOD_ODR_A , n)
#define PDin(n) BitBand(GPIOD_IDR_A , n)

#define PEout(n) BitBand(GPIOE_ODR_A , n)
#define PEin(n) BitBand(GPIOE_IDR_A , n)

void delay1ms(u16 t){
u16 i,j;
for(i=0;i<t;i++)
for(j=1000;j>0;j++);
}
int main(void)
{

u8 data,i;

//1.PA.0 连接 AB ; PA.1连接Clock;PB.0 连接Clear;
//2.使得74LS164的QA -QH 输出 11000100,

//1.设置引脚的工作状态 PA.0输出, PA.1输出, PB.0推揽输出;

GPIOA->CRL=0X33;
GPIOB->CRL=0X03;
//2.进行通信,PA.0=0,PA.1来一个上升沿;
PBout(0)=0;
PAout(1)=0;
PBout(0)=1;

data=0xC4;
for(i=0;i<8;i++){

PAout(1) = 0;

if((data&0x01)==0x01)
PAout(0)=1;
else PAout(0)=0;

delay1ms(1);

PAout(1) = 1;
delay1ms(1);
data=data>>1;

}

return 0;
}

6、软件仿真结果如下:




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: