毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 论文 >> 正文

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

更新时间:2008-5-29:  来源:毕业论文

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

4-3 读写波形图若图片无法显示请联系QQ752018766

编程如下:

首先,我们定义关于HD61202液晶控制器相关寄存器的宏(相关寄存器的定义可以查看芯片文档)。

#define LCD61202_BASE 0x20000000

#define WrCMD2(ch) (*(U8*)(LCD61202_BASE+0))=(U8)(ch)

#define WrDATA2(ch) (*(U8*)(LCD61202_BASE+1))=(U8)(ch)

#define RdSTUS2()   (*(U8*)(LCD61202_BASE+2))

#define RdDATA2()   (*(U8*)(LCD61202_BASE+3))

 

#define LCD1_ON()              WrCMD1(0x3F)

#define LCD1_OFF()              WrCMD1(0x3E)

#define LCD1_STATRT_SET(n)      WrCMD1(0xC0((char)n))

#define LCD2_OFF()              WrCMD2(0x3E)

#define LCD2_STATRT_SET(n)      WrCMD2(0xC0((char)n))

#define LCD2_ROW_SET(n)         WrCMD2(0xB8((char)n))//page set

#define LCD2_COL_SET(n)         WrCMD2(0x40((char)n))//y address set

#define LCD2_BUSY              (RdSTUS2()&80)

#define LCD2_ONOFF             (RdSTUS2()&20)

#define LCD2_RESET             (RdSTUS2()&10)

首先需要对LCD所在的bank进行设置,对LCD进行初始化,代码如下。

void init_LCD(void){

     设置系统bank

     rBWCON&=0xfff0ffff;

     rBANKCON4=0x7ff0;

     //复位LCD

     LCD_delay();

     while(LCD1_RESET);LCD_delay();

     while(LCD2_RESET);LCD_delay();

     LCD2_START_SET(0);LCD_delay();

     LCD1_START_SET(0);LCD_delay();

     //使能LCD

     LCD1_ON();LCD_delay;

     LCD2_ON();LCD_delay;

}

     LCD1_COL_SET(0);LCD_delay();

     LCD2_COL_SET(0);LCD_delay();

     for(j=0;j<64;j++){

         WrDATA1(0);LCD_delay;

         WrDATA2(0);LCD_delay;

}

}

Void set_LCD(U8 index,U8*buf){

//buf里的内容显示到第index行的显存中

LCD2_COL_SET(0);LCD_delay();

for(j=0;j<64;j++){

         WrDATA1(buf[j]);LCD_delay;//设置显示内容

         }

LCD2_COL_SET(0);LCD_delay();

for(j=0;j<64;j++){

         WrDATA2(buf[j]);LCD_delay;//设置显示内容

         }

}

4.3 电机控制功能的实现

在数控钻床中,我们对工作台电机的控制主要是在人为移动工作台时和加工时系统自动的控制工作台的移动。在人为移动工作台时,我们可以分为两类:一类是点动,我们按住点动键电机就移动,这没有什么好讲。我们来讲一下,非点动时人为移动工作台。它是通过操作人员输入坐标值后,系统自动运行到目标位置。图4-2是非点动时人为移动工作台和加工时系统自动的控制工作台的移动的实现流程。其中X轴、Y轴的运行控制函数程序如下:

void  motor(int *p,int counter)  

//*p指向孔位置数组,其中数组元素为孔位置的xy轴的坐标,counter为孔的数量

{

  int *post;

  int i=0;

  int x;

  int y;

  post=p;

     for(i=0;i<counter ; i++)

     {

        x=(*(post+1)).x-(*post).x ;

        y=(*(post+1)).y-(*post).y ;

        post++;

           if(y<0)

               {rPDATD &=(~0x20); }

            else

               }

            if(x<0)

               {rPDATD &=(~0x80); }

               }

          }

          rPDATD &=(~0x88);

}

4.4 本章小结

PCB钻床控制系统的软件设计是本论文的重点。这一章详细介绍了PCB钻床控制系统几个重点模块的软件设计,包括键盘的软件设计、串口程序设计、LCD模块程序设计、电机控制功能的实现。

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

基于单片机的PCB钻床控制系统设计 第12页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。