51单片机基本刷屏测试实验_51单片机开发基础8——实时时钟实验

8.1 实时时钟简介

       RTC(Real Time Clock),是实时时钟的缩写,实时时钟是日常生活中应用最为广泛的功能。它为人们提供精确的实时时间,或者为电子系统提供精确的时间基准,目前实时时钟芯片大多采用精度较高的晶体振荡器作为时钟源。有些时钟芯片为了在主电源掉电时,还可以工作,需要外加电池供电。

       现在的高端处理器大都内置了RTC模块,但是由于51单片机速度较慢,主要用于低端的控制系统中,所以没有内置RTC模块,需要采用时钟芯片来完成这个功能,现在常用的时钟芯片有很多,现在以DS1302为例说明时钟芯片的使用方法。

8.2 DS1302简介

8.2.1 DS1302概述

       DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小于31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2.5~5.5V。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对备用电源进行涓细电流充电的能力。

8.2.2通信协议

       在之前的章节中,除了USART那一部分,都是采用了并行通信作为数据传输的方式,并行通信虽然速度很快,但是对硬件有着很高的要求,比如如果传输8位的数据,就需要8根通信线,如果是16位的数据就需要16根通信线,并且随着通信线长度不一样,可能会存在数据错误或者丢失的情况。串行通信虽然速度没有并行通信那么高,但是一根数据线可以传送任意字节的数据,降低了设计中布线的难度。

       DS1302就是串行通信方式,芯片的引脚分布如下图所示。

1522e0a1c663db21093436c580badd96.png

引脚编号

英文缩写

引脚功能

1

VCC2

主电源

2

X1

32.768KHz晶振

3

X2

32.768KHz晶振

4

GND

数字地

5

RST

复位

6

I/O

数据输入/输出

7

CLK

时钟输入

8

VCC1

备用电源(接电池)

    串行通信中,用到了两个端口,时钟信号CLK和数据信号I/O,时钟信号用于提供数据发送的脉冲,数据信号I/O用于将数据拆成0101的形式发送过去,DS1302的时序包括读和写两种时序,时序图如下图所示。

(1)写时序

04fba646e3de7eedd299b46e80fbfef1.png

(2)读时序

3e22f309050f411fd5ad80c0a1d59720.png

8.2.3 RTC内部寄存器

(1)秒寄存器

读地址:0x81

写地址:0x80

Bit  7

Bit  6

Bit  5

Bit  4

Bit  3

Bit  2

Bit  1

Bit  0

数据范围

CH

Second  1

Second  2

0~59

Bit 7:时钟开关

       0:关闭

       1:开启

Bit 6~Bit 4:秒数据十位

Bit 3~Bit 0:秒数据个位

(2)分钟寄存器

读地址:0x83

写地址:0x82

Bit  7

Bit  6

Bit  5

Bit  4

Bit  3

Bit  2

Bit  1

Bit  0

数据范围

-

Minute  1

Minute  2

0~59

Bit 6~Bit 4:分钟数据十位

Bit 3~Bit 0:分钟数据个位

(3)小时寄存器

读地址:0x85

写地址:0x84

Bit  7

Bit  6

Bit  5

Bit  4

Bit  3

Bit  2

Bit  1

Bit  0

数据范围

12/24

0

Hour  1

Hour  2

1~12

0~23

AM/PM

Hour  1

Bit 7:小时制选择

       0:24小时制

       1:12小时制

Bit 5~Bit 4:小时数据十位(24小时制)

              当Bit 7设置为12小时制的时候Bit5代表上下午,Bit 4代表小时数据的十位

Bit 3~Bit 0:小时数据个位

(4)日期寄存器

读地址:0x87

写地址:0x86

Bit  7

Bit  6

Bit  5

Bit  4

Bit  3

Bit  2

Bit  1

Bit  0

数据范围

0

0

Data  1

Data  2

1~31

Bit 5~Bit 4:日期数据十位

Bit 3~Bit 0:日期数据个位

(5)月份寄存器

读地址:0x89

写地址:0x88

Bit  7

Bit  6

Bit  5

Bit  4

Bit  3

Bit  2

Bit  1

Bit  0

数据范围

0

0

0

Month  1

Month  2

1~12

Bit 5~Bit 4:月份数据十位

Bit 3~Bit 0:月份数据个位

(6)星期寄存器

读地址:0x8B

写地址:0x8A

Bit  7

Bit  6

Bit  5

Bit  4

Bit  3

Bit  2

Bit  1

Bit  0

数据范围

0

0

0

0

0

Day

1~7

Bit 2~Bit 0:星期数据个位

(7)年份寄存器

读地址:0x8D

写地址:0x8C

Bit  7

Bit  6

Bit  5

Bit  4

Bit  3

Bit  2

Bit  1

Bit  0

数据范围

Year  1

Year  2

0~99

Bit 7~Bit 4:年份数据十位

Bit 3~Bit 0:年份数据个位

(8)写保护寄存器

读地址:0x8F

写地址:0x8E

Bit  7

Bit  6

Bit  5

Bit  4

Bit  3

Bit  2

Bit  1

Bit  0

数据范围

WP

0

0

0

0

0

0

0

Bit 7:写保护控制

       0:关闭写保护

       1:开启写保护

8.2.4 原理图

8ad3fc3cd7840e35b911d857d954945e.png

8.3 例程分析

(1)由于程度很长,只做几个重点位置的讲解。先来看显示部分

3ebdd034a64e64229797aa2c850c2bcd.png

在之前1602显示的实验上增加了一个函数LCD_Show_String,这个函数用于在屏幕任意位置显示字符串,C语言中的字符串其实是一个一维数组,这个一维数组中存放的是ASCII码,假设定义一个字符串Hello World,那么实际在单片机里面存储的数据如下表所示

00  H

01  H

02  H

03  H

04  H

05  H

06  H

07  H

08  H

09  H

0A  H

H

e

l

l

o

W

o

r

l

d

换算到16进制里面就是

00  H

01  H

02  H

03  H

04  H

05  H

06  H

07  H

08  H

09  H

0A  H

0x48

0x65

0x6C

0x6C

0x6F

0x20

0x57

0x6F

0x72

0x6C

0x64

现在来分析这个子函数

第112行:使用switch语句来进行坐标转换,因为LCD1602第1行第1个位置的地址是0x80,第2行第1个位置的地址则是0xC0,所以需要用分支语句来控制最后的地址

第115行,如果是第1行(第1行用0表示的),那么地址就是行地址加列地址,1602内部规定了列地址从0~15,如果是第1行第2个位置,那么具体的地址就应该是0x80+1=0x81,如果是第2行第5个位置就应该是0xC0+4=0xC4

第124行:地址设置属于输入命令,所以应该调用LCD命令写入函数,将之前的地址数据写入LCD1602中

第125行:由于LCD1602设置了地址自动加一,所以写入连续的数据的时候不需要频繁设置地址,这就可以采用循环的方式把字符串写进去,ASCII虽然有128个数据,但是能够显示的数据并不多,仔细观察ASCII码表可以发现,只有空格之后的数据是可以显示的,之前的都是控制字符,而空格的ASCII码值是0x20,程序中的\0的ASCII码值是0x00,也就是说当检测到要写入的数据是0x00的时候就说明字符串写完了,此时结束循环即可

第127行:利用LCD数据写入函数把指针指向的地址里面的数据写入LCD1602

第128行:指针自增,为了让指针指向的下一个字符的地址,因为数组里面的数据在地址中都是连续存放的,如果第一个字符的地址是0x00,那么下一个字符的地址就一定是0x01

(2)然后我们来看DS1302的驱动函数,重点分析如何将一个字节拆分成0101的二进制位发出去,并分析如何将0101的二进制位变成一个完整的字节。

假设存在1个字节0x23,现在我想把这个字节从最低位到最高位一位一位的将数据传送出去,应该怎么办呢?

       首先23 H=0010 0011B,最低位是1,最高位是0,现在将0x23&0x01进行运算,结果当然是0x01,这时,我们就应该将数据线变成1,然后0x23往右移动一个二进制位,得出的结果是11 H=0001 0001 B(这里有一个重点,数据右移的时候,最高位是补0的,数据左移的时候,最低位补0)。

       假设上面的数据右移了2次后,最初的23 H变成了08 H=0000 1000 B,现在继续对0x08&0x01做运算得出的结果是0,这时,将数据线变为0,如此循环8次,就可以将1个字节分成串行数据一位一位的传送出去了。

3e3028c387a619bd1e1d8cf3a501f15f.png

上图所示的代码就是串行数据的发送与接收,下面开始考虑接收,如何将串行数据拼接成并行数据呢?

       假设串行数据先发送最低位,首先将一个数据00 H右移一个二进制位,得出的数据当然还是00 H,然后如果数据总线上的电平是1,那么此时就把00 H和80 H做或运算,得出的结果就是80 H,然后下一个电平的时候80 H右移一个二进制位,得出的结果是40 H,如果此时数据线的电平还是1,那就继续和80 H做或运算,得C0 H,最终通过8次运算,就可以将1个字节全部接收完毕。

       根据上面的分析和DS1302的时序图,就可以写出DS1302读取数据的函数,如下图所示。

cee0644c5382a9497b547dd816888eca.png

(3)下面我们来分析下如何将DS1302计算得出的数据显示在屏幕上,主函数的程序如下图所示。

25a04319135c2b6840e1410fb8999f9a.png

    在while循环里面,由于数据不连续,所以需要先写显示的地址,然后写入数据以显示年为例,由于年份后面2位(个位和十位)的坐标是第1行的第4列和第5列,所以只需要将地址设置成第一行的第4列就行了,由于1602内部地址从0开始,所以第1行的第4列地址应该是0x80+3。

       第229行和第230行里面,数据除以10取整数部分和除以10取余数部分都比较容易理解,那么为什么要加上0x30呢,这是因为ASCII码表里面,0~9的ASCII值是0x30~0x39,所以如果不加0x30,那么写入的0~9实际是控制字符,刚才说过了ASCII码表里面0x20之前的都是控制字符,直接写入0x00~0x09是不显示的,所以加上0x30之后,9就变成了0x39。

8.4 完整代码

/*********************************************************************************************************                头    文    件    引    用*********************************************************************************************************/#include                                             //导入51单片机头文件/*********************************************************************************************************              数    据    类    型    定    义*********************************************************************************************************/#define u8 unsigned char                                        //定义无符号字符型数据(0~255)#define u16 unsigned int                                        //定义无符号整型数据(0~65535)/*********************************************************************************************************              硬    件    端    口    定    义*********************************************************************************************************///LCD1602控制端口#define LCD_DB  P0                                            //LCD数据口sbit LCD_RS = P2^0 ;                                          //数据命令选择sbit LCD_RW = P2^1 ;                                          //读写控制sbit LCD_EN  = P2^2 ;                                          //使能控制//DS1302控制端口sbit DS_CLK  = P2^6 ;                                          //串行时钟sbit DS_RST  = P2^5 ;                                          //复位sbit DS_IO  = P2^7 ;                                          //串行数据/*********************************************************************************************************              数    据    结    构    定    义*********************************************************************************************************/typedef struct{  u8 Second;                      //秒  u8 Minute;                      //分  u8 Hour;                      //时  u8 Date;                      //日  u8 Month;                      //月  u8 Year;                      //年}DS1302_Data;DS1302_Data Time;/********************************************************Name    :delay_msFunction  :毫秒延时函数Paramater  :      ms:延时的时间Return    :None********************************************************/void delay_ms( u16 ms ){  u8 i ;  while( --ms )    for( i=0; i<110; i++ ) ;}/*********************************************************************************************************                LCD1602    显    示    程    序*********************************************************************************************************//********************************************************Name    :LCD_Write_CommandFunction  :LCD写入命令Paramater  :      Command:命令代码Return    :None********************************************************/void LCD_Write_Command( u8 Command ){  LCD_RS = 0 ;                                            //命令模式  LCD_RW = 0 ;                                            //写模式  LCD_EN = 0 ;                                            //使能复位  LCD_DB = Command ;                                          //发送数据到P0总线  delay_ms( 5 ) ;  LCD_EN = 1 ;                                            //使能拉高  delay_ms( 1 ) ;  LCD_EN = 0 ;                                            //下降沿数据写入  delay_ms( 1 ) ;}/********************************************************Name    :LCD_Write_DataFunction  :LCD写入数据Paramater  :      Data:数据Return    :None********************************************************/void LCD_Write_Data( u8 Data ){  LCD_RS = 1 ;                                            //数据模式  LCD_RW = 0 ;                                            //写模式  LCD_EN = 0 ;                                            //使能复位  LCD_DB = Data ;                                            //发送数据到P0总线  delay_ms( 5 ) ;  LCD_EN = 1 ;                                            //使能拉高  delay_ms( 1 ) ;  LCD_EN = 0 ;                                            //下降沿数据写入  delay_ms( 1 ) ;}/********************************************************Name    :LCD_InitFunction  :LCD初始化Paramater  :NoneReturn    :None********************************************************/void LCD_Init(){  LCD_Write_Command( 0x38 ) ;                                      //8位总线宽度+显示2行+每个字符占用5×10的点阵  LCD_Write_Command( 0x0C ) ;                                      //开启显示+关闭光标+关闭光标显示  LCD_Write_Command( 0x06 ) ;                                      //光标右移+写入数据后显示屏不移动  LCD_Write_Command( 0x01 ) ;                                      //清屏}/********************************************************Name    :LCD_Show_StringFunction  :LCD显示字符串Paramater  :NoneReturn    :None********************************************************/void LCD_Show_String( u8 x, u8 y, u8 *str ){  u8 Address ;  //计算坐标  switch( y )  {    case 0:      Address=0x80+x ;                                      //第一行数据地址      break;    case 1:      Address=0xC0+x ;                                      //第二行数据地址      break;    default:      break;  }  //写入数据  LCD_Write_Command( Address ) ;                                    //设置写入地址  while( *str!='\0' )  {    LCD_Write_Data( *str ) ;                                    //写入数据    str ++ ;                                            //指针地址累加  }}/*********************************************************************************************************                DS1302    时    钟    程    序*********************************************************************************************************//********************************************************Name    :DS1302_Write_ByteFunction  :DS1302写入字节Paramater  :      Byte:写入的字节Return    :None********************************************************/void DS1302_Write_Byte( u8 Byte ){  u8 i ;  for( i=0; i<8; i++ )  {    if( ( Byte&0x01 )==0x01 )                                    //判断最低位是1      DS_IO = 1 ;                                          //数据线拉高发送1    else      DS_IO = 0 ;                                          //数据线拉低发送0    Byte >>= 1 ;                                          //数据右移一个位    DS_CLK = 0 ;                                          //时钟线复位    DS_CLK = 1 ;                                          //时钟线拉高产生上升沿  }}/********************************************************Name    :DS1302_Read_ByteFunction  :DS1302读取字节Paramater  :NoneReturn    :读取的字节********************************************************/u8 DS1302_Read_Byte(){  u8 i, Byte ;  DS_CLK = 1 ;                                            //时钟线拉高  Byte = 0 ;  for( i=0; i<8; i++ )  {    Byte >>= 1 ;                                          //数据右移一个位    DS_CLK = 0 ;                                          //时钟线拉低产生下降沿    if( DS_IO==1 )                                          //判断数据线上的值为1      Byte |= 0x80 ;                                        //字节写入1    DS_CLK = 1 ;                                          //时钟线拉高  }  return Byte ;}/********************************************************Name    :DS1302_Read_TimeFunction  :DS1302读取时间Paramater  :NoneReturn    :None********************************************************/void DS1302_Read_Time(){  u8 i, Byte ;  u8 Read_Address[] = { 0x81, 0x83, 0x85, 0x87, 0x89, 0x8D } ;                    //寄存器地址  for( i=0; i<6; i++ )  {    DS_RST = 0 ;                                          //复位    DS_CLK = 0 ;                                          //时钟线复位    DS_RST = 1 ;                                          //停止复位    DS1302_Write_Byte( Read_Address[ i ] ) ;                            //发送地址    Byte = DS1302_Read_Byte() ;                                    //读取数据    switch( i )    {      case 0:        Time.Second = ( ( Byte&0xF0 )>>4 )*10+( Byte&0x0F ) ;                  //计算秒        break ;      case 1:        Time.Minute = ( ( Byte&0xF0 )>>4 )*10+( Byte&0x0F ) ;                  //计算分        break ;      case 2:        Time.Hour = ( ( Byte&0xF0 )>>4 )*10+( Byte&0x0F ) ;                    //计算时        break ;      case 3:        Time.Date = ( ( Byte&0xF0 )>>4 )*10+( Byte&0x0F ) ;                    //计算日        break ;      case 4:        Time.Month = ( ( Byte&0xF0 )>>4 )*10+( Byte&0x0F ) ;                  //计算月        break ;      case 5:        Time.Year = ( ( Byte&0xF0 )>>4 )*10+( Byte&0x0F ) ;                    //计算年        break ;    }  }}/*********************************************************************************************************                    主    函    数*********************************************************************************************************/void main(){  LCD_Init() ;  LCD_Show_String( 0, 0, " 2000 - 00 - 00 " ) ;  LCD_Show_String( 0, 1, "  00 : 00 : 00  " ) ;  while( 1 )  {    DS1302_Read_Time() ;                                              //DS1302读取时间    //显示年    LCD_Write_Command( 0x80+3 ) ;                                      //写入显示地址    LCD_Write_Data( 0x30+Time.Year/10 ) ;                              //写入十位    LCD_Write_Data( 0x30+Time.Year%10 ) ;                              //写入个位    //显示月    LCD_Write_Command( 0x80+8 ) ;                                      //写入显示地址    LCD_Write_Data( 0x30+Time.Month/10 ) ;                              //写入十位    LCD_Write_Data( 0x30+Time.Month%10 ) ;                              //写入个位    //显示日    LCD_Write_Command( 0x80+13 ) ;                                     //写入显示地址    LCD_Write_Data( 0x30+Time.Date/10 ) ;                              //写入十位    LCD_Write_Data( 0x30+Time.Date%10 ) ;                              //写入个位    //显示时    LCD_Write_Command( 0xC0+2 ) ;                                      //写入显示地址    LCD_Write_Data( 0x30+Time.Hour/10 ) ;                              //写入十位    LCD_Write_Data( 0x30+Time.Hour%10 ) ;                              //写入个位    //显示分    LCD_Write_Command( 0xC0+7 ) ;                                        //写入显示地址    LCD_Write_Data( 0x30+Time.Minute/10 ) ;                              //写入十位    LCD_Write_Data( 0x30+Time.Minute%10 ) ;                              //写入个位    //显示秒    LCD_Write_Command( 0xC0+12 ) ;                                        //写入显示地址    LCD_Write_Data( 0x30+Time.Second/10 ) ;                              //写入十位    LCD_Write_Data( 0x30+Time.Second%10 ) ;                              //写入个位  }}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/529597.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

湖南省普通高等学校计算机应用水平,湖南省普通高等学校非计算机专业学生计算机应用水平二级考试大纲...

湖南省普通高等学校非计算机专业学生计算机应用水平二级考试大纲考试要求:1.掌握计算机的基础知识和网络知识2.正确理解微机及其操作系统的基本功能&#xff0c;熟练掌握常用操作系统的使用3.具有使用微机系统常用应用软件的基本能力4.掌握使用计算机网络获娶传输、发布信息的基…

tensorflow超参数优化_机器学习模型的超参数优化

引言模型优化是机器学习算法实现中最困难的挑战之一。机器学习和深度学习理论的所有分支都致力于模型的优化。机器学习中的超参数优化旨在寻找使得机器学习算法在验证数据集上表现性能最佳的超参数。超参数与一般模型参数不同&#xff0c;超参数是在训练前提前设置的。举例来说…

南充一中计算机机房被盗,四川省CCF CSP-JS第一轮认证考试在南充一中成功举行...

10月11日&#xff0c;参加四川省青少年信息技术非专业级软件能力认证(CSP-JS)第一轮认证考试的来自遂宁市、南充市、达州市的220名参与认证的选手齐聚南充一中。软件能力认证(Certified Software Professional&#xff0c;简称CSP)&#xff0c;是由中国计算机学会举办&#xff…

java游戏猿人时代_猿人时代增值版_JAVA游戏免费版下载_7723手机游戏[www.7723.cn]

快速搜索机型:诺基亚 N70系列(176208)7610 3230 6600 6260 6620 6630 6670 6680 6681 6682 N70 N72 ;松下: X700 X800 ;联想: P930诺基亚 N73系列(240320)N73 5320 5320XM 5320di_XM 5630XM 5700 5700XM 5710XM 5730XM 6110 6110N 6120 6120C 6120ci 6121 6122C 6124C 6210S 62…

软件测试浏览器的上传功能,关于浏览器上传控件的识别 - asoqa的个人空间 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...

1&#xff1a;基本的上传控件(图1、图2)图1&#xff1a;MSN上传照片图2&#xff1a;ogame论坛上传图片这种基本的上传控件QTP脚本在处理时有两种方式&#xff1a;1.1 识别Windows选择框对象Dialog和WinListView&#xff0c;有点繁琐&#xff0c;但是能精确的定位用户操作。Brow…

串灯控制盒去掉怎么接_单双向可控硅好坏怎么判断

大功率可控硅好坏判断单向可控硅的工作原理&#xff1a; 可控硅导通条件&#xff1a;一是可控硅阳极与阴极间必须加正向电压&#xff0c;二是控制极也要加正向电压。以上两个条件 单向可控硅的工作原理图&#xff3b;1&#xff3d;必须同时具备&#xff0c;可控硅才会处于导通状…

江西小学计算机说课稿,2019江西教师招聘面试-小学数学-说课稿

教师招聘面试-小学数学-说课稿——《分数的基本性质》尊敬的各位考官大家好&#xff0c;我是今天的X号考生&#xff0c;今天我说课的题目是《分数的基本性质》新课标指出&#xff1a;数学课程要面向全体学生&#xff0c;适应学生个性发展的需要&#xff0c;使得人人都能获得良好…

oppo计算机的夜间模式,oppo夜间模式如何打开

手机型号&#xff1a;OPPO R9 1、打开手机&#xff0c;在手机桌面找到设置选项&#xff0c;点击进入。 2、在设置界面中&#xff0c;找到显示与亮度选项&#xff0c;点击进入。 3、在现实与亮度界面中&#xff0c;找到夜间护眼选项&#xff0c;点击进入。 4、在夜间护眼界面中&…

python异步框架twisted_Python学习八十七天:使用异步的twisted框架写入数据

1.twisted框架介绍Twisted是用Python实现的基于事件驱动的网络引擎框架&#xff1b;Twisted支持许多常见的传输及应用层协议&#xff0c;包括TCP、UDP、SSL/TLS、HTTP、IMAP、SSH、IRC以及FTP。就像Python一样&#xff0c;Twisted也具有“内置池”(batteries-included)的特点。…

无光驱如何修复W7计算机,Win7电脑没有光驱怎么装系统?

现在很多人买台式电脑不会再配置光驱了&#xff0c;可是这就让人有疑问了&#xff0c;如果没有光驱怎么装系统呢&#xff1f;其实方法很简单&#xff0c;我们可以用U盘&#xff0c;但是要想使用U盘必须先制作启动盘&#xff0c;如果你不懂怎么制作启动盘的话&#xff0c;那就赶…

python矩阵函数_NumPy 矩阵库函数

NumPy包含一个矩阵库NumPy.matlib&#xff0c;这个模块的函数用于处理矩阵而不是ndarray对象。NumPy中&#xff0c;ndarray数组可以是n维的&#xff0c;与此不同&#xff0c;矩阵总是二维的&#xff0c;但这两种对象可以相互转换。matlib.empty()empty()函数返回一个新的矩阵&a…

apache服务器工作原理,Apache服务器的原理简介

Apache是由模块组成的&#xff0c;除了内核模块以外&#xff0c;其他的模块都可以看作是Apache的一个补丁。http__core.c是最基本的&#xff0c;出足它惟一的内核模块&#xff0c;一个最小的Apache编译只包含这个模块&#xff0c;其他的动态模块是需要在配制文件中定义的二在Re…

安卓手机qq怎么看密友值_qq亲密关系分数值是什么在哪看 怎么查情侣值或闺蜜值方法...

qq亲密关系分为三种&#xff0c;有情侣关系、闺蜜关系和基友关系。而现在手机QQ8.1.5版本中有上线了情侣值和闺蜜值&#xff0c;而亲密关系值怎么看呢&#xff1f;一起来了解下。qq亲密关系分值什么前段时间亲密关系上线后&#xff0c;很多情侣之间或者是闺蜜、基友之间都绑定了…

cos大乱斗服务器维护,《COS大乱斗》服务器数据互通公告

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼各位亲爱的COSer&#xff1a;为了给大家提供更加优质的游戏环境&#xff0c;增加游戏乐趣&#xff0c;提高游戏互动性&#xff0c;我们将会在2016年11月7日对COS大乱斗混服【S4-261】区&#xff0c;APP【1-79】区&#xff0c;腾讯专…

verilog 给数组集体赋值_Verilog中如何对数组赋值(存储器memory详解)

http://blog.sina.com.cn/s/blog_9424755f0101rhrh.html存储器是一个寄存器数组。存储器使用如下方式说明&#xff1a;reg [ msb: 1sb] memory1 [ upper1: lower1],memory2 [upper2: lower2],. . . &#xff1b;例如&#xff1a;reg [0:3 ] MyMem [0:63]//MyMem为64个4位寄存器…

ajax排行页面,ajax简单页面

简单的注册页面运用ajax主页面无标题文档//首先引用jquery文件登录页面用户名&#xff1a;密码&#xff1a;$("#btn").click(function(){//1.取内容var uid $("#uid").val();var pwd $("#pwd").val();//2.拿内容去数据库验证$.ajax({url:"…

云函数查询_速览 | 京东云5月重要产品与功能更新

新增产品高可用组 正式发布产品概述&#xff1a;高可用组是京东云提供的云主机逻辑集合&#xff0c;高可用组内的云主机分散部署在相互隔离的物理资源上&#xff0c;当出现硬件故障或定时维护时只会影响部分云主机&#xff0c;客户业务仍为可用状态&#xff0c;本服务免费。流水…

服务器文件夹同步到手机,本机文件夹同步到云服务器

本机文件夹同步到云服务器 内容精选换一换华为云帮助中心&#xff0c;为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档&#xff0c;帮助您快速上手使用华为云服务。本节操作介绍本地MacOS系统主机通过安装“Microsoft Rem…

centos7恢复mysql数据库_mysql数据库恢复过程记录

月初某晚朋友说数据库误删了&#xff0c;没有备份能不能恢复&#xff0c;我一愣&#xff0c;突然想到之前我们遇到过的问题&#xff0c;便问他是否开启了binlog。show variables like log_bin; //查看命令如果现实log_bin是ON&#xff0c;就说明打开了。值得庆幸&#xff0c;他…

绝地求生6月28日服务器维护,绝地求生6月28日更新到几点 吃鸡6月28日更新内容一览...

绝地求生6月28日更新到几点? 绝地求生6月28日更新内容一览。下面跟着小编一起来看看吧!绝地求生6.28维护时间上午10点开始(预计3个小时)下午1点开服绝地求生6月28日维护内容介绍通行证: 萨诺调整了通行证系统的机制- 每日最多获取XP 限制 80 改为120- 完成任务最少游戏时间&am…