Báo cáo đồ án LED ma trận chạy chữ sử dụng KEIL C uVision 5 Trong sự phát triển của kỹ thuật điện tử ngày nay, kỹ thuật số đang dần chiếm ưu thế về số lượng các ứng dụng của nó trên nhiều thiết bị điện tử từ dân dụng cho đến chuyển động, trong nhiều lĩnh vực như đo lường, điều khiển, v.v… nhờ vào nhiều ưu điểm của nó. Có thể nói, nền tảng của kỹ thuật số là các mạch logic, dựa trên sự kết hợp của các cổng logic cơ bản mà ngày nay đã được tích hợp trong các IC. Các mạch logic sử dụng ma trận LED để hiển thị thông tin nhằm mục đích thông báo, quảng cáo,… tại các nơi công cộng được sử dụng rộng rãi và phổ biến. Việc thiết kế hoàn thiện một mạch quảng cáo cần nhiều công sức cũng như kiến thức nhất định. Trong khuôn khổ đề tài, trên cơ sở những kiến thức đã học được trong quá trình học, chúng em thống nhất và đi đến quyết định thiết kế một mạch điện tử với đề tài: MẠCH HAI LED MA TRẬN CHẠY CHỮ ĐƠN GIẢN, ĐA DỤNG – 89S52 LẬP TRÌNH KEIL UVISION 5. Mục đích của đề tài là tìm hiểu thêm về lĩnh vực kỹ thuật số, nâng cao kiến thức của mình.
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC VINH
ĐỒ ÁN 2
Đề tài: MẠCH HAI LED MA TRẬN CHẠY CHỮ ĐƠN GIẢN,
ĐA DỤNG – 89S52 LẬP TRÌNH KEIL UVISION 5
Giảng viên hướng dẫn: TS Nguyễn Thị Kim Thu
Sinh viên thực hiện: 1 Phùng Thanh Phương (NT)
MSSV: 1755252020700004
2 Hoàng Bình Minh MSSV:1755252020700001
Nghệ An, 2021
Trang 2M C L C Ụ Ụ
MỤC LỤC 2
LỜI MỞ ĐẦU 1
CHƯƠNG 1: ĐẶT VẤN ĐỀ VÀ NHIỆM VỤ 2
CHƯƠNG 2: TỔNG QUAN VỀ PHƯƠNG PHÁP ĐIỂU KHIỂN LED MA TRẬN .4
CHƯƠNG 3: GIỚI THIỆU VỀ NGÔN NGỮ C VÀ PHẦN MỀM KEIL C 15
CHƯƠNG 4: THIẾT KẾ VÀ TIẾN HÀNH LẮP RÁP 24
TÀI LIỆU THAM KHẢO 43
Trang 3LỜI MỞ ĐẦU
Trong sự phát triển của kỹ thuật điện tử ngày nay, kỹ thuật số đang dần chiếm
ưu thế về số lượng các ứng dụng của nó trên nhiều thiết bị điện tử từ dân dụng chođến chuyển động, trong nhiều lĩnh vực như đo lường, điều khiển, v.v… nhờ vàonhiều ưu điểm của nó Có thể nói, nền tảng của kỹ thuật số là các mạch logic, dựatrên sự kết hợp của các cổng logic cơ bản mà ngày nay đã được tích hợp trong các
IC Các mạch logic sử dụng ma trận LED để hiển thị thông tin nhằm mục đíchthông báo, quảng cáo,… tại các nơi công cộng được sử dụng rộng rãi và phổ biến.Việc thiết kế hoàn thiện một mạch quảng cáo cần nhiều công sức cũng nhưkiến thức nhất định Trong khuôn khổ đề tài, trên cơ sở những kiến thức đã họcđược trong quá trình học, chúng em thống nhất và đi đến quyết định thiết kế mộtmạch điện tử với đề tài: MẠCH HAI LED MA TRẬN CHẠY CHỮ ĐƠN GIẢN,
ĐA DỤNG – 89S52 LẬP TRÌNH KEIL UVISION 5 Mục đích của đề tài là tìmhiểu thêm về lĩnh vực kỹ thuật số, nâng cao kiến thức của mình
Do kiến thức còn hạn hẹp và thời gian thực hiện không nhiều nên đề tài củachúng em còn rất nhiều sai sót, hạn chế Mặc dù đã cố gắng phần nào thiết kế vàtính toán chi tiết các mạch, các thông số nhưng đôi khi còn mang tính lý thuyết,chưa thực tế chúng em mong có sự giúp đỡ và sửa chữa để đề tài có tính khả thihơn về cả phương diện kinh tế cũng như kỹ thuật
Em xin tỏ lòng biết ơn đến cô giáo Nguyễn Thị Kim Thu đã hỗ trợ cho chúng
em trong việc lựa chọn đề tài cũng như hướng dẫn chúng em trong suốt quá trìnhthực hiện đồ án Em đã nhận được rất nhiều lời khuyên bổ ích cũng như những kiếnthức về chuyên môn đáng quý Đây là những kiến thức sẽ theo em trong suốt quátrình làm việc sau này
Em xin chân thành cảm ơn!
Trang 4CHƯƠNG 1: ĐẶT VẤN ĐỀ VÀ NHIỆM VỤ
1.1 Đặt vấn đề
Quang báo là hình thức thông báo trên bảng đèn Bảng đèn quang báo gồmnhiều ma trận LED ghép lại, mỗi một ma trận biểu diễn một kí tự Tùy chiều dàicủa bảng đèn mà có thể hiển thị những bản tin có độ dài khác nhau Với sự ra đờicủa máy tính điện tử đặc biệt là máy vi tính, chúng có những tính năng ưu việt nhưkhả năng xử lí dữ liệu nhanh chóng, độ tin cậy cao, lưu trữ lượng thông tin lớn vàquan trọng hơn cả là máy tính có thể kết hợp với nhiều thiết bị ngoại vi tùy theomục đích ứng dụng cụ thể, mà việc trao đổi và điều khiển trở nên đơn giản, chúngphụ thuộc vào phần mềm điều khiển Dựa vào tính đa dạng và mềm dẻo của máytính, người ta tìm cách ứng dụng nó vào mục đích quảng cáo, chẳng hạn như dùngtrong quang báo Nhờ vậy, việc thiết kế phần cứng cho quang báo trở thành ít phứctạp hơn, nhưng độ tin cậy cao hơn Trong thực tế để hiển thị các văn bản, người tathường dùng các kiểu chữ là các Ma Trận LED 8x32, 8x12, 8x14 tùy thuộc vàomục đích sử dụng và độ phân giải
Trên thị trường có nhiều hệ thống quang báo dùng các loại LED khác nhau nhưled 7 thanh, led đơn, led ma trận… Trong khuôn khổ đề tài, chúng em chỉ giới thiệu
về mạch mô phỏng hệ thống chạy chữ sử dụng led ma trận
Bảng hiển thị ma trận LED (dot – matrix display) có rất nhiều loại và đủ kích
cỡ to nhỏ khác nhau, mỗi bảng gồm có rất nhiều LED đơn được ghép lại với nhauthành một khối Trong khối đó các LED đơn được sắp xếp theo các hàng và các cột,tại mỗi giao điểm của hàng và cột là một LED đơn, và người ta thường phân biệtcác loại bảng LED theo số hàng và cột một bảng LED 5x7 tức là có 5 cột dọc và 7hàng ngang, tổng cộng sẽ có 5x7=35 led đơn được ghép lại Trong đề tài này chúng
em sử dụng 2 LED ma trận 8x8 tức là có 8 hàng và 16 cột, do đó có 8x16=128 ledđơn ghép lại
Trang 51.2 Tầm quan trọng của đề tài
- Đây là một đề tài nghiên cứu mang tính thực tiến trong việc vận dụng các kiếnthức đã được học vào trong thực tế
- Về mặt khoa học, đề tài sẽ giúp cho nhóm sinh viên thực hiện hiểu rõ thêm vềcấu tạo led ma trận và nguyên lí điều khiển led ma trận trong thực tế
- Về mặt thực tiễn, đề tài này có thể áo dụng vào thực tế để thiết kế các hệthống quảng cáo bằng các phương pháp khác nhau như giao tiếp máy tính,điều khiển từ xa,…
1.3 Đối tượng nghiên cứu
Đối tượng nghiên cứu của đề tài này chính là:
- Cách thức giao tiếp giữa vi điều khiển và led ma trận
- Cách thức giao tiếp giữa vi điều khiển và ma trận phím
- Cách lập trình cho vi điều khiển để lưu dữ liệu và hiển thị lên led ma trận
Trang 6CHƯƠNG 2: TỔNG QUAN VỀ PHƯƠNG PHÁP ĐIỂU KHIỂN LED MA TRẬN
2.1 Khái niệm chung về LED
1993, công ty hoá chất Nichia của Nhật Bản cho ra đời loại đèn LED xanhdương, là sự kết hợp giữa ánh sáng đỏ và xanh lá cây để cho ra ánh sáng trắng
Sự kiện này đã mở ra một lĩnh vực mới về công nghệ LED Đèn LED dựa trêncông nghệ bán dẫn ngày càng tăng về độ chiếu sáng, hiệu suất và tuổi thọ, giốngnhư bộ xử lý của máy tính, phát triển ngày càng nhanh và giá thành ngày cànggiảm theo thời gian
- Những năm 1960: Phát minh ra đèn Led ánh sáng đỏ
- Những năm 1970: Phát minh ra Led 7 đoạn
- Những năm 1980: Phát minh ra led xanh lá cây
- Những năm 1990: Phát minh ra led xanh dương là cơ sở để phát triển đèn ledánh sáng trắng
- Những năm 2000: Thời điểm bùng nổ đèn Led chiếu sáng
2.1.2 Khái niệm về LED
LED (viết tắt của Light Emitting Diode, có nghĩa là diode phát quang) là cácđiốt có khả năng phát ra ánh sáng hay tia hồng ngoại, tử ngoại Cũng giống như
Trang 7điốt, LED được cấu tạo từ một khối bán dẫn loại p ghép với một khối bán dẫnloại n.
2.1.3 Hoạt động của đèn LED
Hoạt động của đèn LED giống với nhiều loại điốt bán dẫn Khối bán dẫn loại
p chứa nhiều lỗ trống tự do mang điện tích dương nên khi ghép với khối bán dẫn
n (chứa các điện tử tự do) thì các lỗ trống này có xu hướng chuyễn động khuếchtán sang khối n Cùng lúc khối p lại nhận thêm các điện tử (điện tích âm) từ khối
n chuyển sang Kết quả là khối p tích điện âm (thiếu hụt lỗ trống và dư thừa điệntử) trong khi khối n tích điện dương (thiếu hụt điện tử và dư thừa lỗ trống)
Ở biên giới hai bên mặt tiếp giáp, một số điện tử bị lỗ trống thu hút và khichúng tiến lại gần nhau, chúng có xu hướng kết hợp với nhau tạo thành cácnguyên tử trung hòa Quá trình này có thể giải phóng năng lượng dưới dạng ánhsáng (hay các bức xạ điện từ có bước sóng gần đó)
Tùy theo mức năng lượng giải phóng cao hay thấp mà bước sóng ánh sángphát ra khác nhau (tức màu sắc của LED sẽ khác nhau) Mức năng lượng (vàmàu sắc của LED) hoàn toàn phụ thuộc vào cấu trúc năng lượng của các nguyên
tử chất bán dẫn
LED thường có điện thế phân cực thuận cao hơn điốt thông thường, trongkhoảng 1,5 đến 3V Nhưng điện thế phân cực nghịch ở LED thì không cao Do
đó, LED rất dễ bị hư hỏng do điện thế ngược gây ra
Loại LED điện thế phân cực thuận:
Trang 8+ Tuổi thọ cao: hiện tại đèn LED cho ánh sang trắng có tuổi thọ lên tới 50,000
giờ sử dụng liên tục gấp 50 lần so với bóng đèn 60W thông thường Nếu sửdụng 10 giờ mỗi ngày, thì bóng có thể sử dụng trong 23 năm
+ Lợi ích kinh tế: Đèn LED tiết kiệm 70-80% năng lượng so với các loại bóng
đèn thông thường
+ Tốt cho thị lực của người sử dụng: Ánh sáng của đèn LED dịu mát, hiệu ứngchói mắt thấp và hoàn toàn không nhấp nháy hư của bóng huỳnh quang, vốn
bị coi là nguyên nhân gây ra bệnh đau nửa đầu và động kinh
+ Ít ảnh hưởng tới môi trường: Do phần lớn năng lượng được chuyển hóathành quang năng, do đó hiệu ứng nhiệt của đèn LED rất thấp Nó hoàn toànkhông tỏa nhiệt vào môi trường Các nghiên cứu khoa học cho thấy một bóngLED trung bình tỏa ra một lượng nhiệt 3,4 btu/h (tương đương với 1W), trongkhi một bóng đèn dây tóc có độ sáng tương đương tỏa ra nhiệt lượng khoảng
85 btu/h (tương đương với 25W) Ngoài ra bóng đèn LED không chứa thủyngân và do đó sẽ ít gây hại cho môi trường hơn khi thải bỏ+ Thời gian khởi động nhanh: Không giống với bóng đèn huỳnh quang, đènLED gần như bật sáng ngay lập tức khi được cấp điện
+ Bền vững đặc biệt: Do được làm từ chất liệu nhựa cao cấp nên đèn LED cóthể chịu đựng các lực va đập mạnh, hoặc các ảnh hưởng bởi thời tiết như mưa,nắng …
Nhược điểm
+ Chi phí sản xuất cao, lắp đặt thi công phức tạp, tốn nhiều thời gian hơn các
loại bóng thông thường khác
+ Toả nhiệt ở chân đèn, gây ảnh hưởng đến các bộ phận liền kề
+ Chưa tiện dụng: Đèn LED vẫn là mặt hàng công nghệ cao phải mua từ đại lýcủa hãng, bộ điều khiển của hãng nào chỉ chạy với đèn LED của đúng hãngđấy mà thôi
Trang 9- Các LED phát ra tia hồng ngoại được dùng trong các thiết bị điều khiển từ xacho đồ điện tử dân dụng.
- Ðèn LED có thể được sử dụng trong nhiều lĩnh vực như đèn đọc, chiếu sáng
bể bơi, nhất là cho chiếu sáng quảng cáo ngoài trời tại những nơi khó thay lắp,
do có tuổi thọ cao hơn nhiều lần so với bóng đèn neon, đồng thời có nhiềumầu sắc phong phú như: đỏ, xanh lá, xanh da trời, mầu hổ phách
Ở nước ta, đèn LED được ứng dụng để tiết kiệm năng lượng, phục vụ cho quảngcáo, chiếu sáng đô thị Ðiển hình là việc lắp đặt hệ thống đèn LED tại cầu sôngHàn và Thuận Phước (TP Ðà Nẵng)
2.2 Phương pháp điều khiển đèn LED
Theo yêu cầu của đồ án: Nghiên cứu xây dựng mạch hai led ma trận chạy chữ:
“K58-ĐTVT” Bảng hiển thị màu đỏ, với kích thước 8x16 Vì vậy ta chia ra làm 2modul nhỏ với kích thước mỗi modul là 8x8 LED tương đương với một LED matrận có kích thước 8x8 Sau đó ta điều khiển theo nguyên tắc của LED ma trận
Trang 10chỉ có trạng thái của một điểm ảnh được xác định Tuy nhiên khi xác định địa chỉ
và trạng thái của điểm ảnh tiếp theo thì các điểm ảnh còn lại sẽ chuyển về trạngthái tắt (nếu LED đang sáng thì sẽ tắt dần) Vì thế để hiển thị được toàn bộ hìnhảnh của ma trận đèn, ta có thể quét ma trận nhiều lần với tốc độ quét rất lớn, lớnhơn nhiều lần thời gian kịp tắt của đèn Mắt người chỉ nhận biết được tối đa 24hình/s do đó nếu tốc độ quét rất lớn thì sẽ không nhận ra được sự thay đổi nhỏcủa đèn mà sẽ thấy được toàn bộ hình ảnh cần hiển thị
Sơ đồ khối:
Hình 2.1 Sơ đồ khối dùng ma trận LED
Để thực hiện được quét hàng và quét cột thì ma trận LED được thiết kế nhưsau:
+ Các LED trên cùng một hàng sẽ được nối các chân dương với nhau
+ Các LED trên cùng một cột sẽ được nối các chân âm với nhau như hình vẽ
Ta có thể mô phỏng một ma trận LED đơn giản 4x4 như sau:
Trang 11Hình 2.2 Sơ đồ thiết kế ma trận LED
Trạng thái của một LED sẽ được quyết định bởi tín hiệu điện áp đi vào đồngthời cả 2 chân Ví dụ để LED sáng thì điện áp 5v phải đưa vào chân dương vàchân âm phải được nối đất, LED sẽ tắt khi không có điện áp đưa vào chândương Với đề tài này, chúng em chia ra làm 2 modul nhỏ với kích thước mỗimodul là 8x8 LED để hiển thị
Ta có sơ đồ nguyên lý của ma trận LED 8x8:
Hình 2.3 Sơ đồ nguyên lý ma trận LED 8x8
2.2.2 Giới thiệu chung về hệ thống
Với mục đích tìm hiểu về cách thiết kế và xây dựng một bảng quảng cáo điện
tử bằng đèn LED đơn giản chúng em xây dựng một hệ thống quang báo với sơ
đồ khối như sau:
Khối điều khiển hiển thị: có chức năng xử lý các dữ liệu mà máy tính truyền
tới để tạo ra các dữ liệu về mức logic cần cấp cho các LED trong từng cột đồng
Trang 12thời điều khiển quá trình cấp nguồn cho led ma trận Khối này được xây dựngbằng các thủ tục xử lý dữ liệu trên vi điều khiển Khi nhận được dữ liệu về chuỗi
ký tự cần hiển thị thì khối này sẽ tạo dữ liệu về mức logic cần cấp cho LED matrận Khi nhận được dữ liệu về màu sắc, hiệu ứng hiển thị thì khối này sẽ xácđịnh thủ tục gửi dữ liệu cho các khối chốt dữ liệu hàng và cột
2.2.3 Nhiệm vụ của các khối
Bộ vi điều khiển 89S52
Đây là nơi lưu giữ chương trình điều khiển chính và dữ liệu cho các mạch giải
mã hàng và cột AT89C52 là một hệ vi tính 8 bit đơn chip CMOS có hiệu suất
cao, công suất nguồn tiêu thụ thấp và có 4Kbyte bộ nhớ ROM Flash xoáđược/lập trình được Chip này
được sản xuất dựa vào công nghệ bộ nhớ không mất nội dung có độ tích hợpcao AT89S52 có các đặc trưng chuẩn sau: 8Kbyte Flash, 256 byte RAM, 32đường xuất nhập, ba bộ định thời/đếm 16 bit, một cấu trúc ngắt hai mức ưu tiên
và 6 nguyên nhân ngắt, một port nối tiếp song công, mạch tạo dao động và tạoxung Clock trên Chip Chế độ nghỉ dừng CPU trong khi vẫn cho phép RAM, các
bộ định thời/đếm, Port nối tiếp và hệ thống ngắt hoạt động
Mô tả các chân của IC 89S52:
Hình 2.4 Sơ đồ chân IC 89S52
Trang 13- Vcc: Chân cung cấp điện
- GND: Chân nối đất.
- Port 0: Port 0 là port xuất nhập 8 bit 2 chiều cực D hở Port 0 còn được cấu hình
làm bus địa chỉ (byte thấp) và làm 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 0 cũng nhận các byte mã trong khilập trình cho Flash và xuất các byte mã trong khi kiểm tra chương trình
- Port 1: Port 1 là port xuất nhập 8 bit hai chiều có các điện trở kéo lên bên trong.
Khi các logic 1 được ghi lên các chân của port 1, các chân này được kéo lên mứccao bởi các điện trở kéo lên bên trong và có thể được sử dụng như là các ngõ vào.Khi làm nhiệm vụ
là các port nhập, các chân của port 1 đang được kéo xuống mức thấp do tác độngbên ngoài sẽ cấp dòng do có các điện trở kéo lên bên trong
- Port 2: Port 2 là port xuất nhập 8 bit hai chiều có các điện trở kéo lên bên trong.
Khi các logic 1 được ghi lên các chân của port 2, các chân này được sử dụng như làcác ngõ
vào Khi làm nhiệm vụ port nhập, các chân của port 2 đang được kéo xuống mứcthấp do tác động bên ngoài sẽ cấp dòng do có các điện trở kéo lên bên trong Port 2tạo ra byte cao của bus địa chỉ trong thời gian tìm nạp lệnh từ bộ nhớ chương trìnhngoà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
- Port 3: Là port xuất nhập 8 bit hai chiều có các điện trở kéo lên bên trong Khi
các logic 1 được ghi lên các chân của port 3, các chân này được kéo lên mức caobởi các điện trở kéo lên bên trong và có thể được sử dụng như là các ngõ vào Khilàm nhiệm vụ port nhập, các chân của port 3 đang được kéo xuống mức thấp do tácđộng bên ngoài sẽ cấp dòng do có các điện trở kéo lên bên trong Port 3 còn được
sử dụng làm các chức năng khác của AT89C52:
P3.0 gõ vào Port nối tiếp
P3.1 gõ ra Port nối tiếp
Trang 14P3.2 gõ vào ngắt ngoài 0.
P3.3 gõ vào ngắt ngoài 1
P3.4 gõ vào bên ngoài của bộ định thời 1
P3.5 gõ vào bên ngoài của bộ định thời 0
P3.6 điều khiển ghi bộ nhớ dữ liệu ngoài
P3.7 điều khiển đọc bộ nhớ dữ liệu ngoài
- RST: Ngõ vào Reset Mức cao trên chân này trong 2 chu kỳ máy trong khi bộ dao động đang hoạt động sẽ Reset AT89S52.
Hình 2.5 Mạch Reset tự động khi khởi động máy
-Với bài này em thực hiện Reset bằng cách nối chân 9 của 89S52 với nguồn 5V
- ALE: ALE là một xung ngõ ra cho phép chốt địa chỉ ALE (Address Latch
Enable) cho phép chốt byte thấp của địa chỉ trong thời gian truy xuất bộ nhớ ngoài.Chân này cũng được dùng làm ngõ vào xung lập trình (PROG) trong thời gian lậptrình cho FlashC
Khi hoạt động bình thường, xung của ngõ ra ALE luôn luôn có tần số bằng 1/6 tần
số của mạch dao động trên chip, có thể được sử dụng cho các mục đích định thời từbên ngoài vàtạo xung Clock Tuy nhiên cần lưu ý là một xung ALE sẽ bị bỏ quatrong mỗi chu kì truyxuất của bộ nhớ dữ liệu ngoài
Khi cần, hoạt động cho phép chốt byte thấp của địa chỉ sẽ đượ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ỉ byte là 8E(h) Khi
Trang 15bit này được set, ALE chỉ tích cực trong thời gian thực thi lệnh MOVX hoặc
MOVC Ngược lại chân này sẽ đượckéo lên mức cao Việc set bit không cho phéphoạ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
- XTAL1: Ngõ vào đến mạch khuếch đại đảo của mạch dao động và ngõ vào đến
mạch tạo xung Clock bên trong chip
- XTAL2: Ngõ ra từ mạch khuếch đại đảo của mạch dao động Để tạo mạch dao
động cho vi điều khiển 89C52 hoạt động, chúng em chọn mạch tạo dao động nhưhình vẽ dưới đây, với các giá trị của linh kiện là: C1 = C2 =30pF
Thạch anh dao động có tần số 12MHz
Hình 2.6 Kết nối của mạch dao động
2.2.4 Nguyên tắc hoạt động của bảng điện tử
Nguyên lý hoạt động của bảng điện tử dựa theo nguyên lý hoạt động của cácmàn hình, đó là sử dụng phương pháp quét hình theo từng dòng.Mỗi dòng gồmnhiều điểm ảnh, mỗi điểm ảnh có thể có một hoặc vài đèn, màu sắc khác nhau Mỗi
Trang 16đèn được biểu diễn thông qua một bit dữ liệu, bit 1 tương ứng với đèn sáng, bit 0tương ứng với đèn tắt.
Tại một thời điểm, không phải tất cả các dòng trên màn hình đều sáng nhưng dotốc độ quét nhanh và sự lưu ảnh trên võng mạc tạo cho người nhìn thấy hình ảnhliên tục Trong quá trình quét, mạch điều khiển sẽ đưa dữ liệu ra Module hiển thị,chính dữ liệu này sẽ quyết định điểm ảnh nào sáng, điểm ảnh nào tắt, màu sắc củađiểm ảnh là gì Các điểm ảnh này sẽ tạo ra hình ảnh trên bảng điện tử
Hình 2.7 Nguyên tắc tạo ảnh trên ma trận LED
Chất lượng hình ảnh phụ thuộc vào tốc độ dòng quét, tỉ lệ thời gian sáng và thờigian tối của từng dòng Thời gian quét dòng phụ thuộc vào thời gian đẩy dữ liệu ra
và thời gian trễ sáng cho dòng đó Độ trễ sáng của dòng có ảnh hưởng đến mức độsáng tối cũng như màu sắc của hình ảnh, vì vậy, để tạo ra nhiều mức sáng tối vàtăng số màu hiển thị thì phải có khả năng thay đổi độ trễ sáng của dòng
Trang 17CHƯƠNG 3: GIỚI THIỆU VỀ NGÔN NGỮ C VÀ PHẦN MỀM KEIL C 3.1 Giới thiệu ngôn ngữ C
Trong kỹ thuật lập trình vi điều khiển nói chung, ngôn ngữ lập trình được sửdụng thường chia làm 2 loại: Ngôn ngữ lập trình bậc thấp và ngôn ngữ lập trìnhbậc cao
Ngôn ngữ lập trình bậc cao là các ngôn ngữ gần vơi ngôn ngữ con người hơn,
do đó việc lập trình bằng các ngôn ngữ này trở nên dễ dàng và đơn giản hơn Cóthể kể đến một số ngôn ngữ lập trình bậc cao như C, Basic, Pascal… trong dó C làngônngữ thông dụng hơn cả trong kỹ thuật vi điều khiển Về bản chất, sử dụng cácngôn ngữ này thay cho ngôn ngữ bậc thấp là giảm tải cho lập trình viên trong việcnghiên cứu các tập lệnh và xây dựng các cấu trúc giải thuật Chương trình viết bằngngôn ngữ bậc cao cũng sẽ được một phần mềm trên máy tính gọi là trình biên dịch(Compiler) chuyển sang dạng hợp ngữ trước khi chuyển sang mã máy
Khi sử dụng ngôn ngữ C người lập trình không cần hiểu sâu sắc về cấu trúc của
bộ vi điều khiển Có nghĩa là với một người chưa quen với một vi điểu khiển chotrước sẽ xây dựng được chương trình một cách nhanh chóng hơn, do không phảimất thời gian tìm hiểu kiến trúc của vi điều khiển đó Và việc sử dụng lại cácchương trình đã xây dựng trước đó cũng dễ dàng hơn, có thể sử dụng toàn bộ hoặcsửa chữa một phần
Keil C uVision là một phần mềm hỗ trợ cho người dùng trong việc lập trình cho
vi điều khiển các dòng khác nhau (Atmet, AVR,…) Keil C giúp người dùng soạnthảo và biên dịch chương trình C hay cả ASM thành ngôn ngữ máy để nạp vào viđiều khiển giúp chúng ta tương tác giữa vi điều khiển và người lập trình
Hình 3.1 Phần mềm Keil C uVision 5
Trang 183.2 Ngôn ngữ C
3.2.1 Kiểu dữ liệu
Kiểu dữ liệu trong C
- Khai báo biến
+ Cú pháp: kiểu dữ liệu vùng nhớ tên biến
Vd: Unisigned char data x;
- Khi khai báo biến có thể gán luôn cho biến giá trị bạn đầu
Vd: thay vì Unisigned char x; x = 0;
Ta chỉ cần: Unisigned char x = 0;
- Có thể khai báo nhiều biến cùng một kiểu một lúc
Vd: unsigned int x,y,z,t;
Chỉ định vùng nhớ: từ khoá “Vùng_nhớ” cho phép người dùng có thể chỉ ravùng nhớ sử dụng để lưu trữ các biến sử dụng trong chương trình Các vùng nhớ cóthể sử dụng là: CODE, DATA, DATAB, IDATA, PDATA, XDTA Khi không khaibáo vùng nhớ trình dịch Keil C sẽ mặc định đó là vùng nhớ DATA
Vùng nhớ Ý nghĩa
CODE Bộ nhớ mã nguồn chương trình
DATA Bộ nhớ dữ liệu gồm 128 Byte thấp của RAM trong vi
điều khiểnBDATA Bộ nhớ dữ liệu có thê định địa chỉ bit, nằm trong vùng
nhớ DATAIDATA Bộ nhớ dữ liệu gồm 128 Byte cao của RAM trong vi
điều khiển chỉ có ở một số dòng vi điều khiển sau nàyPDATA Bố nhớ dữ liệu ngoài gồm 256 Byte, được truy cập bởi
địa chỉ đặt trên P0
Trang 19XDATA Bộ nhớ dữ liệu ngoài có dung lượng có thể lên đến 64
KB, được truy cập bởi địa chỉ đặt trên P0 và P2Định nghĩa lại kiểu
- Cú pháp: typedef kiểu dữ liệu tên biến;
- Tên biến sau này sẽ được sử dụng như một kiểu dữ liệu mới và có thể dùng
để khai báo các biến khác
- sbit, sfr, sfr16: dùng để định nghĩa các cho các thanh ghi chức năng hoặc cáccổng trên vi điều khiển dùng để truy nhập các đoạn dữ liệu 1 bit, 8 bit, 16 bit
- Cú pháp: Tên kiểu vùng nhớ tên mảng [ số phần tử mảng];
Khi bỏ trống số phần tử mảng ta sẽ có mảng có số phần tử bất kì
Ví dụ Unsigned int data a[5],b[2] [3];
Trang 20Với khai báo trên ta sẽ có: Mảng a là một mảng một chiều 5 phần tử Mảng b
là mảng 2 chiều, tổng số phần tử 6.Chỉ số của mảng bắt đầu từ số 0 Mảng cóbao nhiêu chiều phải cung cấp đầy đủ bấy nhiêu chỉ số
- Ví dụ: phần tử mảng b[0][1] là đúng Khi viết b[0] là sai
Con trỏ
- Khi ta khai báo một biến, biến đó sẽ được cấp phát một khoảng nhớ bao gồmmột số byte nhất định dùng để lưu trữ giá trị Địa chỉ đầu tiên của khoảngnhớ đó chính là địa chỉ của biến được khai báo
- Con trỏ là một biến dùng để chứa địa chỉ mà không chứa giá trị, hay giá trịcủa con trỏ chính là địa chỉ khoảng nhớ mà nó trỏ tới.Với các vùng nhớ cụthể con trỏ tới vùng nhớ đó chiếm dung lượng phụ thuộc vào độ lớn củavùng nhớ đó Con trỏ tổng quát khi không xác định trước vùng nhớ sẽ códung lượng lớn nhất vì vậy tốt nhất nên sử dụng con trỏ cụ thể
Loại con trỏ Kích thướcCon trỏ tổng quát 3 byteCon trỏ XDATA 2 byteCon trỏ CODE 2 byteCon trỏ DATA 1 byteCon trỏ IDATA 1 byteCon trỏ PDATA 1 byte
Kiểu dữ liệu cấu trúc
- Kiểu dữ liệu cấu trúc là một tập hợp các biến, các mảng và cả các kiểu cấutrúc khác được biểu thị bởi một tên duy nhất kiểu dữ liệu cấu trúc dùng đểlưu trữ các giá trị, thông tin có liên quan đến nhau
- Khai báo biến cấu trúc: typedef struct { Khai báo các biến thành phần;} Tênkiểu cấu
3.2.2 Phép toán
Phép toán số học
Trang 21% Phép chia lấy phần dư a%b
Trang 22~' Lấy bù theo bit —a
1 Khai báo chỉ thị tiền xử lý
2 Khai báo các biến toàn cục
3 Khai báo nguyên mẫu các hàm
+ Khai báo biến toàn cục
Unsigned char code Led_arr[3];
Unsigned char data dem;
Unsigned int xdata X;