Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 36 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
36
Dung lượng
1,09 MB
Nội dung
A GIỚI THIỆU VỀ VI ĐIỀU KHIỂN 89S52 Tổng quan 89S52 AT89S52 họ IC vi điều khiển hãng Atmel sản xuất Các sản phẩm AT89S52 thích hợp cho ứng dụng điều khiển Việc xử lý byte toán số học cấu trúc liệu nhỏ thực nhiều chế độ truy xuất liệu nhanh RAM nội Tập lệnh cung cấp bảng tiện dụng lệnh số học bit gồm lệnh nhân lệnh chia Nó cung cấp hổ trợ mở rộng chip dùng cho biến bit kiểu liệu riêng biệt cho phép quản lý kiểm tra bit trực tiếp hệ thống điều khiển AT89S52 cung cấp đặc tính chuẩn như: KByte nhớ đọc xóa lập trình nhanh (EPROM), 128 Byte RAM, 32 đường I/O, TIMER/COUNTER 16 Bit, vectơ ngắt có cấu trúc mức ngắt, Port nối tiếp bán song công, mạch dao động tạo xung Clock dao động ON-CHIP Các đặc điểm chip AT89S52 tóm tắt sau: • KByte nhớ lập trình nhanh, có khả tới 1000 chu kỳ ghi/xố • Tần số hoạt động từ: 0Hz đến 24 MHz • mức khóa nhớ lập trình • Timer/counter 16 Bit • 128 Byte RAM nội • Port xuất /nhập I/O bit • Giao tiếp nối tiếp • 64 KB vùng nhớ mã ngồi • 64 KB vùng nh d liu ngoi ã às cho hot ng nhân chia Sơ đồ khối AT89S52 Mô tả chân 89S52 2.1 Sơ đồ chân 89S52 Mặc dù thành viên họ 8051(ví dụ 8751, 89S52, 89C51, DS5000) hạn hai hàng chân DIP (Dual In-Line Pakage), dạng vỏ dẹt vuông QPF (Quad Flat Pakage) dạng chip khơng có chân đỡ LLC AT89S52 có kiểu đóng vỏ khác nhau, chẳng (Leadless Chip Carrier) chúng có 40 chân cho chức khác vào I/O, đọc RD , ghi WR , địa chỉ, liệu ngắt Cần phải lưu ý số hãng cung cấp phiên 8051 có 20 chân với số cổng vào cho ứng dụng yêu cầu thấp Tuy nhiên hầu hết nhà phát triển sử dụng chíp đóng vỏ 40 chân với hai hàng chân DIP nên ta tập trung mô tả phiên 2.2 Chức chân 89S52 Port 0: từ chân 32 đến chân 39 (P0.0 _P0.7) Port có chức năng: thiết kế cỡ nhỏ không dùng nhớ mở rộng có chức đường IO, thiết kế lớn có nhớ mở rộng kết hợp bus địa bus liệu Port 1: từ chân đến chân (P1.0 _ P1.7) Port port IO dùng cho giao tiếp với thiết bị bên cần Port 2: từ chân 21 đến chân 28 (P2.0 _P2.7) Port port có tác dụng kép dùng đường xuất/nhập byte cao bus địa thiết bị dùng nhớ mở rộng Port 3: từ chân 10 đến chân 17 (P3.0 _ P3.7) Port port có tác dụng kép Các chân port có nhiều chức năng, có cơng dụng chuyển đổi có liên hệ đến đặc tính đặc biệt 89S52 bảng sau: Bit Tên Chức chuyển đổi P3.0 RXD Ngõ vào liệu nối tiếp P3.1 TXD Ngõ xuất liệu nối tiếp P3.2 INT0 Ngõ vào ngắt cứng thứ P3.3 INT1 Ngõ vào ngắt cứng thứ P3.4 T0 Ngõ vào TIMER/ COUNTER thứ P3.5 T1 Ngõ vào TIMER/ COUNTER thứ P3.6 WR P3.7 RD Tín hiệu ghi liệu lên nhớ ngồi Tín hiệu đọc nhớ liệu PSEN (Program store enable): PSEN tín hiệu ngõ có tác dụng cho phép đọc nhớ chương trình mở rộng thường nối đến chân OE Eprom cho phép đọc byte mã lệnh PSEN mức thấp thời gian 89S52 lấy lệnh Các mã lệnh chương trình đọc từ Eprom qua bus liệu, chốt vào ghi lệnh bên 89S52 để giải mã lệnh Khi 89S52 thi hành chương trình ROM nội, PSEN mức cao ALE (Address Latch Enable): Khi 89S52 truy xuất nhớ bên ngồi, Port có chức bus địa liệu phải tách đường liệu địa Tín hiệu ALE chân thứ 30 dùng làm tín hiệu điều khiển để giải đa hợp đường địa liệu kết nối chúng với IC chốt Tín hiệu chân ALE xung khoảng thời gian port đóng vai trị địa thấp nên chốt địa hoàn toàn tự động EA (External Access): Tín hiệu vào EA (chân 31) thường mắc lên mức mức Nếu mức 1, 89S52 thi hành chương trình từ ROM nội Nếu mức 0, 89S52 thi hành chương trình từ nhớ mở rộng Chân EA lấy làm chân cấp nguồn 21V lập trình cho Eprom 89S52 RST (Reset): Khi ngõ vào tín hiệu đưa lên mức cao chu kỳ máy, ghi bên nạp giá trị thích hợp để khởi động hệ thống Khi cấp điện mạch phải tự động reset Các giá trị tụ điện trở chọn là: R1=10Ω, R2=220Ω, C=10 µF Các ngõ vào dao động X1, X2: Bộ tạo dao động tích hợp bên 89S52 Khi sử dụng 89S52, người ta cần nối thêm thạch anh tụ Tần số thạch anh tùy thuộc vào mục đích người sử dụng, giá trị tụ thường chọn 33p Tổ chức nhớ bên 89S52 Bộ nhớ 89S52 bao gồm ROM RAM RAM 89S52 bao gồm nhiều thành phần: phần lưu trữ đa dụng, phần lưu trữ địa hóa bit, bank ghi ghi chức đặc biệt AT89S52 có nhớ tổ chức theo cấu trúc Harvard: có vùng nhớ riêng biệt cho chương trình liệu Chương trình liệu chứa bên 89S52 89S52 kết nối với 64K byte nhớ chương trình 64K byte liệu bên ngồi Bản đồ nhớ Data bên Chip 89S52 tổ chức sau: Địa Địa byte Địa bit byte Địa bit RAM bên AT89S52 phân chia sau: Các bank ghi có địa từ 00H đến 1FH RAM địa hóa bit có địa từ 20H đến 2FH RAM đa dụng từ 30H đến 7FH Các ghi chức đặc biệt từ 80H đến FFH 3.1 RAM đa dụng RAM đa dụng có địa từ 30h – 7Fh truy xuất lần bit cách dùng chế độ định địa trực tiếp hay gián tiếp Các vùng địa thấp từ 00h – 2Fh sử dụng cho mục đích trên, ngồi chức đặc biệt đề cập phần sau 3.2 RAM định địa bit Vùng địa từ 20h -2Fh gồm 16 byte thực vùng RAM đa dụng (truy xuât lần bit) hay thực truy xuất lần bit lệnh xử lý bit 3.3 Các bank ghi Vùng địa 00h – 1Fh chia thành bank ghi: bank từ 00h – 07h, bank từ 08h – 0Fh, bank từ 10h – 17h bank từ 18h – 1Fh Các bank ghi đại diện ghi từ R0 đến R7 Sau khởi động hệ thống bank chọn sử dụng Do có bank ghi nên thời điểm có bank ghi truy xuất ghi R0 đến R7 Viêc thay đổi bank ghi thực thơng qua ghi từ trạng thái chương trình (PSW) 3.4 Các ghi có chức đặc biệt Các ghi 89S52 định dạng phần RAM chip ghi có địa (ngoại trừ ghi đếm chương trình ghi lệnh ghi bị tác động trực tiếp) Cũng R0 đến R7, 89S52 có 21 ghi có chức đặc biệt (SFR: Special Function Register) vùng RAM nội từ địa 80H đến 0FFH Sau vài ghi đặc biệt thường sử dụng: 3.4.1 Thanh ghi trạng thái chương trình (PSW: Program Status Word) BIT SYMBOL ADDRESS DESCRIPTION PSW.7 CY D7H Cary Flag PSW.6 AC D6H Auxiliary Cary Flag PSW.5 F0 D5H Flag PSW4 RS1 D4H Register Bank Select PSW.3 RS0 D3H Register Bank Select 00=Bank 0; address 00H÷ 07H 01=Bank 1; address 08H÷ 0FH 10=Bank 2; address 10H÷ 17H 11=Bank 3; address 18H÷ 1FH PSW.2 OV D2H Overlow Flag PSW.1 - D1H Reserved PSW.0 P DOH Even Parity Flag Chức bit trạng thái chương trình - Cờ Carry CY (Carry Flag):Cờ nhớ thường dùng cho lệnh tốn học: C =1 phép tốn cộng có tràn phép trừ có mượn ngược lại C = phép tốn cộng khơng tràn phép trừ khơng có mượn - Cờ Carry phụ AC (Auxiliary Carry Flag): Khi cộng giá trị BCD (Binary Code Decimal), cờ nhớ phụ AC set kết bit thấp nằm phạm vi điều khiển 0AH - 0FH Ngược lại AC = - Cờ (Flag 0): Cờ (F0) bit cờ đa dụng dùng cho ứng dụng người dùng - Những bit chọn bank ghi truy xuất: RS1 RS0 định dãy ghi tích cực Chúng xóa sau reset hệ thống thay đổi phần mềm cần thiết Tùy theo RS1, RS0 = 00, 01, 10, 11 chọn Bank tích cực tương ứng Bank 0, Bank1, Bank2 Bank3 RS1 RS0 BANK 0 0 1 1 - Cờ tràn OV (Over Flag): Cờ tràn set sau hoạt động cộng trừ có tràn tốn học - Bit Parity (P): Bit tự động set hay Clear chu kỳ máy để lập Parity chẵn với ghi A Sự đếm bit ghi A cộng với bit Parity ln ln chẵn Ví dụ A chứa 10101101B bit P set lên để tổng số bit A P tạo thành số chẵn Bit Parity thường dùng kết hợp với thủ tục Port nối tiếp để tạo bit Parity trước phát kiểm tra bit Parity sau thu 3.4.2 Thanh ghi TIMER Vi Điều Khiển 89S52 có timer 16 bit, timer có bốn cách làm việc Người ta sử dụng timer để: o Định khoảng thời gian o Đếm kiện o Tạo tốc độ baud cho port nối tiếp 89S52 Trong ứng dụng định khoảng thời gian, người ta lập trình timer khoảng đặn đặt cờ tràn timer Cờ dùng để đồng hóa chương trình để thực tác động kiểm tra trạng thái ngõ vào gửi kiện ngõ Các ứng dụng khác sử dụng việc tạo xung nhịp đặn timer để đo thời gian trôi qua hai kiện (ví dụ đo độ rộng xung) 3.4.3 Thanh ghi ngắt (INTERRUPT) Một ngắt xảy điều kiện, kiện mà gây treo tạm thời thời chương trình điều kiện phục vụ chương trình khác Các ngắt đóng vai trị quan trọng thiết kế cài đặt ứng dụng vi điều khiển Chúng cho phép hệ thống đáp ứng bất đồng với kiện giải kiện chương trình khác thực thi - Tổ chức ngắt 89S52: Có nguồn ngắt 89S52: ngắt ngoài, ngắt từ timer ngắt port nối tiếp Tất ngắt theo bị cấm sau reset hệ thống cho phép phần mềm Mức độ ưu tiên ngắt lưu ghi IP (Interrupt Priority) hay nói cách khác ghi IP cho phép chọn mức ưu tiên cho ngắt (giá trị ghi IP reset 00h) Bit Ký hiệu Địa bit Mô tả IP.7 _ _ Không mô tả IP.6 _ _ Không mô tả IP.5 ET2 BDH Chọn mức ưu tiên cao (=1) hay thấp (=0) timer IP.4 ES BCH Chọn mức ưu tiên cao (=1) hay thấp (=0) cổng nối tiếp chân lại dùng để điểu khiển cột Đối với loại 8x8 có màu số chân led 24 chân , có chân dùng để điều khiển cột ( hàng ) chung cho hai màu , 16 chân cịn lại chân dùng để điều khiển hàng ( cột ) màu thứ , chân lại dung để điều khiển màu thứ D IC ULN2803 ULN2803 IC đệm đảo có 16 chân có ngõ vào 8ngõ ra, dứoi hình dạng cấu tạo bên 2803: Bộ đệm đảo dùng IC ULN2803 nhằm đảo bít ngõ vào mức cao qua 2803 mức thấp ngược lại ULN2803 chịu đựng mức điện áp từ 6V15V E Mơ tả tốn qt ma trận led Kết nối AT89S52 với ma trận LED 8x8 hai màu Lập trình hiển thị chữ ma trận LED với hiệu ứng chạy trái… Định hướng giải a Về mặt phần cứng Các chân Anot chung ma trận LED nối chung cách tương ứng Các chân Katot chung ma trận LED điều khiển riêng rẽ Như sau nối ma trận LED 8x8x2 ma trận LED có đường Anot chung 48 đường Katot chung Mạch đệm nguồn cho ma trận LED sử dụng transistor C945 Có đường Anot chung cần sử dụng transistor Mạch đệm cho chân Katot chung sử dụng ghi dịch 74HC595 Mỗi ghi dịch đệm đường Katot chung (1bytes) ma trận LED để đệm cho ma trận LED cần ghi dịch 74HC595 b Về mặt phần mềm: - Tạo liệu cho việc hiển thị: + Căn vào điểm sáng tối ma trận LED để tạo liệu: + Dữ liệu đưa chân Katot ma trận LED, mức logic LED sáng, mức logic LED tối + Ví dụ liệu chữ E: Hiển thị liệu đứng yên: • Ta đặt ma trận LED cho cấp nguồn vào chân Anot chung LED sáng theo hàng Như ma trận ghép lại có hàng 32 cột • Sử dụng phương pháp quét tương tự quét LED Tại thời điểm có hàng cấp nguồn cho LED sáng, hàng khác không cấp Trình tự qt tiến hành sau: • • • • • • Đưa liệu chân Katot để tạo điểm LED sáng tối Cấp nguồn cho hàng tương ứng Trễ sáng thời gian Cắt nguồn để tắt hàng tương ứng Tiếp tục bước với hàng Hiển thị liệu với hiệu ứng dịch trái, phải… Như : Thực tế hiệu ứng dịch trái, phải…là hiển thị tĩnh với liệu khác Dữ liệu hiển thị lưu vùng nhớ tạm gọi vùng Buffer Các bước tiến hành tạo hiệu ứng dịch trái sau: • • • • • Hiển thị tĩnh liệu ma trận LED Trễ sáng thời gian Dịch toàn liệu vùng Buffer sang trái vị trí Hiển thị tĩnh liệu ma trận LED Thực lại từ bước Các bước tiến hành với hiệu ứng khác tương tự, khác thuật toán cập nhật lại liệu F Xây dựng giải thuật chương trình a Hiển thị liệu đứng yên: b: Xử lý hiệu ứng G GIAO TIẾP MÁY TÍNH VỚI VI ĐIỀU KHIỂN AT89S52 Sử dụng giao thức truyền thông nối tiếp UART vi điều khiển AT89s52 sử dụng chip chuyển đổi chuyên dụng từ giao thức UART sang giao thức USB để kết nối máy tính qua cổng USB Chíp PL2303 chip chuyên dụng chuyển đồi từ UART sang USB, cấu sau: tạo Sơ đồ khối bên PL2303 Sơ đồ chân cổng PL2303 Một số chân quan trọng : • • • • • • Chân 1:TXD liệu cổng nối tiếp UART– nối tới vi điều khiển Chân 5:RXD liệu đưa tới cổng nối tiếp UART – nối tới vi điều khiển Chân 20 : cấp nguồn v cho chip hoạt động Chân 21 : nối tới cực âm nguồn Chân 27,28: nối tới thạch anh tạo dao động cho chip hoạt động 12Mhz Chân 15,6: hai chân liệu nối vào cổng USB máy tính để chuyển đổi giao tiếp từ USB sang UART Thiết kế mạch : U17 GND OE DATA LATCH CLOCK 19 10 GND OE DIR A1 A2 A3 A4 A5 A6 A7 A8 VCC B1 B2 B3 B4 B5 B6 B7 B8 VCC 20 EN1 MOSI1 MISO1 SCK1 MOSI MISO SCK VCC VCC 18 17 16 15 14 13 12 11 R2 1K R3 1K RXD1 TXD1 EN1 MOSI1 MISO1 SCK1 D2 R18 VCC GND L 1K LED 40 41 42 43 44 10 11 12 13 RESET XT1 XT2 14 15 74HC245AD GND VCC U18 P1.0 (T2) P1.1 (T2 EX)P1.1 (T2 EX) P1.2 P1.3 P1.4 (MOSI) P1.5 (MISO) P1.6 (SCK) P1.7 P0.0 (AD0) P0.1 (AD1) P0.2 (AD2) P0.3 (AD3) P0.4 (AD4) P0.5 (AD5) P0.6 (AD6) P0.7 (AD7) (RXD) P3.0 (TXD) P3.1 (INT0) P3.2 (INT1) P3.3 (T0) P3.4 (T1) P3.5 (WR) P3.6 (RD) P3.7 P2.7 (A15) P2.6 (A14) P2.5 (A13) (A12) P2.4 (A11) P2.3 (A10) P2.2 (A9) P2.1 (A8) P2.0 XTAL2 XTAL1 16 17 38 EA/VPP ALE/PROG PSEN NC NC NC GND GND VCC Mạch chíp chủ đệm đầu điều khiển ma trận led 12MHz TXD1 TXD DTR_N RTS_N VDD_232 RXD RI_N GND VDD DSR_N DCD_N CTS_N SHTD_N EE_CLK EE_DATA OSC2 OSC1 PLL_TEST GND_PLL VDD_PLL LD_MODE TRI_MODE GND1 VDD1 RESET GND_3V3 VDD_3V3 DM DP 28 27 26 25 24 23 22 21 20 19 18 17 16 15 10p GND +5 10 11 12 13 14 Y1C1 RXD1 C210p VCC +5 C3 0.1u C4 0.1u PL2303 R6 27 R7 27 GND R8GND 1.5K GND VCC DD+ USB Interface 25 24 23 22 21 20 19 18 SCL SDA L B4 B3 B2 B1 RST AT89s52TQFP U19 37 36 35 34 33 32 31 30 J3 GND Mạch chuyển đổi từ USB sang UART dùng chip PL2303 29 27 26 39 28 VCC GND C5 C6 22p XT1 Y2 xxxMHz R12 8k2 J4 RESET C7 10uF XT2 22p GND VCC RESET SCK MISO MOSI VCC GND JUMPER Reset, Clock & Programmer Hình Mạch tạo dao động mạch reset OE LATCH CLOCK 13 12 VCC DATA1 14 GND OE LATCH CLOCK 10 11 VCC DATA0 GND U1 OE RCLK VCC QA QB QC QD QE QF QG QH QH' SRCLR SRCLK SER GND U4 13 74HC595B1R OE VCC 12 RCLK QA 10 SRCLR QB 11 SRCLK QC QD 14 SER QE QF QG QH GND QH' 16 15 VCC U2 DATA2 16 15 VCC GND1 DATA1 74HC595B1R GND IN1 IN2 IN3 IN4 IN5 IN6 IN7 IN8 OUT1 OUT2 OUT3 OUT4 OUT5 OUT6 OUT7 OUT8 GND COM D 18 17 16 15 14 13 12 11 10 U3 11 14 17 20 23 10 15 18 21 24 VCC ULN2803A U5 IN1 IN2 IN3 IN4 IN5 IN6 IN7 IN8 OUT1 OUT2 OUT3 OUT4 OUT5 OUT6 OUT7 OUT8 GND COM D 18 17 16 15 14 13 12 11 C8G H1 C7G H2 C6G H3 C5G H4 C4G H5 C3G H6 C2G H7 C1G H8 C8R C7R 8X8 - 60MM C6R 2COLOUR C5R C4R C3R C2R C1R 22 19 16 13 12 VCC H1 VCC Matrix-8x8-60mm-2colour H2 10 Q1 VCC Q2 ULN2803A U6 OE LATCH CLOCK 13 12 VCC DATA3 14 GND OE LATCH CLOCK 10 11 13 12 VCC DATA2 10 11 14 GND OE RCLK VCC QA QB QC QD QE QF QG QH QH' SRCLR SRCLK SER GND U9 74HC595B1R OE VCC RCLK QA SRCLR QB SRCLK QC QD SER QE QF QG QH GND QH' 16 15 16 15 VCC VCC DATA4 VCC GND1 DATA3 74HC595B1R GND OE LATCH CLOCK 13 12 VCC DATA5 14 GND OE LATCH CLOCK 10 11 13 12 VCC DATA4 10 11 14 GND U11 OE RCLK VCC QA QB QC QD QE QF QG QH QH' SRCLR SRCLK SER GND U14 74HC595B1R OE VCC RCLK QA SRCLR QB SRCLK QC QD SER QE QF QG QH GND QH' 16 VCC 15 VCC 15 DATA5 IN1 IN2 IN3 IN4 IN5 IN6 IN7 IN8 OUT1 OUT2 OUT3 OUT4 OUT5 OUT6 OUT7 OUT8 GND COM D H3 18 17 16 15 14 13 12 11 10 11 14 17 20 23 10 15 18 21 24 VCC ULN2803A U10 IN1 IN2 IN3 IN4 IN5 IN6 IN7 IN8 OUT1 OUT2 OUT3 OUT4 OUT5 OUT6 OUT7 OUT8 GND COM D 18 17 16 15 14 13 12 11 10 GND1 74HC595B1R GND C8G H1 C7G H2 C6G H3 C5G H4 C4G H5 C3G H6 C2G H7 C1G H8 C8R C7R 8X8 - 60MM C6R 2COLOUR C5R C4R C3R C2R C1R 22 19 16 13 12 OE LATCH CLOCK DATA 13 12 VCC 10 11 14 GND OE RCLK VCC SRCLR SRCLK SER GND QA QB QC QD QE QF QG QH QH' VCC 16 15 H1 H2 H3 H4 H5 H6 H7 H8 DATA0 VCC H4 Q4 VCC H5 Matrix-8x8-60mm-2colour VCC Q5 VCC H6 Q6 ULN2803A VCC IN1 IN2 IN3 IN4 IN5 IN6 IN7 IN8 OUT1 OUT2 OUT3 OUT4 OUT5 OUT6 OUT7 OUT8 GND COM D 18 17 16 15 14 13 12 11 10 H7 11 14 17 20 23 10 15 18 21 24 VCC ULN2803A U15 IN1 IN2 IN3 IN4 IN5 IN6 IN7 IN8 OUT1 OUT2 OUT3 OUT4 OUT5 OUT6 OUT7 OUT8 GND COM D 18 17 16 15 14 13 12 11 10 U13 C8G H1 C7G H2 C6G H3 C5G H4 C4G H5 C3G H6 C2G H7 C1G H8 C8R C7R 8X8 - 60MM C6R 2COLOUR C5R C4R C3R C2R C1R 22 19 16 13 12 Matrix-8x8-60mm-2colour VCC ULN2803A VCC VCC VCC VCC U16 Q3 U8 U12 16 U7 R1 R4 R5 R9 1K 1K 1K 1K OE LATCH CLOCK DATA 74HC595B1R Mạch động lực led ma trận Q7 VCC H8 Q8 H CHƯƠNG TRÌNH LẬP TRÌNH #include #define latch P1_6 #define data1 P1_5 #define clock P1_7 #define enable P1_4 char code NUM[]={ // bang ma du lieu 0xFF, 0xDF, 0xAB, 0xAB, 0xAB, 0x87,//a 0xFF, 0x80, 0xB7, 0xBB, 0xBB, 0xC7,//b 0xFF, 0xC7, 0xBB, 0xBB, 0xBB, 0xDF,//c 0xFF, 0xC7, 0xBB, 0xBB, 0xB7, 0x80,//d 0xFF, 0xC7, 0xAB, 0xAB, 0xAB, 0xE7,//e 0xFF, 0xF7, 0x81, 0xF6, 0xFE, 0xFD,//f 0xFF, 0xF3, 0xAD, 0xAD, 0xAD, 0xC3,//g 0xFF, 0x80, 0xF7, 0xFB, 0xFB, 0x87,//h 0xFF, 0xFF, 0xBB, 0x82, 0xBF, 0xFF,//i 0xFF, 0xDF, 0xBF, 0xBB, 0xC2, 0xFF,//j 0xFF, 0x80, 0xEF, 0xD7, 0xBB, 0xFF,//k 0xFF, 0xFF, 0xBD, 0x81, 0xBF, 0xFF,//l 0xFF, 0x83, 0xFB, 0xE7, 0xFB, 0x87,//m 0xFF, 0x83, 0xF7, 0xFB, 0xFB, 0x87,//n 0xFF, 0xC7, 0xBB, 0xBB, 0xBB, 0xC7,//o 0xFF, 0x83, 0xEB, 0xEB, 0xEB, 0xF7,//p 0xFF, 0xF7, 0xEB, 0xEB, 0xE7, 0x83,//q 0xFF, 0x83, 0xF7, 0xFB, 0xFB, 0xF7,//r 0xFF, 0xB7, 0xAB, 0xAB, 0xAB, 0xDF,//s 0xFF, 0xF7, 0xC1, 0xB7, 0xBF, 0xDF,//t 0xFF, 0xC3, 0xBF, 0xBF, 0xDF, 0x83,//u 0xFF, 0xE3, 0xDF, 0xBF, 0xDF, 0xE3,//v 0xFF, 0xC3, 0xBF, 0xCF, 0xBF, 0xC3,//w 0xFF, 0xBB, 0xD7, 0xEF, 0xD7, 0xBB,//x 0xFF, 0xf3, 0xAF, 0xAF, 0xC3, 0xFF,//y 0xFF, 0xBB, 0x9B, 0xAB, 0xB3, 0xBB,//z }; /=================================================== unsigned char toltal [7]={0x55,0x00,0x55,0x00,0xff,0x55,0x00}; char code temp[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; // -unsigned char data_pc[80]={" ***DIEN TU HUY HOANG*** "}; unsigned char data_convert[24]; unsigned char count_data=31,bien24,speed=1; unsigned int origin; unsigned char colour=0; // -void delay(unsigned int x) { while (x ){;} ; } // -void Lay24Byte(unsigned int point) { unsigned char i,k,l=0; unsigned char m = point%6; // byte lai unsigned char n = point/6; // du lieu da lay // -for (k=m;k10) speed =1; if (SBUF =='>')colour ++; if (colour>2)colour=0; } RI=0; } // ) void uart_init(){ // Ham thiet lap truyen thong TMOD = 0x20; // Thiet lap Timer1, che tu nap TH1 = -(0x05); // Thiet lap bau rate = 9600 SCON = 0x50; // 8bit du lieu, start,1 stop TR1 = 1; // Khoi dong bo tao clock (timer 1) } // -void putchar(char a){ TI=0; SBUF= a; while (!TI){}; // Neu co TI =0 thi dung lai TI = 0; // Xoa co TI } // -void HienThi(unsigned char speed) { unsigned char m,k,t,n; for (origin=0;origin