|
Tài trợ cho PIC Vietnam |
Giao tiếp cổng COM và LPT RS232, RS485 và LPT là những giao tiếp cơ bản và kinh điển khi mới học về vi điều khiển... |
|
Ðiều Chỉnh | Xếp Bài |
06-07-2012, 08:43 AM | #1 |
Đệ tử 1 túi
Tham gia ngày: Oct 2010
Bài gửi: 13
: |
mạch giao tiếp RS232
các anh chị ơi !! các anh chị cho em hỏi là mạch giao tiếp RS232 em tìm trên các diễn đàn thì các chân nối tới Cổng Com và vi điều khiển (Pic16f877a) thì không có cổng Not ở chân 12 và 14 như trong hình em gửi dưới đây !nhưng chương trình em viết và mô phỏng trên Proteus thì phải cho thêm 2 cổng NOT nó mới chạy đúng .Các anh chị giải thích hộ em với a! nếu làm mạch in thì có cần cho thêm 2 cổng NoT vào không ạ!Em dùng MAX232 CPE mua ở trợ trời 6k anh chị ạ !Em xin cảm ơn !
Hình em gui day ạ ! http://www.mediafire.com/imageview.p...c4tdw62yjd86wr |
06-07-2012, 09:29 AM | #2 | |
Đệ tử 6 túi
Tham gia ngày: Feb 2009
Bài gửi: 127
: |
Trích:
|
|
06-07-2012, 05:49 PM | #3 |
Đệ tử 1 túi
Tham gia ngày: Oct 2010
Bài gửi: 13
: |
anh ơi !!! em có test cong COM trên máy tính để bàn bằng phần mềm Terminal thấy cổng COM còn tốt ! Sau đó em lắp các linh kiện như trên hình trên và cắm vào cổng COM ,khi chưa cấp nguồn 5V cho mạch RS232 và chưa nối tắt 2 chân 11,12 trên con Max 232 , em test lại bằng Terminal thì cổng Com vẫn truyền dc !!!Cắm điện cấp nguồn cũng truyền dc như vậy!! Sau đó em rút một dây từ com vào Max232 thì không truyền dc nữa ! em đo 2 chân cắm từ Com vào thì không chập ,!! Vậy nguyên nhân là do làm sao ạ !!! Em sợ hỏng pic nên chưa giám nối vói pic anh ạ !!
|
07-07-2012, 12:36 AM | #4 |
Đệ tử 1 túi
Tham gia ngày: Oct 2010
Bài gửi: 13
: |
Hiển thị lên PC bằng VB6.0 bị sai số liệu !! Anh chị giúp em với ạ!
Em làm mạch đo nhiệt độ dùng LM35 đang trong giai đoạn mô phỏng ! chương trình đo và hiển thị lên LCD , giao tiếp với PC qua RS232 để hiển thị nhiệt độ trên giao diện VB6.0, khi chạy trương trình hiển thị LCD thì ok rồi ,chỉ có điều là trên giao diện VB 6.0 hiển thị không đúng, em cho in thử một số lên cũng không đúng !! Code em sai chỗ nào anh chị chỉ rùm em với ạ!! thanks anh chị ! .
Code CCS : ...... While (true) { adc = read_adc(); nd=adc*500/1023; LCD_putcmd(0xC0); Printf(LCD_putchar," t = %f",nd) ; LCD_putcmd(0xCA); LCD_putchar("(C)") ; delay_ms(500); printf("%f",nd); } } Code VB6.0 : ------------------------------------------------ Private Sub Form_Load() MSComm1.CommPort = 1 MSComm1.Settings = "9600,n,8,1" MSComm1.RThreshold = 1 MSComm1.SThreshold = 255 MSComm1.PortOpen = True End Sub ------------------------------------------------ Private Sub MSComm1_OnComm() Dim n As Integer If (MSComm1.CommEvent = comEvReceive) Then n = Asc(MSComm1.Input) Text1.Text = CDec(n) End If End Sub Hình chương trình em mô phỏng đây ạ! http://www.mediafire.com/imageview.p...853z6d3073mmom |
09-07-2012, 09:40 AM | #5 | |
Đệ tử 6 túi
Tham gia ngày: Feb 2009
Bài gửi: 127
: |
Trích:
bạn lên thay lệnh: printf("%f",nd); bằng đoạn code sau x1 = nd/10 | 0x30 ; x2 = nd%10 | 0x30 ; putchar(x1); putchar(x2); |
|
01-11-2012, 03:10 PM | #6 |
Nhập môn đệ tử
Tham gia ngày: Sep 2011
Bài gửi: 10
: |
các anh cho em hỏi câu lệnh :
output_high(PIN_C0); //motor direction output_high(PIN_C3); //brake trong chương trình sau để làm gì ak! //file name: using_rs232.c //using RS232 to get value from A/D converter //pins connections // A0: Analog input (from 10K variable resistor) #include <16f877.h> #device PIC16F877 *=16 ADC=10 //using 10 bit A/D converter #use delay(clock=20000000) //we're using a 20 MHz crystal #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7) int16 value; void AD_Init() //initialize A/D converter { setup_adc_ports(RA0_RA1_RA3_ANALOG); //set analog input ports: A0,A1,A3 setup_adc(ADC_CLOCK_INTERNAL); //using internal clock set_adc_channel(0); //input Analog at pin A0 delay_us(10); //sample hold time } void main() { AD_Init(); //initialize A/D converter while(1) { output_high(PIN_C0); //motor direction output_high(PIN_C3); //brake value=read_adc(); //for changing motor speed printf("A/D value %lu\r", value); } } em thấy trong sơ đồ mạch thì chân RC0,RC3 bỏ trống mà còn chân RC6,RC7 thì lại được nối với J. sơ đồ mạch như sau: http://img15.imageshack.us/img15/9497/16f877.png |
|
|