Trong thời kì công nghiệp hoá ngày càng phát triển của đất nước ta.Và nhu cầu của con người ngày càng được cải thiện và nâng cao.khi đó việc áp dụng nền công nghiệp hoá, hiện đại hoá vào sản xuất một điều rất cần thiết và là cả một vấn đề để chúng ta quan tâm.
Phải nói rằng nền công nghiệp hoá,hiện đại hoá đã làm con người đỡ vất vả và tạo điều kiện tốt để nước ta thúc đẩy quá trình hội nhập nền kinh tế thế giới.
Trong nền công nghiệp hoá, hiện đại hoá đó thì lĩnh vực tự động hoá xí nghiệp,công nghiệp cũng đóng góp một phần không nhỏ. Ví dụ như:các băng truyền,băng tải, thang máy.đều áp dụng tự động hoá xí nghiệp để cải tiến và nó đã giúp con người tiết kiệm được sức lao động và có thể thay thế được nhiều công nhân và thuận tiện hơn cho người sử dụng. Các công nghệ đều được điều khiển tự động hóa bằng nhiều phần mềm khác nhau với mục đích chung là giúp con người thuận tiện trong khi làm việc.
Trong đợt thực tập này, sinh viên chúng tôi đã tiếp súc được phần nào với các công nghệ tiên tiến từ các linh kiện điện tử đơn giản như :tụ điện,IC,điốt.,đến các thiết bị tự động có tính năng cao như :OMRON, LOGO và các linh khiện cần thiết cho việc lắp giáp các mạch điện tử.từ đó thấy được rằng, ngoài việc học lý thuyết trên lớp thì việc được thực tập để được tiếp cận với các thiết bị cụ thể là rất quan trọng khi nó giúp cho sinh viên có thêm nhận biết một cách trực quan và thực tế hơn rất nhiều.
Thời gian thực tập tuy ngắn nhưng thực sự tôi đã có được những kinh nghiệm rất quý báu để làm hành trang cho công việc sau này. Tôi chân thành cảm ơn sự giúp đỡ tận tình của thầy Phan Vĩ Phúc và các anh chị của công ty tôi thực tập đã giành cho tôi những bài học quý báu .
43 trang |
Chia sẻ: oanhnt | Lượt xem: 1533 | Lượt tải: 3
Bạn đang xem trước 20 trang tài liệu Đề tài Mạch chạy chữ hiển thị lên màn hình LCD, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
BÁO CÁO THỰC TẬP TỐT NGHIỆP
HỌ VÀ TÊN SINH VIÊN: HỒ MINH TUẤN
LỚP: K10-TC-ĐTVT
KHOA: TRUNG CẤP CHUYÊN NGHIỆP
NGÀNH: ĐIỆN TỬ VIỄN THÔNG
ĐỀ TÀI : “MẠCH CHẠY CHỮ HIỂN THỊ LÊN MÀN HÌNH LCD”
A:NỘI DUNG PHẦN BÁO CÁO
Phần I:Cơ Sở Lý Thuyết
Phần II: giới thiệu các linh kiện-Thiết kế và thi công
Phần III: Kết luận và hướng phát triển
I:Giáo Viên Hướng Dẫn: PHAN VĨ PHÚC
II: Ngày nhận đồ án:Ngày….Tháng….Năm 2010
III: Ngày nộp đồ án: Ngày….Tháng….Năm 2010
Thông Qua Khoa Giáo Viên Hướng Dẫn
Ngày…..Tháng……Năm 2010 (ký và ghi rõ họ tên)
Chủ Nhiệm Khoa
(ký và ghi rõ họ tên)
Đà Nẵng,Ngày…..Tháng…..Năm 2010
Chủ Tịch Hội Đồng
Kết Quả Đánh Giá :…………..
Lời Nói Đầu
Trong thời kì công nghiệp hoá ngày càng phát triển của đất nước ta.Và nhu cầu của con người ngày càng được cải thiện và nâng cao.khi đó việc áp dụng nền công nghiệp hoá, hiện đại hoá vào sản xuất một điều rất cần thiết và là cả một vấn đề để chúng ta quan tâm.
Phải nói rằng nền công nghiệp hoá,hiện đại hoá đã làm con người đỡ vất vả và tạo điều kiện tốt để nước ta thúc đẩy quá trình hội nhập nền kinh tế thế giới.
Trong nền công nghiệp hoá, hiện đại hoá đó thì lĩnh vực tự động hoá xí nghiệp,công nghiệp cũng đóng góp một phần không nhỏ. Ví dụ như:các băng truyền,băng tải, thang máy.....đều áp dụng tự động hoá xí nghiệp để cải tiến và nó đã giúp con người tiết kiệm được sức lao động và có thể thay thế được nhiều công nhân và thuận tiện hơn cho người sử dụng. Các công nghệ đều được điều khiển tự động hóa bằng nhiều phần mềm khác nhau với mục đích chung là giúp con người thuận tiện trong khi làm việc.
Trong đợt thực tập này, sinh viên chúng tôi đã tiếp súc được phần nào với các công nghệ tiên tiến từ các linh kiện điện tử đơn giản như :tụ điện,IC,điốt...,đến các thiết bị tự động có tính năng cao như :OMRON, LOGO và các linh khiện cần thiết cho việc lắp giáp các mạch điện tử...từ đó thấy được rằng, ngoài việc học lý thuyết trên lớp thì việc được thực tập để được tiếp cận với các thiết bị cụ thể là rất quan trọng khi nó giúp cho sinh viên có thêm nhận biết một cách trực quan và thực tế hơn rất nhiều.
Thời gian thực tập tuy ngắn nhưng thực sự tôi đã có được những kinh nghiệm rất quý báu để làm hành trang cho công việc sau này. Tôi chân thành cảm ơn sự giúp đỡ tận tình của thầy Phan Vĩ Phúc và các anh chị của công ty tôi thực tập đã giành cho tôi những bài học quý báu .
Chương 1
Cơ Sở Lý Thuyết
I. GIỚI THIỆU VỀ CÁC HỌ VI XỬ LÝ VÀ CÁC HỌ VI ĐIỀU KHIỂN THÔNG DỤNG
1.1. Lịch sử phát triển của bộ vi xử lý và bộ vi điều khiển.
Sự ra đời và phát triển nhanh chóng của kỹ thuật vi điện tử mà đặc trưng là kỹ thuật vi xử lý đã tạo ra một bước ngoặt quan trọng trong sự phát triển của khoa học tính toán, điều khiển và xử lý thông tin.
- Năm 1971, hãng Intel đã cho ra đời bộ vi xử lý (microprocessor) đầu tiên trên thế giới tên gọi là Intel-4004, nhằm đáp ứng nhu cầu cấp thiết của một công ty kinh doanh là hãng truyền thông BUSICOM.
Sau đó các bộ vi xử lý mới liên tục được đưa ra thị trường và ngày càng được phát triển, hoàn thiện hơn trong các thế hệ sau:
- Năm 1971, hãng Intel đưa ra bộ vi xử lý 8 bit đầu tiên với tên Intel-8008.
-Năm 1975, Intel chế tạo bộ vi xử lý 8 bit 8088 và 8085.
Cũng vào khoảng thời gian 1975, một loạt các hãng khác trên thế giới cũng đã giới thiệu các bộ vi xử lý tương tự: 6800 của Motorola với 5000 tranzitor, Signetics 6520, 1801 của RCA, kế đến là 6502 cùa hãng MOS Technology và Z80 của hãng Zilog.
Vào năm 1976 Intel giới thiệu bộ vi điều khiển (microcontroller) 8748, một chip tương tự như các bộ vi xử lý và là chip đầu tiên trong họ vi điều khiển MCS- 48. 8748 là một vi mạch chứa trên 17000 Transistor, bao gồm một CPU, 1K byte EPRAM, 64 byte RAM, 27 chân nhập xuất và một bộ định thời 8 bit.
-Năm 1978 xuất hiện Intel 8086 là loại bộ vi xử lý 16 bit với 29.000 tranzitor, Motorola 68.000 tích hợp 70.000 tranzitor, APX 432 chứa 120.000 tranzitor. Bộ vi xử lý của Hewlet Pakard có khoảng 450.000 tranzitor. Từ năm 1974 đến 1984 số tranzitor tích hợp trong một chip tăng khoảng 100 lần.
- Năm 1983, Intel đưa ra bộ vi xử lý 80268 dùng trong các máy vi tính họ AT ( Advanced Technology). Chip này sử dụng I/O 16 bit, 24 đường địa chỉ và không gian nhớ điạ chỉ thực 16 MB.
- Năm 1987,Intel đưa ra bộ vi xử lý 80386 32-bit.
- Năm 1989 xuất hiện bộ vi xử lý Intel 80486 .
- Năm 1992 đến nay , xuất hiện Intel 80586 còn gọi là Pentium 64 bit chứa 4 triệu tranzitor.
Hiện nay Intel không còn cung cấp các loại vi điều khiển họ MCS-51 nữa, thay vào đó các nhà sản xuất khác như Atmel, Philips/signetics, AMD, Siemens, Matra&Dallas, Semiconductors được cấp phép làm nhà cung cấp thứ hai cho các chip của họ
MCS-51.
Độ phức tạp, sự gọn nhẹ về kích thước và khả năng của các bộ vi điều khiển được tăng thêm một bậc quan trọng vào năm 1980 khi Intel công bố chip 8051, bộ vi điều khiển đầu tiên của họ vi điều khiển MCS-51.
Từ các bộ vi xử lý ban đầu chỉ là các bộ xử lý trung tâm trong một hệ thống, không thể hoạt động nếu thiếu các bộ phận như Ram, ROM, bo mạch chủ… Các hãng đã phát triển các bộ vi xử lý này lên thành các bộ vi điều khiển để phục vụ các mục đích riêng biệt, khác nhau trong công nghiệp.
Một bộ vi điều khiển là một hệ vi xử lý thật sự được tổ chức trong một chip (trong một vỏ IC) bao gồm một bộ vi xử lý (microprocesseor), bộ nhớ chương trình (ROM), bộ nhớ dữ liệu (RAM), tuy không bằng dung lượng RAM ở các máy vi tính nhưng đây không phải là một hạn chế vì các bộ vi điều khiển được thiết kế cho mục đích hoàn toàn khác, ngoài ra trên chip còn có bộ xử lý số học-logic (ALU) cùng với các thanh ghi chức năng, các cổng vào/ra, cơ chế điều khiển ngắt, truyền tin nối tiếp, các bộ định thời.
1.2. Ưu và khuyết điểm của các bộ vi điều khiển.
Các công việc được thực hiện bởi các bộ vi điều khiển thì không mới. Điều mới là các thiết kế hiện thực với ít thành phần hơn so với các thiết kế trước đó. Các thiết kế trước đó đòi hỏi phải vài chục hoặc vài trăm IC để thực hiện nay chỉ cần một ít thành phần trong đó bao bộ vi điều khiển. Số thành phần được giảm bớt, hiệu quả trực tiếp của tính khả lập trình của các bộ vi điều khiển và độ tích hợp cao trong công nghệ chế tạo vi mạch, thường chuyển thành thời gian phát triển ngắn hơn, giá thành khi sản xuất thấp hơn, công suất tiêu thụ thấp hơn và độ tin cậy cao hơn.
Vấn đề ở đây là tốc độ. Các giải pháp dựa trên bộ vi điều khiển không bao giờ nhanh bằng giải pháp dựa trên các thành phần rời rạc. Những tình huống đòi hỏi phải đáp ứng thật nhanh (cỡ nsec) đối với các sự kiện (thường chiếm thiểu số trong các ứng dụng) sẽ được quản lý tồi khi dựa vào các bộ vi điều khiển.
Tuy nhiên trong vài ứng dụng, đặc biệt là các ứng dụng liên quan đến con người, các khoảng thời gian trễ tính bằng nsec, µsec hoặc thậm chí msec là không quan trọng. Việc giảm bớt các thành phần là một điều lợi như đã đề cập, các thao tác trong chương trình điều khiển làm cho thiết kế có thể thay đổi bằng cách thay đổi phần mềm. Điều này có ảnh hưởng tối thiểu đến chu kỳ sản xuất. Do đó các bộ vi điều khiển có thể được ứng dụng rộng rãi trong các ứng dụng phục vụ con người.
Để có thể hiểu rõ hơn về các bộ vi điều khiển, chúng ta sẽ tìm hiểu về một số các họ vi điều khiển của một số hãng điện tử điển hình đang được sử dụng rộng rãi trong khoa học kỹ thuật và đời sống.
Chương II
giới thiệu các linh kiện-Thiết kế và thi công
1.1Giới thiệu họ MSC-51: MCS-51 là họ IC vi điều khiển do hãng I ntel sản xuất. Các IC tiêu biểu cho họ là 8051 và 8031. Các sản phẩm MSC-51 thích hợp cho những ứng dụng điều khiển. Việc xử lý trên Byte và các toán số học ở cấu trúc dữ liệu nhỏ được thực hiện bằng nhiều chế đọ truy xuất dữ liệu nhanh trên RAM nội. AT89C51 cung cấp nhungx đặc tính chuẩn như sau : 4 KB bộ nhớ chỉ đọc có thể xóa và lập trình nhanh (EPROM), 128 Byte RAM, 32 đường I/O, 2 TIMER/COUNTER 16 Bit, vecto ngắt có cấu trúc 2 mức ngắt, một Port nối tiếp bán song công, 1 mạch dao động tạo xung Clock và dao động ON-CHIP. Thêm vào đó, AT89C51 được thiết kế với logic tĩnh cho hoạt động đến mức không tần số và hỗ trợ hai phần mềm có thể lựa chọn những chế độ tiết kiện công suất, chế độ chờ (IDLE MODE) sẽ dừng CPU trong khi vẫn cho phép RAM, timer/counter, port nối tiếp và hệ thống ngát tiếp tục hoạt động. Chế độ giảm công suất sẽ lưu nội dung RAM những sẽ treo bộ dao động làm khả năng hoạt động của tất cả những chức năng khác cho đến khi Reset hệ thống.
1.2 Sơ đồ khối của AT89C51 :
1. 3 Sơ đồ chân của AT89C51
1.4Chức năng các chân của AT89C51-89C51cos tất cả 40 chaancos chức năng như các đường xuất nhập. trong đó có 24 chân có tác dụng kép (có nghĩa 1 chân có 2 chức năng), mỗi dường có thể hoạt động như đường xuất nhập hoặc như đường điều khiển hoặc là thành phần của các bus dữ liệu và bus địa chỉ.a/.Các port:Port 0:Port 0 là port có hai chức năng ở các chân 32-39 của 89C51. trong các thiết kế cỡ nhỏ không dùng bộ nhớ mở rộng, nó có chức năng như các đường IO. Đối với các thiết kế cỡ lớn có bộ nhớ mở rộng, nó được kết hợp giữa bus địa chỉ và bus dữ liệu.b/.Port 1:-port 1 là port IO trên các chân 1-8. các chân được kí hiệu p1.0, p1.1, p1.2, có thể dùng cho giao tiếp với các thiết bị ngoài nếu cần. port 1 không có chức năng khác, vì vậy chúng chỉ được dùng cho giao tiếp với các thiết bị bên ngoài.c/.Port 2:-port 2 là 1 port có tác dụng kép trên các chân 21-28 được dùng như các đường xuất nhập hoặc là byte cao của bus địa chỉ đối với các thiết bị dùng bộ nhớ mở rộng.d/.Port 3:Port 3 là port có tác dụng kép trên các chân 10-17. các chân của port này có nhiều chức năng, các công dụng chuyển đổi có liên hệ với các đặc tính dặt biệt của 89C51 như ở bản sau:
* Các ngõ tín hiệu điều khiển: Ngõ tín hiệu PSEN:- PSEN là tín hiêu ngõ ra ở chân 29 có tác dụng cho phép đọc bộ nhớ chương trình mở rộng thường được nói đén chân OE của Eprom cho phép đọc các byte mở rộng .- PSEN ở mức thấp trong thời gian Microcontroller 8951 lấy lệnh. Các mã lệnh của chương trình được đọc từ Eprom qua bus dữ liệu và được chốt từ thanh ghi lệnh bên trong 8951 để giải mã lệnh. Khi 8951 thi hành chương trình trong ROM nội PSEN sẽ ở mức logic 1. Ngõ tín hiệu điều khiển ALE(Address latch Enable):- Khi 89C51 truy xuất bộ nhớ bên ngoài, port 0 có chức năng là bus địa chỉ và bus dữ liệu do đó phải tách các đường dữ liệu và địa chỉ. Tín hiệu ra ALE ở chân thứ 30 dùng làm tín hiệu điều khiển để giải đa hợp các đường địa chỉ và dữ liệu khi kết nối chúng với IC chốt.- Tín hiệu ra ở chân ALE là một xung trong khoảng thời gian port 0 dóng vai trò là địa chỉ thấp nên chốt địa chỉ hoàn toàn tự động.- Bộ dao động được tích hợp bên trong 89C51, khi sử dungj89C51 người thiết kế chỉ cần kết nối thêm thạch anh và các tụ như hình vẽ trong sơ đồ. Tần số thạch anh thường sử dụng cho 89C51 là 12Mhz.- Chân 40 (vcc)được nối lên nguồn.các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động trên chíp và có thể được dùng làm tín hiệu clock cho các phần khác của hệ thống. chân ALE được dùng làm ngõ vào xung lập trình cho Eprom trong 89C51. Ngõ tín hiệu EA\(External Access):- Tín hiệu vào EA\ ở chân 31 thường được mất lên mức 1 hoặc mức 0. nếu ở mức 1, 89C51 thi hành chương trình từ ROM nội trong khoảng địa chỉ thấp 8KB. Nếu ở mức 0, 89c51 sẽ thi hành chương trình từ bộ nhớ mở rộng. chân EA\ được lấy làm chân cấp nguồn 21V khi lập trình cho Eprom trong 89c51. Ngõ tín hiệu RST (Reset):- Ngõ vào RST ở chân 9 là ngõ vào reset của 89C51. khi ngõ vào tín hiệu này đưa lên cao ít nhất là 2 chu kỳ máy, các thanh ghi bên trong được nạp những giá trị thích hợp để khởi động hệ thống. khi cấp điện mạch tự động Reset. Các ngõ vào bộ dao động X1, X2:nguồn 5V .
2.Giới thiệu cách lấy linh kiện • Bước 1: Click vào biểu tượng trên thanh công cụ,
tiếp theo click vào chữ P,ta sẽ thấy một bảng sau:
Pick Device/Symbol từ Menu lệnh hoặc chọn Library
Hoặc ta có thể bấm phím P trên bàn phím.
• Bước 2: Chọn linh kiện 80C51 như sau:
Nhấp đúp vào dòng chữ 80C51, ta sẽ thấy:
Sau đó nhấp vào chữ 80C51, ta được:
Sau đó, chúng ta nhấp chột trái vào vùng đặt linh kiện thì chip 80C51 sẽ hiện ra:
Tương tự cho tụ điện, thạch anh, LCD…
Ta nhấn phím P trên bàn phím, sau đó, gõ vào keywords từ capacitor, crystal, LCD…
Ta chọn LCD 14 chân:
• Bước 3: Ta chọn nguồn và mass bằng cách:Click vào biểu tượng: trên thanh công cụ,
Thì hộp thoại sau xuất hiện:
Ta sẽ chọn nguồn khi click vào Power, mass khi click vào Ground.
Đến đây ta sẽ có:
-Nếu chúng ta muốn xoay linh kiện thì ta nhấn vào biểu tượng: thì các linh kiện sẽ xoay theo ý muốn của ta.
3. Mô tả về LCDTrong những năm gần đây LCD đang ngày càng được sử dụng rộng rãi thay thế dần các đèn Led.Mô tả các chân, loại 14 chân.-VCC: cấp nguồn dương-VSS: cấp nguồn âm-VEE: điều khiển độ tương phản của LCD-Chân chọn thanh ghi RS( Register Select)Có hai thanh ghi rất quan trọng trong LCD, chân RS được dùng để chọn thanh ghi này như sau: Nếu RS =0 thì thanh ghi mà lệnh được chọn để cho phép người dùng gửi một lệnh chẳng hạn như xóa màn hình, đưa con trỏ về đầu dòng…Nếu RS=1 thì thanh ghi dữ liệu được chọn cho phép người dùng gửi dữ liệu cần hiển thị trên LCD.-Chân đọc/ghi (R/W)Đầu đọc/ghi cho phép người dùng ghi thông tin lên LCD khi R/W=0 hoặc đọc thông tin từ nó khi R/W=1-Chân cho phép E (Enable)Chân cho phép E được sử dụng bởi LCD để chốt thông tin hiện hữu trên chân dữ liệu của nó. Khi dữ liệu được cung cấp đến chân dữ liệu thì một xung mức cao xuống thấp phải được áp đến chân này để LCD chốt dữ liệu trên các chân dữ liệu. Xung này phải rộng tối thiểu là 450 ns.-Chân D0~D7:Đây là 8 chân dữ liệu 8 bit, được dùng để gửi thông tin trên LCD hoặc đọc nội dung của các thanh ghi trong LCD.Để hiển thị các chữ cái và các con số, chúng ta gửi các mã ASCII của các chữ cái từ A đến Z, a đến f và các con số từ 0~9 đến các chân này khi bật RS=1Cũng như các mã lệnh mà có thể được gửi đến LCD để xóa màn hình hoặc đưa con trỏ về vị trí đầu dòng hoặc nhấp nháy con trỏ.Chúng ta cũng sử dụng RS=0 để kiểm tra bit cờ bận để xem LCD có sẵn sàng nhận thông tin. Cờ bận là D7 và có thể được đọc khi R/W=1 và RS=0 như sau:Nếu R/W=1, RS=0 khi D7=1(cờ bận 1) thì LCD bận bởi các công việc bên trong và sẽ không nhận bất kì thông tin mới nào. Khi D7 thì LCD sẵn sàng nhận thông tin mới. Lưu ý chúng ta nên kiểm tra cờ bận trước khi ghi bất khì dữ liệu nào lên LCD
Chân
Kí hiệu
I/O
Mô tả
1
VSS
-
Đất
2
VCC
-
Dương 5V
3
VEE
-
Cấp nguồn điều khiển phản
4
RS
I
RS=0 chon thanh ghi lệnh. RS=1 chọn thanh ghi dữ liệu.
5
R/W
I
R/W=1 đọc dữ liệu. R/W=0 ghi
6
E
I/O
Cho phép
7
DB0
I/O
Các bit dữ liệu
8
DB1
I/O
Các bit dữ liệu
9
DB2
I/O
Các bit dữ liệu
10
DB3
I/O
Các bit dữ liệu
11
DB4
I/O
Các bit dữ liệu
12
DB5
I/O
Các bit dữ liệu
13
DB6
I/O
Các bit dữ liệu
14
DB7
I/O
Các bit dữ liệu
Các mã lệnh LCD
Mã Hex
Lệnh đến thanh ghi của LCD
1
Xóa màn hình hiển thị
2
Trở về đầu dòng
4
Giảm con trỏ (dịch con trỏ sang trái)
5
Tăng con rỏ (dịch con trỏ sang phải)
6
Dịch hiển thị sang phải
7
Dịch hiển thị sang trái
8
Tắt con trỏ, tắt hiển thị
A
Tắt hiển thị, bật con trỏ
C
Bật hiển thị, tắt con trỏ
E
Bật hiển thị, nhấp nháy con trỏ
F
Tắt hiển thị, nhấp nháy con trỏ
10
Dịch vị trí con trỏ sang trái
14
Dịch vị trí con trỏ sang phải
18
Dịch toàn bộ hiển thị sang trái
1C
Dịch toàn bộ hiển thị sang phải
80
Ép con trỏ Vũ đầu dòng thứ nhất
C0
Ép con trỏ Vũ đầu dòng thứ hai
38
Hai dòng ma trận
4. Sơ đồ giao tiếp Cách nối dây:Nhấn vào biểu tượng , tiến hành nối bằng cách nhấp chuột vào chân linh kiện và rê đến chỗ cần nối. muốn tạo đường bus thì nhấn vào biểu tượng
Sau khi nối hoàn chỉnh bản vẽ sẽ tương tự như sau:
5.Chương trình mô phỏng
; DO AN TOT NGHIEP
; Timing code assumes 1.2MHz Clock
;LCD Registers addresses
LCD_CMD_WR equ 0
LCD_DATA_WR equ 1
LCD_BUSY_RD equ 2
LCD_DATA_RD equ 3
;LCD Commands
LCD_CLS equ 1
LCD_HOME equ 2
LCD_SETMODE equ 4
LCD_SETVISIBLE equ 8
LCD_SHIFT equ 16
LCD_SETFUNCTION equ 32
LCD_SETCGADDR equ 64
LCD_SETDDADDR equ 128
;Vi tri chuong trinh nhay den khi reset
org 0000h
jmp start ;nhay den chuong trinh chinh
;Bat dau chuong trinh chinh
org 0100h
string1a:db ' !!XIN CHAO!! '
db 0
string1b:db '!! XIN CHAO !! '
db 0
string2:db ' tat ca cac ban... '
db 0
string3:db ' Day la tieu luan '
db 0
string4:db ' cua MINH TUAN !'
db 0
string5:db 'Em ten la:'
db 0
string6:db '*HO MINH TUAN*'
db 0
string7:db '*Ma So Sinh Vien*'
db 0
string8: db ' 140135180 '
db 0
string9: db ' Lop K10TC-DTVT'
db 0
string10: db 'Truong DH DUY TAN'
db 0
string11: db 'TP DA NANG.'
db 0
string12: db 'Em chan thanh'
db 0
string13: db 'cam on thay:'
db 0
string14: db '*PHAN VI PHUC*'
db 0
string15: db 'da giup do em'
db 0
string16: db 'thuc hien tieu'
db 0
string17: db 'luan nay!!'
db 0
string18: db 'Cam on cac ban da'
db 0
string19: db 'quan tam theo doi'
db 0
string20: db ' $THE_END$ '
db 0
string22: db 'De tai: Chay chu ',0
string23: db 'Tren man hinh LCD'
db 0
string24: db ' ung dung IC 8051'
db 0
string25: db 'mo phong bang'
db 0
string26: db 'phan mem Proteus '
db 0
start: mov A,#038h ;Gui lenh 038h den LCD thong bao LCD su dung BUS 8bit
call wrcmd ;goi chuong trinh con gui lenh
loop: mov A,#LCD_SETVISIBLE+6 ;gui lenh 0Eh vao LCD de LCD duoc kich hoat:
call wrcmd ;goi chuong trih con gui lenh
mov R7,#2 dua 2 vao r7 de thuc hien 2 lan vong lap
loop2:
mov DPTR,#string1a ;dua dong chu 1a vao con tro dia chi
call wrstr ;goi chuong trinh con xuat dong chu toi lcd
mov DPTR,#200 ;dua 200 vao con tro dia chi de thuc hien viec doi 200ms
call wtms ;Goi chuong trinh con doi 200ms
mov A,#LCD_CLS ;xoa man hinh lcd
mov DPTR,#string1b
call wrstr
mov DPTR,#200
call wtms
mov A,#LCD_CLS ; xoa man hinh lcd
call wrcmd
djnz R7,loop2 ; lap lai 2 lan
mov DPTR,#string1a
call wrstr
mov DPTR,#400
call wtms
mov A,#LCD_SETDDADDR+64 ; dua gia tri lenh 40h
call wrcmd
mov DPTR,#string2
call wrslow
mov DPTR,#200
call wtms
mov A,#LCD_CLS ;Clear screen
mov A,#LCD_SETDDADDR+64 ; dua gia tri lenh 40h vao a
call wrcmd
mov A,#LCD_CLS ;Clear screen
call wrcmd
mov DPTR,#string3
call wrslow
mov A,#LCD_SETDDADDR+64 ;dua gia tri lenh 0fh vao a
call wrcmd
mov DPTR,#string4
call wrslow
mov A,#LCD_CLS
mov A,#LCD_SETDDADDR+64
call wrcmd
mov A,#LCD_CLS
call wrcmd
mov DPTR,#string5
call wrslow
mov A,#LCD_SETDDADDR+64
call wrcmd
mov DPTR,#string6
call wrslow
mov A,#LCD_CLS
mov A,#LCD_SETDDADDR+64
call wrcmd
mov A,#LCD_CLS
call wrcmd
mov DPTR,#string7
call wrslow
mov A,#LCD_SETDDADDR+64
call wrcmd
mov DPTR,#string8
call wrslow
mov A,#LCD_CLS
mov A,LCD_SETDDADDR+64
call wrcmd
mov A,#LCD_CLS
call wrcmd
mov DPTR,#string9
lcall delay1
mov DPTR,#string10
lcall delay1
mov DPTR,#string11
lcall delay1
mov DPTR,#string22
lcall delay1
mov DPTR,#string23
lcall delaylc
mov DPTR,#string24
lcall delay1
mov DPTR,#string25
lcall delaylc
mov DPTR,#string26
acall delay1
mov DPTR,#string12
lcall delay1
mov DPTR,#string13
lcall delaylc
mov DPTR,#string14
lcall delay1
mov DPTR,#string15
lcall delaylc
mov DPTR,#string16
lcall delay1
mov DPTR,#string17
lcall delaylc
mov DPTR,#string18
lcall delay1
mov DPTR,#string19
lcall delaylc
mov R7,#20
loop1:
mov DPTR,#string20
call wrstr
mov DPTR,#1000
call wtms
mov A,#LCD_CLS ;Clearscreen
call wrcmd
mov DPTR,#string20
call wrstr
mov DPTR,#1000
call wtms
mov A,#LCD_CLS ;Clear screen
call wrcmd
djnz R7,loop1
mov DPTR,#string20
call wrstr
mov DPTR,#400
call wtms
mov A,#LCD_SETDDADDR+64
call wrcmd
;*******************************************
mov A,#LCD_SETVISIBLE+7;Show theblink cursor as well.
call wrcmd
mov DPTR,#2000
call wtms
mov A,#LCD_CLS ;Clear screen
call wrcmd
jmp loop
;chuong trinh con viet chuoi ky tu trong DPTR
wrstr: mov R0,#LCD_DATA_WR
wrstr1: clr A
movc A,@A+DPTR
jz wrstr2
movx @R0,A
call wtbusy
inc DPTR
push DPL
pu