intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Đề tài nghiên cứu: Hệ thống cảnh báo giao thông đoạn đèo dốc

Chia sẻ: Nguyễn Hậu | Ngày: | Loại File: DOC | Số trang:30

119
lượt xem
16
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Đề tài nghiên cứu: Hệ thống cảnh báo giao thông đoạn đèo dốc được nghiên cứu với các mục tiêu: Tìm hướng giảm thiểu tai nạn giao thông tại những đoạn đèo dốc nguy hiểm, thay thế hệ thống gương cầu thường có thời gian sử dụng ngắn và phạm vi quan sát gần, giảm thiểu tai nạn giao thông.

Chủ đề:
Lưu

Nội dung Text: Đề tài nghiên cứu: Hệ thống cảnh báo giao thông đoạn đèo dốc

  1. MỤC LỤC Trang TÓM TẮT 1. Mục tiêu nghiên cứu - Tìm hướng giảm thiểu tai nạn giao thông tại những đoạn đèo dốc nguy hiểm - Thay thế hệ thống gương cầu thường có thời gian sử dụng ngắn và phạm vi quan sát  gần - Trả lời các câu hỏi:  Hệ thống có thay thế tốt gương cầu không ?  Giá thành lắp đặt một hệ thống ? Chi phí phát sinh trong quá trình vận hành ? Vấn đề nảy sinh trong quá trình vận hành ? 2. Trình tự thực hiện  Tìm hiểu các vấn đề cơ bản sau: - Điều kiện chiếu sáng tại những đoạn đường đèo dốc - Khả năng quan sát và báo hiệu qua gương cầu - Khả năng chiếu sáng và báo hiệu của hệ thống - Điều kiện nắng tại những đoạn đèo dốc - Độ rộng của những đoạn đường đèo, dốc - Tiến hành thiết kế mạch điện tử dựa vào yêu cầu và các số liệu 3. Kết quả nghiên cứu   Đối với sản phẩm  - Thực hiện cảnh báo ổn định khi có xe đi vào khu vực cảm biến - Đảm bảo yêu cầu điều khiển chế độ hoạt động của đèn đường   Đối với hệ thống   - Nhỏ gọn và đảm bảo yêu cầu chức năng - Giá thành thấp phù hợp để trang bị cho các đoạn đường Trang 1
  2. ­    Tiết kiệm năng lượng Trang 2
  3. PHẦN I:    GIỚI THIỆU 1. Đặt vấn đề Hiện nay, tai nạn giao thông là một vấn đề mà cả xã hội đang quan tâm. Làm thế nào   để giảm thiểu tai nạn giao thông là một câu hỏi lớn vẫn chưa có lời giải đáp thỏa đáng. Tai   nạn rất dễ xảy ra tại những nơi hạn chế tầm nhìn đặc biệt là những đoạn đường cua gấp.   Mặc dù tại những nơi đó đã có hệ thống gương cầu, tuy nhiên việc quan sát qua gương cầu   lại phải  ở  khoảng cách khá gần và không thể  cảnh báo từ  xa được. Hơn nữa hệ  thống  gương cầu theo thời gian sẽ bị bụi bám vào làm mất đi tính năng phản chiếu. Xuất phát từ  vấn đề  trên với mong muốn đóng góp một phần nhỏ  bé của mình vào cuộc chiến giảm   thiểu tai nạn giao thông em đã chọn đề  tài “HỆ  THỐNG CẢNH BÁO GIAO THÔNG  ĐOẠN ĐÈO DỐC” thuộc lĩnh vực “Kỹ thuật điện và cơ khí”. 2. Mục đích nghiên cứu ­ Tạo một hệ  thống cảnh báo từ  xa cho các phương tiện qua lại những đoạn đường   cua gấp ­ Thay thế hệ thống gương cầu còn nhiều hạn chế ­ Góp phần giảm thiểu tai nạn giao thông 3. Giả thuyết vấn đề ­ Khi có xe qua lại những đoạn đường cua gấp, nếu có những hệ  thống giúp ta phát   hiện và xử lí thông tin sau đó hiển thị lên một bảng hiệu bằng ánh sáng màu thì như vậy rất   tốt và hữu ích cho những phương tiện giao thông qua lại chỗ  này. Vì ánh sáng có thể  quan  sát từ xa và không bị bụi che mờ. ­ Hơn nữa, tại những đoạn đường này rất cần được chiếu sáng để  hạn chế  tai nạn   đáng tiếc. Tuy nhiên năng lượng là một vấn đề  cần quan tâm rất lớn, mặc dù đã có hệ  thống năng lượng mặt trời. Tuy nhiên, khi không có phương tiện qua lại khu vực này mà hệ  thống đèn vẫn liên tục chiếu sáng thì rất lãng phí điện năng. Vì vậy, cần một hệ thống nhận  biết có phương tiện qua lại hay không để thực hiện việc chiếu sáng. Nếu không có phương   tiện qua lại thì cần tắt việc chiếu sáng nhằm tiết kiệm năng lượng. 4. Yêu cầu đạt được của nghiên cứu ­ Cảnh báo chính xác phương tiện qua lại ­ Hệ thống nhỏ gọn ­ Giá thành rẻ, có thể áp dụng rộng rãi ­ Điều khiển hệ thống đèn đường hiệu quả Trang 3
  4. PHẦN 2 PHƯƠNG PHÁP VÀ THIẾT BỊ THÍ NGHIỆM I. PHƯƠNG PHÁP THU THẬP DỮ LIỆU 1. Thu thập dữ liệu ­ Yêu cầu hệ thống phải nhận biết được phương tiện qua lại tại những vị trí xác định. ­ Xử lí thông tin để đưa ra cảnh báo ­ Phát hiện được ban ngày và ban đêm để điều khiển hệ thống chiếu sáng 2. Xây dựng phần cứng 2.1. Xây dựng sơ đồ khối của mạch điện tử a. Nguyên lí làm việc Quan sát trên hình là một đoạn đường cua khá gấp,  ở  vị  trí của xe đỏ  và xe trắng sẽ  không thể thấy nhau được. Do đó để cảnh báo cho hai xe biết ta xử dụng một hệ thống có   nguyên lí làm việc như sau. Hệ thống sẽ có hai cảm biến nhận biết có xe qua lại đặt tại hai   vị trí A và B. Khi có xe qua A, B các cảm biến gửi tín hiệu về cho vi xử lí. Từ đó vi xử lí sẽ  bật tín hiệu báo có xe lên hoặc xuống tương ứng tại nơi đặt biển báo C. Đồng thời, nếu hệ  thống được tích hợp trong các trụ đèn chiếu sáng dùng năng lượng mặt trời trên những đoạn   đường này, nó còn có khả năng điều khiển bật hệ thống chiếu sáng khi có xe qua lại và nếu   Trang 4
  5. không có xe qua lại trong khoảng thời gian định trước hệ  thống sẽ tắt việc chiếu sáng để  tiết kiệm điện năng. b. Sơ đồ khối 2.2. Tìm hiểu các mạch điện của hệ thống a. Mạch cảm biến khoảng cách HC­SR04  Trang 5
  6. Cảm biến khoảng cách siêu âm HC­SR04 được sử  dụng rất phổ  biến để  xác định  khoảng cách vì RẺ  và CHÍNH XÁC. Cảm biến sử  dụng sóng siêu âm và có thể  đo   khoảng cách trong khoảng từ  2 ­> 500 cm, với độ  chính xác gần như  chỉ phụ  thuộc   vào cách lập trình. Sơ đồ chân của HC­SR04 gồm: VCC, trig, echo, GND. Trong đó:  o VCC ­­> pin 5V Arduino. o trig ­­> chân digital (OUTPUT), đây là chân sẽ phát tín hiệu từ cảm biến. o echo ­­> chân digital (INPUT), đây là chân sẽ nhận lại tín hiệu được phản xạ  từ vật cản o GND ­­­> GND Arduino. Nguyên lý hoạt động  o Để  đo khoảng cách, ta sẽ  phát 1 xung rất ngắn (10 microSeconds ) từ  chân   trig. Sau đó, cảm biến sẽ  tạo ra 1 xung HIGH  ở chân echo cho đến khi nhận  lại được sóng phản xạ ở pin này. Chiều rộng của xung sẽ bằng với thời gian   sóng siêu âm được phát từ cảm biển và quay trở lại.  o Tốc   độ  của  âm thanh trong  không  khí  là  340  m/s  (hằng  số   vật  lý),  tương   đương với 29,412 microSeconds/cm (106  / (340*100)). Khi đã tính được thời  gian, ta sẽ chia cho 29,412 để nhận được khoảng cách. Trang 6
  7. b. Mạch nhận biết sáng tối Mạch nhận biết sáng tối  Nguyên lí hoạt động của mạch như sau: Vào ban ngày ánh sáng chiếu vào quang trở  làm cho điện trở của nó giảm mạnh vì vậy Tranzitor ngưng dẫn nên chân C ở mức cao. Khi  trời tối, không có ánh sáng chiếu vào quang trở làm điện trở của nó tăng nên Tranzitor dẫn vì  vậy chân C ở mức thấp. ­ Từ nguyên lí trên ta thấy ban ngày chân C ở mức cao, ban đêm chân C ở mức thấp.  Do đó ta kết nối chân C với VĐK để nhận biết ban ngày hay buổi tối. c. Mạch điều khiển biển báo Mạch công suất cho  biển báo ­  Biển báo hiệu *Mạch công suất  ­ Ta chọn Tranzito công suất hoặc Fet để điều khiển biển báo. ­ Khi có tín hiệu đưa vào chân B của Tranzitor để kích mở thì có dòng qua Tranzitor do  đó sẽ làm biển báo phát sáng. ­ Khi không có tín hiệu đưa vào chân B, Tranzitor ngưng dẫn nên biển báo không phát  sáng (tắt) *Biển báo hiệu ­ Biển báo hiệu được làm từ các đèn led để tiết kiệm năng lượng Trang 7
  8. ­ Cấu tạo của led ­ Bố trí các Led theo hình mũi tên để hiện thị xe lên và xuống d. Khối xử lí trung tâm ­ Mạch  điện dùng  chíp  AT89C2051 để điều khiển Hình ảnh của IC * Một số đặc tính Đây là một  vi điều khiển của hãng  atmel, đầy đủ các tính năng như  chip 89C51. ­ Chip này chỉ có 20 chân.  15 đường xuất nhập ­ Điện áp làm việc : 2,7 V    6V.  (Thường dùng  ở mức 5V ). ­ Tần số làm việc: Tần số dao động thạch anh từ 0 tới 24Mhz. ­ ROM : 2Kbyte Flash ROM . ­ RAM:  128  bytes. ­  Hai bộ định thì 16­bit. ­  Lập trình tuần tự  bằng kênh UART .  ­ Có 6 nguồn  ngắt . Trang 8
  9. ­ Có 2 mức khóa bộ nhớ chương trình. ­ Có cổng nối tiếp. ­ Hai  bộ so sánh Analog tích hợp sẵn trên chip.  Trực tiếp tiếp điều khiển LED ngõ  ra. * Sơ đồ khối * Sơ đồ chân Sơ đồ chân Trang 9
  10. PORT  1: T ừ chân 12    19:  Xuất nhập dữ liệu, từ P1.2    P1.7 được dùng  để kéo lên   bên trong.  P1.0 và P1.1 tương  ứng tích cực mức logic  cao và thấp cho hai đầu vào AIN0 và  AIN1  tương  ứng của bộ so sánh chính xác  trên chíp . Port 1, bộ khhuyếch đại đệm đầu ra có thể hạ xuống  20mA và có thể điều khiển LED  hiển thị  trực tiếp.  Chỉ cần 1s để  chuyển những chân của Port 1 sử  dụng như  những đầu  vào. Khi chân P1.2  P1.7 được sử dụng như những đầu vào, chúng s ẽ là những nguồn dòng  I  vì được kéo lên bên trong. Port1cũng nhận  được mã dữ  liệu từ  chương trình FLASH và   thực hiện. PORT   3:   Chân số 2, 3 , 6, 7, 8, 9, 11, những   chân này  đã có điện t rở kéo lên. P3.6   được nối cố định giữa  đường xuất nhập   trên bộ so sánh của chip và không thể truy cập .   Chỉ cần 1s để chuyển những chân của Port 3 lên mức cao bởi sự kéo lên bên trong và có thể  sử  dụng như  những đầu vào, chúng sẽ  là những nguồn dòng I  vì được kéo lên bên trong   Port 3 cũng phục vụ cho các chức năng của nhiều tính năng  đặc biệt của 89C2051 như sau: Port 3 cũng nhận được tín hiệu điều khiển từ Flash và thực hiện. ­  Vcc : Chân số 20: điện áp vào khoảng  2,7V   6V( thường dùng  ở mức 5V) ­  GND : Chân số 10: chân nối mass. ­  RST : Xác lập lại trạng thái ban đầu . RST=0: Chíp hoạt động bình thường.  RST=1: Chíp được thiết lặp  l ại trạng thái ban đầu. ­  XTAL1: Ngõ vào mạch tạo xung  clock trong chip và ngõ vào bộ khuếch đại đảo chiều. ­  XTAL2: Ngõ ra t ừ bộ khuếch đại đảo chiều. XYAL1, XTAL2 là ngõ vào và ngõ ra tương ứng của bộ khuyếch đại đảo chiều, nó  có thể định hình và được sử  dụng như một bộ giao động trên chíp (hinh 1). Tinh thể  thạch  anh hay cộng hưởng gốm được sử dụng.  Hoặc là nhân xung  t ừ bên ngoài(hình  2) Trang 10
  11. * Thanh ghi có chức năng đặc biệt : Bên trong sơ  đồ  của chip có một   vùng nhớ  đặc biệt được gọi là thanh ghi có chức   năng đặc biệt.Các vùng địa chỉ  của thanh ghi  được đưa vào bảng dưới đây .Lưu  ý rằng:   không   phải tất cả các địa chỉ được sử  dụng, và các địa chỉ  trống có thể  không được thực  hiện trên chíp. Địa chỉ đọc sẽ truy xuất trở về dữ liệu ngẫu nhiên, và địa chỉ ghi sẽ truy xuất  về chế độ không có hiệu lực xác  định. Trang 11
  12. * Bộ nhớ chương trình khóa bit:              Trên chíp có   hai bộ khóa bit có thể hoạt động không cần lập trình (U), hoặc có thể lập   trình (P)  để bổ sung thêm nhiều  tính năng đư ợc liệt kê trong bảng dưới đây . Trang 12
  13. * Chế độ nghỉ : Ở  chế  độ  nghỉ,  CPU được đặt ở  chế  độ  ngủ  trong khi tất cả  bộ  phận ngoại  vi vẫn   hoạt động. Chế độ này được gọi ra bởi phần mềm. Nội dung của các thanh ghi trong RA M   và tất cả các giá trị  trong thanh ghi đặc biệt cũng sẽ không đổi ở chế độ này. Chế  độ  nghỉ  có thể bị dừng lại bất kì khi  nào có sự kích hoạt hay thay đổi nào đó, hoặc được reset bằng   phần cứng. Các P1.0 và P1.1 nên được thiết lập ở mức "L" nếu bên ngoài­up không đư  ợc   sử dụng, hoặc thiết lập ở mức "H" nếu bên ngoài  pull­up được sử dụng.  Cần lưu ý rằng khi  “nghỉ ”l à  kết thúc bằng một  phần cứng. T ài liệu thực hiện  chương trình t ừ đâu nó lại tắt,  lên t ới hai chu kỳ máy  trư ớc khi các nguy ên t ắc điều  khiển bên trong thiết lập lại.  Trên chíp  phần cứng  quy ết định quy ền truy cập vào  bộ  nhớ trong RAM  trong trường hợp này, nhưng truy cập vào các  port   không thể quyết định  được. Đ ể loại trừ khả năng  này xảy ra một cách bất ngờ viết cho một port   khi chế độ  nghỉ  được l ặp lại, ta không nên viết tới một Port hay bộ nhớ ngoài 6. Chế độ power ­down :Ở chế độ power­down,  bộ dao động ngừng, và chương  trình s  ẽ gọi  power­down  và lệnh cuối cùng được thực hiện.  Trên chíp nội dung   RAM và tất cả  các giá  trị trong thanh ghi đặc biệt cũng sẽ không đổi ở chế độ này cho đến khi chế độ này   kết thúc. Chế độ powerdown  chỉ thoát ra khi reset lại   phần cứng. Thiết lập lại giá  trị các  SFR ( thanh ghi  có chức năng đặc biệt) nhưng trên RAM vẫn giữ nguy ên.  Chú ý: Không nên reset l ại  trư ớc khi VCC được phục hồi lại hoạt động bình thường  và phải được giữ mức tích cực đủ dài, để cho phép bộ giao động khởi động lại và làm việc  ổn định. Lưu ý:  Ở cả hai chế độ nghỉ và chế độ power ­donw, P1.0 và P1.1 nên set  ở mức "0"  nếu không sử dụng đi ện trở bên ngoài để kéo lên, hoặc set ở mức "1" nếu sử dụng  điện  tr ở bên ngoài để   kéo lên. * Lập tr ình Flash : Chíp    89C2051 là  một loại vi điều khiển với 2K bytes bộ nhớ PEROM có thể   xóa   hoàn toàn ( ví dụ, nội dung = FFH) và có thể  lập trình lại. Các mã lập trình bộ nhớ là một  mảng byte tại một thời điểm. Sau khi các mảng đã   được lập trình, để  đảm bảo bất kỳ  chương trình nào không trống byte, toàn bộ mảng  nhớ cần phải được xoá  hoàn toàn bằng   điện. ­ Địa chỉ  bộ  đếm bên trong: V i điều khiển 89C2051 có một địa chỉ  truy cập   ( bên  trong PEROM ) địa chỉ đếm luôn luôn  dặt ở giá  trị 000H   trên mức cao của RST và áp dụng  mức tích cực của xung  dương t ừ chân XTAL1. ­ Thuật toán: Để lập trình cho chip 89C2051, sau đây là các chuỗi được khuyến cáo nên  sử dụng: + Chuỗi Power­up : Áp dụng nguồn điện giữa chân VCC và GND Đặt RST và XTAL1 để GND + Đặt chân RST  lên m ức cao (mức 1) Đặt chân P3.2 lên mức cao (mức 1) + Áp   dụng kết hợp giữ 2 mức logic  “H” hoặc “L” ; (“1” hoặc “0”)t ới cho các  chân   P3.3, P3.4, P3.5, P3.7 để lựa chọn một trong những chương trình hoạt  động hiển thị trong PEROM bảng chế độ lập trình dưới đây. + Áp dụng cho dữ liệu mã byte từ vị trí 000H đến P1.0 đến  P1.7. + Cho RST lên 12V để kích hoạt chương trình. Trang 13
  14. + Xung từ  chân P3.2 tới chương trình m  ột byte  ở  trong PEROM hoặc bit khóa. Các   byteghi  là chu kỳ tự hẹn giờ  và thư ờng mất trong 1,2 ms. + Để kiểm tra dữ liệu được lập trình, thấp hơn RST từ12V,   ta để mức logic  "1" và set  chân P3.3 đến P3.7 giữ ở mức thích hợp. Dữ  li ệu ra có thể đọc ở Port 1. + Để lập trình một   byte   ở vị trí kế  tiếp, xung  kích từ  chân XTAL1 được kích  một   lần để  nâng   cao số bộ định địa chỉ  bên trong. Dữ liệu  mới được đưa vào Port 1. + Lặp lại các bước 6 thông qua bước 8, thay đổi dữ liệu và nâng cao địa chỉ truy cập cho toàn bộ 2K bytes mảng hoặc cho đến khi kết thúc đối của tập tin   là  được. + Chuỗi Power­off: XTAL1và RST  set ở mức  "L". Kiểm tra dữ  liệu: chip AT89C2051   sẽ  kiểm tra tuần tự  dữ  liệu để  và cho biết thời  điểm kết  thúc của một chu kỳ viết. Trong  thời gian một chu kỳ   máy , nó s ẽ cố  đọc  t ới byte   được ghi cuối cùng và sẽ  bổ  sung các byte dữ  liệu trên P1.7. Sau khi chạy xong  1 chu kì   máy, thấy dữ  liệu hợp lệ    ở  tất cả  các port, nó sẽ  bắt   đầu  chạy chu kì kế  tiếp.  Việc   kiểm tra có thể bắt đầu bất cứ lúc nào khi chu kì kế tiếp được tiến hành READY  / BUSY   (sẵn sàng/b  ận): Byte tiến trình của chương  trình cũng  có thể  được theo dõi bởi tín hiệu   đầu ra  READY/BUSY.  Chân P3.1 ở mức thấp sau khi chân  P3.2  ở mức cao trong thời gian  chương trình thực hiện để báo BUSY (bận). chân P3.1 sẽ trở lại mức cao khi chương trình   thực hiện để báo READY ( sẵn sàng ). Chương trình kiểm tra : Nếu bit khóa LB1 và LB2 chưa đư  ợc lập trình mã dữ  liệu thì   có  thể đọc lại  dữ liệu thông qua các đư ờng dây để kiểm tra: + Thiết lập   l ại địa chỉ  truy cập bên trong là  000H và chân RST t ừ mức L lên  mức H. + Áp dụng   việc kiểm  tra các tín hiệu  điều khiển cho phép  đọc mã dữ  liệu và  đọc   các dữ li ệu xuất ra từ   Port 1.  + Xung kích t ừ chân XTAL1 được kích 1 lần để nâng cao số bộ định địa chỉ   bên trong. +Đọc tiếp dữ liệu mã byte  tiếp theo t ại ng õ  ra Port 1. +Lặp lại các bước 3 và 4 cho đến khi đọc hết   toàn bộ mảng. Bit khóa không thể kiểm tra  trực tiếp , mã xác  nhật của bit khóa xác  định được bằng  cách quan sát những tính năng   của chúng.. Chip xóa : toàn bộ  mảng   PEROM (2KB) và 2 bộ    Look Bit cần được xóa hoàn toàn  bằng  tín hiệu điện bằng cách kết hợp chính xác  tín hiệu điều khiển và  băng cách  giữ  tín  hiệu  chân P3.1   ở mức thấp trong 10ms. M ã mảng phải viết tất cả ở mức H trong lúc   chip  xóa  làm vi ệc, và phải thực hiện trước khi bất kì byte trống nào trong bộ nhớ được lập trình  lại. Đọc kí hiệu byte:  Kí hiệu byte được đọc bình thường và kiểm tra địa chỉ  000H, 001H,   và  002H, ngoại trừ  P3.5 và P3.7 phải được đặt  ở  mức logic  thấp. Các kết quả  như  sau: (000H) = 1EH chỉ sản xuất bởi Atmel (001H) = 21H cho biết 89C2051 * Giao di ện lập trình: Mọi mã byte trong mảng  Flash được ghi  và toàn bộ mảng có  thể  Trang 14
  15. xóa bỏ bằng  cách sử dụng  kết hợp thích hợp của  các tín hiệu  điều khiển. Ghi chu kỳ  hoạt động là tự hẹn giờ  và sau mỗi lần triển khai sẽ tự động điều chỉnh phù hợp thời gian   để hoàn thành.  * Chế độ lập trình flash : * Đặc tính làm việc DC : T =  ­ 40oC    80oC, Vcc   = 2,7V   6V. Ghi chú: ­ Điều kiện  để trạng thái ổn định là I   phải ở giới  hạn ngoài  những hạn chế sau : I   max  = 20mA. Tổng dòng cực đại của I  và các chân ngõ  ra là 80mA. Nếu I   vượt quá điều kiện cho phép, V  có thể vượt qua các tiêu chuẩn kĩ thuật  liên quan của chíp. Các chân chíp không được đảm bảo khi dòng lớn hơn điều kiện cho  phép. ­  Vcc  nhỏ nhất của chế độ power­down là 2V. Trang 15
  16. e. Sơ đồ mạch nguyên lí kết nối II. PHẦN MỀM 1. Ngôn ngữ lập trình IC và phần mềm hỗ trợ 1.1 Giới thiệu ngôn ngữ C Trong kỹ  thuật lập trình vi điều khiển nói chung, ngôn ngữ  lập trình được sử  dụng  thường chia làm 2 loại: Ngôn ngữ bậc thấp và Ngôn ngữ bậc cao. Ngôn ngữ bậc cao là các ngôn ngữ gần vơi ngôn ngữ con người hơn, do đó việc lập  trình bằng các ngôn ngữ này trở nên dễ dàng và đơn giản hơn. Có thể kể đến một số ngôn   ngữ  lập trình bậc cao như  C, Basic, Pascal… trong dó C là ngôn  ngữ  thông dụng hơn cả  trong kỹ  thuật vi điều khiển. Về  bản chất, sử  dụng các ngôn ngữ  này thay cho ngôn ngữ  bậc thấp là giảm tải cho lập trình viên trong việc nghiên cứu các tập lệnh và xây dựng các  cấu trúc giải thuật. Chương trình viết bằng ngôn ngữ bậc cao cũng sẽ được một phần mềm  trên máy tính gọi là trình biên dịch (Compiler) chuyển sang dạng hợp ngữ tr ước khi chuyển  sang mã máy. Khi sử dụng ngôn ngữ C người lập trình không cần hiểu sâu sắc về cấu trúc của bộ  vi điều khiển. Có nghĩa là với một người chưa quen với một vi điểu khiển cho trước sẽ xây  dựng được chương trình một cách nhanh chóng hơn, do không phải mất thời gian t ìm hiểu  kiến trúc của vi điều khiển đó. Và việc sử dụng lại các chương trình đã xây dựng trước đó  cũng dễ dàng hơn, có thể sử dụng toàn bộ hoặc sửa chữa một phần. Trang 16
  17. 1.2. Ngôn ngữ C 1.2.1 Kiểu dữ liệu a. Kiểu dữ liệu trong C Kiểu Số Byte Khoảng giá trị Char 1 ­128 – +127 Unsigned char 1 0 – 255 Int 2 ­32768 ­ +32767 Unsigned int 2 0 ­ 65535 Long 4 ­2147483648 ­ +2147483647 Unsigned long 4 0 – 4294697295 Float 4 * Khai báo biến:  ­ Cú pháp: Kiểu_dữ_liệu Vùng_nhớ   Tên_biến _at_ Đia_chỉ;      Ví dụ:          Unsigned char data x;  ­ Khi khai báo biến có thể gán luôn cho biến giá trị ban đầu.       Ví dụ:           Thay vì: unsigned char x;                          x = 0;            Ta chỉ cần:  unsigned char x = 0;  ­ Có thể khai báo nhiều biến cùng một kiểu một lúc.        Ví dụ:   unsigned int x,y,z,t;  ­ Chỉ định vùng nhớ: từ khoá “Vùng_nhớ” cho phép người dùng có thể chỉ ra vùng nhớ  sử dụng để lưu trữ  các biến sử dụng trong chương tr ình. Các vùng nhớ có thể  sử dụng là:  CODE, DATA, DATAB, IDATA, PDATA, XDTA. Khi không khai báo vùng nhớ  trình dịch  Keil C sẽ mặc định đó là vùng nhớ DATA. Vùng  Ý nghĩa nhớ CODE Bộ nhớ mã nguồn chương trình DATA Bộ nhớ dữ liệu gồm 128 Byte thấp của RAM trong vi điều khiển BDATA Bộ nhớ dữ liệu có thê định địa chỉ bit, nằm trong vùng nhớ DATA IDATA Bộ nhớ dữ liệu gồm 128 Byte cao của RAM trong vi điều khiển chỉ có ở  một số dòng vi điều khiển sau này PDATA Bố nhớ dữ liệu ngoài gồm 256 Byte, được truy cập bởi địa chỉ đặt trên P0 XDATA  Bộ nhớ dữ liệu ngoài có dung lượng có thể lên đến 64 KB, được truy cập  bởi địa chỉ đặt trên P0 và P2 * Định nghĩa lại kiểu  ­ Cú pháp: typedef Kiễu_dữ_liệu Tên_biến;  ­ Ten_biến sau này sẽ được sử dụng như một kiểu dữ liệu mới và có thể dùng để khai báo  các biến khác       Ví dụ: typedef int m5[5]; Trang 17
  18. Dùng tên m5 khai báo hai biến tên a và b có kiểu dữ liệu là mảng 1 chiểu 5 phần tử:  m5 a,b; b. Kiểu dữ liệu trong Keil C Kiểu Số bit Bit 1 Sbit 1 Sfr 8 Sfr16 16 ­ bit : dùng để  khai báo các biến có giá trị  0 hoặc một hay các biến logic trên vùng  RAM của vi điều khiển. Khi khai báo biến kiểu bit trình dịc Keil C sẽ mặc định vùng nhớ  sử dụng là BDATA. ` ­ sbit, sfr, sfr16: dùng để  định nghĩa các cho các thanh ghi chức năng hoặc các cổng   trên vi điều khiển dùng để truy nhập các đoạn dữ liệu 1 bit, 8 bit, 16 bit c. Mảng Mảng là một tập hợp nhiều phần tử  cùng một kiểu giá trị  và chung một tên. Các   phần tử của mảng phân biệt với nhau bởi chỉ số hay số thứ tự của phần tử trong dãy phẩn   tử. Mỗi phần tử có vai trò như một biến và lưu trữ được một giá trị độc lập với các phần tử  khác của mảng. Mảng có thể là mảng một chiều hoặc mảng nhiều chiều Khai báo:  ­ Cú pháp: Tên_kiểu Vùng_nhớ Tên_mảng[số_phần_tử_mảng]; Khi bỏ trống số phần tử mảng ta sẽ có mảng có số phần tử bất kì. Ví dụ: Unsigned int data a[5],b[2] [3]; Với khai báo trên ta sẽ có: mảng a là mảng một chiều 5 phần tử. Mảng b là mảng hai   chiều, tổng số phần tử là 6. Chỉ  số  của mảng bắt đầu từ  số  0. Mảng có bao nhiêu chiều phải cung cấp đầy đủ  bấy nhiêu chỉ sô Ví du: phần tử mảng b[0] [1] là đúng Khi viết b[0] là sai d. Con trỏ Khi ta khai báo một biến, biến đó sẽ được cấp phát một khoảng nhớ bao gồm một số  byte nhất định dùng để  lưu trữ  giá trị. Địa chỉ  đầu tiên của khoảng nhớ đó chính là địa chỉ  của biến được khai báo. Con trỏ  là một biến dùng để  chứa địa chỉ  mà không chứa giá trị, hay giá trị  của con  trỏ chính là địa chỉ khoảng nhớ mà nó trỏ tới. Với các vùng nhớ  cụ  thể  con trỏ tới vùng nhớ  đó chiếm dung lượng phụ  thuộc vào  độ  lớn của vùng nhớ  đó. Con trỏ  tổng quát khi không xác định trước vùng nhớ  sẽ  có dung   lượng lớn nhất vì vậy tốt nhất nên sử dụng con trỏ cụ thể. Loại con trỏ Kích thước Con   trỏ   tổng  3 byte quát Con trỏ XDATA 2 byte Con trỏ CODE 2 byte Con trỏ DATA 1 byte Con trỏ IDATA 1 byte Con trỏ PDATA 1 byte Trang 18
  19. Khai báo biến con trỏ:  ­ Cú pháp: Kiểu_Dữ_liệu Vùng_nhớ *Tên_biến;  ­ Ví dụ: int *int_ptr; long data *long_ptr;  ­ khi không chỉ rõ vùng nhớ con trỏ sẽ được coi là con trỏ tổng quát. e. Kiểu dữ liệu cấu trúc Kiểu dữ liệu cấu trúc là một tập hợp các biến, các mảng và cả  các kiểu cấu trúc khác   được biểu thị bởi một tên duy nhất. kiểu dữ liệu cấu trúc dùng để lưu trữ  các giá trị, thông   tin có liên quan đến nhau. Định nghĩa và khai báo biến cấu trúc:  ­ Định nghĩa: typedef struct { Khai báo các biến thành phần; } Tên_kiểu_cấu_trúc;  ­ Khai báo: Tên_kiểu_cấu_trúc Vùng_nhớ Tên_biến; Ví dụ: typedef struct { char day; char month; int year; } Date_type; Date_type date,date_arr[5]; 1.3 Phép toán Phép gán kí hiệu: “=”.  ­ Cú pháp: Biến_1 = Biến_2; Trong đó Biến_2 có thể là giá trị xác định cũng có thể là biến. 1.3.1 Phép toán số học Phép toán ý nghĩa Ví dụ + Phép cộng X=a+b ­ Phép trừ X=a­b  *          Phép nhân X=a*b / Phép chia lấy phần  X=a/b  nguyên (a=9, b=2 → X=4) % Phép chia lấy phần dư a%b (a=9, b=2 → X=1) 1.3.2. Phép toán Logic AND: && OR:  || NOT: ! a. Các phép toán so sánh: Trang 19
  20. Phép  ý nghĩa Ví dụ toán > So sánh lớn hơn a>b  4>5 các giá trị  0 >= So sánh lớn hơn hoặc bằng a>=b  6>=2 các giá  trị 1 < So sánh nhỏ hơn a
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2