抢答器及计算器的讲解

本文回顾了单片机相关内容,包括矩阵键盘的工作原理和代码实现,外部中断的作用、概念及流程,以及LCD1602显示器的指令和代码。接着详细介绍了如何利用矩阵键盘和外部中断设计抢答器,以及创建简单的计算器,包括运算范围和LCD显示逻辑。
摘要由CSDN通过智能技术生成

单片机内容回顾


矩阵键盘

>原理图

这里写图片描述

>原理

行列扫描:
1.高四位全部输出低电平,低四位输出高电平。当接收到的数据,低四位不全为高电平时,说明有按键按下,然后通过接收的数据值,判断是哪一列有按键按下。
2.高四位输出高电平,低四位输出低电平,然后根据接收到的高四位的值判断是哪那一行有按键按下。

>实现代码

/*******************************************************************************
* 函 数 名         : KeyDown
* 函数功能         : 检测有按键按下并读取键值
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void KeyDown(void)
{
    char a=0;
    GPIO_KEY=0x0f;
    if(GPIO_KEY!=0x0f)//读取按键是否按下
    {
        delay(1000);//延时10ms进行消抖
        if(GPIO_KEY!=0x0f)//再次检测键盘是否按下
        {   
            //测试列
            GPIO_KEY=0X0F;
            switch(GPIO_KEY)
            {
                case(0X07): KeyValue=0;break;
                case(0X0b): KeyValue=1;break;
                case(0X0d): KeyValue=2;break;
                case(0X0e): KeyValue=3;break;
            }
            //测试行
            GPIO_KEY=0XF0;
            switch(GPIO_KEY)
            {
                case(0X70): KeyValue=KeyValue;break;
                case(0Xb0): KeyValue=KeyValue+4;break;
                case(0Xd0): KeyValue=KeyValue+8;break;
                case(0Xe0): KeyValue=KeyValue+12;break;
            }
            while((a<50)&&(GPIO_KEY!=0xf0))  //检测按键松手检测
            {
                delay(1000);
                a++;
            }
        }
    }
}

外部中断

>中断的作用

如果没有中断系统,就只能由 CPU 按照程序编写的先后次序,对各个外设,进行巡回检查与处理。这就是查询式工作方式,貌似公平,实际效率却不高。如果有了中断系统,整个计算机系统,就具有了应付突发事件的处理能力。这就是中断式工作方式。

>中断的概念

这里写图片描述
这里写图片描述

>外部中断基本流程

这里写图片描述
这里写图片描述
这里写图片描述

(P3.2)可由IT0(TCON.0)选择其为低电平有效还是下降沿有效。当CPU检测到P3.2引脚上出现有效的中断信号时,中断标志IE0(TCON.1)置1,向CPU申请中断。

>实现代码

void Int0Init()
{
    //设置INT0
    IT0=1;//跳变沿出发方式(下降沿)
    EX0=1;//打开INT0的中断允许。    
    EA=1;//打开总中断    
}

void Int0() interrupt 0     //外部中断0的中断函数
{
    //中断发生时进行的操作
}

LCD1602

>原理图及功能指令

<

  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
八路抢答器Multisim仿真源文件+设计说明文档+AD原理图及器件清单: 元件清单.xls 原理图 参考设计报告.doc 抢答器.ms12 操作说明.doc 电路讲解.doc 设计思路.doc 八路抢答器设计思路 一、任务要 1、总共有八位选手参与抢答; 2、当主持人没有按下开始时,任何抢答都无效; 3、当主持人按下开始按键后,开始30秒倒计时,此时任何选手都可以参与抢答; 4、当第一个选手抢答成功后,会显示选手的编号,同时倒计时停止,并且后面的其他选手抢答均无效; 5、当倒计时到最后五秒时,指示灯会闪烁,并且如果倒计时到0了还没有选手抢答,那么此次无效。 二、设计思路 本设计主要分成两大块电路:抢答电路和倒计时电路。 抢答电路要解决如下几个问题: 1、计算出选手的编号,这个可以采用8-3编码器。 2、要保证只有第一个选手的抢答是有效的,后面其他的无效,这个就需要采取锁存电路,当还没有任何人抢答的时候,锁存器是不生效的,处于直通的工作状态,当有第一个人抢答了,锁存器就开始起作用,将该号码固定下来,后面的即使有人抢答,其编号也无法通过锁存电路,实现该电路可以采用4个D触发器。前三个触发器用来输出选手编号,后面一个触发器用来控制锁存器的工作状态(是直通还是锁存),只需要让D触发器的CLK端控制得当,就可以实现锁存。 倒计时电路要解决如下问题: 1、秒脉冲产生电路,因为要以秒倒计时,所以需要一个秒脉冲电路,这个可以通过晶振分频或者555来搭建电路; 2、30秒的倒计时逻辑电路,可以通过两个十进制计芯片级联形成; 3、倒计时电路跟抢答电路的联动,首先需要抢答开始的时候倒计时马上开始,抢答结束时,倒计时也要停止,这里只需要将抢答电路中的主持人开关信号跟最后一个D触发器的输出通过合适的逻辑电路来控制555的输出就可以做到。
本软件在支持TCP/IP协议的网络内都可使用,替代传统的电子抢答器,解决传统的电子抢答器极易损坏且布线麻烦费用高等问题,准确灵敏。实际使用时,一台微机作服务器,其他微机与服务器在同一局域网上就可以进行抢答,参赛队目前最多支持 100 个(理论上可以支持无限,但是受图形界面版面布局限制)满足绝大多的抢答需。 服务端主要功能设置: 1、标题设置:标题内容颜色可以修改,方便于不同场合使用。 2、端口设置:端口可以修改,并避免与其他软件冲突。 3、声音设置:服务端在用户上线、抢答犯规、抢答成功、问题回答正确和回答错误时或者超时都有不同的声音提示。声音可以自行设置。 4、设置分:初始分、答对加分、打错扣分、抢答扣分、超时扣分以及答题时限。 5、图形设置:可设置图标量行和列 以及不同状态下图标的颜色。 6、题号设置:点击题号控制按钮时,给所有客户机发送“请做好抢答准备!”信息,但此时抢答将会犯规;在点击“开始抢答”后方可正式抢答。犯规者扣分并且只能等待竞答下一题。 7、抢答设置:在点击“开始抢答”后方可正式抢答。抢答成功会答题显示倒计时面板。 在答题(倒计时)面板点击“答对了”按钮加分,点击“答错了”按钮扣分,没点击这两个按钮的话,倒计时完成会自动扣分。 8、题目导入:将比赛题目按行录入文本文件(每行一题。避免出错编辑题目时关闭自动换行)然后从txt文件导入题目。 9、全屏设置:为方便投影展示,可以设置全屏。 客户端主要功能设置: 在客户端输入序号、代表队名称及服务器IP地址,按连接服务器,服务器上相应代表队序号图标变色。客户端等待服务器命令进行抢答操作。序号重复会提示更改序号重新连接。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值