![]() |
Kit thí nghiệm pic6f877a đơn giản, hiệu quả
1 Attachment(s)
Hôm trước có post led ma trận, led 7 đoạn với 74HC595, hôm nay post luôn kit Pic6f877a cho "đủ tụ".
Mạch hơi lớn để làm cho dễ và sử dụng hết bề rộng board đồng 200. Anh em ủi về xài cho vui!!!!!!!!!!!! Làm biếng chụp hình đưa lên quá!!!!!!!. Để hôm khác rảnh luận về truyền dữ liệu trên thanh ghi dịch chơi!!!!!!!!. Đang busy rồi!!!!!!!!!!! |
Truyền dữ liệu thanh ghi dịch 74hc595
Chân Clock: E2
Chân data: E0 Level1: Xuất nhấp nháy dữ liệu 8 bit ra thanh ghi dịch: #include <16F877A.h> #include <DEFS_16F877A.h> #device *=16 ADC=10 #include <stdlib.h> #fuses HS,NOWDT,NOPROTECT,NOLVP,NODEBUG #use delay(clock=16000000) #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8) //=========================functions use======================================== void load_eep_macdinh(); Void clock(); Void sent_data(); int8 k,data; int8 data1=0b00001111; #define out_data RE1 //======================================functions use=========================== /********************* Ham main *************************/ void main() { set_tris_B(0); set_tris_D(0); set_tris_E(0); set_tris_A(0xff); out_data=0; While(true) { data=data1; sent_data(); out_data=1; delay_ms(500); out_data=0; delay_ms(500); } } Void sent_data() { for(k=1;k<=8;k++) { #bit in=data.7 if(in==1) {output_high(PIN_E0);} else {output_low(PIN_E0);} clock(); data = data<<1; } } Void clock() { output_high(PIN_E2); output_low(PIN_E2); } Level2: Xuất nhấp nháy dữ liệu 1 mảng ra thanh ghi dịch: #include <16F877A.h> #include <DEFS_16F877A.h> #device *=16 ADC=10 #include <stdlib.h> #fuses HS,NOWDT,NOPROTECT,NOLVP,NODEBUG #use delay(clock=16000000) #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8) //=========================functions use======================================== void load_eep_macdinh(); Void clock(); Void sent_data(); int8 i,k,data; int8 data1[]={0b00000000,0b00000001,0b00000010,0b00000011,0b00 000100,0b00000101,0b00000110,0b00000111,0b00001000 ,0b00001001}; #define out_data RE1 //======================================functions use=========================== /********************* Ham main *************************/ void main() { set_tris_B(0); set_tris_D(0); set_tris_E(0); set_tris_A(0xff); out_data=0; While(true) { for(i=0;i<10;i++) { data=data1[i]; sent_data(); out_data=1; delay_ms(500); out_data=0; delay_ms(500); } } } Void sent_data() { for(k=0;k<8;k++) { #bit in=data.7 if(in==1) {output_high(PIN_E0);} else {output_low(PIN_E0);} clock(); data = data<<1; } } Void clock() { output_high(PIN_E2); output_low(PIN_E2); } Chú ý: khi truyền dữ liệu ra thanh ghi dịch thì out_data phải xuống mức 0, nếu không sẽ bị lỗi!!!!!!!!!!. Các level khác .....hôm khác vậy!!!!!!!! |
có file mô phỏng trên proteus không anh.em muốn mô phỏng cái mạch đo nhiệt độ hiển thị trên led 7 đoạn(điều khiển nhiệt độ dùng quạt)anh xem cái mạch mô phỏng của em thế này đúng chưa
http://www.mediafire.com/?j6d7cktf31wnzul |
ko co ten linh kien ah
|
Múi giờ GMT. Hiện tại là 01:37 AM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam