概述
作者: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=%dnr",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
最后
以上就是追寻樱桃为你收集整理的传感器自学笔记第十六章——双轴摇杆模块的全部内容,希望文章能够帮你解决传感器自学笔记第十六章——双轴摇杆模块所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复