TRƢỜNG ĐẠI HỌC CẦN THƠ
KHOA CÔNG NGHỆ
BỘ MÔN TỰ ĐỘNG HÓA
------o0o------
LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC
HỆ THỐNG ĐỒNG HỒ THỜI GIAN
THỰC VÀ CHUÔNG TỰ ĐỘNG
CÁN BỘ HƢỚNG DẪN
SINH VIÊN THỰC HIỆN
TS. Nguyễn Chí Ngôn
Nguyễn Trung Nghĩa(1063886)
Lớp: Cơ Điện Tử - Khóa: 32
Tháng 12/2010
LỜI NÓI ĐẦU
---------oOo---------
Ngày nay, trong công cuộc công nghiệp hóa và hiện đại hóa đất nước. Có thể
nhận thấy một điều là nền sản xuất của chúng ta hiện tại mang tính thủ công và lạc
hậu. Vì thế hiện đại hóa và tự động hóa quá trình sản xuất là cấp thiết cần phải thực
hiện ngay.
Ngay từ ngàn xưa thời gian là một tài sản quý giá, đã qua rồi thì không thể lấy
lại được, thời gian quả là một bí mật lớn. Chúng ta cảm nhận nó trôi qua. Chúng ta
đo đạc tiến trình của nó với những dụng cụ đo lường vô cùng tinh vi. Chúng ta đánh
dấu những chuyến hành trình của nó và đọc lại các dấu vết lưu trữ thời gian để lại.
Nhưng có một điều chúng ta không làm được là định nghĩa thời gian.
Bằng cách nào đó việc đo đếm thời gian ngày càng được hiện đại hóa và chính xác
đến mức gần như tuyệt đối, sai số là vô cùng nhỏ. Sự xuất hiện của đồng hồ điện tử
và báo giờ trên đồng hồ điện tử là một phát minh hữu ích cho mọi người. Nhất là
trong một khoa của trường đại học, việc báo giờ và đổ chuổng để mọi người biết
giờ học bắt đầu hay kết thúc là rất cần thiết. Việc này đã được thực hiện nhưng còn
thiếu chính xác và tốn kém do hạn chế của việc làm thủ công. Do đó tôi đã sinh ra ý
tưởng hoàn thiện chiếc đồng hồ báo giờ và đổ chuông tự động để mọi người đều có
thể sử dụng được.
Trong quá trình thực hiện đề tài, tôi đã thiết kế và tính toán sao cho hệ thống
hoạt động chính xác nhất, ổn định nhất và dễ dùng nhất.. Tuy nhiên, tôi đã gặp
nhiều khó khăn do vấn đề thời gian và kinh nghiệm. Đến thời điểm này đề tài tốt
nghiệp đại học của tôi đã được hoàn thành tốt chính nhờ có sự động viên và giúp đỡ
quý báu của nhiều thầy cô. Nhân đây tôi xin chân thành gởi lời cảm ơn sâu sắc đến:
Thầy TS. Nguyễn Chí Ngôn cán bộ hướng dẫn đề tài, Thầy đã chỉ bảo tận tình
để tôi có thể hoàn thành tốt đề tài này.
Tôi xin chân thành cảm ơn Thầy Ths. Nguyễn Khắc Nguyên đã giúp đỡ tôi về
phần cứng.
Tôi cũng xin cảm ơn Thầy Lý Thanh Phương, Thầy Nguyễn Huỳnh Anh Duy,
nhóm Robocon CTMEC và quý Thầy Cô Bộ môn Tự Động Hóa - Khoa Công Nghệ
- Trường Đại Học Cần Thơ đã giúp đỡ tôi trong suốt thời gian thực hiện đề tài này.
viii
Cuối cùng, tôi xin cảm ơn quý Thầy Cô trường Đại Học Cần Thơ đã tận tâm
dạy bảo, truyền đạt kiến thức trong suốt thời gian tôi học tại trường.
Nguyễn Trung Nghĩa
ix
NHẬN XÉT VÀ ĐÁNH GIÁ CỦA CÁN BỘ HƢỚNG DẪN
Nội dung nhận xét :
4.18
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Cần Thơ, ngày … tháng … năm 2010
------------------------------------------------------------------------------------------------------------Giảng viên hƣớng dẫn
x
NHẬN XÉT VÀ ĐÁNH GIÁ CỦA CÁN BỘ CHẤM PHẢN BIỆN
Nội dung nhận xét :
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Cần Thơ, ngày … tháng … năm 2010
------------------------------------------------------------------------------------------------------------Cán bộ chấm phản biện
xi
MỤC LỤC
1.
CHƢƠNG I GIỚI THIỆU ĐỀ TÀI _____________________________________ 1
1.1.
Đặt vấn đề _______________________________________________________ 1
1.2.
Giới hạn của đề tài ________________________________________________ 1
1.3.
Hƣớng giải quyết _________________________________________________ 1
2.
CHƢƠNG II PHẦN CỨNG HỆ THỐNG ________________________________ 2
2.1.
Tổng quan về phần cứng hệ thống ___________________________________ 2
2.2.
Các modul của hệ thống ____________________________________________ 3
2.2.1.
Bảng LED _______________________________________________________ 4
2.2.2.
Vi điều khiển ATMEGA32 __________________________________________ 5
2.2.3.
Ic thời gian thực PCF8583 __________________________________________ 6
2.2.4.
Giao tiếp máy tính _________________________________________________ 7
2.2.5.
Mạch công suất ___________________________________________________ 7
2.2.6.
Remote điều khiển_________________________________________________ 9
2.2.7.
Chuông điện ____________________________________________________ 10
3.
CHƢƠNG III PHẦN MỀM HỆ THỐNG _______________________________ 11
3.1.
Phần mềm điều khiển hệ thống trên vi điều khiển AVR__________________ 11
3.1.1.
Codevison ______________________________________________________ 11
3.1.2.
Giải thuật_______________________________________________________ 12
3.1.3.
Các phần chính trong chƣơng trình _________________________________ 13
3.1.3.1.
Khai báo thƣ viện và các biến toàn cục_____________________________ 13
3.1.3.2.
Ngắt timer quét LED 7 đoạn _____________________________________ 15
3.1.3.3.
Nhận giờ từ máy tính qua rs232 để nạp cho ic thời gian thực __________ 17
3.1.3.4.
Nạp dữ liệu lịch đổ chuông ______________________________________ 19
3.1.3.5.
Hàm so sánh hai hai với nhau nếu nhỏ hơn hoặc bằng trả về giá trị 1 ___ 22
3.1.3.6.
Tìm giờ đổ chuông _____________________________________________ 23
3.1.3.7.
Vòng lập while chính trong chƣơng trình __________________________ 23
xii
3.2.
Phần mềm giao diện ngƣời dùng trên máy tính bằng C# _________________ 27
3.2.1.
Chức năng của chƣơng trình đƣợc thiết kế____________________________ 27
3.2.2.
C# trong bộ visual stdio 2010 _______________________________________ 27
3.2.3.
Giao diện ngƣời dùng trên máy tính _________________________________ 28
3.2.3.1.
Phần giao diện chính ___________________________________________ 28
3.2.3.2.
Phần nhập lịch tuần____________________________________________ 28
3.2.3.3.
Phần nhập những ngày đặc biệt không đổ chuông ___________________ 29
3.2.3.4.
Phần nhập thời điểm đặc trƣớc chuông sẽ đổ. _______________________ 30
4.
CHƢƠNG IV KẾT LUẬN ____________________________________________ 31
5.
PHỤ LỤC _________________________________________________________ 33
5.1.
Code AVR viết bằng codevision _____________________________________ 33
5.2.
Code trên C# ____________________________________________________ 50
5.3.
Vi điều khiển Atmega32 ___________________________________________ 79
5.4.
IC thời gian thƣc PCF8583 ________________________________________ 92
5.5.
Thuật toán đổi âm lịch ra đƣơng lịch và ngƣợc lại______________________ 95
xiii
DANH SÁCH HÌNH ẢNH
Hình 2.1 :
Sơ đồ tổng quan phần cứng _____________________________________ 2
Hình 2.2 :
Bảng đồng hồ ________________________________________________ 4
Hình 2.3 :
Một đoạn của LED 7 đoạn đƣợc tạo thành từ 18 LED________________ 4
Hình 2.4 :
LED siêu sáng vuông __________________________________________ 4
Hình 2.5 :
Atmega 32 ___________________________________________________ 5
Hình 2.6 :
Sơ đồ chân atmega32 __________________________________________ 5
Hình 2.7 :
PCF8583 ____________________________________________________ 6
Hình 2.8 :
Sơ đồ chân PCF8583 __________________________________________ 6
Hình 2.9 :
Mạch nguyên lý _______________________________________________ 8
Hình 2.10 : Transitor A1015 và Tip 42 ______________________________________ 9
Hình 2.11 : IRF504______________________________________________________ 9
Hình 2.12 : Bộ thu phát có remote __________________________________________ 9
Hình 2.13 : Chuông thật và sơ đồ nguyên lý sử dụng mạch_____________________ 10
Hình 2.14 : Giao diện codevision V2.04 ____________________________________ 11
Hình 3.1 :
Lƣu đồ giải thuật trên vi điều khiển AVR ________________________ 13
Hình 3.2 :
Lƣu đồ quét LED ____________________________________________ 15
Hình 3.3 :
Lƣu đồ giải thuật nhận giá trị trị thời gian từ máy tính _____________ 17
Hình 3.4 :
Lƣu đồ nhận lịch đổ chuông ___________________________________ 19
Hình 3.5 :
Giao diện thiết kết form của C#2010 ____________________________ 27
Hình 3.6 :
Giao diện chính của chƣơng trình ______________________________ 28
Hình 3.7 :
Giao diện nhập lịch tuần ______________________________________ 29
Hình 3.8 :
Giao diện nhập những ngày đặc biệt không đổ chuông _____________ 29
Hình 3.9 :
Giao diện nhập thời điểm đặc biệt đổ chuông _____________________ 30
Hình 4.1: Đồng hồ thời gian thực __________________________________________ 31
Hình 4.2: Giao điện ngƣời dùng ___________________________________________ 31
viii
ABSTRACT
This thesis presents a school alarm clock system which is planned to apply at
the College of Engineering Technology, Can Tho University. The system was
designed on ATMEL ATMega32 microcontroller and a real-time clock PCF8583
chip. Four 7-segment LEDs were used to displace the current time. And an electricbell was used as an alarm system that can be pre-programmed by the operator. After
testing, the result indicated that this system satisfies all conditions of an automatic
school alarm clock.
viii
Chương I: Giới thiệu đề tài
CHƢƠNG I
GIỚI THIỆU ĐỀ TÀI
1. CHƢƠNG I GIỚI THIỆU ĐỀ TÀI
1.1. Đặt vấn đề
Thời gian là vô cùng quý giá, con người đã nhận ra sự quý giá của thời gian từ
rất lâu. Do đó việc đo đếm thời gian đã được thực hiện cách đây hàng ngàn năm.
Chiếc đồng hồ từ đó đã phát triển không ngừng, và đạt độ chính xác gần như tuyệt
đối. Hiện nay đồng hồ điện tử được ứng dụng trong rất nhiều lĩnh vực như là báo
giờ tự động, timer cho các ứng dụng công nghệ cao …
Việc tự động báo chuông giờ học theo chương trình là một vấn đề đã được
nghiên cứu và hoàn thiện từ vài chục năm trước đây. Tuy nhiên tại Khoa Công
Nghệ, việc báo chuông lớp học vẫn được thực hiện một cách thủ công vừa tốn kém,
vừa thiếu chính xác vừa không xứng với tầm vóc của một khoa kỹ thuật. Việc thiết
kế và chế tạo hệ thống này đã được Trung tâm Điện – Điện tử thực hiện gần như cơ
bản về phần cứng, nhưng chưa có phần mềm hệ thống. Đề tài nhằm mục tiêu củng
cố, hoàn thiện phần cứng và lập trình cho hệ vi điều khiển AVR đáp ứng yêu cầu
đồng hồ thời gian thực và báo chuông tự động.
1.2. Giới hạn của đề tài
Xây dựng hệ thống đồng hồ thời gian thực và chuông tự động, hiển thị thời
gian và đổ chuông đúng theo qui định. Giao diện người dùng được viết bằng C# , có
khả năng chỉnh sửa ngày giờ, báo giờ và ngưng đổ chuông tại những thời điểm đặt
biệt. Ngoài ra còn có bộ điều khiển từ xa chỉnh giờ. Khả năng đổi âm lịch sang
dương lịch và ngược lại của phần mềm.
1.3. Hƣớng giải quyết
Để có thể xây dựng hệ thống đồng hồ thời gian thực và báo chuông tự động tôi
sẽ thực hiện một số vấn đề sau:
Tìm hiểu và hoàn thiện phần cứng của hệ thống.
Thiết kế phần mềm giao tiếp giữa vi điều khiển và IC thời gian thực.
Thiết kế giao diện người dùng trên máy tính.
Nghiên cứu cách tính âm lịch và dương lịch và mối tương quan giữa chúng.
SVTH: Nguyễn Trung Nghĩa
Trang 1
Chương II: Phần cứng hệ thống
CHƢƠNG II
PHẦN CỨNG HỆ THỐNG
2. ChƣơCHƢƠNG II PHẦN CỨNG HỆ THỐNG
2.1. Tổng quan về phần cứng hệ thống
`
Mạch giao tiếp
PL 2303
Mạch công suất
A1015, Tip42,
…
Bộ điều khiển trung tâm
AVR
IC thời gian thực
PCF 8583
Remote
Điều khiển
Hình 2.1 : Sơ đồ tổng quan phần cứng
Hệ thống đồng hồ thời gian thực là một hệ gồm nhiều modul liên kết với nhau.
Vi điều khiển AVR sẽ đọc thời gian từ IC thời gian thực sau đó đưa tín hiệu đã xử
lý hiển thị lên bảng LED thông qua mạch công suất. Thông qua IC PL 2303, AVR
kết nối với máy tính bằng cổng USB. Người sử dụng có thể thực hiện những thao
SVTH: Nguyễn Trung Nghĩa
Trang 2
Chương II: Phần cứng hệ thống
tác như chỉnh sửa thời gian, đặt thời gian báo giờ, hẹn giờ tắt hệ thống,….thông qua
giao diện người dùng rất dễ sử dụng. Ngoài ra, để tiện việc chỉnh sửa, điều khiển và
đặt giờ, hệ thống còn có modul điều khiển từ xa bằng sóng radio.
2.2. Các modul của hệ thống
-Vi điều khiển AVR
-IC thời gian thực PCF 8583
-Mạch công suất điều khiển LED
-Bảng LED
-Mạch giao tiếp máy tính sử dụng PL-2303
-Bộ điều khiển từ xa sử dụng sóng radio
SVTH: Nguyễn Trung Nghĩa
Trang 3
Chương II: Phần cứng hệ thống
2.2.1. Bảng LED
Bảng đồng hồ gồm 4 LED 7 đoạn hiển thị giờ phút hiện tại và dấu hai chấm
phân cách giữa giờ và phút.
Hình 2.2 : Bảng đồng hồ
Mỗi đoạn của LED 7 đoạn được làm từ 18 LED siêu sáng vuông mắc song
song với nhau
Hình 2.3 : Một đoạn của LED 7 đoạn được tạo thành từ 18 LED
LED siêu sáng vuông 4 chân về cấu tạo bên trong giống như LED 2 chân, 2
chân được nối tắt với nhau, LED hoạt động ở 2v và dòng qua LED khoảng 20mmA.
Hình 2.4 : LED siêu sáng vuông
SVTH: Nguyễn Trung Nghĩa
Trang 4
Chương II: Phần cứng hệ thống
2.2.2. Vi điều khiển ATMEGA32
Để hiển thị giờ lên 4 LED 7 đoạn thì ta sử dụng vi điều khiển trung tâm là
Atmega32 của hảng atmel, và sử dụng giải thuật quét LED để hiển thị cả 4 số cùng
lúc.
Hình 2.5 : Atmega 32
Atmega32 là 1 vi điều khiển phù hợp với đề tài. Do atmega chạy rất ổn định, xử lý
nhanh, hoạt động với thạch anh tốc độ cao nhất đến 16MHZ. Bộ nhớ của atmega32
lớn, hỗ trợ ngôn ngử C để lập trình và có thể ghi xóa đến mười ngàn lần nên rất linh
hoạt.
Hình 2.6 : Sơ đồ chân atmega32
Atmega32 gồm 40 chân, hoạt động ở điện thế 5v. Trong đó có:
- 4 PORT I/O với 32 chân
- 3 bộ timer
- 32 kbyte bộ nhớ flash
SVTH: Nguyễn Trung Nghĩa
Trang 5
Chương II: Phần cứng hệ thống
- 1024 byte EEPROM
- 2 k btye sd ram
- 32K Bytes of In-System Self-Programmable Flash
- 2 timer 8 bit và 1 timer 16 bit
- 4 kênh PWM
- 8 bộ ADC 10-bit …
2.2.3. Ic thời gian thực PCF8583
Lấy thời gian thực ta sử dụng IC thời gian thực PCF8583
Hình 2.7 : PCF8583
PCF8583 là ic thời gian thực hoạt động rất chính xác, sử dụng thạch anh
32.768 kHz.
Hình 2.8 : Sơ đồ chân PCF8583
Điện thế sử dụng từ 2,5 đến 6v đó. Ta dùng nguồn pin độc lập với vi điều
khiển để nuôi, do đó không bị ảnh hưởng bởi việc mất điện, khi có điện trở lại hệ
thống vẫn hoạt động bình thường với thời gian thực chính xác mà không cần phải
cài đặt lại.
PCF8583 giao tiếp dể dàng với atmega32 vì PCF8583 hổ trợ chuẩn I2C. I2C
(Inter-Intergrated Circuit) là một loại bus nối tiếp được phát triển bởi hãng linh kiện
SVTH: Nguyễn Trung Nghĩa
Trang 6
Chương II: Phần cứng hệ thống
điện tử Philip.Do tính ưu việt và đơn giản, I2C đã được chuẩn hoá và ứng dụng
rộng rãi trong các module truyền thông nối tiếp của vi mạch tích hợp ngày nay.
Bộ nhớ Ram của PCF8583 là 256 byte trong đó 8 byte đầu sử dụng cho thời
gian, lịch và bộ đếm, 8 byte tiếp theo sử cho hẹn giờ hay cùng với 240 byte còn lại
sử
dụng
như
bộ
nhớ
Ram
bình
thường.
2.2.4. Giao tiếp máy tính
Kết nối với máy tính bằng chuẩn RS232 qua cổng
usb, thông qua ic PL-2303. Đây là ic rất phổ biến, được
sử dụng nhiều trong các thiết bị di động.
Ngày nay cỗng RS232 thật trên máy tính rất hiếm.
Nếu máy tính không có cổng RS232 thật, để sử dụng
được chuẩn này thông thường phải qua con MAX232 và
thiết bị chuyển usb về RS232thật. Nhưng với mạch sử
dụng PL-2303 thì rất tiện kết nối trực tiếp vi điều khiển
với cổng usb trên máy tính.
2.2.5. Mạch công suất
Tính tính toán dòng qua các LED, LED siêu sáng hoạt động tốt ở điện thế 2v;
Mỗi đoạn của LED 7 đoạn gồm: 18LED x 20mmA = 360mmA;
Dòng qua 1 LED 7 đoạn: 360mmA x 7 = 2520mmA
Ở đây ta mắc LED theo kiểu anode chung, và sử dụng phương pháp quét để
hiển thị giờ lên bảng đồng hồ. Vì vậy dòng tối đa qua 1 LED 7 đoạn là 2520mmA
lúc cả 7 đoạn cùng sáng.
SVTH: Nguyễn Trung Nghĩa
Trang 7
SVTH: Nguyễn Trung Nghĩa
D1
C1
C1
A1015
D2
A1015
TIP 42
C2
3
c
C2
TIP 42
C1
d
e
g
f
c
C2
VCC
2
1
C1
C1
b
VCC
b
a
C1
C1
C1
a
4
d
C2
C2
C2
D3
5
e
A1015
TIP 42
C3
VCC
C2
C2
d
e
g
f
c
b
a
6
f
C3
C3
D4
7
g
C3
C3
C3
A1015
TIP 42
C4
VCC
C3
C3
D1
D2
D3
D4
1
2
3
4
5
6
7
d
e
g
f
c
b
a
1
2
3
4
1
2
3
4
5
6
7
8
C4
C4
C4
C4
C4
C4
C4
d
e
g
f
c
b
a
Chương II: Phần cứng hệ thống
Hình 2.9 : Mạch nguyên lý
Trang 8
Chương II: Phần cứng hệ thống
Mạch công suất sử dụng transitor A1015 để kích các con TIP42 thông với
nguồn 5v cho tất cả các LED. Để hoạt động dùng vi điều khiển kích mức âm cho
chân số 3 của A1015
Hình 2.10 : Transitor A1015 và Tip 42
Ở đầu âm của từng đoạn LED ta dùng IFR540.
Hình 2.11 : IRF504
Dùng vi điều khiển kích mức dương vào chân số 1 để thông LED với mas.
Nối chân âm chung của 18 LED với 1 điện trở công suất 10Ω để hạn dòng.
Khi mắc điện trở công suất nối tiếp với LED điện thể giữa 2 chân của LED còn
khoảng 2v.
2.2.6. Remote điều khiển
Ta sử dụng loại remote sóng radio vì khoảng cách truyền được xa và chính xác
hơn loại sử dụng hồng ngoài. Mạch thu phát sử dụng 2 ic giải mã là SC2272-L4 và
SC2262.
Hình 2.12 : Bộ thu phát có remote
SVTH: Nguyễn Trung Nghĩa
Trang 9
Chương II: Phần cứng hệ thống
Trong đề tài sử dụng bộ thu phát sóng radio có sẵn ngoài thị trường, vì tiện lợi
và gọn đẹp. Remote có 4 nút tương ứng với với 4 kênh, để điều khiển, đây là loại
không tự giữ.
2.2.7. Chuông điện
Hình 2.13 : Chuông thật và sơ đồ nguyên lý sử dụng mạch
Sử dụng chuông điện 220, đặt điểm của chuông là tiếng chuông rất lớn, phù
họp đặt trong trường học.
Mạch điện sử dụng dụng 1transitor để đóng ngắt role. Để chuông reo kích vi
điều khiển ở mức âm.
SVTH: Nguyễn Trung Nghĩa
Trang 10
Chương III: Phần mềm hệ thống
CHƢƠNG III
PHẦN MỀM HỆ THỐNG
3. ChƣơCHƢƠNG III PHẦN MỀM HỆ THỐNG
3.1. Phần mềm điều khiển hệ thống trên vi điều khiển AVR
3.1.1. Codevison
Hình 2.14 : Giao diện codevision V2.04
Codevion là phần mềm viết code cho vi điều khiển avr. Nó dễ dùng, tự sinh code và
dễ học,nền tảng là ngôn ngữ .
SVTH: Nguyễn Trung Nghĩa
Trang 11
Chương III: Phần mềm hệ thống
Giao điện tự sinh mã CodeWizardAVR
Trong codevision phần CodeWizard là phần hỗ trợ lập trình rất thân thiện với
người dùng, người sử dụng avr có thể sử dung giao diện này để khao báo, sử
dụng các chức năng trong Avr rất dể dàng chỉ cần dánh dấu chọn vào chức
năng cần thiết là chương trình tự động sinh ra mã.
3.1.2. Giải thuật
Theo lưu đồ giải thuật bên dưới thì, chương trình chạy và thực hiện liên tục :
- Hàm đọc dữ liệu từ ic thời gian thực.
- Sau đó xử lý số liệu vào mảng để xuất số liệu giờ và phút lên bảng
LED.
- Đưa dữ liệu bao gồm: ngày, tháng, năm, giờ, phút, giây và thứ qua cổng
com lên máy tính.
Chương trình sử dụng 2 ngắt:
- Ngắt timer dùng để quét LED đưa số liệu giờ và phút ra LED.
- Ngắt rs232 nhận lệnh điều khiển từ máy tính.
SVTH: Nguyễn Trung Nghĩa
Trang 12
Chương III: Phần mềm hệ thống
Bắt đầu
Khởi tạo ban đầu
PORT I/O, Timer,
I2C ….
Ngắt timer
Quét LED
Đọc dữ liệu ngày giờ
từ PCF 8583
Xử lý số liệu
Ngắt Rs232
Nhận dữ liệu từ
máy tính
Dưa số liệu vào các
biến
điều khiển bảng
LED
Xuất số liệu qua cổng
com lên máy tính
Hình 3.1 : Lưu đồ giải thuật trên vi điều khiển AVR
3.1.3. Các phần chính trong chƣơng trình
3.1.3.1. Khai báo thƣ viện và các biến toàn cục
#include <mega32.h>
#include <thuvien.c>
#include <delay.h>
#include <stdio.h>
unsigned char h,m,s,hs,ii=1;
SVTH: Nguyễn Trung Nghĩa
Trang 13
Chương III: Phần mềm hệ thống
unsigned char ci;
char tttam=0;
enum kkkk{
hai,
ba,
tu,
nam,
sau,
bay,
chunhat
}thu;
//int nn,nnn;
unsigned nam9;
unsigned char timer9=0;
unsigned char thang9,ngay9,LED[5],tamchar;
unsigned char a1,a2,a3,a4;
struct kieugiophut{
unsigned char gio;
unsigned char phut;
};
struct kieugiokhongchuong{
unsigned char ngay1;
unsigned char thang1;
unsigned char nam1;
unsigned char ngay2;
unsigned char thang2;
unsigned char nam2;
};
struct kieugiochuong{
unsigned char ngay;
unsigned char thang;
unsigned char nam;
SVTH: Nguyễn Trung Nghĩa
Trang 14
Chương III: Phần mềm hệ thống
unsigned char gio;
unsigned char phut;
};
unsigned char tamchar;
struct kieugiophut lichtuan[7][30];
struct kieugiokhongchuong lichkhong[100];
struct kieugiochuong lichchuong[30];
unsigned char thoigianreo=5,cochuong=0,ngaycam=0;
3.1.3.2. Ngắt timer quét LED 7 đoạn
TIMSK=0x00
Cấm ngắt timer
ii>4
ii=1
LED thứ ii sáng
ba LED còn lại tắt
ii++: biến toàn cục
hiển thị LED thứ ii
TCNT0=210
Nạp lại giá trị cho timer
TIMSK=0x00
Cho ngắt timer
Hình 3.2 : Lưu đồ quét LED
SVTH: Nguyễn Trung Nghĩa
Trang 15
Chương III: Phần mềm hệ thống
// quet LED 7 doan
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Reinitialize Timer 0 value
TIMSK=0x00;
if (hs<40) cham=sang; else cham=toi;
// Place your code here
if (ii>4) ii=1;
LED7doan(LED[ii]);
switch (ii)
{
case 1:
LED1=sang;
LED2=toi;LED3=toi;LED4=toi;
break;
case 2:
LED2=sang;
LED1=toi;LED3=toi;LED4=toi;
break;
case 3:
LED3=sang;
LED1=toi;LED2=toi;;LED4=toi;
break;
case 4:
LED4=sang;
LED1=toi;LED2=toi;LED3=toi;
break;
}
ii++;
TCNT0=210;
TIMSK=0x01;
SVTH: Nguyễn Trung Nghĩa
Trang 16