现在的位置: 首页 > 综合 > 正文

智能车实验室阶段测验之单片机基础

2013年10月12日 ⁄ 综合 ⁄ 共 971字 ⁄ 字号 评论关闭

每人通过抽签选择一道题,独立编程完成题目的要求,原则上不查看之前所写的程序,但能查芯片手册以及电路图,程序要有良好的编程风格(包括变量函数的命名规则、代码的对齐方式、合适的注释等)。给出一上午的时间进行编程,若有空余的时间可以试着编写其他题,下午验收,验收时首先执行程序,然后再讲解工作原理、程序逻辑等。

希望你们能借这次机会测验一下这一个星期的成果。

参考题目:

1加强版流水灯实验。如下为拨码开关的电路图,要求使用PM2 / PM3 / PT0 / PT1来初始化四个LED灯的初始状态,再每隔1s 流动一次。当PT3有上升沿触发时(可以通过拨动拨码开关来获得:关->开),停止流水。当PT2有下降沿触发时,继续上次状态流水。


如初始状态PM2 / PM3 / PT0 / PT1 为 010,灯的初始状态就为 灭、亮、灭、亮,程序执行时,隔1s变为亮、灭、亮、灭,依次类推。当将PT3 0拨到1时,流水停止。当将PT21拨到0时,流水继续。


(2)估算一段程序的执行时间。如下为一段延时函数的程序,

void  delay()
{
  uchar i, j;
  for(i=0; i<0xFF; i++)
  {
    for(j=0; j<0xFF; j++)
    {
       __asm
       {
         nop
       }
    }
  }
} 

请写段程序估算这个延时函数大约延时多长时间。

提示:可以借助Timer模块中的计数器的计数功能。通过发回两次计数的值,再通过计数器的计数周期,即可计算出函数的执行时间了。核心寄存器TCNT

3测试编码器的性能。我们买来的测速编码器是100线的,也就是编码器的齿轮转一圈,发回100个脉冲,请验证上面的结论。编码器硬件接线图如下所示。


提示:使用单片机ECT模块的channel 7 的脉冲累加功能。手动将编码器齿轮转一圈时,上位机串口发送一个数字给下位机,提示下位机发回此时所计的脉冲数(核心寄存器PACNT)。


4求舵机正中间时的占空比。将PWM23级联,输出的PWM波给舵机,是借助串口调正舵机,并记录此时的PWM占空比。


提示:通过串口每次发送两个字节,这两个字节就作为PWMDTY,这样就能很轻松的进行调试观察舵机的偏转角度。注意不要让舵机在打死角的情况下长时间维持,很容易烧坏舵机,测试时可以触碰舵机的接线即断开。

以上四个实验均要求开始时刻进行倍频,倍频的大小自己定。

抱歉!评论已关闭.