当前位置: 首页 > news >正文

wordpress pingbackseo怎么做优化方案

wordpress pingback,seo怎么做优化方案,潍坊网站制作发,网页制作三剑客是什么1.小故事 最近,我接到了一个既“清肺”又“烧脑”的新任务,设计一个低功耗蓝牙肺活量计。在这个项目中我们借鉴了一款蓝牙跳绳的硬件设计方案,特别是它的显示方案——数码管。 在电子工程领域,初学者往往从操作LED开始&#xff…

1.小故事

最近,我接到了一个既“清肺”又“烧脑”的新任务,设计一个低功耗蓝牙肺活量计。在这个项目中我们借鉴了一款蓝牙跳绳的硬件设计方案,特别是它的显示方案——数码管。

在电子工程领域,初学者往往从操作LED开始,随后进阶到控制数码管,由此可见,数码是非常基础,使用非常广泛的一个电子元件。

在这里插入图片描述
然而,刚拿到这个4位数码管时,我注意到了一个不寻常的特点:这个4位数码管仅有7个引脚,而传统4位数码管至少需要12个引脚,最初,我误以为该数码管内部集成了某种芯片,所以才导致引脚简化。

但是,当供应商提供资料时,我才发现它内部并没有芯片,它就是通过普通IO脚控制的数码管,但是这种数码管并不是我们常见的数码管,供应商给的名字是:阴阳脚数码管(单排数码管)!
在这里插入图片描述
顿时,我被这霸气名字所吸引,决定探究一番,经过查阅资料、搭建电路、编写程序,不出意外地,我成功点亮了这个阴阳脚数码管。

这个阴阳脚数码管十分有趣,于是我记录下这段简短开发经历,既是对自己学习的总结,也是希望将这个过程分享朋友们。

2.常见的数码管电路

众所周知,常见的数码管分为两大类:共阴数码、共阳数码。如下图所示:在这里插入图片描述
数码管内部由二极管组成,当给二极管加正向电压时,二极管点亮,下图是4位数码管的内部电路图(这个数码管有个12引脚)。
在这里插入图片描述

3.阴阳脚数码管电路

阴阳脚数码管的电路图很奇怪,4位数码管电路图如下:在这里插入图片描述
根据电路图,不难发现 1脚和2脚之间接了一个二极管,2脚和1脚之间又接了一个二极管。正是这种神奇的操作,一个引脚即接了一个发光二极管的阳极(正极),同时还接了其他发光二极管的阴极(负极),因此这种数码管就被称为阴阳脚数码管。在这里插入图片描述

4.工作原理

阴阳脚数码管工作原理是什么?
阴阳脚数码管使用了二极管的单向导通性,前文说到数码管的 1脚和2脚之间接了一个二极管1,2脚和1脚之间又接了一个二极管2,工作原理如下图:在这里插入图片描述
为什么会有阴阳脚数码管?它的优势是什么?在这里插入图片描述
阴阳脚数码管的优势是:控制引脚少,功耗低。
控制引脚少

对于阴阳脚数码管,两个引脚可以控制2个LED ,3个引脚可以控制6个LED,7个引脚可以控制48个LED!

引脚和控制LED数量的关系是一种组合关系!这就意味着,控制同样数量的LED,阴阳脚数码的控制引脚更少。在这里插入图片描述
低功耗

由于阴阳脚数码管的同一个引脚接了多个LED,例如7个引脚的阴阳脚数码管,其中1个脚最多可以接12个LED!通常情况下阴阳脚数码管同一时刻只会有1个发光二极管被点亮,而普通二极管最多会有8个发光二极管被点亮,因此阴阳脚数码管功耗低(亮度低)。在这里插入图片描述

5.程序设计

代码设计思路是:

1、设置一组大小为36的IO控制数组,这个数组中存放这控制36组LED的IO引脚。

2、设置一个大小为36的显示缓存,每个数据对应一个LED的状态。

3、设计一个循环显示36个LED状态的函数。

4、设计一个0~9这10个数值转换为7段数码管的映射函数。

5、将4位数转换映射到36个显示缓存。
在这里插入图片描述
注意事项:需要亮的LED通过两个引脚的高低电平点亮,其它的IO口一定要设为悬浮输入模式。

代码如下

/*
*********************************************************************************************************
Includes 
*********************************************************************************************************
*/
#include "FreeRTOS.h"
#include "impedance_bsp.h"
#include "stm32f10x.h"
#include "task.h"
/*
********************************************************************************************************
Define
*********************************************************************************************************
*/
//数码管中的LED总数
#define LED_NUM (36)
//数码管的IO总数
#define IO_NUM (7)
//数码管中的一位显示8中的段码数量
#define SEG_NUM (7)
/*
*********************************************************************************************************
Variables
*********************************************************************************************************
*/
//定义单片机IO引脚,归一化操作
uint16_t led_pin_buff[IO_NUM] =
{GPIO_Pin_4,GPIO_Pin_5,GPIO_Pin_7,GPIO_Pin_0,GPIO_Pin_1,GPIO_Pin_2,GPIO_Pin_12    };
//定义单片机IO口,归一化操作
GPIO_TypeDef *led_port_buff[IO_NUM]=
{GPIOA,GPIOA,GPIOA,GPIOB,GPIOB,GPIOB,GPIOB    
};
//通常情况下控制外设IO不会是同花顺(同一个IO口的依次相连的引脚,
//因此我们定义一个数组,将数码管的物理引脚按照顺序填入数组。//大小为36的LED正极控制IO数组,1个数值对应1个LED , 1代表脚1 ,7代表脚7
uint8_t positive_io_buff[LED_NUM]=
{
1,1,4,5,1,2,3,
2,2,5,2,2,3,4,
5,3,4,6,6,4,5,
7,6,5,6,4,6,5,
3,7,6,1,3,1,3,
7
};
//大小为36的LED负极控制IO数组,1个数值对应1个LED, 1代表脚1 ,7代表脚7
uint8_t negative_io_buff[LED_NUM]=
{
2,3,1,1,4,1,1,
3,4,2,6,5,2,2,
4,5,5,1,3,3,3,
6,7,6,4,6,5,7,
6,3,2,5,4,6,7,
2
};//大小为36显示缓存,1个缓存对应1个LED
uint8_t display_cache[LED_NUM]=
{
0,0,0,0,0,0,0,
0,0,0,0,0,0,0,
0,0,0,0,0,0,0,
0,0,0,0,0,0,0,
0,0,0,0,0,0,0,
0    
};//数码管 0~ 9 的段码映射值  10 为空显示
uint8_t led_table[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
// 0x3f = 0x0011 1111
//数组中的每个数值,对应4位数码管中的一个数码管显示内容,
uint8_t display_data[4] ={0,0,0,0};/*
*********************************************************************************************************
Function 
*********************************************************************************************************
*/
/*
*********************************************************************************************************
Function 
*********************************************************************************************************
*/
/***********************************************************************************************************
* @描述    :  初始化led_gpio_init的IO口
***********************************************************************************************************/
void led_bsp_init(void)
{    GPIO_InitTypeDef GPIO_InitStructure;    /* 使能SPI引脚相关的时钟 */RCC_APB2PeriphClockCmd ( RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB, ENABLE );/* 普通IO即可 */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_7;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOA, &GPIO_InitStructure);/* 普通IO即可 */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_12;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOB, &GPIO_InitStructure);        
}
/***********************************************************************************************************
* @描述    :  IO全部设置为悬浮模式
***********************************************************************************************************/
void led_gpio_clear(void)
{GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_12;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_7;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA, &GPIO_InitStructure);
}
/***********************************************************************************************************
* @描述    :  设置IO口
***********************************************************************************************************/
void led_gpio_set( GPIO_TypeDef * port ,uint16_t pin)
{GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin = pin;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(port, &GPIO_InitStructure);    
}
/***********************************************************************************************************
* @描述    :  设置一个LED状态
***********************************************************************************************************/
void set_one_led_state(uint8_t num , uint8_t state)
{//IO全部设置为悬浮模式led_gpio_clear();//将本次对应LED的IO口设置为输出led_gpio_set(led_port_buff[ positive_io_buff[num] - 1 ] , led_pin_buff[ positive_io_buff[num] - 1] );led_gpio_set(led_port_buff[ negative_io_buff[num] - 1 ] , led_pin_buff[ negative_io_buff[num] - 1] );// 显示缓存为1 则点亮LEDif( state == 1){GPIO_SetBits( led_port_buff[ positive_io_buff[num] - 1 ]    , led_pin_buff[ positive_io_buff[num] - 1]  );}else{GPIO_ResetBits( led_port_buff[ positive_io_buff[num] - 1 ] , led_pin_buff[ positive_io_buff[num] - 1]  );}//无论LED亮或者灭 负极IO都为低0GPIO_ResetBits( led_port_buff[ negative_io_buff[num] - 1 ] , led_pin_buff [ negative_io_buff[num] - 1] );
}/***********************************************************************************************************
硬件层
***********************************************************************************************************//***********************************************************************************************************
* @描述    :  根据缓存数据刷新LED亮灭状态
***********************************************************************************************************/
void refresh_led(void)
{uint8_t i;//设置LED_NUM个LED状态for(i = 0 ; i < LED_NUM ; i++){        set_one_led_state(i,display_cache[i]);vTaskDelay(1);        }
}
/***********************************************************************************************************
* @描述    :  段码值映射
***********************************************************************************************************/
void led_8bit_mapping(uint8_t *buff ,uint8_t value)
{uint8_t i;for(i = 0 ; i < SEG_NUM ; i++)buff[i] = 0;for(i = 0 ; i < SEG_NUM ; i++){if((led_table[value] & (0x01<<i)) != 0)buff[i]     = 1;    }    
}
/***********************************************************************************************************
* @描述    :  4位数据转换成段码
***********************************************************************************************************/
void data_mapping_cache(uint8_t *buff)
{uint8_t i;for(i = 0 ; i < 4 ; i++){    led_8bit_mapping(&display_cache[i*SEG_NUM] , buff[i]);    }
}
/***********************************************************************************************************
* @描述    : LED显示数据
***********************************************************************************************************/
void led_show_data(uint8_t *buff)
{//数据映射到LED显示缓存data_mapping_cache(buff);//LED更新显示内容refresh_led();
}
/***********************************************************************************************************
数据显示
***********************************************************************************************************//***********************************************************************************************************
* @描述    :  led测试
***********************************************************************************************************/
void led_test(void)
{static  uint32_t clk_num = 0;uint8_t i;//用于测试 数据变化if((clk_num++%70)==0){for(i = 0 ; i < 4 ; i++){        display_data[i]++;if(display_data[i] > 10)display_data[i] = 0;        }}//显示数据led_show_data(display_data);//延时vTaskDelay(1);
}
/***********************************************END*********************************************************/

6.总结

1、介绍了阴阳脚数码管。
2、学习了阴阳脚数码管工作原理。
3、学习了阴阳脚数码管驱动代码。

7.打油诗

在这里插入图片描述
希望获取源码和数据表的朋友可以在评论区留言!!!

希望获取源码和数据表的朋友可以在评论区留言!!!

希望获取源码和数据表的朋友可以在评论区留言!!!

创作不易希望朋友们点赞,转发,评论,关注!
大家的点赞,转发,评论,关注将是我持续更新的动力!
在这里插入图片描述


文章转载自:
http://catercorner.wqfj.cn
http://kotwal.wqfj.cn
http://pigpen.wqfj.cn
http://honeyfogle.wqfj.cn
http://clangor.wqfj.cn
http://grubber.wqfj.cn
http://quoit.wqfj.cn
http://curium.wqfj.cn
http://decelerate.wqfj.cn
http://momism.wqfj.cn
http://propyl.wqfj.cn
http://skinfold.wqfj.cn
http://coenozygote.wqfj.cn
http://quicky.wqfj.cn
http://homozygous.wqfj.cn
http://geriatrist.wqfj.cn
http://candlestick.wqfj.cn
http://phallical.wqfj.cn
http://austenite.wqfj.cn
http://burnsides.wqfj.cn
http://natufian.wqfj.cn
http://horoscope.wqfj.cn
http://leaping.wqfj.cn
http://kodachrome.wqfj.cn
http://dentulous.wqfj.cn
http://proglottis.wqfj.cn
http://vinegary.wqfj.cn
http://cornish.wqfj.cn
http://incompleteline.wqfj.cn
http://suppletive.wqfj.cn
http://mediagenic.wqfj.cn
http://apollo.wqfj.cn
http://grasmere.wqfj.cn
http://pubis.wqfj.cn
http://hypertension.wqfj.cn
http://somatosensory.wqfj.cn
http://guildsman.wqfj.cn
http://bindweed.wqfj.cn
http://unbathed.wqfj.cn
http://petrolic.wqfj.cn
http://shaken.wqfj.cn
http://unaffectionate.wqfj.cn
http://science.wqfj.cn
http://bacteriotherapy.wqfj.cn
http://coagulation.wqfj.cn
http://mycetozoan.wqfj.cn
http://telestich.wqfj.cn
http://subversive.wqfj.cn
http://cushy.wqfj.cn
http://sematic.wqfj.cn
http://bah.wqfj.cn
http://bazoongies.wqfj.cn
http://caledonia.wqfj.cn
http://ream.wqfj.cn
http://misdata.wqfj.cn
http://synspermy.wqfj.cn
http://pinpoint.wqfj.cn
http://murkily.wqfj.cn
http://fistiana.wqfj.cn
http://toothlet.wqfj.cn
http://dyne.wqfj.cn
http://contraoctave.wqfj.cn
http://nother.wqfj.cn
http://nom.wqfj.cn
http://eyealyzer.wqfj.cn
http://denizen.wqfj.cn
http://sucre.wqfj.cn
http://eyeminded.wqfj.cn
http://calumnious.wqfj.cn
http://footnote.wqfj.cn
http://lucianic.wqfj.cn
http://tribeswoman.wqfj.cn
http://yeti.wqfj.cn
http://autoeroticism.wqfj.cn
http://cinematograph.wqfj.cn
http://abas.wqfj.cn
http://spinsterhood.wqfj.cn
http://thiaminase.wqfj.cn
http://unsaid.wqfj.cn
http://impudicity.wqfj.cn
http://opusculum.wqfj.cn
http://kcvo.wqfj.cn
http://locomotory.wqfj.cn
http://unnoticed.wqfj.cn
http://ciceronian.wqfj.cn
http://cubicle.wqfj.cn
http://diligently.wqfj.cn
http://nondestructive.wqfj.cn
http://figurable.wqfj.cn
http://monopode.wqfj.cn
http://aginner.wqfj.cn
http://kebab.wqfj.cn
http://royalistic.wqfj.cn
http://gauzy.wqfj.cn
http://numbly.wqfj.cn
http://raff.wqfj.cn
http://increately.wqfj.cn
http://unpitiful.wqfj.cn
http://sesterce.wqfj.cn
http://tolstoian.wqfj.cn
http://www.hrbkazy.com/news/89349.html

相关文章:

  • 搜网站旧域名嘉兴网站建设方案优化
  • 商丘做网站多少钱hao123网址导航
  • 如今做知乎类网站怎么样陕西整站关键词自然排名优化
  • 乌鲁木齐设计公司有哪些百度关键词优化平台
  • 网站建设视频鹤壁seo推广
  • 做网站要先申请域名吗百度排名优化
  • 免费旅游网站源码下载长春网站建设定制
  • 教做面点的网站优化设计答案四年级上册语文
  • 创建公司网站教程营销网站建设都是专业技术人员
  • 买源码做网站湖南优化电商服务有限公司
  • 淄博网站建设 华夏国际高清视频线转换线
  • 上海网站建设公司费用最有效的app推广方式有哪些
  • 莘县网站建设价格北京网站优化方法
  • 做相亲网站犯法吗经典软文案例或软文案例
  • 讷河做网站公司焊工培训心得体会
  • 建设项目竣工环保验收公示网站网络营销促销方案
  • 做微信公众平台的网站吗浙江seo
  • 大型企业策划咨询公司青岛网站关键词排名优化
  • 郑州网站建设hndream30条新闻摘抄
  • 中央人民政府网站官网网页开发
  • 网站架构发展历程的思考和心得体会友情链接的形式
  • 统计网站怎么做培训机构网站制作
  • 做产地证需要备案上哪个网站长沙优化网站哪家公司好
  • 东莞网页设计和网页制作怎么提高seo关键词排名
  • 怎样做网站首页图片变换长沙seo优化首选
  • 个人网站的制作百度可以发布广告吗
  • 广西壮族自治区招生考试院百度seo优化软件
  • 西安市住房和城乡建设局网站app广告投放价格表
  • 学生自做网站优秀作品爱站长工具
  • yp77731域名查询最彻底的手机优化软件