![]() |
![]() |
#181 |
Đệ tử 2 túi
Tham gia ngày: Mar 2007
Bài gửi: 45
: |
[QUOTE=nhh;8442]- #use fast_io(b): dùng cái này thì trình dịch chỉ set chân i/o với 1 lệnh duy nhất, nhớ là trong hàm main() phải dùng lệnh set_trix_x(); thì mới được.
- #byte portb=0x06: địa chỉ portb -tấc cả nhửng cái này đã được định nghĩa rất kĩ và dể hiểu bạn tìm các bài của anh linhnc308, tìm bài nói về file _def_877a.h ấy. chúc may mắn!!! |
![]() |
![]() |
#182 | |
Đệ tử 6 túi
Tham gia ngày: Oct 2006
Bài gửi: 147
: |
Trích:
vâng! em cám ơn anh.em cũng chưa kịp đọc help nên mới như vậy. |
|
![]() |
![]() |
#183 |
Nhập môn đệ tử
Tham gia ngày: Mar 2007
Bài gửi: 5
: |
Mọi người cho em hỏi chút ạ,
Em đang viết ct hiện số cho led 7 thanh như mạch dưới dùng polling nhưng ko sao chạy được T_T. Nhất là ko chọn được 2 chân Anode chung, lúc nào cũng hiện cả 2 led cùng lúc. Đoạn code của em như sau: Code:
int chuso[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; int i, j; void main() { while(1){ output_b(0x00); //tat cac led output_e(0xFF); i = 0; //output_e(0x00); while(i<3){ output_e(i); for(j = 0; j<=9; j++){ output_b(~chuso[j]); delay_ms(10); } //delay_ms(30); i++; } } } |
![]() |
![]() |
#184 | |
Đệ tử 4 túi
Tham gia ngày: Aug 2006
Bài gửi: 61
: |
Trích:
Còn code khi tăng thời gian delay lên 1000 thì thấy rõ nhưng không hiểu bạn định làm gì. Sao ko post được file đính kèm ![]() thay đổi nội dung bởi: huybo02, 06-05-2007 lúc 09:32 PM. |
|
![]() |
![]() |
#185 | |
Nhập môn đệ tử
Tham gia ngày: Mar 2007
Bài gửi: 5
: |
Trích:
Dù sao cũng cám ơn bạn nhé. |
|
![]() |
![]() |
#186 |
Đệ tử 6 túi
Tham gia ngày: Jul 2006
Bài gửi: 135
: |
Mình viết chương trình đọc giá trị trả về từ bộ ADC của PIC, sau đó xử lý dữ liệu để xuất ra LED 7 đoạn. Khi chạy thử thì thấy hiển thị sai, hiển thị lung tung. Kiểm tra lại phần cứng và phần mềm thấy OK. Cho chạy Deburg thì phát hiện CCS thực hiện phép chia sai (kết quả luôn bằng 0 bất chấp kiểu của biến).Bó tay!
Có ai biết lí do xin chỉ giúp mình với. Cảm ơn! |
![]() |
![]() |
#187 |
Đệ tử 2 túi
Tham gia ngày: Mar 2007
Bài gửi: 45
: |
Anh nào có phần mền viết font 32 x 16 cho em xin với em chân thành cám on
|
![]() |
![]() |
#188 |
Nhập môn đệ tử
Tham gia ngày: Apr 2006
Bài gửi: 4
: |
Code:
#include<16F876A.h> #fuses NOLVP, NOWDT,PUT,HS,NOPROTECT #use delay(clock=12000000) #use fast_io(a) #use fast_io(b) #use fast_io(c) #byte porta=0x5 #byte portb=0x6 #byte portc=0x7 #bit RB0=portb.0 #bit G1 = porta.0 #bit G2 = porta.1 #bit G3 = porta.2 #bit G4 = porta.3 #bit G5 = porta.4 #bit G6 = porta.5 #bit G7 = portc.0 #bit G8 = portc.1 #bit G9 = portc.2 #bit G10 = portc.3 #bit G11 = portc.4 #bit G12 = portc.5 #bit G13 = portc.6 #bit G14 = portc.7 #bit G15 = portb.1 #bit G16 = portb.2 #bit G17 = portb.3 #bit G18 = portb.4 #bit G19 = portb.5 #bit G20 = portb.6 #bit led = portb.7 main() { setup_adc( ADC_OFF ); set_tris_a(0); set_tris_b(0b00000001); set_tris_c(0); while(true) { G1=1; G2=1; G3=1; G4=1; G5=1; G6=1; G7=1; G8=1; G9=1; G10=1; G11=1; G12=1; G13=1; G14=1; G15=1; G16=1; G17=1; G18=1; G19=1; G20=1; } } Ah, em đã thử thêm dòng lệnh Code:
ADCON1 = 0x06; Cho em hỏi chương trình em viết có thiếu gì không? và thiếu thì thêm như thế nào? Em xin cám ơn. thay đổi nội dung bởi: conanhung, 09-05-2007 lúc 11:41 AM. Lý do: thêm |
![]() |
![]() |
#189 | |
Đệ tử 2 túi
Tham gia ngày: Jan 2006
Bài gửi: 36
: |
Trích:
Bạn cho G5 = 0; thì đèn sáng thôi.
__________________
************************************************** ** The only wrong thing would be to deny what your heart truly feels! ************************************************** ** |
|
![]() |
![]() |
#190 |
Nhập môn đệ tử
Tham gia ngày: Apr 2006
Bài gửi: 4
: |
Em viết lại đoạn code này và cho chạy:
Code:
#include<16F876A.h> #fuses NOLVP, NOWDT,PUT,HS,NOPROTECT #use delay(clock=12000000) #use fast_io(a) #use fast_io(b) #use fast_io(c) #byte adcon1=0x9F #byte porta=0x5 #byte portb=0x6 #byte portc=0x7 #bit G5 = porta.4 #bit G6 = porta.5 main() { adcon1=0x06; set_tris_a(0); set_tris_b(0b00000001); set_tris_c(0); while(true) { G5=1; G6=1; delay_ms(2000); G5=0; G6=0; delay_ms(2000); } } 2 lệnh Code:
#byte adcon1=0x9F và adcon1=0x6; |
![]() |
![]() |
#191 | |||
...Damned...
Tham gia ngày: Apr 2006
Nơi Cư Ngụ: Hồ Chí Minh
Bài gửi: 522
: |
Trích:
Thông thường để hạn dòng bạn chỉ nên dùng 470 ohm. Trích:
Đã lỡ sửa bạn thì sửa luôn, không có ngõ vào cực thu hở chỉ có ngõ ra cực thu hở. Ở đây gọi chính xác là cực máng hở - Open Drain, cực thu hở - Open Collector chỉ trong các mạch logic TTL. Trích:
thay đổi nội dung bởi: bien_van_khat, 09-05-2007 lúc 09:07 PM. Lý do: dư 2 chữ "của" :( |
|||
![]() |
![]() |
#192 |
Nhập môn đệ tử
Tham gia ngày: Apr 2006
Bài gửi: 4
: |
ok, thanks các bác nhiều, thật ra em dùng điện trở hạn dòng 330, còn điện trở kéo lên Vcc là 4k7 mà ghi nhầm, sory. Thanks các bác.
|
![]() |
![]() |
#193 | |
Đệ tử 6 túi
Tham gia ngày: Oct 2006
Bài gửi: 147
: |
Trích:
mail cua mình: anh_gioi@yhaoo.com cám ơn cậu nha |
|
![]() |
![]() |
#194 |
Đệ tử 1 túi
Tham gia ngày: May 2007
Bài gửi: 15
: |
Đo tấn số
Xin chào! Tôi là thành viên mới. Thấy anh em trong diễn đàn tao đổi hay quá, tôi xin tham gia cùng. Tôi gửi chương trình làm với PIC6F876A cho anh em tham khảo cùng. Mạch này đo được tần số lên đến 50MHz. Tôi muốn anh em giúp tôi khi muốn đo tần số sóng mang trong tín hiệu đã điều chế biên độ thì làm thế nào? Code:
/*============================================================================== * Author :DRAGON(Hungnv0401@gmail.com) * File Name :Do tan so den 50MHz va hien thi tren LCD * Data :16/5/2007 * Hardware :PIC16F876A * Compiler :CCS C 3.249 * Description :50MHz frequency Counter & Display on LCD, Input is PIN_C0(Pin11) *=============================================================================*/ #include <16F876A.h> #fuses HS,NOWDT,NOPROTECT,NOLVP #bit TMR1IF = 0x0C.0 #use delay(clock=20000000) #define RS PIN_C4 #define RW PIN_C5 #define CE PIN_C7 int8 ch_tr, tr, tr_ngh, van, ngh; // chuc trieu, trieu, tram nghin, van, nghin int8 cycles8, cycles; int16 freqc_high; int16 freqc_low; int32 freq; //-----------------------------------------------------------------------------// //* --------------------- Khoi tao cho LCD -----------------------------------*// void lcd_init() { output_low(RS); output_low(RW); output_low(CE); OUTPUT_b(0x0f); delay_us(100); output_high(CE); delay_us(100); output_low(CE); } //-----------------------------------------------------------------------------// //*---------------------- Dua byte ra LCD -----------------------------------*// void lcd_put(byte data) { output_high(RS); output_low(RW); output_low(CE); OUTPUT_b(data); delay_us(500); output_high(CE); delay_us(500); output_low(CE); } //-----------------------------------------------------------------------------// //*-------------------------- Chon 2 dong cho LCD ---------------------------*// void lcd_2lines() { output_low(RS); output_low(RW); output_low(CE); OUTPUT_b(0x38); delay_us(500); output_high(CE); delay_us(500); output_low(CE); } //-----------------------------------------------------------------------------// //*----------------------------- Gui dia chi cho LCD ------------------------*// void lcd_add(byte add) { byte real_add; real_add = 0x80 + add; output_low(RS); output_low(RW); output_low(CE); OUTPUT_b(real_add); delay_us(500); output_high(CE); delay_us(500); output_low(CE); } //-----------------------------------------------------------------------------// //*--------------------------- Chuong trinh chinh ---------------------------*// void main() { lcd_init(); lcd_2lines(); while (TRUE) { cycles8=0; cycles=0; freqc_high=0; TMR1IF = 0; set_timer1(0); setup_timer_1(T1_EXTERNAL|T1_DIV_BY_1); //* -------------------------- Doi 1 giay ---------------------------------- *// while (cycles!=0xFF) { cycles8=0; while (cycles8!=0xFF) { if (TMR1IF) { TMR1IF = 0;freqc_high++; } else { delay_cycles(5); } delay_cycles(62); cycles8++; } delay_cycles(216); cycles++; } delay_cycles(211); //*----------------------Ket thuc 1 giay ------------------------------------*// //* ----------------Lay gia tri tu bo dem tan so ----------------------------*// freqc_low = get_timer1(); freq=(65536*freqc_high + freqc_low)/5; //Vi thuc chat thach anh ta su dung //o day la 4MHz = 1/5 cua 20MHz ch_tr = freq/10000000 + 48; tr = (freq%10000000)/1000000 + 48; tr_ngh = ((freq%10000000)%1000000)/100000 + 48; van = (((freq%10000000)%1000000)%100000)/10000 + 48; ngh=((((freq%10000000)%1000000)%100000)%10000)/1000 + 48; lcd_add(0x02); lcd_put('F'); lcd_put('r'); lcd_put('e');lcd_put('q'); lcd_put(32); lcd_put('C'); lcd_put('o'); lcd_put('u');lcd_put('n'); lcd_put('t'); lcd_put('e'); lcd_put('r'); lcd_put(32);lcd_put(32); lcd_put(32); lcd_add(0x42); lcd_put('F'); lcd_put('r'); lcd_put('e');lcd_put('q'); lcd_put(':'); lcd_put(ch_tr); lcd_put(tr); lcd_put('.'); lcd_put(tr_ngh); lcd_put(van); lcd_put(ngh); lcd_put(32); lcd_put('M'); lcd_put('H'); lcd_put('z');lcd_put(32);lcd_put(32); lcd_put(32);lcd_put(32);lcd_put(32); delay_ms(50); } } //End thay đổi nội dung bởi: falleaf, 18-05-2007 lúc 03:41 PM. |
![]() |
![]() |
#195 |
Đệ tử 1 túi
Tham gia ngày: May 2007
Bài gửi: 15
: |
Chào anh nhh!
Cảm ơn anh đã post lên nhiều chương trình rất dễ hiểu. Anh cho hỏi: Tôi muốn vừa tiến hành đo điện áp và hiển thị lên LCD vừa định thời gian thì làm thế nào?. Cụ thể là tôi có bài tập tiến hành đo điện áp của 1 thiết bị sạc ác quy, vấn đề này thì không có gì, nhưng tôi muốn đo thời gian nó đã sạc nữa, đơn vị tính thời gian là phút. Mong anh nhh va các anh em trong diễn đàn giúp đỡ! Thanks alot! |
![]() |
![]() |
|
|
![]() |
||||
Ðề tài | Người gửi | Chuyên mục | Trả lời | Bài mới |
TUT về USART trong PIC16F877A | mafd_47a | MPASM | 16 | 19-02-2025 05:32 AM |
TUT ve I2C ( pic16f877a ) | mafd_47a | MPASM | 28 | 28-01-2025 10:45 PM |
Lập nhóm PIC16F877A | nhh | Cơ bản về vi điều khiển và PIC | 285 | 08-03-2017 11:08 PM |
Bộ so sánh và PWM cho PIC16F877A | anhquangngai | Cơ bản về vi điều khiển và PIC | 24 | 08-09-2012 09:00 AM |
Pic16f877a TỪ DỄ TỚi KhÓ | ntc | Cơ bản về vi điều khiển và PIC | 373 | 23-05-2009 10:24 PM |