Tìm kiếmĐăng ký thành viên  >  Đăng nhập    Liên hệ     
  

Trang chủ



Thảo luận



 SỰ KIỆN ĐẶC BIỆT TẠI VAGAM/ EVENTS & SEMINARS
 Thông tin chung
 Điện – điện tử: căn bản và các chuyên đề
 Cảm biến và cơ cấu chấp hành
 Lập trình vi xử lý, vi điều khiển và điều khiển logic
- Vi điều khiển 89c51
- Vi điều khiển AVR.
- Vi điều khiển PIC.
- Các trao đổi về Vi điều khiển khác
 Giao tiếp máy tính - truyền dữ liệu - xử lý ảnh số
 Phần mềm và ngôn ngữ lập trình trong kỹ thuật
 Điều khiển tự động
 Thiết kế và mô phỏng hệ thống cơ khí
 Các chuyên đề ÔTÔ, XE MÁY - ROBOT - AUTOMATION
 Anh văn kỹ thuật
 Chia sẻ tài liệu cùng các thành viên
 Các chủ đề thảo luận chung
 Mã nguồn mở



Tài liệu tham khảo









http://hocdelam.org

http://labview.hocdelam.org

http://vagam.dieukhien.net/index.php?tpid=5&catid=10&chapid=83

http://vagam.dieukhien.net/index.php?tpid=5&catid=24&chapid=75

http://vagam.dieukhien.net/index.php?tpid=5&catid=5&chapid=33

http://vagam.dieukhien.net/index.php?arid=37

http://vagam.dieukhien.net/discuss.php?thid=148&pagenum=1

http://vagam.dieukhien.net/discuss.php?thid=456

http://vagam.dieukhien.net/discuss.php?thid=497&pagenum=1

http://vagam.dieukhien.net/discuss.php?ftopid=12&fcatid=44

http://www.dieukhien.net

http://dieukhientudong.com

http://suno.vn


http://spkt.net/diendan/

http://sanpham.hocdelam.org

http://robot.kut.ac.kr

http://labview.hocdelam.org/vn/Nghien-cuu/Hoi-thao-khoa-hoc.nso

http://www.phone4vn.com




Bài 6 : Lâp trình giao tiếp máy tính 232

| 1 | 2 | > Tiếp >> Cuối 
 giotdang | 16:12:24 10-01-08 | Posts: 191 1
Tóm tắt:Qua bài này các bạn có thể gửi và nhận các kí tự lên máy tính từ avr .Sử dụng phần Terminal của codevision.


Giới thiệu :

Chuẩn giao tiếp RS232
Ghép nối qua cổng nối tiếp RS-232 là một trong những kỹ thuật được sử dụng rộng rãi nhất để ghép nối các thiết bị ngoại vi với máy tính. Qua cổng nối tiếp có thể ghép nối chuột, modem, thậm chí cả máy in, bộ biến đổi AD, các thiết bị đo lường .
Việc truyền dữ liệu xẩy ra trên 2 đường dẫn qua chân cắm ra TxD, gửi dữ liệu của nó đến thiết bị khác. trong khi đó dữ liệu mà máy tính nhận được dẫn đến chân RxD. các tín hiệu khác đóng vai trò như tín hiệu hỗ trợ khi trao đổi thông tin và vì thế không phải trong mọi ứng dụng đều dùng đến.
Mức tín hiệu trên chân ra RxD tùy thuộc vào đường dẫn TxD và thông tin thường nằm trong khoảng – 12V.. + 12V các bit dữ liệu được đảo ngược lại. Mức điện áp ở mức cao nằm trong khoảng – 3V và – 12V và mức thấp nằm trong khoảng từ + 3Vvà +12V . Trạng thái tĩnh trên đường dẫn có mức điện áp – 12V.

Lập trình truyền thông nối tiếp trên Atmega16
Atmega16 hỗ trợ rất tốt cho truyền thông nối tiếp USART. Các đặc điểm nổi bật là:
- Hoạt động toàn phần Full-duplex.
- Hỗ trợ cả hoạt động đồng bộ và không đồng bộ.
- Định dạng khung có thể lập trình (với 5,6,7,8 hoặc 9 Data bits và 1 hoặc 2 Stop Bits), tự dò lỗi định dạng khung và lỗi Data Over Run.
- Hỗ trợ truyền thông điều khiển ngắt.
- Hỗ trợ truyền thông đa xử lý.
Các đặc điểm của Bộ thu (Receiver):
- Dò trạng thái rỗi của đường truyền.
- Dò lỗi khung, nhiễu, và lỗi overrun.
- Báo trạng thái thanh ghi dữ liệu của bộ thu đầy.
Các đặc điểm của bộ phát (Transmitter) :
- Báo trạng thái thanh ghi dữ liệu bộ phát rỗng.
- Báo hoàn thành quá trình truyền.
- Ngắt quá trình truyền.
- Phát trạng thái rỗi lên đường truyền.


Cách thiết lập Terminal trên codevision

vào Tool/Terminal ta có :



Sau khi thiết lập như trên vđk và PC giống nhau về tốc độ và khung truyền .

khi giao tiếp ta click vào biểu tượng hình máy tính :



Xét chế độ cho VĐK :
// CHE DO KO DONG BO ,8 BIT , 1 BIT STOP ,U2X=0,ko dung parity

UCSRA=0x00;
UCSRB=0x90; //E ngat nhan va E cho nhan
UCSRC=0x86; // che do
UBRRH=0x00;
UBRRL=0x33; // baud =9600 of 8Mhz tan so thach anh

Thanh ghi điều khiển và trạng thái A (UCSRA).
- Bit 7 – RXC: USART Receive Complete. Bit này được set khi có dữ liệu không đọc được vào bộ đệm nhận, hay bộ đệm nhận đã đầy và nó bị xoá khi bộ đệm nhận là rỗng. Cờ RXC có thể sử dụng để phát ra một ngắt báo Receive Complete.
- Bit 6 – TXC: USART Transmit Complete: Bit này được set nếu quá trình truyền hoàn thành, đó là tại lúc kết thúc một khung gửi đi. Cờ TXC có thể dùng phát ra một ngắt Transmit Complete.
- Bit 5 – UDRE: USART Data Register Empty. Bit này được set nếu thanh ghi dữ liệu phát (bộ đệm truyền) là rỗng và sẵn sàng nhận dữ liệu mới. Cờ này cũng có thể dùng đẻ phát ra một ngắt.

Thanh ghi điều khiển và trạng thái B (UCSRB)
- Cho phép ngắt .
Thanh ghi điều khiển và trạng thái C (UCSRC).
- Bit 7 – URSEL: Register Select. Bit này chọn việc truy nhập vào UCSRC hoặc UBRRH. Nếu URSEL = 1 thì sẽ chọn làm việc với UCSRC, URSEL phải được viết là 1 khi thực hiện viết UCSRC.
- Bit 6 – UMSEL: USART Mode Select. Bít này dùng để chọn giữa chế độ hoạt động đồng bộ (UMSEL = 1) hay không đồng bộ (UMSEL= 0).
- Thanh ghi tốc độ Baud (UBRRL và UBLLH).
- Bit 15 – URSEL: Register Select. URSEL = 0 ( làm việc với UBRRH.
- Bit 14:12 – Reserved Bits. Các bit này dành cho các ứng dụng tương lai.
- Bit 11:0 – UBRR11:0: USART Baud Rate Register. Đây là thanh ghi 12 bit chứa tốc độ baud của USART, UBRRH chứa 4 bit cao nhất và UBBRRL chứa 8 bit thấp còn lại.


VD: Gửi tín hiệu gõ ở terminal , vđk nhận và hiển thị lên LCD

Chú ý :
getchar(); là lệnh nhận giá trị từ chân RX từ PC
putchar(var); gửi var ra chân TX lên PC

c code
  1.  
  2.  
  3.  
  4. /*****************************************************
  5. This program was produced by the
  6. CodeWizardAVR V1.24.8d Professional
  7. Automatic Program Generator
  8. © Copyright 1998-2006 Pavel Haiduc, HP InfoTech s.r.l.
  9. http://www.hpinfotech.com
  10.  
  11. Project :
  12. Version :
  13. Date : 1/10/2008
  14. Author :Tuan Le ngoc
  15. Company : BIA++
  16. Comments:
  17.  
  18.  
  19. Chip type : ATmega16L
  20. Program type : Application
  21. Clock frequency : 4.000000 MHz
  22. Memory model : Small
  23. External SRAM size : 0
  24. Data Stack size : 256
  25. *****************************************************/
  26.  
  27. #include <mega16.h>
  28. #include <delay.h>
  29. #include<stdio.h>
  30.  
  31. // Alphanumeric LCD Module functions
  32. #asm
  33. .equ __lcd_port=0x15 ;PORTC
  34. #endasm
  35. #include <lcd.h>
  36.  
  37.  
  38. #define RXB8 1
  39. #define TXB8 0
  40. #define UPE 2
  41. #define OVR 3
  42. #define FE 4
  43. #define UDRE 5
  44. #define RXC 7
  45.  
  46. #define FRAMING_ERROR (1<<FE)
  47. #define PARITY_ERROR (1<<UPE)
  48. #define DATA_OVERRUN (1<<OVR)
  49. #define DATA_REGISTER_EMPTY (1<<UDRE)
  50. #define RX_COMPLETE (1<<RXC)
  51.  
  52.  
  53.  
  54.  
  55. unsigned char test;
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63. void init_comm(void )
  64. {
  65. // init che do cong I/O
  66. DDRD.0=0;PORTD.0=1;
  67. DDRD.1=1;
  68.  
  69. // CHE DO KO DONG BO ,8 BIT , 1 BIT STOP ,U2X=0,ko dung parity
  70.  
  71. UCSRA=0x00;
  72. UCSRB=0x90; //E ngat nhan va E cho nhan
  73. UCSRC=0x86;
  74. UBRRH=0x00;
  75. UBRRL=0x33; // baud =9600 of 8Mhz
  76.  
  77. }
  78. ////////////
  79.  
  80.  
  81.  
  82. void main(void)
  83. {
  84. s1=1;s2=s3=s4=0;
  85. // Input/Output Ports initialization
  86. // Port A initialization
  87. // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
  88. // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
  89.  
  90. PORTA=0x00;
  91. DDRA=0x01;
  92.  
  93. // Port B initialization
  94. // Func7=Out Func6=Out Func5=Out Func4=In Func3=In Func2=In Func1=In Func0=In
  95. // State7=1 State6=1 State5=1 State4=P State3=P State2=P State1=P State0=P
  96. PORTB=0x00;
  97. DDRB=0xFF;
  98.  
  99. // Port C initialization
  100. // Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=In Func1=In Func0=In
  101. // State7=T State6=T State5=T State4=T State3=1 State2=T State1=T State0=T
  102. PORTC=0xFF;
  103. DDRC=0xFF;
  104.  
  105. // Port D initialization
  106. // Func7=Out Func6=Out Func5=Out Func4=Out Func3=In Func2=In Func1=Out Func0=Out
  107. // State7=1 State6=1 State5=1 State4=1 State3=P State2=P State1=1 State0=1
  108. PORTD=0xF3;
  109. DDRD=0xF3;
  110.  
  111.  
  112. // Timer/Counter 0 initialization
  113. // Clock source: System Clock
  114. // Clock value: 3.906 kHz
  115. // Mode: Normal top=FFh
  116. // OC0 output: Disconnected
  117. TCCR0=0x00;
  118. TCNT0=0x00;
  119. OCR0=0x00;
  120.  
  121. // Timer/Counter 1 initialization
  122. // Clock source: System Clock
  123. // Clock value: 3.906 kHz
  124. // Mode: Ph. correct PWM top=00FFh
  125. // OC1A output: Inverted
  126. // OC1B output: Inverted
  127. // Noise Canceler: Off
  128. // Input Capture on Falling Edge
  129. //TCCR1A=0xF1;
  130. //TCCR1B=0x05;
  131. TCCR1A=0x00;
  132. TCCR1B=0x04;
  133. TCNT1H=0x00;
  134. TCNT1L=0x00;
  135. ICR1H=0x00;
  136. ICR1L=0x00;
  137. OCR1AH=0x00;
  138. OCR1AL=0x00;
  139. OCR1BH=0x00;
  140. OCR1BL=0x00;
  141.  
  142. // Timer/Counter 2 initialization
  143. // Clock source: System Clock
  144. // Clock value: 15.625 kHz
  145. // Mode: Normal top=FFh
  146. // OC2 output: Disconnected
  147. ASSR=0x00;
  148. TCCR2=0x00;
  149. TCNT2=0x00;
  150. OCR2=0x00;
  151.  
  152.  
  153.  
  154. // External Interrupt(s) initialization
  155. // INT0: Off
  156. // INT1: Off
  157. // INT2: Off
  158. MCUCR=0x00;
  159. MCUCSR=0x00;
  160.  
  161. // Timer(s)/Counter(s) Interrupt(s) initialization
  162. TIMSK=0x04;
  163.  
  164. // Analog Comparator initialization
  165. // Analog Comparator: Off
  166. // Analog Comparator Input Capture by Timer/Counter 1: Off
  167. ACSR=0x80;
  168. SFIOR=0x00;
  169.  
  170.  
  171.  
  172. //SFIOR&=0x1F;
  173.  
  174. // LCD module initialization
  175.  
  176. // Global enable interrupts
  177. //#asm("sei")
  178. // LCD module initialization
  179. lcd_init(16);
  180. init_comm();
  181. while (1)
  182. {
  183. // Place your code here
  184. lcd_gotoxy(0,0);
  185. lcd_putsf("Giao tiep :");
  186. //test=getchar();
  187. //putchar(test);
  188.  
  189.  
  190. lcd_gotoxy(12,1);
  191.  
  192. test=getchar();
  193. lcd_putchar(test);
  194.  
  195.  
  196.  
  197. }
  198.  
  199. }
  200.  
  201.  
  202.  




giotdang1985@yahoo.com

 lovecad | 20:59:58 11-01-08 | Posts: 932
Xin chân thành cảm ơn bác giotdang đã cung cấp cho anh em và cộng đồng nhiều tài liệu hay về AVR và điện tử, việc làm của anh thật ý nghĩa.!!!

chúc anh luôn thành công trong học tập và cuộc sống




Vì nền công nghệ thiết kế tại VN...còn xa lắm con ơi...