三星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

随机推荐

  • skii清莹嫩肤露和神仙水可以一起用吗?

    skii清莹嫩肤露和神仙水是两款非常受欢迎的护肤产品,很多消费者都对它们的效果非常期待。问题来了,这两款产品可以一起使用吗?答案是可以的。让我们来了解一下这两款产品的功效和特点。skii清莹嫩肤露是一款能够深层滋润肌肤、提亮肤色的精华水。它

    2024-04-15
    42100
  • 为什么旗舰店里没有妮维雅美白630精华

    德国拜尔斯道夫集团旗下妮维雅于2020年推出的独家专利成分luminous630,号称是经过十年研发,地表最强的美白成分。这个名头可谓很响亮,而这个成分也实际应用到品牌各类产品上,例如美白精华,防晒霜等等。妮维雅630淡斑美白精华开始采用的

    2024-04-15
    36000
  • 淡斑精华液排行榜10强

    淡斑精华液排行榜如下:1、玉兰油(OLAY)抗糖小白瓶精华液(光感小白瓶)。olay新升级第四代小白瓶革新抗糖美白科技, 缓解皮肤暗黄。2、科颜氏(Kiehl's)新集焕白均衡亮肤淡斑精华液。科颜氏淡斑精华液是主打维生素C成分的一

    2024-04-15
    45800
  • 发之萃这个品牌的防脱育发套盒怎么样?

    效果因人而异。产品特点:发之萃防脱育发套盒选取本草精华,何首乌、侧伯叶、川穹、当归等,采用高能活性萃取工艺精制而成,其活性成分能快速改善毛囊生态环境,改善头皮状况,激活毛囊,具有头发防脱、促进毛发生长、促进毛发的作用,长期用会使头发乌黑柔顺

    2024-04-15
    42000
  • 什么补水喷雾好?

    1 妮维雅娇柔爽肤水(粉)49元:的确是很好用的一款 拍到脸上 润润的 不含酒精 也很耐用呢 不错不错(摇后泡沫细腻丰富,厚厚的一层而且经久不消。泡泡少说明营养成分少,泡泡多但大说明含有水杨酸,洁肤效果好但敏感肌肤尽量不要用,泡泡多且细但很

    2024-04-15
    26200
  • 怎样可以用打火机之类的去除刺青

    一般打火机是不能去除纹身的,现在去纹身常见的有激光洗纹身法,不过激光洗纹身会比较疼,而且需要很多次才能洗干净现在有一种比较方便的去纹身方式,就是护肤结合,贝黛琪精华露涂抹方式抹在纹身处,这种方式比较方便,没有疼动感,在家都可以自己去除的。激

    2024-04-15
    27000
  • 天气丹用完了 可以买小样装进去吗

    可以装小样进去。一般来说买小样会比正装更实惠一些的。天气丹是一个属于化妆品行业的品牌(商标号14892164),所有方是天气丹化妆品有限公司,该品牌于2016年5月21日在广东省广州市创立。品牌理念:做好民族品牌和产品,讲好中国文化和故事。

    2024-04-15
    34000

发表评论

登录后才能评论
保存