PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   PIC - Thiết kế và Ứng dụng (http://www.picvietnam.com/forum/forumdisplay.php?f=23)
-   -   pic 16f877a và hiển thị led matran (http://www.picvietnam.com/forum/showthread.php?t=9261)

tdm 15-05-2011 10:13 AM

Trích:

Nguyên văn bởi friend_1990 (Post 45107)
sao cả buổi tối ngồi em đã tìm được cái sai của mình mong anh cho em hướng giải quyết ạk!!!!!!!!!!!!1

vấn đề sai ở chỗ là:
#INT_RDA
void ngat()
{
mang[dem]=getc();
if(mang[dem]=='#')
{
flag=1;//co ngat
dem=0;
}

else
dem++;

while(flag==1)
{
lay_font(mang);
}
}

khi em khai báo char mang[]=""; thì nó hiểu nhưng khi em khai báo mang[]=""; thì nó không hiểu để xuất ra led matran vậy mình nên khai báo như thế nào để cho nó hiểu mảng là char mang[]="" để lúc đó flag==1 thì nó sẽ xuất ra led ak

và giờ em muồn cho chữ cuộn tròn (dịch trái )thì mình nên thêm vòng lặp như thế nào anh nhỉ?

khai báo char mang[20]//khai báo như vậy là được .[20] có thể thay đổi nhưng <=96.
code dich trái:
khai báo lại mảng unsigned char hien_thi[96];
Code:

while(1)
{
int dich_chu=0,toc_do_chay=0;
for(dich_chu=0;dich_chu<=32;dich_chu++)//pic 16f877a không đủ ram nên chỉ dịch được 32 cột.
{
for(toc_do_chay=0;toc_do_chay<=2;toc_do_chay++)
{
b1=1;
b0=1;

b2=1;
b0=0;
b2=0;
for(m=0;m<=63;m++)
{
n=hien_thi[m+dich_chu];
n=~n;
xuat(n);
delay_us(1000);
dich();
}
}
}
}


friend_1990 15-05-2011 11:25 AM

Trích:

Nguyên văn bởi tdm (Post 45111)
khai báo char mang[20]//khai báo như vậy là được .[20] có thể thay đổi nhưng <=96.
code dich trái:
khai báo lại mảng unsigned char hien_thi[96];
Code:

while(1)
{
int dich_chu=0,toc_do_chay=0;
for(dich_chu=0;dich_chu<=32;dich_chu++)//pic 16f877a không đủ ram nên chỉ dịch được 32 cột.
{
for(toc_do_chay=0;toc_do_chay<=2;toc_do_chay++)
{
b1=1;
b0=1;

b2=1;
b0=0;
b2=0;
for(m=0;m<=63;m++)
{
n=hien_thi[m+dich_chu];
n=~n;
xuat(n);
delay_us(1000);
dich();
}
}
}
}




sao em đã thêm vào nhưng nó chỉ chạy được 1 lần sang lần thứ 2 thì nó chạy sai cập nhật nhiệt độ không được
sao hiển thị phải nhỏ hon 96 vậy anh?
file em đã thêm ở dưới có thêm phần của anh nữa nhưng vẫn chạy sai anh xem dùm em!!!!!!!!!!!!!!!
cám ơn anh!!!!!!!!!!!!!!

friend_1990 15-05-2011 11:27 AM

1 Attachment(s)
Trích:

Nguyên văn bởi tdm (Post 45111)
khai báo char mang[20]//khai báo như vậy là được .[20] có thể thay đổi nhưng <=96.
code dich trái:
khai báo lại mảng unsigned char hien_thi[96];
Code:

while(1)
{
int dich_chu=0,toc_do_chay=0;
for(dich_chu=0;dich_chu<=32;dich_chu++)//pic 16f877a không đủ ram nên chỉ dịch được 32 cột.
{
for(toc_do_chay=0;toc_do_chay<=2;toc_do_chay++)
{
b1=1;
b0=1;

b2=1;
b0=0;
b2=0;
for(m=0;m<=63;m++)
{
n=hien_thi[m+dich_chu];
n=~n;
xuat(n);
delay_us(1000);
dich();
}
}
}
}


dưới là code em đã thêm phần của anh vào ạk
e đã thêm vào nhưng chạy được 1 lần nhưng nhiêt độ cũng bị cập nhật sai anh ơi sang lần 2 nó bị lỗi ko hiển thị được nữa]
vì sao hiển thị phải nhỏ hơn 96 vậy anh lớn hơn sao ko anh?
a down về xem dùm em!!!!!!!!!!!!!!!!
cám ơn anh nhiều ạk!!!!!!!!!!!

tdm 15-05-2011 04:06 PM

Trích:

Nguyên văn bởi friend_1990 (Post 45114)
dưới là code em đã thêm phần của anh vào ạk
e đã thêm vào nhưng chạy được 1 lần nhưng nhiêt độ cũng bị cập nhật sai anh ơi sang lần 2 nó bị lỗi ko hiển thị được nữa]
vì sao hiển thị phải nhỏ hơn 96 vậy anh lớn hơn sao ko anh?
a down về xem dùm em!!!!!!!!!!!!!!!!
cám ơn anh nhiều ạk!!!!!!!!!!!

pic 16f chỉ cho khai báo một mảng ram dài tối đa 96 byte.
thường thì matrix phải liên tục cập nhập dữ liệu người ta dùng thêm ram ngoài.
Code:

#include <16f877a.h>
#device 16f877a*=16 ADC=10
#include <stdlib.h>
#include <string.h>
#fuses nowdt,noprotect,nolvp,hs,put
#use delay(clock=20000000)
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)
#use rs232(baud=9600,parity=N,xmit=pin_c6,rcv=pin_c7)
#byte porta=0x05
#byte portb=0x06
#byte portc=0x07
#byte portd=0x08
#bit b0=portb.0
#bit b1=portb.1
#bit b2=portb.2
#bit b3=portb.3
#bit b4=portb.4
#bit b5=portb.5

int dich_chu=0,toc_doc_chay=0;
void doc_adc();
void lay_font(char * textptr);
unsigned char bi,temp,chieu_dai=0;
unsigned char hien_thi[96];
char string[5];
char string1[5];
char string2[5];
char string3[10]="nhiet do:#";
const BYTE TEXT[51][5] ={0x00, 0x00, 0x00, 0x00, 0x00, // SPACE
                        0x00, 0x00, 0x5F, 0x00, 0x00, // !
                        0x00, 0x03, 0x00, 0x03, 0x00, // "
                        0x14, 0x3E, 0x14, 0x3E, 0x14, // #
                        0x24, 0x2A, 0x7F, 0x2A, 0x12, // $
                        0x43, 0x33, 0x08, 0x66, 0x61, // %
                        0x36, 0x49, 0x55, 0x22, 0x50, // &
                        0x00, 0x05, 0x03, 0x00, 0x00, // '
                        0x00, 0x1C, 0x22, 0x41, 0x00, // (
                        0x00, 0x41, 0x22, 0x1C, 0x00, // )
                        0x14, 0x08, 0x3E, 0x08, 0x14, // *
                        0x08, 0x08, 0x3E, 0x08, 0x08, // +
                        0x00, 0x50, 0x30, 0x00, 0x00, // ,
                        0x08, 0x08, 0x08, 0x08, 0x08, // -
                        0x00, 0x60, 0x60, 0x00, 0x00, // .
                        0x20, 0x10, 0x08, 0x04, 0x02, // /
                        0x3E, 0x51, 0x49, 0x45, 0x3E, // 0
                        0x04, 0x02, 0x7F, 0x00, 0x00, // 1
                        0x42, 0x61, 0x51, 0x49, 0x46, // 2
                        0x22, 0x41, 0x49, 0x49, 0x36, // 3
                        0x18, 0x14, 0x12, 0x7F, 0x10, // 4
                        0x27, 0x45, 0x45, 0x45, 0x39, // 5
                        0x3E, 0x49, 0x49, 0x49, 0x32, // 6
                        0x01, 0x01, 0x71, 0x09, 0x07, // 7
                        0x36, 0x49, 0x49, 0x49, 0x36, // 8
                        0x26, 0x49, 0x49, 0x49, 0x3E, // 9
                        0x00, 0x36, 0x36, 0x00, 0x00, // :
                        0x00, 0x56, 0x36, 0x00, 0x00, // ;
                        0x08, 0x14, 0x22, 0x41, 0x00, // <
                        0x14, 0x14, 0x14, 0x14, 0x14, // =
                        0x00, 0x41, 0x22, 0x14, 0x08, // >
                        0x02, 0x01, 0x51, 0x09, 0x06, // ?
                        0x3E, 0x41, 0x59, 0x55, 0x5E, // @
                        0x7E, 0x09, 0x09, 0x09, 0x7E, // A
                        0x7F, 0x49, 0x49, 0x49, 0x36, // B
                        0x3E, 0x41, 0x41, 0x41, 0x22, // C
                        0x7F, 0x41, 0x41, 0x41, 0x3E, // D
                        0x7F, 0x49, 0x49, 0x49, 0x41, // E
                        0x7F, 0x09, 0x09, 0x09, 0x01, // F
                        0x3E, 0x41, 0x41, 0x49, 0x3A, // G
                        0x7F, 0x08, 0x08, 0x08, 0x7F, // H
                        0x00, 0x41, 0x7F, 0x41, 0x00, // I
                        0x30, 0x40, 0x40, 0x40, 0x3F, // J
                        0x7F, 0x08, 0x14, 0x22, 0x41, // K
                        0x7F, 0x40, 0x40, 0x40, 0x40, // L
                        0x7F, 0x02, 0x0C, 0x02, 0x7F, // M
                        0x7F, 0x02, 0x04, 0x08, 0x7F, // N
                        0x3E, 0x41, 0x41, 0x41, 0x3E, // O
                        0x7F, 0x09, 0x09, 0x09, 0x06, // P
                        0x1E, 0x21, 0x21, 0x21, 0x5E, // Q
                        0x7F, 0x09, 0x09, 0x09, 0x76};// R

const BYTE TEXT2[44][5]={0x26, 0x49, 0x49, 0x49, 0x32, // S
                        0x01, 0x01, 0x7F, 0x01, 0x01, // T
                        0x3F, 0x40, 0x40, 0x40, 0x3F, // U
                        0x1F, 0x20, 0x40, 0x20, 0x1F, // V
                        0x7F, 0x20, 0x10, 0x20, 0x7F, // W
                        0x41, 0x22, 0x1C, 0x22, 0x41, // X
                        0x07, 0x08, 0x70, 0x08, 0x07, // Y
                        0x61, 0x51, 0x49, 0x45, 0x43, // Z
                        0x00, 0x7F, 0x41, 0x00, 0x00, // [
                        0x02, 0x04, 0x08, 0x10, 0x20, // \
                        0x00, 0x00, 0x41, 0x7F, 0x00, // ]
                        0x04, 0x02, 0x01, 0x02, 0x04, // ^
                        0x40, 0x40, 0x40, 0x40, 0x40, // _
                        0x00, 0x01, 0x02, 0x04, 0x00, // `
                        0x20, 0x54, 0x54, 0x54, 0x78, // a
                        0x7F, 0x44, 0x44, 0x44, 0x38, // b
                        0x38, 0x44, 0x44, 0x44, 0x44, // c
                        0x38, 0x44, 0x44, 0x44, 0x7F, // d
                        0x38, 0x54, 0x54, 0x54, 0x18, // e
                        0x04, 0x04, 0x7E, 0x05, 0x05, // f
                        0x08, 0x54, 0x54, 0x54, 0x3C, // g
                        0x7F, 0x08, 0x04, 0x04, 0x78, // h
                        0x00, 0x44, 0x7D, 0x40, 0x00, // i
                        0x20, 0x40, 0x44, 0x3D, 0x00, // j
                        0x7F, 0x10, 0x28, 0x44, 0x00, // k
                        0x00, 0x41, 0x7F, 0x40, 0x00, // l
                        0x7C, 0x04, 0x78, 0x04, 0x78, // m
                        0x7C, 0x08, 0x04, 0x04, 0x78, // n
                        0x38, 0x44, 0x44, 0x44, 0x38, // o
                        0x7C, 0x14, 0x14, 0x14, 0x08, // p
                        0x08, 0x14, 0x14, 0x14, 0x7C, // q
                        0x00, 0x7C, 0x08, 0x04, 0x04, // r
                        0x48, 0x54, 0x54, 0x54, 0x20, // s
                        0x04, 0x04, 0x3F, 0x44, 0x44, // t
                        0x3C, 0x40, 0x40, 0x20, 0x7C, // u
                        0x1C, 0x20, 0x40, 0x20, 0x1C, // v
                        0x3C, 0x40, 0x30, 0x40, 0x3C, // w
                        0x44, 0x28, 0x10, 0x28, 0x44, // x
                        0x0C, 0x50, 0x50, 0x50, 0x3C, // y
                        0x44, 0x64, 0x54, 0x4C, 0x44, // z
                        0x00, 0x08, 0x36, 0x41, 0x41, // {
                        0x00, 0x00, 0x7F, 0x00, 0x00, // |
                        0x41, 0x41, 0x36, 0x08, 0x00, // }
                        0x02, 0x01, 0x02, 0x04, 0x02};// ~

int8 i,m,t,flag,dem;

int8 n;
char mang[];
void dich(void);
void xuat(unsigned char bi);
void xoa_hien_thi();
#INT_RDA
void ngat()
{
mang[dem]=getc();
if(mang[dem]=='#')
{
flag=1;//co ngat
dem=0;
}
else{
dem++;
}
}
void main()
{int x=0;
int dv,chuc,tram;
enable_interrupts(INT_RDA);
enable_interrupts(global);
  set_tris_b(0b00000000);
  set_tris_d(0b00000000);
  set_tris_a(0b000001);
int dich_chu=0,toc_do_chay=0;
 while(1)
{
doc_adc();
x=read_adc();
x=x/2.049;
dv=x%10;
chuc=x/10;
itoa(dv,10,string);//gan dv vao string
itoa(chuc,10,string1);//gan chuc vao string1
strcat(string1,string);//ket hop string1 va string hien thi la string1
xoa_hien_thi();//xóa vùng nho hien thi truoc khi cap nhat nhiet do
lay_font(string3);      // Write character set to matrix
lay_font(string1);      // Write character set to matrix
for(dich_chu=0;dich_chu<=32;dich_chu++)
{
for(toc_do_chay=0;toc_do_chay<=2;toc_do_chay++)
{
b1=1;
b0=1;

b2=1;
b0=0;
b2=0;

for(m=0;m<=63;m++)
{
n=hien_thi[m+dich_chu];

n=~n;
xuat(n);
delay_us(1000);

dich();
}
}
}
}
}
void doc_adc()
{
setup_ADC(ADC_clock_internal);
setup_ADC_ports(AN0);
set_ADC_channel(0);
delay_us(1000);
}

void dich()
{
b1=0;
b0=1;
b0=0;
b2=1;
b2=0;
}
void xuat(unsigned char temp)
{
#bit flag_bit = temp.7
b4=0;
for(i=0;i<=7;i++)
{
if(flag_bit==1)
{b4=1;}
else
{b4=0;}
b3=1;
b3=0;
temp<<=1;
}
b5=1;
b5=0;
}
void lay_font(char * textptr)
{
  int i, j;//
  BYTE pixelData[5];                    // Stores character data
 
  for(i=0; textptr[i] != '\0'; ++i ) // Loop through the passed string
  {
      if(textptr[i] == '#')//textptr khai bao vi tri con tro
      break;
      if(textptr[i] < 'S') //ky tu nam o mang text
        memcpy(pixelData, TEXT[textptr[i]-' '], 5);//copy 5 byte gia tri text[textptr[i]-'' vao pixeldata
      else if(textptr[i] <= '~') // ky tu nam o mang text2
        memcpy(pixelData, TEXT2[textptr[i]-'S'], 5);//copy 5 byte gia tri text2[textptr[i]-'s' vao pixeldata
      else
        memcpy(pixelData, TEXT[0], 5);  // khoang trang
    for(j=0;j<=4;j++)
    {
    hien_thi[chieu_dai]=(pixelData[j]);//hien thi tung ky tu
    chieu_dai++;
   
    }
   
      }
      }
 void xoa_hien_thi(void)
 {
 chieu_dai=0;
 for(m=0;m<=96;m++)
  {
  hien_thi[m]=0x00;
  }
 }


friend_1990 15-05-2011 05:06 PM

Trích:

Nguyên văn bởi tdm (Post 45126)
pic 16f chỉ cho khai báo một mảng ram dài tối đa 96 byte.
thường thì matrix phải liên tục cập nhập dữ liệu người ta dùng thêm ram ngoài.
Code:

#include <16f877a.h>
#device 16f877a*=16 ADC=10
#include <stdlib.h>
#include <string.h>
#fuses nowdt,noprotect,nolvp,hs,put
#use delay(clock=20000000)
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)
#use rs232(baud=9600,parity=N,xmit=pin_c6,rcv=pin_c7)
#byte porta=0x05
#byte portb=0x06
#byte portc=0x07
#byte portd=0x08
#bit b0=portb.0
#bit b1=portb.1
#bit b2=portb.2
#bit b3=portb.3
#bit b4=portb.4
#bit b5=portb.5

int dich_chu=0,toc_doc_chay=0;
void doc_adc();
void lay_font(char * textptr);
unsigned char bi,temp,chieu_dai=0;
unsigned char hien_thi[96];
char string[5];
char string1[5];
char string2[5];
char string3[10]="nhiet do:#";
const BYTE TEXT[51][5] ={0x00, 0x00, 0x00, 0x00, 0x00, // SPACE
                        0x00, 0x00, 0x5F, 0x00, 0x00, // !
                        0x00, 0x03, 0x00, 0x03, 0x00, // "
                        0x14, 0x3E, 0x14, 0x3E, 0x14, // #
                        0x24, 0x2A, 0x7F, 0x2A, 0x12, // $
                        0x43, 0x33, 0x08, 0x66, 0x61, // %
                        0x36, 0x49, 0x55, 0x22, 0x50, // &
                        0x00, 0x05, 0x03, 0x00, 0x00, // '
                        0x00, 0x1C, 0x22, 0x41, 0x00, // (
                        0x00, 0x41, 0x22, 0x1C, 0x00, // )
                        0x14, 0x08, 0x3E, 0x08, 0x14, // *
                        0x08, 0x08, 0x3E, 0x08, 0x08, // +
                        0x00, 0x50, 0x30, 0x00, 0x00, // ,
                        0x08, 0x08, 0x08, 0x08, 0x08, // -
                        0x00, 0x60, 0x60, 0x00, 0x00, // .
                        0x20, 0x10, 0x08, 0x04, 0x02, // /
                        0x3E, 0x51, 0x49, 0x45, 0x3E, // 0
                        0x04, 0x02, 0x7F, 0x00, 0x00, // 1
                        0x42, 0x61, 0x51, 0x49, 0x46, // 2
                        0x22, 0x41, 0x49, 0x49, 0x36, // 3
                        0x18, 0x14, 0x12, 0x7F, 0x10, // 4
                        0x27, 0x45, 0x45, 0x45, 0x39, // 5
                        0x3E, 0x49, 0x49, 0x49, 0x32, // 6
                        0x01, 0x01, 0x71, 0x09, 0x07, // 7
                        0x36, 0x49, 0x49, 0x49, 0x36, // 8
                        0x26, 0x49, 0x49, 0x49, 0x3E, // 9
                        0x00, 0x36, 0x36, 0x00, 0x00, // :
                        0x00, 0x56, 0x36, 0x00, 0x00, // ;
                        0x08, 0x14, 0x22, 0x41, 0x00, // <
                        0x14, 0x14, 0x14, 0x14, 0x14, // =
                        0x00, 0x41, 0x22, 0x14, 0x08, // >
                        0x02, 0x01, 0x51, 0x09, 0x06, // ?
                        0x3E, 0x41, 0x59, 0x55, 0x5E, // @
                        0x7E, 0x09, 0x09, 0x09, 0x7E, // A
                        0x7F, 0x49, 0x49, 0x49, 0x36, // B
                        0x3E, 0x41, 0x41, 0x41, 0x22, // C
                        0x7F, 0x41, 0x41, 0x41, 0x3E, // D
                        0x7F, 0x49, 0x49, 0x49, 0x41, // E
                        0x7F, 0x09, 0x09, 0x09, 0x01, // F
                        0x3E, 0x41, 0x41, 0x49, 0x3A, // G
                        0x7F, 0x08, 0x08, 0x08, 0x7F, // H
                        0x00, 0x41, 0x7F, 0x41, 0x00, // I
                        0x30, 0x40, 0x40, 0x40, 0x3F, // J
                        0x7F, 0x08, 0x14, 0x22, 0x41, // K
                        0x7F, 0x40, 0x40, 0x40, 0x40, // L
                        0x7F, 0x02, 0x0C, 0x02, 0x7F, // M
                        0x7F, 0x02, 0x04, 0x08, 0x7F, // N
                        0x3E, 0x41, 0x41, 0x41, 0x3E, // O
                        0x7F, 0x09, 0x09, 0x09, 0x06, // P
                        0x1E, 0x21, 0x21, 0x21, 0x5E, // Q
                        0x7F, 0x09, 0x09, 0x09, 0x76};// R

const BYTE TEXT2[44][5]={0x26, 0x49, 0x49, 0x49, 0x32, // S
                        0x01, 0x01, 0x7F, 0x01, 0x01, // T
                        0x3F, 0x40, 0x40, 0x40, 0x3F, // U
                        0x1F, 0x20, 0x40, 0x20, 0x1F, // V
                        0x7F, 0x20, 0x10, 0x20, 0x7F, // W
                        0x41, 0x22, 0x1C, 0x22, 0x41, // X
                        0x07, 0x08, 0x70, 0x08, 0x07, // Y
                        0x61, 0x51, 0x49, 0x45, 0x43, // Z
                        0x00, 0x7F, 0x41, 0x00, 0x00, // [
                        0x02, 0x04, 0x08, 0x10, 0x20, // \
                        0x00, 0x00, 0x41, 0x7F, 0x00, // ]
                        0x04, 0x02, 0x01, 0x02, 0x04, // ^
                        0x40, 0x40, 0x40, 0x40, 0x40, // _
                        0x00, 0x01, 0x02, 0x04, 0x00, // `
                        0x20, 0x54, 0x54, 0x54, 0x78, // a
                        0x7F, 0x44, 0x44, 0x44, 0x38, // b
                        0x38, 0x44, 0x44, 0x44, 0x44, // c
                        0x38, 0x44, 0x44, 0x44, 0x7F, // d
                        0x38, 0x54, 0x54, 0x54, 0x18, // e
                        0x04, 0x04, 0x7E, 0x05, 0x05, // f
                        0x08, 0x54, 0x54, 0x54, 0x3C, // g
                        0x7F, 0x08, 0x04, 0x04, 0x78, // h
                        0x00, 0x44, 0x7D, 0x40, 0x00, // i
                        0x20, 0x40, 0x44, 0x3D, 0x00, // j
                        0x7F, 0x10, 0x28, 0x44, 0x00, // k
                        0x00, 0x41, 0x7F, 0x40, 0x00, // l
                        0x7C, 0x04, 0x78, 0x04, 0x78, // m
                        0x7C, 0x08, 0x04, 0x04, 0x78, // n
                        0x38, 0x44, 0x44, 0x44, 0x38, // o
                        0x7C, 0x14, 0x14, 0x14, 0x08, // p
                        0x08, 0x14, 0x14, 0x14, 0x7C, // q
                        0x00, 0x7C, 0x08, 0x04, 0x04, // r
                        0x48, 0x54, 0x54, 0x54, 0x20, // s
                        0x04, 0x04, 0x3F, 0x44, 0x44, // t
                        0x3C, 0x40, 0x40, 0x20, 0x7C, // u
                        0x1C, 0x20, 0x40, 0x20, 0x1C, // v
                        0x3C, 0x40, 0x30, 0x40, 0x3C, // w
                        0x44, 0x28, 0x10, 0x28, 0x44, // x
                        0x0C, 0x50, 0x50, 0x50, 0x3C, // y
                        0x44, 0x64, 0x54, 0x4C, 0x44, // z
                        0x00, 0x08, 0x36, 0x41, 0x41, // {
                        0x00, 0x00, 0x7F, 0x00, 0x00, // |
                        0x41, 0x41, 0x36, 0x08, 0x00, // }
                        0x02, 0x01, 0x02, 0x04, 0x02};// ~

int8 i,m,t,flag,dem;

int8 n;
char mang[];
void dich(void);
void xuat(unsigned char bi);
void xoa_hien_thi();
#INT_RDA
void ngat()
{
mang[dem]=getc();
if(mang[dem]=='#')
{
flag=1;//co ngat
dem=0;
}
else{
dem++;
}
}
void main()
{int x=0;
int dv,chuc,tram;
enable_interrupts(INT_RDA);
enable_interrupts(global);
  set_tris_b(0b00000000);
  set_tris_d(0b00000000);
  set_tris_a(0b000001);
int dich_chu=0,toc_do_chay=0;
 while(1)
{
doc_adc();
x=read_adc();
x=x/2.049;
dv=x%10;
chuc=x/10;
itoa(dv,10,string);//gan dv vao string
itoa(chuc,10,string1);//gan chuc vao string1
strcat(string1,string);//ket hop string1 va string hien thi la string1
xoa_hien_thi();//xóa vùng nho hien thi truoc khi cap nhat nhiet do
lay_font(string3);      // Write character set to matrix
lay_font(string1);      // Write character set to matrix
for(dich_chu=0;dich_chu<=32;dich_chu++)
{
for(toc_do_chay=0;toc_do_chay<=2;toc_do_chay++)
{
b1=1;
b0=1;

b2=1;
b0=0;
b2=0;

for(m=0;m<=63;m++)
{
n=hien_thi[m+dich_chu];

n=~n;
xuat(n);
delay_us(1000);

dich();
}
}
}
}
}
void doc_adc()
{
setup_ADC(ADC_clock_internal);
setup_ADC_ports(AN0);
set_ADC_channel(0);
delay_us(1000);
}

void dich()
{
b1=0;
b0=1;
b0=0;
b2=1;
b2=0;
}
void xuat(unsigned char temp)
{
#bit flag_bit = temp.7
b4=0;
for(i=0;i<=7;i++)
{
if(flag_bit==1)
{b4=1;}
else
{b4=0;}
b3=1;
b3=0;
temp<<=1;
}
b5=1;
b5=0;
}
void lay_font(char * textptr)
{
  int i, j;//
  BYTE pixelData[5];                    // Stores character data
 
  for(i=0; textptr[i] != '\0'; ++i ) // Loop through the passed string
  {
      if(textptr[i] == '#')//textptr khai bao vi tri con tro
      break;
      if(textptr[i] < 'S') //ky tu nam o mang text
        memcpy(pixelData, TEXT[textptr[i]-' '], 5);//copy 5 byte gia tri text[textptr[i]-'' vao pixeldata
      else if(textptr[i] <= '~') // ky tu nam o mang text2
        memcpy(pixelData, TEXT2[textptr[i]-'S'], 5);//copy 5 byte gia tri text2[textptr[i]-'s' vao pixeldata
      else
        memcpy(pixelData, TEXT[0], 5);  // khoang trang
    for(j=0;j<=4;j++)
    {
    hien_thi[chieu_dai]=(pixelData[j]);//hien thi tung ky tu
    chieu_dai++;
   
    }
   
      }
      }
 void xoa_hien_thi(void)
 {
 chieu_dai=0;
 for(m=0;m<=96;m++)
  {
  hien_thi[m]=0x00;
  }
 }




char string3[10]="nhiet do:#"; sao mình phải thêm ký tự # vậy anh khi em bỏ lại xuất hiện ký tự khác vậy anhh?
trong lúc đang chạy sao nhiệt độ khi mình thay đồi con lm 35 nó không thay đổi theo vậy anh!!!!!!!!!!!vấn đề nằm ở đâu anh nhỉ?(nó chỉ dịch được 32 cột xong thì nhiệt độ mới cập nhật tiếp dc em muốn là nó đang chạy khi mình chỉnh lm35 thì nhiệt độ thay đổi theo vậy mình chỉnh dc ko anh)
nếu mình dùng ram ngoài mình nên dùng ram dung lượng là bao nhiêu vậy anh?
và mảng mình khai báo dùng ram ngoài thì được bao nhiêu byte vậy anh?
em chưa sử dụng ram ngoài lần nào anh gợi ý hay 1 vd cho em ạk?
em cám ơn anh nhiều !!!!!!!!!!!!!!

tdm 15-05-2011 08:39 PM

Trích:

Nguyên văn bởi friend_1990 (Post 45128)
char string3[10]="nhiet do:#"; sao mình phải thêm ký tự # vậy anh khi em bỏ lại xuất hiện ký tự khác vậy anhh?
trong lúc đang chạy sao nhiệt độ khi mình thay đồi con lm 35 nó không thay đổi theo vậy anh!!!!!!!!!!!vấn đề nằm ở đâu anh nhỉ?(nó chỉ dịch được 32 cột xong thì nhiệt độ mới cập nhật tiếp dc em muốn là nó đang chạy khi mình chỉnh lm35 thì nhiệt độ thay đổi theo vậy mình chỉnh dc ko anh)
nếu mình dùng ram ngoài mình nên dùng ram dung lượng là bao nhiêu vậy anh?
và mảng mình khai báo dùng ram ngoài thì được bao nhiêu byte vậy anh?
em chưa sử dụng ram ngoài lần nào anh gợi ý hay 1 vd cho em ạk?
em cám ơn anh nhiều !!!!!!!!!!!!!!

Trích:

sao mình phải thêm ký tự # vậy anh khi em bỏ lại xuất hiện ký tự khác vậy anhh?
em để ý trong hàm ( lay_font ) anh viết khi gặp kí tự # thoát khỏi hàm.
Trích:

em muốn là nó đang chạy khi mình chỉnh lm35 thì nhiệt độ thay đổi theo vậy mình chỉnh dc ko anh)
hoàn toàn được.
Code:

void main()
{int x=0;
int dv,chuc,tram;
enable_interrupts(INT_RDA);
enable_interrupts(global);
  set_tris_b(0b00000000);
  set_tris_d(0b00000000);
  set_tris_a(0b000001);
int dich_chu=0,toc_do_chay=0;
 while(1)
{
doc_adc();
for(dich_chu=0;dich_chu<=32;dich_chu++)
{
for(toc_do_chay=0;toc_do_chay<=2;toc_do_chay++)
{
b1=1;
b0=1;

b2=1;
b0=0;
b2=0;
x=read_adc();
x=x/2.049;
dv=x%10;
chuc=x/10;
itoa(dv,10,string);//gan dv vao string
itoa(chuc,10,string1);//gan chuc vao string1
strcat(string1,string);//ket hop string1 va string hien thi la string1
xoa_hien_thi();//xóa vùng nho hien thi truoc khi cap nhat nhiet do
lay_font(string3);      // Write character set to matrix
lay_font(string1);      // Write character set to matrix
for(m=0;m<=63;m++)
{
n=hien_thi[m+dich_chu];

n=~n;
xuat(n);
delay_us(1000);

dich();
}
}
}
}
}

em có thể dùng pic18f ram lớn hơn phù hợp với ứng dụng của em.

friend_1990 15-05-2011 09:12 PM

dạ em biết là sử dụng con 18f sẽ đủ nhưng đề tài thầy giao cho em là phải dùng con 16f877a anh ơi!!!!!!!hic
em có lên mạng tìm hiểu về cách đọc ram ngoài thấy người ta sử dụng con 6264 em đọc datasheet nó em không hiểu cho lắm liệu em dùng con này đủ dung lượng chương trình em không anh (sau này em còn viết ngày giờ phút giây tháng năm nữa)
em thấy phía trước ram ngoài lúc nào người ta cũng dùng con ic chốt 74153 ở phía trước nó ngõ ra pic nối vào ic chốt ngõ ra ic chốt nối vào ram ngoài vậy em có nên dùng ic chốt phía trước không anh hay cho dữ liệu đổ từ pic vào ram lun anh!!!!!!!!!!!

và chương trình viết copy font vào ram có khó không anh em đọc thấy người ta viết có cái em đọc hiểu có cái em vẫn chưa rõ anh viết 1 đoạn code nhỏ làm vd minh họa cho em hiểu nhe anh!!!!!!!!!!!!!

và dữ liệu ram ngoài thì mảng mình chứa bao nhiêu byte vậy anh(vd :em muốn làm 14 con led hay hơn thì mình dịch vẫn được đúng hok anh?)

còn 1 điều nữa anh nghĩ nó không quan trọng với anh nhưng em thấy nó quan trọng với em hi đơn giản thôi àk em muốn biết tên anh là gì để dễ xưng hô thôi ạk
tại a đã giúp em nhiều mà em lại hok biết dc anh tên gì thì kỳ lắm hihi

e rất vui vì được quen anh và nhậ được sự giúp đỡ từ anh
cám ơn anh nhiều nhều lắm ạk!!!!!!!!!!!!!:)

tdm 15-05-2011 09:24 PM

Trích:

Nguyên văn bởi friend_1990 (Post 45137)
dạ em biết là sử dụng con 18f sẽ đủ nhưng đề tài thầy giao cho em là phải dùng con 16f877a anh ơi!!!!!!!hic
em có lên mạng tìm hiểu về cách đọc ram ngoài thấy người ta sử dụng con 6264 em đọc datasheet nó em không hiểu cho lắm liệu em dùng con này đủ dung lượng chương trình em không anh (sau này em còn viết ngày giờ phút giây tháng năm nữa)
em thấy phía trước ram ngoài lúc nào người ta cũng dùng con ic chốt 74153 ở phía trước nó ngõ ra pic nối vào ic chốt ngõ ra ic chốt nối vào ram ngoài vậy em có nên dùng ic chốt phía trước không anh hay cho dữ liệu đổ từ pic vào ram lun anh!!!!!!!!!!!

và chương trình viết copy font vào ram có khó không anh em đọc thấy người ta viết có cái em đọc hiểu có cái em vẫn chưa rõ anh viết 1 đoạn code nhỏ làm vd minh họa cho em hiểu nhe anh!!!!!!!!!!!!!

và dữ liệu ram ngoài thì mảng mình chứa bao nhiêu byte vậy anh(vd :em muốn làm 14 con led hay hơn thì mình dịch vẫn được đúng hok anh?)

còn 1 điều nữa anh nghĩ nó không quan trọng với anh nhưng em thấy nó quan trọng với em hi đơn giản thôi àk em muốn biết tên anh là gì để dễ xưng hô thôi ạk
tại a đã giúp em nhiều mà em lại hok biết dc anh tên gì thì kỳ lắm hihi

e rất vui vì được quen anh và nhậ được sự giúp đỡ từ anh
cám ơn anh nhiều nhều lắm ạk!!!!!!!!!!!!!:)

ram 6264 có dung lượng 8k như vậy là đủ cho ứng dụng của em.
dùng con ic chốt 74ls573 để chốt d/c thấp (mục đích tiết kiệm chân vdk)
anh tên là:Minh

friend_1990 15-05-2011 09:43 PM

hi cám ơn anh Minh nha!!!!!

vậy mình phải dùng con chốt để tiết kiệm port vdk vậy mình phải dùng 1 port để điều khiển copy ram hả anh?

vậy phần cứng mình phải thiết kế thế nào anh Minh( theo em thì từ vdk nối vào ic chốt sao đó từ ic chốt nối vào ram ngoài )
vậy từ ram ngoài mình có cần nối vào ic ghi dich 595 nua không anh hay mình cho dữ liệu ra trực tiếp

em nghĩ nếu cho dữ liệu ra trực tiếp thì code sẽ phải viết lại từ đầu,nếu dùng 595 phía sau thì mình phải dùng 1 con ic chuyển đổi từ song song ra nối tiếp nữa đúng hok anh Minh tại ram ngoài dữ liệu ra song song mà

em nghĩ vậy không biết đúng hok a chỉnh giùm em nha!!!!!!!!!!!!

àk còn vấn đề em thắc mắc nữa là ram ngoài đó mình chỉ chứa font hay còn phải chứa gì nữa không anh?

cám ơn anh Minh nhiều ạk!!!!!!!!!!!!!

tanbka 16-05-2011 01:15 AM

Hinh nhu cac ban dang lam 1 bang dien tu cho ngan hang hay sao ay ma phai dung them RAM ngoai...Do an cua ban dinh quet bao nhieu cot. Minh nghi trong khuon kho mot do an cua ban thi dung 1 con 16F887 la thua suc roi.
Mình đã từng làm, với một mảng n phần tử, thì bạn quyét được n cột, mảng 40 phần tử bạn đã quyét được 40 cột rồi.
Ngày trước mình dùng con 8051 để quyét 3 module led, dịch trái, phải, lên, xuống, còn thừa sức mà. Vấn đề cơ bản là bạn sắp xếp chương trình như thế nào cho hợp lý
Không nên phức tạp vấn đề quá lên bạn ơi...

friend_1990 16-05-2011 01:45 AM

Trích:

Nguyên văn bởi tanbka (Post 45149)
Hinh nhu cac ban dang lam 1 bang dien tu cho ngan hang hay sao ay ma phai dung them RAM ngoai...Do an cua ban dinh quet bao nhieu cot. Minh nghi trong khuon kho mot do an cua ban thi dung 1 con 16F887 la thua suc roi.
Mình đã từng làm, với một mảng n phần tử, thì bạn quyét được n cột, mảng 40 phần tử bạn đã quyét được 40 cột rồi.
Ngày trước mình dùng con 8051 để quyét 3 module led, dịch trái, phải, lên, xuống, còn thừa sức mà. Vấn đề cơ bản là bạn sắp xếp chương trình như thế nào cho hợp lý
Không nên phức tạp vấn đề quá lên bạn ơi...



vấn đề là pic 16f dung lương ram ko đủ bạn ơi mình ko làm 8051 nên ko rõ nữa đề tài mình bắt buộc dùng pic 16f mà nên mình mới cần sự giúp đỡ của bạn cũng như của mọi người để mình hoàn thành luận văn cuối cùng này

mong bạn giúp đỡ mình
thanks bạn!!!!!!!!!!!!!!!!

friend_1990 16-05-2011 10:51 AM

1 Attachment(s)
Trích:

Nguyên văn bởi tdm (Post 45138)
ram 6264 có dung lượng 8k như vậy là đủ cho ứng dụng của em.
dùng con ic chốt 74ls573 để chốt d/c thấp (mục đích tiết kiệm chân vdk)
anh tên là:Minh


anh Minh ơi em tìm hiểu cả buổi tối nhưng em không biết kết nối ngõ ra ram ngoài như thế nào cho phù hợp với phần mềm mình đã viết hết anh giúp em nha

dưới là protuse e đã vẽ nhưng còn ngõ ra ram ngoài thì em không biết kết nối với 595 như thế nào hết ák

anh có kinh nghiệm chỉ em với!!!!!!!!!!!!!

em chỉ kết nối với 8 con led trên thôi nha anh còn 8 con dưới thì khỏi nhe anh!!!!!!!!!!!!

em cám ơn anh!!!!!!

tdm 16-05-2011 10:12 PM

2 Attachment(s)
Trích:

Nguyên văn bởi friend_1990 (Post 45155)
anh Minh ơi em tìm hiểu cả buổi tối nhưng em không biết kết nối ngõ ra ram ngoài như thế nào cho phù hợp với phần mềm mình đã viết hết anh giúp em nha

dưới là protuse e đã vẽ nhưng còn ngõ ra ram ngoài thì em không biết kết nối với 595 như thế nào hết ák

anh có kinh nghiệm chỉ em với!!!!!!!!!!!!!

em chỉ kết nối với 8 con led trên thôi nha anh còn 8 con dưới thì khỏi nhe anh!!!!!!!!!!!!

em cám ơn anh!!!!!!

phần cứng nó chẳng liên quan gì đến 595 cả.
em nên coi tài liệu liên quan đến sram 6264 để biết cách đọc và ghi nó.
đây là cách cơ bản để kết nối sram 6264 với pic.

friend_1990 16-05-2011 10:19 PM

như vậy dữ liệu mình đổ vào chạy vẫn như cũ hả anh?

em nghĩ dữ liệu mình copy vào ram là 8bit sao mình không dùng từ A0 tới A7 thôi mà phải dùng cả A8 trở xuống nữa hả anh?mình bỏ được không anh nó có tác dụng gì anh nhỉ?

chân data chan chốt chan clk 595 mình vẫn mắc như cũ hay có phải thay đổi gì không anh Minh?

àk nếu mình dùng ram ngoài khi mất điện thì sẽ bị xóa và phải nạp lại chương trình đúng hok anh?

khi mình dùng ngắt rda truyên dữ liệu từ pc xuống pic mình cần phải lưu vào eprom trong pic liệu dung lương pic 16f rom chứa đủ dữ liệu từ máy tính truyền xuống không anh hay phải dùng rom ngaòi nữa anh?

tanbka 16-05-2011 11:17 PM

Oh ý mình nói là con 8051 còn dư RAM thì con PIC 16F chắc chắn thừa vì nó còn nhìu ram hơn mà hix hix...

tanbka 16-05-2011 11:25 PM

16F877 có 256bytes rom cơ mà, bạn liệu đã dùng hết chưa mà đã nghĩ đến chuyện lắp rom ngoại.
Nếu giả sử có thiếu nữa, thì bạn dùng pic16F877A ấy, loại này bạn có thể lưu dữ liệu lên Flash nữa, thoải mái nhé.
À còn về RAM nữa, con này có những 368 bytes RAM, gấp 3 lần con 8051 đó bạn. Mình nghĩ là quá thoải mái để bạn làm một đồ án.
Chúc bạn thành công.

friend_1990 16-05-2011 11:25 PM

Trích:

Nguyên văn bởi tanbka (Post 45194)
Oh ý mình nói là con 8051 còn dư RAM thì con PIC 16F chắc chắn thừa vì nó còn nhìu ram hơn mà hix hix...


sr tại mình ko hiểu ý bạn đùng bùn nhe!!!!!!!!!!

mình dùng nhiều thứ khác nữa nên thiếu rồi bạn ơi!!!!!!!!
bạn có yahoo chứ nếu có mình với bạn có thể trao đổi cho nhau dc chứ

của mình là phongvu_1232002

friend_1990 17-05-2011 12:28 AM

Trích:

Nguyên văn bởi tdm (Post 45191)
phần cứng nó chẳng liên quan gì đến 595 cả.
em nên coi tài liệu liên quan đến sram 6264 để biết cách đọc và ghi nó.
đây là cách cơ bản để kết nối sram 6264 với pic.


anh Minh ơi giờ mình muốn dịch cả 64 cột hay lớn hơn thì biện pháp mình làm là gì hả anh?nó liên quan đến việc mở rộng ram ngoài không anh?
thanks anh!!!!!!!!!!!!!!!

tdm 17-05-2011 10:05 PM

Trích:

Nguyên văn bởi tanbka (Post 45195)
16F877 có 256bytes rom cơ mà, bạn liệu đã dùng hết chưa mà đã nghĩ đến chuyện lắp rom ngoại.
Nếu giả sử có thiếu nữa, thì bạn dùng pic16F877A ấy, loại này bạn có thể lưu dữ liệu lên Flash nữa, thoải mái nhé.
À còn về RAM nữa, con này có những 368 bytes RAM, gấp 3 lần con 8051 đó bạn. Mình nghĩ là quá thoải mái để bạn làm một đồ án.
Chúc bạn thành công.

368 bytes RAM nó chia ra làm nhiều bank
với pic 16f ccs c chỉ cho phép khai báo một mảng sram dài tối đa là 96 byte.
bạn có thể cho một đoạn code để mọi người tham khảo.
làm led matrix quan trọng tốc độ ghi đọc dữ liệu phải nhanh.

tdm 17-05-2011 10:30 PM

Trích:

Nguyên văn bởi friend_1990 (Post 45200)
anh Minh ơi giờ mình muốn dịch cả 64 cột hay lớn hơn thì biện pháp mình làm là gì hả anh?nó liên quan đến việc mở rộng ram ngoài không anh?
thanks anh!!!!!!!!!!!!!!!

theo anh đề tài của em yêu cầu cập nhập nhiệt độ và hiển thị thời gian thực
thì dữ liệu đưa ra bảng matrix cũng khá nhiều.em nên dùng ram ngoài(đây chỉ là ý kiến của anh thôi nhé)
anh cũng làm matrix chán rồi tìm đủ mọi cách tận dụng hết tài nguyên của pic
nhưng tốc độ đọc ghi của Flash,eeprom mất nhiều time quá.

friend_1990 17-05-2011 10:30 PM

vâng em cũng là sẽ dùng ram ngoài anh ạk
nhưng để viết chương trình đọc ram em vẫn chưa hiểu anh có thể viết code để em hiểu hơn dc ko anh chứ em tìm trên mạng nói mong lung với không đúng phần em cần nên em ko biết viết như thế nào mong anh giúp em phần này anh ơi!

em vẫn chưa hiểu là dùng ram để chứa font thôi hay là còn làm việc gì khác nữa không anh?

còn dịch 64 cột hoặc hơn thì mình làm cho hien_thi như thế nào lớn hơn 96 vậy anh?

mong anh giải thích em biết ạk!!!!!
thanks anh !!!!!!!!!

tanbka 17-05-2011 11:56 PM

Mình Không hiểu các bạn dùng nhiều RAM như thế để làm gì, có phải ghi thông tin hiển thị k?
Theo mình thì thông tin hiển thị mình ít khi thay đổi, nên ghi vào enhanced Flash, bộ nhớ thoải mái.
Còn RAM chỉ làm bộ đệm hiển thị ma trận thôi, bảng matrix của mình có bao nhiêu cột thì dùng mảng có độ dài bấy nhiêu, và một số ít biến chương trình nữa, chắc chắn đủ.
Đó là phương pháp mình đã làm, tương đối đơn giản, không phải kết nối thêm ROM, RAM gì hết ấy (à ghi chú mình chưa làm bảng nào to như ở ngân hàng hihi...).
Bạn nào đồng ý với mình, thanks cái còn bit hihhi...

friend_1990 18-05-2011 12:26 AM

Trích:

Nguyên văn bởi tanbka (Post 45241)
Mình Không hiểu các bạn dùng nhiều RAM như thế để làm gì, có phải ghi thông tin hiển thị k?
Theo mình thì thông tin hiển thị mình ít khi thay đổi, nên ghi vào enhanced Flash, bộ nhớ thoải mái.
Còn RAM chỉ làm bộ đệm hiển thị ma trận thôi, bảng matrix của mình có bao nhiêu cột thì dùng mảng có độ dài bấy nhiêu, và một số ít biến chương trình nữa, chắc chắn đủ.
Đó là phương pháp mình đã làm, tương đối đơn giản, không phải kết nối thêm ROM, RAM gì hết ấy (à ghi chú mình chưa làm bảng nào to như ở ngân hàng hihi...).
Bạn nào đồng ý với mình, thanks cái còn bit hihhi...



ở đây mình làm khoảng 16 con led matrix dùng để hiển thị nhiệt độ giờ phút giây ngày tháng năm mình nghĩ dung lượng ram ko đủ tai mình đang làm hiển thị nhiệt độ không thôi chiếm dung lượng ram 50% rồi và còn nhiều cái khác mình vẫn chưa hoàn thành nên mình nghĩ sẽ không đủ

bạn đã từng làm quang báo vậy thì có kinh nghiệm chỉ mình dc chứ ?
bạn có làm hiển thị ngày giờ không dùng pic 16f ấy nếu có chia sẻ mình với mọi người cùng tham khảo,dc chứ ?

thanks ban nhiều!!!!!!!!!!!!!

tanbka 18-05-2011 10:29 AM

Oh bạn ko hiểu ý mình rồi, ý mình là ko cần thiết phải dùng RAM ngoài. Ý tưởng về chương trình thì mình đã viết phía trên rồi mà.

friend_1990 18-05-2011 10:48 AM

Trích:

Nguyên văn bởi tanbka (Post 45249)
Oh bạn ko hiểu ý mình rồi, ý mình là ko cần thiết phải dùng RAM ngoài. Ý tưởng về chương trình thì mình đã viết phía trên rồi mà.



cám ơn thái đã góp ý kiến cho mình!!!!!!!!!!!!
thái có thể nói cụ thể hơn về ds 1307 dc ko?mình vẫn chưa rõ về con này lắm mong thái chỉ mình và mọi người cùng tham khảo
thanks thái nha!!!!!!!!!!

friend_1990 18-05-2011 09:47 PM

Trích:

Nguyên văn bởi tdm (Post 45235)
theo anh đề tài của em yêu cầu cập nhập nhiệt độ và hiển thị thời gian thực
thì dữ liệu đưa ra bảng matrix cũng khá nhiều.em nên dùng ram ngoài(đây chỉ là ý kiến của anh thôi nhé)
anh cũng làm matrix chán rồi tìm đủ mọi cách tận dụng hết tài nguyên của pic
nhưng tốc độ đọc ghi của Flash,eeprom mất nhiều time quá.


chỉ em cách viết ram ngoài đi anh Minh ơi hic em đọc mãi vẫn không viết dc?
với ram ngoài chủ yếu mình làm gì anh dùng luu7 font chữ thôi hả anh?
mong anh giúp em.......................
thanks anh Minh nhiều !!!!!!!!!!!!!!!!!!!

tdm 18-05-2011 11:24 PM

Trích:

Nguyên văn bởi friend_1990 (Post 45271)
chỉ em cách viết ram ngoài đi anh Minh ơi hic em đọc mãi vẫn không viết dc?
với ram ngoài chủ yếu mình làm gì anh dùng luu7 font chữ thôi hả anh?
mong anh giúp em.......................
thanks anh Minh nhiều !!!!!!!!!!!!!!!!!!!

bài viết cũng đã nhiều anh nghĩ em lên trọn cho mình một thiết kế tối ưu nhất sau khi tham khảo ý kiến mọi người trên diễn đàn.sau đó tập chung viết code cho nó từng phần một.
hiện tại em đã có phần cứng chưa.
em đã có thể viết được những gì rồi.
vài lời góp ý cho em kẻo tẩu hỏa nhập ma.

friend_1990 18-05-2011 11:55 PM

Trích:

Nguyên văn bởi tdm (Post 45274)
bài viết cũng đã nhiều anh nghĩ em lên trọn cho mình một thiết kế tối ưu nhất sau khi tham khảo ý kiến mọi người trên diễn đàn.sau đó tập chung viết code cho nó từng phần một.
hiện tại em đã có phần cứng chưa.
em đã có thể viết được những gì rồi.
vài lời góp ý cho em kẻo tẩu hỏa nhập ma.


theo hướng dẫn anh thì em đã làm được hiển thị nhiệt độ và phần cứng rồi

cụ thể em sẽ trao đổi với anh qua mail nha anh cả phần cứng code!!!!!!!!!!

thanks anh Minh nhiều lắm ạk!!!!!!!!

tanbka 20-05-2011 10:10 AM

Oh sao đang ma trận lại chuyển sang DS1307 vậy. đang có luồng về con này thì phải. Con này xem datasheet của nó đủ mà, phần mềm thì trên mạng có rồi, mình cũng down về, chỉnh sửa 1 chút, chạy ngon lành đó.

friend_1990 20-05-2011 11:32 AM

Trích:

Nguyên văn bởi tanbka (Post 45301)
Oh sao đang ma trận lại chuyển sang DS1307 vậy. đang có luồng về con này thì phải. Con này xem datasheet của nó đủ mà, phần mềm thì trên mạng có rồi, mình cũng down về, chỉnh sửa 1 chút, chạy ngon lành đó.


đọc để hiểu là 1 vấn đề áp dụng cái hiểu đó để viết chương trình lại là khác do kỹ năng lập trình mình rất yếu học vxl chỉ có 45 tiết lý thuyết trên lớp nên để viết và lập trình cho 1 con gì ddoi6169 với mình thì là cả 1 vấn đề cậu nên viết 1 chương trình ngắn làm vd chứ nói khơi khơi như vậy thì rất khó cho mọi người có thể hình dung dc đặt biệt là những người mới chập chững lập trình như mình đây
thanks thái đã góp ý kiến cho mình!!!!!!!!!!!!

tanbka 22-05-2011 01:28 AM

Bác mình bảo đã có luồng nói về cái này rùi mà, mới đây nhất bác tdm cũng đã up cả code lên rồi đó, bạn chỉ cần down về là xong mà.

friend_1990 30-05-2011 06:13 PM

Trích:

Nguyên văn bởi tanbka (Post 45365)
Bác mình bảo đã có luồng nói về cái này rùi mà, mới đây nhất bác tdm cũng đã up cả code lên rồi đó, bạn chỉ cần down về là xong mà.

cám ơn bác đã cho ý kiến giờ tui đã làm chạy giờ phút giây nhưng khi chay thực tế thì không đúng không hiểu sao nữa nếu ai đã làm xin cho ý kiến với


mình dung ds1307 giao tiep i2c với pic 16f877a mong dc sự chỉ giáo từ các bạn!!!!!!!!!

tritamkute123 24-01-2013 05:34 PM

anh co chương trinh chay chu a tren led matrix dung pic 16f877a k cho e xin dia chi mail em la tritamvip@gmail.com


Múi giờ GMT. Hiện tại là 12:34 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam