/***********************************************************************
名称:main()
功能:主函数,将x9015设置为中间档位(16),则测量出来的值约为实际的电压信号的一半。
***********************************************************************/
1 int main(void) 2 { uint32 data; 3 x9015_Init(); 4 NumbTube_Init(); //数码管初始化 5 AD_Init(); 6 x9015_Step(0,31); //先将数字电位器x9015的档数设为0 7 x9015_Step(1,16); //再将数字电位器x9015的档数设为16 8 while(1) 9 { 10 data = AD_Read(AIN4); //AD转换(AIN4)11 NumbTube_Display(data*2,1); //数码管显示12 }13 return(0);14 }
单击全速运行按钮(快捷键F5),程序会运行并停留在main()主函数处;继续全速运行,测量到的电压信号在数码管上进行显示。
1 //-----------引脚定义---------------- 2 #define x9015_INC (1<<29) //P2.29 3 #define x9015_UpDown (1<<28) //P2.28 4 #define x9015_CS (1<<18) //P1.18 5 /******************************************************************** 6 * 名称:x9015_Init() 7 * 功能:初始化x9015的引脚配置 8 ********************************************************************/ 9 void x9015_Init(void)10 { 11 // 设置引脚连接 x9015_CS(P1.18)为GPIO12 PINSEL2 = PINSEL2 & 0xfffffff7; 13 IO2DIR = IO2DIR | x9015_INC | x9015_UpDown;14 IO1DIR = IO1DIR | x9015_CS;15 }16 /****************************************************************************17 * 名称:x9015_Step(uint8 UpDown, uint8 level)18 * 功能:改变x9015数字电位器的内部档数19 * 入口参数:UpDown 增加档数或减少档数, level 变化的档数值20 ****************************************************************************/21 void x9015_Step(uint8 UpDown, uint8 level)22 { 23 uint8 i;24 IO1CLR = x9015_CS;25 if(UpDown == 1) IO2SET = x9015_UpDown; //内部挡数增加26 else IO2CLR = x9015_UpDown; //内部挡数减少27 for(i=0;i<10;i++) ; //小段延时28 for(;level>0;level--)29 { IO2SET = x9015_INC;30 for(i=0;i<200;i++) ; 31 IO2CLR = x9015_INC;32 for(i=0;i<200;i++) ; 33 }34 IO1SET = x9015_CS;35 }
1 /*************************************/ 2 /* X9313W驱动程序 */ 3 /* 版本号:V1.0 */ 4 /*************************************/ 5 6 /*************************************/ 7 /* 文件包含 */ 8 /*************************************/ 9 #include10 #include 11 12 /*************************************/ 13 /* IO口地址定义 */ 14 /*************************************/ 15 sbit X9313W_INC = P3^0; //计数脉冲输入端,下降沿触发 16 sbit X9313W_UPDN = P3^1; //方向,高电平加、低电平减 17 sbit X9313W_CS = P3^2; //片选,低电平有效 18 19 20 /*************************************/ 21 /* 调整电阻到第RNumber阶阻值 */ 22 /*入口:RNumber:阶阻值0~31 */ 23 /*出口:无 */ 24 /*************************************/ 25 void X9313W_SetVol(unsigned char RNumber) 26 { 27 unsigned char i; 28 29 X9313W_INC = 1; 30 _nop_(); 31 _nop_(); 32 X9313W_CS = 0; 33 _nop_(); 34 _nop_(); 35 X9313W_UPDN = 0; //先调到0 36 for(i=0;i<32;i++){ 37 X9313W_INC = 1; 38 _nop_(); 39 _nop_(); 40 X9313W_INC = 0; 41 _nop_(); 42 _nop_(); 43 } 44 45 X9313W_UPDN = 1; //调到指定值 46 for(i=0;i