[关闭]
@floatsd 2016-06-09T15:32:57.000000Z 字数 3479 阅读 2148

实验五 直流电机控制实验

note_DSP


1 实验目的

2 实验原理

2.1 直流电机控制

2.2 输入信号

image_1akqoh0tc3271f201lih1nd7126g.png-18.4kB

2.3 程序编制

3实验内容

3.1 实验及观察结果

3.2 修改程序

  1. while (1)
  2. {
  3. nScanCode=*(int *)0x108001; // 读扫描码
  4. nScanCode&=0x0ff; // 取扫描值的低8位
  5. uPort8000=*(int *)0x108002;
  6. if ( nScanCode!=0 )
  7. {
  8. if ( nScanCode==9 ) break;//按下9键退出程序
  9. else
  10. {
  11. cKey=nScanCode;//cKey赋值为扫描值并依照键盘选择进行调速
  12. if ( cKey!=0 )
  13. {
  14. cOldKey=cKey;
  15. switch ( cKey )
  16. {
  17. case 1: uN=10; break;
  18. case 2: uN=50; break;
  19. case 3: uN=60; break;
  20. case 4: uN=70; break;
  21. case 5: uN=80; break;
  22. case 6: uN=100; break;
  23. case7:
  24. uN=uN+5; //按下7占空比加5
  25. break;
  26. case8:
  27. uN=uN+5; //按下8占空比减5
  28. break;
  29. }
  30. }
  31. }
  32. }
  33. }

4 实验结论

4.1 实验结论

  1. while (1)
  2. {
  3. nScanCode=*(int *)0x108001;
  4. nScanCode&=0x0ff;
  5. if ( nScanCode!=0 ) //如果要限定扫描值为1-9,为什么要只判断是否非零
  6. {
  7. if ( nScanCode==9 ) break;
  8. else
  9. {
  10. cKey=nScanCode;
  11. //前面已经判断过nScanCode了,cKey是直接由nScanCode赋值,为什么还要判断一次同样的内容。
  12. if ( cKey!=0 )
  13. {
  14. cOldKey=cKey;
  15. switch ( cKey )
  16. ...
  17. }}}}

5 思考题

思考题1:结合液晶显示控制实验,修改源程序,将所设定的占空比实时在液晶屏幕上显示。

  1. CTRGR=0x80; // 初始化ICETEK-CTR
  2. CTRGR=0x0;
  3. CTRGR=0x80;
  4. CTRLR=0; // 关闭东西方向的交通灯
  5. CTRLR=0x40; // 关闭南北方向的交通灯
  6. uPort8000=CTRCLKEY;
  7. TurnOnLCD(); // 打开显示
  8. LCDCLS(); // 清除显示内存
  9. CTRLCDCMDR=LCDCMDSTARTLINE; // 设置显示起始行
  10. Delay(LCDDELAY);
  11. CTRLCDCR=0;
  12. Delay(LCDDELAY);
  13. f_init(0,0); //初始化LCD为00
  14. CTRLR=0xC0;
  15. CTRGR=0x81;
  16. Gpio_PortA();
  17. Gpio_PortB();
  18. nSpeed=T46uS;
  19. uN=60; nCount=nCount1=0; nDir=0; cKey=cOldKey=0;
  20. StartCpuTimer0(); //启动定时器
  1. while (1)
  2. {
  3. nScanCode=*(int *)0x108001; // 读扫描码
  4. nScanCode&=0x0ff; // 低8位
  5. uPort8000=*(int *)0x108002;
  6. //Delay(5);
  7. if ( nScanCode!=0 )
  8. {
  9. if ( nScanCode==9 ) break;
  10. else
  11. {
  12. cKey=nScanCode;
  13. if ( cKey!=0 /*&& cOldKey!=cKey*/ )
  14. {
  15. cOldKey=cKey;
  16. switch ( cKey )
  17. {
  18. case 1: uN=10; break;
  19. case 2: uN=50; break;
  20. case 3: uN=60; break;
  21. case 4: uN=70; break;
  22. case 5: uN=80; break;
  23. case 6: uN=100; break;
  24. case 7:
  25. uN=uN+5;
  26. nScanCode=0;
  27. break;
  28. case 8:
  29. uN=uN-5;
  30. nScanCode=0;
  31. break;
  32. }
  33. CTRGR=0x80; // 初始化ICETEK-CTR
  34. CTRGR=0x0;
  35. CTRGR=0x80;
  36. CTRLR=0; // 关闭东西方向的交通灯
  37. CTRLR=0x40;
  38. b=uN%10;
  39. a=(uN-b)/10; //得到占空比个位数和十位数
  40. f_init(a,b); //输入待显示十位数个位数
  41. CTRLR=0xC0;CTRGR=0x81;
  42. }
  43. }
  44. }
  45. CTRLR=0xC0;CTRGR=0x81;
  46. //Delay(4);
  47. }
  48. StopCpuTimer0();
  49. CTRGR=0;
  50. }

思考题2:电动机是一个电磁干扰源。电动机的启停还会影响电网电压的波动,它周围的电器开关也会引发火花干扰。因此,除了采用必要的隔离、屏蔽盒电路板合理布线等措施外,看门狗的功能就会显得格外重要。看门狗在工作时不断地监视程序运行的情况,一旦程序“跑飞”,会立刻使DSP复位。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注