当前位置:首页 > 技术学院 > 热搜器件
[导读]简易版的多功能电子钟

一:作品描述:
电子时钟主要是利用电子技术将时钟电子化、数字化,拥有时钟精确、体积小、界面友好、可扩展性能强等特点,被广泛应用于生活和工作当中。
作品的设计主要为实现一款可正常显示时钟/日历、可手动调时间和日历、带有定时闹铃的多功能电子时钟。作品应用AT89C52芯片作为核心,显示部分使用字符液晶LCD1602显示屏进行显示时间,使用DS1302实时时钟日历芯片完成时钟/日历的基本功能。这种实现方法的优点是电路简单,性能可靠,实时性好,时间精度高,操作简单,编程容易。
本设计电子时钟主要功能为:
具有时间显示和手动校对功能,24小时制;
具有年、月、日显示和手动校对功能;
具有闹铃功能;
掉电后无需重新设置时间和日期。
二、制作进度:
小组的四个人都是大一的学生,都是单片机的新手,在时间很是紧张地情况下,我们是按着预先的计划一步一步走过来的。按照事先的设想,先做个简易版的电子钟,只是具有时间显示和手动校对功能(24小时制)和具有年、月、日显示和手动校对功能,这样可以增强信心,为后来加入更多功能做好基础。后再在这个基础上加上闹钟的功能,有时间的话,我们组的还会加上温度检测等功能。

三:已经运用到的代码:
把程序分成每个模块,每个模块再进行一一调试,面对错误就上网找相关的资料和师兄解决问题。
1.程序流程框图:
             
2.源代码是:
#include <REG51.H>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit  DS1302_CLK = P1^7;              //实时时钟时钟线引脚
sbit  DS1302_IO  = P1^6;              //实时时钟数据线引脚
sbit  DS1302_RST = P1^5;              //实时时钟复位线引脚
sbit  ACC0 = ACC^0;
sbit  ACC7 = ACC^7;
char hide_sec,hide_min,hide_hour,hide_day,hide_week,hide_month,hide_year; //秒,分,时到日,月,年位闪的计数
sbit Set = P2^0;       //模式切换键
sbit Up = P2^1;        //加法按钮
sbit Down = P2^2;      //减法按钮
sbit out = P2^3;       //立刻跳出调整模式按钮
char done,count,temp,flag,up_flag,down_flag;
uchar TempBuffer[5],week_value[2];
void show_time();   //液晶显示程序
sbit LcdRs = P2^5;
sbit LcdRw = P2^6;
sbit LcdEn   = P2^7;
sfr  DBPort = 0x80; //P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口
//内部等待函数
unsigned char LCD_Wait(void)
{
LcdRs=0;LcdRw=1;
_nop_();LcdEn=1;
_nop_();
LcdEn=0;return DBPort;
}
//向LCD写入命令或数据
#define LCD_COMMAND 0      // Command
#define LCD_DATA 1      // Data
#define LCD_CLEAR_SCREEN 0x01      // 清屏
#define LCD_HOMING   0x02      // 光标返回原点
void LCD_Write(bit style, unsigned char input)
{
LcdEn=0;LcdRs=style;
LcdRw=0;
_nop_();DBPort=input;
_nop_();//注意顺序
LcdEn=1;
_nop_();//注意顺序
LcdEn=0;
_nop_();LCD_Wait();
}
//设置显示模式************************************************************
#define LCD_SHOW 0x04    //显示开
#define LCD_HIDE 0x00    //显示关 
#define LCD_CURSOR 0x02 //显示光标
#define LCD_NO_CURSOR 0x00    //无光标    
#define LCD_FLASH 0x01    //光标闪动
#define LCD_NO_FLASH 0x00    //光标不闪动
void LCD_SetDisplay(unsigned char DisplayMode)
{
LCD_Write(LCD_COMMAND, 0x08|DisplayMode);
}
//设置输入模式************************************************************
#define LCD_AC_UP 0x02
#define LCD_AC_DOWN 0x00      // default
#define LCD_MOVE 0x01      // 画面可平移
#define LCD_NO_MOVE 0x00      //default
void LCD_SetInput(unsigned char InputMode)
{
LCD_Write(LCD_COMMAND, 0x04|InputMode);
}
//初始化LCD************************************************************
void LCD_Initial()
{
LcdEn=0;
LCD_Write(LCD_COMMAND,0x38);           //8位数据端口,2行显示,5*7点阵
LCD_Write(LCD_COMMAND,0x38);
LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);    //开启显示, 无光标
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);   //清屏
LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);      //AC递增, 画面不动
}
//液晶字符输入的位置************************
void GotoXY(unsigned char x, unsigned char y)
{
if(y==0)
LCD_Write(LCD_COMMAND,0x80|x);
if(y==1)
LCD_Write(LCD_COMMAND,0x80|(x-0x40));
}
//将字符输出到液晶显示
void Print(unsigned char *str)
{
while(*str!='\0')
{
LCD_Write(LCD_DATA,*str);
str++;
}
}
typedef struct __SYSTEMTIME__
{
unsigned char Second;
unsigned char Minute;
unsigned char Hour;
unsigned char Week;
unsigned char Day;
unsigned char Month;
unsigned char  Year;
unsigned char DateString[11];
unsigned char TimeString[9];
}SYSTEMTIME; //定义的时间类型
SYSTEMTIME CurrentTime;
#define AM(X) X
#define PM(X) (X+12)              // 转成24小时制
#define DS1302_SECOND 0x80          //时钟芯片的寄存器位置,存放时间
#define DS1302_MINUTE 0x82
#define DS1302_HOUR 0x84
#define DS1302_WEEK 0x8A
#define DS1302_DAY 0x86
#define DS1302_MONTH 0x88
#define DS1302_YEAR 0x8C
void DS1302InputByte(unsigned char d) //实时时钟写入一字节(内部函数)
{
unsigned char i;
ACC = d;
for(i=8; i>0; i--)
    {
DS1302_IO = ACC0;           //相当于汇编中的 RRC
        DS1302_CLK = 1;
DS1302_CLK = 0;
ACC = ACC >> 1;
}
}
unsigned char DS1302OutputByte(void) //实时时钟读取一字节(内部函数)

unsigned char i;
for(i=8; i>0; i--)
    {
ACC = ACC >>1;         //相当于汇编中的 RRC
        ACC7 = DS1302_IO;
DS1302_CLK = 1;
DS1302_CLK = 0;
}
    return(ACC);
}
void Write1302(unsigned char ucAddr, unsigned char ucDa) //ucAddr: DS1302地址, ucData: 要写的数据
{
DS1302_RST = 0;
    DS1302_CLK = 0;
    DS1302_RST = 1;
    DS1302InputByte(ucAddr);       // 地址,命令
    DS1302InputByte(ucDa);       // 写1Byte数据
    DS1302_CLK = 1;
    DS1302_RST = 0;
}
unsigned char Read1302(unsigned char ucAddr) //读取DS1302某地址的数据
{
unsigned char ucData;
    DS1302_RST = 0;
    DS1302_CLK = 0;
    DS1302_RST = 1;
    DS1302InputByte(ucAddr|0x01);        // 地址,命令
    ucData = DS1302OutputByte();         // 读1Byte数据
    DS1302_CLK = 1;
    DS1302_RST = 0;
    return(ucData);
}
void DS1302_GetTime(SYSTEMTIME *Time)  //获取时钟芯片的时钟数据到自定义的结构型数组
{
unsigned char ReadValue;
ReadValue = Read1302(DS1302_SECOND);
Time->Second = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
ReadValue = Read1302(DS1302_MINUTE);
Time->Minute = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
ReadValue = Read1302(DS1302_HOUR);
Time->Hour = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
ReadValue = Read1302(DS1302_DAY);
Time->Day = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
ReadValue = Read1302(DS1302_WEEK);
Time->Week = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
ReadValue = Read1302(DS1302_MONTH);
Time->Month = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);
ReadValue = Read1302(DS1302_YEAR);
Time->Year = ((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F); }
void DateToStr(SYSTEMTIME *Time)    //将时间年,月,日,星期数据转换成液晶显示字符串,放到数组里DateString[]
{  
if(hide_year<2)                 //这里的if,else语句都是判断位闪烁,<2显示数据,>2就不显示,输出字符串为 2007/07/22
    {  
Time->DateString[0] = '2';
Time->DateString[1] = '0'; 
   Time->DateString[2] = Time->Year/10 + '0';
   Time->DateString[3] = Time->Year + '0';
}
else

Time->DateString[0] = ' '; Time->DateString[1] = ' '; 
   Time->DateString[2] = ' '; Time->DateString[3] = ' ';
}
Time->DateString[4] = '/';
if(hide_month<2)
{
Time->DateString[5] = Time->Month/10 + '0';
   Time->DateString[6] = Time->Month + '0';
}
else
{
Time->DateString[5] = ' ';
        Time->DateString[6] = ' ';
}
Time->DateString[7] = '/';
if(hide_day<2)
{
Time->DateString[8] = Time->Day/10 + '0';
   Time->DateString[9] = Time->Day + '0';
}
else
{
Time->DateString[8] = ' ';
Time->DateString[9] = ' ';   
}
if(hide_week<2)
{
week_value[0] = Time->Week + '0'; //星期的数据另外放到 week_value[]数组里,跟年,月,日的分开存放,因为等一下要在最后显示
}
else
{
week_value[0] = ' ';
}
week_value[1] = '\0';
Time->DateString[10] = '\0'; //字符串末尾加 '\0' ,判断结束字符
}
void TimeToStr(SYSTEMTIME *Time)  //将时,分,秒数据转换成液晶显示字符放到数组 TimeString[];
{
if(hide_hour<2)
    {
Time->TimeString[0] = Time->Hour/10 + '0';
  Time->TimeString[1] = Time->Hour + '0';
}
else
{
Time->TimeString[0] = ' ';
Time->TimeString[1] = ' ';
}
Time->TimeString[2] = ':';
if(hide_min<2)
{
Time->TimeString[3] = Time->Minute/10 + '0';
  Time->TimeString[4] = Time->Minute + '0';
}
else
{
Time->TimeString[3] = ' ';
Time->TimeString[4] = ' ';
}
Time->TimeString[5] = ':';
    if(hide_sec<2)
    {
Time->TimeString[6] = Time->Second/10 + '0';
  Time->TimeString[7] = Time->Second + '0';
}
    else
{
Time->TimeString[6] = ' ';
Time->TimeString[7] = ' ';
}
Time->DateString[8] = '\0';
}
void Initial_DS1302(void)   //时钟芯片初始化
{  
unsigned char Second=Read1302(DS1302_SECOND);
if(Second&0x80)      //判断时钟芯片是否关闭 
    {
Write1302(0x8e,0x00); //写入允许
Write1302(0x8c,0x07); //以下写入初始化时间 日期:07/07/25.星期: 3. 时间: 23:59:55
Write1302(0x88,0x07);Write1302(0x86,0x25);
Write1302(0x8a,0x07);Write1302(0x84,0x23);Write1302(0x82,0x59);
Write1302(0x80,0x55);Write1302(0x8e,0x80);    //禁止写入
}
}
void Delay1ms(unsigned int count)
{
unsigned int i,j;
for(i=0;i<count;i++)
for(j=0;j<120;j++);
}
void mdelay(uint delay)
{
uint i;
for(;delay>0;delay--)
{
for(i=0;i<62;i++) //1ms延时.
{;}
}
}
void outkey()                    //跳出调整模式,返回默认显示
{
uchar Second;
if(out==0)       
{
mdelay(8);
count=0;
hide_sec=0,hide_min=0,hide_hour=0,hide_day=0,hide_week=0,hide_month=0,hide_year=0;
Second=Read1302(DS1302_SECOND);
    Write1302(0x8e,0x00); //写入允许
Write1302(0x80,Second&0x7f);
Write1302(0x8E,0x80);          //禁止写入
done=0;          
while(out==0);
}
}
///////////////////////////////////////////////////////////////////////////////
void Upkey()//升序按键
{  
Up=1;
if(Up==0)
{
mdelay(8);
switch(count)
{
case 1:
temp=Read1302(DS1302_SECOND);  //读取秒数
  temp=temp+1;  //秒数加1
up_flag=1;    //数据调整后更新标志
  if((temp&0x7f)>0x59)   //超过59秒,清零
  temp=0;  
break;
  case 2:
temp=Read1302(DS1302_MINUTE);  //读取分数
  temp=temp+1;  //分数加1
up_flag=1;
if(temp>0x59)          //超过59分,清零
temp=0;
break;
case 3:
  temp=Read1302(DS1302_HOUR);  //读取小时数
temp=temp+1;  //小时数加1
up_flag=1;
if(temp>0x23)   //超过23小时,清零
  temp=0;
break;
            case 4:
                temp=Read1302(DS1302_WEEK);  //读取星期数
temp=temp+1;  //星期数加1
                up_flag=1;
if(temp>0x7) 
temp=1;
break;
case 5:
                temp=Read1302(DS1302_DAY);  //读取日数
temp=temp+1;  //日数加1
                up_flag=1;
if(temp>0x31)
temp=1;
break;
case 6:
                temp=Read1302(DS1302_MONTH);  //读取月数
temp=temp+1;  //月数加1
                up_flag=1;
if(temp>0x12)
temp=1;
break;
case 7:
                temp=Read1302(DS1302_YEAR);  //读取年数
temp=temp+1;  //年数加1
                up_flag=1;
if(temp>0x85)
temp=0;
break;
default:
break;
}
while(Up==0);
}
}
///////////////////////////////////////////////////////////////////////////////
void Downkey()//降序按键
{   
Down=1;
if(Down==0)
{
mdelay(8);
switch(count)
{
case 1:
            temp=Read1302(DS1302_SECOND);  //读取秒数
temp=temp-1;  //秒数减1
                down_flag=1;       //数据调整后更新标志
if(temp==0x7f)     //小于0秒,返回59秒
temp=0x59;
break;
case 2:
                temp=Read1302(DS1302_MINUTE);  //读取分数
temp=temp-1;  //分数减1
                down_flag=1;
if(temp==-1)
temp=0x59;      //小于0秒,返回59秒
break;
case 3:
                temp=Read1302(DS1302_HOUR);  //读取小时数
temp=temp-1;  //小时数减1
                down_flag=1;
if(temp==-1)
temp=0x23;
break;
case 4:
                temp=Read1302(DS1302_WEEK);  //读取星期数
temp=temp-1;  //星期数减1
                down_flag=1;
if(temp==0)
temp=0x7;;
break;
case 5:
                temp=Read1302(DS1302_DAY);  //读取日数
temp=temp-1;  //日数减1
                down_flag=1;
if(temp==0)
temp=31;
break;
case 6:
                temp=Read1302(DS1302_MONTH);  //读取月数
temp=temp-1;  //月数减1
                down_flag=1;
if(temp==0)
temp=12;
break;
case 7:
                temp=Read1302(DS1302_YEAR);  //读取年数
temp=temp-1;  //年数减1
                down_flag=1;
if(temp==-1)
temp=0x85;
break;
default:
break;
}
while(Down==0);
}
}
void Setkey()//模式选择按键
{
Set=1;
if(Set==0)
{
mdelay(8);
count=count+1; //Setkey按一次,count就加1
done=1; //进入调整模式
        while(Set==0);   
}
}
void keydone()//按键功能执行
{       
uchar Second;
if(flag==0)    //关闭时钟,停止计时
    {
Write1302(0x8e,0x00); //写入允许
        temp=Read1302(0x80);
        Write1302(0x80,temp|0x80);
   Write1302(0x8e,0x80); //禁止写入
        flag=1;
}
    Setkey();            //扫描模式切换按键
switch(count)
{
case 1:
do        //count=1,调整秒
{
outkey();   //扫描跳出按钮
Upkey();                //扫描加按钮
Downkey();              //扫描减按钮
if(up_flag==1||down_flag==1)  //数据更新,重新写入新的数据
{
Write1302(0x8e,0x00); //写入允许
   Write1302(0x80,temp|0x80); //写入新的秒数
  Write1302(0x8e,0x80); //禁止写入
   up_flag=0;
   down_flag=0;
}
  hide_sec++;          //位闪计数
if(hide_sec>3)
hide_sec=0;
                show_time();         //液晶显示数据
}while(count==2);
break; 
case 2:
  do        //count=2,调整分
   {
hide_sec=0;
outkey();
Upkey();
Downkey();
if(temp>0x60)
   temp=0;
if(up_flag==1||down_flag==1)
{
Write1302(0x8e,0x00); //写入允许
   Write1302(0x82,temp); //写入新的分数
  Write1302(0x8e,0x80); //禁止写入
  up_flag=0;
  down_flag=0;
}
hide_min++;
if(hide_min>3)
    hide_min=0;
                show_time();
}while(count==3);
break;
case 3:
  do        //count=3,调整小时
   {
hide_min=0;
outkey();
Upkey();
Downkey();
if(up_flag==1||down_flag==1)
{
Write1302(0x8e,0x00); //写入允许
  Write1302(0x84,temp); //写入新的小时数
  Write1302(0x8e,0x80); //禁止写入
  up_flag=0;
  down_flag=0;
}
hide_hour++;
if(hide_hour>3)
    hide_hour=0;
                show_time();
}while(count==4);
break;
case 4:
  do        //count=4,调整星期
   {
hide_hour=0;
outkey();
Upkey();
Downkey();
if(up_flag==1||down_flag==1)
{
Write1302(0x8e,0x00); //写入允许
  Write1302(0x8a,temp); //写入新的星期数
  Write1302(0x8e,0x80); //禁止写入
  up_flag=0;
  down_flag=0;
}
hide_week++;
if(hide_week>3)
   hide_week=0;
                show_time();
}while(count==5);
break;
case 5:
do        //count=5,调整日
   {
hide_week=0;
outkey();
Upkey();
Downkey();
if(up_flag==1||down_flag==1)
{
Write1302(0x8e,0x00); //写入允许
Write1302(0x86,temp); //写入新的日数
  Write1302(0x8e,0x80); //禁止写入
  up_flag=0;
  down_flag=0;
}
hide_day++;
if(hide_day>3)
    hide_day=0;
                show_time();
}while(count==6);
break;
case 6:
do        //count=6,调整月
   {
hide_day=0;
outkey();
Upkey();
Downkey();
if(up_flag==1||down_flag==1)
{
Write1302(0x8e,0x00); //写入允许
  Write1302(0x88,temp); //写入新的月数
  Write1302(0x8e,0x80); //禁止写入
  up_flag=0;
  down_flag=0;
}
hide_month++;
if(hide_month>3)
    hide_month=0;
                show_time();
}while(count==7);
break;
case 7:
do        //count=7,调整年
   {
hide_month=0;
outkey();
Upkey();
Downkey();
if(up_flag==1||down_flag==1)
{
Write1302(0x8e,0x00); //写入允许
  Write1302(0x8c,temp); //写入新的年数
  Write1302(0x8e,0x80); //禁止写入
  up_flag=0;
   down_flag=0;
}
hide_year++;
if(hide_year>3)
  hide_year=0;
                show_time();
}while(count==8);
break;
case 8:
count=0;hide_year=0;  //count8, 跳出调整模式,返回默认显示状态
       Second=Read1302(DS1302_SECOND);
            Write1302(0x8e,0x00); //写入允许
       Write1302(0x80,Second&0x7f);
       Write1302(0x8E,0x80);          //禁止写入
done=0;
  break; //count=7,开启中断,标志位置0并退出
default:
break;
}
}
void show_time()   //液晶显示程序
{
DS1302_GetTime(&CurrentTime);  //获取时钟芯片的时间数据
  TimeToStr(&CurrentTime);       //时间数据转换液晶字符
  DateToStr(&CurrentTime);       //日期数据转换液晶字符
  GotoXY(0,1);
  Print(CurrentTime.TimeString); //显示时间
  GotoXY(0,0);
  Print(CurrentTime.DateString); //显示日期
  GotoXY(15,0);
  Print(week_value);             //显示星期
  GotoXY(11,0);
  Print("Week"); //在液晶上显示 字母 week
  Delay1ms(400);        //扫描延时        
}
//主函数********************************************************
void  main()
{
flag=1;           //时钟停止标志
LCD_Initial();    //液晶初始化
Initial_DS1302(); //时钟芯片初始化
up_flag=0;
down_flag=0;
done=0;           //进入默认液晶显示
while(1)
{  
while(done==1)
keydone();    //进入调整模式
while(done==0)
     { 
    show_time();                //液晶显示数据
            flag=0;                 
Setkey(); //扫描各功能键
  }
}
}

四:制作过程的问题:
1.做成作品的成品遇到主要的焊接的问题:电子万年历的电路系统较大,对于焊接方面更是不可轻视,庞大的电路系统中只要出于一处的错误,则会对检测造成很大的不便,而且电路的交线较多,对于各种锋利的引脚要注意处理,否则会刺被带有包皮的导线,则会对电路造成短路现象。
  解决的方法就是:焊接的时候非常细心,不可马虎,一块一块按照步骤来,尽量避免线路相交。

2.对万年历修改时间或日期时,有时LCD液晶显示屏被屏蔽掉,造成不亮现象。
  解决的方法就是:根据测试,发现是电路的驱动能力不足,最后在DS1302时钟芯片的CS、SCLK、RET端接入电阻后,电路的驱动能力才能满足,即可解决不亮现象。

3.电子万年历是多功能的数字型,可以看当前日期,时间。电子万年历功能很多,所以对于它的程序也较为复杂,所以在编写程序和调试时出现了相对较多的错误和问题。
  解决的方法就是:最后经过多次的模块子程序的修改,一步一步的完成,最终解决了软件。

4.还有一个比较严重的问题就是发现烧入程序后,LCD液晶显示屏显示亮度不好。
  解决的方法就是:不断调整电阻的阻值,一遍观看LCD显示屏,直到看到合适的亮度为止。

五:制作体会:
制作这个多功能电子钟一切都是从零开始,从最简单的画流程图起步,到最后在中期评审前出来一个简易版电子钟。克服了很多困难,也品尝到了单片机学习的酸甜苦辣。
在整个制作过程中,我们组四个人学到了许多之前没学到的知识。也锻炼了我们四个动手操作能力。在程序编写过程中,由于思路不清晰,开始时遇到了很多的问题,但经过认真思考和参照书本,实在不懂的就寻求帮助和上网找答案。
艰苦的学习让我们明白了一个道理,知识i很是重要,但是只有实践了才知道知识的独特的魅力。
我们四个人合理分工也是我们的效率如此高的原因之一,会软件的主要去负责编程方面的突破,会硬件好一点的尽量多熟悉硬件,最后实现了我们的小组中期目标,也建立我们之间的深厚的友谊。

六:附录:
1.简易版多功能电子钟的系统电路图:

2.简易版多功能电子钟的Proteus ISIS的工作界面:

3.简易版多功能电子钟的实物照片:

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭