图3-4 工程显示界面
工程创建完毕后就能加载程序,直接按F7编译程序,程序出现的错误会显示出来,修改至无误后将程序现在到单片机中连接好仿真器和开发板。打开电源后就能进行程序调试了。
3.3主程序模块
程序开始工作之后,首先系统进行参数设置,然后系统分别扫描四路A/D输入,把采样数据寄存在单片机RAM中,然后进行判断。如果矩形面板沿X轴方向两对边的光电传感器采样数据不相等,说明这两对边与光入射方向不垂直,此时驱动电机使面板绕X轴方向 朝光强较强的一侧旋转:如果矩形面板沿Y轴方向两对边的 光电传感器采样数据不相等,则驱动电机使面板绕Y轴方向 朝光强较强的一侧旋转,直到面板的四条边都与光入射方向垂直。
沿X两侧采样值是否相等?进行AD转换N参数设置开始采集四个方向光信号Y调整X轴方向步进电机 沿Y两侧采样值是否相等?N 调整Y轴方向步进电机Y结束
图3-5主程序流程图
第 12 页
#include
WDTCTL = WDTPW + WDTHOLD;
P2SEL=0x00 //P2口所有引脚设置为一般的IO口 P2DIR=0x0f //pP2.0,P2.1,P2.2,P2.3为输出方向 P2OUT=0X00 //P2口先输出低电平 P2IE=0xf0 //p2.4,p2.5,p2.6,p2.7允许中断 P2IES=0xf0 //p2.4,p2.5.p2.6,p2.7下降沿触发中断
P6OUT|=BIT3=a P6OUT|=BIT4=b P6OUT|=BIT5=c P6OUT|=BIT6=d { If a>b else
P2OUT|=BIT0 P2OUT&=~BIT1 If a
P2OU|T=BIT1 P2OUT&=~BIT0 If c>d else
P2OU|T=BIT2 P2OUT&=~BIT3
第 13 页
If C P2OU|T=BIT3 P2OUT&=~BIT2 } 3.4信号采集模块 信号采集主要的主要过程是光敏三极管采集光信号,通过MSP430单片机进行AD转换,将模拟信号转换成数字信号的过程。MSP430 MSP430 中ADC12 模块提供了4 种转换模式,,本设计采用多通道转换模式,每次定时器A到来时读取A/D转换采集得到的数据,读数前停止A/D转换,读取完毕后继续启动。 #include 第 14 页 结束AD转换完成?YNADC是否忙?NY发送通道地址开始采集初始化开始启动AD转换 图3-6信号采集流程图 ADCl2CTLO=ADCl20N+SHTO8+MSC;//打开ADC,设置采样样时间 ADCl2CTLl=SHP+CONSEQ-3;//使用采样定时器 ADCl2MCTL0=INCH_0 ADCl2MCTLI=INCH一1 ADCl2MCTL2=INCH_2 ADCl2MCTL3=INCH_3+EOS//确定四路A/D通路 ADCl2IE=0x08//使能ADC中断 ADCl2CTL0 I=ENC//使能转换 ADC 12CTL0I=ADCl2SC//开始转换 } 3.5LCD显示模块 本设计采用12864液晶显示器。通过显示器我们能直观的看到光敏三极管采集到的光信号的强弱。 开始 LCD初始化设置 LCD设置为基本指令动作设置显示数据地址Y读状态忙?N写入显示数据N数据是否写完? Y 第 15 页 结束图3-7 LCD显示流程图 #include \#include \#include \#include \#include \#include \#include \#include \#define uint unsigned int #define uchar unsigned char void short_delay(uint i) { uint j; for(j=0;j<=i;j++); } void delayms(uchar tickms) { uchar count,i; _NOP(); _NOP(); _NOP(); for(i=tickms;i>0;i--) { for(count=0;count<=58;count++) {;} 第 16 页