พิมพ์หน้านี้ - ทำไมต่อ Ds1307 แล้วตอนตั้งเวลามันแสดงเลขฐาานสิบหกอะคับช่วยหน่อย

► อิเล็กทรอนิกส์ ► => ►ถาม-ตอบอีเล็กทรอนิกส์ทั่วไป => ข้อความที่เริ่มโดย: 04_EnE ที่ มกราคม 05, 2013, 09:54:29 am



หัวข้อ: ทำไมต่อ Ds1307 แล้วตอนตั้งเวลามันแสดงเลขฐาานสิบหกอะคับช่วยหน่อย
เริ่มหัวข้อโดย: 04_EnE ที่ มกราคม 05, 2013, 09:54:29 am
คือว่าเมือเราเซตปุ่มชั่วโมงหรือนาที เมื่อตั้งเกิน10จะแสดงA เมื่อเราสั่งตกลงแล้ว เช่น ตั้ง 23:10:00 มันจะแสดงเป็น 17:0A:00 มีวิธีแก้ยังไงอะครับ    :D


หัวข้อ: Re: ทำไมต่อ Ds1307 แล้วตอนตั้งเวลามันแสดงเลขฐาานสิบหกอะคับช่วยหน่อย
เริ่มหัวข้อโดย: JUB ที่ มกราคม 06, 2013, 12:55:57 am
ให้บวก 6
0A + 6 = 10


หัวข้อ: Re: ทำไมต่อ Ds1307 แล้วตอนตั้งเวลามันแสดงเลขฐาานสิบหกอะคับช่วยหน่อย
เริ่มหัวข้อโดย: kiano♥ ที่ มกราคม 06, 2013, 09:04:54 am
ไอซี DS1307 ต้องมีการแปลงข้อมูลก่อนการรับและส่ง ตัวอย่างเช่น

รับข้อมูลจาก DS1307
   second   =  Bcd2Dec16(Soft_I2C_Read(1));
   minute   =  Bcd2Dec16(Soft_I2C_Read(1));
   hour      =  Bcd2Dec16(Soft_I2C_Read(0));
**หมายเหตุ Bcd2Dec16 คือ Converts 16-bit BCD numeral to its decimal equivalent.

ส่งข้อมูลไปที่ DS1307
Soft_I2C_Write(Dec2Bcd(minute));
**หมายเหตุ Dec2Bcd คือ Converts input unsigned short integer number to its appropriate BCD representation.


หัวข้อ: Re: ทำไมต่อ Ds1307 แล้วตอนตั้งเวลามันแสดงเลขฐาานสิบหกอะคับช่วยหน่อย
เริ่มหัวข้อโดย: 04_EnE ที่ มกราคม 07, 2013, 06:24:35 pm
อย่างนี้ป่าวคับเช่น if(RTC.hr==0A)
                       RTC.hr==10;
ผมลองแล้วมัน Error
*******************************************************************************
มันประกาสได้แต่อย่างนี้ แต่มันไม่ทำงานอะคับ
                     if(RTC.hr==A)
                     RTC.hr==10;
ช่วยหน่อยคับ


หัวข้อ: Re: ทำไมต่อ Ds1307 แล้วตอนตั้งเวลามันแสดงเลขฐาานสิบหกอะคับช่วยหน่อย
เริ่มหัวข้อโดย: kiano♥ ที่ มกราคม 07, 2013, 10:14:41 pm
ไม่ใช่ครับ อ่านคำตอบข้างต้นแล้วเข้าใจไหมครับ
คือต้องแปลงฐานตัวเลขก่อน รับมาเป็น hex ต้องแปลงให้เป็น dec ก่อน
จะใช้ฟังก์ชั่นอะไรแปลง หรือจะเขียนฟังก์ชั่นแปลงเองก็แล้วแต่
แล้วค่อยเอาเลขที่ได้จากการแปลงมาใช้งาน