Leixiasama 2021-07-05 10:51 采纳率: 0%
浏览 34

利用LCD1602显示的数字抢答器设计

STC12C5A60S2(引脚排序及基本功能同AT89S51)作为主控芯片,设计抢答器,利用LCD显示最先按下按键的编号。一是设计LCD1602显示电路,用于显示最先抢答的按键编号;二是设计按键电路,设置总允许按键,当总允许按键按下后可进行抢答。

  • 写回答

2条回答 默认 最新

  • 梦幻编织者 2023-06-07 17:31
    关注

    以下是抢答器的电路设计:

    按键电路设计
    首先,我们需要设计按键电路,用于检测按键是否被按下。我们可以使用一个8位DIP开关,将其接到P3口上,通过检测P3口的状态来判断按键是否被按下。当按键被按下时,P3口对应的位会变成0,反之为1。

    LCD1602显示电路设计
    接下来,我们需要设计LCD1602显示电路,用于显示最先抢答的按键编号。我们可以将LCD1602的RS、RW、E、D0-D7引脚分别接到P2口上,通过P2口向LCD发送指令和数据来控制其显示内容。

    抢答器程序设计
    最后,我们需要编写抢答器的程序,实现如下功能:

    1)等待总允许按键被按下,表示抢答开始。

    2)当有按键被按下时,判断是否为最先按下的按键,并将其编号显示到LCD上。

    3)等待所有按键都被按下后,显示最先抢答的按键编号,并等待一段时间后清空LCD,准备进行下一轮抢答。

    下面是STC12C5A60S2的抢答器程序参考代码:

    #include<reg52.h>
    #include<intrins.h>
    #define LCD1602_DB P2
    sbit LCD1602_RS=P2^0;
    sbit LCD1602_RW=P2^1;
    sbit LCD1602_E=P2^2;
    sbit KEY=P3^0;
    unsigned char code table[]="12345678";
    unsigned char key;
    unsigned char first_key;
    unsigned char flag;
    void delay(unsigned int i)
    {
    while(i--);
    }
    void write_com(unsigned char com)
    {
    LCD1602_RS=0;
    LCD1602_RW=0;
    LCD1602_DB=com;
    LCD1602_E=1;
    nop();
    LCD1602_E=0;
    delay(10);
    }
    void write_data(unsigned char data)
    {
    LCD1602_RS=1;
    LCD1602_RW=0;
    LCD1602_DB=data;
    LCD1602_E=1;
    nop();
    LCD1602_E=0;
    delay(10);
    }
    void init_lcd1602()
    {
    write_com(0x38);
    delay(5);
    write_com(0x0c);
    delay(5);
    write_com(0x06);
    delay(5);
    write_com(0x01);
    delay(5);
    }
    void main()
    {
    init_lcd1602();
    while(1)
    {
    if(KEY==0&&!flag)
    {
    first_key=table[0];
    write_data(first_key);
    flag=1;
    }
    if(KEY==0&&flag)
    {
    key=table[0];
    if(key<first_key)
    {
    first_key=key;
    write_com(0x80+0x40);
    write_data(first_key);
    }
    }
    if(KEY==1&&flag)
    {
    delay(1000);
    write_com(0x01);
    flag=0;
    }
    }
    }
    

    注意:上述代码仅供参考,具体实现可能需要根据实际情况进行修改。

    评论

报告相同问题?

悬赏问题

  • ¥15 streamingtool
  • ¥15 MATLAB图像问题
  • ¥20 树莓派5做人脸情感识别与反馈系统
  • ¥15 selenium 控制 chrome-for-testing 在 Linux 环境下报错 SessionNotCreatedException
  • ¥15 使用pyodbc操作SQL数据库
  • ¥15 MATLAB实现下列
  • ¥30 mininet可视化打不开.mn文件
  • ¥50 C# 全屏打开Edge浏览器
  • ¥80 WEBPACK性能优化
  • ¥30 python拟合回归分析