收藏 分销(赏)

基于单片机八路抢答器的设计.doc

上传人:w****g 文档编号:10599329 上传时间:2025-06-04 格式:DOC 页数:41 大小:476.04KB
下载 相关 举报
基于单片机八路抢答器的设计.doc_第1页
第1页 / 共41页
基于单片机八路抢答器的设计.doc_第2页
第2页 / 共41页
点击查看更多>>
资源描述
四川信息职业技术学院 毕业设计说明书(论文) 设计(论文)题目: 基于单片机设计八路抢答器 专 业: 应用电子技术 班 级: 应电08-2班 学 号: 0818093 姓 名: 肖 亮 指导教师: 李 华 二0一0年七月十日 37 / 41 四川信息职业技术学院毕业设计(论文)任务书 学 生 姓 名 肖亮 学号 班级 应电08-2班 专业 应用电子技术 设计(或论文)题目 八路抢答器 指导教师姓名 职 称 工作单位及所从事专业 联系方式 备 注 李华 讲师 四川信息职业技术学院 设计(论文)内容: 运用电子技术知识、技能设计8路抢答器。 功能要求如下: 1.采用11个按键控制抢答器功能。 2.主持人按下开始键后,发出一声声响,表示竞赛抢答开始,数码管显示倒计时。 3.最先按键小组抢答成功,显示对应小组编号。 4.用2位数码管指示抢答结束时间,初值可用键盘设置;采用倒计时方式,当规定时间到后,发出长鸣指示,表示此轮抢答结束。 5.主持人按复位键后,可进行下一轮抢答,抢答时间可以通过按键设置。 进度安排: 第2~4周:查找资料,选择参考方案; 第5~6周:确定方案 第7~10周:查找资料,进行单元电路设计; 第11~13周:整机电路整机及分析. 第14~15周:整理报告,确定初稿; 第15周:检查定稿. 主要参考文献、资料(写清楚参考文献名称、作者、出版单位): [1]张立科编著 《单片机典型模块设计实例导航》北京:人民邮电出版社,2004. [2]李金利编著 《单片机原理及应用技术》北京:高等教育出版社,2004. [3]董晓红编著 《单片机原理及接口技术》西安:电子工业出版社,2007. [4]王振红编著 《数字电路设计及应用实践教程》北京:机械工业出版社,2003. [5]张靖武编著 《单片机系统proteus设计及仿真》北京:清华大学出版社,2003. [6]潭浩强编著 《C程序设计》北京:清华大学出版社,2004. 审 批 意 见 教研室负责人: 年 月 日 备注:任务书由指导教师填写,一式二份。其中学生一份,指导教师一份。 目 录 摘 要 1 第1章 绪论 2 第2章 整体设计方案 3 2.1 方案设计 3 2.2 方案论证 4 第3章 硬件设计 5 3.1 主控芯片介绍 5 3.2 时钟电路和复位电路 7 3.2.1 时钟电路 7 3.2.2 复位电路: 8 3.3 抢答电路 8 3.4 显示电路 9 3.5 控制电路 10 3.6 报警电路 10 3.7 整机工作原理 11 第4章 软件设计 12 4.1 定时中断模块 12 4.2 外部中断模块 12 4.3 报警模块 15 4.4 控制模块 17 4.5 主程序模块 18 第5章 系统仿真 20 5.1 抢答器Keil软件仿真 20 5.2 抢答器protenus软件仿真 20 5.3 调试及运行 21 结 论 22 参考文献 23 附录1 电路原理图 24 附录2 源程序 25 附录3 元件表明细 31 摘 要 此次设计提出了用AT89C52单片机为核心控制元件,设计一个简易8路抢答器,本方案以AT89C52单片机作为主控核心,及数码管、蜂鸣器等构成8路抢答器,利用了单片机延时电路、按键复位电路、时钟电路、定时/中断等电路,设计抢答器具有实时显示抢答选手号码和抢答时间特点,还有复位电路,使其再开始新一轮答题和比赛,同时还利用C语言编程,使其实现一些基本功能。 本设计系统实用性强、判断精确、操作简单、扩展功能强。它功能实现是比赛开始,主持人读完题之后按下开始开关,即计时开始,此时数码管开始进行30秒倒计时,直到有一个选手抢答时,对应会在数码管上显示出该选手编号以及剩余时间,同时蜂鸣器也会发出声音,以提示有人抢答本题,在规定最后5秒时间内还没有做出抢答,蜂鸣器发出报警,提示选手尽快作答,如果30秒内无人作答则此题作废,即开始重新一轮抢答。 关键词 单片机;数码管;抢答器 第1章 绪论 二十世纪跨越了三个“电”时代,即电气时代、电子时代和现已进入电脑时代。不过,这种电脑,通常是指个人计算机,简称PC机。它由主机、键盘、显示器等组成。还有一类计算机,大多数人却不怎么熟悉。这种计算机就是把智能赋予各种机械单片机(亦称微控制器)。顾名思义,这种计算机最小系统只用了一片集成电路,即可进行简单运算和控制。因为它体积小,通常都藏在被控机械“肚子”里。它在整个装置中,起着有如人类头脑作用,它出了毛病,整个装置就瘫痪了。现在,这种单片机使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代功效,常在产品名称前冠以形容词“智能型”。 在知识竞赛中,往往会用到抢答器。故此我们就选择利用单片机编程来设计抢答器,即使两组抢答时间相差几微秒,也能轻松分辨出哪一组(或哪个选手)先抢答到题。 本系统采用单片机作为整个控制核心。控制系统四个模块为:显示模块、存储模块、语音模块、抢答开关模块。该系统通过开关电路四个按键输入抢答信号,利用一个数码管来完成显示功能,用按键来让选手进行抢答,在数码管上显示哪一组先答题,从而实现整个抢答过程。工作时,用按键通过开关电路输入各路抢答信号,经单片机处理, 输出控制信号,单片机控制智能抢答器设计。 第2章 整体设计方案 2.1 方案设计 方案一: 抢答按钮 优先编码电路 锁存器 译码电路 译码显示 主持人控制开关 控制电路 报警电路 秒脉冲产生电路 定时电路 译码电路 显示电路 图2-1 模数电抢答器设计方案 采用模数电设计,包括优先编码电路、锁存器、译码电路将参赛队输入信号在显示器上输出;用控制电路和主持人开关启动报警电路,以上两部分组成主体电路。通过定时电路和译码电路将秒脉冲产生信号在显示器上输出实现计时功能,构成扩展电路。经过布线、焊接、调试等工作后数字抢答器成形。如图2-1所示。 方案二: 采用AT89C52单片机为核心控制元件,发光二极管、数码管、蜂鸣器等构成8路抢答器,利用了单片机延时电路、按键时钟电路、复位电路、报警电路、显示电路、控制电路、抢答电路,设计抢答器具有实时显示抢答选手号码和抢答时间特点,还有复位电路,使其再开始新一轮答题和比赛,同时还利用C语言编程,使其实现一些基本功能。如图2-2所示。 单 片 机 显示电路 控制电路 抢答电路 时钟电路 复位电路 报警电路 图2-2 单片机抢答器设计方案 2.2 方案论证 抢答器又称为第一信号鉴别器,其主要应用于各种知识竞赛、文艺活动、证券、股票交易及各种智力竞赛等场合。在很多公开竞争场合要求有公正竞争裁决,因此出现了抢答器。 方案一由很多电路组成,线路复杂,可靠性不高,功能也比较简单,特别是当抢答路数很多时,实现起来就更为困难。因此我们设计采用方案二以单片机为核心新型智能抢答器,在保留原始抢答器基本功能同时又增加了数码管显示电路实现了其它功能。 第3章 硬件设计 3.1 主控芯片介绍 单片机AT89C52具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统设计需要,很适合便携手持式产品设计使用系统可用二节电池供电。 AT89C52是一个低电压,高性能CMOS 8位单片机,片内含4k bytes可反复擦写Flash只读程序存储器和128 bytes随机存取数据存储器(RAM),器件采用ATMEL公司高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大微型计算机AT89C52提供了高性价比解决方案。 AT89C52是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用微处理器和Flash存储器结合在一起,特别是可反复擦写Flash存储器可有效地降低开发成本。 图3-1 AT89C52引脚图 主要功能特性如表3-2所示: 兼容MCS-51指令系统 4k可反复擦写(>1000次)Flash ROM 32个双向I/O口 可编程UARL通道 两个16位可编程定时/计数器 全静态操作0-24MHz 1个串行中断 128x8bit内部RAM 两个外部中断源 共6个中断源 可直接驱动LED 3级加密位 低功耗空闲和掉电模式 软件设置睡眠和唤醒功能 表3-2 AT89C52功能特性表 AT89C52单片机管脚功能: VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口管脚被外部拉低,将输出电流。这是由于内部上拉缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口是8个带内部上拉电阻双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉缘故。 P3口也可作为AT89C51一些特殊功能口,如下表所示: P3口管脚备选功能 P3.0RXD(串行输入口) P3.1TXD(串行输出口) P3.2(外部中断0) P3.3(外部中断1) P3.4T0(记时器0外部输入) P3.5T1(记时器1外部输入) P3.6(外部数据存储器写选通) P3.7(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期高电平时间。 :外部程序存储器选通信号。在由外部程序存储器取指期间,每个机器周期两次有效。但在访问外部数据存储器时,这两次有效信号将不出现。 VPP:当保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,将内部锁定为RESET;当端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器输入及内部时钟工作电路输入。 XTAL2:来自反向振荡器输出。 3.2 时钟电路和复位电路 3.2.1时钟电路 单片机时钟信号用来提供单片机内各种微操作时间基准,时钟电路用于产生单片机工作所需要时钟信号。 单片机时钟信号用来提供单片机片内各种微操作时间基准,时钟信号通常用两种电路形式得到:内部振荡和外部振荡。本系统设计采用内部振荡方式。 3.2.2 复位电路: 复位电路是必不可少一部分,复位电路第一功能是上电复位。一般电路正常工作需要供电电源为5V±5%,即4.75~5.25V。 RST端外部复位电路有两种操作方式:上电自动复位和按键手动复位。按键手动复位有电平方式和脉冲方式两种,本系统设计采用上电复位,上电复位是直接将RST端通过电阻接高电平来实现单片机复位。如图3-2所示。 图3-2 复位、时钟电路 3.3 抢答电路 按照键盘及单片机连接方式可分为独立式键盘及矩阵式键盘。独立式键盘是一种常见输入装置,但是独立式键盘局限于个数,以及占用较多I/O口,所以本次设计采用是矩阵式键盘。如图3-3所示。 图3-3 抢答电路 矩阵键盘行扫描实现原理: 判断键盘中有无键按下 将全部行线P1.0和P1.1置低电平,然后检测列线状态。只要有一列电平为低,则表示键盘中有键被按下,而且闭合键位于低电平线及4根行线相交叉4个按键之中。若所有列线均为高电平,则键盘中无键按下。 判断闭合键所在位置 在确认有键按下后,即可进入确定具体闭合键过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线电平状态。若某列为低,则该列线及置为低电平行线交叉处按键就是闭合按键。 3.4 显示电路 在单片机应用系统中,对于系统运行状态和运行结果,通常都需要直观交互显示出来。单片机应用系统中最常用显示器有LED和LCD两种。这两种显示器都可以显示数字、字符及系统状态,LED和LCD数码显示最为普遍,本设计采用是更为环保4位LED显示器。如图3-4所示。 图3-4 显示电路 4位数码管动态显示原理及实现: P0.0-P0.6端口接动态数码管字形码笔段,P2.0-P2.3端口接动态数码管数位选择端。4位数码管8个显示笔划"a,b,c,d,e,f,g,dp "同名端连在一起,另外为每个数码管公共极COM增加位选端控制电路,位选端由独立I/O线控制,当单片机输出字形码时,所有数码管都接收到相同字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选端控制,所以我们只要将需要显示数码管选通控制打开,该位元就显示出字形,没有选通数码管就不会亮。就使各个数码管轮流受控显示,这就是动态显示原理。在轮流显示过程中,每位元数码管点亮时间为1~2ms,由于人视觉暂留现象及发光二极体余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描速度足够快,给人印象就是一组稳定显示资料,不会有闪烁感,动态显示效果和静态显示是一样,能够节省大量I/O埠,而且功耗更低。 3.5 控制电路 本次设计中控制电路采用4个独立按键来控制抢答时间加减,时间对抢答器功能调节,如图3-5所示。 图3-5 控制电路 控制电路原理及实现: 当控制电路中K9-K12中有键被按下时,对应I/O口被置低电平,听过中断程序实现相对应功能。该电路采用独立式按键,其原理简单明了。 3.6报警电路 因为抢答器报警比较简单,只起提示选手抢答成功信息及时间警告等少许功能,本次报警电路核心器件采用一个蜂鸣器实现报警。如图3-6所示。 图3-6 报警电路 3.7 整机工作原理 本系统采用单片机作为整个控制核心。控制系统四个模块为:显示模块、控制模块、报警模块、抢答模块(原理图见附录1)。工作时,该系统通过矩阵键盘输入抢答信号,经单片机处理,输出控制信号,利用一个4位数码管来完成显示功能并伴随蜂鸣器报警,用按键来让选手进行抢答,在数码管上显示哪一组先答题,从而实现整个抢答过程。 当主持人按下开始键时,向单片机P3.2引脚输入一个低电平信号,表示整个电路开始工作,此时数码管前两位显示选手编号(无人抢答显示00),后两位显示倒计时剩余时间。若在25秒内仍然无人抢答,蜂鸣器在最后5秒发出连续报警,提示抢答时间快要结束;若在30秒内有人抢答,并且抢答成功,则将选手编号显示在数码管前两位上,后两位显示抢答剩余时间,同时蜂鸣器发出一声报警,提示其他没有抢答选手此题已被人抢答成功。若在抢答过程中遇见特殊情况,主持人则可以通过时间加,时间减按键来进行时间调节。若要开始新一轮抢答,主持人按下复位键再按开始键即可。 此次用单片机设计抢答器思路简单明了,可操作性强,可靠性高,扩展功能强,能够完全实现普通抢答器基本功能。 第4章 软件设计 4.1 定时中断模块 由于抢答器中需要显示倒计时来提示选手们抢答时间,在规定时间内作答,所以需要有定时中断模块,当时间小于6秒时,抢答器需要提供警告,以及当抢答时间结束时,要关闭外部中断,表示抢答结束,此时再有键按下抢答器也不会做出反应。流程图如图4-3所示。 定时器0中断 1秒时间到? 秒加1? 数码管显示秒值 中断返回 图4-3抢答器定时器中断流程图 程序: EA=1;ET0=1; /*开启总中断源*/ EX0=1; /*启动外部中断0*/ if(shijian==0) { TR0=0;TR2=0;TF2=0; } 4.2 外部中断模块 抢答器主要外部中断来自于选手们抢答,当选手抢答时,抢答器同时判断被按下键号并显示在数码管之上,然后再数码管上显示剩余时间,同时关闭中断,表示抢答结束,此时再有键按下抢答器也不会做出反应。外部中断流程图如图4-3所示。 外部中断0中断 K1按下? K0按下? K2按下? K3按下? K4按下? K6按下? K7按下? K5按下? 中断返回 数码管显示01 数码管显示02 数码管显示03 数码管显示04 数码管显示06 数码管显示05 数码管显示07 数码管显示08 图4-3 外部中断流程图 Y Y Y Y Y Y Y Y N N N N N N N N 程序: void timer_2()interrupt 5 { TH2=(65536-50000)/256; TL2=(65536-50000)%256; P1=0xfe; temp=P1; temp=temp&0xf0; while(temp!=0xf0) { delay(5); temp=P1; temp=temp&0xf0; while(temp!=0xf0) { temp=P1; TR2=0; switch(temp) { case 0xee:{TR0=0;TF2=0;num=1;bj();red=1;huang=0;}break; case 0xde:{TR0=0;TF2=0;num=2;bj();red=1;huang=0;}break; case 0xbe:{TR0=0;TF2=0;num=3;bj();red=1;huang=0;}break; case 0x7e:{TR0=0;TF2=0;num=4;bj();red=1;huang=0;}break; } while(temp!=0xf0) { temp=P1; temp=temp&0xf0; }}} P1=0xfd; temp=P1; temp=temp&0xf0; while(temp!=0xf0) { delay(5); temp=P1; temp=temp&0xf0; while(temp!=0xf0) { temp=P1; TR2=0; switch(temp) { case 0xed:{TR0=0;TF2=0;num=5;bj();red=1;huang=0;}break; case 0xdd:{TR0=0;TF2=0;num=6;bj();red=1;huang=0;}break; case 0xbd:{TR0=0;TF2=0;num=7;bj();red=1;huang=0;}break; case 0x7d:{TR0=0;TF2=0;num=8;bj();red=1;huang=0;}break; } while(temp!=0xf0) { temp=P1; temp=temp&0xf0; }}} 4.3 报警模块 报警模块主要作用有两个,一是当时间还剩5秒时,蜂鸣器放出报警,以此提示选手们抢答时间将要结束;二是当有选手第一时间抢答成功时发出报警声,提示其他选手不必再抢答。报警程序流程图如图4-4所示。 定时0中断 时间=6? 秒加1? 报 警 中断返回 图4-4 报警程序流程图 Y Y N N 程序: if(bb==1) { bb=0; if(shijian==5) { speak=~speak; } if(shijian==4) { speak=~speak; } if(shijian==3) { speak=~speak; } if(shijian==2) { speak=~speak; } if(shijian==1) { speak=~speak; } 4.4 控制模块 控制模块主要作用是对抢答器开始和复位功能进行控制,主要由主持人来实现功能。当开始键被按下时,抢答器开始正常工作;当抢答器停止工作是,可以按下复位键使抢答器回答初始化状态。控制程序流程图如图4-5所示。初 始 化 部 分 K9==0? 启动中断,数码管开始倒计时 中断返回 K10==0? K11==0? K12==0? 时间加1 时间减1 Y Y Y Y N N N N 图4-5 控制程序流程图 程序: void keyscan() { if(sjia==0) { delay(5); if(sjia==0) { shijian=shijian+1; if(shijian==99) { shijian=0; }} while(!sjia); } if(sji==0) { delay(5); if(sji==0) { shijian=shijian-1; if(shijian==0) { hijian=30; }} while(!sji); } 4.5 主程序模块 主程序主要完成硬件初始化,子程序调用和程序间切换,由于本设计要求抢答器具有开始、复位、抢答、三种方式切换功能,所以主程序除了要进行硬件部分初始化以外还要进行各个程序之间调用和切换。主程序流程图如图4-6所示。开 始 初 始 化 部 分 K9==0? 启动中断,数码管开始倒计时 若有选手抢答 中断停止,数码管显示选手编号及所剩时间 结 束 Y Y N N 图4-6 抢答器主程序流程图 程序: void main() { huang=0;red=0;EA=1; TMOD=0x11;T2CON=0x01; TH0=(65536-50000)/256;TL0=(65536-50000)%256; TH1=(65536-5000)/256;TL1=(65536-5000)%256; TH2=(65536-50000)/256;TL2=(65536-50000)%256; ET0=1;TR0=0;ET1=1;TR1=1;ET2=1;TR2=0;IT0=1;EX0=1;IT1=1; EX1=1;aa=0;bb=0;shijian=30; while(1) { keyscan(); } 第5章 系统仿真 5.1 抢答器Keil软件仿真 运行程序,查找语法错误,按照错误提示修改程序,直到0错误0警告为止程序语法调试成功,生成HEX文件加载进电路。如图5-1所示。 图5-1 程序调试 5.2 抢答器protenus软件仿真 绘制抢答器软件仿真图步骤分一下四步: (1)查找所需要元器件; (2)根据电路图进行连线; (3)是用来写线所对应坐标; (4)装载keil生成和HEX文件进行仿真。 通过以上步骤,来实现抢答器设计仿真实现,仿真如图5-2所示: 图5-2 抢答器proteus仿真图 5.3 调试及运行 把编写好程序放入仿真软件中,结合硬件电路进行调试及运行。 (1)在仿真软件中按下开始按钮,从而达到仿真目; (2)LED显示器显示当前0030初始化; (3)按照本次实际任务要求,逐个调试功能是否能实现。 结 论 经过近一个月努力,在老师和同学商讨和帮助下,我较好完成了设计任务,通过此次课程设计,我重新认识到了自学重要性,以及学以致用道理。我在图书馆查阅了大量资料,同时也认识到了图书馆重要作用。通过此次抢答器设计,让我重新拾起了以前所学习电子知识,及我觉得此次设计让我更加巩固了所学知识并在设计过程中学会了及时俱进,克服了编程枯燥感,让我受益匪浅。在学习单片机这门课程时候,我们应该好好你记笔记,课下好好做练习题才能把C程序设计灵活运用到单片机程序设计上,在单片机这门课程学习上,我们还应该知道一种常用仿真软件proteus软件,可以让你我们更为清晰掌握STC89C51/52系列实际应用上设计。在今后学习过程中,应该多到图书馆看一些专业方面书籍,以丰富自己知识。也使我加深了对单片机及接口技术理解和应用,由于知识水平局限,设计中可能会存在着一些不足,我真诚接受老师和同学批评和指正。 参考文献 [1] 张立科编著 《单片机典型模块设计实例导航》 北京人民邮电出版社,2004  [2] 李金利编著 《单片机原理及应用技术》 北京高等教育出版社,2004  [3] 董晓红编著 《单片机原理及接口技术》 西安电子工业出版社,2007  [4] 王振红编著 《数字电路设计及应用实践教程》 北京机械工业出版社,2003  [5] 张靖武编著 《单片机系统proteus设计及仿真》 北京清华大学出版社,2003  [6] 潭浩强编著 《C程序设计》 北京:清华大学出版社,2004  附录1 电路原理图 附录2 源程序 #include<reg52.h> #define uchar unsigned char #define uint unsigned int sbit speak=P3^4; sbit huang=P3^0; sbit red=P3^1; sbit sjia=P3^6; sbit sji=P3^7; sbit kai=P3^0; sbit fuwei=P3^1; sbit kais=P3^2; uchar num,temp,shijian,shi,ge,ashi,age,aa,tt,bb,i; uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e}; void delay(uint z) { uchar x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void bj() { for(i=0;i<110;i++) { speak=~speak; delay(6); } for(i=0;i<230;i++) { speak=~speak; delay(2); }} void keyscan() { if(sjia==0) { delay(5); if(sjia==0) { shijian=shijian+1; if(shijian==99) { shijian=0; }} while(!sjia); } if(sji==0) { delay(5); if(sji==0) { shijian=shijian-1; if(shijian==0) { shijian=30; }} while(!sji); }} void zhuanhuan() { shi=shijian/10; ge=shijian%10; ashi=num/10; age=num%10; } void sound() { speak=0; } void main() { huang=0;red=0; EA=1;TMOD=0x11;T2CON=0x01; TH0=(65536-50000)/256;TL0=(65536-50000)%256; TH1=(65536-5000)/256;TL1=(65536-5000)%256; TH2=(65536-50000)/256;TL2=(65536-50000)%256; ET0=1;TR0=0;ET1=1;TR1=1;ET2=1;TR2=0;IT0=1;EX0=1;IT1=1;EX1=1; aa=0;bb=0;shijian=30; while(1) { keyscan(); }} void int_0() interrupt 0 { huang=1; TR0=1; TR2=1; } void timer_0() interrupt 1 { TH0=(65536-50000)/256;TL0=(65536-50000)%256; aa++; if(aa==20) { aa=0;shijian--; if(shijian==6) { red=1;huang=0sound(); } if(shijian==0) { TR0=0;TR2=0;TF2=0; }}} void int_1() interrupt 2 { shijian=30;num=0;TR0=0;TR2=0; } void timer_1() interrupt 3 { TH1=(65536-5000)/256;TL1=(65536-5000)%256; tt++;bb++; if(tt==5) tt=1; zhuanhuan(); switch(tt) { case 1:P2=0xf4;P0=table[shi];break; case 2:P2=0xf8;P0=table[ge];break; case 3:P2=0xf1;P0=table[ashi];break; case 4:P2=0xf2;P0=table[age];break; efault : ; } if(bb==1) { bb=0; if(shijian==5) { speak=~speak; } if(shijian==4) { speak=~speak; } if(shijian==3) { speak=~speak; } if(shijian==2) { speak=~speak; } if(shijian==1) { speak=~speak; }}} void timer_2() interrupt 5 { TH2=(65536-50000)/256;TL2=(65536-50000)%256; P1=0xfe;temp=P1;temp=temp&0xf0; while(temp!=0xf0) { delay(5);temp=P1;temp=temp&0xf0; while(temp!=0xf0) { temp=P1;TR2=0; switch(temp) { case 0xee:{TR0=0;TF2=0;num=1;bj();red=1;huang=0;}break; case 0xde:{TR0=0;TF2=0;num=2;bj();red=1;huang=0;}break; case 0xbe:{TR0=0;TF2=0;num=3;bj();red=1;huang=0;}break; case 0x7e:{TR0=0;TF2=0;num=4;bj();red=1;huang=0;}break; } while(temp!=0xf0) { temp=P1; temp=temp&0xf0; }}} P1=0xfd; temp=P1; temp=temp&0xf0; while(temp!=0xf0) { delay(5);temp=P1; emp=temp&0xf0; while(temp!=0xf0) { temp=P1;TR2=0; switch(temp) { case 0xed:{TR0=0;TF2=0;num=5;bj();red=1;huang=0;}break; case 0xdd:{TR0=0;TF2=0;num=6;bj();red=1;huang=0;}break; case 0xbd:{TR0=0;TF2=0;num=7;bj();red=1;huang=0;}break; case 0x7d:{TR0=0;TF2=0;num=8;bj();red=1;huang=0;}break; } while(temp!=0xf0) { temp=P1;temp=temp&0xf0; }}}} 附录3 元件明细表 项目 代号 代 号 名称、型号、规格 数量 备注 更改 电阻器 9 R0 GB8551-87 RT―0.125―b―220Ω―±10% 1 R1 GB8551-87 RT―0.125―b―220Ω―±10% 1 R2 GB8551-87 RT―0.125―b―220Ω―±10% 1 R3 GB8551-87 RT―0.125―b―220Ω―±10% 1 R4 GB8551-87 RT―0.125―b―220Ω―±10% 1 R5 GB8551-87 RT―0.125―b―220Ω―±10% 1 R6 GB8551-87 RT―0.125―b―220Ω―±10% 1 R7 GB8551-87 RT―0.125―b―220Ω―±10% 1 R8 GB8551-87 RT―0.125―b―220Ω―±10% 1 电容器 2 C1 GB5995-86 CD-2-10V-30pF-±10 1 C2 GB5995-86 CD-2-25V-100μF-±10 1 单片机 1 C5
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服