display_number(num)
时间: 2024-03-15 17:14:24 浏览: 32
`display_number(num)` 是一个函数调用,它可能是用来在TM1650数码管上显示一个数字的自定义函数。然而,要了解这个函数的具体实现和功能,还需要查看完整的代码或上下文。
请提供更多关于 `display_number(num)` 函数的信息,例如它是在哪里定义的、它接受什么参数、它的具体实现等。这样我才能给出更准确的回答和帮助。
相关问题
#include "main.h" #include <string.h> #define DIGITAL_NUMBER ( 4 ) typedef struct{ char ch; uint8_t digital_code; }digital_code_t; static uint8_t display_buf[DIGITAL_NUMBER]; static code digital_code_t digital_code[] = { {' ', 0x00},///<固定为不显示 {'0', 0x3f}, {'1', 0x06}, {'2', 0x5b}, {'3', 0x4f}, {'4', 0x66}, {'5', 0x6d}, {'6', 0x7d}, {'7', 0x07}, {'8', 0x7f}, {'9', 0x6f}, {'A', 0x77}, {'b', 0x7c}, {'C', 0x39}, {'d', 0x5e}, {'E', 0x79}, {'F', 0x71}, {'-', 0x40}, {'H', 0x76}, {'L', 0x38}, }; static void send_digital_code(uint8_t pos, uint8_t digital_code) { P2 &= 0xf0; P2 |= (1 << pos); P0 = ~digital_code;///<发段选信号 } void digital_display_poll(void) { static uint8_t digital_channel = 0; send_digital_code(digital_channel, display_buf[digital_channel]); digital_channel = (++digital_channel) % DIGITAL_NUMBER; } static uint8_t find_digital_code(char ch) { uint8_t i; for(i = 0; i < (sizeof(digital_code) / sizeof(digital_code[0])); i++){ if(ch == digital_code[i].ch){ return digital_code[i].digital_code; } } return digital_code[0].digital_code;//} void update_digital_display(char *buf) { uint8_t len; uint8_t i; uint8_t point_num = 0; uint8_t display_len; uint8_t display_pos; if(buf == NULL){ return; } len = strlen(buf); for(i = 0; i < len; i++){ if(buf[i] == '.'){ ++point_num; } } display_len = len - point_num; if(display_len > DIGITAL_NUMBER){ return; } for(i = 0; i < (DIGITAL_NUMBER - display_len); i++){ display_buf[i] = digital_code[0].digital_code; } display_pos = i; for(i = 0; i < len; i++){ if(buf[i] != '.'){ display_buf[display_pos] = find_digital_code(buf[i]); ++display_pos; }else{ display_buf[display_pos - 1] |= 0x80;//display_buf[display_pos - 1] &= 0x7f; } } } 给这段程序加注释
这段程序是一个数字显示模块的驱动程序,通过控制数字管的段选和位选实现数字的显示。下面是注释:
```
#include "main.h"
#include <string.h>
#define DIGITAL_NUMBER ( 4 ) ///<数字管的个数
typedef struct{ ///<数字对应的编码结构体
char ch; ///<数字或字符
uint8_t digital_code; ///<编码值
}digital_code_t;
static uint8_t display_buf[DIGITAL_NUMBER]; ///<数字管的显示缓存
static code digital_code_t digital_code[] = { ///<数字对应的编码表
{' ', 0x00},///<固定为不显示
{'0', 0x3f},
{'1', 0x06},
{'2', 0x5b},
{'3', 0x4f},
{'4', 0x66},
{'5', 0x6d},
{'6', 0x7d},
{'7', 0x07},
{'8', 0x7f},
{'9', 0x6f},
{'A', 0x77},
{'b', 0x7c},
{'C', 0x39},
{'d', 0x5e},
{'E', 0x79},
{'F', 0x71},
{'-', 0x40},
{'H', 0x76},
{'L', 0x38},
};
static void send_digital_code(uint8_t pos, uint8_t digital_code) { ///<发送数字编码到数字管
P2 &= 0xf0;///<清除位选信号
P2 |= (1 << pos);///<设置当前位选信号
P0 = ~digital_code;///<将数字编码取反作为段选信号
}
void digital_display_poll(void) { ///<数字管轮询函数
static uint8_t digital_channel = 0;///<当前位选通道
send_digital_code(digital_channel, display_buf[digital_channel]);///<发送数字编码
digital_channel = (++digital_channel) % DIGITAL_NUMBER;///<更新位选通道
}
static uint8_t find_digital_code(char ch) { ///<根据数字或字符查找其编码值
uint8_t i;
for(i = 0; i < (sizeof(digital_code) / sizeof(digital_code[0])); i++){
if(ch == digital_code[i].ch){
return digital_code[i].digital_code;
}
}
return digital_code[0].digital_code;
}
void update_digital_display(char *buf) { ///<更新数字管显示
uint8_t len;
uint8_t i;
uint8_t point_num = 0;///<小数点个数
uint8_t display_len;///<显示长度
uint8_t display_pos;///<当前显示位置
if(buf == NULL){///<判断输入参数是否合法
return;
}
len = strlen(buf);
for(i = 0; i < len; i++){///<统计小数点个数
if(buf[i] == '.'){
++point_num;
}
}
display_len = len - point_num;///<计算显示长度
if(display_len > DIGITAL_NUMBER){///<长度超过数字管个数则退出
return;
}
for(i = 0; i < (DIGITAL_NUMBER - display_len); i++){///<在前面加空格
display_buf[i] = digital_code[0].digital_code;
}
display_pos = i;
for(i = 0; i < len; i++){
if(buf[i] != '.'){///<不是小数点则查找数字编码值
display_buf[display_pos] = find_digital_code(buf[i]);
++display_pos;
}else{///<是小数点则标记当前数字编码为小数点
display_buf[display_pos - 1] |= 0x80;///<将最高位设置为1
}
}
}
```
class Item: def __init__(self,l,t,w,h,index,font): self.rect = pygame.Rect(l,t,w,h) self.index = index self.font = font def display_names(self,surface,name,cost,selected): color = TEXT_COLOR_SELECTED if selected else TEXT_COLOR title_surf = self.font.render(name,False,color) title_rect = title_surf.get_rect(midtop = self.rect.midtop + pygame.math.Vector2(0,20)) cost_surf = self.font.render(f'{int(cost)}',False,color) cost_rect = cost_surf.get_rect(midbottom = self.rect.midbottom - pygame.math.Vector2(0,20)) surface.blit(title_surf,title_rect) surface.blit(cost_surf,cost_rect) def display_bar(self,surface,value,max_value,selected): # drawing setup top = self.rect.midtop + pygame.math.Vector2(0,60) bottom = self.rect.midbottom - pygame.math.Vector2(0,60) color = BAR_COLOR_SELECTED if selected else BAR_COLOR # bar setup full_height = bottom[1] - top[1] relative_number = (value / max_value) * full_height value_rect = pygame.Rect(top[0] - 15,bottom[1] - relative_number,30,10) # draw elements pygame.draw.line(surface,color,top,bottom,5) pygame.draw.rect(surface,color,value_rect) def trigger(self,player): upgrade_attribute = list(player.stats.keys())[self.index] if player.exp >= player.upgrade_cost[upgrade_attribute] and player.stats[upgrade_attribute] < player.max_stats[upgrade_attribute]: player.exp -= player.upgrade_cost[upgrade_attribute] player.stats[upgrade_attribute] *= 1.2 player.upgrade_cost[upgrade_attribute] *= 1.4 if player.stats[upgrade_attribute] > player.max_stats[upgrade_attribute]: player.stats[upgrade_attribute] = player.max_stats[upgrade_attribute] def display(self,surface,selection_num,name,value,max_value,cost): if self.index == selection_num: pygame.draw.rect(surface,UPGRADE_BG_COLOR_SELECTED,self.rect) pygame.draw.rect(surface,UI_BORDER_COLOR,self.rect,4) else: pygame.draw.rect(surface,UI_BG_COLOR,self.rect) pygame.draw.rect(surface,UI_BORDER_COLOR,self.rect,4) self.display_names(surface,name,cost,self.index == selection_num) self.display_bar(surface,value,max_value,self.index == selection_num)
这段代码定义了一个名为Item的类,它包含了显示名称、显示进度条和触发升级等功能。其中display_names方法用于在界面上显示名称和价格,display_bar方法用于显示进度条,trigger方法用于升级玩家属性,display方法用于在界面上显示选项卡的所有元素。这个类的实例可以用于创建一个选项卡界面。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)