已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include unsigned char code table=0xc0,0xf9,0xa4,0xb0, /0f显示表 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e;unsigned char code table0=0xf1,0xf2,0xf4,0xf8; /P2口位选 unsigned char code table2=0xef,0xdf,0xbf,0x7f; /P3口送行信号unsigned char display=0,0,0,0; /显示位void sw1(); /子函数申明void sw2();void sw3();void sw4();void xianshi();void init();unsigned char temp,num2,x,x1,x2,a,count; /变量声明int num,num1;unsigned char key; unsigned char i,j; sbit P3_4=P34;sbit P3_5=P35;sbit P3_6=P36;sbit P3_7=P37;sbit k1=P10; /位申明(时间加)sbit k2=P11; /位申明(时间减)sbit k3=P12; /位申明(开始)sbit k4=P13; /位申明(复位)sbit sp=P14; /蜂鸣器sbit l1=P15; /LED显示sbit l2=P16; /LED显示void delay(unsigned char z) /延时1ms子函数 unsigned char x,y; for(x=z;x0;x-) for(y=110;y0;y-);void init() /初始化子函数 a=0; TMOD=0x01; /定时器T0工作方式设定 TH0=(65536-10000)/256;/装初值 TL0=(65536-10000)%256; EA=1;/开定时器T0 ET0=1; if(k1=0) /判断时间加K1是否按下 delay(5); /延时躲过抖动 if(k1=0) /再次确认是否按下K1 num+; /时间自加1 if(num=99) /如果时间num=99,清零num num=0; num2=num; /将num值赋值给num2 while(k1=0); /等待K1松手 if(k2=0)/判断时间减K2是否按下 delay(5);/延时躲过抖动 if(k2=0) /再次确认是否按下K2 num-; /时间自减1 if(num=-1)/如果时间num=-1,赋值num=99 num=99; num2=num;/将num值赋值给num2 while(k2=0);/等待K2松手 if(k3=0) /判断开始按钮K3是否按下 delay(5);/延时躲过抖动 if(k3=0)/再次确认是否按下K3 x+;/自加1 if(x=2)/假如x=2,清零x x=0; void keyboad() /按键检测子函数while(1) P3=0xff; /读引脚前需写入高电平 P3_4=0; /置第一行线为低 temp=P3; /P3口信息送入temp中 temp=temp & 0x0f; /屏蔽高四位,保留低四位 if (temp!=0x0f) /判断:假如列线有不为高的时候,执行if循环体 delay(5);/延时躲过抖动 temp=P3; temp=temp & 0x0f; if (temp!=0x0f) temp=P3; temp=temp & 0x0f; /判断是哪个键按下 switch(temp) case 0x0e: /第一行第四个按下 delay(5);num1=4;l2=0;xianshi(); /第一行第一个键按下 break; case 0x0d: /第一行第三个按下 delay(5);num1=3;l2=0;xianshi(); break; case 0x0b: /第一行第二个按下 delay(5);num1=2;l2=0;xianshi(); break; case 0x07: /第一行第一个按下 delay(5);num1=1;l2=0;xianshi(); break; /第一行第一个键按下 P3=0xff; P3_5=0; temp=P3; temp=temp & 0x0f; if (temp!=0x0f) delay(5);/延时躲过抖动 temp=P3; temp=temp & 0x0f; if (temp!=0x0f) temp=P3; temp=temp & 0x0f; switch(temp) case 0x0e: delay(5);num1=8;l2=0;xianshi(); break; /第二行第四个键按下 case 0x0d: delay(5);num1=7;l2=0;xianshi(); break; /第二行第三个键按下 case 0x0b: delay(5);num1=6;l2=0;xianshi(); break; /第二行第二个键按下 case 0x07: delay(5);num1=5;l2=0;xianshi(); break; /第二行第一个键按下 P3=0xff; P3_6=0; temp=P3; temp=temp & 0x0f; if (temp!=0x0f) delay(5);/延时躲过抖动 temp=P3; temp=temp & 0x0f; if (temp!=0x0f) temp=P3; temp=temp & 0x0f; switch(temp) case 0x0e: delay(5);num1=12;l2=0;xianshi(); break; /第三行第四个键按下 case 0x0d: delay(5);num1=11;l2=0;xianshi(); break; /第三行第三个键按下 case 0x0b: delay(5);num1=10;l2=0;xianshi(); break; /第三行第二个键按下 case 0x07: delay(5);num1=9;l2=0;xianshi(); break; /第三行第一个键按下 P3=0xff; P3_7=0; temp=P3; temp=temp & 0x0f; if (temp!=0x0f) delay(5);/延时躲过抖动 temp=P3; temp=temp & 0x0f; if (temp!=0x0f) temp=P3; temp=temp & 0x0f; switch(temp) case 0x0e: delay(5);num1=16;l2=0;xianshi(); break; /第四行第四个键按下 case 0x0d: delay(5);num1=15;l2=0;xianshi(); break; /第四行第三个键按下 case 0x0b: delay(5);num1=14;l2=0;xianshi(); break; /第四行第二个键按下 case 0x07: delay(5);num1=13;l2=0;xianshi(); break; /第四行第一个键按下 temp=P3; P0=tablekey; void xianshi() TR0=0; /停止定时计数 num=0; /倒计时num清零 sp=1; /成功抢答,蜂鸣器叫 delay(100); /延时一段时间 sp=0; /关蜂鸣器 while(1) for(a=0;a4;a+) /显示部分位选 delay(5); P2=table0a; P0=tabledisplaya; display0=num/10; /倒计时显示0 display1=num%10; display2=num1/10; /显示抢答者号 display3=num1%10; if(k4=0) /判断复位键K4是否按下 num=num2; /num2值赋值给num num1=0; /清零抢答者号显示 TR0=1; /启动定时器TO l1=1; /D1,D2关闭 l2=1; return; void main()/主函数 l1=1;/D1,D2关闭 l2=1; sp=0;/初始化蜂鸣器 x=0; num=num2=30; /赋初值 while(1) if(x=1) /开始键按下 delay(5); TR0=1; /启动定时 while(1) keyboad();/调用按键检测子函数 if(k4=0)/判断复位键是否按下 l1=1;/D1,D2关闭 l2=1; delay(5); num=num2;/倒计时时间30秒赋值给num TR0=1;/启动定时器T0 else /开始键没有按下 for(a=0;a4;a+) /显示部分位选 delay(5); P2=table0a; P0=tabledisplaya; display0=num/10;/倒计时显示0 display1=num%10; display2=num1/10; /显示抢答者号 display3=num1%10; init(); /初始化 void time0() interrupt 1 /定时器T0中断 TH0=(65536-10000)/256; /重装初值 TL0=(65536-10000)%256; count+;/中断次数记录 if(k4=0)/复位键K4检测 num=num2; TR0=1; num1=0; return; for(a=0;a4;a+) delay(10); P2=table0a; P0=tabledisplaya; display0=num/10; /倒计时显示0 display1=num%10; display2=num1/10; /显示抢答者号 display3=num1%10; if(count=100)/1秒定时是否已到 count=0; /清零记录 num-; /显示倒计时自减一 if(num6) /倒计时倒数6秒,D2亮,蜂鸣器报警l1=l1;sp=1;delay(100);sp=0;if(num=0) /倒计时为0,D2亮,蜂鸣器报警 l1=0; sp=1;delay(200);sp=0;dela
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025广西防城港市港口区农旅发展集团有限公司公开招聘1人笔试历年备考题库附带答案详解试卷3套
- 2025广东广州筑业城建有限公司招聘人员(第二批)笔试人员及安排笔试历年常考点试题专练附带答案详解试卷3套
- 2025山东易通发展集团有限公司公开选聘职业经理人2人笔试历年常考点试题专练附带答案详解试卷3套
- 印染污水处理厂项目施工方案
- 污水处理厂尾水深海排放工程技术方案
- 灰岩矿石质量控制与检测方案
- 2025中国网安(含中国电科三十所)校园招聘200人笔试历年常考点试题专练附带答案详解试卷3套
- 2025中国化学工程第六建设有限公司校园招聘笔试历年典型考点题库附带答案详解试卷3套
- 2025上海交大高新2025校招笔试历年常考点试题专练附带答案详解试卷3套
- 大学生公务员考试试水试题及答案
- 校车车管员考试题及答案
- 经济基础决定上层建筑
- 药物毒理学试题及答案
- 2025年教师职称-江苏-江苏教师职称(基础知识、综合素质、小学音乐)历年参考题库含答案解析
- 2025年山东省兽药工程专业人员职称考试(基础知识和实务)历年参考题库含答案详解(5卷)
- 农商行面试题目及答案
- 信息技术分享课件
- 深度解读2025年家庭教育指导服务行业市场规模、增长速度及政策环境分析报告
- 2025年大学试题(大学选修课)-传统家具文化与艺术历年参考题库含答案解析(5套典型考题)
- 第8课 同学相伴 第1课时(课件)2025-2026学年道德与法治三年级上册统编版
- 中国古代采矿技术
评论
0/150
提交评论