基于单片机的PCB钻床控制系统设计 第11页

基于单片机的PCB钻床控制系统设计 第11页
3-14 交流伺服电机控制电路图若图片无法显示请联系QQ3249114

3.9 本章小结

PCB钻床控制系统的硬件设计是本论文的重点之一。这一章详细地介绍了PCB钻床控制系统硬件各部分的设计与实现,其中包括对电源电路设计、系统复位电路设计、晶振电路设计、存储系统设计、JTAG接口电路、串口通信的硬件设计、键盘、LCD及交流伺服电机控制电路设计。

4PCB钻床控制系统的软件设计

4.1 键盘的软件设计

在本系统的设计中键盘是操作人员对整个系统发送指令的唯一通道,其软件的设计是很重要的,主要是键盘的初始化和按键识别。键盘的初始化,是整个系统初始化的一部分,其流程图如图4-1所示。

若图片无法显示请联系QQ3249114

4-1键盘的初始化流程图

本系统设计的键盘采用的是中断方式,所以键盘的按键识别其实是一个中断服务子程序,对应外部中断0。其流程图如图4-2所示:

若图片无法显示请联系QQ3249114

4-2 键盘程序设计图

其中键码识别函数:

int  keyboard(void)

{

    int key;

    rPCONE &=0xFFFFF0FF;

    if(( rPDATE&0x10)==0)

    {

          Delay(1);

          if (( rPDATE&0x10)==0)

                {

                  {

              default:  key=0;break;

             }

           return key;

           }

    }

    else

    {

          if(( rPDATE&0x20)==0)

          {

           Delay(1);

            if (( rPDATE&0x10)==0)

                 {

                 rPCONE &=0xFFFFF000;

                rPCONE |=0xFFFFF500;

                 rPDATE  &=(~0x30)

                    switch( rPDATE&0xF)

                    {

                     若图片无法显示请联系QQ3249114

               case 13:  key=2;break;

                     case  7:  key=4;break;

               default:  key=0;break;

               }

             return key;

             }

          }

      }

}

4.2 串口程序设计

在进行串口通信之前必须对串口进行初始化,首先要设置相应I/OTXD0RXD0功能引脚,然后通过ULXON0寄存器来设置串口数据格式,通过UCON0寄存器来设置串口工作模式,最后通过UBRDIV0来设置通讯波特率。在本系统的设计中串口的工作模式为查询方式,即UCON0[31]应为0101b。串口初始化代码程序如下:

void UART_Init(void)

{

//I/O口设置(GPH3,GPH2)

rGPHUP=Rgphup(0x03<<2)

rGPHCON=(Rgphcon&(0x000000A0)

//串口模式设置

rUFCON0=0x00;//禁止FIFO功能

rUMCON0=0x00;//AFC(流控制)禁能

rULCON0=0x03;//禁止IrDA,无奇偶校验,1位停止位,8位数据位

rUCON0=0x245;//使用PCLK来生成波特率,发送中断为电平触发模式,接受中断为边

             //沿触发模式,禁止接受超时中断,使能接受错误中断,正常工作模式,

             //中断或查询方式(非DMA

//串口波特率设置

若图片无法显示请联系QQ3249114

}

    使用串口发送数据时,将待发送数据写入UTXH0寄存器,然后通过读取UTRSTAT0寄存器的值判断数据是否发送完成。当然,实际代码也可以先等待UTXH0寄存器为空(通过读取UTRSTAT0寄存器的值判断),再将数据写入UTXH0寄存器,串口数据写入UTXH0寄存器,串口数据发送程序如下:

void UART_SendByte(uint8 data)

{

int  i;

若图片无法显示请联系QQ3249114 //等待发送器为空

for(i=0;I,10;i++);

rUTXH0=data;               //发送数据

}

进行串口数据接受时,通过读取UTRSTAT0寄存器的值判断是否接受到数据,如果接受到数据,则可以从URXH0寄存器中读出数据,串口数据接受程序如下:

int UART_GetKey(void)

{

int   i;

       for(i=0;I,10;i++);

     return(rURXH0);

}

4.3 LCD模块程序设计

根据HD61202液晶控制电路设计图3-14若图片无法显示请联系QQ3249114及其读写波形图4-3

 << 上一页  [11] [12] [13] [14] 下一页

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有