You are on page 1of 41

TRƯỜNG ĐẠI HỌC ĐIỆN LỰC

KHOA ĐIỀU KHIỂN & TỰ ĐỘNG HÓA

ĐỒ ÁN VI XỬ LÝ
NGÀNH: TỰ ĐỘNG HÓA VÀ ĐIỀU KHIỂN THIẾT BỊ
CHUYÊN NGÀNH: TỰ ĐỘNG HÓA VÀ ĐIỀU KHIỂN THIẾT BỊ CÔNG
NGHIỆP
Đề tài: Thiết kế tín hiệu điều khiển đèn giao thông ngã tư
Giảng viên hướng dẫn: Cô Bùi Thị Duyên
Nhóm sinh viên: Nhóm 5
Sinh viên thực hiện: Hoàng Minh Hiếu 18810430046
Nguyễn Ngọc Hưng 18810430092
Phạm Việt Hùng 18810430043
Vũ Xuân Dương 18810430111
Lớp: D13TDH&DKTBCN1

HÀ NỘI,10/03/2022
MỤC LỤC

LỜI NÓI ĐẦU...................................................................................................................1


CHƯƠNG 1: PHƯƠNG ÁN THIẾT KẾ...........................................................................2
1.1 Mô tả hoạt động của hệ thống......................................................................................2
1.2 Phương án thiết kế........................................................................................................2
CHƯƠNG 2: TỔNG QUAN VỀ HỌ VI ĐIỀU KHIỂN....................................................3
2.1 Giới thiệu về vi điều khiển...........................................................................................3
2.2 Lịch sử phát triển của các loại vi điều khiển................................................................3
2.3 GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51............................................................4
2.3.1 Mô tả...............................................................................................................................................5
2.3.2 Các cấu hình chân ra...................................................................................................................6
2.3.3 Sơ lược các chân của at89c51...................................................................................................7
2.4 Sơ lược các chân của at89c52....................................................................................................11
2.5 Module thời gian thực DS1307..................................................................................11
2.6 IC LM7805.................................................................................................................13
2.7 IC 74LS47..................................................................................................................15
CHƯƠNG 3 THIẾT KẾ MẠCH LẬP TRÌNH................................................................19
3.1 Kết cấu của chương trình...........................................................................................19
3.2 Sơ đồ board của mạch điều khiển giao thông.............................................................19
3.3 Phần lập trình.............................................................................................................20
3.4 Nguyên lý hoạt động điều khiển đèn giao thông........................................................38
DANH MỤC HÌNH ẢNH

Hình 2.1 Hình ảnh về vi điều khiển


Hình 2.2 Hình ảnh vi xử lý AC89C51
Hình 2.3 Sơ đồ khối của AT89C51
Hình 2.4 Mô tả chân của AT89C52
Hình 2.5 Hình ảnh mạch dao động
Hình 2.6 Sơ đồ chân AT89C52
Hình 2.7 Sơ đồ kết nối phần cứng AT89C52
Hình 2.8 Mô đun thời gian thực DS1307
Bảng 2.9 kí hiệu các chân
Hình 2.10 Nguyên lí hoạt động của DS1307
Hình 2.11 IC LM 7805
Hình 2.12 Sơ đò chân IC LM7805
Bảng 2.13 Sơ đồ chân 74LS47
Hình 2.14 Sơ đồ 74LS47
Hình 3.1 Sơ đồ kết cấu cách bố trí các đèn tại các nút
Hình 3.2 Sơ đồ board
LỜI NÓI ĐẦU

Với sự phát triển ngày càng mạnh mẽ và rộng lớn của nền khoa học kỹ thuật, các công
nghệ mới thuộc các lĩnh vực khác nhau cũng nhờ đó đã ra đời để đáp ứng những nhu cầu
của xã hội. Một trong số đó phải kể đến là kỹ thuật vi điều khiển. Hiện nay, kỹ thuật vi
điều khiển vẫn còn đang là một trong các lĩnh vực mới mẻ và đã được đưa vào giảng dạy
rộng rãi ở các trường Đại Học, Cao Đẳng trong các nước trên toàn thế giới. Tại trường
Đại Học Điện Lực, dưới sự giảng dạy và chỉ dẫn nhiệt tình của các thầy, cô đã mang lại
cho sinh viên rất nhiều những hiểu biết về Vi Điều Khiển và các ứng dụng của Vi Điều
Khiển trong đo lường và điều khiển. Trên tinh thần học đi đôi với hành, học gắn liền với
lao động, sản xuất và đời sống, nhóm sinh viên chúng em đã tìm hiểu và ứng dụng của Vi
Điều Khiển trong đồ án môn học này. Với sự hướng dẫn và chỉ dạy nhiệt tình của giảng
viên cô Bùi Thị Duyên, chúng em đã tiến hành đồ án “Nghiên cứu, thiết kế và chế tạo hệ
thống điều khiển đèn giao thông ngã tư. Chúng em đã rất cố gắng trong quá trình thực
hiện đề tài. Tuy nhiên, do thời gian không nhiều cũng như sự hạn chế về kiến thức nên
nội dung còn nhiều thiếu sót. Chúng em rất mong nhận được sự góp ý của các thầy cô và
các bạn sinh viên để báo cáo này của chúng em được hoàn thiện hơn.
Chúng em xin chân thành cảm ơn!

1
CHƯƠNG 1: PHƯƠNG ÁN THIẾT KẾ

1.1 Mô tả hoạt động của hệ thống


Hệ thống đèn điều khiển giao thông gồm: led(xanh, đỏ, vàng) và 2 led 7 thanh có chức
năng hiển thị thời gian đếm lùi đồng thời điều khiển các đèn Led (Xanh, Vàng, Đỏ) để
hướng dẫn các phương tiện tham gia giao thông đi đúng làn đường cho phép của mình.
Do vị trí và lưru lượng người tham gia giao thông ở các nút giao thông là khác nhau, nên
thời gian hiển thị của các đèn ưu tiên cũng có thể đặt khác nhau tùy từng thời điểm. Ở hệ
thống này mỗi pha được điều khiển tự động như sau:
Đèn xanh sáng tương ứng với thời gian hiển thị đếm lùi là 25 giây, hoặc có thể đặt phù
hợp với từng nút giao thông.
Đèn vàng sáng 4 giây, thông báo cho các phương tiện tham gia giao thông ứng với pha
này giảm tốc độ và chuẩn bị dừng lại.
Đèn đỏ sáng 29 giây, thông báo cho các phương tiện biết hướng đi ứng với pha này phải
dừng lại.
Để hệ thống hoạt động một cách đồng bộ đèn xanh sáng đồng thời leg 7 đoạn đếm lùi
25s, khi đèn xanh tắt đèn vàng sáng led 7 đoạn đếm lùi 4s, khi đèn vàng tắt led 7 đoạn
đếm lùi 29s, quá trình này cứ lập đi lập lại
1.2 Phương án thiết kế
Hiện nay việc sử dụng các mạch số kết hợp với chip vi điều khiến trong các hệ thống điều
khiển tự động đã trở nên rất phổ biến vì những ưu tiên của nó như: Độ chính xác, khả
năng lập trình được, tốc độ điều khiển nhanh, sử dụng đơn- gian,.. Mặt khác kỹ thuật số,
vi xử lý, vi điều khiển là lĩnh vực đang phát triển mạnh mẽ và có ứng dụng trong rất
nhiều ngành sản xuất. Vi vậy, ta sẽ thiếtkế một hệ thống điều khiển đèn giao thông đơn
giản, chi sử dụng bộ vi điều khiển. Tất cả các tín hiệu điều khiển đều được đưa đến khổi
hiển thị trực tiếp từ các cổng của bộ vi điều khiển. Phương án này có đặc điểm là mạch
gọn nhẹ, không quá phức tạp, cách thức bổ trí linh kiện dễ dàng, lập trình đơn giản, dễ
chinh sửa.
Các vi điều khiển được sử dụng trong hệ thống:
Vi điều khiển AT89C51/52
Các led 7seg
Các led đơn hiển thị đèn xanh, đèn vàng , đèn đỏ
Một số linh kiện hỗ trơh mạch hoạt động ( tụ, trở, thạch anh…)

2
CHƯƠNG 2: TỔNG QUAN VỀ HỌ VI ĐIỀU KHIỂN

2.1 Giới thiệu về vi điều khiển


Vi điều khiển là một máy tính được tích hợp trên một chip, nó thường được sử dụng để
điều khiển các thiết bị điện tử. Vi điều khiển, thực chất, là một hệ thống bao gồm một vi
xử lý có hiệu suất đủ dùng và giá thành thấp (khác với các bộ vi xử lý đa năng dùng trong
máy tính) kết hợp với các khối ngoại vi như bộ nhớ, các module vào/ra, các module biến
đổi số sang tương tự và tương tự sang số,…

Hình 2.1 Hình ảnh về vi điều khiển


Vi điều khiển thường được sử dụng để xây dựng các hệ thống nhúng. Nó cũng được sử
dụng trong các thiết bị điện, điện tử như máy giặt, lò vi sóng, điện thoại, đầu đọc DVD,
thiết bị đa phương tiện hay dây chuyền sản xuất tự động,…
2.2 Lịch sử phát triển của các loại vi điều khiển
Bộ vi điều khiển thực ra là một loại vi xử lí trong tập hợp các bộ vi xử lý nói chung. Bộ
vi điều khiển được phát triển từ bộ vi xử lí, từ những năm 70 do sự phát triển và hoàn
thiện về công nghệ vi điện tử dựa trên kỹ thuật MOS (Metal-Oxide-Semiconductor), mức
độ tích hợp của các linh kiện bán dẫn trong một chip ngày càng cao.
Năm 1971 xuất hiện bộ vi xử lí 4 bit loại TMS1000 do Công ty Texas Instruments vừa là
nơi phát minh vừa là nhà sản xuất. Nhìn tổng thể thì bộ vi xử lí chỉ có chứa trên một chip
những chức năng cần thiết để xử lí chương trình theo một trình tự, còn tất cả bộ phận phụ

3
trợ khác cần thiết như : bộ nhớ dữ liệu, bộ nhớ chương trìn , bộ chuyển đổi AID, khối
điều khiển, khối hiển thị, điều khiển máy in, hối đồng hồ và lịch là những linh kiện nằm ở
bên ngoài được nối vào bộ vi xử lí.
Mãi đến năm 1976 công ty INTEL (Interlligen-Elictronics) mới cho ra đời bộ vi điều
khiển đơn chip đầu tiên trên thế giới với tên gọi 8048. Bên cạnh bộ xử lí trung tâm 8048
còn chứa bộ nhớ dữ liệu, bộ nhớ chương trình, bộ đếm và phát thời gian các cổng vào và
ra Digital trên một chip.
Các Công ty khác cũng lần lượt cho ra đời các bộ vi điều khiển 8bit tương tự như 8048 và
hình thành họ vi điều khiển MCS-48 (Microcontroller-sustem-48).
Đến năm 1980 công ty INTEL cho ra đời thế hệ thứ hai của bộ vi điều khiển đơn chip với
tên gọi 8051. Và sau đó hàng loạt các vi điều khiển cùng loại với 8051 ra đời và hình
thành họ vi điều khiển MCS-51 .
Đến nay họ vi điều khiển 8 bit MCS51 đã có đến 250 thành viên và hầu hết các công ty
hàng dẫn hàng đầu thế giới chế tạo. Đứng đầu là công ty INTEL và rất nhiều công ty
khác như: AMD, SIEMENS, PHILIPS, DALLAS, OKI …
Ngoài ra còn có các công ty khác cũng có những họ vi điều khiển riêng như:
Họ 68HCOS của Công ty Motorola
Họ ST62 của Công ty SGS-THOMSON
Họ H8 của Công ty Hitachi
Họ pic cuả Công ty Microchip
2.3 GIỚI THIỆU VỀ VI ĐIỀU KHIỂN AT89C51
2.3.1 Mô tả
AT9C51 là một hệ vi tính 8 bit đơn chíp 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ợp
cao của Atmel.
Chip AT89C51 cũng tương thích với tập lệnh và các chân ra của chuẩn công nghiệp
MCS-51. Flash trên chip này cho phép bộ nhớ chương trình được lập
trình lại trên hệ thống hoặc bằng bộ lập trình bộ nhớ không mất nội dung qui ước.
Bằng cách kết hợp một CPU linh hoạt 8 bit với Flash trên một chip đơn thể, Atmel
89C51 là một hệ vi tính 8 bit đơn chip mạnh cho ta một giải pháp có hiệu quả về

4
chi phí và rất linh hoạt đối với các ứng dụng điều khiển.

Hình 2.2 Hình ảnh vi xử lý AC89C51


AT89C51 có các đặc trưng sau: 4Kbyte Flash, 128 byte Ram, 32 đường xuất nhập, hai bộ
định thời / đếm 16 bit, một cấu trúc ngắt 2 mức ưu tiên và 5 nguyên nhân ngắt, một port
nối tiếp song công, mạch dao động và tạo xung clock trên chip.
Ngoài ra AT8951 được thiết kế với logic tĩnh cho hoạt đông có tần số giảm xuống 0 và
hỗ trợ hai chế độ tiết kiệm năng lượng được lựa chọn bằng phần mềm.
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 tiếp tục hoạt động.
Chế độ nguồn giảm duy trì nội dung của RAM nhưng không cho mạch dao động cung
cấp xung clock nhằm vô hiệu hoá các hoạt động khác của chip cho đến khi có reset cứng
tiếp theo.
Các đặc điểm của 8951 được tóm tắt như sau:
4 KB bộ nhớ có thể lập trình lại nhanh, có khả năng tới 1000 chu kỳ ghi xoá

5
Tần số hoạt động từ: 0Hz đến 24 MHz
3 mức khóa bộ nhớ lập trình
2 bộ Timer/counter 16 Bit
128 Byte RAM nội.
4 Port xuất /nhập I/O 8 bit.
Giao tiếp nối tiếp.
64 KB vùng nhớ mã ngoài
64 KB vùng nhớ dữ liệu ngoại.
Xử lý Boolean (hoạt động trên bit đơn).
210 vị trí nhớ có thể định vị bit.
4µs cho hoạt động nhân hoặc chia
2.3.2 Các cấu hình chân ra
Sơ đồ khối của AT89C51

Hình 2.3 Sơ đồ khối của AT89C51

6
2.3.3 Sơ lược các chân của at89c51

Hình 2.4 Mô tả chân của AT89C52


Mô tả các chân:
VCC: chân cung cấp điện.
GND: chân nối đất.
Port 0: gồm 8 chân 32-39 (P0.0…P0,7)
Port 0 là port có 2 chức năng. 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.
Port1: chân 1-8 (P1.0…P1.7)
Port 1 là port IO. 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.
Port 2: chân 21-28 (P2.0….P2.7)

7
Port 2 là port có tác dụng kép. Được dùng như các đường xuất nhập hoặc byte cao của
bus địa chỉ đối với các thiết bị dùng bộ nhớ mở rộng.
Port 3: chân 10-17 (P3.0…P3.7)
Port 3 là port xuất nhập 8 bit 2 chiều có các điện trở kéo lên bên trong. 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ó lien hệ với các đặc tính đặc biệt
của 8951
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 AT89C51.
ALE/ PROG
Xung của 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ập trình Flash.
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ỏ qua trong mỗi chu kỳ
truy xuất 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à 8EH. Khi bit này được set, ALE
chỉ tích cực tring thời gian thực thi lệnh MOVX hoặc
MOVC. Ngược lại chân này sẽ được kéo lên mức 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 cho phép bộ nhớ chương trình PSEN (program store enable) điều khiển truy xuất
bộ nhớ chuơng trình ngoài. Khi AT89C51 đang thực thi chương trình trong bộ nhớ
chương trình ngoài, PSEN tích cực 2 lần cho mỗi chu kỳ máy, ngoại trừ trường hợp 2 tác
động của PSEN bị bỏ qua cho mỗi truy xuất bộ nhớ dữ liệu ngoài.
EA / Vpp:
Chân cho phép truy xuất bộ nhớ ngoài EA (external access enable) phải được nối với
GND để cho phép chip vi điều khiển tìm nạp lệnh từ các vị trí nhớ của bộ nhớ chương
trình ngoài, bắt đầu từ địa chỉ 0000H cho đến FFFFH. Tuy nhiên cần lưu ý là nếu có bit
khoá 1(clock bit 1) được lập trình, EA sẽ được chốt bên trong khi reset.

8
EA nên nối với Vcc để thực thi chương trình trong chip.
Chân EA / Vpp còn nhận điện áp cho phép lập trình Vpp trong thời gian
lập trình cho Flash, điện áp này cấp cho các bộ phận có yêu cầu điện áp 12V.
XTAL 1:
Ngõ vào đến mạch khuyếch đại đảo dao động và ngõ vào đến mạch tạo xung clock bên
trong chip.
XTAL 2:
Ngõ ra từ mạch khuyết đại đảo của mạch dao động.

Hình 2.5 Hình ảnh mạch dao động


2.4 SƠ LƯỢC CÁC CHÂN CỦA AT89C52
AT89C52 là họ IC vi điều khiển do hãng Atmel sản xuất. Các sản phẩm AT89C52 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. Nó
cung cấp những hổ trợ mở rộng trên chip dùng cho những biến một bit như là kiểu dữ
liệu riêng biệt cho phép quản lý và kiểm tra bit trực tiếp trong hệ thống điều khiển.

9
Hình 2.6 Sơ đồ chân AT89C52
AT89C52 có 8Kbyte bộ nhớ FLASH ROM bên trong để lưu chương trình, vì vậy. Vi
điều khiển có khả năng nạp xóa chương trình bằng điện lên đến 1000 lần. Dung lượng
RAM 128 byte, AT89C52 có 4 Port xuất/nhập 8 bit, có 2 bộ định thời 16 bit. Ngoài ra
AT89C52 còn có khả năng giao tiếp dữ liệu nối tiếp, có thể mở rộng không gian nhớ
chương trình và nhớ dữ liệu ngoài lên đến 64Kbyte.
AT89C52 được đóng gói theo kiểu hai hàng chân DIP gồm 40 chân cho các chức năng
khác nhau như vào.

10
Hình 2.7 Sơ đồ kết nối phần cứng AT89C52
2.5 Module thời gian thực DS1307

Hình 2.8 Mô đun thời gian thực DS1307

11
số chân Tên chân Mô tả

1,2 X1, X2 Bộ tạo dao động thạch anh được kết nối vào các chân này

3 V-Bat Chân kết nối với cực dương của nguồn pin

4 Ground Chân nối đất của IC

5,6 SCL và SDA Các chân giao tiếp I2C với CPU

7 SQW / Ra Chân xuất xung vuông

8 Vcc Chân cấp nguồn thường là 5V

Bảng 2.9 kí hiệu các chân


DS1307 là IC Real Time Clock (RTC) Full-Binary (BCD) công suất thấp với 56byte bộ
nhớ SVRAM để giao tiếp dữ liệu qua giao thức I2C. IC có thể hoạt động bằng nguồn cấp
trực tiếp trên Vcc và tự động chuyển sang sử dụng nguồn pin.
Thông số kỹ thuật module thời gian thực ds1307
Điện áp làm việc: 3.3V đến 5V
Bao gồm 1 IC thời gian thực DS1307
Các thành phần cần thiết như thạch anh 32768kHz, điện trở pull-up và tụ lọc nguồn đều
được tích hợp trên board
LED báo nguồn
Có sẵn pin dự phòng duy trì thời gian khi mất điện
5-pin bao gồm giao thức I2C sẵn sàng giao tiếp: INT (QWO), SCL, SDA, VCC và GND
Dễ dàng thêm một đồng hồ thời gian thực để dự án của bạn
Nhỏ gọn và dễ dàng để lắp thêm vào bo mạch hoặc test board
Cách sử dụng DS1307
DS1307 là IC 8 chân hoạt động trên nguồn 5V và giao tiếp với CPU thông qua giao thức
I2C. Mạch ứng dụng điển hình cho DS1307 từ datasheet của nó được hiển thị bên dưới.
Như có thể thấy IC có các chân SCL (Serial Clock) và SDA (Serial Data) sử dụng để giao
tiếp với CPU, cả hai chân này phải được kéo lên mức logic cao bằng cách sử dụng một
điện trở.

12
Hình 2.10 Nguyên lí hoạt động của DS1307
IC có thể được cấp nguồn bằng nguồn 5V vào chân Vcc, khi mất điện nó sẽ tự động
chuyển sang chế độ hoạt động bằng pin, IC sẽ lấy nguồn bằng cell pin Lithium kết nối
với chân Vbat và Ground.
Các chân X1 và X2 được sử dụng để kết nối bộ dao động thạch, thường sử dụngThạch
anh 32,7KHz. Chân SQW được sử dụng để cung cấp sóng xung vuông PWM với các tần
số có thể điều khiển được trong phạm vi 1Hz, 4KHz, 8KHZ hoặc 32KHz.
Chân này cũng yêu cầu mắc một điện trở pull-up. Dữ liệu giữa CPU và IC RTC chỉ được
trao đổi thông qua giao thức I2C. Cả Đọc và ghi dữ liệu đều xảy ra thông qua giao tiếp
này. IC xuất dữ liệu thông tin chi tiết như đếm giây, phút, giờ, ngày, tháng, ngày trong
tuần và năm của RTC có giá trị lên đến 2100.
2.6 IC LM7805
LM7805 hay 7805 là IC điều chỉnh điện áp dương đầu ra 5V. Nó là IC của dòng ổn áp
dương LM78xx, được sản xuất trong gói TO-220 và các gói khác. IC này được sử dụng
rộng rãi trong các thiết bị thương mại và giáo dục. Nó cũng được sử dụng bởi nhiều
người đam mê điện tử và thợ mày mò do giá rẻ, dễ sử dụng và không cần nhiều linh kiện

13
bên ngoài. IC có nhiều tính năng tích hợp lý tưởng để sử dụng trong nhiều ứng dụng điện
tử như dòng điện đầu ra 1.5A, chức năng bảo vệ quá tải, bảo vệ quá nhiệt, dòng điện tĩnh
thấp, v.v.

Hình 2.11 IC LM 7805


Tính năng / Thông số kỹ thuật của IC 7805
Gói TO-220
Dòng điện đầu ra là 1,5 Ampe
Chức năng tắt ngắn mạch tức thì
Chức năng tắt quá nhiệt tức thì
Giá rẻ
Đáng tin cậy để sử dụng trong các thiết bị thương mại
Đầu ra 5V chính xác và cố định
Điện áp đầu vào tối đa là 35V DC
Dòng điện tĩnh thấp chỉ 8mA
Sơ đồ chân
Hướng IC 7805 phía trước mặt thì sơ đồ chân theo thứ tự từ trái qua phải lần lượt là chân
1 là chân đầu vào, chân 2 là chân nối đất, chân 3 là chân đầu ra.

14
Hình 2.12 Sơ đò chân IC LM7805
2.7 IC 74LS47
74LS47 là IC điều khiển / giải mã BCD sang 7 đoạn. Nó chấp nhận một số thập phân
được mã hóa nhị phân làm đầu vào và chuyển đổi nó thành một mẫu để điều khiển 7 đoạn
để hiển thị các chữ số từ 0 đến 9. Số thập phân được mã hóa nhị phân
IC 74LS47 chấp nhận bốn dòng dữ liệu đầu vào BCD (8421) và tạo ra phần bổ sung của
chúng bên trong. Dữ liệu được giải mã bằng bảy cổng AND / OR để điều khiển trực tiếp
LED 7 đoạn. Các đầu ra tương ứng với cấu hình cực dương chung (CA) của 7 đoạn.

15
Sơ đồ chân 74LS47

Số chân Tên chân Mô tả

1 B Đầu vào BCD của IC

2 C Đầu vào BCD của IC

3 Display test / Lamp test Kiểm tra hiển thị LED

4 Blank input Tắt các LED hiển thị

5 Store Lưu trữ hoặc nhấp nháy mã BCD

6 D Đầu vào BCD của IC

7 A Đầu vào BCD của IC

8 GND Chân nối mass

9 e Đầu vào 1 LED 7 đoạn

10 d Đầu vào 2 LED 7 đoạn

11 c Đầu vào 3 LED 7 đoạn

12 b Đầu vào 4 LED 7 đoạn

13 a Đầu vào 5 LED 7 đoạn

14 g Đầu vào 6 LED 7 đoạn

15 f Đầu vào 7 LED 7 đoạn

16 VCC Cấp nguồn

Bảng 2.13 Sơ đồ chân 74LS47

16
Hình 2.14 Sơ đồ 74LS47
Tính năng và thông số kỹ thuật 74LS47
Chức năng: Bộ giải mã, Bộ phân kên
Họ công nghệ: LS
VCC (Tối thiểu): 4,75V
VCC (Tối đa): 5,25V
Kênh: 1
Điện áp (Nom): 5V
Tần số tối đa ở điện áp bình thường: 35Mhz
tpd ở điện áp bình thường (Tối đa): 100 nsec
Cấu hình: 4: 7
Loại: Open-Collector
IOL (Tối đa): 3.2mA
IOH (Tối đa): -0.05mA
Định mức: Catalog
Phạm vi nhiệt độ hoạt động (C): 0 đến 70

17
Số bit (#): 7
Rò rỉ đầu vào kỹ thuật số (Tối đa): 5uA
ESD CDM (kV): 0,75
ESD HBM (kV): 2

18
CHƯƠNG 3 THIẾT KẾ MẠCH LẬP TRÌNH

3.1 Kết cấu của chương trình

Hình 3.1 Sơ đồ kết cấu cách bố trí các đèn tại các nút
3.2 Sơ đồ board của mạch điều khiển giao thông

Hình 3.2 Sơ đồ board

19
3.3 Phần lập trình
Code đèn giao thông

20
21
Code lập trình đếm thời gian IC 1307
Sda bit p1.0
Scl bit p1.1
F_send_time bit 00h
F_send_date bit 01h
F_send bit 02h
Led equ p2.0
Seconds data 30h
Minutes data 31h
Hour data 32h
Day data 33h
Date data 34h
Month data 35h
Year data 36h
hour_val data 37h

22
Org 0000h
Ljmp main
Org 0003h ;ngat ngoai0
setb f_send_time
setb f_send_date
setb f_send
reti
Org 0030h
Main:
mov scon,#42h
mov tmod,#20h
mov a,pcon ;nhan doi toc do baud
setb acc.7
mov pcon,a
mov th1,#0ffh ;57600 11.0592mhz
setb tr1
setb it0 ;ngat ngoai 0 kich canh xuong
mov ie,#81h ;cho phep ngat ngoai0
call i2c_init
call ds1307_init
call ds1307_output
mov seconds,#31h
mov minutes,#31h
mov hour,#10h
while1:
jnb f_send,$
clr f_send

23
call send_uart_time
call send_uart_date
call __on_off_led
sjmp ___while1
Send_uart_time:
jb f_send_time,___send_time
jmp ___exit_send_time
send_time:
clr f_send_time
mov a,#'t'
call outchar
mov a,#'i'
call outchar
mov a,#'m'
call outchar
mov a,#'e'
call outchar
mov a,#' '
call outchar
call outchar
call ds1307_read_time
mov a,hour
swap a
anl a,#0fh
add a,#48
call outchar
mov a,hour

24
anl a,#0fh
add a,#48
call outchar
mov a,#':'
call outchar
mov a,minutes
swap a
anl a,#0fh
add a,#48
call outchar
mov a,minutes
anl a,#0fh
add a,#48
call outchar
mov a,#':'
call outchar
mov a,seconds
swap a
anl a,#0fh
add a,#48
call outchar
mov a,seconds
anl a,#0fh
add a,#48
call outchar
mov a,#0dh
call outchar

25
mov a,#0ah
call outchar
exit_send_time:
ret
Send_uart_date:
jb f_send_date,___send_date
jmp ___exit_send_date
send_date:
clr f_send_date
mov a,#'d'
call outchar
mov a,#'a'
call outchar
mov a,#'t'
call outchar
mov a,#'e'
call outchar
mov a,#' '
call outchar
mov a,#'t'
call outchar
mov a,#'h'
call outchar
mov a,#'u'
call outchar
mov a,#' '
call outchar

26
call ds1307_read_date
mov a,day
swap a
anl a,#0fh
add a,#48
call outchar
mov a,day
anl a,#0fh
add a,#48
call outchar
mov a,#' '
call outchar
mov a,date
swap a
anl a,#0fh
add a,#48
call outchar
mov a,date
anl a,#0fh
add a,#48
call outchar
mov a,#'/'
call outchar
mov a,month
swap a
anl a,#0fh

27
add a,#48
call outchar
mov a,month
anl a,#0fh
add a,#48
call outchar
mov a,#'/'
call outchar
mov a,year
swap a
anl a,#0fh
add a,#48
call outchar
mov a,year
anl a,#0fh
add a,#48
call outchar
mov a,#0dh
call outchar
mov a,#0ah
call outchar
exit_send_date:
ret
on_off_led:
;push 0eh
call check_time //kiem tra lai thoi gian;
mov a,_hour_val

28
mov b,#17
div ab
cjne a,#00,on //neu sau 17 thi bat
// chua toi 17h; kiem tra xem co duoi 5h hay khong:
mov a,_hour_val
mov b,#05
div ab
cjne a,#00,off
setb led
ret
On:
setb led
ret
Off:
clr led
ret
Check_time:
mov a,hour
swap a
anl a,#0fh // chi giu lai gia tri bit thap;
mov b,#10
mul ab
mov _hour_val,a
mov a,hour
anl a,#0fh
add a,_hour_val
mov _hour_val,a

29
mov p2,_hour_val // lay duoc gia tri 10;
ret
Ds1307_init:
call i2c_start
mov a,#0d0h ;dia chi ds1307
lcall i2c_write ;
;jc $-5
mov a,#00h ;dia chi thanh ghi 0
lcall i2c_write
mov a,#00h ;enable the oscillator (ch bit = 0)
lcall i2c_write
call i2c_stop
ret
Ds1307_output:
call i2c_start
mov a,#0d0h ;dia chi ds1307
call i2c_write ;
mov a,#07h ;dia chi thanh ghi 0
call i2c_write
mov a,#10h ;enable the output oscillator f=1hz
call i2c_write
call i2c_stop
ret
Ds1307_write_time:
call i2c_start
mov a,#0d0h ;dia chi ds1307
call i2c_write ;

30
mov a,#00h ;dia chi thanh ghi 0
call i2c_write
mov a,seconds ;
call i2c_write
mov a,minutes ;
call i2c_write
mov a,hour ;
call i2c_write
call i2c_stop
ret
Ds1307_write_date:
call i2c_start
mov a,#0d0h ;dia chi ds1307
call i2c_write ;
mov a,#03h ;dia chi thanh ghi 3
call i2c_write
mov a,day ;thu
call i2c_write
mov a,date ;ngay
call i2c_write
mov a,month ;thang
call i2c_write
mov a,year ;nam
call i2c_write
call i2c_stop
ret
Ds1307_read_time:

31
call i2c_start
mov a,#0d0h ;dia chi ds1307 va write
call i2c_write ;
mov a,#00h ;dia chi thanh ghi 0
call i2c_write
call i2c_restart
mov a,#0d1h ;dia chi ds1307 va read
call i2c_write
call i2c_read_ack
mov seconds,a
call i2c_read_ack
mov minutes,a
call i2c_read_nack
mov hour,a
call i2c_stop
ret
Ds1307_read_date:
call i2c_start
mov a,#0d0h ;dia chi ds1307 va write
call i2c_write ;
mov a,#03h ;dia chi thanh ghi 3
call i2c_write
call i2c_restart
mov a,#0d1h ;dia chi ds1307 va read
call i2c_write
call i2c_read_ack
mov day,a

32
call i2c_read_ack
mov date,a
call i2c_read_ack
mov month,a
call i2c_read_nack
mov year,a
call i2c_stop
ret
I2c_write:
push 07h
mov r7,#8
loop_i2c_write:
clr scl
rlc a
mov sda,c
nop
nop
setb scl
nop
nop
djnz r7,___loop_i2c_write
clr scl
nop
nop
nop
nop
setb sda ;cau hinh ngo vao sda doc ack

33
setb scl
nop
mov c,sda ;kiem tra co "c" de xac dinh loi
nop
nop
clr scl
pop 07h
ret
I2c_read_ack:
push 07h
mov r7,#8
setb sda ;cau hinh ngo vao sda
loop_i2c_read_ack:
setb scl
nop
mov c,sda
rlc a ;byte doc ve luu trong thanh ghi "a"
nop
clr scl
nop
nop
nop
djnz r7,___loop_i2c_read_ack
clr sda
nop
setb scl
nop

34
nop
nop
nop
clr scl
pop 07h
ret
I2c_read_nack:
push 07h
mov r7,#8
setb sda ;cau hinh ngo vao sda
loop_i2c_read_nack:
setb scl
nop
mov c,sda
rlc a ;byte doc ve luu trong thanh ghi "a"
nop
clr scl
nop
nop
nop
djnz r7,___loop_i2c_read_nack
setb sda
nop
setb scl
nop
nop
nop

35
nop
clr scl
pop 07h
ret
I2c_init:
setb scl
setb sda
ret
I2c_start:
setb sda
setb scl
nop ;delay 4.7us
nop ;bus free time between a stop and start condition
nop
nop
nop
clr sda
nop ;delay 4us
nop ;hold time (repeated) start condition
nop
nop
clr scl
ret
I2c_stop:
clr sda
setb scl
nop ;delay 4.7us

36
nop ;setup time for stop condition
nop
nop
nop
setb sda
ret
I2c_restart:
setb sda
setb scl
nop ;delay 4.7us
Nop ;setup time for a repeated start condition
nop
nop
nop
clr sda
nop ;delay 4us
nop ;hold time (repeated) start condition
nop
nop
clr scl
nop
nop
ret
Scl_high:
nop ;delay 4us
nop ;high period of scl clock
setb scl

37
nop
nop
ret
Scl_low:
nop ;delay 4.7us
nop ;low period of scl clock
clr scl
nop
nop
nop
ret
Outchar:
jnb ti,$
clr ti
mov sbuf,a
ret
End
3.4 Nguyên lý hoạt động điều khiển đèn giao thông
Mô đun thời gian thực DS 1307 chuẩn thức I2C để giao tiếp để đọc thời gian trên ,áy tính
để cập nhập thơi gian trong ngày
Sư dụng phương pháp chốt led và IC7447 để giải mã hiển thị led 7 thanh ngã tư sử dụng
nút bấm tang giảm để điều chỉnh thời gian đếm ngược thơi gian tại cột đen giao thông
theo công thức
Đèn đỏ = đèn vàng + đèn xanh ( đèn vàng = 3s)

38

You might also like