接上文咱接着聊,由于YL-KL26Z开发板是以USB口供电的,因此在它身上可引出5V和3.3V的工作电源。除非是做一些12V的模拟信号实验,这2种电压还是能够胜任的,但耗能不能过大,因为你用的可是MiniUSB线呦。 1.高低电平信号,通常逻辑电路引脚在悬空状态下被视为输入高电平,所以你提供低电平就可以了,方法是用一块空白的万能实验电路板作为扩展板,然后在上面焊上一至二个8路的指拨开关,再将一侧的引脚全接上地。当使用低电平时,由于另一端已连接好,此时将开关拨到导通位置就可输出低电平了;断开开关,因引脚悬空则视为输入高电平。 2.电平状态指示,要指示GPIO引脚状态时,只需在扩展板上焊接多组LED发光二极管,并 配以330欧的限流电阻。要实现高电平点亮,就将指示电路的另一端接地;否则,就接到3.3V的VCC上。 3.逻辑功能模拟,利用YL-KL26Z所支持的逻辑操作,可模拟相应的逻辑电路功能。 以逻辑芯片74HC32为例,它是四双输入或门电路,其逻辑表达式为: F=A+B 即只有在A和B同时为“0”时,F为“0”;否则,F为“1”。 在开发板上要实现此功能,就是选3个引脚作为GPIO,其中2个引脚作为输入,以代替A和B,1个引脚作为输出,来代替F。在设置完引脚功能后,在循环中重复读取输入引脚的值,再执行或操作输出即可。其它各组的处理与之相同。 以Demo_KEY_GPIO为例,在它的基础上就可以实现程序功能的改造,如用K3来代表A,用K4来代表B,用D7来代表F,则改用下面的循环语句即可模拟或逻辑。 while(1) { If((GPIO_GET_VALUE(MKL_PORTD,6) )|| (GPIO_GET_VALUE(MKL_PORTA,4)) ) GPIO_SET(MKL_PORTD,1); else GPIO_CLR(MKL_PORTD,1); } 运行程序时,键下输入为“0”,否则为“1”;D7发光为“0”,否则为“1”。 则只有K3、K4同时按下时,D7发光;否则,D7熄灭。
若模拟其它逻辑芯片,只需调整引脚的数量、修改引脚属性及逻辑表达式即可。 这样就可以用YL-KL26Z开发板的模拟功能来替代特定的逻辑芯片,以完成逻辑功能验证的任务。 若进行组合功能的实验,此时为了压缩实验的规模,可以采用指定相应的引脚来对应逻辑芯片的引脚,然后由YL-KL26Z开发板来模拟相应单元的功能,最终可考核实验者的线路连接情况,并评定实验数据是否完整。 (只有在连线正确、输入数据完整且输出数据正确的情况下,才能证明实验是合格的,否则肯定会存在一定的失误。若对每次操作的输入和输出值加以记录,则可以分析出操作的对错情况。) 4.脉冲发生器的实现,脉冲发生器需要按使用者的要求来调节脉冲的频率,它需要一个可视化的数值设置模块,由于开发板上没有现成的数值显示功能,因此只能做个大致的。方法是用Demo_ADC_Sw_Trigger的程序改造一个,其基本思想是利用电位器的调节功能来设置脉冲的快慢,并通过ADC来采集它,最终通过延时值的改变来形成脉冲的调整。 先将延时程序改为: void myDelay (INT32U ulTime) { INT32U i; i = 0; // 2^16=65536 ulTime=65536000/ulTime; while (ulTime--) { for (i = 0; i < 5000; i++); } } 再将主程序中的循环部分改为: while (1) { Vout = adcGetUint(); /* 获取adc值 */ printf("Vout=%d\n",Vout);
|