Bao cao NCKH (1)

Embed Size (px)

Citation preview

  • 8/20/2019 Bao cao NCKH (1)

    1/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 1 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    TR ƯỜ NG ĐẠI HỌC LẠC HỒNGKHOA CƠ  ĐIỆN

    -- 

    --

    BÁO CÁONGHIÊN CỨ U KHOA HỌC

    ĐỀ TÀI:

     Đ I  Ề U KHI  Ể  N THI  Ế T B Ị  B Ằ  NG GI Ọ NG NÓITRUY  Ề  N T Ừ  XA

    GVHD: Ths Nguyễn Vũ QuỳnhSVTH: Phạm Ngọc Đăng KhoaLớ p: 05 CĐT1

  • 8/20/2019 Bao cao NCKH (1)

    2/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 2 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    LỜ I CẢM Ơ N

    Sau hơ n một năm tìm hiểu và thực hiện thì đề tài: “ĐIỀU KHIỂ N THIẾT BỊ BẰ NG GIỌ NG NÓI TRUYỀ N TỪ  XA” đã thu đượ c những thành công bướ c đầutrong cuộc sống và trong điều khiển các thiết bị tự động hóa. Trong thờ i gian đầu thử nghiệm đề tài đã hoạt động một cách tươ ng đối ổn định và nhận đượ c sự đánh giá caovề khả năng sáng tạo, cũng như cách áp dụng khoa học k ỹ thuật tiên tiến vào phục vụ nhu cầu điều khiển trong công nghiệ p và trong cuộc sống của con ngườ i.

    Trong quá trình thực hiện, đề tài nhận đượ c sự hướ ng dẫn và giúp đỡ  của thầy

    thạc s ĩ  Nguyễn Vũ Quỳnh, câu lạc bộ Tự Động Hóa, và tất cả các thầy cô khoa Cơ  Điện tr ườ ng đại học LẠC HỒ NG. Thành công của đề tài cũng là lờ i cảm ơ n đến cáccá nhân và câu lạc bộ đã giúp đỡ , hướ ng dẫn em trong suốt quá trình thiết k ế và thicông hệ thống.

    Vì là lần đầu tiên khai thác một l ĩ nh vực còn khá mớ i mẻ, nên mặc dù em đã bỏ ra r ất nhiều tâm huyết, thờ i gian, và công sức, nhưng các chắc sẽ không tránh khỏinhững thiếu sót, những hạn chế khi áp dụng vào thực tiễn cuộc sống hiện nay. Hyvọng r ằng những vấn đề còn hạn chế trong đề tài sẽ nhận đượ c nhiều ý kiến đóng gópchân thành của các cá nhân, tổ chức trong tr ườ ng đại học LẠC HỒ NG và các bạn đọcgần xa.

  • 8/20/2019 Bao cao NCKH (1)

    3/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 3 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    MỤC LỤC

    PHẦN A  LÝ THUY  Ế T   Số trang 

    CH ƯƠ  NG 1: GIỚI THIỆU CHI TIẾT BỘ PHẬ N XỬ  LÝ GIỌ NG NÓI  121.1 Giớ i thiệu nguyên lý IC HM2007 121.2

     

    Giớ i thiệu IC nhớ  SRAM 6264 17

    CH ƯƠ  NG 2: LÝ THUYẾT MẠCH ĐIỀU KHIỂ N TỪ  XA 192.1 Chi tiết về chip AVR Atmega8. 192.2 Cấu trúc ngắt của Atmega8. 292.3 Các bộ phận ngoại vi khác. 342.4 Hệ thống xung clock và lậ p trình bộ nhớ  on – chip. 38

    CH ƯƠ  NG 3:  NGÔN NGỮ  C CHO AVR 393.1 Khái niệm. 393.2 Tóm tắt cấu trúc điều khiển. 453.3 Chẳng hợ  p ngữ vào trong chươ ng trình C 493.4 Tổ chức bộ nhớ  SRAM 503.5 Phần mềm lậ p trình cho bộ điều khiển từ xa AVR Atmega8 513.6 Phươ ng pháp và phần mềm nạ p cho Atmega8 54

    PHẦN B: THI  Ế T K  Ế  - THI CÔNG

    CH ƯƠ  NG 4: THIẾT K Ế MẠCH ĐIỀU KHIỂ N BẰ NG GIỌ NG NÓI  64 

    4.1 Sơ  đồ nguyên lý mạch điều khiển tín hiệu giọng nói. 644.2 Các board mạch IC HM2007 đã thực hiện thử nghiệm. 67

    CH ƯƠ  NG 5: THIẾT K Ế MẠCH ĐIỀU KHIỂ N TỪ  XA 695.1 Sơ  đồ nguyên lý mạch điều khiển từ xa. 695.2 Sơ  đồ thiết k ế mạch in và thi công. 705.3 Hình ảnh thực tế bộ Atmega8 của thiết bị. 70

    CH ƯƠ  NG 6: THIẾT K Ế CÁC MODUL NGÕ RA CỦA SẢ N PHẨM 716.1 Mục đích thiết k ế các modul ngõ ra. 716.2 Hình ảnh thực tế thiết k ế và board mạch ngõ ra. 71

    CH ƯƠ  NG 7: THIẾT K Ế MẪU VỎ HỘP BÊN NGOÀI CHO THIẾT BỊ  747.1 Ý tưở ng thiết k ế. 747.2 Sản phẩm hoàn chỉnh trên phần mềm. 75

  • 8/20/2019 Bao cao NCKH (1)

    4/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 4 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    PHẦN C:  S  Ả  N PH  Ẩ  M

    •  Hệ thống điều khiển robot sử dụng modul 24VDC. 77•  Bộ điều khiển thiết bị 220VAC bằng giọng nói truyền từ xa. 78• 

    Khả năng ứng dụng, thành quả bướ c đầu của đề tài. 79

    K ẾT LUẬN – KIẾN NGHỊ 

    • 

    K ết luận. 80•   Những khó khăn trong quá trình thực hiện đề tài. 80•  Ư u điểm, khuyết điểm cần cải tiến của thiết bị. 82• 

    Kiến nghị. 82

    DANH MỤC TÀI LIỆU THAM KHẢO 83 

    PHỤ LỤC

    •  Hình ảnh cải tiến board mạch chủ của thiết bị.•  Chươ ng trình chính lậ p trình cho bộ điều khiển từ xa.

  • 8/20/2019 Bao cao NCKH (1)

    5/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 5 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    DANH MỤC HÌNH ẢNH

    Số thứ  tự   Chú thích hình ảnh Số trang1 Hình A. Tổng quan hệ thống điều khiển 92 Hình 1.1 Tổng quan IC HM 2007 12

    3 Hinh 1.2 Sơ  đồ chân các loại IC HM 2007 134 Hình 1.3 Bàn phím ma tr ận 155 Hình 1.4 Bản vẽ mạch hiển thị  156 Hình 1.5 Sơ  đồ khối SRAM 6264 177 Hình 1.6 Cấu tạo bên trong SRAM 6264 188 Hình 2.1 Hình ảnh các loại AVR 209 Hình 2.2 Sơ  đồ khối cấu trúc vi điều khiển AVR 2010 Hình 2.3 Tổng quan chế độ hoạt động Boot loader 2111 Hình 2.4 Bản đồ bộ nhớ  ATmega8 2312 Hình 2.5 Sơ  đồ bộ định thờ i 1 2513 Hình 2.6 Sơ  đồ ngõ ra khối 27

    14 Hình 2.7 Sơ  đồ khối bộ định thờ i 0 2715 Hình 2.8 Sơ  đồ khối bộ định thờ i 2 2816 Hình 2.9 Bảng vector ngắt của Atmega8 30,3117 Hình 2.10 Các ngắt lồng nhau 3118 Hình 2.11 Bảng điều khiển kiểu bắt mẫu ngắt 3219 Hình 2.12 Sơ  đồ giản lượ t của bộ so sánh tươ ng tự  3420 Hình 2.13 Sơ  đồ khối đơ n giản bộ ADC 3521 Hình 2.14 Sơ  đồ ngõ vào vi sai 3622 Hình 2.15 Sơ  đồ khối bộ USART 3723 Hình 2.16 Sơ  đồ hệ thống xung clock cho Atmega8 38

    24 Hình 3.1 Chươ ng trình lậ p trình Atmega8 5125 Hình 3.2 Giao diện lậ p trình của phần mềm CodeVision 5126 Hình 3.3 Cách tạo một project trên CodeVision 5227 Hình 3.4 Các bướ c thực hiện 5228 Hình 3.5 Các bướ c thực hiện 5229 Hình 3.6 Cách chọn loại AVR 5330 Hình 3.7 Các bướ c thực hiện 5331 Hình 4.1 Sơ  đồ nguyên lý mạch xử lý giọng nói 6432 Hình 4.2 Sơ  đồ nguyên lý IC HM 2007 trong Capture 6533 Hình 4.3 Board HM 2007 (lần 1) 6634 Hình 4.4 Board HM 2007 (lần 2) 66

    35 Hình 4.5 Board 1 lớ  p thiết k ế thử nghiệm 6736 Hình 4.6 Board mạch 2 lớ  p thực tế  6737 Hình 4.7 Board cho sản phẩm hoàn chỉnh 6838 Hình 5.1 Sơ  đồ mạch Atmega8 trên Capture 6939 Hình 5.2 Sơ  đồ mạch in Atmega8 trên layout 7040 Hình 5.3 Mạch thực tế  7041 Hình 5.4 Bộ thu (phát) từ xa của thiết bị  7042 Hình 6.1 Bản thiết k ế 1 modul ngõ ra 220VAC 71

  • 8/20/2019 Bao cao NCKH (1)

    6/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 6 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    43 Hình 6.2 Sơ  đồ mạch in modul 220VAC vớ i 6 ngõ ra 7244 Hình 6.3 Sơ  đồ mạch in modul 220VAC vớ i 4 ngõ ra 7245 Hình 6.4 Modul ngõ ra 24VDC thực tế  7346 Hình 6.5 Board 2 lớ  p của Modul 220VAC (vớ i 6 ngõ ra) 7347 Hình 7.1 Thiết k ế cơ  khí khung vỏ mạch điều khiển (NX5) 74

    48 Hình 7.2 Thiết k ế cơ  khí modul mạch động lực (NX5) 7549 Hình 7.3 Sản phẩm hoàn chỉnh trên thiết k ế  7550 Hình B. Điều khiển robot bằng giọng nói 7751 Hình C. Bộ điều khiển giọng nói và modul 220VAC 78

  • 8/20/2019 Bao cao NCKH (1)

    7/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 7 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    DANH MỤC CÁC TỪ  VIẾT TẮT

    CMOS: Complementary Metal-Oxide-Semiconductor (một thuật ngữ chỉ một loạicông nghệ dùng chế tạo vi mạch tích hợ  p)

    MPS: Material Product System ( Modul sản xuất linh hoạt)

     NX5: Phần mềm thiết k ế cơ  khí Unifraphic

    ISR : Interrupt Service Ruotine (trình phục vụ ngắt)

    INT : Interrupt (trình phục vụ ngắt)

    RF : Radio Frequence (một dạng sóng tuyền trên AVR)

    PWM: Pulse Width Modulation ( kênh điều chế độ r ộng xung)

    TTL : Transistor–transistor logic (thuật ngữ chỉ công nghệ chế tạo vi mạch)

    USART: Universal Synchronous and Asynchronous serial Receiver and Transmitter( bộ truyền dữ liệu nối tiế p)

  • 8/20/2019 Bao cao NCKH (1)

    8/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 8 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    LỜ I MỞ  ĐẦU1.

     

    GIỚ I THIỆUKhoaûng thôøi gian töø năm 2001 ñeán nay ñöôïc xem laø thôøi gian caùc coâng ty,

    doanh nghieäp trong vaø ngoaøi nöôùc aùp duïng nhieàu tieán boä khoa hoïc kyõ thuaät vaøo

    caùc ngaønh coâng nghieäp chuû choát cuûa Vieät Nam, caùc daây chuyeàn coâng ngheä môùilaàn löôïc ra ñôøi nhaèm ñôn giaûn hoùa quaù trình saûn xuaát, maùy moùc hieän ñaïi ñaõ baétñaàu laøm vieäc thay theá con ngöôøi trong nhieàu lónh vöïc saûn xuaát.

    Beân caïnh ñoù caùc thành tựu khoa hoïc coâng ngheä tieân tieán cuõng ñang ñöôïcöùng duïng phuïc vuï cho cuoäc soáng cuûa con ngöôøi chuùng ta. Haøng loaït caùc saûn phaåmtöï ñoäng hoùa tieân tieán ñöôïc ñöôïc phaùt minh vaø baùn roäng raõi treân thò tröôøng nhö:robot huùt buïi treân saøn phaúng do Nhaät saûn xuaát, maùy giaët ña naêng, maùy röûa cheùn töïñoäng, thieát bò giaùm saùt nhaø qua internet…

    Đối vớ i nướ c ngoài thì việc điều khiển bằng giọng nói đã đượ c nghiên cứu vàchế tạo để ứng dụng vào đờ i sống và sản xuất cũng chỉ mớ i ra đờ i trong vài năm tr ở  lại đây. Như ở  Mỹ đã đượ c ứng dụng để điều khiển robotcam trong y khoa. Riêng ở  nướ c ta l ĩ nh vực này còn khá mớ i mẻ. Do đó chúng ta cần có sự đầu tư để nghiên cứutheo k ị p công nghệ mớ i này để phục vụ tr ực tiế p cho công việc giảng dạy tại tr ườ ngnhằm giúp sinh viên hiểu rõ hơ n về lý thuyết, tạo điều kiện cho sinh viên có những ýtưở ng mớ i trên những nền tản đã có sẵn.

    Thấy đượ c khả năng phát triển và nhu cầu tìm hiểu về điều khiển bằng giọngnói của chính bản thân và của những ngườ i yêu thích mong muốn đượ c sử dụng dịchvụ  này, tôi đã bắt tay vào thực hiện nghiên cứu đề  tài: “ Điều khiển thiết bị  bằng

    giọng nói truyền từ xa”

    2.  TẦM QUAN TR ỌNG

    Ở Việt Nam việc ứng dụng công nghệ  tiên tiến trên thế giớ i còn chậm pháttriển, quá trình đưa công nghệ  mớ i vào phục vụ đờ i sống, sản xuất gặ p nhiều khókhăn. Tận dụng những ic đã nhậ p sẵn và ic chuyên dụng do nướ c ngoài sản xuất để thiết k ế  thành sản phẩm cụ  thể  là một nhu cầu cần thiết cho việc giảng dạy trongtr ườ ng học, trong cuộc sống và từ đó phát triển cao hơ n để ứng dụng trong các l ĩ nhvực điều khiển phức tạ p[1]. Đề  tài: “ĐIỀU KHIỂN THIẾT BỊ  BẰNG GIỌNGNÓI TRUYỀN TỪ  XA” đượ c tìm hiều và thực hiện nhằm đưa con ngườ i tiến gần

    hơ n tớ i công nghệ, và mở  ra một hướ ng đi mớ i cho việc nghiên cứu. Điều quan tr ọnghơ n hết là các vấn đề liên quan tớ i đề tài, nguyên lý hoạt động của mạch xử lý giọngnói, mạch truyền từ xa sử dụng chip AVR Atmega 8, các modul ngõ ra tích hợ  p, vàcách lậ p trình hệ thống sẽ đượ c giớ i thiệu trong đề tài này. Nó sẽ là nguồn thông tinhữu ích cho những ai muốn tìm hiểu và phát triển trong l ĩ nh vực này, nhằm mở   ramột hướ ng đi mớ i cho công nghệ điều khiển tự động hóa.

  • 8/20/2019 Bao cao NCKH (1)

    9/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 9 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    3.  MỤC ĐÍCH NGHIÊN CỨ U

    Đề  tài: “ĐIỀU KHIỂ N THIẾT BỊ BẰ NG GIỌ NG NÓI TRUYỀ N TỪ  XA”đượ c thực hiện nhằm tạo ra một hệ thống biết tuân theo mệnh lệnh giọng nói của conngườ i chúng ta. Đề tài không dừng lại ở  mức tìm hiểu lý thuyết hay hoàn thiện mạch

    sử dụng ic HM 2007 như một số sinh viên các tr ườ ng đại học khác đã tìm hiểu trongthờ i gian tr ướ c. Sản phẩm của đề tài tr ướ c hết có thể đượ c ứng dụng vào điều khiểncác thiết bị  tự  động hóa như: tay máy công nghiệ p, robot tự  hành, xy lanh, cảm biến… vớ i modul ngõ ra 24VDC. Đề tài còn đượ c thiết k ế mở  r ộng thêm modul ngõra 220VAC đề điều khiển các thiết bị điện dân dụng phục vụ  cuộc sống như đèn,quạt, máy tính……

    Đặt biệt đề  tài đượ c tích hợ  p công nghệ điều khiển từ  xa sử  dụng tín hiệutruyền trên sóng RF (Radio Frequence) đã mở  ra một hướ ng phát triển mớ i cho đề tài.Con ngườ i chỉ cần ngồi tại một vị  trí cách thiết bị vài tr ăm mét và điều khiển theonhững yêu cầu mà họ mong muốn. Vớ i bộ điều khiển chỉ sử dụng điện áp từ 5VDC -

    9VDC nên tránh cho ngườ i điều khiển tiế p xúc tr ực tiế p vớ i các nguồn điện áp cao.Do đó một hướ ng phát triển mạnh trong cuộc sống của đề  tài là thiết lậ p hệ  thốngđiều khiển giọng nói trong các tr ườ ng mầm non, tiểu học và phòng tr ẻ em.

    4. GIỚ I THIỆU TỔNG QUAN

    Hình 1. Tổng quan hệ thống điều khiển

  • 8/20/2019 Bao cao NCKH (1)

    10/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 10 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    Đề tài “ Điều khiển thiết bị bằng giọng nói từ xa” bao gồm bốn giai đoạn chính:

    + Thiết k ế và thi công mạch nhận dạng và xử  lý giọng nói xử dụng IC chuyêndụng HM 2007. Đây là một giai đoạn mang tính kiên trì và sáng tạo trong quá trìnhthiết k ế để cho hệ  thống hoạt động ổn đinh. Vì mục tiêu đạt đến của đề  tài là thực

    hiện một sản phẩm hoàn chỉnh, có thể  sử dụng ngay trên thị  tr ườ ng nên yếu tố mỹ quan và chất lượ ng đượ c đặt lên hàng đầu.

    + Hoàn thành k ết nối thêm thiết bị điều khiển từ xa, giao tiế p giữa bộ phận điềukhiển và các modul chấ p hành. Hệ  thống sẽ đượ c truyền từ xa bằng cách lậ p trìnhgiao tiế p, đưa tín hiệu từ bộ phát đến bộ thu thông qua ngôn ngữ C. Chip vi xử lí dánATMEGA8 sẽ đượ c sử dụng chủ đạo trong hệ  thống truyền từ xa. Đây là một giaiđoạn quan tr ọng và mang tính thiết yếu của đề tài. Sóng RF sẽ bảo đảm việc truyền vànhận dữ liệu một cách đơ n giản hơ n các loại thiết bị sử dụng giao tiế p qua internet.

    + Thiết k ế các modul ngõ ra nhận tính hiệu từ bộ phát, tín hiệu sẽ đượ c kích bở i

    điện 5VDC và đưa ra các thiết bị sử dụng điện 5VDC, 24VDC và 220VAC. Như vậyhệ thống sẽ bao gồm 3 loại modul ngõ ra để phục vụ mọi nhu cầu điều khiển của cácthiệt bị tự động hóa đang có trên thị tr ườ ng. Ở giai đoạn này Modul ngõ ra sử dụngđiện 220VAC đượ c xem là có ứng dụng thân thiện nhất vớ i cuộc sống con ngườ i,modul này sẽ giúp con ngườ i có thể điều khiển các thiết bị điện trong nhà, hay ở  côngsở .

    + Thiết k ế bản vẽ cơ  khí, và gia công vỏ hộ p cho toàn bộ thiết bị, giai đoạn cuốicùng này đi thiên về  khả  năng sáng tạo mẫu mã, thiết k ế  sản phẩm bắt mắt chongườ i tiêu dùng. Đòi hỏi ngườ i thực hiện đề tài cần có kiến thức về cơ  khí, có khả năng vẽ trên các phần mềm 3D như Auto CAD, NX5, Catia…. Theo xưu thế côngnghệ hiện nay, phần mềm vẽ Unigrafic (NX5) đang là một phần mềm mạnh trongthiết k ế mẫu mã, đượ c nhiều công ty lớ n như SYM, Pepsico, Sanko Mod… sử dụngthiết k ế mẫu mã các loại xe máy, mẫu chai nướ c giải khát, và mẫu điện thoại diđộng. Do là một sinh viên ngành Cơ  Điện Tử em đã ứng dụng phần mềm NX5 vàothiết k ế mẫu mã cho thiết bị một cách hoàn chỉnh.

     Bố n giai đ oạn để  hoàn thành đề  tài, mỗ i giai đ oạn có một khó khăn riêng, đề  tàiđượ c lên ý t ưở ng thiế t k ế  t ừ  cuố i năm 2008, và thự c hiện t ớ i đầu tháng 11/2009 mớ iđ em l ại nhữ ng thành quả bướ c đầu của sản phẩ m. Ở  giai đ oạn đầu, mạch đ iề u khiể nthiế t bị bằ ng giọng nói sau khi hoàn thành đ ã nhận đượ c nhiề u đơ n đặt hàng của cáccá nhân, câu l ạc bộ t ự  động hóa, họ là nhữ ng ng ườ i quan tâm đế n đế n khả năng nhận giọng nói của IC HM2007, đ ây là thành công bướ c đầu, của đề  tài. Các Modul mạchđ iề u khiể n bằ ng giọng nói nhận đượ c nhiề u sự  quan tâm của nhữ ng sinh viên đ iện –đ iện t ử  t ại các tr ườ ng đại học k  ỹ   thuật l ớ n ở  Việt Nam, bây giờ  sinh viên có thể  muathiế t bị và hoàn thành các ý t ưở ng liên quan t ớ i “xử  lý giọng nói” một các d ễ  dàng,vớ i giá cả thấ  p hơ n r ấ t nhiề u so vớ i các sản phẩ m liên quan chỉ  bán ở  thị tr ườ ng M  ỹ .

  • 8/20/2019 Bao cao NCKH (1)

    11/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 11 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    PHẦN A:

    LÝ THUYẾT

  • 8/20/2019 Bao cao NCKH (1)

    12/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 12 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    CHƯƠ NG 1

    GIỚ I THIỆU CHI TIẾT BỘ PHẬN XỬ  LÝ GIỌNG NÓI

    1.1 

    Giớ i thiệu nguyên lý IC HM2007 [2]IC HM 2007 là một thiết bị đơ n chip CMOS, xử lí giọng nói dướ i dạng mạch LSI

    điều chế tín hiệu tươ ng tự, điều chế phổ âm, nhận lệnh và điều khiển chức năng cáchệ  thống. Theo tiêu chuẩn, thì ic HM2007 có thể  nhận tớ i 40 lệnh, việc truyền vànhận lệnh đượ c thực hiện bẳng micro đưa tín hiệu vào, cùng một bàn phím, một icnhớ  SRAM và nhiều bộ phận khác. Từ đây tín hiệu đượ c xử  lý và xây dựng thànhmột hệ thống thông minh trong việc nhận diện giọng nói.

    Hình 1.1 Tổng quan IC HM 2007  [2]

    1.1.1 Đặt tính- 

    Thiết bị đơ n chip nhận biết âm thanh dạng CMOS LSI-  Tiếng nói đượ c nhận vào hệ thống theo một chuẩn riêng biệt.-  IC nhớ  SRAM có thể đượ c k ết nối tr ực tiế p.- 

    Một chip HM 2007 có thể nhận đượ c 40 từ.-  Thờ i gian tối đa mỗi từ phù hợ  p mà ic có thể xử lý là 1.92 giây.-  K ết cấu phức tạ p.- 

    Một micro đi kèm thiết bị.-  Có hai chế độ sử dụng: chế động thườ ng, và chế độ CPU.

  • 8/20/2019 Bao cao NCKH (1)

    13/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 13 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    -  Thờ i gian đáp ứng: chưa tớ i 300ms-  Nguồn cấ p 5VDC-  Bao gồm hai loại: loại thườ ng 48 chân, và loại dán 52 chân.1.1.2 Sơ  đồ chân 2 loại IC HM2007

    Hình 1.2 Sơ  đồ chân các loại IC HM2007

    1.1.3 

    Chứ c năng các chân của IC HM 2007 (loại 48 chân)

    Tên chân Số chân Chức năngWAIT 15 Tín hiệu điều khiển ngõ vào, hoạt động ở  mức

    thấ p. Khi chân này ở  mức thấ p thì ic HM2007ở   chế  độ  nghỉ, không chấ p nhận bất cứ  âmthanh nào đưa vào xử lýKhi chân Wait ở  mức cao thì ta có thể bắt đầuhuấn luyện ic nhận biết giọng nói thu vào.

    DEN 16 Khả năng nhận tín hiệuKhi tín hiệu đượ c đưa vào hoàn tất, chip sẽ bắtđầu xử  lý và đưa vào các chân D0 – D7, dữ 

    liệu sẽ đượ c xử lý bở i ic chốt 74LS373.SA0 , SA1 17 , 18 Bus địa chỉ cho bộ nhớ  ngoàiSA2 – SA7SA8 –SA12

    19 – 2427 - 31

    Bus này đượ c dùng như một đườ ng địa chỉ cho bộ nhớ  ngoài khi chân Me hoạt động.

    VDD  25, 47 Chân cấ p nguồn (5VDC)GND 26 Chân nối nguồn âm NC 32,33 Không k ết nối

  • 8/20/2019 Bao cao NCKH (1)

    14/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 14 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    ME 34 Chân điều khiển bộ  nhớ , chân này sẽ  gở i tínhiệu sang SRAM và đượ c lưu lại để thực hiệnlệnh.(Chân này nối tr ực tiế p vớ i chân CE củaSRAM)

    MR/MW 35 Chân thiết lậ p và phản hồi tín hiệu đến bộ nhớ  D0 – D6 36 - 42 Đườ ng dữ liệu cho bộ nhớ  ngoàiD7 43 Đượ c dùng như  bus I/O của bộ  nhớ   khi chân

    ME tích cực, đây là tín hiệu ngõ vào cho bộ chốt dữ liệu khi chân DEN hoạt động.

    Vref 44 Điện áp cấ p cho bộ biến đổi tươ ng tự sang số 

    Line 45 Chân kiểm traMicin 46 Chân nối vớ i micro. Đươ c hoạt động kèm theo

    tụ và điện tr ở .

    AGND 48 Mát tươ ng tự GND 1 Cấ p nguồn âmX2,X1 2,3 Chân nối vớ i thạch anh 3.58MS1, S2, S3 4,5,6 Chân nối vớ i bàn phím ở  chế độ thườ ng, và là

    chân đọc ghi dữ liệu ở  chế độ xử lí.RDY 7 Thông báo tín hiệu giọng nói ngõ vào.

    Khi HM 2007 sẵn sàng nhận âm thì sẽ có mộttín hiệu mức thấ p gửi đi. Nếu ic không nhận thìgửi tín hiệu mức cao.

    K1- K4 8 - 11 Chân nối vớ i bàn phím

    1.1.4 Chứ c năng làm việc

    Có hai chế độ hoạt động trong IC HM2007

    1.1.4.1  Chế độ thườ ng

    Ở chế độ này ic đươ c k ết nối vớ i một bàn phím, một SRAM, và các thiết bị ngoạivi để thiết lậ p một môi tr ườ ng làm việc bằng giọng nói. SRAM có thể dùng loại dunglượ ng 8K.

     M ở  nguồn

    HM2007 hoạt động khi có nguồn cấ p vào, khi chân WAIT ở  mức thấ p thì ic bắtđầu kiểm tra bộ nhớ . Khi chân WAIT ở  mức cao, HM2007 sẽ bỏ qua việc kiểm tra bộ nhớ , sẽ bắt đầu xử lý tín hiệu nhận giọng nói.

  • 8/20/2019 Bao cao NCKH (1)

    15/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 15 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    Thu tín hi ệu

    Khi chân WAIT nhận mức cao thì chân RDY đượ c đưa xuống mức thấ p vàHM2007 sẵn sàng nhận âm vào để kiểm tra giọng nói. Khi có tín hiệu giọng nói đưavào, chân RDY sẽ lên mức cao và HM2007 bắt đầu làm việc. Đó là lệnh mà ngườ i

    điều khiển cài đặt cho bộ nhớ , k ết quả  sẽ đượ c hiển thị  trên 2 led 7 đoạn. Tín hiệuđượ c xử lý và đưa đến Bus ngõ ra tín hiệu. Tín hiệu xuất ra dướ i dạng mã nhị phân.Khi chân WLEN đượ c đưa lên mức cao, độ dài của từ là 1,92s, và nếu chân WLEN ở  mức thấ p, thì độ dài từ đưa vào là 0,92s.

    Khi chân WAIT ở  mức thấ p, âm ngõ vào sẽ không đượ c nhận cho tớ i khi chânWAIT tr ở  lại tr ạng thái mức cao.

    Cách sử  d ụng thi ế t bị  

    -  Khi ta muốn xóa các dữ liệu đã đượ c nạ p tr ướ c đó thì từ bàn phím ma tr ận ta nhậ p

    số 99 r ồi nhấn vào nút CLR. Mọi dữ liệu về giọng nói lúc này sẽ bị xóa và ta phải càiđặt lại khi muốn tiế p tục sử dụng, việc cài đặt này khá đơ n giản, chỉ cần một vài thaotác là chúng ta có thể cài đặt giọng nói vào một cách dễ dàng.

    -  Để cài tín hiệu giọng nói, trên bàn phím ta nhấn các giá tr ị mặc định từ 00-99 r ồinhấn vào nút TRAIN, lúc đó HM 2007 sẽ bắt đầu xử lý để đưa tín hiệu vào. Lúc bắtđầu cài từ, nếu chân WAIT ở  mức cao, HM2007 sẽ  gở i tín hiệu mức thấ p ra chânRDY để báo r ằng HM2007 sẵn sàng nhận âm vào. Nếu chân WAIT mức thấ p, âm sẽ không đượ c nhận cho tớ i khi chân WAIT báo mức cao.

    Chi tiết các thiết bị đi kèm board mạch chính.* Key board phím ma tr ận và mạch hiển thị 

    Hình 1.3 Bàn phím ma tr ận [6] Hình 1.4 Bản vẽ mạch hiển thị 

    Hai ic 74LS47 sẽ giải mã tín hiệu xuất ra từ HM2007 và hiển thị tr ạng thái huấnluyện, khi cấ p nguồn HM2007 kiểm tra SRAM (Ram t ĩ nh). Nếu Ram kiểm tra xong,mạch hiển thị "00" trên 2 Led bảy đoạn. Tr ạng thái "00" báo hiệu mạch đã sẵn sàngvà chờ  lệnh.

  • 8/20/2019 Bao cao NCKH (1)

    16/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 16 SVTH: PHẠM NGỌC ĐĂ NG KHOA

     M ột ví d ụ chi ti ế t về cách huấ n luyện IC HM2007  [6] 

    Cấ p nguồn, màn hình hiển thị "00" trên 2 Led bảy đoạn, và Led trên main board sáng==> sẵn sàng chờ  lệnh.

     Nhấn phím 1 ==> màn hình hiển thị "01" và Led tắt. Sau đó nhấn TRN(Training -huấn luyện), và Led sáng tr ở  lại.

     Nói vào 'microphone' một từ hoặc 1 cụm từ có độ dài < 0.96 s.

    Ví dụ: Đi quét nhà : ngay lậ p tức màn hình hiển thị "55" (ý nó bảo: từ quá dài)Làm lại: “Quét nhà” thì ngay lậ p tức Led trên main board nhấ p nháy (chấ p nhận), từ “Quét nhà” bây giờ  đượ c lậ p trình là "01". Mỗi khi nghe đúng từ này, màn hình sẽ hiển thị đúng mã số "01".

    Tiế p tục huấn luyện các từ mớ i: Nhấn "02" r ồi nhấn TRN để huấn luyện từ thứ 2. cứ 

    thế, cứ thế. Tối đa huấn luyện đượ c 40 từ.Cách xóa các t ừ  đ ã huấ n luyện 

    Muốn xóa từng từ riêng lẻ trong bộ nhớ  ==> nhậ p số của từ muốn xóa và nhấn CLR(clear - xóa).Muốn xóa tất cả các từ trong bộ nhớ  ==> nhậ p "99" r ồi nhấn CLR.

    1.1.4.2 Chế độ điều khiển bở i Vi xử  lí ngoài (chế độ CPU)

    Chế độ này bao gồm các chức năng: nhận dạng âm, cài âm vào, báo k ết quả, nhậnvà cấ p dữ liệu. K –bus đượ c dùng như một dữ liệu nhị phân giữa bộ điều khiển ngoàivà HM2007. Các chân từ S1 đến S3 xem như là chân điều khiển đọc ghi dữ liệu.

    Có ba thanh ghi trong HM2007, một thanh ghi bộ đệm ngõ vào, một thanh ghitr ạng thái và một thanh ghi bộ đệm ngõ ra. Đầu tiên là thanh ghi chỉ ghi và cuối cùnglà thanh ghi chỉ đọc. Nếu chân S1 mức cao, dữ liệu đọc từ K-BUS sẽ lấy từ thanh ghi bộ đệm ngõ ra. Nếu S1 mức thấ p, dữ liệu K – Bus sẽ lấy từ thanh ghi tr ạng thái. S2 vàS3 là tín hiệu để điều khiển đọc ghi. Đó là lúc đang đọc, bộ điều khiển ngoài có thể lấy dữ liệu từ K – Bus. Chú ý S2 và S3 không thể đồng thờ i là mức cao và tr ạng tháicủa S1 sẽ không đượ c nhận trong quá trình ghi. [4]

     Nguyên lí hoạt động ở  chế  độ CPUKhi có nguồn cấ p thì HM2007 bắt đầu hoạt động giống như ở  chế độ thườ ng và

    sau đó thanh ghi tr ạng thái sẽ có giá tr ị 10 để chờ  lệnh. Sau khi nhận lệnh Recog, thìic sẽ  bắt đầu cho xử  lý nhận biết âm. Thiết bị  ngoài có thể  hiển thị  tr ạng thái củaHM2007. Khi tr ạng thái hoạt động chuyển sang 01, và chân WAIT mức thấ p,HM2007 sẽ  tr ở  về  tr ạng thái hoạt động 10 và sau đó sẵn sàng nhận lệnh mớ i. Khitr ạng thái hoạt động chuyển sang 01 và chân WAIT mức cao, đó là lúc sẵn sàng nhậnâm vào và sau đó xử lý nhận biết âm. Khi tr ạng thái hoạt động tr ở  về 01 một lần nữa,thì sau đó việc xử lý nhận biết hoàn tất HM 2007 đang đợ i lệnh khác.

  • 8/20/2019 Bao cao NCKH (1)

    17/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 17 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    Sau khi nhận biết âm. K ết quả  nhận biết đượ c đưa vào trong bộ đệm, thiết bị ngoài có thể gửi lệnh RESULT dạng cơ  số 10 để lấy k ết quả nhận biết. Khi dữ liệu đãđượ c đọc tr ạng thái hoạt động sẽ  tr ở   về  10 và đợ i lệnh k ế. Sau khi lệnh RESULTđượ c gửi, việc đọc đượ c thực hiện bở i CPU và k ết quả đượ c gửi bở i HM2007.

    Khi HM2007 nhận mã lệnh TRAIN, ic sẽ cần thêm thông tin để biết vị trí khungđượ c cài đặt. Từ đầu tiên là bốn bít thấ p của giá tr ị vị trí, từ thứ hai là hai bit cao củagiá tr ị vị trí của từ.

     Nếu một số vị trí khung từ đượ c chấ p nhận và chân WAIT là mức cao, HM2007 bắt đầu xử lý cài đặt khung từ. Nếu chân WAIT mức thấ p HM2007 sẽ bỏ qua việc xử lý cài đặt. Sau khi xử lý cài đặt, tr ạng thái hoạt động sẽ tr ở  về 10 và đợ i lệnh k ế tiế p.Khi HM2007 nhận mã lệnh UPLOAD, chip cần hai từ để biết vị trí khung từ nơ i chưachứa data. Từ đầu tiên là 4 bit thấ p và từ thứ hai là 2 bit cao.

    Khi lệnh RESET đượ c đưa vào HM2007 chip sẽ xóa tất cả nhưng khung nhớ  trong bộ 

    nhớ .

    1.2 

    Giớ i thiệu IC nhớ  SRAM 6264 [4] 

    IC UM6264 là một ic xử lí nhanh, có dung lượ ng 65536 bit vớ  8Kbyte dữ liệu, ápcấ p 5VDC, thờ i gian đáp ứng truy cậ p khoảng 150ns. Ngõ vào ra dữ liệu đượ c dùngchung, các ngõ ra này tươ ng thích họ TTL. Công suất tiêu tán ở   tr ạng thái chờ   r ấtthấ p chỉ khoảng 0.1mW so vớ i khi hoạt động bình thườ ng là 200mW.

    Hình 1.5 Sơ  đồ khối SRAM 6264 [2]

     IC UM6264 bao g ồm các chân:- Các chân nguồn VCC/GND

  • 8/20/2019 Bao cao NCKH (1)

    18/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 18 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    - Các chân dữ liệu D0 – D7- Các chân địa chỉ A0 – A12- Các chân điều khiển là WE, OE, CS1, CS2

    Hình 1.6 Cấu tạo bên trong SRAM 6264

    IC UM6264 là thiết bị lưu tr ữ dữ liệu quan tr ọng trong hệ thống, đây là loai chipđượ c sử dụng trong PLC để làm bộ nhớ . Vớ i hệ thống này IC 6264 phải đượ c chọnlựa loại tươ ng thích thì mạch mớ i hoạt động ổ định lâu dài. IC này có một khuyếtđiểm là khi chúng ta ngưng cấ p nguồn thì dữ liệu tự động sẽ xóa, do đó ta cần có mộtnguồn pin 3V cấ p vào chân Back up dữ liệu của hệ thống.

  • 8/20/2019 Bao cao NCKH (1)

    19/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 19 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    CHƯƠ NG II

    GIỚ I THIỆU LÝ THUYẾT VỀ MẠCH ĐIỀU KHIỂN TỪ  XA CỦA THIẾT BỊ 

    2.1 

    Chi tiết về chip AVR Atmega8  [1] 

    2.1.1 T ổ ng quan Những tính năng chính của Atmega8-  Rom: 8Kbyte- 

    Sram: 4Kbytes-  EEPROM: 4Kbytes-  64 thanh ghi I/O- 

    160 thanh ghi vào ra mở  r ộng-  32 thanh ghi đa mục đích

    2 bộ định thờ i 8 bit (0,2)- 

    2 bộ định thờ i 16 bit (1,3)-  Bộ định thờ i watchdog-  Bộ dao động nội RC tần số 1MHz, 2MHz, 4MHz, 8MHz-  ADC 8 kênh vớ i độ phân giải 10 bit (Ở dòng Xmega lên tớ i 12 bit)-  2 kênh PWM 8 bit-  6 kênh PWM có thể lậ p trình thay đổi độ phân giải từ 2 tớ i 16 bit-  Bộ so sánh tươ ng tự có thể lựa chọn ngõ vào- 

    Hai khối USART lậ p trình đượ c-  Khối truyền nhận nối tiế p SPI- 

    Khối giao tiế p nối tiế p hai dây TWI

    Hỗ tr ợ  Boot loader-  6 chế độ tiết kiệm năng lượ ng- 

    Lựa chọn tần số hoạt động bằng phần mềm-  Đóng gói 64 chân kiểu TQFP-  Tần số tối đa 16MHz-  Điện thế: 4,5V – 5,5V

    …………………………………..

    Vi điều khiển AVR do hãng Atmel (Hoa k ỳ) sản xuất đượ c giớ i thiệu lần đầutiên vào năm 1996, AVR có r ất nhiều dòng khác nhau bao gồm dòng Tiny AVR ( như AT tiny 13, AT tiny 22…) có kích thướ c bộ nhớ  nhỏ, ít bộ phận ngoại vi, r ồi đến

    dòng AVR (chẳn hạn AT90S8535, AT90S8515…….) có kích thướ c bộ nhớ  vào loạitrung bình và mạnh hơ n là dòng MEGA ( như AT mega 32, At mega 128……) vớ i bộ nhớ  có kích thướ c vài Kbyte đến vài tr ăm Kb cùng vớ i các bộ ngoại vi đa dạng đượ ctích hợ  p trên chip, cũng có dòng tích hợ  p cả bộ LCD trên chip (dòng LCD AVR). Tốcđộ của dòng Mega cũng cao hơ n so vớ i các dòng khác. Sự khác nhau cơ  bản giữa cácdòng chính là cấu trúc ngoại vi, còn nhân thì vẫn như  nhau. Đặt biệt năm 2008.ATMEL lại tiế p tục cho ra đờ i dòng AVR mớ i là XmegaAVR, vớ i những tính năng

  • 8/20/2019 Bao cao NCKH (1)

    20/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 20 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    mạnh mẽ chưa từng có ở  các dòng AVR tr ướ c đó. Có thề nói XmegaAVR là dòngMCU 8 bit mạnh nhất hiện nay. [3]

    Hình 2.1 Hình ảnh các loại AVR [2]

    Cấu trúc cơ  bản của vi điều khiển AVR như  sau

    Hình 2.2 Sơ  đồ khối cấu trúc vi điêu khiển AVR [4]

    2.1.2 C ấ u trúc bộ nhớ  và cổ ng vào ra

    2.1.2.1 Cấu trúc bộ nhớ  

    Bộ nhớ  vi điều khiển AVR có cấu trúc Harvard là cấu trúc có đườ ng Bus riêng cho bộ nhớ  chươ ng trình và bộ nhớ  dữ  liệu. Bộ nhớ  AVR đượ c chia làm 2 phần chính: Bộ nhớ  chươ ng trình (program memory) và bộ nhớ  dữ liệu (Data memory)

    •  Bộ nhớ  chươ ng trình:

  • 8/20/2019 Bao cao NCKH (1)

    21/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 21 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    Bộ nhớ   chươ ng trình của AVR là bộ nhớ  Flash có dung lượ ng 128K bytes. Bộ nhớ  chươ ng trình có độ r ộng Bus là 16 bit. Những địa chỉ đầu tiên của bộ nhớ  chươ ngtrình đượ c dùng trong bảng vecto ngắt. Đối vớ i Atmega 8 bộ nhớ  chươ ng trình có thể chia làm 2 phần: phần boot loader (Boot loader program section)và phần ứng dụng(Application program section).

    Phần boot loader chứa chươ ng trình boot loader. Chươ ng trình boot loaderlà một phần mềm nhỏ nạ p trong vi điều khiển và đượ c chạy lúc khở i động. Phần mềmnày có thể tải vào trong vi điều khiển chươ ng trình của ngườ i sử dụng và sau đó thựcthi chươ ng trình này. Mỗi khi reset vi điều khiển CPU sẽ nhẩy tớ i thực thi chươ ngtrình boot loader tr ướ c, chươ ng trình boot loader sẽ dò xem có chươ ng trình nào cầnnạ p vào vi điều khiển hay không, nếu có chươ ng trình cần nạ p, boot loader sẽ nạ pchươ ng trình vào vùng nhớ   ứng dụng (Application program section), r ồi thực thichươ ng trình này. Ngượ c lại, boot loader sẽ chuyển tớ i chươ ng trình ứng dụng có sẵntrong vùng nhớ  ứng dụng để thực thi chươ ng trình này.

    Phần ứng dụng (Application program section) là vùng nhớ  chứa chươ ng trình ứngdụng của ngườ i dùng. Kích thướ c của phần boot loader và phần ứng dụng có thể tùy

    chọn.

    Hình 2.3 Tổng quan chế độ hoạt động boot loader

    Hình trên thể  hiện cấu trúc bộ nhớ   chươ ng trình có sử  dụng boot loader vàkhông sử dụng boot loader, khi sử dụng phần boot loader ta thấy 4 word đầu tiên thayvì chỉ  thị  cho CPU chuyển tớ i chươ ng trình ứng dụng của ngườ i dùng (là chươ ng

  • 8/20/2019 Bao cao NCKH (1)

    22/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 22 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    trình có nhãn Start) thì chỉ  thị CPU nhẩy tớ i phần chươ ng trình boot loader để  thựchiện tr ướ c r ồi mớ i quay tr ở  lại thực hiện chươ ng trình ứng dụng.•  Bộ nhớ  dữ  liệu: Bộ nhớ  dữ liệu của AVR đượ c chia làm hai phần chính là bộ nhớ  SRAM và bộ nhớ  EEPROM. Tuy cùng là bộ nhớ  dữ  liệu nhưng hai bộ nhớ  này lạitách biệt nhau và đượ c đánh địa chỉ riêng

    - Bộ nhớ  SRAM: có dung lượ ng 4K bytes, bộ nhớ  SRAM có hai chế độ hoạt động là chế độ thông thườ ng và chế độ tươ ng thích vớ i AT mega 8 muốn thiếtlậ p bộ nhớ  SRAM hoạt động theo chế độ nào ta sử dụng bit cầu chì M103C.

    - Bộ nhớ  EEPROM: Đây là bộ nhớ  dữ liệu có thể ghi xóa ngay trong lúc viđiều khiển đang hoạt động và không bị mất dữ liệu khi nguồn cung cấ p bị mất. Vớ i viđiều khiển AT mega8, bộ nhớ  EEPROM có kích thướ c là 4K byte. EEPROM đượ cxem như là một bộ nhớ  vào ra đượ c đánh địa chỉ độc lậ p vớ i SRAM. Để điều khiểnvào ra dữ liệu vớ i EEPROM ta sử dụng ba thanh ghi:

    + Thanh ghi EEAR (EEARL):

    Đây là thanh ghi 16 bit lưu giữ địa chỉ các ô nhớ  của EEPROM, thanh ghiEEAR đượ c k ết hợ  p từ 2 thanh ghi 8 bit là EEARH và thanh ghi EEARL. Vì bộ nhớ  EEPROM của Atmega8 có dung lượ ng 4Kbyte = 4069 byte = 212 byte nên ta chỉ cần12 bit của thanh ghi EEAR, 4 bit từ 15-12 đượ c dự tr ữ ta nên ghi 0 vào các bit dự tr ữ 

    này.

    + Thanh ghi EEDR

    Đây là thanh ghi dữ liệu của EEPROM, là nơ i chứa dữ liệu ta định ghi vào hay lấy ratừ EEPROM.

    + Thanh ghi EECR

  • 8/20/2019 Bao cao NCKH (1)

    23/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 23 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    Đây là thanh ghi điều khiển EEPROM, ta chỉ  sử dụng 4 bit đầu của thanh ghi này, bốn bit cuối là dự tr ữ, ta nên ghi 0 vào các bit dự tr ữ 

    Tóm t ắt bản đồ bộ nhớ  bên trong atmega8

    Hình 2.4 [1]

    2.1.3 Cổng vào ra

    2.1.3.1 Giớ i thiệu

    Cổng vào ra là một trong số các phươ ng tiện để vi điều khiển giao tiế p vớ i cácthiết bị ngoại vi. AT mega8 có tất cả các cổng vào ra 8 bit là: PortA, PortB, PortC,PortD Các cổng vào ra của AVR là cổng vào hai chiều có thể định hướ ng, tức có thể chọn hướ ng của cổng là hướ ng vào (input) hay hướ ng ra (output). Tất cả  các cổngvào ra của AVR đều có chức năng Đọc – Chỉnh sửa – Ghi (Read – Modify – Write)khi sử dụng chúng như là các cổng vào ra số thông thườ ng. Điều này có ngh ĩ a là khita thay đổi hướ ng một chân nào đó thì nó không làm ảnh hướ ng tớ i hướ ng của cácchân khác. Tất cả các chân của các Port đều có điện tr ở  kéo lên (pull-up) riêng, ta cóthể cho phép hay không cho phép điện tr ở  kéo lên này hoạt động.

  • 8/20/2019 Bao cao NCKH (1)

    24/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 24 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    Điện tr ở  kéo lên là một điện tr ở  đượ c dùng khi thiết k ế các mạch điện tử logic. Nó có một đầu đượ c nối vớ i nguồn điện áp dươ ng (VCC – Vdd) và đầu còn lại đượ cnối vớ i tín hiệu lối vào/ra của một mạch logic chức năng.

    2.1.3.2 Cách hoạt động

    Khi khảo sát các cổng như  là các cổng vào ra số  thông thườ ng thì tính chấtcủa các cổng (PortA, PortB, …) là tươ ng tự nhau, nên ta chỉ cần khảo sát một cổngnào đó trong số 7 cổng của vi điều khiển là đủ.

    Mỗi một cổng vào ra của vi điều khiển đượ c liên k ết vớ i ba thanh ghi:PORTx, DDRx, PINx. ( x thay thế cho A,B….). Ba thanh ghi này sẽ đượ c phối hợ  pvớ i nhau để điều khiển hoạt động của cổng, chẳng hạn thiết lậ p cổng thành lối vào cósử dụng điện tr ở  kéo lên… Sau đây là nguyên lý chi tiết vai trò của ba thanh ghi trên:

    • 

    Thanh ghi DDRx.Đây là thanh ghi 8 bit (có thể đọc ghi) có khả năng điều khiển hướ ng của cổng

    (là lối vào hay lối ra). Khi một bit của thanh ghi này đượ c set lên 1 thì chân tươ ng

    ứng vớ i nó đượ c cấu hình thành ngõ ra. Ngượ c lại, nếu bit của thanh ghi DDRx là 0thì chân tươ ng ứng vớ i nó đượ c thiết lậ p thành ngõ vào.Ví dụ: Khi ta set tất cả 8 bit của thanh ghi DDRA đều là 1, thì 8 chân tươ ng

    ứng của PortA, là PA1, PA2, …. PA7 (tươ ng ứng vớ i các chân của vi điều khiển)đượ c thiết lậ p thành ngõ ra.

    •  Thanh ghi PORTxPORTx là thanh ghi 8 bit có thể đọc ghi. Đây là thanh ghi dữ liệu của PORTx.

     Nếu thanh ghi DDRx thiết lậ p cổng là lối ra, khi đó giá tr ị của thanh ghi PORTx cũnglà giá tr ị của các chân tươ ng ứng của PORTx, nói cách khác, khi ta ghi một giá tr ị logic lên 1 bit của thanh ghi này thì chân tươ ng ứng vớ i bit đó cũng có cùng mứclogic. Khi thanh ghi DDRx thiết lậ p cổng thành lối vào thì thanh ghi PORTx đóng vaitrò như một thanh ghi điều khiển cổng.

    Cụ thể, nếu một bit của thanh ghi này đượ c ghi thành 1 thì điện tr ở  treo ở  chântươ ng ứng vớ i nó sẽ đượ c kích hoạt, ngượ c lại nếu bit đượ c ghi thành 0 thì điện tr ở  treo ở  chân tươ ng ứng sẽ không đượ c kích hoạt, cổng ở  tr ạng thái cao tr ở  (HI-Z).

  • 8/20/2019 Bao cao NCKH (1)

    25/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 25 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    • 

    Thanh ghi PINxPINx không phải là một thanh ghi thật sự, đây là địa chỉ trong bộ nhớ  I/O k ết

    nối tr ực tiế p vớ i các chân của cổng. Khi ta đọc PORTx tức ta đọc dữ liệu đượ c chốttrong PORTx, còn khi đọc PINx thì giá tr ị logic hiện thờ i ở  chân của cổng tươ ng ứngđượ c đọc. Vì thế đối vớ i thanh ghi PINx ta có thể đọc mà không thể ghi.

    2.1.4  Bộ định thờ i của AT mega8  [1] AT mega8 có 4 bộ định thờ i, bộ định thờ i 1 và 3 là bộ định thờ i 16 bit, bộ định

    thờ i 0 và 2 là bộ định thờ i 8 bit. Sau đây là mô tả chi tiết của 4 bộ định thờ i.2.1.4.1 Bộ định thờ i 1

    Hình 2.5 Sơ  đồ bộ định thờ i 1

  • 8/20/2019 Bao cao NCKH (1)

    26/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 26 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    Bộ định thờ i 1 và 3 là bộ định thờ i 16 bit, bộ định thờ i 1 sử dụng 13 thanh ghi liênquan, còn bộ định thờ i 3 sử dụng 11 thanh ghi liên quan vớ i nhiều chế độ  thực thikhác nhau. Vì bộ định thờ i 1 và 3 hoạt động giống nhau nên bài viết này em chỉ trình bày về bộ định thờ i 1.

    Các định nghĩ a sau sẽ  đượ c sử  d ụng trong bộ định thờ i 1:

    BOTTOM: Bộ đếm đạt đến giá tr ị BOTTOM khi nó có giá tr ị 0000h.MAX: Bộ đếm có giá tr ị MAX khi nó bằng FFFFh.TOP: Bộ đếm đạt giá tr ị TOP khi nó bằng vớ i giá tr ị cao nhất trong chuỗi đếm, giá tr ị cao nhất trong chuỗi đếm không nhất thiết là FFFFh mà có thể  là bất cứ giá tr ị nàođượ c qui định trong thanh ghi OCRnX (X=A,B,C) hay ICRn, tùy theo chế độ  thựcthi.

     Bộ định thờ i 1 bao g ồm các thanh ghi:• 

    Thanh ghi TCCR1A (Timer/Cuonter 1 Control Register)• 

    Thanh ghi TCCR1B• Thanh ghi TCCR1C

    • 

    Thanh ghi Timer/Counter – TCNT1H and TCNT1L• 

    Thanh ghi Output Compare Register 1A – OCR1AH and OCR1AL• 

    Thanh ghi Output Compare Register 1B – OCR1BH and OCR1BL• Thanh ghi Output Compare Register 1C – OCR1CH and OCR1CL• Thanh ghi Input Capture Register 1 – ICR1H and ICR1L• 

    Thanh ghi Timer/Cuonter Interrupt Mask Register – TIMSK• Thanh ghi Extended Timer/Cuonter Interrupt Mask Register – ETIMSK• Thanh ghi Timer/Cuonter Interrupt Flag Register – TIFR• Thanh ghi Extended Timer/Cuonter Interrupt Flag Register – ETIFR• Thanh ghi Special Function IO Register – SFIOR

    2.1.4.2 Bộ định thờ i 3Do bộ định thờ i 3 có cấu trúc giống bộ định thờ i 1, nên ở   đây chỉ trình bày các

    thanh ghi có liên quan tớ i bộ định thờ i 3.• Thanh ghi TCCR3A• 

    Thanh ghi TCCR3B• Thanh ghi TCCR3C• Thanh ghi Timer/Cuonter1 – TCNT3H and TCNT3L• Thanh ghi Output Compare Register 3A – OCR3AH and OCR3AL• Thanh ghi Output Compare Register 3B – OCR3BH and OCR3BL• Thanh ghi Output Compare Register 3C – OCR3CH and OCR3CL•

     

    Thanh ghi Extended Timer/Cuonter Interrupt Mask Register – ETIMSK• Thanh ghi Extended Timer/Cuonter Interrupt Flag Register – ETIFR• Thanh ghi Special Funtion IO Register – SFIOR

  • 8/20/2019 Bao cao NCKH (1)

    27/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 27 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    Ngõ ra khối Compare Match Output Unit

    Hình 2.6 Sơ  đồ ngõ ra khối

     Nhìn hình ta thấy Pin OcnX (chẳn hạn pin 15 của IC tươ ng ứng vớ i OC1A), là ngõra của khối Compare Match Output Unit, có thể đượ c nối vớ i 3 thanh ghi là OCnX,PortX và DDRX. Thanh ghi nào đượ c nối vớ i Ocn là phụ thuộc vào các bit COMn1:0(tức là tùy theo chế độ hoạt động của bộ định thờ i). Nếu ta thiết lậ p bộ định thờ i hoạtđộng ở  chế độ thườ ng ( tức không sử dụng chức năng so sánh khớ  p) thì chân Ocn tr ở  thành chân vào ra số thông thườ ng. Ngõ ra khối Compare Match Output Unit của bộ định thờ i 1 cũng giống như bộ định thờ i 3.

    2.1.4.3 Bộ định thờ i 0

    Hình 2.7 Sơ  đồ khối bộ định thờ i 0

  • 8/20/2019 Bao cao NCKH (1)

    28/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 28 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    Bộ định thờ i 0 là bộ định thờ i 8 bit, bộ định thờ i 0 liên quan tớ i 7 thanh ghi vớ i nhiềuchế độ thực thi khác nhau.

    Các định ngh ĩ aCác định nghĩ a sau sẽ  đượ c sử  d ụng cho bộ định thờ i 0 và 2

    BOTTOM: Bộ đếm đạt tớ i giá tr ị  BOTTOM khi nó có giá tr ị 00h.MAX:  Bộ đếm đạt tớ i giá tr ị Max khi nó bằng FFh.TOP: Bộ đếm đạt giá tr ị TOP khi nó bằng vớ i giá tr ị  cao nhất trong chuỗi

    đếm, giá tr ị cao nhất trong chuỗi đếm không nhất thiết là FFh mà có thể là bất k ỳ giátr ị nào đượ c qui định trong thanh ghi OCRn (n=0,2), tuy theo chế độ thực thi.

    Bộ định thờ i 0 có vài đặc điểm chính như: Bộ đếm đơ n kênh, xóa bộ định thờ ikhi có sự kiện so sánh khớ  p (compare match) và tự nạ p lại, có thể đếm từ bộ giaođộng 32 KHz bên ngoài, chế độ PWM hiệu chỉnh pha…Các thanh ghi trong bộ địnhthờ i 0 bao gồm:• Thanh ghi Timer/Cuonter Control Register – TCCR0• 

    Thanh ghi Timer/Cuonter Register - TCNT0• Thanh ghi Output Compare Register – OCR0• Thanh ghi Timer/Cuonter Intertupt Mask Register – TIMSK• Thanh ghi Timer/Cuonter Interrupt Flag Register – TIFR• Thanh ghi Special Function IO Register – SFIOR• Thanh ghi Asynchronous Status Register – ASSR

    2.1.4.4 Bộ định thờ i 2

    Hình 2.8 Sơ  đồ khối bộ định thờ i 2

  • 8/20/2019 Bao cao NCKH (1)

    29/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 29 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    Bộ định thờ i 2 là bộ định thờ i 8 bit, bộ định thờ i 2 liên quan tớ i 5 thanh ghi vớ inhiều chế độ thực thi khác nhau. Thuộc tính chính của bộ định thờ i 2 gồm: Bộ đếmđơ n kênh, xóa bộ định thờ i khi có sự kiện “so sánh khớ  p” và tự động nạ p lại, PWMhiệu chỉnh pha, đếm sự kiện bên ngoài.

    CÁC THANH GHI BỘ  ĐỊ  NH TH Ờ  I 2• Thanh ghi Timer/Cuonter Cuontrol Register – TCCR2• Thanh ghi Timer/Cuonter Register – TCNT2• Thanh ghi Output Compare Register – OCR2• Thanh ghi Timer/Cuonter Interrupt Mask Register – TIMSK• Thanh ghi Timer/Cuonter Interrupt Flag Register – TIFR

    2.2 

    Cấu trúc ngắt của ATmega8

    2.2.1 Khái niệm về ngắt Ngắt là một sự kiện bên trong hay bên ngoài làm ngắt bộ vi điều khiển để báo cho

    nó biết r ằng thiết bị cần dịch vụ của nó.Một bộ vi điều khiển có thể phục vụ một vài thiết bị, có hai cách để thực hiện điều

    này đó là sử dụng các ngắt (interrupt) và thăm dò (polling). Trong phươ ng pháp sử dụng các ngắt thì mỗi khi có một thiết bị bất k ỳ cần đến dịch vụ của nó thì nó báo cho bộ vi điều khiển bằng cách gửi một tín hiệu ngắt. Khi nhận đượ c tín hiệu ngắt thì bộ vi điều khiển ngắt tất cả những gì nó đang thực hiện để chuyển sang phục vụ thiết bị.Chươ ng trình đi cùng vớ i ngắt đượ c gọi là dịch vụ  ngắt ISR (Interrupt ServiceRoutine) hay còn gọi là trình quản lí ngắt (Interrupt handler). Còn trong phươ ng phápthăm dò thì bộ vi điều khiển hiển thị liên tục tình tr ạng của một thiết bị đã cho và điềukiện thỏa mãn thì nó phục vụ thiết bị. Sau đó chuyển sang hiển thị tr ạng thái của thiết bị k ế tiế p cho đến khi tất cả đều đượ c phục vụ.

    Mặc dù phươ ng pháp thăm dò có thể hiển thị tình tr ạng của một vài thiết bị và phục vụ mỗi thiết bị khi các điều kiện nhất định đượ c thỏa mãn nhưng nó không tậndụng hết công dụng của bộ vi điều khiển. Điểm mạnh của phươ ng pháp ngắt là bộ viđiều khiển có thể  phục vụ  r ất nhiều thiết bị  (tất nhiên là không tại cùng một thờ iđiểm). Mỗi thiết bị có thể nhận đượ c sự chú ý của bộ vi điều khiển dựa trên mức ưutiên cho các thiết bị vì nó kiểm tra tất cả các thiết bị theo kiểu xoay vòng. Quan tr ọnghơ n là trong phươ ng pháp ngắt thì bộ vi điều khiển cũng có thể che hoặc làm lơ  mộtyêu cầu dịch vụ của thiết bị. Điều này lại một lần nữa không thể thực hiện đượ c trong phươ ng pháp thăm dò. Lý do quan tr ọng nhất mà phươ ng pháp ngắt đượ c ưa chuộngnhất là vì phươ ng pháp thăm dò làm hao phí thờ i gian của bộ vi điều khiển bằng cáchhỏi dò từng thiết bị k ể cả khi chúng không cần đến dịch vụ.

    2.2.2 Trình phục vụ ngắt của bảng Vector ngắt.Đối vớ i mỗi ngắt thì phải có một trình phục vụ  ngắt ISR (Interrupt Service

    Ruotine) hay trình quản lý ngắt (Interrupt handler). Khi một ngắt đượ c gọi thì bộ viđiều khiển phục vụ ngắt. Khi một ngắt đượ c gọi thì bộ vi điều khiển chạy trình phụcvụ ngắt. Đối vớ i mỗi ngắt thì có một vị trí cố định trong bộ nhớ  để giữ lại địa chỉ ISRcủa nó. Nhóm các vị trí nhớ  đượ c dành riêng để gửi các địa chỉ của các ISR đượ c gọilà bảng véc tơ  ngắt.

  • 8/20/2019 Bao cao NCKH (1)

    30/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 30 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    Khi kích hoạt một ngắt thì bộ vi điều khiển đi qua các bướ c sau:•  Vi điều khiển k ết thúc lệnh đang thực hiện và lưu địa chỉ của lệnh k ế  tiế p (PC)vào ngăn xế p.• 

     Nó nhảy đến một vị trí cố định trong bộ nhớ  đượ c gọi là bảng véc tơ  ngắt nơ i lưu

    giữ địa chỉ của một trình phục vụ ngắt.• 

    Bộ vi điều khiển nhận địa chỉ ISR từ bảng véc tơ  ngắt và nhảy tớ i đó. Nó bắt đầuthực hiện trình phục vụ ngắt cho đến lệnh cuối cùng của ISR là RETI (tr ở  về từ ngắt).•  Khi thực hiện lệnh RETI bộ vi điều khiển quay tr ở  về nơ i nó đã bị ngắt. Tr ướ c hếtnó nhận địa chỉ của bộ đếm chươ ng trình PC từ ngăn xế p bằng cách kéo hai byte trênđỉnh của ngăn xế p vào PC. Sau đó bắt đầu thực hiện các lệnh từ địa chỉ đó.

    2.2.3 Bảng Vector ngắt của ATmega8Đây là bảng véc tơ  ngắt của Atmega8, cùng vớ i địa chỉ của nó trong bộ nhớ  

    chươ ng trình.

    Số vector Địa chỉ  Nguồn (điểm gốc) Ý ngh ĩ a1 $0000 RESET Reset AVR2 $0002 INT0 Ngắt ngoài 03 $0004 INT1 Ngắt ngoài 14 $0006 INT2 Ngắt ngoài 25 $0008 INT3 Ngắt ngoài 36 $000A INT4 Ngắt ngoài 47 $000C INT5 Ngắt ngoài 58 $000E INT6 Ngắt ngoài 69 $0010 INT7 Ngắt ngoài 710 $0012 TIMER2 COMP So sánh Timer/Cuonter 2

    11 $0014 TIMER2 OVF Báo tràn Timer/Cuonter 212 $0016 TIMER1 COMPA Sử dụng Timer/Cuonter 113 $0018 TIMER1 COMPA So sánh Timer/Cuonter1 (A)14 $001A TIMER1 COMPB So sánh Timer/Cuonter1 (B)15 $001C TIMER1 OVF Báo tràn Timer/Cuonter 116 $001E TIMER0 COMP So sánh Timer/Cuonter017 $0020 TIMER0 OVF Báo tràn Timer/Cuonter018 $0022 SPI.STC Khối truyền nhận nối tiế p19 $0024 USART0. RX Bộ truyền dữ liệu nối tiế p 0 RX20 $0026 USART0.UDRE Bộ dữ liệu tr ống USART021 $0028 USART0.TX Bộ truyền dữ liệu nối tiế p TX

    22 $002A ADC Bộ chuyển đổi ADC23 $002C EE READY Bộ nhớ  EEPROM24 $002E ANALOG COMP So sánh tín hiệu tươ ng tự 25 $0030 TIMER1 COMPC So sánh Timer/Cuonter1 (C)26 $0032 TIMER3 CAPT Sử dụng Timer/Cuonter327 $0034 TIMER3 COMPA So sánh Timer/Cuonter3 (A)28 $0036 TIMER3 COMPB So sánh Timer/Cuonter3 (B)

  • 8/20/2019 Bao cao NCKH (1)

    31/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 31 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    Hình 2.9 Bảng vector ngắt của Atmega8 [3]

    2.2.4  Thứ  tự  ư u tiên ngắtKhông như vi điều khiển họ 8051, ở  đó thứ tự ưu tiên của các ngắt có thể thay

    đổi đượ c bằng cách lậ p trình. Vớ i vi điều khiển AVR thứ tự ưu tiên các ngắt là khôngthể  thay đổi và theo qui tắc: “Một véc tơ   ngắt có địa chỉ  thấ p hơ n trong bộ  nhớ  chươ ng trình có mức độ ưu tiên cao hơ n”. Chẳn hạn ngắt ngoài 0 (INT0) có mức độ ưu tiên cao hơ n ngắt ngoài 1 (INT1).

    Để cho phép một ngắt ngườ i dùng cần cho phép ngắt toàn cục (set bit 1 trong

    thanh SREG) và các bit điêu khiển tươ ng ứng.Khi một ngắt xảy ra và đang đượ c phục vụ thì bit I trong thanh ghi SREG bị xóa, như thế khi có một ngắt khác xảy ra thì nó sẽ không đượ c phục vụ, do đó để cho phép các ngắt trong một ISR (interrupt service routine) khác đang thực thi, thì trongchươ ng trình ISR phải có lệnh SEI đề set lại bit I trong SREG.

    2.2.5  Ngắt trong ngắt.Khi AVR đang thực hiện một trình phục vụ ngắt thuộc một ngắt nào đó thì lại

    có một ngắt khác đượ c kích hoạt. Trong những tr ườ ng hợ  p như vậy thì một ngắt cómức ưu tiên cao hơ n có thể ngắt một ngắt có mức ưu tiên thấ p hơ n. Lúc này ISR củangắt có mức ưu tiên cao hơ n sẽ đượ c thực thi. Khi thực hiện xong ISR của ngắt có

    mức ưu tiên cao hơ n thì nó mớ i quay lại phục vụ  tiế p ISR của ngắt có mức ưu tiênthấ p hơ n tr ướ c khi tr ở  về chươ ng trình chính. Đây gọi là ngắt trong ngắt.

    Hình 2.10 Các ngắt lồng nhau

    29 $0038 TIMER3 COMPC So sánh Timer/Cuonter3 (C)30 $003A TIMER3 OVF Báo tràn Timer 331 $003C USART1.RX Bộ truyền dữ liệu nối tiế p 1 RX32 $003E USART1.UDRE Bộ dữ liệu r ỗng USART133 $0040 USART1.TX Bộ truyền dữ liệu nối tiế p 1 TX

    34 $0042 TWI Hai giá tr ị bên ngoài35 $0044 SPM READY Bộ nhớ  chươ ng trình

  • 8/20/2019 Bao cao NCKH (1)

    32/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 32 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    Chú ý:

    Giả định là khi một ISR nào đó đang thực thi thì xảy ra một yêu cầu ngắt từ 

    một ISR khác có mức ưu tiên thấ p hơ n thì ISR có mức ưu tiên thấ p hơ n không đượ c phục vụ, nhưng nó sẽ không bị bỏ qua luôn mà ở  tr ạng thái chờ . Ngh ĩ a là ngay saukhi ISR có mức ưu tiên cao hơ n thực thi xong thì đến lượ t ISR có mức ưu tiên thấ phơ n sẽ đượ c phục vụ.

    2.2.6 Các ngắt ngoài [3] AT mega8 có 8 ngắt ngoài từ INT0 đến INT7 (ở  đây chưa k ể tớ i ngắt Reset).

    Tám ngắt này tươ ng ứng vớ i 8 chân của MCU la INT0, INT1……INT7. Để ý là ngaycả khi các chân INT0, INT1,…INT7 của MCU đượ c cấu hình như là chân lối ra, thìcác ngắt ngoài vẫn có tác dụng nếu đượ c cho phép.

    Các ngắt ngoài có thể  bắt mẫu theo kiểu cạnh lên (Rising), cạnh xuống(Falling) hay mức thấ p (Low level). Điều này đượ c qui dịnh trong hai thanh ghiEICRA và EICRB. Dướ i đây là mô tả chi tiết 2 thanh ghi EICRA và EICRB và cácthanh ghi liên quan tớ i ngắt ngắt ngoài.• 

    Thanh ghi External Interrupt Control Register A – EICRA

    Tám bit của thanh ghi EICRA sẽ điều khiển kiểu bắt mẫu cho 4 ngắt INT3, INT2,INT1, INT0. Qui định cụ thể đượ c thể hiện trong bảng sau:

    ISCn1 ISCn0 Kiểu bắt mẫu0 0 Mức thấ p sẽ tạo yêu cầu ngắt0 1 Dự tr ữ 1 0 Cạnh xuống (Falling) sẽ tạo yêu cầu ngắt1 1 Cạnh lên (Rising) sẽ tạo yêu cầu ngắt

    Hinh 2.11 Bảng điều khiển kiểu bắt mẫu ngắt

    •  Thanh ghi External Interrupt Control Register B – EICRB

  • 8/20/2019 Bao cao NCKH (1)

    33/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 33 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    Tám bit của thanh ghi EICRA sẽ điều khiển kiểu bắt mẫu cho 4 ngắt INT7, INT6,INT5, INT4. Qui định cụ thể đượ c thể hiện trong bảng sau:

    ISCn1 ISCn0 Kiểu bắt mẫu0 0 Mức sẽ tạo yêu cầu ngắt0 1 Bất cứ sự thay đổi mức logic nào ở  

    chân INTn sẽ tạo ra một yêu cầu ngắt.1 0 Cạnh xuống (Falling) giữa hai mẫu sẽ 

    tạo yêu cầu ngắt.1 1 Cạnh lên (Rising) giữa hai mẫu sẽ tạo

    yêu cầu ngắt.

    Vớ i n = 7,6,5,4…………

    • Thanh ghi External Interrupt Mask Register - EIMSK

    • Thanh ghi External Interrupt Flag Register – EIFR

    • Thanh ghi MCU Control Register – MCUCR

  • 8/20/2019 Bao cao NCKH (1)

    34/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 34 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    2.3  Các bộ phận ngoại vi khác [3] [4] 

     Ngoài các bộ phận ngoại vi đã đượ c giớ i thiệu ở  trên như: Bộ định thờ i, cáccổng vào ra, EEPROM …. Vi điều khiển AT mega8 có nhiều bộ phận ngoại vi khác,các bộ ngoại vi này r ất tiện lợ i trong các ứng dụng điều khiển (bộ PWM) xử lí số liệu

    (bộ ADC, bộ so sánh Analog), giao tiế p (bộ USART, SPI, I2C)…. Việc tích hợ  p các bộ  ngoại vi này vào trong chip giúp cho các thiết k ế  tr ở   nên thuận tiên hơ n, kíchthướ c bo mạch cũng gọn gàng hơ n.

    2.3.1 Bộ so sánh tươ ng tự  

    Sơ  đồ đơ n giản của bộ so sánh tươ ng tự (Analog Comparator). Như hình bêndướ i bộ so sánh có hai ngõ vào tươ ng tự  là AIN0 và AIN1 và một ngõ ra số ACO. Nguyên tắc hoạt động của bộ so sánh tươ ng tự là: Khi ngõ vào AIN0 có điện thế caohơ n ngõ vào AIN1 thì ngõ ra ACO sẽ ở  mức cao (tươ ng ứng vớ i mức logic 1), ngượ clại khi ngõ vào AIN0 có điện thế thấ p hơ n ngõ vào AIN1 thì ngõ ra ACO sẽ ở  mức

    thấ p (tươ ng ứng vớ i mức logic 0). Thườ ng thì trong hai ngõ vào, có một ngõ vào cóđiện thế đượ c giữ cố định dùng đề làm điện thế tham chiếu (Vref), điện thế ngõ cònlại có thể thay đổi đề có thể tham chiếu vớ i ngõ vào Vref. Tr ạng thái của ngõ ra ACOcủa bộ so sánh có thể đượ c dùng để tạo ra một ngắt, k ết nối vớ i bộ định thờ i 1 để sử dụng chức năng input capture của bộ định thờ i này.

    Hình 2.12 Sơ  đồ giản lượ t của bộ so sánh tươ ng tự 

    Ở đây có sự khác biệt về chi tiết ở  bộ  so sánh tươ ng tự đối vớ i các dòng AVRkhác nhau, chẳn hạn bộ  so sánh tươ ng tự  của AT90S8535 hơ i khác vớ i bộ  so sánhtươ ng tự ở  AT mega8, tuy nhiên cấu trúc cơ  bản thì vẫn như nhau. Ta thấy hai ngõvào AIN0 và AIN1 tươ ng ứng vớ i hai chân PBx và PBy (x=2, y=3, đối vớ iAT90S8535). Ở Atmega8 ta có nhiều lựa chọn ngõ vào hơ n, các thanh ghi chú trong

     bộ nhớ  sẽ giúp ta thiết lậ p các lựa chọn này.2.3.2 Bộ biến đổi ADC

    2.3.2.1 Giớ i thiệu bộ ADC của Atmega 8Bộ biến đổi ADC có chức năng biến đổi tín hiệu tươ ng tự (analog signal) có giá

    tr ị  thay đổi trong một dải biết tr ướ c thành tín hiệu số  (digital signal). Bô ADC củaAtmega8 có độ phân giải 10 bit, sai số tuyệt đối là 2LSB, dải tín hiệu ngõ vào từ 0V-

  • 8/20/2019 Bao cao NCKH (1)

    35/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 35 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    Vcc, tín hiệu ngõ vào có nhiều lựa chọn như: có 8 ngõ vào đa hợ  p đơ n hướ ng(Multiplexed Single Ended), 7 ngõ vào vi sai (Differential Input),… Bộ ADC của ATmega8 là loại ADC xấ p xỉ liên tiế p vớ i hai chế độ có thể lựa chọn là chuyển đổi liêntục (Free Running) và chuyển đổi từng bướ c (Single Conversion).

    Chuyển đổi liên tục: là chế độ mà sau khi khở i động thì bộ ADC thực hiện chuyểnđổi liên tục không ngừng.

    Chuyển đổi từng bướ c: là bộ  ADC sau khi hoàn thành một chuyển đổi thì sẽ ngừng, một chuyển đổi tiế p theo chỉ đượ c bắt đầu khi phần mềm có yêu cầu chuyểnđổi tiế p.

    Sơ  đồ khối đơ n giản của một bộ ADC đượ c thể hiện như sau:

    Hình 2.13 Sơ  đồ khối đơ n giản bộ ADC [5]

     Nguyên tắc hoạt động của khối ADC: Tín hiệu tươ ng tự đưa vào các ngõ ADC0:7 đượ c lấy mẫu và biến đổi thành tín hiệu số tươ ng ứng. Tín hiệu số đượ c lưu hànhtrong hai thanh ghi ACDH và ADCL. Một ngắt có thể đượ c tạo ra khi hoàn thành mộtchu trình biến đổi ADC. Bộ ADC của Atmega8 phức tạ p hơ n nhiều, tuy nhiên cơ  sở  vẫn dựa vào nguyên tắc trên.

  • 8/20/2019 Bao cao NCKH (1)

    36/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 36 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    Hình 2.14 Sơ  đồ ngõ vào vi sai [5]

    Ví dụ: Đoạn chươ ng trình nhỏ  sau cho phép bộ ADC hoạt động ở   chế độ biến đổitừng bướ c, ngỏ vào là chân ADC3, không dùng ngắt.

    ldi r16,3 ;out ADMUX, r16 // Chọn ngõ vào ADC 3, điện thế tham chiếu Vref  

    ldi r16, 0b10000101out ADCSRA, r16 // không dùng ngắt, hệ số chia clock là 32, chạy từng bướ c

    sbi ADCSRA, ADSC // khở i động bộ ADC

    Wait:Sbis ADCSRA, ADIF // đợ i ADC hoàn thànhrjmp Wait

    in r16, ADCL // lưu k ết quả ADCin r17, ADCH

  • 8/20/2019 Bao cao NCKH (1)

    37/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 37 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    2.3.3 Bộ truyền dữ  liệu nối tiếp USART

    2.3.3.1 Tóm lượ c về USARTUSART (Universal Synchronous and Asynchronous serial Receiver and

    Transmitter): Bộ điều khiển đồng bộ và bất đồng bộ, đây là khối chức năng dùng cho

    việc truyền thông giữa vi điều khiển vớ i các thiết bị khác. Trong vấn đề truyền dữ liệusố, có thể phân chia cách thức truyền dữ  liệu ra hai chế độ cơ  bản là: Chế độ nhậnđồng bộ (Synchronous) và chế độ truyền nhận bất đồng bộ (Asynchronous). Ngoài ra,nếu gốc độ phần cứng thì có thể phân chia theo cách khác đó là: Truyền nhận dữ liệutheo kiểu nối tiế p (serial) và song song (paralell).

    Truyền đồng bộ: là kiểu truyền dữ liệu trong đó bộ truyền (Transmitter) và bộ nhận (Receiver) sử dụng một xung đồng hồ (clock). Do đó, hoạt động truyền và nhậngiữ liệu ra đồng thờ i.

    Truyền bất đồng bộ: Là kiểu truyền dữ liệu trong đó mỗi bộ truyền và bộ nhậncó bộ dao động xung clock riêng, tốc độ xung clock ở  hai khối này có thể khác nhau,nhưng thườ ng không quá 10%. Do đó không dùng chung xung clock, nên để đồng bộ 

    quá trình truyền và nhận dữ liệu, ngườ i ta phải truyền các bit đồng bộ (Start, Stop….)đi kèm vớ i các bit dữ liệu.

    Giớ i thiệu bộ USART của Atmega 8AT mega8 có hai bộ USART là USART0 và USART1. Hai bộ USART này là độc

    lậ p nhau, điều này có ngh ĩ a là hai khối USART0 và USART1 có thể hoạt động cùngmột lúc. Bên dướ i là sơ  đồ khối đơ n giản của khối USART.

    Hình 2.15 Sơ  đồ khối bộ USART

  • 8/20/2019 Bao cao NCKH (1)

    38/86

  • 8/20/2019 Bao cao NCKH (1)

    39/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 39 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    CHƯƠ NG III

    NGÔN NGỮ  C CHO AVR

    3.1 Khái niệm

    3.1.1  Các chú thích và tiền xử  lí (PreProcessor) [1] 

    • 

    Các chú thích.

    Thông thườ ng bắt đầu một chươ ng trình là các chú thích về project cách chúthích phải bắt đầu bằng dấu // hay /* các chú thích */ và đượ c trình biên dịch bỏ quakhi biên dịch, chẳn hạn:

    //***********************************// comments placed in there// File: demo.c// Au thor: Pham Ngoc Dang Khoa// Date: 2007

    • 

    Các tiền xử lý.

    #include: Dùng để chèn các file cần thiết vào project, các file này nên để  trong thư mục inc của trình biên dịch CodeVisionAVR.

    Ví dụ:#include  cho phép sử dụng các thanh ghi của Atmega8. Tức báo cho trình biên dịch biết chúng ta đang sử dụng vi điều khiển Atmega8. Đây sẽ là dòng code đầutiên trong chươ ng trình C.

    #define: Dùng định ngh ĩ a một giá tr ị nào đó bằng các kí tự.

    Ví dụ:

    #define max 0xff

    Định ngh ĩ a max có giá tr ị  là 0xff. Chú ý không có dấu chấm phẩy (;) ở  cuối câu vìdefine chỉ là một macro chứ không phải là một lệnh. Macro cũng có thể có tham số.

    Ví dụ:#define SUM(a,b) a+bMain( ){// các lệnh khácInt I = SUM(2,3)// các lệnh khác

  • 8/20/2019 Bao cao NCKH (1)

    40/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 40 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    };

    Thì i sẽ đượ c gán thành i = 2+3 = 5

    •  Các kiểu dữ  liệu (Data Types)

     Ngoài các kiểu dữ liệu của C, CodeVisionAVR còn có kiểu dữ liệu bit làkiểu dữ liệu 1 bit, nên giải giá tr ị chỉ có 0 và 1. Kiểu bit chỉ hỗ tr ợ  đối vớ i khai báo biến toàn cục là chính. Vớ i biến bit cục bộ, trình biên dịch chỉ cho khai báo tối đa 8 biến bit. Ví dụ:

    Bit a; //a là biến kiểu bit

    Các kiểu khác đượ c cho trong bảng dướ i.

    Kiểu dữ  liệu Kích cỡ  (bit) Giớ i hạnBit 1 0,1Char 8 -128 đến 127Unsigned char 8 0 đến 225Signed char 8 -128 đên127Int 16 -32768 đến 32767Short int 16 -32768 đến 32767Unsigned int 16 0 đến 65535Sunged int 16 -32768 đến 32767Long int 32 -2147483648 đến 2147483647Unsign long int 32 0 đến 4294967295

    Signed long int 32 -2147483648 đến 2147483647Float 32 ± 1.175e38 đến ±3.402e38double 32 ± 1.175e38 đến ±3.402e38

    • Hằng

    -  Các hằng số đượ c đặt trong bộ nhớ  FLASH, chứ không đặt trong RAM.-  Không đượ c khai báo hằng trong chươ ng trình con.-  Giá tr ị 100 đượ c hiểu là số thậ p phân (decimal), 0b101 để chỉ giá tr ị nhị phân

    (binary) và 0xff để chỉ giá tr ị thậ p lục (hexadecimal)

    Ví dụ:

    Const char a = 128; // hằng số a có kiểu char và có giá tr ị là 128.

  • 8/20/2019 Bao cao NCKH (1)

    41/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 41 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    • 

    Biến

    Biến gồm có biến toàn cục (global) là biến mà hàm nào cũng có thể truy xuất, và biến cục bộ (local) là biến mà chỉ có thể truy xuất trong hàm mà nó đượ c khai báo.

    -  Biến toàn cục, nếu không có giá tr ị khở i tạo sẽ đượ c mặt định là 0. Biến cục bộ,

    nếu không có giá tr ị khở i tạo sẽ có giá tr ị không biết tr ướ c.-  Biến toàn cục đượ c lưu tr ữ trong các thanh ghi Rn, nếu dùng hết các thanh ghi thìsẽ chuyển sang lưu tr ữ trong vùng SRAM. Để ngăn cản các biến toàn cục đượ c lưuvào các thanh ghi Rn, dù các thanh ghi này vẫn còn tự do, ta dùng từ khóa volatile.

    -  Biến toàn cục nếu không lưu trong các thanh ghi đa chức năng thì đượ c lưu tr ữ trong bộ  nhớ  SRAM, còn biến cục bộ, nếu không lưu trong các thanh ghi đa chứcnăng, thì đượ c lưu tr ữ trong vùng data STACK. Khi chươ ng trình tr ả về giá tr ị cuốicùng cho hàm thì các biến cục bộ đượ c lưu tr ữ trong stack sẽ bị khóa. Để biến cục bộ không bị xóa khi thoát khỏi hàm ta dùng từ khóa static. 

    -  Biến bit toàn cục đượ c cấ p phát ở  các thanh ghi R2 tớ i R14 của vi điều khiển, các bit đượ c cấ p phát từ R2 tớ i R14 theo thứ tự khai báo, nhắc lại là Atmega8 có 32 thanh

    ghi đa chức năng R0 đến R31.-  Trong chươ ng trình C, nơ i bắt đầu thực thi chươ ng trình là điểm bắt đầu của hàmMain. Thực tế, khi biên dịch sang hợ  p ngữ (assembly), điểm bắt đầu của chươ ng trìnhvẫn là vị trí vector reset (địa chỉ 0000h). Tr ướ c khi chạy tớ i vị trí chươ ng trình main,chươ ng trình hợ  p ngữ sẽ thực hiện khở i tạo các biến toàn cục,…. Do đó, khi chạy vàohàm main, các biến toàn cục, mà thực chất là các ô nhớ  (byte hay word), đã có giá tr ị khở i tạo sẵn. Vớ i các biến cục bộ, trình hợ  p ngữ không khở i tạo tr ướ c giá tr ị.

    • 

    Ví dụ: khai báo biến cục bộ như sau:

    Main ( )

    { unsigned char test = 9;Test+=1;}Sẽ dịch sang hợ  p ngữ là

    LDI Rn, 0x09 ;// n tùy theo dòng chip và chươ ng trìnhSUBI Rn, 0xFF ;// trình ta viết, R17 chẳn hạn

     Như vậy, vớ i biến cục bộ, khi nào sử dụng thì mớ i khở i tạo.

    Ví dụ 1:

    /* khai báo biến toàn cục */char a;

    int b;/* có thể khở i tạo giá tr ị */

    Long c = 0b1111;/* chươ ng trình con */Int increment (void)

  • 8/20/2019 Bao cao NCKH (1)

    42/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 42 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    {/* khai báo biến static */Static int n ;Return n++ ;}

    /* chươ ng trình chính */Void main (void) {/* khai báo biến cục bộ */Char d;Int e;/* có thể khở i tạo giá tr ị */Long f = 16;d = increment () ;/* d = 1 */e = increment () ;/* e = 2, vì khi thoát khỏi hàm increment thì giá tr ị của biến static n vẫn

    không bị xóa */

    Ví dụ 2:

     bit bit_mot ; // bit 0 của thanh ghi R2 đượ c cấ p cho biến bit_mot bit bit_hai ; // bit 1 của thanh ghi R2 đượ c cấ p cho biến bit_hai

    Để ý là các biến kiểu bit trên là biến toàn cục, đối vớ i biến bit cục bộ, trình biêndịch sẽ cất trong thanh ghi R15. Các thanh ghi R2 tớ i R14 cũng có thể đượ c cấ p phátcho biến thanh ghi (register variable), tùy vào các tùy chọn khi cấu hình cho trình biên dịch.

    Biến volatile:-  Để tươ ng thích vớ i các thiết bị ngoại vi khi ghép nối vớ i vi điều khiển, chẳn hạn

     bộ ADC, ghép nối vớ i RTC…. Ngườ i ta dùng các biến volatile. Biế n Volatile là biế n mà giá tr ị  của nó không đượ c thay đổ i bở i chươ ng trình,như ng có thề  đượ c thay đổ i bở i phần cứ ng.

    • Chuyển đổi kiểu dữ  liệu

    Trong một biểu thức toán học, các toán hạng có thể có kiểu dữ liệu khác nhau, khiđó trình biên dịch sẽ tự động chuyển tất cả các toán hạng về cùng một kiểu duy nhất.Thứ tự ưu tiên chuyển đổi là:

    Char -> unsigned char -> int -> unsigned int -> long -> unsigned long -> float

  • 8/20/2019 Bao cao NCKH (1)

    43/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 43 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    Ví dụ 1.

    int a ;long c, b;c = a*b ; // a sẽ đượ c tự động chuyển thành long

    Ví dụ 2.Phép nhân sau đây cho k ết quả sai:

    int a, b = 30000;long c ;c = a*b ;

    Phép toán trên sẽ nhân a vớ i b tr ướ c, vớ i tích thu đượ c là int bị tràn, r ồi mớ i chuyểntích thu đượ c sang long, r ồi gán tích bị  tràn này cho c. Để không bị  tràn, ta sửa lại biểu thức trên như sau:

    int a,b = 30000;long c ;c = (long) a*b ;

    Lúc này a,b đượ c chuyển thành long tr ướ c khi nhân, nên tích sẽ là long không bị tràn,r ồi gán k ết quả cho c.

    3.1.2 

    Mảng (Array)

    Mảng là một dãy các biến xế p liên tục nhau. Kí hiệu [ ] dùng để khai báo mảng.Mảng khai báo ngoài hàm gọi là mảng toàn cục (global array), mảng khai báo tronghàm gọi là mảng cục bộ (local array).

    Ví dụ:int global_array [4] = {1,2,3,4}// mảng có 4 phần từ (dạng nguyên) có khở i tạo giá tr ị ban đầu.global_array [0] = 9 ;// ghi giá tr ị 9 vào phần tử đầu tiên của mảngint multidim_array [2] [3] = {{1,2,3},{4,5,6}}// mảng đa chiều có khở i tạo giá tr ị ban đầu.

    3.1.3 Hàm (Function)- 

    Hàm là đoạn chươ ng trình thực hiện tr ọn vẹn một công việc nhất định.- Hàm chia cắt việc lớ n bằng nhiều việc nhỏ. Nó giúp cho chươ ng trình sáng sủa,dễ sửa, nhất là đối vớ i các chươ ng trình lớ n.- Chươ ng trình phục vụ ngắt (ISR) cũng có thể xem là một hàm, nhưng không cótham số truyền vào mà cũng không có tham số tr ả về.- Giá tr ị tr ả về của hàm đượ c lưu trong các thanh ghi R30, R31, R22, R23.

  • 8/20/2019 Bao cao NCKH (1)

    44/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 44 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    •  Con trỏ (Pointer) Những biến lưu tr ữ địa chỉ của một biến khác gọi là con tr ỏ (pointer). Có hai toántử liên quan tớ i con tr ỏ là: & và *.

    &: là toán tử lấy địa chỉ, có ngh ĩ a là “địa chỉ của”.* : là toán tử tham chiếu, có ngh ĩ a là “Giá tr ị đượ c tr ỏ bở i”.Để sử dụng con tr ỏ ta phải khai báo nó. Kiểu khai báo như sau:

    Type * pointer_name

    Ví dụ:

    Int *con_tro ;

     Để  ý là d ấ u sao (*) mà chúng ta đặt khi khai báo một con tr ỏ chỉ  có nghĩ a r ằ ng: Đó

    là một con tr ỏ và hoàn toàn không liên quan đế n toán t ử  tham chiế u * mà chúng tađ ã nói ở  trên. Đó đơ n giản chỉ  là hai tác vụ khác nhau đượ c biể u diễ n bở i cùng mộtd ấ u.

    Khi một biến con tr ỏ đượ c khai báo, nó chưa chứa đựng giá tr ị nào cả, giống như các kiểu biến khác. Để gán địa chỉ cho con tr ỏ chúng ta cần phải gán giá tr ị cho contr ỏ đó (tức khở i tạo con tr ỏ).

    Ví dụ:

    Int number;

    int *con_tro;// khai báo biến con tr ỏ là một con tr ỏ nguyêncon_tro = &number ;// biến con_tro tớ i biến number  

    Sau khi khở i tạo, ta có thể sử dụng con tr ỏ bình thườ ng trong các biểu thức.

    Ví dụ:int value1 = 5 ;int value2 = 15 ;int * mypointer;mypointer = &valuel; // con tr ỏ mypointer tr ỏ tớ i biến value1*mypointer = 10; // giá tr ị của biến valuel = 10mypointer = &value2; // con tr ỏ mypointer tr ỏ tớ i biến value2*mypointer = 20; // giá tr ị của biến value2 = 20

    3.1.3  Truy xuất các thanh ghi vào ra(accessing the i/o registers)

    Việc truy xuất các thanh ghi I/O của AVR khá đơ n giản, tất cả các thanh ghi I/Ocủa AVR đã đượ c khai báo trong file io.h. (hoặc file header cho từng chip cụ  thể,

  • 8/20/2019 Bao cao NCKH (1)

    45/86

     NGHIÊN CỨ U KHOA HỌC 2009 GVHD: Th.S NGUYỄ N VŨ QUỲ NH

    01/12/2009 TRANG 45 SVTH: PHẠM NGỌC ĐĂ NG KHOA

    mega8.h) vào chươ ng trình là có thể sử dụng các thanh ghi này. Chú ý là việc truyxuất bit trong các thanh ghi có địa chỉ 5Fh tr ở  lên trong vùng nhớ  SRAM là không thể thực hiện đượ c.

    Ví dụ:include

    char temp ;temp = PIND; // đọc giá tr ị ở  cổng D vào biến tempTCCR0 = 0x4F; // ghi giá tr ị 4Fh vào thanh ghi TCCR0 

    DDRD = 0x0c; // set bit 2 và 3 của thanh ghi DDRD

    3.2  Tóm tắt cấu trúc điều khiển [1] [6] 

    3.2.1  Cấu trúc điều kiện: if  và else.

    if (condition 1)

    {Khối lệnh 1}else if (codition 2){Khối lệnh 2}else {Khối lệnh khác} 

    Ví dụ.

    if (input ==KEY_1) PORTD = 0x01;else if (input == KEY_2) PORTD = 0x02;else if (input == KEY_3) PORTD = 0x03;elsePORTD = 0x00

    3.2.2  Vòng lặp While và do – While

    while  (expression) starement ; // (1)do statem