传感器自学笔记第十六章——双轴摇杆模块

作者:GWD 时间:2019.7.1

一、 学习要点
1、检测电压常态时2.5V,最大值5V,最小值0V,实际上就是两个x,y方向上的滑动变阻器,用PCF8591模数转换模块的两个通道分别检测电压值的变化就可以知道摇杆指向的位置了;
2、它就像一个在游戏控制台中操纵杆,你可以控制输入这个操纵杆模块的 x、 y、 z 的值以及在特定的值下实现某种功能,它可以被视为一个按钮和电位计的组合。数据类型的 x,y 维为模拟输入信号而 z 维是数字输入信号,因此,x 和 y 端口连接到模拟插脚传感器端,而 z 端口连接到数字端口。
二、 手册分析
1、
在这里插入图片描述
2、PS2 游戏双轴摇杆传感器模块由采用原装优质金属 PS2 摇杆电位器制作,具有(X,Y)2 轴模拟输出, (Z)1 路按钮数字输出。配合 单片机可以制作遥控器等互动作品。
三、 编程
1、程序功能:摇杆的X、Y轴分别接PCF8591的AIN0、AIN1引脚,沿着X、Y方向移动摇杆串口打印的数字呈线性变化,按下摇杆P2.0引脚的小灯点亮;
2、程序效果:
2、PS2 游戏双轴摇杆传感器模块由采用原装优质金属 PS2 摇杆电位器制作,具有(X,Y)2 轴模拟输出, (Z)1 路按钮数字输出。配合 单片机可以制作遥控器等互动作品。
三、 编程
1、程序功能:摇杆的X、Y轴分别接PCF8591的AIN0、AIN1引脚,沿着X、Y方向移动摇杆串口打印的数字呈线性变化,按下摇杆P2.0引脚的小灯点亮;
2、程序效果:
在这里插入图片描述
在这里插入图片描述
3、代码
Main.c

#include <reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义                        
#include "stdio.h"
#include "delay.h"
#include "IIC.h"
#include "PCF8591.h"

typedef unsigned char uChar8;
typedef unsigned int uInt16;

void InitUART  (void)
{
    TH1 = 0xFD;           // TH1:  重装值 9600 波特率 晶振 11.0592MHz  
	TL1 = TH1;
    TMOD |= 0x20;               // TMOD: timer 1, mode 2, 8-bit 重装								//       timer 0,16位计数      
    SCON  = 0x50;		        // SCON: 模式 1, 8-bit UART, 使能接收  
	ES  = 1;                  //打开串口中断
	TR1 = 1;                  // TR1:  timer 1 打开      
	TI=1;

}  
              
void main (void)
{
	char i=0;
	int x=0,y=0;
	InitUART();
	while (1)                       
	{		
		x =  RD_OneByte2Pcf8591(0x92,0x40);
		y =  RD_OneByte2Pcf8591(0x92,0x41);
		printf("摇杆位置 X=%d,Y=%d\n\r",x,y);
		Delay2000ms();
					
	}
}

PCF8591.c

#include "PCF8591.h"
void WR_OneByte2Pcf8591(unsigned char address,unsigned char cmd,unsigned char dat)
{
	_nop_();
	iic_start();
	_nop_();
	iic_sendbyte(address);
	_nop_();
	iic_sendbyte(cmd);
	_nop_();
	iic_sendbyte(dat);
}

int RD_OneByte2Pcf8591(unsigned char address,unsigned char cmd)
{
	int num = 0;
	iic_start();   //address=0x41
	iic_sendbyte(address);
	iic_sendbyte(cmd);
	iic_start();   //address=0x41
	iic_sendbyte(address|0x01);
	num = iic_rcvbyte_nack();

	return (num);		
}

代码下载地址:
链接:https://pan.baidu.com/s/1aNVDaUgucrI3oTHRR80EDw
提取码:00ug

猜你喜欢

转载自blog.csdn.net/gongweidi/article/details/94379802