P4OUT|=E; //E=1 Rdata=P4IN; P4OUT&=~E; //E=0 return Rdata; }
uchar ReadDatar(void) {
uchar Rdata;
P4DIR|=0X7F; //P4为输出口 P4OUT&=~CS1; //csa=0 P4OUT|=CS2; //csb=1 P4OUT&=~RS;
P4OUT|=RW; //RS=0,R/W=1,以便读液晶状态 P3DIR=0x00; //P4口为输入口 do {
P4OUT|=E; //E=1 cradd1=P3IN; P4OUT&=~E; //E=0 }
while((cradd1&0x80)!=0);
第 22 页
P4OUT|=RS; //RS=1 //P4OUT|=RW; //R/W=1 P4OUT|=E; //E=1 Rdata=P4IN; P4OUT&=~E; //E=0 return Rdata;
3.6步进电机控制模块
本设计控制步进电机是核心正是通过对步进电机的控制实现对点光源的追踪。
结束调整步进电机位置采集结果输入至L298芯片光信号采集设置中断设置端口及初始化开始图3-8步进电机控制流程图
第 23 页
void delay(unsigned int);//函数声明 void Iint_Port1(void)
unsigned int Speed=4 //设置速度为七档,默认为 4 档 unsigned int m //延时参数声明 void Speed_Update() //更新速度值 void main(void)
{ WDTCTL=WDTPW+WDTHOLD //关闭看门狗 Iint_Port1()
P3DIR = BIT0; //时钟输出口,速度调整控制口 // P1DIR =~BIT3;
P2DIR |= (BIT0+BIT1+BIT2+Bit3); //p2.0-P2.4 为控制信号输出口 P2OUT |= (BIT0+BIT1+BIT2+BIT3); _ EINT();//开总中断允许 while(1)
{ P3OUT = ~BIT0; Speed_Update(); delay(m); P3OUT = BIT0; Speed_Update(); delay(m); }}
#pragma vector=PORT1_VECTOR __interrupt void P1_ISR(void) { char i; i=P1IFG; switch(i&0xfc)
第 24 页
{ case 0x04 : if(Speed<7) Speed++; break; case 0x08 : if(Speed>1) Speed--; break; case 0x10 : P2OUT ^=BIT4; break; case 0x20 : P2OUT ^=BIT5; break; case 0x40 : P2OUT ^=BIT6; break; } P1IFG=0;
void Iint_Port1(void)
{ P1DIR =~(BIT2+BIT3+BIT4+BIT5+BIT6); P1IES =~(BIT2+BIT3+BIT4+BIT5+BIT6); P1IE =(BIT2+BIT3+BIT4+BIT5+BIT6); P1IFG=0; }
void delay(unsigned int tim) { while(tim--); }
void Speed_Update(void) { switch(Speed) { case 1: m=1500; break; case 2: m=1000; break; case 3: m=800; break; case 4: m=500; break; case 5: m=400; break; default break
第 25 页
4仿真
4.1 Proteus简介
Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
Proteus软件具有其它EDA工具软件(例:multisim)的功能。这些功能是: (1)原理布图 (2)PCB自动或人工布线 (3)SPICE电路仿真 革命性的特点 1)互动的电路仿真 用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。(2)仿真处理器及其外围电路 可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。还可以直接在基于原理图的虚拟原型 上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境。
Proteus具有非常多的功能模块
智能原理图设计(ISIS):丰富的器件库:超过27000种元器件,可方便地创建新元件;智能的器件搜索:通过模糊搜索可以快速定位所需要的器件; 智能化的连线功能:自动连线功能使连接导线简单快捷,大大缩短绘图时间; 支持总线结构:使用总线器件和总线布线使电路设计简明清晰;可输出高质量图纸:通过个性化设置,可以生成印刷质量的BMP图纸,可以方便地供WORD、POWERPOINT等多种文档使用。
完善的电路仿真功能(Prospice):ProSPICE混合仿真:基于工业标准SPICE3F5,实现数字/模拟电路的混合仿真; 超过27000个仿真器件:可以通过内部原型或使用厂家的SPICE文件自行设计仿真器件,Labcenter也在不断地
第 26 页