Thiết kế một công cụ dùng cho việc nhận dạng, phân tích dạng số liệu các phím trên điều khiển từ xa của Tivi

Lời mở đầu 1

Lời cảm ơn ! 2

Chương1 :Tổng quan về đề tài tốt nghiệp. 3

1.1. Nội dung đề tài thiết kế. 3

1.2. Yêu cầu của thiết kế. 3

1.3. Hướng thiết kế cho đề tài. 3

1.4.Nguyên lý hoạt động của mạch. 4

1.5. Hướng mở rộng cho đề tài. 5

Chương2:Cơ sở lí thuyết. 7

2.1 .Tổng quan về một số hệ thống điều khiển từ xa: 7

2.2.Đại cương về quang điện tử: 12

2.2.1.Led hồng ngoại: 13

2.2.2.Hồng ngoại gần: 14

2.2.3.Nguồn phát sáng hồng ngoại: 14

2.3.Một số chuẩn điều chế mã hoã dùng trong điều khiển từ xa của TI VI. 16

2.3.1. Chuẩn RC5. 16

2.3.2. Chun REC 17

2.3.3.Chuẩn NEC 18

2.3.4. Mt s ®Ỉc tÝnh k thut cđa TSOP18xx, vµ TSOP17xx. 19

2.4.Giao tiếp của PC với ngoại vi 19

2.4.1Giao tiếp qua Slot: 19

2.4.2.Giao tiếp qua cổng nối tiếp: 21

2.4.2.1.Truyền đồng bộ : 21

2.4.2.2.Truyền không đồng bộ: 21

2.4.2.3. GIỚI THIỆU VỀ GIAO DIỆN NỐI TIẾP: 22

2.4.2.4. Bảng thông số về tính năng kĩ thuật cuả giao diện RS-232 / V 24 : 23

2.4.2.5.Vài nét cơ bản về cổng nối tiếp: 24

2.4.2.5.1.Sự trao đổi của đường dẫn tín hiệu: 25

2.4.3.Giao tiếp qua Printer Port: 29

2.4.3.1.Vài nét cơ bản về cổng ghép nối với máy in: 29

Chương 3 :Thiết kế cụ thể. 35

3.1.Thiết kế phần cứng. 36

3.1.1. Khối nguồn cung cấp . 36

3.1.1.1.Sơ đồ mạch nguồn. 36

3.1.1.2. Các thông số của IC: 36

3.1.1.3. Điện áp ra : 37

3.1.1.4.Đặc tính của IC : 37

3.1.2. Khối xử lý trung tâm. 37

3.1.3. Khối giao tiếp giữa PC và khối xử lý trung tâm 40

3.1.4.Khối chọn mode . 42

3.1.5.Khối mắt nhận. 42

3.2. Thiết kế phần mềm. 43

3.2.1. Thiết kế lưu đồ thuật toán thu trên PC và thay đổi chế độ giải mã từ PC. 43

3.2.2.Chương trình giải mã,hiển thị trên PC: 44

3.2.2.Thuật toán trên khối xử lí trung tâm. 62

3.2.2.1.Thuật toán để nhận dạng từ mã chuẩn RC5. 62

3.2.2.2.Thuật toán nhận dạng cho các từ mã chuẩn REC. 64

3.2.2.3.Thuật toán nhận dạng từ mã cho chuẩn NEC. 65

3.2.2.4.Thuật toán các hàm có nhiệm vụ truyền về PC, nhận dữ liệu từ PC. 67

3.2.2.5.Thuật toán cho hàm Main trên Vi điều khiển. 69

Chương 4:Kết luận. 71

4.1 Đánh giá hệ thống. 71

4.2.Phương án khắc phục và nâng cấp . 72

Phần 2 : Phụ lục. 74

Phụ lục A :Giới thiệu về các linh kiện sử dụng trong đồ án . 74

1.1. Vi điều khiển họ MCS -51 74

1.2 Vi điều khiển AT89C52 75

1.2.1. Cấu tạo chân 76

1.2.2. Sơ đồ khối 77

1.2.3. Mô tả chức năng của các chân 78

1.2.4. Các thanh ghi chức năng (SFR-Special Funtion Reisters) 79

1.2.5. Bộ nhớ dữ liệu 82

1.2.6. Đặc tính bộ dao động 82

1.2.7. Chế độ lười 83

1.2.8. Chế độ hạ nguồn 83

1.2.9. Trạng thái của một số chân trong chế độ lười và chế độ hạ nguồn 84

1.2.10. Các thông số kỹ thuật 84

1.2.11. Hoạt động của port nối tiếp 87

1.2.11.1Khái quát về port nối tiếp: 87

1.2.11.2. Chế độ thanh ghi dịch 8 bit . 88

1.2.11.3. Chế độ UART 8 bit. 89

1.2.11.3. UART 9 bit: tốc độ baud cố định. 89

 

doc139 trang | Chia sẻ: huong.duong | Lượt xem: 1150 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Thiết kế một công cụ dùng cho việc nhận dạng, phân tích dạng số liệu các phím trên điều khiển từ xa của Tivi, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ụực 2. B2: kieồm tra xem ủaừ nhaọn ủửụùc Header space hay chửa. Neỏu nhaọn ủửụùc roài thỡ chuyeồn qua bửụực 3. B3:sau khi nhaọn daùng ủửụùc leader code, Header space roài thỡ tieỏn haứnh nhaọn daùng caực bit 1 vaứ 0 . Sửỷ duùng caực bieỏn sau ủaõy trong lửu ủoà thuaọt toaựn. Data_Ready kieỏu bit:bieỏn nay coự nhieõm vuù kieồm soaựt quaự trỡnh tửứ luực baột ủaàu giaỷi maừ cho moọt tửứ maừ ủeỏn khi truyeàn xong tửứ maừ ủoự veà PC. Data_Ready=0 baựo ủaừ truyeàn xong tửứ maừ ủoự veà PC vaứ coự theồ baột ủaàu nhaọn daùng tửứ maừ mụựi. Data_Ready=1 baựo hieọu ủaừ giaỷi maừ xong moọt tửứ maừ vaứ khi ủoự baột ủaàu truyeàn veà PC tửứ maừ ủo.ự Bieỏn kieồu bit Detect_Leader_Code(Dt_Ld_Cd) kieồm tra xem laứ ủaừ nhaọn ủửụùc Leader code hay chửa +/Detect_Leader_Code=1 nhaọn ủửụùc Leader code roài. +/Detect_Leader_Code=0 chửa nhaọn ủửụùc Leader code. Bieỏn kieồu bit Detect_Header_Space(Dt_Hd_SP) kieồm tra xem laứ ủaừ nhaọn ủửụùc Header sapce hay chửa +/ Detect_Header_Space=1 nhaọn ủửụùc Header space roài. +/ Detect_Header_Space =1 chửa nhaọn ủửụùc Header space. Vieọc nhaọn bieỏt caực leader code ,header space, bit 1 ,bit 0 hoaứn toaứn dửùa vaứo soỏ laàn traứn boọ ủũnh thụứi 2. Trửục khi baột ủaàu giaỷi maừ cho chuaồn NEC (trỡnh phuùc vuù ngaột do INT0 ủửụùc goùi )ta phaỷi caỏu hỡnh cho. Chaõn ngaột INTO kớch khụỷi caùnh aõm. Boọ ủũnh thụứi 2 hoaùt ủoọng tửù naùp 16 bit. Thụứi gian traứn boọ ủũnh thụứi 2 laứkhoaỷng 200 ms.Trỡnh phuùc vuù ngaột do timer2 cửự sau 200 ms laùi ủửụùc goùi vaứ bieỏn timer2_tick laùi taờng neõn 1. Giaự trũ naùp vaứo RCAP2H vaứ RCAP2L vụựi toỏc ủoọ dao doọng thaùch anh laứ 11.0592 MHZ laứ (-200*11.0592)/12 =0xFF48. Vieọc nhaọn daùng Leader code,header space ,bit 1 ,bit 0 dửùa vaứo trũ soỏ bieỏn Last_Count_Tick doùc tửứ trũ soỏ timer2_tick moói khi coự ngaột ngoaứi INT0. Vụựi Leader code: Last_Count_Tick >100. Vụựi Header Space: Last_Count_Tick >15 vaứ Last_Count_Tick <30. Vụựi bit 1: Last_Count_Tick >7 vaứ Last_Count_Tick <=15. Voựi bit 0 :Last_Count_Tick >=3 vaứ Last_Count_Tick <=7. Last_Count_Tick<3 ta hieồu laứ bớt loói. Traùng thaựi khụỷi ủoọng trửụực khi baột ủaàu nhaọn daùng moọt tửứ maừ. +/Data_Ready=0; +/Bit_Counter=31; +/Detect_Leader_Code=0; +/Detect_Header_Space=0; Lửu ủoà thuaọt toaựn nhử sau…. 3.2.2.4.Thuaọt toaựn caực haứm coự nhieọm vuù truyeàn veà PC, nhaọn dửừ lieọu tửứ PC. Lửu ủoà thuaọt toaựn haứm Put_Byte. Haứm naứy coự nhieọm vuù truyeàn veà PC moọt byte naứo ủoự. ẹuựng Sai ẹeọm ủaày BEGIN Putbuffer… End Haứm ngaột do port serial: Nhaọn dửừ lieọu sau khi giaỷi maừ trong boọ ủeọm,ủửa ra thanh ghi ủeọm phaựt vaứ truyeàn veà PC. Neỏu nhaọn ủửụùc tửứ PC byte leọnh thay ủoồi cheỏ ủoọ giaỷi maừ naứo ủoự seừ set cụứ Change_Mode=1; Cụứ naứy seừ ủửụùc xửỷ lớ trong haứm main ủeồ khoỏi xửỷ lớ trung taõm thay cheỏ ủoọ nhaọn daùng,giaỷi maừ. 3.2.2.5.Thuaọt toaựn cho haứm Main treõn Vi ủieàu khieồn. Haứm Main phaỷi caỏu hỡnh caực caực timer ,caực chaõn ngaột ngoaứi ,coồng noỏi tieỏp vvv. Khi coự dửừ lieọu sau khi giaỷi maừ phaỷi truyeàn veà PC. Khi coự sửù thay ủoồi Mode phaỷi truyeàn veà PC 2 byte ủũnh daùng cho cheỏ ủoọ giaỷi maừ mụựi. ẹuựng BEGIN Khụỷi taùo caực bieỏn , caỏu hỡnh caực ngaột , caực boọ ủũnh thụứi ,caỏu hỡnh coồng truyeàn thoõng noỏi tieỏp noỏựi tieỏp vụựi PC Timer0 cheỏ ủũnh thụứi 16 bit , Timer1 cheỏ ủoọõ tửù naùp 8 bit Timer2 tửù naùp 16 bit ,port serial 8 databit ,no parity,1 start, 1 stop Data_Ready=1 Change_Mode=1 Kieồm tra Current _Mode; truyeàn veà PC dửừ lieọu tửụng ửựng vụựi Current_Mode ẹoùc mode mụựi nhaọn , so saựnh voớ mode cuừ neỏu coự thay ủoồi xaực ủũnh mode giaỷi maừ hieọn taùi…. ẹuựng sai Chửụng 4:Keỏt luaọn. 4.1 ẹaựnh giaự heọ thoỏng. Heọ truyeàn thoõng giửừa khoỏi xửỷ lớ trung taõm vaứ PC sửỷ duùng giao tieỏp RS232 .Giụựi haùn khoaỷng caựch laứ 185 m toỏc doọ truyeàn thoõng coỏ ủũnh ủaởt trửụực laứ 9600 baud. ẹoà aựn naứy ta khoõng thửùc hieọn vieọc kieồm soaựt loói khi truyeàn vỡ trong khuoõn khoồ ủoà aựn naứy,sửỷ duùng ủửụứng truyeàn toỏc ủoọ thaỏp vaứ dửừ lieọu truyeàn tửứ khoỏi xửỷ lớ trung taõm veàPC laứ rụứi raùc (moói khi ngửụứi sửỷ duùng aỏn phớm treõn ủieàu khieồn tửứ xa ). Trong thieỏt keỏ DEMO cho chuaồn RC5 sửù lieõn laùc giửừa khoỏi xửỷ lớ trung taõm vaứ PC mang tớnh moọt chieàu. Dửừ lieọu truyeàn theo moọt hửụựng tửứ khoỏi xửỷ lớ trung taõm veàứ PC. Vai troứ cuỷa PC ụỷ ủaõy laứ chửa lụựn vaứ noự chổ ủoựng vai troứ laứ tieỏp nhaọn soỏ lieọu do khoỏi xửỷ lớ trung taõm truyeàn veà , nhử vaọy coự theồ coi ủaõy laứ moọt haùn cheỏ khaự lụựn vỡ ta chửa sửỷ duùng nhửừng khaỷ naờng maùnh meừ cuỷa PC ủeồ can thieọp trụỷ laùi quaự trỡnh hoaùt ủoọng cuỷa khoỏi xửỷ lớ trung taõm.Coự theỏ sửỷ duùng PC ủeồ thay ủoồi toỏc ủoọ truyeàn thoõng giuừa khoỏi xửỷ lớ trung taõm vaứ chớnh PC , duứng PC ủeồ kieồm soaựt loói khi truyeàn tửứ khoỏi xửỷ lớ trung taõm veà PC. Sau naứy khi thụứi gian em coự nhieàu hụn vaứ kinh nghieọm hụn ,vieọc boồ xung cho 3 chuaồn hay nhieàu hụn dửùa treõn nhửừng thuaọt toaựn ủaừ ủeà ra laứ hoaứn toaứn khaỷ thi . Veà chửụng trỡnh phaàn meàm treõn PC tuy vieỏt baống ngoõn ngửừ TC++3.0 cuỷa BORLAND ,maởc duứ coự nhửụùc ủieồm laứ giao dieọn coứn ủụn giaỷn nhửng cuừng ủaừ ủeà caọp tụựi nhửừng vaỏn ủeà khaự phửực taùp trong kú thuaọt laọp trỡnh noựi chung. Chửụng trỡnh thu treõn PC cuừng ủaừ cho ta nhửừng tớnh naờng cụ baỷn cuỷa moọt chửụng trỡnh thu hoaứn chổnh sau naứy , noự cho ta choùn ủửụùc moọt soỏ tham soỏ nhử choùn coồng COM, choùn toỏc ủoọ truyeàn thoõng vụựi moọt soỏ toỏc ủoọ phoồ bieỏn ,hay sửỷ duùng trong truyeàn soỏ lieọu noựi chung. Chửụng trỡnh thu naứy cuừng chc ta kieồm soaựt lửu lửụùng thu vaứo baống boọ ủeọm , coự theồ tửù ủoọng ghi file khi boọ ủeọm traứn ,trong quaự trỡnh thu ngửụứi sửỷ duùng coự theồ quyeỏt ủũnh thu vaứo vụựi soỏ lửụùng byte mong muoỏn. Chửụng trỡnh giaỷi maừ hieồn thũ treõn PC ủaừ ủửụùc vieỏt hoaứn thieọn cho caỷ 3 chuaồn noựi treõn ,ủaừ chaùy vaứ khoõng baựo loói. Chửụng trỡnh treõn khoỏi sửỷ lớ trung taõm ủửụùc vieỏt baống ngoõn ngửừ C ủửụùc thieỏt keỏ rieõng cho vi ủieàu khieồn. ẹoự laứ ngoõn ngửừ C51 vụựi trỡnh dũch KEIL UVISION2 laứ trỡnh dũch ủửụùc sửỷ duùng trong laọp trỡnh caực ửựng duùng vi ủieàu khieồn coõng nghieọp . ẹaõy cuừng chớnh laứ coõng cuù hoó trụù quan troùng khi thieỏt keỏ ,laọp trỡnh caực ửựng duùng lụựn sau naứy. 4.2.Phửụng aựn khaộc phuùc vaứ naõng caỏp . +Caỷi thieọn heọ truyeàn thoõng:sửỷ duùng caực tieõu chuaồn khaực ủeồ tryeàn soỏ lieọu giuừa khoỏi xửỷ lớ trung taõm vaứ PC vớ duù tieõu chuaồn RS423 ,RS485. Caực tieõu chuaồn naứy sửỷ duùng maừ ủieàu cheỏ caõn baống , cho pheựp truyeàn khoaỷng caựch xa , sửù caựch li veà ủieọn khaự toỏt. Toỏc ủoọ truyeàn cao coự theồ neõn tụựi vaứi Mbps. +Theõm chieàu truyeàn thoõng tửứ PC veà khoỏi xửỷ lớ trung taõm ủeồ giaựm saựt quaự trỡnh hoaùt ủoọng cuỷa khoỏi xửỷ lớ trung taõm , kieồm soaựt loói truyeàn. +Vụớ caực chửụng trỡnh thu , giaỷi maừ hieồn thũ treõn PC coự theồ naõng caỏp giao dieọn cho noự khi sửỷ duùng moọt ngoõn ngửừ laọp trỡnh trong moõi trửụứng WINDOWS vớ duù nhử ngoõn ngửừ Visual C++, DELPHI…trụỷ thaứnh moọt chửụng trỡnh hoaứn toaứn ủoọc laọp vụựi caực nhieọm vuù hoaứn toaứn khaực bieọt .Vụựi chửụng trỡnh thu ta coự theồ taùo theõm nhieàu tuyứ bieỏn hụn vụựi ngửụứi sửỷ duùng. Chửụng trỡnh giaỷi maừ hieồn thũ treõn PC tớch hụùp nhieàu chuaồn hụn,giao dieọn ủoà hoùa ủeùp hụn ,doứng bớt coự theồ thay ủoồi thuaọt toaựn laứm cho noự ủoọng hụn. Phaàn 2 : Phuù luùc. Phuù luùc A :Giụựi thieọu veà caực linh kieọn sửỷ duùng trong ủoà aựn . 1.1. Vi ủieàu khieồn hoù MCS -51 MCS-51TM laứ hoù vi ủieàu khieồn do haừng INTEL saỷn xuaỏt vaứo ủaàu nhửừng naờm 80 vaứ ngaứy nay ủaừ trụỷ thaứnh moọt chuaồn trong coõng nghieọp. Baột ủaàu tửứ IC tieõu bieồu laứ 8051 ủaừ cho thaỏy khaỷ naờng thớch hụùp vụựi nhửừng ửựng duùng mang tớnh ủieàu khieồn. Vieọc xửỷ lớ treõn byte vaứ caực pheựp toaựn soỏ hoùc ụỷ caỏu truực dửừ lieọu nhoỷ ủửụùc thửùc hieọn baống nhieàu cheỏ ủoọ truy xuaỏt dửừ lieọu nhanh treõn RAM noọi. Taọp leọnh cung caỏp moọt baỷn tieọn duùng cuỷa nhửừng leọnh soỏ hoùc 8 bit goàm caỷ leọnh nhaõn vaứ leọnh chia. Noự cung caỏp nhửừng hoó trụù mụỷ roọng on-chip duứng cho nhửừng bieỏn 1 bit nhử laứ kieồu dửừ lieọu rieõng cho pheựp quaỷn lớ vaứ kieồm tra bit trửùc tieỏp trong ủieàu khieồn vaứ nhửừng heọ thoỏng logic ủoứi hoỷi xửỷ lớ luaọn lớ. Sau ủaõy laứ baỷng so saựnh caực IC trong hoù MCS-51TM : TEÂN LINH KIEÄN BOÄ NHễÙ CHệễNGự TRèNH ON CHIP BOÄ NHễÙ Dệế LIEÄU ON CHIP TIMER 8051 4 KB MROM 128 Bytes 2 8031 0 KB 128 Bytes 2 8751 4 KB EPROM 128 Bytes 2 8951 4 KB Flash ROM 128 bytes 2 8052 8 KB MROM 256 Bytes 3 8032 0 KB 256 Bytes 3 8752 8 KB EPROM 256 Bytes 3 8952 8 KB Flash ROM 256 Bytes 3 1.2 Vi ủieàu khieồn AT89C52 Do hoù MCS-51TM ủaừ trụỷ thaứnh chuaồn coõng nghieọp neõn coự raỏt nhieàu haừng saỷn xuaỏt ra noự, ủieồn hỡnh laứ ATMEL Corporation. Haừng naứy ủaừ keỏt hụùp raỏt nhieàu tớnh naờng dửùa treõn neàn taỷng kyừ thuaọt cuỷa mỡnh ủeồ taùo ra caực vi ủieàu khieồn tửụng thớch vụựi MCS-51TM nhửng maùnh meừ hụn. AT89C52 laứ moọt vi ủieàu khieồn 8 bit do ATMEL saỷn xuaỏt, cheỏ taùo theo coõng ngheọ CMOS, coự chaỏt lửụùng cao, coõng suaỏt thaỏp vụựi 8 KB Flash (flash programmable and erasable read only memory). Thieỏt bũ naứy ủửụùc cheỏ taùo baống caựch sửỷ duùng kyừ thuaọt boọ nhụự khoõng boỏc hụi maọt ủoọ cao cuỷa ATMEL vaứ tửụng thớch vụựi chuaồn coõng nghieọp MCS-51TM veà taọp leọnh vaứ caực chaõn ra. Flash on-chip cho pheựp boọ nhụự laọp trỡnh ủửụùc laọp trỡnh trong heọ thoỏng bụỷi moọt laọp trỡnh vieõn bỡnh thửụứng. Baống caựch noỏi 1 CPU 8 bit vụựi moọt Flash treõn moọt chip ủụn, AT89C52 laứ moọt vi ủieàu khieồn maùnh (coự coõng suaỏt lụựn), cung caỏp moọt sửù linh ủoọng cao vaứ giaỷi phaựp veà giaự caỷ ủoỏi vụựi nhieàu ửựng duùng vi ủieàu khieồn. Caực ủaởc ủieồm chuỷ yeỏu cuỷa AT89C52 : Tửụng thớch hoaứn toaứn vụựi hoù MCS-51TM cuỷa Intel. Boọ nhụự chửụng trỡnh 8K Byte thuoọc loaùi Flash Memory. ẹoọ beàn : 1000 laàn ghi/xoựa. Taàn soỏ hoaùt ủoọng : 0 Hz ủeỏn 24 MHz. 3 cheỏ ủoọ khoựa boọ nhụự. 256 x 8-Bit RAM noọi. 32 ủửụứng I/O laọp trỡnh ủửụùc (4 port). 3 timer/counter 16-bit. 8 nguoàn ngaột. Cheỏ ủoọ haù nguoàn vaứ cheỏ ủoọ lửụứi tieõu toỏn coõng suaỏt thaỏp. 1.2.1. Caỏu taùo chaõn Tuứy theo khaỷ naờng (veà kinh teỏ, kyừ thuaọt, …) maứ caực nhaứ saỷn xuaỏt caực saỷn phaồm ửựng duùng coự theồ choùn moọt trong 3 kieồu chaõn do ATMEL ủửa ra. 1.2.2. Sụ ủoà khoỏi 1.2.3. Moõ taỷ chửực naờng cuỷa caực chaõn Vcc : aựp nguoàn. GND : ủaỏt. Port 0 : laứ moọt port I/O 8-bit hai chieàu, cửùc maựng hụỷ. Khi xuaỏt ra, moói chaõn port coự theồ laựi 8 ủaàu vaứo TTL. Neỏu ghi caực mửực 1 ra caực chaõn port thỡ caực chaõn naứy coự theồ duứng nhử caực ủaàu vaứo trụỷ khaựng cao. Port 0 cuừng coự theồ ủửụùc caỏu hỡnh thaứnh moọt bus multiplex giửừa ủũa chổ thaỏp vaứ dửừ lieọu khi truy caọp chửụng trỡnh hay dửừ lieọu tửứ beõn ngoaứi. Trong cheỏ ủoọ naứy, port 0 coự ủieọn trụỷ pullup noọi. Port 0 cuừng nhaọn caực byte maừ chửụng trỡnh khi laọp trỡnh Flash vaứ xuaỏt ra maừ chửụng trỡnh khi kieồm tra, khi ủoự caàn coự ủieọn trụỷ pullup beõn ngoaứi. Chaõn Chửực naờng thay theỏ P1.0 T2 (ủaàu vaứo ủeỏm cho Timer/Counter 2) P1.1 T2EX (xung kớch capture/reload cho Timer/Counter 2 vaứ ủieàu khieồn trửùc tieỏp. RST : laứ ngoừ vaứo Reset. Khi ngoừ naứy ủửụùc ủửa leõn cao (trong ớt nhaỏt hai chu kỡ maựy), caực thanh ghi beõn trong AT89C51 ủửụùc taỷi nhửừng giaự trũ thớch hụùp ủeồ khụỷi ủoọng heọ thoỏng. ALE/PROG (Address Latch Enable) : ALE laứ xung xuaỏt cho pheựp choỏt byte ủũa chổ thaỏp khi truy caọp boọ nhụự ngoaứi. Chaõn naứy coứn laứ ngoừ vaứo cuỷa xung laọp trỡnh (PROG) khi laọp trỡnh Flash. Trong hoaùt ủoọng bỡnh thửụứng, ALE ủửụùc phaựt xung vụựi taàn soỏ 1/6 taàn soỏ dao ủoọng on-chip vaứ coự theồ ủửụùc duứng nhử xung thụứi gian chuaồn beõn ngoaứi. Tuy nhieõn, caàn chuự yự laứ moọt xung ALE seừ bũ maỏt khi truy caọp boọ nhụự ngoaứi. Coự theồ huỷy boỷ chửực naờng cuỷa ALE baống caựch set bit 0 cuỷa thanh ghi ụỷ vũ trớ 8EH. Moọt khi bit naứy ủửụùc set, ALE chổ tớch cửùc khi coự leọnh MOVX hoaởc MOVC. Neỏu khoõng coự caực leọnh naứy thỡ ALE ụỷ mửực cao. Vieọc set bit 0 cuỷa thanh ghi ụỷ vũ trớ 8EH khoõng laứm aỷnh hửụỷng ủeỏn vi ủieàu khieồn khi truy caọp boọ nhụự ngoaứi. PSEN (Program Store Enable) : PSEN laứ xung strobe baựo hieọu vieọc ủoùc boọ nhụự chửụng trỡnh ngoaứi, PSEN tớch cửùc hai laàn (mửực thaỏp) moói chu kỡ maựy, ngoaùi trửứ hai xung PSEN bũ maỏt khi truy xuaỏt dửừ lieọu ngoaứi. Khi thi haứnh chửụng trỡnh trong RAM noọi, PSEN seừ ụỷ mửực thuù ủoọng (mửực cao). EA/VPP (External Access) : EA laứ ngoừ vaứo ủeồ cho pheựp truy xuaỏt boọ nhụự chửụng trỡnh tửứ beõn ngoaứi khi ủửụùc noỏi vụựi GND. Khi EA ủửụùc treo leõn nguoàn VCC, chửụng trỡnh seừ ủửụùc thửùc thi trong ROM noọi. Chaõn naứy cuừng nhaọn ủieọn aựp 12v (VPP) trong khi laọp trỡnh Flash. XTAL1 : ẹaàu vaứo cuỷa boọ khueỏch ủaùi dao ủoọng ủaỷo vaứ cuừng laứ ủaàu vaứo ủeỏn maùch taùo xung clock noọi. XTAL2 : ẹaàu ra cuỷa boọ khueỏch ủaùi dao ủoọng ủaỷo. 1.2.4. Caực thanh ghi chửực naờng (SFR-Special Funtion Reisters) AT89C52 coự 26 thanh ghi chửực naờng ủửụùc thieỏt keỏ nhử laứ moọt thaứnh phaàn cuỷa RAM on-chip. Do ủoự moói thanh ghi coự moọt ủũa chổ cuỷa noự, naốm trong vuứng tửứ 80H ủeỏn FFH. Tuy nhieõn, vuứng naứy cuừng laứ vuứng boọ nhụự neõn vieọc truy caọp caực thanh ghi naứy thoõng qua caực leọnh duứng ủũnh vũ trửùc tieỏp khaực vụựi vieọc truy caọp vuứng nhụự duứng ủũnh vũ giaựn tieỏp. Baỷng vũ trớ caực thanh ghi chửực naờng : Chuự yự laứ khoõng phaỷi taỏt caỷ caực ủũa chổ ủeàu coự caực thanh ghi, nhửừng ủũa chổ khoõng coự thanh ghi naứy coự theồ khoõng coự treõn chip. ẹoùc nhửừng ủũa chổ naứy seừ coự nhửừng giaự trũ ngaóu nhieõn vaứ ghi nhửừng giaự triù naứy coự nhửừng taực ủoọng khoõng xaực ủũnh trửụực. Phaàn meàm cuỷa ngửụứi duứng khoõng neõn ghi nhửừng giaự trũ 1 ủeỏn caực vũ trớ naứy, bụỷi vỡ chuựng coự theồ ủửụùc duứng trong tửụng lai. Trong trửụứng hụùp ủoự, giaự trũ cuỷa caực bit luoõn laứ 0. Ngoaứi nhửừng thanh ghi tửụng tửù 8051, AT89C52 coự theõm : Caực thanh ghi Timer 2 caực bit ủieàu khieồn vaứ traùng thaựi chửựa trong thanh ghi T2CON vaứ T2MOD cho Timer 2. Caởp thanh ghi RCAP2H vaứ RCAP2L laứ nhửừng thanh ghi Capture/Reload trong cheỏ ủoọ capture 16 bit hay cheỏ ủoọ auto-reload 16 bit. Kyự hieọu Chửực naờng TF2 Cụứ traứn Timer 2, set khi Timer 2 traứn vaứ phaỷi ủửụùc clear baống phaàn meàm. TF2 seừ khoõng set khi RCLK = 1 hoaởc TCLK = 1. EXF2 Cụứ ngoaứi cuỷa Timer 2, set khi xaỷy ra capture hoaởc reload do T2EX xuoỏng thaỏp vaứ EXEN2 = 1. Neỏu ngaột Timer 2 ủửụùc kớch hoaùt, EXF2 = 1 seừ laứm CPU troỷ ủeỏn ISR cuỷa Timer 2. EXF2 phaỷi ủửụùc xoựa baống phaàn meàm. EXF2 khoõng gaõy neõn ngaột trong cheỏ ủoọ ủeỏm leõn/xuoỏng (DCEN = 1). RCLK Kớch hoaùt xung clock boọ thu. Khi set, caực xung traứn Timer 2 seừ laứ xung clock cho boọ thu port noỏi tieỏp trong mode 1 vaứ 3. RCLK = 0 thỡ boọ thu port noỏi tieỏp seừ duứng caực xung traứn cuỷa Timer 1. TCLK Kớch hoaùt xung clock boọ phaựt. Khi set, caực xung traứn Timer 2 seừ laứ xung clock cho boọ phaựt port noỏi tieỏp trong mode 1 vaứ 3. TCLK = 0 thỡ boọ phaựt port noỏi tieỏp seừ duứng caực xung traứn cuỷa Timer 1. EXEN2 Kớch hoaùt beõn ngoaứi. Khi set, cho pheựp capture hay reload khi T2EX xuoỏng thaỏp (neỏu Timer 2 khoõng sửỷ duùng cho port noỏi tieỏp). EXEN2 = 0 laứm cho Timer 2 boỷ qua caực sửù kieọn treõn T2EX. TR2 Khụỷi ủoọng/Dửứng Timer 2. TR2 = 1 laứm khụỷi ủoọng Timer 2. C/T2 Bit lửùa choùn timer hay counter. C/T2 = 0 : timer. C/T2 = 1 : counter ủeỏm sửù kieọn beõn ngoaứi (kớch caùnh xuoỏng). CP/RL2 Lửùa choùn capture hay reload. CP/RL2 = 1: capture xaỷy ra khi T2EX xuoỏng thaỏp neỏu EXEN2 = 1. CP/RL2 = 0 : reload xaỷy ra khi Timer 2 traứn hoaởc khi T2EX xuoỏng thaỏp neỏu EXEN2 = 1. Neỏu TCLK hay RCLK = 1, bit naứy bũ boỷ qua vaứ timer bũ eựp vaứo cheỏ ủoọ reload khi Timer 2 traứn. Caực thanh ghi ngaột taọp caực bit rieõng leỷ cho pheựp ngaột chửựa trong thanh ghi IE. Thieỏt laọp hai mửực ửu tieõn cho 6 nguoàn ngaột baống caựch set caực bit thanh ghi IP. 1.2.5. Boọ nhụự dửừ lieọu AT89C52 coự 256 byte boọ nhụự RAM on-chip. Trong ủoự, 128 byte treõn coự cuứng ủũa chổ vụựi vuứng thanh ghi chửực naờng nhửng coự caỏu taùo vaọt lyự rieõng bieọt. Khi moọt leọnh truy caọp moọt vũ trớ noọi coự ủũa chổ treõn 7FH, cheỏ ủoọ ủũa chổ noự sửỷ duùng seừ baựo cho CPU bieỏt vuứng ủũa chổ naứo noự caàn truy caọp : RAM hay SFR. Caực leọnh duứng ủũa chổ trửùc tieỏp seừ truy caọp vuứng SFR. Vớ duù nhử leọnh sau ủaõy seừ truy caọp SFR ụỷ ủũa chổ 0A0H (port 2) MOV 0A0H,#data Leọnh duứng ủũa chổ giaựn tieỏp seừ truy caọp 128 byte treõn cuỷa RAM. Vớ duù nhử cuừng truy caọp ủũa chổ 0A0H nhửng giaựn tieỏp thoõng qua R0. MOV R0,#0A0H MOV @R0,#data Chuự yự raống caực taực vuù cuỷa stack voỏn ủaừ sửỷ duùng ủũa chổ giaựn tieỏp neõn vuứng 128 byte treõn cuỷa RAM raỏt tieọn duùng ủeồ laứm vuứng stack. 1.2.6. ẹaởc tớnh boọ dao ủoọng XTAL1 laứ ủaàu vaứo vaứ ủaàu ra tửụng ửựng cuỷa boọ khueỏch ủaùi ủaỷo ủửụùc duứng laứm boọ dao ủoọng noọi on-chip. Coự theồ duứng thaùch anh hay boọ coọng hửụỷng ceramic ủeàu ủửụùc. ẹeồ laựi vi ủieàu khieồn tửứ nguoàn xung clock beõn ngoaứi, XTAL2 phaỷi ủửụùc ủeồ troỏng trong khi XTAL1 noỏi ủeỏn nguoàn laựi. Khoõng coự yeõu caàu gỡ veà duty cycle nhửng phaỷi chuự yự ủeỏn thụứi gian toỏi ủa vaứ toỏi thieồu cuỷa mửực ủieọn aựp cao cuừng nhử mửực ủieọn aựp thaỏp. 1.2.7. Cheỏ ủoọ lửụứi Trong cheỏ ủoọ lửụứi, CPU rụi vaứo traùng thaựi “nguỷ” trong khi taỏt caỷ thieỏt bũ ngoaùi vi vaón coứn tớch cửùc. Cheỏ ủoọ naứy ủửụùc taùo ra baống phaàn meàm. Noọi dung cuỷa RAM on-chip vaứ giaự trũ cuỷa caực SFR vaón ủửụùc giửừ nguyeõn. Keỏt thuực cheỏ ủoọ lửụứi baống caựch kớch hoaùt moọt ngaột hoaởc reset phaàn cửựng. Chuự raống khi keỏt thuực cheỏ ủoọ lửụứi baống caựch reset phaàn cửựng thỡ thoõng thửụứng vi ủieàu khieồn seừ goùi laùi chửụng trỡnh maứ noự vửứa thoaựt, cho ủeỏn hai chu kyứ maựy trửụực khi thuaọt toaựn reset chieỏm quyeàn ủieàu khieồn. Phaàn cửựng caỏm truy caọp RAM noọi trong trửụứng hụùp naứy nhửng khoõng caỏm truy caọp ủeỏn caực chaõn port, do ủoự coự theồ xaỷy ra nhửừng trửụứng hụùp khoõng mong muoỏn. ẹeồ loaùi boỷ trửụứng hụùp naứy, leọnh ngay sau leọnh goùi cheỏ ủoọ lửụứi khoõng neõn laứ leọnh ghi port hay ghi boọ nhụự ngoaứi. 1.2.8. Cheỏ ủoọ haù nguoàn Trong cheỏ ủoọ haù nguoàn, boọ dao ủoọng ngửứng, vaứ leọnh goùi haù nguoàn laứ leọnh cuoỏi cuứng ủửụùc thửùc thi. RAM on-chip vaứ SFR duy trỡ giaự trũ cuỷa noự cho ủeỏn khi keỏt thuực cheỏ ủoọ haù nguoàn. Keỏt thuực cheỏ ủoọ haù nguoàn chổ baống moọt caựch duy nhaỏt : reset phaàn cửựng. Reset seừ taùo laùi giaự trũ cho SFR nhửng khoõng thay ủoồi noọi dung cuỷa RAM on-chip. Khoõng neõn reset trửụực khi Vcc phuùc hoài mửực ủieọn aựp thoõng thửụứng cuỷa noự vaứ phaỷi giửừ ủuỷ laõu ủeồ boọ dao ủoọng phuùc hoài vaứ oồn ủũnh. 1.2.9. Traùng thaựi cuỷa moọt soỏ chaõn trong cheỏ ủoọ lửụứi vaứ cheỏ ủoọ haù nguoàn 1.2.10. Caực thoõng soỏ kyừ thuaọt 1.2.11. Hoaùt ủoọng cuỷa port noỏi tieỏp 1.2.11.1Khaựi quaựt veà port noỏi tieỏp: Beõn trong kieỏn truực 8051, 8052 coự moọt port noỏi tieỏp hoaùt ủoọng treõn moọt taàm taàn soỏ roọng. Nhieọm vuù cụ baỷn cuỷa port noỏi tieỏp laứ chuyeồn ủoồi dửừ lieọu song song thaứnh noỏi tieỏp khi phaựt vaứ ngửụùc laùi noỏi tieỏp thaứnh song song khi thu. Phaựt dửừ lieọu sửỷ duùng chaõn TXD (P 3.1) Thu dửừ lieọu sửỷ duùng RXD (P 3.0) ẹieọn trửụứng cuỷa port noỏi tieỏp laứ hoaùt ủoọng song coõng laứ coự khaỷ naờng thu vaứ phaựt soựng ủoàng thụứi. Ngửụứi ta sửỷ duùng thanh ghi SBUF vaứ SCON ủeồ truy xuaỏt port noỏi tieỏp. SBUF coự ủũa chổ laứ 99H, thửùc teỏ SBUF laứ hai boọ ủeõm,vieọc ghi leõn SBUF- phaựt dửừ lieọu. ẹoùc SBUF tửụng ủửụng vụựi vieọc thu dửừ lieọu SCON ủửụùc sửỷ duùng ủeồ ủaởt cheỏ ủoọ hoaùt ủoọng cho port noỏi tieỏp. Thanh ghi ủieàu khieồn port noỏi tieỏp vaứ caực cheỏ ủoọ hoaùt ủoọng: Cheỏ ủoọ hoaùt ủoọng cuỷa port noỏi tieỏp ủửụùc thieỏt laọp baống caựch ghi tửù ủieàu khieồn vaứo thanh ghi SCON, SCON coự ủũa chổ laứ99H vaứ ủũnh ủũa chổ tửứng bit. YÙ nghúa cuỷa bit ,cuỷa thanh ghi SCON nhử sau: Bớt Kớ hieọu ẹũa chổ moõ taỷ Moõ taỷ SCON.7 SMO 9FH Bớt choùn cheỏ ủoọ soỏ 0 SCON.6 SM1 9EH Bớt choùn cheỏ ủoọ soỏ 1 SCON.5 SM2 9DH Bớt choùn cheỏ ủoọ soỏ 2… SCON.4 REN 9CH Cho pheựp thu phaỷi ủửụùc set khi thu caực kớ tửù. SCON.3 TB8 9BH Bit phaựt soỏ 8 SCON.2 RB8 9AH Bớt thu soỏ 8 SCON.1 TI 99H Cụứ ngaột phaựt. Set sau khi phaựt moọt kớ tửù , xoựa bụỷi phaàn meàm SCON.0 RI 98H Cụứ ngaột thu . Set sau khi thu moọt kớ tửù , xoựa bụỷi phaàn meàm 1.2.11.2. Cheỏ ủoọ thanh ghi dũch 8 bit . Cheỏ ủoọ 0, ủửụùc choùn baống caựch ghi giaự trũ 0 vaứo caực bit SMO vaứ SM1 cuỷa thanh ghi SCON . Dửừ lieọu noỏi tieỏp ủửụùc thu vaứ phaựt thoõng qua chaõn RxD,chaõn TxD xuaỏt xung clock dũch bit. Phaựt dửừ lieọu ủửụùc khụỷi ủoọng baống leọnh ghi dửừ lieọu neõn SBUF. Dửừ lieọu dũch ra ngoaứi qua chaõn RxD, TxD vụựi caực xung clock dũch bit. Thu dửừ lieọu :khụỷi ủoọng baống caựch khi bit cho pheựp thu REN = 1 vaứ cụ ngaột thu RI = 0 1.2.11.3. Cheỏ ủoọ UART 8 bit. ẹaõy laứ cheỏ ủoọ thu phaựt khoõng ủoàng boọ. Moói kyự tửù ủửụùc baột ủaàu baống Start bit, sau ủoự laứ 8 bit dửừ lieọu vaứ moọt bit dửứng. Nhử vaọy ụỷ cheỏ ủoọ UART 8 bit. Seừ coự 10 bit ủửụùc phaựt cho moọt kyự tửù. Toỏc ủoọ baud trong mode 1 vụựi hoù x51,ẹửụùc thieỏt laọp bụỷi toỏc ủoọ traứn boọ ủũnh thụứi 1 , coứn vụựi hoù x52 toỏc ủoọ traứn ủửụùc thieỏt laọp bụỷi toỏc ủoọ traứn boọ ủinh thụứi 1 hoaởc 2 hoaởc toồ hụùp 1 vaứ2, moọt cho thu ,moọt cho phaựt. Toỏc ủoọ BAUD ủửụùc tớnh theo coõng thửực Giaự trũ naùp vao TH1 ủửụùc tớnh thoe coõng thửực vụựi SMOD=0 thỡ K=1; vụựi SMOD=1 thỡ K=2; 1.2.11.3. UART 9 bit: toỏc ủoọ baud coỏ ủũnh. Cheỏ ủoọ naứy coự toỏc ủoọ baud coỏ ủũnh, 11 bit ủửụùc phaựt hoaởc thu cho moọt kyự tửù dửừ lieọu . Moọt bit start, 8 bit dửừ lieọu,bit dửừ lieọu thửự 9 laứ bit baỏt kyứ coự theồ ủaởt vaứo bit TB8 trong thanh ghi SCON. Khi thu bit thửự 9 nhaọn ủửụùc seừ ủaởt vaứobit RB8 cuừng cuỷa thanh ghi SCON. Toỏc ủoọ baud =1/32 hoaởc =1/64 toỏc ủoọ giao ủoọng treõn chip. 1.2.11.4. UART 9-bit: toỏc ủoọ baud thay ủoồi. Cheỏự ủoọ naứy gaàn gioỏng cheỏ ủoọ UART9-bit, toỏc ủoọ baud coỏ ủũnh treõn. ễỷ ủaõy toỏc ủoọ baud thay ủoồi vaứ ủửụùc cung caỏp bụỷi boọ ủũnh thụứi. 1.2.11.5. Toỏc ủoọ baud cuỷa port noỏi tieỏp . Vụựi mode 0 (cheỏ ủoọ thanh ghi dũch) toỏc ủoọ baud laứ coỏ ủũnh vaứ = 1/12 toỏc ủoọ dao ủoọng treõn chớp . Vụựi cheỏ ủoọ 1 (UART 8 bit),toỏc ủoọ baud ủửụùc thieỏt laọp bụỷi toỏc ủoọ traứn boọ ủũnh thụứi 1. Vụựi cheỏ ủoọ 2: toỏc ủoọ baud coỏ ủũnh =1/64 toỏc ủoọ dao ủoọng treõn chip. Vụựi cheỏ ủoọ 3 vieọc thieỏt laọp toỏc ủoọ nhử cheỏ ủoọ 1. Toỏc ủoọ vụựi caực cheỏ ủoọ 1,2,3 coứn bũ aỷnh hửụỷng bụỷi bit SMOD cuỷa PCON vieọc seựt bit SMOD cuỷa PCON seừ laứm taờng gaỏp ủoõi toỏc ủoọ. 1.2.12.Ngaột –vai troứ cuỷa ngaột trong caực ửựng duùng cuỷa boọ vi ủieàu khieồn. 1.2.12.1.Sụ lửụùc veà ngaột. Ngaột laứ sửù xaồy ra moọt ủieàu kieọn laứm cho chửụng trỡnh hieọn haứnh bũ taùm ngửng trong khi ủieàu kieọn ủửụùc phuùc vuù bụỷi moọt chửụng trỡnh khaực. Ngaột cho aỷo tửụỷng vi ủieàu khieồn ủang laứm nhieàu vieọc ủoàng thụứi. Taùi 1 thụứi ủieồm CPU chổ coự theồ thửùc thi moọt leọnh . Nhửng CPU coự theồ ngửng taùm thụứi vieọc thửùc thi moọt coõng vieọc ủeồ thửùc thi moõùt chửụng trỡnh khaực . Roài sau ủoự quay laùi thửùc thi chửụcng trỡnh ủang bũ taùm ngửng. ẹieàu naứygioỏng nhử CPU rụứi khoỷi chửụng trỡnh goùi ủeỏn chửụng trỡnh con ủeồ thửùc thi sau ủoự laùi trụỷ laùi chửụng trỡnh chớnh. 1.2.12.2.Toồ chửực ngaột cuỷa hoù 8051. Vụựi vi ủieàu khieồn 8051 coự 5 nguyeõn nhaõn taùo ra ngaột, ủoự laứ:hai ngaột ngoaứi,hai ngaột ngoaứi do boọ ủũnh thụứi vaứ moọt ngaột do port noỏi tieỏp. Vụựi vi ủieàu khieồn 80x52 thỡ coự theõm 1 ngaột do boọ ủũnh thụứi timer 2 ủửụùc theõm vaứo vaứ moọt ngaột do beõn ngoaứi thửự ba. Khi coự nhieàu ngaột ủoàng thụứi xaồy ra ta coự theồ sửỷ trong 2 sụ ủoà sửỷ lyự ngaột. Sụ ủoà chuoói voứng : laứ coỏ ủũnh. Sụ ủoà ngaột hai mửực ửu tieõn: ủửụùc laọp trỡnh bụỷi ngửụứi sửỷ duùng. 1.2.12.3.Cho pheựp vaứ khoõng cho pheựp ngaột. Moói moọt nguyeõn nhaõn ngaột, ủửụùc cho pheựp ngaột vaứ khoõng cho pheựp rieõng reừ thoõng caực bit cuỷa thanh ghi IE (cho pheựp ngaột ) coự ủũa chổ laứ 0A8H moọt bit cho pheựp hoaởc caỏm tửứng nguyeõn nhaõn ngaột rieõng reừ. Bit EA cuỷa IE, cho pheựp hoaởc khoõng cho pheựp taỏt caỷ caực ngaột (khoõng cho pheựp khi EA = 0, cho pheựp khi EA = 1). Caỏu chuực thanh ghi IE . Bớt Kớ hieọu ẹũa chổ bớt Moõ taỷ IE.7 EA AFH Cho pheựp /khoõng cho pheựp toaứn cuùc IE.6 - AEH Khoõng sửỷ duùng IE.5 ET2 ADH Cho pheựp ngaột do timer2 IE.4 ES ACH Cho pheựp ngaột do port noỏi tieỏp IE.3 ET1 ABH Cho pheựp ngaột do boọ dũnh thụứi 1 IE.2 EX1 AAH Cho pheựp ngaột ngoaứi 1 IE.1 EX0 A9H Cho pheựp ngaột do boọ dũnh th

Các file đính kèm theo tài liệu này:

  • docDAN081.doc
Tài liệu liên quan