1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Đề tài MẠCH đèn GIAO THÔNG THỜI GIAN THỰC

127 923 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 127
Dung lượng 3,78 MB

Nội dung

LỚP : TCĐT09B GVHD: Huỳnh Thanh Hòa MỤC LỤC CHƯƠNG 2: .4 TỔNG QUAN VỀ PIC 16F877A .4 CHƯƠNG 3: 65 GIỚI THIỆU VỀ LINH KIỆN 65 CHƯƠNG : 83 THIẾT KẾ VÀ THI CÔNG 83 PHẦN CỨNG 83 CHƯƠNG 4: 92 LƯU ĐỒ GIẢI THUẬT VÀ CHƯƠNG TRÌNH 92 CHƯƠNG 5: TỔNG KẾT 112 PHỤ LỤC 113 VI Đề tài: MẠCH ĐÈN GIAO THÔNG GIAO TIẾP THỜI GIAN THỰC LỚP : TCĐT09B GVHD: Huỳnh Thanh Hòa VII Đề tài: MẠCH ĐÈN GIAO THÔNG GIAO TIẾP THỜI GIAN THỰC LỚP : TCĐT09B GVHD: Huỳnh Thanh Hòa CHƯƠNG DẪN NHẬP ——$—– 1.1 ĐẶT VẤN ĐỀ Với gia nhập WTO vào ngày tháng 11 năm 2006, Việt Nam thức bước vào sân chơi thương mại toàn cầu Từ bước nhảy vượt bậc đó, đường trở thành nước có công nghiệp phát triển cao, công nghệ đại, đời sống vật chất người nâng cao đến Và tất yếu kéo theo phát triển ngày tăng số lượng phương tiện cá nhân Trong có xe máy ô tô, tương lai không xa Việt Nam ô tô không còn hàng hóa xa xỉ Trong sở hạ tầng lại không đáp ứng kịp với phát triển phương tiện Sự cân tất yếu dẫn đến thẩm mỹ cảnh quan đô thị thi, nên buộc họ phải đậu xe lẫn chiếm lòng lề đường, tình trạng kẹt xe tai nạn giao thông xảy liên tục Sự mọc lên hàng ngàn chung cư hay building cao cấp thành phố lớn thành phố Hồ Chí Minh, Hà Nội đòi hỏi lượng lớn xe ôtô nhiều xe máy nhu cầu lại người Chính vấn đề bất cập mà quan chức có liên quan đưa nhiều hướng giải khác mở rộng đường, qui định đỗ xe hay dẫn đến tình trạng kẹt xe có nhiều biện pháp đưa như: Dùng phương pháp thông tin radio, học sinh học với thời gian điều chỉnh nhà trường tình hình kẹt xe diễn đặc biệt ngã tư 1.2 TẦM QUAN TRỌNG CỦA ĐỀ TÀI Hình thành ý tưởng từ nhu cầu thực tế xã hội, để tạo sản phẩm có giá trị ứng dụng cao điều kiện tốt để người thực đề tài tự kiểm chứng lại lực suốt học kì tích luỹ từ tự lực thân từ trường lớp Đòi hỏi người thực đề tài phải nỗ lực vấn đề hệ thống hoá lại toàn kiến thức liên quan ứng dụng cách hiệu thực đề tài Đề tài “ Hệ thống đèn giao giao tiếp thời gian thực” hoàn thành góp phần vào việc ổn định tình hình giao thông thành phố lớn … Đồng thời giải pháp phù hợp với phát triển khoa học công nghệ đại ngày Đề tài: MẠCH ĐÈN GIAO THÔNG GIAO TIẾP THỜI GIAN THỰC LỚP : TCĐT09B GVHD: Huỳnh Thanh Hòa 1.3 GIỚI HẠN ĐỀ TÀI Do hạn chế kiến thức, thời gian thực kinh nghiệm thực tế, nhóm thực đề tài thực việc sau : • Thiết kế thi công mô hình gồm board cho ngã tư • Board điều khiển cột đèn • Kết nối với DS1307 • Thiết bị điều khiển tay • Có thể cài đặt mạch hoạt động chế độ 1.4 MỤC ĐÍCH NGHIÊN CỨU Trong trình thực đề tài, người thực nắm vấn đề sau : • Thông qua việc thực đề tài, giúp cho người thực ôn lại kiến thức học, đồng thời lĩnh hội nhiều kiến thức từ tài liệu, giáo viên hướng dẫn, bạn bè Ngoài còn nâng cao tay nghề, biết cách lập giao tiếp với thiết bị khác, lập trình cho vi điều khiển PIC 16F877A • Qua đó, phát sinh vấn đề cần giúp đề tài hoàn chỉnh • Có thể áp dụng thực tế 1.5 MỤC ĐÍCH YÊU CẦU CẦN ĐẠT ĐƯỢC 1.5.1 MỤC ĐÍCH : Thiết kế thi công hoàn chỉnh mạch có khả : • Giao tiếp, điều khiển, hoạt động ba chế độ • Có khả giao tiếp với DS1307 • Mạch điều khiển tay 1.5.2 YÊU CẦU : • Thiết kế thi công hoàn chỉnh phần cứng phần mềm • Mạch hoạt động ổn định, xác • Mạch đẹp,dễ sử dụng 1.6 PHƯƠNG PHÁP VÀ PHƯƠNG TIỆN 1.6.1 PHƯƠNG PHÁP: • Tìm kiếm tham khảo tài liệu • Thực nghiệm: thiết kế thi công bo mạch, viết chương trình, chạy thử chương trình con, chỉnh sửa, tổng hợp thành chương trình hoàn chỉnh Đề tài: MẠCH ĐÈN GIAO THÔNG GIAO TIẾP THỜI GIAN THỰC LỚP : TCĐT09B GVHD: Huỳnh Thanh Hòa 1.6.2 PHƯƠNG TIỆN: • Mạng internet • Máy tính • Tài liệu tham khảo 1.7 THỜI GIAN THỰC HIỆN Thực đề tài thời gian tuần bao gồm: • Tuần 1: Tham khảo tài liệu liên quan, tài liệu tham khảo Tìm kiếm phương hướng giải yêu cầu đề tài • Tuần 2: Vẽ sơ đồ nguyên lí, thi công mạch in, viết chương trình cho vi điều khiển • Tuần 3: Tổng hợp, hoàn thiện chương trình thành chương trình hoàn chỉnh • Tuần 4: Đánh máy, hoàn tất đề tài Đề tài: MẠCH ĐÈN GIAO THÔNG GIAO TIẾP THỜI GIAN THỰC LỚP : TCĐT09B GVHD: Huỳnh Thanh Hòa CHƯƠNG 2: TỔNG QUAN VỀ PIC 16F877A ——$—– 1.1 VI XỬ LÝ PIC16F877A 1.1 GIỚI THIỆU CHUNG Hiện thị trường có nhiều họ vi điều khiển 8051, Motorola 68HC, AVR, ARM, Ngoài họ 8051 hướng dẫn cách môi trường đại học, thân người viết chọn họ vi điều khiển PIC để mở rộng vốn kiến thức phát triển ứng dụng công cụ nguyên nhân sau: - Họ vi điều khiển tìm mua dễ dàng thị trường Việt Nam - Giá thành không đắt - Có đầy đủ tính vi điều khiển hoạt động độc lập - Là bổ sung tốt kiến thức ứng dụng cho họ vi điều khiển mang tính truyền thống: họ vi điều khiển 8051 Số lượng người sử dụng họ vi điều khiển PIC Hiện Việt Nam giới, họ vi điều khiển sử dụng rộng rãi Điều tạo nhiều thuận lợi trình tìm hiểu phát triển ứng dụng như: số lượng tài liệu, số lượng ứng dụng mở phát triển thành công, dễ dàng trao đổi, học tập, dễ dàng tìm dẫn gặp khó khăn,… Sự hỗ trợ nhà sản xuất trình biên dịch, công cụ lập trình, nạp chương trình từ đơn giản đến phức tạp,… Các tính đa dạng vi điều khiển PIC, tính không ngừng phát triển 1.2 GIỚI THIỆU VỀ CẤU TRÚC PHẦN CỨNG PIC16F877A 1.2.1 SƠ ĐỒ CHÂN VI ĐIỀU KHIỂN PIC16F877A + IC loại thường Đề tài: MẠCH ĐÈN GIAO THÔNG GIAO TIẾP THỜI GIAN THỰC LỚP : TCĐT09B GVHD: Huỳnh Thanh Hòa + IC loại dán 1.2.2 MỘT VÀI THÔNG SỐ VỀ VI ĐIỀU KHIỂN PIC16F877A Đây vi điều khiển thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh có độ dài 14 bit Mỗi lệnh thực thi chu kì xung clock Tốc độ hoạt động tối đa cho phép 20 MHz với chu kì lệnh 200ns Bộ nhớ chương trình 8Kx14 bit, nhớ liệu 368x8 byte RAM nhớ liệu EEPROM với dung lượng 256x8 byte Số PORT I/O với 33 pin I/O Các đặc tính ngoại vi bao gồm khối chức sau:  Timer0: đếm bit với chia tần số bit  Timer1: đếm 16 bit với chia tần số, thực chức đếm dựa vào xung clock ngoại vi vi điều khiển hoạt động chế độ sleep  Timer2: đếm bit với chia tần số, postcaler  Hai Capture/so sánh/điều chế độ rông xung  Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI I2C  Chuẩn giao tiếp nối tiếp USART với bit địa Đề tài: MẠCH ĐÈN GIAO THÔNG GIAO TIẾP THỜI GIAN THỰC LỚP : TCĐT09B GVHD: Huỳnh Thanh Hòa  Cổng giao tiếp song song PSP (Parallel Slave Port) với chân điều khiển RD, WR,  CS bên  Các đặc tính Analog:  kênh chuyển đổi ADC 10 bit  Hai so sánh  Bên cạnh vài đặc tính khác vi điều khiển như:  Bộ nhớ flash với khả ghi xóa 100.000 lần  Bộ nhớ EEPROM với khả ghi xóa 1.000.000 lần  Dữ liệu nhớ EEPROM lưu trữ 40 năm  Khả tự nạp chương trình với điều khiển phần mềm Nạp chương trình mạch điện ICSP (In Circuit Serial Programming) thông qua chân Watchdog Timer với dao động  Chức bảo mật mã chương trình  Chế độ Sleep  Có thể hoạt động với nhiều dạng Oscillator khác Đề tài: MẠCH ĐÈN GIAO THÔNG GIAO TIẾP THỜI GIAN THỰC LỚP : TCĐT09B GVHD: Huỳnh Thanh Hòa 1.2.3 SƠ ĐỒ KHỐI VI ĐIỀU KHIỂN PIC16F877A 1.2.4 TỔ CHỨC BỘ NHỚ Cấu trúc nhớ vi điều khiển PIC16F877A bao gồm nhớ chương trình (Program memory) nhớ liệu (Data Memory) 1.2.4.1 BỘ NHỚ CHƯƠNG TRÌNH Đề tài: MẠCH ĐÈN GIAO THÔNG GIAO TIẾP THỜI GIAN THỰC LỚP : TCĐT09B GVHD: Huỳnh Thanh Hòa Bộ nhớ chương trình vi điều khiển PIC16F877A nhớ flash, dung lượng nhớ 8K word (1 word = 14 bit) phân thành nhiều trang (từ page0 đến page 3) Như nhớ chương trình có khả chứa 8*1024 = 8192 lệnh (vì lệnh sau mã hóa có dung lượng word (14 bit) Để mã hóa địa 8K word nhớ chương trình, đếm chương trình có dung lượng 13 bit (PC) Khi vi điều khiển reset, đếm chương trình đến địa 0000h (Reset vector) Khi có ngắt xảy ra,bộ đếm chương trình đến địa 0004h (Interrupt vector) Bộ nhớ chương trình không bao gồm: Bộ nhớ stack không địa hóa đếm chương trình Bộ nhớ stack đề cập cụ thể phần sau 1.2.4.2 BỘ NHỚ DỮ LIỆU Bộ nhớ liệu PIC nhớ EEPROM chia làm nhiều bank Đối với PIC16F877A nhớ liệu chia làm bank Mỗi bank có dung lượng 128 byte, bao gồm ghi có chức đặc biệt SFG (Special Function Register) nằm vùng địa thấp Đề tài: MẠCH ĐÈN GIAO THÔNG GIAO TIẾP THỜI GIAN THỰC LỚP : TCĐT09B GVHD: Huỳnh Thanh Hòa ON=0; PORTD=VALUE[Z1]; PORTE=1; ON=1; DELAY_MS(2); ON=0; PORTD=VALUE[X2]; PORTE=2; ON=1; DELAY_MS(2); ON=0; PORTD=VALUE[X1]; PORTE=3; ON=1; DELAY_MS(2); ON=0; PORTD=VALUE[Y2]; PORTE=4; ON=1; DELAY_MS(2); ON=0; PORTD=VALUE[Y1]; PORTE=5; ON=1; DELAY_MS(2); ON=0; PORTD=VALUE[U2]; A1=0; DELAY_MS(2); A1=1; PORTD=VALUE[U1]; A2=0; DELAY_MS(2); A2=1; PORTD=VALUE[T2]; B1=0; DELAY_MS(2); B1=1; PORTD=VALUE[T1]; B2=0; DELAY_MS(2); B2=1; } 111 Đề tài: MẠCH ĐÈN GIAO THÔNG GIAO TIẾP THỜI GIAN THỰC LỚP : TCĐT09B GVHD: Huỳnh Thanh Hòa CHƯƠNG 5: TỔNG KẾT Sau tháng thực đề tài ,với nhiều cố gắng nổ lực nhóm chúng em , với tận tình hướng dẫn cô Đinh Thị Thanh Hoa Đề tài: “Mạch Đèn Giao Thông Giao Tiếp Thời Gian Thực” hoàn thành thời gian qui định Để thực số yêu cầu Mạch Đèn Giao Thông Giao Tiếp Thời Gian Thực chúng em sử dụng số chức PIC16F877A như: ngắt, kiểm tra trạng thái nút nhấn,thời gian tạo trể chức cần thiết Nội dung đề tài bao gồm phần sau: * Phần kiến thức: - Khảo sát vi điều khiển PIC16F877A linh kiện dùng mạch - Viết chương trình nạp cho PIC16F877A CCS - Áp dụng kiến thức điện tử, mạch điện, … để thiết kế phần cứng mạch - Dùng orcad để vẽ sơ đồ nguyên lý vẽ mạch in cho mạch * Phần thiết kế thi công: - Thiết kế thi công mạch điện - Thiết kế thi công mô hình - Viết chương trình CCS * Ưu điểm: - Mạch Đèn Giao Thông Giao Tiếp Thời Gian Thực có khả năng: - Giao tiếp, điều khiển, hoạt động ba chế độ - Có khả giao tiếp với DS1307 - Mạch điều khiển tay *Hạn chế 112 Đề tài: MẠCH ĐÈN GIAO THÔNG GIAO TIẾP THỜI GIAN THỰC LỚP : TCĐT09B - GVHD: Huỳnh Thanh Hòa Mạch chưa giao tiếp với máy tính Khi mạch hoạt động chế độ mặc định điều chỉnh thời gian theo ý muốn Mạch chưa có khả điều khiển từ xa *Ứng dụng - Mạch Đèn Giao Thông Giao Tiếp Thời Gian Thực sử dụng phổ biến thành phố lớn, ngã tư,giao lộ lớn tuyến đường có phương tiện giao thông đông đúc *Hướng phát triển đề tài - Do mạch hoạt động giao tiếp với ds1307.Trong tương lai mở rộng thêm giao tiếp với máy tính kết hợp với hệ thống điều khiển giám sát để điều khiển từ xa.Và hướng lập trình giúp mạch đèn giao thông nhận biết xe ưu tiên, giúp cho xe ưu tiên làm nhiệm vụ kịp thời Nhóm Sinh Viên Thực Hiện Phạm Khánh Duy Bùi Đông Sơn Lê Quang Văn PHỤ LỤC NGÔN NGỮ LẬP TRÌNH ——II—– 113 Đề tài: MẠCH ĐÈN GIAO THÔNG GIAO TIẾP THỜI GIAN THỰC LỚP : TCĐT09B GVHD: Huỳnh Thanh Hòa NGÔN NGỮ LẬP TRÌNH C TRONG CCS CCS trình biên dịch dùng ngôn ngữ C lập trình cho vi điều khiển Đây ngôn ngữ lập trình đầy sức mạnh, giúp bạn viết chương trình nhanh dễ dàng ngôn ngữ Assembly Mã lệnh tối ưu biên dịch Tuy nhiên, C vạn Trong số trường hợp, sinh mã chạy sai CCS chứa nhiều hàm phục vụ cho mục đích có nhiều cách lập trình mã cho vấn đề dẫn đến khác tốc độ thực thi lệnh, độ dài chương trình CCS cho phép bạn phối hợp với Assembly với C CCS cung cấp công cụ tiện ích giám sát hoạt động chương trình như: C/ASM list cho phép xem mã ASM file biên dịch SYMBOL hiển thị nhớ cấp phát cho biến, giúp quản lý nhớ biến chương trình … I.1 Các mệnh đề lựa chọn (hay điều kiện) Có loại mệnh đề lựa chọn: hai loại dùng từ khóa if loại dùng từ khóa switch Đó là: I.1.1 Dạng dùng từ khóa if: if () if () else Trong dạng này, phần ngoặc đơn có giá trị khác hay có giá trị "đúng" (true) dòng điều khiển chuyển vào để thực thi Nếu câu lệnh if có thêm từ khóa else thực thi có giá trị hay giá trị "sai" Nhắc lại: vị trí mệnh đề thay khối mã Trong cách viết mã lồng phức tạp bao gồm nhiều mệnh đề if từ khóa else gán vào mệnh đề if phía gần chưa ghép Để tránh nhầm lẫn cách tốt lồng chúng vào dấu { } I.1.2 Dạng dùng từ khóa switch Mệnh đề switch gây việc chuyển dòng điều khiển sang mệnh đề tùy theo giá trị 13 (biểu thức phải có kiểu nguyên) Các mệnh đề thường mệnh đề phức hợp Đứng trước mệnh đề từ khóa 114 Đề tài: MẠCH ĐÈN GIAO THÔNG GIAO TIẾP THỜI GIAN THỰC LỚP : TCĐT09B GVHD: Huỳnh Thanh Hòa case, sau biểu thức Hi, dấu hai chấm : gắn liền mệnh đề Mi Khi giá trị X trùng với giá trị Hi nêu đâu mệnh đề gắn liền vói (tức Mi) thực thi Nếu X không với giá trị Hi người lập trình dùng thêm từ khóa default, sau dấu hai chấm : mệnh đề Mdefault Mệnh đề thực thi mà giá trị X khác với giá trị Hi Lưu ý: • Trong câu lệnh switch không cho phép có hai giá trị Nghĩa X đánh giá có tối đa mệnh đề thực thi • Các câu lệnh switch dùng dạng lồng vào (nest), từ khóa case hay default thuộc vào câu lệnh switch bên (hay nhỏ nhất) chứa • Một dòng điều khiển hoàn tất câu lệnh Mi tiếp tục thi hành câu lệnh Mi+1 theo sau bị yêu cầu ngưng câu lệnh nhảy (mà thường dược dùng nhiều câu lệnh break) Trong dạng thí dụ đây, có giá trị mệnh đề biểu thức ,, lần thực thi theo thứ tự chúng câu lệnh break Nhưng mã thí dụ có câu lệnh break nên dòng điều khiển ngưng kết thúc câu lệnh switch thi hành lệnh break switch () { case : case : break; case : default : } I.2 Các mệnh đề tái lặp (hay vòng lặp) C có dạng câu lệnh vòng lặp: I.2.1 Vòng lặp do while (); 115 Đề tài: MẠCH ĐÈN GIAO THÔNG GIAO TIẾP THỜI GIAN THỰC LỚP : TCĐT09B GVHD: Huỳnh Thanh Hòa Trong mệnh đề mệnh đề thực thi lặp lại đánh giá (hay có giá trị) true Một không còn có giá trị true vòng lặp bị kết thúc I.2.2 Vòng lặp while while () thực thi hay thực thi lặp lại có giá trị true Nếu có giá trị false câu lệnh bị kết thúc I.2.3 Vòng lặp for Dạng C89 vòng lặp for là: for ( ; ; ) Nó tổng quát hóa C99 thành: for ( ; ) Khi ba biểu thức diện câu lệnh for, mệnh đề: for (e1; e2; e3) s; tương đương với e1; while (e2) { s; e3; } Bất kì biểu thức vòng lặp for loại bỏ Một biểu thức bị (e2 chẳng hạn) làm cho vòng lặp biến thành vòng lặp vô hạn Thí dụ: vòng lặp for sau biểu thức dạng phức hợp ngăn cách dấu chấm phẩy ;: for (x=10,y=1;((x>4) && (y4) && (y GVHD: Huỳnh Thanh Hòa ngoặc đơn (nhóm) từ trái sang phải  phần số mảng lựa chọn phần tử, nhận dạng lựa chọn phần tử, trỏ ++ -từ phải sang trái tiền tố tăng/giảm  + -  dấu dương/âm ! ~ phép toán Bool NOT/phần bù kiểu bit (cast) đổi kiểu * tham chiếu ngược & tham chiếu sizeof độ lớn *, /, % nhân/chia/mô dun + - cộng/trừ > phép toán bit left shift/right shift < >= quan hệ nhỏ hơn/nhỏ hay  quan hệ lớn hơn/lớn hay == != với/khác với & phép toán bit AND ^ phép toán bít XOR | phép toán bit OR && phép toán bool AND || phép toán bool OR ?: điều kiện tam phân = += -= *=, /=, %= = &=, ^=, va |= phép gán giá trị trực tiếp  phép gán giá trị cộng thêm/trừ bớt phép gán giá trị nhân/chia/mô dul phép gán bit shift phép gán bit AND/XOR/OR , toán tử ,  từ trái sang phải từ phải sang trái từ trái sang phải I.5 Khai báo liệu I.5.1 Các kiểu liệu Nhiều ngôn ngữ lập trình kể C, biểu thị số hai dạng: nguyên thực (hay không nguyên) Sự khác hình thành từ khía cạnh kỹ thuật cách thức xử lý lưu trữ giá trị nhớ 118 Đề tài: MẠCH ĐÈN GIAO THÔNG GIAO TIẾP THỜI GIAN THỰC LỚP : TCĐT09B GVHD: Huỳnh Thanh Hòa Kiểu nguyên viết dạng int dùng để biểu thị số nguyên Kiểu nguyên có nhiều kích cỡ khác tùy theo phân lượng nhớ dùng độ lớn cao nhất1 Các từ khóa, có tên định tính, dùng thêm vào để điều chỉnh lại kích cỡ là: short, long long long2 Kiểu kí tự mà từ khóa char, biểu thị đơn vị nhỏ địa hóa (bởi kiến trúc máy tính) thường byte với bit Dạng thực dùng để biểu thị số thập phân hay phận hữu tỉ Mặc dù chúng không hoàn toàn xác mà biểu thị gần Có kiểu giá trị thực bao gồm: loại có độ xác đơn (có đặc tả float), loại có độ xác kép (có đặc tả double), loại có độ xác kép mở rộng (có đặc tả long double) Mỗi loại dùng để biểu thị giá trị không nguyên dạng khác Các kiểu nguyên có dấu (signed) hay không dấu (unsigned) Nếu không rõ khai báo mặc định (hiểu ngầm) loại có dấu Một ngoại lệ kiểu char, signed char unsigned char khác nhau, kiểu char loại có dấu hay dấu Đối với loại có dấu, bit có nghĩa cao dùng để biểu thị dấu (dương hay âm) Thí dụ số nguyên 16-bit loại có dấu dùng 15 bit để biểu thị giá trị (tuyệt đối) còn bit có nghĩa cao lại dùng biết số dương hay âm Đối với loại không dấu bit lại dùng thêm vào để biểu thị giá trị I.5.2 Các số xác định giá trị biên Tập tin tiêu đề chuẩn limits.h xác định giá trị nhỏ lớn kiểu nguyên xác định giới hạn khác Tập tin tiêu đề chuẩn float.h xác định giá trị nhỏ lớn kiểu float, double, long double Nó xác định giới hạn khác liên quan tới việc xử lý giá trị dấu chấm động (floating-point) có độ xác đơn hay có độ xác kép chúng định nghĩa chuẩn IEEE 754 Bản số xác định biên kiểu nguyên thông thường Đặc tả hiểu ngầm Đặc tả viết rõ Giá trị char viết y hệt CHAR_MIN CHAR_MAX signed char viết y hệt SCHAR_MIN SCHAR_MAX unsigned char viết y hệt UCHAR_MAX short signed short int SHRT_MIN SHRT_MAX 119 Đề tài: MẠCH ĐÈN GIAO THÔNG GIAO TIẾP THỜI GIAN THỰC nhỏ Giá trị lớn LỚP : TCĐT09B GVHD: Huỳnh Thanh Hòa unsigned short unsigned short int USHRT_MAX signed int INT_MIN INT_MAX unsigned unsigned int UINT_MAX long signed long int LONG_MIN LONG_MAX unsigned long unsigned long int ULONG_MAX long long1 signed long long LLONG_MIN2 int1 LLONG_MAX2 unsigned long long1 unsigned long int1 ULLONG_MAX2 không viết signed, hay int hết, long Định tính long long hỗ trợ trình dịch thỏa mãn chuẩn C99 Các LLONG_MIN, LLONG_MAX, ULLONG_MAX định nghĩa limits.h trình dịch tương ứng thỏa mãn chuẩn C99 I.5.3 Các giá trị biên điển hình Sau danh sách kích cỡ biên điển hình kiểu nguyên Các giá trị khác tùy theo kiến trúc (máy trình dịch) ISO C cung cấp tiêu đề inttypes.h, đó, có xác định kiểu nguyên có dấu dấu điều chắn kích cỡ nằm khoảng đến 64 bit Kích cỡ biên điển hình kiểu nguyên Đặc tả hiểu Đặc tả viết rõ Số ngầm bit Số byte Giá trị nhỏ Giá trị lớn char viết y hệt -128 or 127 hay 255 signed char viết y hệt -128 127 unsigned char viết y hệt 255 short signed short int 16 -32 768 32 767 unsigned short unsigned short 16 int 65 535 long signed long int 32 -2 147 483 648 147 483 647 unsigned long unsigned int long 32 4 294 967 295 long long1 signed long 64 -9 223 372 036 223 372 036 120 Đề tài: MẠCH ĐÈN GIAO THÔNG GIAO TIẾP THỜI GIAN THỰC LỚP : TCĐT09B GVHD: Huỳnh Thanh Hòa long int1 unsigned long unsigned long1 long int1 long 64 854 775 808 854 775 807 18 446 744 073 709 551 615 Định tính long long hỗ trợ trình dịch thỏa mãn chuẩn C99 Kích cỡ giới hạn kiểu int (mà định tính short, long, hay long long) thay đổi khác (nhiều kiểu nguyên khác) tùy theo sư thiết lập (của trình dịch hay kiến trúc máy) Cho nên, thao tác thông thường định nghĩa đồng nghĩa size_t — tập tin sys/types.h — đó, đủ sức để thích ứng với giá trị lớn trỏ mà cấp phát hệ thống kiểu int phải có 32 bit, chuẩn ISO C yêu cầu có 16 bit I.6 Các mảng I.6.1Khai báo mảng tĩnh Trong C, mảng dùng để biểu thị cấu trúc dãy nhiều giá trị có kiểu xếp thứ tự Một mảng gọi tĩnh độ dài dãy mảng cố định Sự khai báo mảng tĩnh có cú pháp sau: int array[n]; Trong đó, tên mảng array chứa n giá trị kiểu int Trong thực hành, phần nhớ cho n giá trị nguyên để dành riêng gán cho mảng (mặc dù giá trị phần tử mảng chưa xác định) Biến array thực chất kiểu tham chiếu kiểu nguyên; khởi thủy tới địa giá trị mảng I.6.2 Truy cập phần tử Các giá trị mảng gọi phần tử mảng • Một cách để truy cập đến phần tử dùng đến cặp kí tự ngoặc vuông dạng [k] Trong k số (hay vị trí thứ tự đếm từ 0) Như vậy, phần tử thứ k mảng array có cú pháp array[k] Giá trị trả array[k] giá trị mà chứa vị trí k Thoạt nhìn cú pháp việc truy cập trông giống cú pháp mảng array khai báo chức hoàn toàn khác Chỉ số bắt đầu mảng Như vậy, số lớn mảng tổng số phần tử mảng trừ Thí dụ mảng A có 10 phần tử giá trị phần tử A A[0] phần tử cuối dùng A[9] 121 Đề tài: MẠCH ĐÈN GIAO THÔNG GIAO TIẾP THỜI GIAN THỰC LỚP : TCĐT09B GVHD: Huỳnh Thanh Hòa Một cách truy cập khác dùng trỏ số học để tham chiếu đến giá trị phần tử mảng Bảng sau minh họa cách dùng hai phương pháp: Array Chỉ số trỏ số học • Phần tử vị trí Kiểu dùng array[0] Dùng trỏ n array[1] array[2] array[n] *array *(array + 1) *(array + 2) *(array + n) I.6.3 Các mảng động C không cung cấp phương tiện để kiểm tra biên cho mảng Nghĩa bắt lỗi gán cho mảng số âm hay số vượt độ đài mảng Và số mảng vượt khỏi độ dài sẵn có mảng Vì mảng nhất, tức chứa liệu có chung kiểu nên hai thành phần thông tin cần nhớ địa phần tử kiểu liệu Nhắc lại cú pháp để khai báo mảng tĩnh, tức tạo biến tham chiếu nguyên cấp phát vùng nhớ tương ứng cho nó: int array[n]; Cách biểu tái lập với giúp đỡ thư viện chuẩn C Hàm calloc cung cấp cách đơn giản để cấp phát vùng nhớ Hai tham số dùng đến số lượng phần tử kích cỡ (độ lớn) phần tử Khi việc cấp phát nhớ hoàn thành, calloc trả trỏ tới phần tử gán cho phần tử giá trị khởi động Nếu cấp phát vùng nhớ không thành công (vì nhớ không đủ chỗ trống hạn) calloc trả trỏ rỗng Thí dụ: đoạn mã sau có chức tương đương với việc khai báo mảng tĩnh n phần tử có kiểu int: int *array; array = calloc(n, sizeof(int)); Tuy nhiên, điểm vượt trội cách khai báo việc sử dụng cấp phát vùng nhớ động Kích cỡ mảng (tức lượng không gian nhớ cấp phát cách an toàn cho mảng) lại thay đổi sau khai báo Một việc cấp phát vùng nhớ động không còn cần thiết phần nhớ nên trả cho hệ điều hành Thao tác tiến hành hàm free Nó cần tham số: tên trỏ mà trước xin cấp phát vùng nhớ Một cách an toàn sau trả vùng nhớ cho hệ điều hành, người lập trình nên cài (hay gán) cho trỏ liên đới giá trị NULL để hủy bỏ địa mà tới (nhằm tránh gây hiệu ứng phụ việc tham chiếu trỏ gây ra) free(array); array = NULL; 122 Đề tài: MẠCH ĐÈN GIAO THÔNG GIAO TIẾP THỜI GIAN THỰC LỚP : TCĐT09B GVHD: Huỳnh Thanh Hòa I.6.4 Các mảng đa chiều C có hỗ trợ việc dùng mảng đa chiều Việc định nghĩa chúng giống tạo mảng mảng , thực tế không hoàn toàn Cú pháp sau: int array2D[số_hàng][số_cột]; Sẽ định nghĩa mảng hai chiều; chiều thứ có số_hàng phần tử Chiều thứ hai có số_hàng * số_cột phần tử tập hợp số_cột phần tử mà phần tử chiều thứ Các mảng đa chiều hoàn toàn xem dãy trỏ Trong thí dụ trên, array2D (nếu số_hàng 1) tham chiếu giá trị nguyên mà tới mảng số_cột phần tử I.6.5 Dãy kí tự Dãy kí tự thay đổi nội dung mà không cần đến thư viện chuẩn Tuy nhiên, thư viện có nhiều hàm dùng cho dãy kí tự có kết thúc mảng kí tự kết thúc kiểu char Trong phần từ "dãy" để dãy kí tự Các hàm thường dùng là: • strcat(dest, source) - nối dãy kí tự source tiếp vào vị trí cuối dãy kí tự dest • strchr(source, c) - tìm vị trí xuất c dãy kí tự source trả trỏ tới vị trí hay trỏ trống c không tìm thấy source • strcmp(a, b) - so sánh hai dãy kí tự a b (theo thứ tự từ điển); trả số âm a nhỏ b, chúng nhau, dương a lớn • strcpy(dest, source) - chép thay kí tự dãy dest vào dãy dest • strlen(st) - trả độ dài st • strncat(dest, source, n) - nối tối đa n kí tự từ dãy source tiếp vào vị trí cuối dãy dest; kí tự sau dấu kết thúc null không chép vào • strncmp(a, b, n) - so sánh từ kí tự đầu tối đa n kí tự từ hai dãy a b (theo thứ tự từ điển); hàm trả số âm phần so sánh a nhỏ b, nhau, dương lớn • strncpy(dest, source, n) - chép từ đầu đến tối đa n kí tự từ dãy source vào dãy dest • strrchr(source, c) - tìm vị trí lần cuối kí tự c dãy source trả trỏ vào vị trí hay trỏ trống không tìm thấy c Các hàm dùng tới là: • strcoll(s1, s2) - so sánh hai dãy theo trình tự địa phương đặc thù • strcspn(s1, s2) - trả số kí tự s1 trùng với kí tự s2 • strerror(err) - trả dãy kí tự dạng thông báo lỗi ứng với mã (câu viết) err 123 Đề tài: MẠCH ĐÈN GIAO THÔNG GIAO TIẾP THỜI GIAN THỰC LỚP : TCĐT09B GVHD: Huỳnh Thanh Hòa strpbrk(s1, s2) - trả trỏ vào kí tự s1 mà trùng với kí tự s2 hay trỏ trống không tìm thấy • strspn(s1, s2) - trả số kí tự s1 mà không xuất s2 • strstr(source, subst) - trả trỏ tới vị trí dãy subst dãy source hay trả trỏ rỗng không tồn dãy bên source • strtok(s1, s2) - trả trỏ đến token bên s1 mà phân chia kí tự s2 • strxfrm(s1, s2, n) - chuyển đổi s2 thành s1 dùng quy tắc địa phương đặc thù • TÀI LIỆU THAM KHẢO 124 Đề tài: MẠCH ĐÈN GIAO THÔNG GIAO TIẾP THỜI GIAN THỰC LỚP : TCĐT09B GVHD: Huỳnh Thanh Hòa Tài liệu vi điều khiển PIC 16F877A – GV.Nguyễn Trọng Khanh Tài liệu điện tử công suất – GV.Thượng Văn Bé Tài liệu lập trình hệ thống –Phạm Phùng Kim Khánh Nguyễn Đình Phú– tài liệu thực hành vi điều khiển – Trường đại học sư phạm kỹ thuật Và số website : a C-sharpcorner.com b Picvietnam.com c Dientuvietnam.com d Hoiquantinhoc.com e Alldatasheet.com f www.anti7.com 125 Đề tài: MẠCH ĐÈN GIAO THÔNG GIAO TIẾP THỜI GIAN THỰC ... ngày Đề tài: MẠCH ĐÈN GIAO THÔNG GIAO TIẾP THỜI GIAN THỰC LỚP : TCĐT09B GVHD: Huỳnh Thanh Hòa 1.3 GIỚI HẠN ĐỀ TÀI Do hạn chế kiến thức, thời gian thực kinh nghiệm thực tế, nhóm thực đề tài thực. .. quan ứng dụng cách hiệu thực đề tài Đề tài “ Hệ thống đèn giao giao tiếp thời gian thực hoàn thành góp phần vào việc ổn định tình hình giao thông thành phố lớn … Đồng thời giải pháp phù hợp với... lại 20 Đề tài: MẠCH ĐÈN GIAO THÔNG GIAO TIẾP THỜI GIAN THỰC LỚP : TCĐT09B GVHD: Huỳnh Thanh Hòa Dựa vào hình vẽ ta thấy đáp ứng ngõ tức thời so với thay đổi ngõ vào mà cần có khoảng thời gian

Ngày đăng: 06/09/2017, 23:48

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w