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

1、串行通信

串行通信 软件仿真STM32与74LS164通信_第1张图片

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

串行通信 软件仿真STM32与74LS164通信_第2张图片

3、对74LS164芯片的介绍

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

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

串行通信 软件仿真STM32与74LS164通信_第3张图片

串行通信 软件仿真STM32与74LS164通信_第4张图片

串行通信 软件仿真STM32与74LS164通信_第5张图片


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

串行通信 软件仿真STM32与74LS164通信_第6张图片

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;i0;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、软件仿真结果如下:

串行通信 软件仿真STM32与74LS164通信_第7张图片

你可能感兴趣的:(※【stm32】)