-->
当前位置:首页 > 题库 > 正文内容

函数题:8段数码管 - C/C++ 位操作

Luz2年前 (2022-08-23)题库646
图1展示了某单片机与一个共阳8段数码管的连接关系:8个LED的阴极与CPU的A端口相连。当CPU的PA1脚为低电平(对应值0)时,3.3V直流电将流过A段LED并流入CPU的PA1脚,A段LED亮;当PA1脚为高电平时(对应值1),LED两端没有压差,A段LED灭。

请设计函数generatePortAValue(n)(可以同时设计一些额外函数供该函数调用),参数n表示准备显示的数字,取值范围0 ~ 9,函数返回对应的端口A驱动值。从而使得下述程序可以正常工作。


说明:DP段LED常灭;函数返回值的第0 ~ 7位与PA0 ~ PA7脚一一对应;数码管内部内置了每个LED的限流电阻,图中未画出。
举例:显示数字7时,A、B、C段亮,对应PA1、PA2、PA3为低电位,整个A端口的值应为0b11110001。



图1


### 函数接口定义:
c++
unsigned char generatePortAValue(int n);



### 裁判测试程序样例:
c++
//Project - SetResetBit
#include <stdio.h>

//在此处定义相关函数

void outputBinary(UINT8 v){
for (int i=7;i>=0;i--){
if (v&(0x01<<i))
printf("1");
else
printf("0");
}
}

int main() {
for (int i=0;i<=9;i++){
printf("Drive byte for port A of %d: ",i);
outputBinary(generatePortAValue(i));
printf("\n");
}

return 0;
}


### 输入样例:
in


### 输出样例:
out
Drive byte for port A of 0: 10000001
Drive byte for port A of 1: 11110011
Drive byte for port A of 2: 01001001
Drive byte for port A of 3: 01100001
Drive byte for port A of 4: 00110011
Drive byte for port A of 5: 00100101
Drive byte for port A of 6: 00000101
Drive byte for port A of 7: 11110001
Drive byte for port A of 8: 00000001
Drive byte for port A of 9: 00100001


请注意:函数题只需要提交相关函数的定义代码,不要提交完整程序。

提示:置位与复位。


### 感觉不会? 那试试听听**免费的B站网课**
[简洁的C和C++ - 重庆大学在线课程](https://www.bilibili.com/video/BV1it411d7zx/)
[Python编程基础及应用 - 重庆大学在线课程](https://www.bilibili.com/video/BV1kt411R7uW/)









答案:若无答案欢迎评论

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。