一、对角棋游戏规则
二、系统电路图
三、LM041L的驱动(操作函数)
1.写命令
void LcdWcmd (uchar cmd)
{
HAL_GPIO_WritePin(GPIOA,RS,0);
HAL_GPIO_WritePin(GPIOA,RW,0);
GPIOC->ODR=0X00FF&cmd;
HAL_Delay(1);
HAL_GPIO_WritePin(GPIOA,E,1);
HAL_Delay(1);
HAL_GPIO_WritePin(GPIOA,E,0);
}
2.传入要显示的数据
void LcdWdat(uchar dat)
{
HAL_GPIO_WritePin(GPIOA,RS,1);
HAL_GPIO_WritePin(GPIOA,RW,0);
GPIOC->ODR=0X00FF&dat;
HAL_Delay(1);
HAL_GPIO_WritePin(GPIOA,E,1);
HAL_Delay(1);
HAL_GPIO_WritePin(GPIOA,E,0);
}
3.Lcd屏幕初始化
void LcdInit()
{
LcdWcmd(0x38);//显示模式设置
LcdWcmd(0x0c);//显示开/关以及光标设置指令
LcdWcmd(0x06);//RAM地址设置指令
LcdWcmd(0x01);//清屏指令
}
4.要显示数据的位置
void LcdShow(uchar x,uchar y)
{
uchar addr;
switch(x)
{
case 0:
addr=0x80+y;break;
case 1:
addr=0xc0+y;break;
case 2:
addr=0x90+y;break;
case 3:
addr=0xd0+y;break;
}
LcdWcmd(addr|0x80);
}
5.向LCD写入多个字节的数据
void LcdWstr(uchar *dat)
{
while(*dat != '\0')
{
LcdWdat(*dat);
dat++;
HAL_Delay(100);
}
}
四、对角棋游戏实现代码、电路图如下