|
2#
楼主 |
发表于 2009-3-21 17:09:57
|
只看该作者
测试程序
void Write_RES(uchar dat) //调整数字电位器
{
uchar i,dat1,command=0x11;
dat1=dat;
RES_CS = 1;
SCK = 1;
RES_CS = 0; //片选
SCK = 0;
for(i=8;i>0;i--) //写命令8位
{
command <<= 1;
DI = CY;
SCK = 1;_nop_();
SCK = 0;
}
for(i=8;i>0;i--) //写数据八位
{
dat1 <<= 1;
DI = CY;
SCK = 1 ;_nop_();
SCK = 0 ;
}
RES_CS = 1;_nop_();
//如果不写以下空操作程序,电位器不能连续调整,这点不知道为什么....,说明书上也没讲...我自己花时间调试出来的.....
RES_CS = 0;
for(i=16;i>0;i--) //空操作
{
DI = 0;
SCK = 1 ;_nop_();
SCK = 0 ;
}
RES_CS = 1;_nop_();
DI = 1;
SCK = 1 ;
}
硬件电路测试
以上程序在Proteus6.9中测试可以通过调用函数连续改变数字电位器阻值...
但是在实际的硬件电路中确存在一些问题....如果加入16位空操作阻值并不是想要调整的...去掉16位空操作就可以了..... |
|