基于单片机的PCB钻床控制系统设计 第11页
图3-14 交流伺服电机控制电路图若图片无法显示请联系QQ752018766
3.9 本章小结
PCB钻床控制系统的硬件设计是本论文的重点之一。这一章详细地介绍了PCB钻床控制系统硬件各部分的设计与实现,其中包括对电源电路设计、系统复位电路设计、晶振电路设计、存储系统设计、JTAG接口电路、串口通信的硬件设计、键盘、LCD及交流伺服电机控制电路设计。
在本系统的设计中键盘是操作人员对整个系统发送指令的唯一通道,其软件的设计是很重要的,主要是键盘的初始化和按键识别。键盘的初始化,是整个系统初始化的一部分,其流程图如图4-1所示。
若图片无法显示请联系QQ752018766
图 4-1键盘的初始化流程图
本系统设计的键盘采用的是中断方式,所以键盘的按键识别其实是一个中断服务子程序,对应外部中断0。其流程图如图4-2所示:
若图片无法显示请联系QQ752018766
图4-2 键盘程序设计图
其中键码识别函数:
int keyboard(void)
{
int key;
rPCONE &=0xFFFFF0FF;
if(( rPDATE&0x10)==0)
{
Delay(1);
if (( rPDATE&0x10)==0)
{
}
return key;
}
}
else
{
if(( rPDATE&0x20)==0)
{
Delay(1);
if (( rPDATE&0x10)==0)
{
rPCONE &=0xFFFFF000;
rPCONE |=0xFFFFF500;
rPDATE &=(~0x30)
switch( rPDATE&0xF)
{
若图片无法显示请联系QQ752018766
case 13: key=2;break;
case 7: key=4;break;
default: key=0;break;
}
return key;
}
}
}
}
在进行串口通信之前必须对串口进行初始化,首先要设置相应I/O为TXD0、RXD0功能引脚,然后通过ULXON0寄存器来设置串口数据格式,通过UCON0寄存器来设置串口工作模式,最后通过UBRDIV0来设置通讯波特率。在本系统的设计中串口的工作模式为查询方式,即UCON0[3:1]应为0101b。串口初始化代码程序如下:
void UART_Init(void)
{
//I/O口设置(GPH3,GPH2)
rGPHUP=Rgphup︱(0x03<<2)
rGPHCON=(Rgphcon&(~0x
//串口模式设置
rUFCON0=0x00;//禁止FIFO功能
rUMCON0=0x00;//AFC(流控制)禁能
rULCON0=0x03;//禁止IrDA,无奇偶校验,1位停止位,8位数据位
rUCON0=0x245;//使用PCLK来生成波特率,发送中断为电平触发模式,接受中断为边
//沿触发模式,禁止接受超时中断,使能接受错误中断,正常工作模式,
//中断或查询方式(非DMA)
//串口波特率设置
若图片无法显示请联系QQ752018766
}
使用串口发送数据时,将待发送数据写入UTXH0寄存器,然后通过读取UTRSTAT0寄存器的值判断数据是否发送完成。当然,实际代码也可以先等待UTXH0寄存器为空(通过读取UTRSTAT0寄存器的值判断),再将数据写入UTXH0寄存器,串口数据写入UTXH0寄存器,串口数据发送程序如下:
void UART_SendByte(uint8 data)
{
int i;
若图片无法显示请联系QQ752018766 //等待发送器为空
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若图片无法显示请联系QQ752018766及其读写波形图4-3。
<< 上一页 [11] [12] [13] [14] 下一页