第一范文网 - 专业文章范例文档资料分享平台

八路抢答器设计报告

来源:用户分享 时间:2025/5/24 10:09:20 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

华东交通大学《电子产品安装与调试实践》实习报告

也随之改变。同时我们在判断按键是否按下时也要判断这个变量的值是否改变,如果已经改变,纳闷程序就不去执行按键按下的功能。

图中8个抢答按键分别接入单片机的P0.0-P0.7端口,不停的扫描P0端口是否为低电平,如果为低电平则说明按键按下了,之所以选择P0口作为按键扫描的端口,是因为P0口的电压不足以驱动数码管,需要加上拉电阻,为了避免这个问题,把数码管改到了P2端口。

八、发声电路的设计

如图中可以看出,在蜂鸣器的一端接了三极管,三极管起到了放大电流的作用,单片机输出的电流不足以驱动蜂鸣器,所以需要三极管来放大。蜂鸣器的作用就是在选手按下按键后发出声音提醒主持人已经有人问抢答成功。

10

华东交通大学《电子产品安装与调试实践》实习报告

第四章 软件任务分析

软件任务分析和硬件电路设计结合进行,哪些功能由硬件完成,哪些任务由软件完成,在硬件电路设计基本定型后,也就基本上决定下来了。

软件任务分析环节是为软件设计做一个总体规划。软件任务分析时应将各执行模块的功能一一列出来,并确定每个功能模块的端口。在完成以上任务后,可以先编号程序用仿真软件进行仿真,测试程序的功能是否达到。

具体程序分析如下 TMOD = 0x01;

TH0 = (65536 - 45872) / 256; TL0 = (65536 - 45872) % 256; EA = 1; ET0 = 1; while(1) {

// if (num2 == 1) // { // break; // } keyscan(); display(ge); }

该程序的功能是开启定时中断,实现1秒钟计时,keyscan();display(ge);

分别是键盘扫描和数码管显示函数

11

华东交通大学《电子产品安装与调试实践》实习报告

void delayms(uint xms) {

uint i,j;

for(i = xms;i > 0;i--) for(j = 110;j > 0;j--); }

延时函数,这个延时函数不能做到精确的延时功能,所以需要定义中断函数,实现准确的计时

#include

#define uchar unsigned char void keyscan() {

if(key == 0) { delayms(10); if(key == 0) { while(!key); TR0 = 1; num2 = 0; } }

if(key1 == 0 && num2 == 0) { delayms(10); if(key1 == 0) { num2 = 1; ge = 1; TR0 = 0; while(!key1); } }

if (key2 == 0 && num2 == 0) { delayms(10); if(key2 == 0) { num2 = 1; ge = 2;

12

华东交通大学《电子产品安装与调试实践》实习报告

TR0 = 0; while(!key2); } }

if (key3 == 0 && num2 == 0) { delayms(10); if(key3 == 0) { num2 = 1; ge = 3; TR0 = 0; while(!key3); } }

if (key4 == 0 && num2 == 0) { delayms(10); if(key4 == 0) { num2 = 1; ge = 4; TR0 = 0; while(!key4); } }

if (key5 == 0 && num2 == 0) { delayms(10); if(key5 == 0) { num2 = 1; ge = 5; TR0 = 0; while(!key5); } }

if (key6 == 0 && num2 == 0) { delayms(10); if(key6 == 0) { num2 = 1; ge = 6;

13

华东交通大学《电子产品安装与调试实践》实习报告

}

TR0 = 0; while(!key6); } }

if (key7 == 0 && num2 == 0) { delayms(10); if(key7 == 0) { num2 = 1; ge = 7; TR0 = 0; while(!key7); } }

if (key8 == 0 && num2 == 0) { delayms(10); if(key8 == 0) { num2 = 1; ge = 8; TR0 = 0; while(!key8); } }

键盘扫描函数,包括了总开关的扫描程序和选手抢答键盘的程序,中间定义了一个变量,功能是用于抢答之后锁住键盘。

void display(uchar ge) {

P2 = table[ge]; delayms(10); P2 = 0xff; }

14

搜索更多关于: 八路抢答器设计报告 的文档
八路抢答器设计报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c45kja8m7dk862m61dk4v721et5ixox005mv_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top