直接复制咱另一帖里的回复吧:
老毛病了,咱也是MX518,用PS/2口接鼠标的时候会出现这种情况,解决方法是在截图那个圆圈+感叹号标签页面里点“安装PS/2驱动程序”按钮,然后重启一般就出来了
如果通过上述步骤还不行的话,可以把MX518直接插USB口让驱动程序辨识,然后再关机换回PS/2口开机.................
Ps:罗技键粗颂鼠的Setpoint版本更新了慧凳仔不短的时间了.......
补充:
MX518在使用USB插口的情况下只要装了Setpoint就应该能直接辨识,建议更新最新版本的Setpoint试试
程序好写,但是和硬件相关。一个历程,参考
下面给一个例程。该程序利用MAX518进行D/A转换,且从D/A0引脚输出一个正弦波形。可作为读者编制程序的参考。特别注意,在调试该程序时,把模板上的钮子开关S8拔向高电平,以免发生资源冲突。
#include <pic.h>
//本程序将通过PIC16F877的I2C方式驱动D/A转换器MAX518,使其D/A0通道输出
//一个连续的正弦波形(注:本程序并没对正弦波的频率进行控制)
const char table[ ] = {0X80,0X86,0X8D, 0X93,0X99,0X9F,0XA5,0XAB,
0XB1,0XB7,0XBC,0XC2,0XC7,0XCC,0XD1,0XD6,0XDA,0XDF,0XE3,0XE7,0XEA,0XEE,0XF1,0XF4,0XF6,0XF8,0XFA,0XFC,0XFD,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFE,0XFD,0XFB,0XF9,0XF7,0XF5,0XF2,0XEF,0XEC,0XE9,0XE5,0XE1,0XDD,0XD8,0XD4,0XCF,0XCA,0XC5,0XBF,0XBA,0XB4,0XAE,0XA8,0XA2,0X9C,0X96,0X90,0X89,0X83,0X80,0X79,0X72,0X6C,0X66,0X60,0X5A,0X55,0X4E,0X48,0X43,0X3D,0X38,0X33,0X2E,0X29,0X25,0X20,0X1C,0X18,0X15,0X11,0X0E,0X0B,0X09,0X07,0X05,0X03,0X02,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X02,0X04,0X06,0X08,0X0A,0X0D,0X10,0X13,0X16,0X1A,0X1E,0X22,0X27,0X2B,0X30,0X35,0X3A,0X40,0X45,0X4C,0X51,0X57,0X5D,0X63,0X69,0X6F,0X76,0X7C};
//以上的数组用于存放正弦表,在定义数组时,前面应该加上 const,
//念迹以使数组存放于ROM中,而不至于占用太多的RAM
unsigned char i;
unsignedchar j;
unsignedchar n;
//I2C初始化子程序
void i2cint()
{
SSPCON = 0X08;//初始化SSPCON寄存器
TRISC3 =1; //设置SCL为输入口
TRISC4 =1; //设置SDA为输入口
TRISA4 = 0;
SSPSTAT=0X80;//初始化SSPSTAT寄存器
SSPADD=0X02;//银源设定I2C时钟频率
SSPCON2=0X00;//初始化SSPCON2寄存器
di(); //关闭总中断
SSPIF=0; //清SSP中断标志
RA4=0; //关掉74HC165的移位时钟使能,以免74HC165
//移位数据输出与I2C总线的数据线发生冲突
SSPEN=1; //SSP模块使能
}
//I2C总线输出数据子程序
void i2cout()
{
SEN=1; //产生I2C启动信号
for(n=0x02;--n;) continue;//给予一定的仔搏并延时,保证启动
do {
RSEN=1;//产生I2C启动信号
}while(SSPIF==0); //如果没能启动,则反复启动,直到启动为止
SSPIF=0; //SSPIF标志清0
SSPBUF=0X58;//I2C总线发送地址字节
do {
;
}while(SSPIF==0); //等待地址发送完毕
SSPIF=0; //SSPIF标志清0
SSPBUF=0X01;//I2C总线发送命令字节
do {
;
}while(SSPIF==0); //等待命令发送完毕
SSPIF=0; //SSPIF标志清0
SSPBUF=j; //I2C总线发送数据字节
do {
;
}while(SSPIF==0); //等待数据发送完毕
SSPIF=0; //SSPIF标志清0
PEN=1; //产生停止条件
do {
;
}while(SSPIF==0); //等待停止条件产生
SSPIF=0; //SSPIF标志清0
}
//主程序
main ()
{
i2cint(); //I2C初始化
while(1){
for(i=0x00;i<=127;++i)
{
j=table[i]; //从数组中得到需要传输的数据量
i2cout(); //利用I2C总线方式送出数据
}
}
}
用这个电路稍加改动就可以满足你的需求:
(原设计指标:输出电压0~12V,按照0.1V的步进量连续可调,供电电压双15伏,需改动:电源直接换,步进量改成1伏即可)
图 数控步进直流稳压电源原理图
本模块介绍的数控步进直流稳压电源是由PIC16F877单片机控制的直流输出电源。该电源的输出电压能在0~12V的范围内,按照0.1V的步进量连续可调,电路原理图如图所示。
图中变压器从电网中取出电压信号,经过桥式整流器后得到直流电压,该电压接到三端可调稳压器LM317的输入端,作为供电电压。MAX518的D/A输出端A1经过运算放大器组的运算后,接到LM317的电压调整端。图中所示的电阻值为用仿真软件得到的精确值,实际制作电路时闹衡斗,可用可调电阻得到某些特殊的阻值。
本应用实例的原理为:PlC16F877单片机送出一个8位数据Dn给数/模转换器MAX518,由后者输液磨出一个对应模拟量D/A11=5×Dn/255V(MAX518的参考电压为5V);该模拟量经过LM324组电路以及LM3l7稳压电路变换后,得到对应的输出量VOUT;当PIC16F877送出的8位数据Dn按照预定的规律变化时,拦唤输出量VOUT也按照预定规律变化;同时为了人机交互方便,把VOUT的值显示在LED上,并通过键盘选择步进加或步进减。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)