附录一:电路实物照片
图9、在开始键未按下时显示0000
图10、LED显示抢答者编号及按下时间
第 11 页
附录二:程序调试
图11、程序调试
图12、程序调试
附录三:电路原理图
第 12 页
图13、系统整图
附录四:主要程序
第 13 页
主函数程序:
//-------------------------------------------------------------------------* //工 程 名: timer * //硬件连接:(1)PTD.0接指示灯 * // (2)MCU的串口与PC方的串口相连 * //程序描述: * // (1)TPM1溢出中断,数码管显示分秒信息。 //目 的: 学习定时器基本功能 * //说 明: 无 * //------苏州大学飞思卡尔嵌入式系统研发中心2011年------*
//总头文件
#include \
void main(void) {
//1 主程序使用的变量定义 //uint8 start=1;
//2 关总中断
DisableInterrupt(); //禁止总中断
//3 芯片初始化
MCUInit(); //芯片初始化
//4 模块初始化 Buzzer_DD=0xff; LEDdata_D=0xff;
TPMinit(TPM_NUM_1); //定时器1初始化 LEDinit(); //数码管初始化 KBInit(); //键盘初始化
//5 内存初始化
//6 开放中断
EnableKBint(); //开键盘中断
EnabletimerInt(TPM_NUM_1); //开放定时器1溢出中断 EnableInterrupt(); //开放总中断 LEDshow(ledbuf);
//7系统复位后,数码管显示“0000 ”并闪烁;按下“开始”键后,各抢答
第 14 页
键才有效
//不断循环闪烁0000直到开始键(*键)被按下,跳出循环后开始计时 do{
LEDdata=0xc0; LEDcs1=0x03; LEDcs2=0x0c;
Delay(10); //延时使数码管显示闪烁 LEDdata=0xff;Delay(1); LEDdata=0xc0; }while(start==0);
//7 主循环 while (1) {
LEDshow(ledbuf);//正常显示计数器当前计数的值
} }
中断函数程序:
//-------------------------------------------------------------------------* // 文件名: isr.c * // 说 明: 中断处理函数文件 * //-------------------------------------------------------------------------* //头文件 #include \
//此处为用户新定义中断处理函数的存放处
//-------------------------------------------------------------------------* //函数名: isrKeyBoard * //功 能: 扫描键盘,向串口发送键值和定义值 * //参 数: 无 * //返 回: 无 * //说 明: 调用了KBScanN、SCISend1、KBInit函数 *
第 15 页