华东交通大学《电子产品安装与调试实践》实习报告
也随之改变。同时我们在判断按键是否按下时也要判断这个变量的值是否改变,如果已经改变,纳闷程序就不去执行按键按下的功能。
图中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
相关推荐: