Bài tập lớn Vi xử lý Thiết kế bảng quảng cáo, hiển thị một dòng chữ chạy

Các đặc điểm của hệ Vi Xử Lý 89C51 : - Là IC có tích hợp trên đó hệ vi xử lý - Có 40 chân. - 4KB ROM trong , có thể ghi xoá được 1000 lần - Dải tần số hoạt động từ 0MHz đến 24Mhz - 128x8 bit RAM trong . - 4 cổng vào ra 8 bit - 2 bộ định thời 16 bit - Có 6 nguyên nhân ngắt - Có thể lập trình được qua cổng nối tiếp - 210 bit được địa chỉ hoá - Giao Tiếp nối tiếp

doc19 trang | Chia sẻ: diunt88 | Lượt xem: 2464 | Lượt tải: 5download
Bạn đang xem nội dung tài liệu Bài tập lớn Vi xử lý Thiết kế bảng quảng cáo, hiển thị một dòng chữ chạy, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Trường đại học bách khoa hà nội Khoa Điện Tử Viễn Thông ----- ( -----  Báo cáo BÀI TẬP VXL GV Hướng Dẫn: Thầy Phạm Ngọc Nam Nhóm Sinh viên: Trần Văn Thông Nguyễn Thị Thanh Thuý Nguyễn Công Chiến Đào Xuân Vũ Nguyễn Vũ Lớp : ĐT09-K47 Hà Nội 11/2005 Chủ đề: Thiết kế bảng quảng cáo, hiển thị một dòng chữ chạy Phần I:Giới Thiệu Linh Kiện Sử Dụng Vi Xử Lí AT89C51 1. Các đặc điểm của hệ Vi Xử Lý 89C51 : - Là IC có tích hợp trên đó hệ vi xử lý - Có 40 chân. - 4KB ROM trong , có thể ghi xoá được 1000 lần - Dải tần số hoạt động từ 0MHz đến 24Mhz - 128x8 bit RAM trong . - 4 cổng vào ra 8 bit - 2 bộ định thời 16 bit - Có 6 nguyên nhân ngắt - Có thể lập trình được qua cổng nối tiếp - 210 bit được địa chỉ hoá - Giao Tiếp nối tiếp 2. Cơ bản về cấu tạo của AT89C51:  Hình : Sơ đồ chân của 89C51 Hình2 : Sơ đồ khối của 89C51 Cấu Tạo Chân của AT89C51 : GND(chân 20) Chân nối với 0v potr 0(chân 32 – chân 29) port 0 là port xuất nhập 8 bit hai chiều. Port 0 còn được cấu hình làm bus địa chỉ( byte thấp) và bus dữ liệu đa hợp trong khi truy xuất bộ nhớ dữ liệu ngoài và bộ nhớ chương trình ngoài. Port cũng nhận các byte mã trong khi lập trình cho Flash và xuất các byte mã trong khi kiểm tra chương trình ( các điện trở kéo lên bên ngoài được cần đến trong khi kiểm tra chương trình). Port 1( chân 1- 8) port 1 là port xuất nhập 8 bit hai chiều. Port1 cũng nhận byte địa chỉ thấp trong thời gian lập trình cho Flash. Port 2 ( chân 21 – 28) Port 2 là port xuất nhập 8 bit hai chiều. Port 2 tạo ra các byte cao của bus địa chỉ trong thời gian tìm nạp lệnh từ bộ nhớ chương trình ngoài và trong thời gian truy xuất bộ nhớ dữ liệu ngoài, sử dụng các địa chỉ 16 bit. Trong thời gian truy xuất bộ nhớ dữ liệu ngoài sử dụng các địa chỉ 8 bit, port 2 phát các nội dung của các thanh ghi đặc biệt, port 2 cũng nhận các bits địa chỉ cao và vài tín hiệu điều khiển trong thời gian lập trình cho Flash và kiểm tra chương trình. Port 3 ( chân 10- 17) Port 3 là port xuất nhập 8 bit hai chiều, port 3 cũng còn làm các chức năng khác của AT89C51. các chức năng này được nêu như sau: Chân  Tên  Chức năng   P3.0  RxD  Ngõ vào port nối tiếp   P3.1  TxD  Ngõ ra port nối tiếp   P3.2  INT0  Ngõ vào ngắt ngoài 0   P3.3  INT1  Ngõ vào ngắt ngoài 1   P3.4  T0  Ngõ vào bên ngoài của bộ định thời 1   P3.5  T1  Ngõ vào bên ngoài của bộ định thời 0   P3.6  WR  Điều khiển ghi bộ nhớ dữ liệu ngoài   P3.7  RD  Điều khiển đọc bộ nhớ dữ liệu ngoài   Port 3 cũng nhận một vài tín hiêu điều khiển cho việc lập trình Flash và kiểm tra chương trình. RST ( chân 9) Ngõ vào reset. Mức cao trên chân này trong hai chu kỳ máy trong khi bộ dao động đang hoạt động sẽ reset AT89C51 . ALE/PROG( chân 30) ALE là một xung ngõ ra để chốt byte thấp của địa chỉ trong khi xuất bộ nhớ ngoài. Chân này cũng làm ngõ vào chân lập trình (PROG) trong thời gian lạp trình cho Flash. Khi hoạt động bình thường xung ngõ ra luôn có tần số không đổi là 1/6 tần số của mạch dao động, có thể được dùng cho các mục đích định thời bên ngoài. Khi cần, hoạt động chân ALE có thể được vô hiệu hoá bằng cách set bit 0 của thanh ghi chức năng đặc biệt có địa chỉ 8Eh. Khi bit này được set, ALE chỉ tích cực trong thời gian thực hiện lệnh MOVX hoặc MOVC. Ngược lại chân này sẽ được kéo lên cao. Việc set bit không cho phép hoạt động chôt byte thấp của địa chỉ sẽ không có tác dụng nếu bộ vi điều khiển đang ở chế độ thực thi chương trình ngoài. PSEN(chân 29) PSEN (program Store Enable) là xung điều khiển truy xuất chương trình ngoài. Khi AT89C51 đang thực thi chương trình từ bộ nhớ chương trình ngoài, PSEN được kích hoạt hai lần mỗi chu kỳ máy, nhưng hai hoạt động PSEN sẽ bị bỏ qua mỗi khi truy cập bộ nhớ dữ liệu ngoài. EA vpp(chân 31) Là chân cho phép truy xuất bộ nhớ chương trình ngoài ( địa chỉ từ 0000h tới ffffh) EA = 0 cho phép truy xuát bộ nhớ chương trình ngoài, ngược lại EA = 1 sẽ thực thi chương trình bên trong chip Tuy nhiên, lưu ý rằng nếu bít khoá 1 được lập trình EA được chốt bên trong khi reset XTAL1& XTAL2 Là hai ngõ vào ra của hai bộ khuyếch đại đảo của mạch dao động, được cấu hình để dùng như một bộ tạo dao động trên chip 3. Tổ chức bộ nhớ của 89C51: 7F RAM ẹA DUẽNG 30   2F  7F  7E  7D  7C  7B  7A  79  78   2E  77  76  75  74  73  72  71  70   2D  6F  6E  6D  6C  6B  6A  69  68   2C  67  66  65  64  63  62  61  60   2B  5F  5E  5D  5C  5B  5A  59  58   2A  57  56  55  54  53  52  51  50   29  4F  4E  4D  4C  4B  4A  49  48   28  47  46  45  44  43  42  41  40   27  3F  3E  3D  3C  3B  3A  39  38   26  37  36  35  34  33  32  31  30   25  2F  2E  2D  2C  2B  2A  29  28   24  27  26  25  24  23  22  21  20   23  1F  1E  1D  1C  1B  1A  19  18   22  17  16  15  14  13  12  11  10   21  0F  0E  0D  0C  0B  0A  09  08   20  07  06  05  04  03  02  01  00   1F BANK 3 18   17 BANK 2 10   0F BANK 1 08   07 Bank thanh ghi 0 ( maởc ủũnh cho R0-R7) 00   CAÁU TRUÙC RAM NOÄI   F0  F7  F6  F5  F4  F3  F2  F1  F0     E0  E7  E6  E5  E4  E3  E2  E1  E0     D0  D7  D6  6D  6C  6B  6A  69  68     B8  -  -  -  BC  BB  BA  B9  B8     B0  B7  B6  B5  B4  B3  B2  B1  B0     A8  AF  AE  AD  AC  AB  AA  A9  A8     A0  A7  A6  A5  A4  A3  A2  A1  A0     99  Khoõng coự ủũa chổ hoựa tửứng bit   98  9F  9E  9D  9C  9B  9A  99  98     90  97  96  95  94  93  92  91  90     8D  Khoõng ủửụùc ủũa chổ hoựa tửứng bit   8C  Khoõng ủửụùc ủũa chổ hoựa tửứng bit   8B  Khoõng ủửụùc ủũa chổ hoựa tửứng bit   8A  Khoõng ủửụùc ủũa chổ hoựa tửứng bit   89  Khoõng ủửụùc ủũa chổ hoựa tửứng bit   88  8F  8E  8D  8C  8B  8A  89  88   87  Khoõng ủửụùc ủũa chổ hoựa tửứng bit     83  Khoõng ủửụùc ủũa chổ hoựa tửứng bit   82  Khoõng ủửụùc ủũa chổ hoựa tửứng bit   81  Khoõng ủửụùc ủũa chổ hoựa tửứng bit   80  87  86  85  84  83  82  81  80   THANH GHI CHệÙC NAấNG ẹAậC BIEÄT   Bộ phân kênh 74LS154 Là một bộ giải mã phân kênh tích cực mức thấp, với bốn ngõ vào và 16 ngõ ra, sơ đồ sắp xếp chân như trên hình top view Dựa vào bốn bit đầu vào A,B,C,D đưa ra đầu ra 16 bit ở mức thấp Mỗi khi có một đầu ra trong 16 đầu ra được chọn thì chỉ có đầu ra được chọn ở mức thấp còn các đầu ra khác đều đặt ở mức cao. Dựa vào bảng chân lý dưới đây ta có thể xác định được trạng thái đầu ra tại từng thời điểm, cụ thể ta có thể xem qua sơ đồ logic  III. Giải mã địa chỉ 74LS139 : Là vi mạch giải mã 16 chân , gồm hai khối giải mã riêng rẽ ,dùng 74139 sẽ có ít đầu vào hơn so với 74138 dưới đây la sơ đồ chân linh kiện  Bảng sự thật :  IV. Ma trận LED 1588AB : Sử dụng ma trận led 8x8 với các hàng cột được kết nối với nhau ,trong trừong hợp bài làm ,có bốn ma trận led được kết nối để tạo thành 8 hàng và 32 cột . ma trận 1588AB là ma trận loại catot   Phần ii. Sơ đồ khối và chức năng các khối Nguồn   Hiển thị   VDK 89C51   Khuếch đại dòng   Chọn chip   GiảI mã địa chỉ   1.Khối nguồn :sử dụng nguồn máy tính để đảm bảo khả năng ổn định cao 2.Khối VDK 89C51 :bao gồm các linh kiện kèm với VDK như dao động TA ,tụ ,reset 3.Khối chọn chip :do 74LS139 đảm nhận ,nó sẽ nhận tín hiệu từ VDK để chọn 1 trong hai IC 74154 phục vụ cho giảI mã 4. Khối giải mã : gồm 2 IC 74154 giải nã địa chỉ 16 đầu ra sẽ chọn 1 tron 32 cột của khối hiển thị để VDK xuất dữ liệu ra (hiên thị ) 5 Khối hiển thi :gồm 4 ma trận 8*8 mức thành 8 hàng và 32 cột sẽ hiển thị chữ mà ta muốn 6 .Khối khuếch đại : để đảm bảo cho đền sáng bình thường ,phải cung đủ dòng cho nó ,dòng ra từ các chân của các IC ,VDK nói chung đều nhỏ vi vạy phải khuếch đại chúng trước khi đưa qua đèn việc này đảm nhận bởi các Transitor PHầN 3: Sơ đồ nguyên lí và nguyên lí hoạt động : I.Sơ đồ nguyên lí : thực hiện bằng phần mềm Proteus : II. Mô tả nguyên lí hoạt động : Tín hiệu chọn chip từ VDK đến 74139 được giảI mã sẽ chọn 1 trong hai Ic 74154 sau đó tín hiệu chọn cột được VDK đưa vào bốn đầu vào của 74154 , sẽ giảI mã để chọn một cột trong 32 cột Khi một cột đã được chọn ,dữ liệu từ cổng P0 đén các Bazơ của các đèn khuếch đại ở đó dòn gđược khuch đại và ra ở Emitơ của đèn ,chảy qua đèn về đất (cột được chọn Hiển thị động : như đã biết , khi có dòng chảy qua led sẽ sáng ,tùy theo vi trí các led sáng phối hợp với nhau tạo thành hình ảnh chữ . Nhưng một htời điểm ta không thể cho bao nhiêu led sáng cũng được vì : + Dòng cung rất tốn kém :mỗi led 10 mA có tất cả 32*8=256 led thì cực đại cần 2,56 A +Dòng quá lớn sẽ gây hỏng IC do mỗi IC chỉ cho phép dòng vào giới hạn +phải dùng nhiều VDK phối hợp với nhau rất phức tạp Mặt khác do đặc điểm thi giác của con người không thể phân biệt sự đứt đoạn của hình ảnh nếu nó dược quét >= 24 lần /giây .Chính vì vậy việc hiển thị đồng loạt là đIề không cần thiết ,thay vào đó các cột đèn sẽ luân phiên nhau nhận dữ liệu hiển thi ,và như vậy việc sử dụng các chân của VDK và việc lập trình sẽ đon giản hơn *Quá trình truy xuất dữ liệu ở 89C51 :    III. Mã chương trình : *Mô tả chương trình :chương trình được thực hiện bằng phần mềm Reads51 các chữ mã hóa dựa trên bảng sau  cổng p2 quản lí việc chọn chip và dữ liệu đầu vào của 74154 ,cổng p0 quản lí việc xuất dữ liệu ,dữ liệu trước khi đua ra được đẩy vào các thanh ram của bank 0 Code: #include org 0h MOV tmod,#01 MOV p2,#10100000B;dia chi bat dau cua chuoi tu ngoai cung ben phai lap1: MOV R7,#24;so lan quet chuoi lap: ACALL chuoi MOV A,p2 SUBB A,#64 MOV p2,A DJNZ R7,lap DEC p2 CLR p2.7 LJMP lap1 delay2: MOV tl0,#09Bh ;nap gia tri can tre MOV th0,#0ffh SETB tr0 here2: JNB tf0,here2 CLR tr0 CLR tf0 RET goi: ;dua du lieu tu ram ra cong P0 INC p2 MOV p0,R0 acall delay2 INC p2 MOV p0,R1 acall delay2 INC p2 MOV p0,R2 acall delay2 INC p2 MOV p0,R3 acall delay2 INC p2 MOV p0,R4 acall delay2 INC p2 MOV p0,R5 acall delay2 INC p2 MOV p0,R6 acall delay2 RET napd: MOV R0,#01001001B MOV R1,#01111111B MOV R2,#01111111B MOV R3,#01001001B MOV R4,#01100011B MOV R5,#00111110B MOV R6,#00011100B RET napi: MOV R0,#01000100B MOV R1,#01111101B MOV R2,#01111101B MOV R3,#01000000B MOV R4,#00111000B MOV R5,#01111110B MOV R6,#11010101B RET nape: MOV R0,#11010101B MOV R1,#01011110B MOV R2,#00011000B MOV R3,#00000000B MOV R4,#01111100B MOV R5,#01111100B MOV R6,#00000100B RET napn: MOV R0,#00000100B MOV R1,#01111100B MOV R2,#01111000B MOV R3,#00000011B MOV R4,#01000001B MOV R5,#01111111B MOV R6,#01111111B RET napt: MOV R0,#01000001B MOV R1,#00000011B MOV R2,#00111100B MOV R3,#01111100B MOV R4,#01000101B MOV R5,#01000011B MOV R6,#01111100B RET napu: MOV R0,#01111100B MOV R1,#00000110B MOV R2,#00000000B MOV R3,#00000110B MOV R4,#01001111B MOV R5,#01001001B MOV R6,#00101001B RET nap9: MOV R0,#00111111B MOV R1,#00011110B MOV R2,#01000001B MOV R3,#01111111B MOV R4,#01111111B MOV R5,#00001000B MOV R6,#00011100B RET napk: MOV R0,#01110111B MOV R1,#01100011B MOV R2,#00011000B MOV R3,#00011100B MOV R4,#01010110B MOV R5,#01111111B MOV R6,#01111111B RET nap4: MOV R0,#01010000B MOV R1,#00000011B MOV R2,#00000011B MOV R3,#01110001B MOV R4,#01111001B MOV R5,#00001111B MOV R6,#00000111B RET chuoi: ;dua cac chu ra P0 ACALL napd ACALL goi ACALL napi ACALL goi ACALL nape ACALL goi ACALL napn ACALL goi ACALL napt ACALL goi ACALL napu ACALL goi ACALL nap9 ACALL goi ACALL napk ACALL goi ACALL nap4 ACALL goi inc p2 mov p0,#0B RET END Thời gian trễ của delay2: 0ffffh-0ff37h=200d khoảng trễ sẽ là 0. 2ms Để tạo chữ chạy ta chọn cỏc bộ định thời để tạo trễ sao cho 1 chuỗi ( 50 cột: 10 kớ tự ) được quột ớt nhất 24 lần trong 1s sau đú trễ 1 rồi dịch sang vị trớ tiếp (đặt thời gian quột 1 lần chuỗi là T1=1/ 24 Trong một lần quột chuỗi mỗi cột sẽ được quột trong T1/ ( 50x2 ) do giữa mỗi lần quột cú một khoảng nghỉ (Như vậy khoảng trễ của một lần quột cột là 1/2400 khoảng 0. 4ms ( 370 chu kỡ mỏy ) Một lần quột chuỗi khoảng 40ms ( 38000 chu kỡ mỏy ) Tuy nhiờn khi tớnh đến trễ gõy ra bởi bản thõn cỏc lệnh thỡ ta được kết quả như phần mó