单片机篮球计分器lcd1602三屏的代码
时间: 2023-07-29 10:13:57 浏览: 231
这里是一个简单的单片机篮球计分器的代码,使用了LCD1602三屏来显示得分情况。需要注意的是,这只是一个基本的示例代码,您可能需要根据您的具体需求进行修改和优化。
```c
#include <reg52.h>
sbit RS = P2^0; //LCD1602的RS引脚
sbit RW = P2^1; //LCD1602的RW引脚
sbit EN = P2^2; //LCD1602的EN引脚
unsigned char count1 = 0; //计分器1的得分
unsigned char count2 = 0; //计分器2的得分
void delay(unsigned int i) //延时函数
{
while(i--);
}
void write_command(unsigned char command) //写入LCD1602的命令函数
{
RS = 0;
RW = 0;
P0 = command;
EN = 1;
delay(10);
EN = 0;
delay(10);
}
void write_data(unsigned char data) //写入LCD1602的数据函数
{
RS = 1;
RW = 0;
P0 = data;
EN = 1;
delay(10);
EN = 0;
delay(10);
}
void init_LCD() //LCD1602初始化函数
{
write_command(0x38); //设置16*2显示,5*7点阵,8位数据接口
write_command(0x0c); //开启显示,不显示光标
write_command(0x06); //写入一个字符后,光标自动加1
write_command(0x01); //清屏
}
void display_score1() //显示计分器1的得分
{
write_command(0x80); //设置光标位置为第一行第一列
write_data('1'); //显示计分器编号
write_data(':'); //显示分隔符
write_data(count1 + '0'); //显示得分
}
void display_score2() //显示计分器2的得分
{
write_command(0x80 | 0x40); //设置光标位置为第二行第一列
write_data('2'); //显示计分器编号
write_data(':'); //显示分隔符
write_data(count2 + '0'); //显示得分
}
void increase_score1() //计分器1加一分
{
count1++;
display_score1();
}
void increase_score2() //计分器2加一分
{
count2++;
display_score2();
}
void main()
{
init_LCD(); //LCD1602初始化
while(1)
{
if(P3^0 == 0) //检测计分器1按键是否按下
{
delay(1000); //防抖
if(P3^0 == 0)
{
increase_score1(); //计分器1加一分
}
}
if(P3^1 == 0) //检测计分器2按键是否按下
{
delay(1000); //防抖
if(P3^1 == 0)
{
increase_score2(); //计分器2加一分
}
}
}
}
```
以上代码使用了P2口来控制LCD1602的RS、RW、EN引脚,并使用了P0口来传输数据。在计分器加分时,通过检测P3口的按键状态来进行加分操作,并通过LCD1602的显示来显示得分情况。
阅读全文