八路抢答器单片机c语言程序_八路抢答器单片机c语言程序

八路抢答器单片机c语言程序_八路抢答器单片机c语言程序该楼层疑似违规已被系统折叠隐藏此楼查看此楼改成开始前抢答蜂鸣器响,红灯亮#include#defineuintunsignedint#defineucharunsignedcharsbitSW1=P1^0;//******sbitSW2=P1^1;//*八*sbitSW3=P1^2;//*路*sbitSW4=P1^3;//*抢*sb…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

改成开始前抢答蜂鸣器响,红灯亮#include

#define uint unsigned int

#define uchar unsigned char

sbit SW1=P1^0; //******

sbit SW2=P1^1; //* 八 *

sbit SW3=P1^2; //* 路 *

sbit SW4=P1^3; //* 抢 *

sbit SW5=P1^4; //* 答 *

sbit SW6=P1^5; //* 按 *

sbit SW7=P1^6; //* 钮 *

sbit SW8=P1^7; //******

sbit START=P2^3; //开始;

sbit RESET=P2^4; //复位;

sbit ADD=P2^5; //加一;

sbit DEC=P2^6; //减一;

sbit A=P2^7; //蜂鸣器;

sbit H1=P2^0; // 选手编号位 bai

sbit H2=P2^1; //剩余时间十位 shi

sbit H3=P2^2; // 剩余时间个位 ge

/*

显示部分:

段选:P0.0~P0.6;7段

位选:P2.0~P2.2;三位

注:共阳极LED

*/

uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,

0x92,0x82,0xf8,0x80,0x90,}; //数码管显示字符定义 对应0~9;

void keyscan(); //键盘扫描函数申明;

void display(); //显示函数申明

void delay(uint); //延时函数申明

void FUWEI();//复位函数申明

void qushu();//拆分任意两位数

uint input=30; //默认剩余时间30秒;

uchar ge,shi,bai=0,n=1,m=0,t=0,temp; //定义变量;

//***************************************************************//

//*********************>>>主函数开始<<

//***************************************************************//

void main()

{

TMOD=0x01;//设置定时器0为工作方式1.(M1M0为1)

TH0=(65536-50000)/256; //装初值。11.0592M晶振定时50ms数为45872.

TL0=(65536-50000)%256; //低位

EA=1; //开启总中断。

ET0=1; //开定时器0中断

/***************中断服务子程序每结束一次都回到TR0=1这点***********/

while(1) //主程序死循环,保证抢答器一直运行下去

{

keyscan();//*************************

qushu();//****依次扫描此3个函数***

display();//*************************

}

}

//系统复位函数

void FUWEI()

{

TR0=0; //关定时器

TH0=(65536-50000)/256; //重装初值。

TL0=(65536-50000)%256; //低8位

t=0; //中断函数计数清零

A=0;//***********

delay(500); //报警500毫秒

A=1;//***********

bai=0;//选手编号清零

input=30;//设置剩余时间

}

//系统显示函数

void display()

{

H1=0;//**************************************

P0=table[bai]; //********* 选手编号显示 *************

delay(1); //**************************************

H1=1; //关一位数码管,保证选手编号位不被干扰**

H2=0; //**************************************

P0=table[shi]; //********* 剩余时间十位显示 *********

delay(1); //**************************************

H2=1; //********* 关二位数码管 *************

H3=0; //**************************************

P0=table[ge]; //********* 剩余时间个位显示 *********

delay(1); //**************************************

H3=1; //********* 关三位数码管 *************

}

//拆分任意两位数函数

void qushu()

{

shi=input/10;//取整

ge=input%10;//取余

}

//键盘扫描函数

void keyscan()

{

//复位操作,无论何时,都可以复位,节省时间

if(RESET==0)

{

delay(200);//延时200毫秒,防止按键机械振动引起的误差

FUWEI();//系统复位

n=1;//复位后开启主持人其他权限

}

//n为1时,表示还没开始抢答,可以操作

if(n)

if(START==0)//开始抢答>>需要自锁<<

{

TR0=1; //开定时器

A=0;//*************

delay(500);//报警500毫秒*

A=1;//*************

m=1;//开启选手抢答权限

n=0;//自锁,开始后不检测此按钮,有效防止在选手答题时主持人误操作。

}

//调整时间函数,抢答前可操作。

if(n)

{

if(ADD==0)

{

delay(200); //防止按键抖动重复加一

input++; //时间加一

}

if(DEC==0)

{

delay(200);

input–;//时间减一

}

}

//主持人启动START按钮后,开始检查选手按钮。

if(m)

{

if(P1!=0xFF) //如果有选手抢答,则找出他的编号

{

temp=P1;

m=0;//自锁,此后不再检测选手抢答键,直到主持人启动START为止。

switch(temp)

{

case 0xFE:bai=1; //一号选手答题

break;

case 0xFD:bai=2; //二号选手答题

break;

case 0xFB:bai=3; //三号选手答题

break;

case 0xF7:bai=4; //四号选手答题

break;

case 0xEF:bai=5; //五号选手答题

break;

case 0xDF:bai=6; //六号选手答题

break;

case 0xBF:bai=7; //七号选手答题

break;

case 0x7F:bai=8; //八号选手答题

break;

}

TR0=0; //关定时器,剩余时间不再减少,显示剩余时间

}

}

}

//中断方式一服务程序。

void timer() interrupt 1

{

TH0=(65536-50000)/256;//重装初值。

TL0=(65536-50000)%256;

t++; //每累加一次,判断是否到20.

if(t==20) //如果到了20次,说明1秒时间到。

{

t=0; //然后把t清零重新再记20次。

input–; //减一秒

if(input==0) //如果没人回答,自动复位;

FUWEI(); //系统复位

qushu(); //刷新显示

}

}

//延时函数,利用系统计算时间延时,不占用计时器。

void delay(uint z)

{

uint x,y;

for(x=100;x>0;x–)

for(y=z;y>0;y–);

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/179947.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Pycharm调试_pycharm 远程调试

    Pycharm调试_pycharm 远程调试动机一些bug由于本地环境和线上环境的不一致可能导致本地无法复现本地依赖和线上依赖版本不一致也可以导致一些问题有时一些bug跟数据相关,本地数据无法和线上数据一致有些三方平台会验证服务器的合法性或者异步回调结果,如微信支付,这时候本地无法测试如上所诉,要是有一个很方便调试远程服务器的方法,岂不美哉。通过PyCharm我们可以很方便地实现远程调试,下面详细介绍下PyCharm这个牛叉的功能。添加远程…

    2025年7月1日
    3
  • java 缓存工具类初始化_Java缓存框架

    java 缓存工具类初始化_Java缓存框架Java缓存工具类Cache工具类定义

    2022年10月4日
    3
  • 配置Silverlight网站访问出现空白页面的解决办法

    配置Silverlight网站访问出现空白页面的解决办法
    打开IIS->站点属性->HTTP头->MIME类型->新建:
    扩展名:.xap    MIME类型: xapapplication/x-silverlight
    扩展名:.xaml  MIME类型: application/xaml+xml
     
    Silverlight的页面文件扩展名为xmal,项目编译后生成XAP包
    浏览器在页面呈现时无法对xmal、xap进行解析,
    需要加入MIME类型(MultipurposeIn

    2022年10月9日
    3
  • C语言数组初始化

    C语言数组初始化转载博客代码编译运行环境:VS2017+Win32+Debug1.字符数组的初始化方式C语言中表示字符串有两种方式,数组和指针,字符数组是我们经常使用的方式。变量的定义包括指明变量所属类型、变量名称、分配空间以及初始化。可以看出,变量的初始化是变量定义的一部分。除了const变量需要显示初始化以外,其它变量如果在定义时未显示初始化,编译器会为变量以默认…

    2022年7月18日
    18
  • 群晖nas 文件服务器,群晖nas挂到云服务器上

    群晖nas 文件服务器,群晖nas挂到云服务器上群晖nas挂到云服务器上内容精选换一换在公有云上部署SAPHANA所需要的云服务如下。无法直接从云备份控制台查看备份中的数据,您可以通过以下几种方式进行查看:云服务器备份使用云服务器备份创建镜像后,再使用镜像创建云服务器。登录云服务器,查看服务器中的数据。云硬盘备份使用云硬盘备份创建新的云硬盘后,将云硬盘挂载至云服务器上。登录云服务器,查看磁盘中的数据。SFSTurbo备份使用SFSTur…

    2022年6月26日
    42
  • Adobe dreamweaver CS6小白入门教程「建议收藏」

    Adobe dreamweaver CS6小白入门教程「建议收藏」1.界面认识2.创建站点:(针对复杂网站使用)站点是一系列文档的组合,这些文档通过各种链接建立逻辑关联。是管理网页文档场所。DWCS6是一个站点创建和管理工具,使用它不仅可以创建单独文档,还可以创建完整的站点。创建网页:新建。3.管理站点的操作:打开站点、编辑站点、删除站点、复制站点、导入导出站点4.管理站点中的文件1.创建文件夹和文件…

    2022年6月12日
    54

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号