蓝桥杯编程技巧总结:数码管显示和按键扫描函数

需积分: 42 5 下载量 85 浏览量 更新于2024-07-20 1 收藏 445KB PDF 举报
"蓝桥杯总结" 蓝桥杯是一项全国性的大学生程序设计竞赛,旨在培养大学生在计算机科学和技术方面的创新能力和实践能力。参加蓝桥杯需要掌握一定的编程技巧和知识,下面是蓝桥杯中的一些重要知识点总结。 1. 数码管显示函数 数码管显示函数是蓝桥杯中的一项重要考察内容,该函数用于控制数码管的显示。数码管显示函数需要使用到位选锁存信号和段选锁存信号来控制数码管的显示。下面是数码管显示函数的实现代码: ```c void displayseg1(unsigned char i) { P2 |= 0xc0; // 打开位选锁存信号 P0 = 0x80; // 送位码1000000 P2 &= ~(0xc0); // 关闭位选锁存信号 P0 = 0xff; // 消除对段码的影响 P2 |= 0xe0; // 打开段选锁存信号 P0 = Seg_Yang_Led_Table[i]; // 显示数字 P2 &= ~(0xe0); // 关闭段选锁存信号 P0 = 0x00; // 消除对位码的影响 delayms(1); } ``` 在这个函数中,我们首先打开位选锁存信号,然后将位码发送到数码管上,并关闭位选锁存信号。接着,我们打开段选锁存信号,将数字显示在数码管上,并关闭段选锁存信号。最后,我们消除对位码和段码的影响。 2. 按键扫描函数 按键扫描函数是蓝桥杯中的一项重要考察内容,该函数用于扫描按键的状态。下面是按键扫描函数的实现代码: ```c unsigned char key(void) { unsigned char temp, key; temp = P3; temp &= 0x0f; if (temp != 0x0f) { delayms(10); temp = P3; temp &= 0x0f; if (temp != 0x0f) { switch (temp) { case 0x0e: key = 0; break; case 0x0d: key = 1; break; case 0x0b: key = 2; break; case 0x07: key = 3; break; default: break; } } } while (temp != 0x0f) { temp = P3; temp &= 0x0f; } return key; } ``` 在这个函数中,我们首先读取按键的状态,然后判断按键是否被按下。如果按键被按下,我们就delay 10ms,然后再次读取按键的状态。如果按键仍然被按下,我们就根据按键的状态来确定按键的值。 3. 矩阵键盘按键扫描函数 矩阵键盘按键扫描函数是蓝桥杯中的一项重要考察内容,该函数用于扫描矩阵键盘的状态。下面是矩阵键盘按键扫描函数的实现代码: ```c uchar key(void) { uchar temp, key; P3 = 0x7f; P42 = 1; P44 = 0; temp = P3; temp &= 0x0f; if (temp != 0x0f) { delayms(10); temp = P3; temp &= 0x0f; if (temp != 0x0f) { temp = P3; switch (temp) { case 0x7e: key = 0; break; case 0x7d: key = 4; break; case 0x7b: key = 8; break; case 0x77: key = 12; break; default: break; } } } while (temp != 0x0f) { temp = P3; temp &= 0x0f; } P3 = 0; } ``` 在这个函数中,我们首先设置矩阵键盘的状态,然后读取按键的状态。如果按键被按下,我们就delay 10ms,然后再次读取按键的状态。如果按键仍然被按下,我们就根据按键的状态来确定按键的值。 蓝桥杯需要掌握一定的编程技巧和知识,包括数码管显示函数、按键扫描函数和矩阵键盘按键扫描函数等。这些知识点是蓝桥杯的核心内容,掌握这些知识点是参加蓝桥杯的基础。