三星2017跟2017+区别

三星2017跟2017+区别,第1张

一、配置不同

1、三星2017:号Veyron,延续翻盖式双屏设计,配备42英寸Super AMOLED屏幕,分辨率达到720p级别,搭载高通骁龙820处理器,前置500万+1200万像素后置摄像头。

2、三星2017+:调整为2018,骁龙821处理器、4GB内存、64GB存储、1200万像素后置和500万像素前置摄像头、2300mAh电池、双卡双待、NFC。

二、机身不同

1、三星2017:三星W2017采用内外双屏以及保留T9物理按键的设计,因此其机身比较厚,达到了158mm。

2、三星2017+:机身背部加入了指纹识别。手机转轴部分采用锌合金一体成型双轴铰链,导航键部分采用星芒纹饰设计,并经过126道激光雕刻。

三、内外屏不同

1、三星2017:内外屏采用的都是42英寸1080P分辨率的Super AMOLED屏幕,而前置摄像头和听筒均设置在内屏的顶部。

2、三星2017+:内外配备两块42英寸1080P屏幕。其中,外触屏和背板均采用康宁第五代大猩猩玻璃。

-三星W2017

-心系天下三星W2018

我以前倒是做过,不过程序还有点问题,调时间的时候容易过界,但正常走时候就正常了。开发环境用的IAR,单片机用f149,显示用的1602的四线模式。

你自己看着改程序吧,其实我也是51上移植过去的。

悲剧了,帖不下了我帖在我博客里了啊,自己去找吧

主程序

__________________________分隔线____________________________________

#include <msp430x14xh>

#include "ds1302h"

#include "LCD1602x4_mpsh"

#define DS1302_SECOND 0x81 //时钟芯片的寄存器位置,存放时间

#define DS1302_MINUTE 0x83

#define DS1302_HOUR 0x85

#define DS1302_WEEK 0x8b

#define DS1302_DAY 0x87

#define DS1302_MONTH 0x89

#define DS1302_YEAR 0x8d

unsigned char DateString[11],TimeString[9],week_value[2],TempBuffer[7]; //

char hide_sec,hide_min,hide_hour,hide_day,hide_week,hide_month,hide_year;

char done,count,temp,flag,up_flag,down_flag;

//unsigned int temp_value=0,temp_max=0;temp_min=0; //温度值

void DateToStr(void) //将时间年,月,日,星期数据转换成液晶显示字符串,放到数组里DateString[]

{ unsigned char Year,Month,Day,Week;

Year=rtc_getyear();

Month=rtc_getmon();

Day=rtc_getdate();

Week=rtc_getday();

if(hide_year<2) //这里的if,else语句都是判断位闪烁,<2显示数据,>2就不显示,输出字符串为 2007/07/22

{

DateString[0] = '2';

DateString[1] = '0';

DateString[2] = Year/10 + '0';

DateString[3] = Year%10 + '0';

}

else

{

DateString[0] = ' ';

DateString[1] = ' ';

DateString[2] = ' ';

DateString[3] = ' ';

}

DateString[4] = '/';

if(hide_month<2)

{

DateString[5] = Month/10 + '0';

DateString[6] = Month%10 + '0';

}

else

{

DateString[5] = ' ';

DateString[6] = ' ';

}

DateString[7] = '/';

if(hide_day<2)

{

DateString[8] = Day/10 + '0';

DateString[9] = Day%10 + '0';

}

else

{

DateString[8] = ' ';

DateString[9] = ' ';

}

if(hide_week<2)

{

week_value[0] = Week%10 + '0'; //星期的数据另外放到 week_value[]数组里,跟年,月,日的分开存放,因为等一下要在最后显示

}

else

{

week_value[0] = ' ';

}

week_value[1] = '\0';

DateString[10] = '\0'; //字符串末尾加 '\0' ,判断结束字符

}

void TimeToStr(void) //将时,分,秒数据转换成液晶显示字符放到数组 TimeString[];

{ unsigned char Hour,Minute,Second;

Hour=rtc_gethour();

Minute=rtc_getmin();

Second=rtc_getsec();

if(hide_hour<2)

{

TimeString[0] = Hour/10 + '0';

TimeString[1] = Hour%10 + '0';

}

else

{

TimeString[0] = ' ';

TimeString[1] = ' ';

}

TimeString[2] = ':';

if(hide_min<2)

{

TimeString[3] = Minute/10 + '0';

TimeString[4] = Minute%10 + '0';

}

else

{

TimeString[3] = ' ';

TimeString[4] = ' ';

}

TimeString[5] = ':';

if(hide_sec<2)

{

TimeString[6] = Second/10 + '0';

TimeString[7] = Second%10 + '0';

}

else

{

TimeString[6] = ' ';

TimeString[7] = ' ';

}

DateString[8] = '\0';

}

void show_time() //液晶显示程序

{

TimeToStr(); //时间数据转换液晶字符

DateToStr(); //日期数据转换液晶字符

// ReadTemp(); //开启温度采集程序

// temp_to_str(); //温度数据转换成液晶字符

LCD_PutStr(TempBuffer,25); //显示温度

LCD_PutStr(DateString,0); //显示日期

LCD_PutStr(week_value,15); //显示星期

LCD_PutStr(" Week",10); //在液晶上显示 字母 week

LCD_PutStr(TimeString,16); //显示时间

}

////////////////////////////////////////////////////////////////////////////

void outkey() //跳出调整模式,返回默认显示

{ unsigned char Second;

if (!(P1IN&BIT0))

{

count=0;

hide_sec=0,hide_min=0,hide_hour=0,hide_day=0,hide_week=0,hide_month=0,hide_year=0;

Second=dataread(DS1302_SECOND);

datawrite(0x8e,0x00); //写入允许

datawrite(0x80,Second&0x7f);

datawrite(0x8E,0x80); //禁止写入

done=0;//temp_max=0;sund=1;

while(!(P1IN&BIT0));

delay_nms(2);

}

}

////////////////////////////////////////////////////////////////////////////////////////////////////////////

void Upkey()//升序按键

{

if(!(P1IN&BIT1))

{

switch(count)

{case 1:

temp=dataread(DS1302_SECOND); //读取秒数

temp=temp+1; //秒数加1

up_flag=1; //数据调整后更新标志

if((temp&0x7f)>0x59) //超过59秒,清零

temp=0;

break;

case 2:

temp=dataread(DS1302_MINUTE); //读取分数

temp=temp+1; //分数加1

up_flag=1;

if(temp>0x59) //超过59分,清零

temp=0;

break;

case 3:

temp=dataread(DS1302_HOUR); //读取小时数

temp=temp+1; //小时数加1

up_flag=1;

if(temp>0x23) //超过23小时,清零

temp=0;

break;

case 4:

temp=dataread(DS1302_WEEK); //读取星期数

temp=temp+1; //星期数加1

up_flag=1;

if(temp>0x7)

temp=1;

break;

case 5:

temp=dataread(DS1302_DAY); //读取日数

temp=temp+1; //日数加1

up_flag=1;

if(temp>0x31)

temp=1;

break;

case 6:

temp=dataread(DS1302_MONTH); //读取月数

temp=temp+1; //月数加1

up_flag=1;

if(temp>0x12)

temp=1;

break;

case 7:

temp=dataread(DS1302_YEAR); //读取年数

temp=temp+1; //年数加1

up_flag=1;

if(temp>0x99)

temp=0;

break;

default:break;

}

while(!(P1IN&BIT1));

delay_nms(2);

}

}

////////////////////////////////////////////////////////////////////////////////////////////////////////////

void Downkey()//降序按键

{

if(!(P1IN&BIT2))

{

switch(count)

{case 1:

temp=dataread(DS1302_SECOND); //读取秒数

temp=temp-1; //秒数减1

down_flag=1; //数据调整后更新标志

if((temp&0x7f)>0x59) //小于0秒,返回59秒

temp=0x59;

break;

case 2:

temp=dataread(DS1302_MINUTE); //读取分数

temp=temp-1; //分数减1

down_flag=1;

if(temp>0x59)

temp=0x59; //小于0秒,返回59秒

break;

case 3:

temp=dataread(DS1302_HOUR); //读取小时数

temp=temp-1; //小时数减1

down_flag=1;

if(temp==0x00)

temp=0x23;

break;

case 4:

temp=dataread(DS1302_WEEK); //读取星期数

temp=temp-1; //星期数减1

down_flag=1;

if(temp==0x00)

temp=0x07;

break;

case 5:

temp=dataread(DS1302_DAY); //读取日数

temp=temp-1; //日数减1

down_flag=1;

if(temp==0x00)

temp=0x31;

break;

case 6:

temp=dataread(DS1302_MONTH); //读取月数

temp=temp-1; //月数减1

down_flag=1;

if(temp==0x00)

temp=0x12;

break;

case 7:

temp=dataread(DS1302_YEAR); //读取年数

temp=temp-1; //年数减1

down_flag=1;

if(temp>0x99)

temp=0x99;

break;

default:break;

}

while(!(P1IN&BIT2));

delay_nms(2);

}

}

void Setkey()//模式选择按键

{

if(!(P1IN&BIT3))

{

count=count+1; //Setkey按一次,count就加1

done=1; //进入调整模式

while(!(P1IN&BIT3));

delay_nms(2);

}

}

void keydone()//按键功能执行

{ unsigned char Second;

if(flag==0) //关闭时钟,停止计时

{ datawrite(0x8e,0x00); //写入允许

temp=dataread(DS1302_SECOND);

datawrite(0x80,temp|0x80);

datawrite(0x8e,0x80); //禁止写入

flag=1;

}

Setkey(); //扫描模式切换按键

switch(count)

{

case 1:do //count=2,调整秒

{

outkey(); //扫描跳出按钮

Upkey(); //扫描加按钮

Downkey(); //扫描减按钮

if(up_flag==1||down_flag==1) //数据更新,重新写入新的数据

{

datawrite(0x8e,0x00); //写入允许

datawrite(0x80,temp|0x80); //写入新的秒数

datawrite(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=3,调整分

{

hide_sec=0;

outkey();

Upkey();

Downkey();

if(temp>0x60)

temp=0;

if(up_flag==1||down_flag==1)

{

datawrite(0x8e,0x00); //写入允许

datawrite(0x82,temp); //写入新的分数

datawrite(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=4,调整小时

{

hide_min=0;

outkey();

Upkey();

Downkey();

if(up_flag==1||down_flag==1)

{

datawrite(0x8e,0x00); //写入允许

datawrite(0x84,temp); //写入新的小时数

datawrite(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=5,调整星期

{

hide_hour=0;

outkey();

Upkey();

Downkey();

if(up_flag==1||down_flag==1)

{

datawrite(0x8e,0x00); //写入允许

datawrite(0x8a,temp); //写入新的星期数

datawrite(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=6,调整日

{

hide_week=0;

outkey();

Upkey();

Downkey();

if(up_flag==1||down_flag==1)

{

datawrite(0x8e,0x00); //写入允许

datawrite(0x86,temp); //写入新的日数

datawrite(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=7,调整月

{

hide_day=0;

outkey();

Upkey();

Downkey();

if(up_flag==1||down_flag==1)

{

datawrite(0x8e,0x00); //写入允许

datawrite(0x88,temp); //写入新的月数

datawrite(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=8,调整年

{

hide_month=0;

outkey();

Upkey();

Downkey();

if(up_flag==1||down_flag==1)

{

datawrite(0x8e,0x00); //写入允许

datawrite(0x8c,temp); //写入新的年数

datawrite(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=dataread(0x80);

datawrite(0x8e,0x00); //写入允许

datawrite(0x80,Second&0x7f);

datawrite(0x8E,0x80); //禁止写入

done=0; //temp_max=0;sund=1;

break; //count=7,开启中断,标志位置0并退出

default:break;

}

}

////////////////////////////////////////////////////////////////////////////

void rtcinit ()

{

rtc_wp(0);

rtc_stop(0);

rtc_charger(1,1);

}

void sysinit ()

{ WDTCTL = WDTPW + WDTHOLD; //关闭看门狗

P4OUT = 0xff;

P4DIR = 0xff;

P5OUT = 0x0f;

P5DIR = 0xf0;

P6OUT = 0xfc;

P6DIR = 0xfc;

}

void main ()

{ unsigned char temp;

sysinit ();

rtcinit ();

LCD_init(); //液晶初始化

_EINT();

while (1)

{

while(done==1)

keydone(); //进入调整模式

while(done==0)

{

temp=rtc_getsec();

delay_nms(10);

if(temp!=rtc_getsec())

show_time(); //液晶显示数据

flag=0;

Setkey(); //扫描各功能键

}

}

}

定时器虽然大家在平时生活中都有听说过,但是可能不是经常接触,所以对其的了解不是很多,所以今天为了大家更好的认识定时器,就跟大家说说定时器怎么设置时间以及定时器的使用注意事项,一起来看看。

定时器虽然大家在平时生活中都有听说过,但是可能不是经常接触,所以对其的了解不是很多,所以今天为了大家更好的认识定时器,就跟大家说说定时器怎么设置时间以及定时器的使用注意事项,一起来看看。

一、定时器怎么设置时间

1、电子定时器的当前时间调整方式简单,需要通过组合按键的方式进行操作(注意:默认状态下星期、钟头、分3个按键是屏蔽的,单独按下之后是没有任何反应的,需要先按下时钟键,再按星期、钟头、分中的任意键,这也是一种防止不小心误操作的方式,所以对3个按键采取了屏蔽)。

2、调整星期:先按下时钟键,再按下星期键,调整到当前星期值。(每按1次增加1天,长按可快速调整。)

3、调整钟头:先按下时钟键,再按下钟头键,调整到当前钟头值。(每按1次增加1钟头,长按可快速调整。)

4、调整分:先按下时钟键,再按下分键,调整到当前分值。(每按1次增加1分,长按可快速调整。)

5、调整夏令时:定时器自带有夏令时功能可以选用,默认情况下不开启。操作方法:按住时钟键3秒钟,当前时间增加1钟头,液晶屏显示“夏令时”字样,进入夏令时功能;再按时钟键3秒钟,当前时间减少1钟头,液晶屏取消显示“夏令时”字样,退出夏令时功能。

二、定时器的使用注意事项

在FC里使用像T0、T1这样的定时器,如果多次调用就有问题了,一个定时器不能同时用于两台设备!解决的方法是在FC中创建一个参数类型为Timer(定时器)的输入参数,在调用时为该参数指定不同的实参,例如设备A的实参为T0、设备B的实参为T1等等。

西门子结构化编程的精髓和相对其他PLC(包括S7-200)的就在于FB、FC的可移植性和可重用性。其基本规则是在FB、FC内部不使用任何全局变量,全部使用局部变量。这样的FB、FC的内部程序不作任何修改,就可以在同一项目中多次调用,或者将它们移植到其他项目中去。FC、FB众多的参数类型能实现这一要求。编程人员在工作中积累了大量的这样的FC、FB后,就可以像搭积木一样迅速地创建出满足不同客户要求的类似系统的程序。

作为编程人员应该养成不在FB、FC内部使用全局变量的习惯!

好了,关于定时器怎么设置时间以及定时器的使用注意事项的全部知识就跟大家介绍到这里了,希望以上的文章可以帮助到大家,大家在选购的时候,不要只看价格哦,要注意质量,如果还想了解相关的知识,可以继续关注我们的网站哦。

欢迎分享,转载请注明来源:品搜搜测评网

原文地址:https://pinsoso.cn/shuma/1372363.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-09-18
下一篇2023-09-18

随机推荐

  • 妮维雅630可以和祛绉提拉紧致的一起用吗

    可以一起使用。妮维雅630是一款保湿滋润的面霜,而祛绉提拉紧致产品则是一种抗衰老的紧致霜。两者成分不冲突,可以同时使用。但需要注意的是,使用时应按照产品说明书的指导进行,避免过度使用或者混合使用其他化妆品,以免对皮肤造成不必要的刺激和负担。

    2024-04-15
    50300
  • 痘痘还在长~~脸上坑坑洼洼的已成月球~~可怜可怜我

    我也经历过你这样的情况!!你这主要是因为毛孔大!加上你工作的环境不是很清洁!一些你不干净的东西通过毛孔进入你的皮肤!从而是皮肤不能正常的新陈代谢造成的!毛孔里有很多危害你皮肤的污垢!你现在应该从最基础的肌肤护理开始!!要有一定的耐心!效果不

    2024-04-15
    36700
  • 保湿身体乳哪个牌子好啊?有人能推荐吗?

    珂润身体乳珂润的身体乳是我今年新入的,也是最惊喜的!非常好用,水润好吸收,温和无香精,没有任何味道,滋润度也非常棒,花王专利的神经酰胺能填充质细胞空隙,维护细胞间水分,很好帮助皮肤保湿,修复皮肤屏障。不喜欢有味道的身体乳的姐妹们真的要试试这

    2024-04-15
    30200
  • 腊梅的精华油好用吗

    Lamer这个牌子已经是家喻户晓了。明星产品是神奇面霜和浓缩精华。腊梅一直以强大的修复和滋养功效著称,核心功效就是修复,从最开始的面霜,浓缩精华,到后来推出的新生、塑性、和亮白精华。有些人说腊梅这种牌子要40岁在用,可是如果等到40岁,皱纹

    2024-04-15
    39000
  • 40岁男士适合妮维雅 哪个系列

    水活畅透保湿系列。妮维雅男士推出的水活畅透保湿系列,蕴含小分子玻尿酸,可密集保湿锁住水分。其中的精华露添加了深海黄金藻成分,能够呵护肌肤、改善肤质,帮助缓解粗糙干纹、水油失衡、暗淡无光等肌肤问题。洁面后使用,能够唤醒肌肤,令肌肤更显年轻光滑

    2024-04-15
    36900
  • 碧欧泉蓝钻精华水和紧肤水哪个好

    都好。1、碧欧泉蓝钻精华爽肤水,收敛毛孔,紧致轮廓,让肌肤畅饮深澈补水,舒缓紧绷,平滑修护。2、碧欧泉蓝钻紧肤水主如果收缩毛孔,它含有酒精,会有燥热干爽的觉得能够避免青春痘的滋生,有用抑制细菌的生殖。碧欧泉精华露和精华液的质感不同。精华液的

    2024-04-15
    30100
  • 至本洗面奶好用吗

    至本洗面奶好用。至本洗面奶是上海澄穆生物科技有限公司旗下的品牌,坚持以科学配方及高度有效性为产品研制的出发点,传递健康的护肤理念及生活方式,努力构建人与人和人与环境互相信任的友好关系,以理性之姿,追求理想之美。至本洗面奶是一款备受推荐的洗面

    2024-04-15
    30700

发表评论

登录后才能评论
保存