Pages: 1 ... 8 9 [10]
 91 
 on: January 12, 2014, 11:06:26 PM 
Started by puppii - Last post by puppii
ผมเขียน SHT 15กับLCD16x4 แต่ทดลองจิงขึ้น จอดำเป็นแถบ ใช้ฟังก์ชัน LCD 20x4 อยากรู้สาเหตุว่าเป็นที่โปรแกรมหรือป่าวคร๊าบ ขอช่วยแก้ไขให้หน่อยน่ะคร๊าบ

โค้ดคร๊าบ ที่เขียน


#include <16f877.h>

#fuses HS,NOWDT,NOLVP,NOBROWNOUT
#use delay(clock=20M)

#include "LCD420.c"
#include<math.h>

#define SHT15_DATA PIN_a1
#define SHT15_SCK PIN_a0

#define MEASURE_TEMP 0x03
#define MEASURE_HUMI 0x05
#define RESET 0x1E
//Temperature
#define D1 -39.75
#define D2 0.01
//Humidity
#define C1 -4.0
#define C2 0.0405
#define C3 -0.0000028
//true humidity
#define T1 0.01
#define T2 0.00008

long CRC;

//*************Tranmission Start*******************//
void SHT15Start()
{
  output_high(SHT15_DATA);
  output_low(SHT15_SCK);
  output_high(SHT15_SCK);
  output_low(SHT15_DATA);
  output_low(SHT15_SCK);
  output_high(SHT15_SCK);
  output_high(SHT15_DATA);
  output_low(SHT15_SCK);
}
//*************Reset SHT15*******************//
void SHT15Reset()
{
 int i;
 output_high(SHT15_DATA);
    for(i=0;i<9;i++)
    {
      output_high(SHT15_SCK);
      delay_us(2);
      output_low(SHT15_SCK);
      delay_us(2);
    }
 SHT15Start();
}
//****************Adr.Measure****************//
int SHT15Measure(int Data)
{
 int i;
 for (i=0x80;i>0;i/=2)
 {
    if(i&Data){
      output_high(SHT15_DATA);
     }
    else{
      output_low(SHT15_DATA);
     }
  delay_us(2);
  output_high(SHT15_SCK);
  delay_us(2);
  output_low(SHT15_SCK);
 }
output_float(SHT15_DATA);
delay_us(2);

output_high(SHT15_SCK);
delay_us(2);

i=input(SHT15_DATA);
output_low(SHT15_SCK);
delay_ms(250);
return(i);
}

//*************Read SHT15*******************//
long SHT15Read(void)
{
 int i;
 long Tmp,Value,MSB,LSB,CRC;

 MSB=0;
 LSB=0;
 CRC=0;

 for(i=0;i<8;i++)          //********Read MSB********//
 {
  MSB<<=1;
  output_high(SHT15_SCK);
  Tmp=input(SHT15_DATA);
  Delay_us(2);
  output_low(SHT15_SCK);
  Delay_us(2);
  if(Tmp){
    MSB|=1;
   }
 }
output_low(SHT15_DATA);
output_high(SHT15_SCK);
Delay_Us(2);
output_float(SHT15_DATA);
output_low(SHT15_SCK);
Delay_us(2);

 for(i=0;i<8;i++)          //********Read LSB********//
 {
   LSB<<=1;
   output_high(SHT15_SCK);
   Tmp=input(SHT15_DATA);
   Delay_us(2);
   output_low(SHT15_SCK);
   Delay_us(2);
    if(Tmp){
     LSB|=1;
    }
 }
output_low(SHT15_DATA);//Acknowledge routine for CRC
delay_us(2);
output_high(SHT15_SCK);
delay_us(2);
output_low(SHT15_SCK);
output_float(SHT15_DATA); //Change to Input
delay_us(2);

 for(i=0;i<8;i++)
 {
  CRC<<=1;
  output_high(SHT15_SCK);
  Tmp=input(SHT15_DATA);
  output_low(SHT15_SCK);
  if(Tmp){
   CRC|=1;
   }
 } 
 Value=make16(MSB,LSB); // makes 16 bit number out of two 8 bit numbers
 return(Value);
}
void SHT15SoftReset()
{
 SHT15Reset();
 SHT15measure(RESET);
}


//*************Main Function*******************//
void main(void)
{
  float Value_temp,Value_humi;
  float Temp,Humi_linear,Humi_True;
  int R;
 
  lcd_init();
  lcd_putc("\fProgram Ready...\n");
  SHT15softReset();
  while(TRUE)
  {
     delay_ms(12); //delay>11 ms before next command
  //start transmission
     SHT15Start();
  //measure Temperature
     R=SHT15Measure(MEASURE_TEMP);
  //check sensor connect
     if(R==1)
     {
      printf(lcd_putc,"\fSensor Error");
      delay_ms(1000);
      continue;
     }
     //calculation temperature
     Value_Temp=SHT15Read();   
     Temp=D1+(D2*Value_Temp);
   
  //Delay>11 ms for next command
     delay_ms(12);
  //start transmission
     SHT15Start();
  //measure Humidity
     SHT15Measure(MEASURE_HUMI);
     lValue_rh = SHT15Read();

      // relative humidity calculation
      fRh_lin =(C1+(C2*lValue_rh)+(C3*lValue_rh*lValue_rh));
      fRh_true =(((Temp-25)*(T1+(T2*lValue_rh)))+fRh_lin);   
  //send to LCD
     lcd_gotoxy(1,2);
     printf(lcd_putc,"Temp : %3.2f  %cc",Temp,0xDF);
     lcd_gotoxy(1,1);
     printf(lcd_putc,"Humi : %3.2f %%RH",fRh_true,0xDF);
     delay_ms(1000);
  }
}






 92 
 on: January 10, 2014, 06:42:14 PM 
Started by paraa40 - Last post by gundam
คุณต้องลองแยกประเภท I/O ดูครับว่า MCU มีพอหรือเปล่า ผมเดาว่า sensor สามารถทำเป็น analog ได้

- sensor ph,temp,EC  analog 3 pin
- Xbee UART TX,RX  2 pin
- LCD (4bit) 6-7 pin


 93 
 on: January 09, 2014, 03:51:11 AM 
Started by paraa40 - Last post by paraa40
ถ้าผมใช้pic16F1939 ต่อกับเซ็นเซอร์3ชนิด{ph,temp,EC(ค่าความนำไฟฟ้าในปุ๋ย)} ,ต่อเข้าสวิทซ์ปิดเปิดอัตโนมัติ ,ต่อเข้ากับXbee .ต่อเข้ากับLCDขนาด4x20 ไม่ทราบว่าพอร์ตมันจะพอไหมครับ แล้วถ้าผมต่อเซ็นเซอร์ทั้ง3ชนิดรวมกันที่พอร์ตเดียว จะเกิดการกวนกันของข้อมูลรึป่าวครับ

ขอบคุณครับ

 94 
 on: January 03, 2014, 10:54:41 PM 
Started by AaotoatN - Last post by admin
สามารถทำได้ครับ เพราะเป็นวัตถุประสงค์ที่จะเผยแพร่ความรู้อยู่แล้ว ขอบคุณครับที่ถาม มีหนังสือบางเล่มเอาไปลงเป็นของตัวเองเลยก็มีไม่อ้างถึงทางเวบเลยสักคำ เอามาประกาศขายในเวบนี้เลยก็ได้ครับ ไม่ผิดกฎอะไรครับ

 95 
 on: December 31, 2013, 12:59:18 AM 
Started by kissubin - Last post by art20069
ขอตัว Nokia LCDs Proteus VSM Models ครับ LINK เสียนะครับ

 96 
 on: December 29, 2013, 06:53:40 PM 
Started by AaotoatN - Last post by AaotoatN
สวัสดีครับพี่ๆชาว THAIMICROTRON  พอดีผมได้สร้างเครื่อง PIC KIT2 สำเร็จแล้ว 1 เครื่องโดยทดลองใช้งานแล้ว Work ครับซึ่งมีเพื่อนๆสนใจมาก ซึ่งขอให้ผมทำให้ ซึ่งผมว่าว่าจะลองทำดูโดยการจะนำลายทองแดงของทางเว็บ ไปจ้างกัดแถวๆบ้านหม้อและทำการซื้ออุปกรณ์มาลงเอง แต่ผมไม่ทราบว่าจะติดปัญหาในเรื่องลิขสิทธิ์หรือเปล่าอ่ะครับ เพราะผมว่าจะบวกค่าแรงที่ทำนิดหน่อยอ่ะครับ จึงยังไท่กล้าทำเลย รบกวนสอบถามทางเว็บก่อนอ่ะครับ เพราะจุดประสงค์ของเว็บนี้น่าจะเป็นความรู้ ไม่ใช่ขายของ ผมกลัวจะโดนแบนด์  จึงสอบถามมา ณ ที่นี้ครับ   ขอบคุณมากครับ Huh Huh Huh

 97 
 on: December 15, 2013, 12:30:08 PM 
Started by PloY - Last post by PloY
คือถ้าต้องการทำวงจรที่ใช้ในการหรี่ไฟแบบอัตโนมัติ ให้มีระดับความสว่างตามที่กำหนด โดยคำนึงถึงแสงสว่างจากธรรมชาติในห้องทำงานด้วยค่ะ อยากทราบว่า วงจรหรี่ไฟของหลอด LED กับหลอดไส้ธรรมดา เหมือนกันหรือเปล่าคะ คือโปรเจคของหนู ใช้หลอด GLS LED ขั้ว E27 ค่ะ จากที่ศึกษามา วงจรจะใช้ไตรแอค แต่ไม่แน่ใจว่า วงจรหรี่ของ LED กับหลอดธรรมดาเหมือนกันหรือเปล่า  และอยากถามอีกเรื่องค่ะ ว่าในส่วนของไมโครคอนโทรลเลอร์ ที่ใช้ควบคุมในการปรับมุมทริกของไตรแอค สามารถต่อวงจรให้ส่วนของสัญญาณจากไมโครเข้าที่ขาเกตของวงจรหรี่ไฟได้เลยหรือเปล่าคะ ขอบคุณมากค่ะ Smiley

 98 
 on: December 04, 2013, 04:19:12 PM 
Started by ElleryQueen - Last post by ElleryQueen
ถ้าต้องการส่งข้อมูลแบบ RS485 ไปที่ PC จะต้องทำอย่างไรหรอครับ

 99 
 on: November 26, 2013, 01:46:29 PM 
Started by HIMHUM - Last post by oasis
ดีครับ ผมเพิ่งเริ่มหัดเล่นเหมือนกัน ไม่เคยมีความรู้ด้านนี้มาก่อน กำลังอ่านหนังสืออยู่ครับ

 100 
 on: November 14, 2013, 10:02:58 AM 
Started by HIMHUM - Last post by sombatsombat
เคยซื้อหนังสือที่ SE-ED มันมีชุดสำเร็จรูปให้ใช้ได้เลย ไม่รู้ตอนนี้มีหรือเปล่า

ผมว่าเริ่มตรงนั้นก็ได้นะครับ

Pages: 1 ... 8 9 [10]