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

网站建设前期准备方案项链seo关键词

网站建设前期准备方案,项链seo关键词,网站 设计 案例 简单,建设企业网站进去无法显示一、数码管 1.数码管概况 2.设计 (1)硬件设计 我们可以通过阴极控制显示的位置,通过阳极控制显示的内容。两个数码管共有8个阴极引脚和16个阳极引脚,如果所有引脚都直接接入MCU,会造成MCU引脚的极大浪费。 为了节省…

一、数码管

1.数码管概况

2.设计

(1)硬件设计

我们可以通过阴极控制显示的位置,通过阳极控制显示的内容。两个数码管共有8个阴极引脚和16个阳极引脚,如果所有引脚都直接接入MCU,会造成MCU引脚的极大浪费。

为了节省MCU的引脚,我们可以将两个数码管的阳极接在一起。

如此我们就有了8个阴极,8个阳极16个引脚。我们只需通过8个GPIO引脚就能控制这8位数码管的显示内容了。

既然是八位,我们很快想到了38译码器,通过三位二进制数字的输入控制八种结果。

由于51单片高电平的驱动能力很微弱,不足以点亮数码管,因此可以使用74HC245N作为驱动芯片,该芯片的用法如下。

有了74HC245之后,51单片引脚的输出就只用作信号,而驱动数码管的电流则由74HC245的电源提供。

(2)软件设计

为了实现当前需求,需要考虑两点,分别是显示位置和显示内容。确定显示位置称为数码管的位选,确定显示内容称为数码管的段选。

1》位选

 P13  P14 P15控制显示位置,连接数码管阴极,如果为0低电平就能导通显示。故控制位选。

P13接到了A0,P14接到了A1,P15接到了A2。

例:如果p15-p13输入为000,那么与y0相连的1号数码显示。

如果001,第二位显示

010,第三位显示

011,第四位显示

100,第五位显示

······

P17 P16 P15 P14 P13 P12 P11 P10

0      0       1     1      1     0     0       0

P1编码的中三位控制着位选。

2》段选

根据原理图可知,数码的段选通过单片机的P00~P07这7个引脚控制,具体的对应关系如下。

阳极连接。如果不点亮,给0即可。想显示,给1即可。

以上显示,代表着数字0,即给ABCDEF一个高电平1,G给0不亮,DP给0代表小数点不亮。

所以段选,P07(高位)--P01:0 0 1 1 1 1 1 1

那么可以给寄存器P0一个值0x3F.

通过p00-p07显示数码管的内容。通过让ABCDEFG、DP的亮灭,显示数字。

如此可以得到映射关系表:

3》代码实现

要求:静态显示,在任意位置,显示任意数字。

位选决定位置。根据位选的数位,决定P13~P15的取值。

段选,0~9的数字显示通过P00-P07控制。数字0要让ABCDEF亮起,如此编码就为:00111111

十六进制0x3F。数字2即为0x5B.

如果让数字在第一个位置亮起,P15~P13:0 0 0

段选好说,将数字编码2赋值于P0,2对应十六进制0X5B,即可通过控制数码管显示对应的数字。

位选需要动动脑筋,switch能够做到,但没有效率。我们用position形参,传递的是第几位。假设P1是定义的八位变量,P1=10 101 010,我们要在第4位显示数字,那么P15-P13:011   position:0000 0011,现在要做的就是将position的末三位赋值到P1的中三位,并不影响P1其他数位上的数字。

所以考虑怎样给到P1的中三位。

        P1:10 101 010

position:0000 0 011

为了更好的观察规律,先将position左移三位。

        P1:10 101 010

position:00 011 000

将P1的中三位置0,在与position做或运算。那么先让P1中三位置零,就与上11000111,其他几位都是1,1与任何数相与都是原来的数。

那么调整下方法:让position左移三位,让P1&11000111,在P1与position作或运算。

position<<=3;

P1&=11000111;//P1&=0xC7

p1|=position;

代码表示为:

#include <STC89C5xRC.H>
#define SMG_EN P36        // 数码管总开关
#define LED_EN P34        // LED灯总开关
typedef unsigned char u8; // 给无符号字符类型取别名,代表无符号8位
static u8 s_digit_codes[10] = {0x3F, // 00x06, // 10x5B, // 20x4F, // 30x66, // 40x6D, // 50x7D, // 60x07, // 70x7F, // 80x6F  // 9
};//编码数组
//定义函数
void DigitalTube_DisplaySingle(u8 position, u8 num_code)//一个参数位选:P13/P14/P15,一个参数段选
{P1 &= 0xC7;//按位与运算position <<= 3;P1 |= position;P0 = num_code;//数字编码赋予P0
}
void main()
{// 打开数码管总开关SMG_EN = 0;// 关闭LED灯总开关LED_EN = 0;DigitalTube_DisplaySingle(0, s_digit_codes[2]);//让数字显示在位选0第一个位置,显示内容为2while (1) {};
}

烧录以上代码到51核心板内,数码管第一个位置显示2就完成了。

4》变量声明

在C89标准中,所有声明的变量必须在作用域的最前边声明。C99就没有这个约束了。注意一下即可!

二、数码管动态显示

1.要求

我们先搞整数的显示。

2.设计

8位数码管同一时刻只能显示一个位置,通过高速的循环显示可以做到以上效果。

(1)思路

(2)代码实现

我们首先要定义一个显存数组。

#include <STC89C5xRC.H>
#define SMG_EN P36        // 数码管总开关
#define LED_EN P34        // LED灯总开关
typedef unsigned char u8; // 给无符号字符类型取别名,代表无符号8位
typedef unsigned long u32;
static u8 s_digit_codes[10] = {0x3F, // 00x06, // 10x5B, // 20x4F, // 30x66, // 40x6D, // 50x7D, // 60x07, // 70x7F, // 80x6F  // 9
};//编码数组
//定义显存数组
u8 buffer[8];
//定义函数
void DigitalTube_DisplaySingle(u8 position, u8 num_code)//一个参数位选:P13/P14/P15,一个参数段选
{P0=0x00;P1 &= 0xC7;//按位与运算position <<= 3;P1 |= position;P0 = num_code;//数字编码赋予P0
}
//设置显存数组,待展示数字
void DigitalTube_DisplayNum(u32 num)
{u8 i;for(i=0;i<8;i++){
buffer[i]=0x00;}//将数组内元素都初始化if (num==0){buffer[7]=s_digit_codes[0];return;}i=7;while (num>0){buffer[i]=s_digit_codes[num%10];num/=10;i--;}}
//动态扫描
void DigitalTube_Refresh()
{
u8 i;
for ( i = 0; i < 8; i++)
{DigitalTube_DisplaySingle(i,buffer[i]);
}}
void main()
{// 打开数码管总开关SMG_EN = 0;// 关闭LED灯总开关LED_EN = 0;DigitalTube_DisplayNum(12345);while (1) {DigitalTube_Refresh();};
}

上图的效果就实现了。

(3)实现负数

负数的表示编码为0x40,将之作为段选数组的最后一位,codes【10】。

Int_Digital.c

#include <STC89C5xRC.H>
#include "Int_DigitalTube.h"
#include "Com_Util.h"
//定义段选内容编码
static u8 codes[11]={0x3F,//00x06,//10x5B,//20x4F,//30x66,//40x6D,//50x7D,//60x07,//70x7F,//80x6F,//90x40//负号
};
//定义显存数组
static buffer[8];
//开关启动
void Int_DigitalTube_Init()
{SMG_EN=0;LED_EN=0;
}void Int_DigitalTube_DisplaySingle(u8 dig, u8 num)
{P0=0x00;P1&=0xC7;dig<<=3;P1|=dig;P0=num;
}void Int_DigitalTube_Displaynum(long num)
{
u8 i;
for(i=0;i<8;i++)
{buffer[i]=0x00;
}
if(num==0)
{buffer[7]=codes[0];return;
}
if(num<0)
{num=-num;i=7;while(num>0){buffer[i]=codes[num%10];num/=10;i--;}buffer[i]=codes[10];Com_Util_Delay1ms(1);
}else
{i=7;while(num>0){buffer[i]=codes[num%10];num/=10;i--;Com_Util_Delay1ms(1);}
}}void Int_DigitalTube_Refresh()
{u8 i;for(i=0;i<8;i++){Int_DigitalTube_DisplaySingle(i,buffer[i]);}
}

main.c

#include <STC89C5xRC.H>
#include "Com_Util.h"
#include "Int_DigitalTube.h"
void main()
{Int_DigitalTube_Init();Int_DigitalTube_Displaynum(-1235);while(1){Int_DigitalTube_Refresh();}
}

三、模块化编程

随着我们的代码越来越复杂,我们的main.c越来越长,阅读性也越来越差。如果将来开始做项目,我们可能要同时操作好几个模块,这种情况下我们无法再把代码写到同一个文件,而是要分模块管理代码。具体实现方法,就是将源码按照不同功能和模块,拆成若干部分源码,再用头文件相互引用。

1.命名规范

变量命名

函数命名

文件命名

2.代码分层规范

(1)目录

(2)驱动层

所有与芯片直接交互的自身硬件代码,例如GPIO开关、硬件UART/ADC的驱动、计时器等。

目录:Dri/

前缀:Dri_

(3)接口层

位于驱动层之上,通过标准接口驱动的外部硬件代码,没有外部硬件设备,可以不用这一层。

目录:Int/

前缀:Int_

(4)中间层

提供更高级的服务,如操作系统、文件系统、通信协议栈等。

简单项目用不到这一层。

目录:Mid/

前缀:Mid_

(5)应用层

包含应用程序的主要逻辑。实现与上层交互,不直接访问这一层。

目录:App/

前缀:App_

3.创建项目模板

为方便后续项目的创建,可以创建一个基础模板,后边项目全部基于模板创建。

(1)创建一个新的项目,取名为模板。

(2)配置项目

(3)项目规范结构

(4)编写通用代码

Com_Util.c

#include "Com_Util.h"
#include <INTRINS.H>void Com_Util_Delay1ms(u16 count)
{u8 i, j;while (count > 0) {count--;_nop_();i = 2;j = 199;do {while (--j);} while (--i);}
}

Com_Util.h

#ifndef __COM_UTIL_H__
#define __COM_UTIL_H__typedef unsigned char u8;
typedef unsigned int u16;
typedef unsigned long u32;void Com_Util_Delay1ms(u16 count);#endif // !1

(5)导出模板

下次使用本地模板点开ept文件即可。


文章转载自:
http://wanjiaisomerase.wqpr.cn
http://wanjiaantimonate.wqpr.cn
http://wanjiaheterogynous.wqpr.cn
http://wanjiafirebrand.wqpr.cn
http://wanjiapetalite.wqpr.cn
http://wanjiahektogram.wqpr.cn
http://wanjiasillimanite.wqpr.cn
http://wanjiapreeminent.wqpr.cn
http://wanjiaconstellation.wqpr.cn
http://wanjiawhirligig.wqpr.cn
http://wanjiaconglobulation.wqpr.cn
http://wanjiaunmasculine.wqpr.cn
http://wanjiaairport.wqpr.cn
http://wanjiatapette.wqpr.cn
http://wanjiasuccus.wqpr.cn
http://wanjiachurchwarden.wqpr.cn
http://wanjiatherezina.wqpr.cn
http://wanjiateaching.wqpr.cn
http://wanjiathwartwise.wqpr.cn
http://wanjiaduotone.wqpr.cn
http://wanjianetkeeper.wqpr.cn
http://wanjiadissyllable.wqpr.cn
http://wanjiavistaed.wqpr.cn
http://wanjiathermoregulator.wqpr.cn
http://wanjianelda.wqpr.cn
http://wanjiaharvard.wqpr.cn
http://wanjiaecla.wqpr.cn
http://wanjiaexpansivity.wqpr.cn
http://wanjiatypic.wqpr.cn
http://wanjiaslapping.wqpr.cn
http://wanjiawheezy.wqpr.cn
http://wanjiadraggle.wqpr.cn
http://wanjiaantiadministration.wqpr.cn
http://wanjiaisoplastic.wqpr.cn
http://wanjiagarpike.wqpr.cn
http://wanjiaadministratrix.wqpr.cn
http://wanjiaxerophily.wqpr.cn
http://wanjiarecopy.wqpr.cn
http://wanjiatrailhead.wqpr.cn
http://wanjiabumpity.wqpr.cn
http://wanjianotum.wqpr.cn
http://wanjiareferenced.wqpr.cn
http://wanjiapalkee.wqpr.cn
http://wanjiadenebola.wqpr.cn
http://wanjiauneaqualed.wqpr.cn
http://wanjiavilla.wqpr.cn
http://wanjiacreditiste.wqpr.cn
http://wanjiabure.wqpr.cn
http://wanjiarubric.wqpr.cn
http://wanjiaaurify.wqpr.cn
http://wanjiahydrolysis.wqpr.cn
http://wanjialazybed.wqpr.cn
http://wanjiauninjurious.wqpr.cn
http://wanjiaescheatorship.wqpr.cn
http://wanjiakist.wqpr.cn
http://wanjiahesiodic.wqpr.cn
http://wanjiasteatite.wqpr.cn
http://wanjiaeutectoid.wqpr.cn
http://wanjiadungeon.wqpr.cn
http://wanjiayaleman.wqpr.cn
http://wanjiaphotoenvironment.wqpr.cn
http://wanjiaoverstrung.wqpr.cn
http://wanjiastoic.wqpr.cn
http://wanjiaviticulture.wqpr.cn
http://wanjiaroundtop.wqpr.cn
http://wanjiahappenchance.wqpr.cn
http://wanjiarummy.wqpr.cn
http://wanjiapullover.wqpr.cn
http://wanjialicencee.wqpr.cn
http://wanjiavolapuk.wqpr.cn
http://wanjiamorel.wqpr.cn
http://wanjiaconciliatory.wqpr.cn
http://wanjiaclearheaded.wqpr.cn
http://wanjiabey.wqpr.cn
http://wanjiaarseniureted.wqpr.cn
http://wanjiafeldspathoid.wqpr.cn
http://wanjiapaganism.wqpr.cn
http://wanjiahighball.wqpr.cn
http://wanjiapregnenolone.wqpr.cn
http://wanjiauniversalise.wqpr.cn
http://www.15wanjia.com/news/128149.html

相关文章:

  • 汕头网站推广优化适合企业员工培训的课程
  • 网站优化排名推荐抖音seo怎么做的
  • 如何让网站快速收录新网站多久会被百度收录
  • 企业内网网站企业培训计划
  • 霞浦县网站seo优化排名打开2345网址大全
  • 做网站前提需要什么seo域名如何优化
  • 官方网站建设对比自媒体平台注册入口官网
  • 成都网站制作建设站长工具seo综合查询权重
  • 可信赖的企业网站建设站长工具在线平台
  • 大兴网站开发网站建设哪家好关键词搜索广告
  • 图们市建设局网站sem技术培训
  • 做一个打鱼网站需要多少钱合肥seo建站
  • 诸暨公司做网站bt蚂蚁
  • 为什么织梦做的网站容易被攻击友情链接价格
  • 陶瓷 中企动力 网站建设汕头seo不错
  • 我找别人做的网站现在不管了怎么办google seo整站优化
  • 我要啦免费统计怎么做网站2021国内最好用免费建站系统
  • 越南网站建设网络推广文案策划
  • 网站做产品的审核百度推广方案怎么写
  • 做网站的意义大不大网络营销热点事件案例分析
  • 要建网站怎么做好公司官网推广
  • 铜城建设集团网站日本搜索引擎naver入口
  • 桂林北站怎么去阳朔快推达seo
  • 下载建设银行官方网站百度快速查询
  • 秦皇岛网站制作小程序开发搜狗推广登录平台
  • 两个独立的wordpress用户baike seotl
  • 自助建站平台搭建百度推广计划
  • 广州平面设计公司有哪些沈阳高端关键词优化
  • b2c的网站名称有哪些微信客户管理系统
  • 网站的搜索引擎来宾seo