Trong chương trình xử lý phím nhấn thì đầu tiên là quét ma trận phím xem có nhấn phím hay không.. Nếu nhấn từ “0-9” thì dịch trái và lưu vào máng và nếu DUD0 hay không nếu vẫn lớn hơn th
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM
BAO CAO BAI TAP CHUONG 4
Họ và tên : Phạm Minh Khang
Trang 2Ban đầu hiến thị dấu chấm Nhấn các phím từ 0 đến 9 thì xuất hiện
về ban đầu Nhấn B thì UNDO 4 cấp, có kêu bíp
a Vẽ sơ đồ khối
4 led 7 doan
0 1 2 3
| Hiển thị mắng ra 4 led | Hiển thị mảng ra 4 led Hiển thị mảng ra 4 led
( Trở về )
Trang 3Giải thích lưu đề:
Đầu tiên là khới tao port, chương trình chính và mắng 4I ( 7 phần tứ đầu là ff phần tử cuối là 7f là
dấu chấm) Gán biến DUD và tiến hành hiển thi mang4l khiến 3 led đầu tat và led thứ 3 hiển thị
dấu chấm Gọi hàm xử lý phím nhấn và lặp lai
Trong chương trình xử lý phím nhấn thì đầu tiên là quét ma trận phím xem có nhấn phím hay không Tiếp theo nếu MP< 19 sai thì xem có =B hay không nếu vẫn sai thì qua tiếp có = C hay không nếu vẫn sai thì trửo về lặp lại đến khi có nhân phim
Nếu nhấn từ “0-9” thì dịch trái và lưu vào máng và nếu DUD<4 đúng thì DUD=DUD+I rồi hiển thị
sai thi tra về
Nếu nhấn undo”B” thì xem DUD >0 hay không nếu vẫn lớn hơn thì DUD=DUD-1 rồi hiến thị sau sai thì trớ về
Nếu nhấn CLR”C” nếu đúng là xóa hết hết hiến thị rồi gán biến DUD=0 sau đó hiển thị rồi trả về
c Viết chương trình
include <tv_kit_vdk_pic_a11.c>
unsigned int8 mp;
signed int8 i, dud;
unsigned int8 m4led[8]= {Oxff, Oxff, Oxff, Oxff, Oxff, Oxff, Oxff,Ox7F};
Trang 5Khai bao thu viện, khai báo bién,mang
Gọi hàm void hienthi_4led7doanQ là hàm hiển thị 4led7doan trong đó t cho chạy vòng lặp for với biến i=0;i<4;i++ nếu i=0 lấy biến 4 của mang4l gan cho biến 1 của mảng dị 4I7d Tiếp theo gọi hàm void xoa_mang_m4led(Q để xóa mắng cũng dùng vòng lặp for
Kế tiếp là gọi hàm void b403_xuly_phimnhanQ) tuần tự như đã giải thích lưu đề dùng câu
điều kiện if else
Gọi hàm void main chương trình chính trong đó t khai báo port hiển thị và chạy vòng lặp whiile true cho ham b403_xuly_phimnhan()
Trang 7Hình 403-2 mạch protues
Trang 8
Đây là khi nhấn 0 5 6 9
Trang 9ĐIỀU Ban đầu 8 led tắt 8 phím từ 0 đến 7 điều khiến 8 led tương ứng
Patan sáng — gọi là các phím ON 8 phím từ 8 đến F điều khiển 8 led
tương ứng tắt — gọi là các phím OFF
Trang 12
Trở về
Phan tich hru dé
e = Khai bao thu vién, khai báo biên,mảng
® - Gọi hàm đk 8led on-off: đầu tiên kiểm tra xem có nhấn phím hay không nếu có nhấn thì t tiếp tục xem có nhân từ 0-7 hay ko nếu đúng thì ta lấy Y or với 1 dịch sang trái sau đó xuất
ra còn nếu t nhấn từ 8-F thì ta tiến hành lấy T and với dữ liệu 9 dịch trái mp-8 lần rối xuất
ra led sau đó trửo về
C viết chương trình
Trang 13unsigned int8 mp,y ;
& void dieu_khien_8led_on_off()
Trang 14Khai bao thu viện, khai báo bién,mang
Chương trình con điều khiên 8 led on-off: gan MP = key_4x4_dw() sau dé ding lénh if kiém tra mp<8 hay ko Nếu nhỏ hơn thì ta ta thực hiện lệnh y=y| (<< mp); y như lưu đồ đã gaiir thích rồi
ta xuất led ra Tiếp tục nếu mp<16 cũng thực thiện lệnh 1f như lưu đồ đã gan thích
Gọi chương trình chinh void main ta gan biến y=0 rồi cho chạy vòng lặp while (true) với chương trinh con là đieu khien 8led on off)
d Mô phỏng và chạy thực trên kit
Trang 15MINH-KHANG-09
NGOC-THACH-20
Trang 16
1ï" F.F IIIIIIIIII|IIIIIIIIIIIIIIIIIIII|IIIIIIII
*§ SIRIRIN| RIS RỊR
sElslslslslsls in dạ 3Eblklspbll dhbblgHbl
mm ei) = "mm tt
IIIIIIIIII|IIIIIIIIIIIIIIIIII[IIIIIIII
ola! gial eo
sJ2|RjRjR|S|JS|š ÑJRja|<J°J°|°|° #I*J°|*}=|°|e|=| "
Ban đầu hiển thị giới hạn là 50, giá trị đếm counter T0 bằng 0, chưa
Ế cho phép phép: có xung cũng không đếm Khi nhấn Run đèn sáng
báo hiệu cho phép đếm Nhấn Stop thì ngừng, đèn báo hiệu tắt
a Sơ đồ khối
Trang 17cấu hình, khởi tao port Timer0: tắt
Biến t0, t0_tam, g_han=50
® - Đầu tiên là khởi tạo port, chương trình chính, khai báo biến
se - Thực hiện các chương trình con:
Trang 18nếu có nhấn thì ta cho phép tìmer0 hoạt động và cho led sáng
- Phím Stop: thì ngược lại nếu nhấn thì ngừng timer0 và cho led tắt
- _ Đếm xung ngoại T0: đọc gid tri timer0 cho bién t0 sau đó kt xem biến t0 có khác biến t0_tam hay ko nếu khcas thì cập nhật rồi gán giá trị ra ngoài sau
đó xem (0< hơn gh hay không nếu không thì buzzer kêu và quay lại
Trang 20e - Khai báo thư viện, khai báo biên,mảng
® void b411 hienthi_4led7doan() là chương trình bài 411 đã viết ở trước
s Đây là chương trinh cua phim RUN va STOP:
Về chương trình phím STOP thi đầu tiên kiểm tra nút nhân Nếu không nhắn thì thoát ¡f còn nếu có nhấn thì thực hiện điều kiện if Sau đó khởi tạo timer0 off nếu có xung vào cũng không đếm Gán Ip=0 sau đó xuất ra 32 led đơn thì ca 32 led đều tắt
Về chương trình phím RUN thì đầu tiên cũng kiểm tra nút nhắn giống nút STOP Sau đó khởi tạo timer0 là đếm xung ngoại cạnh lên hệ số chia = 1 Gán lIp=0xffff rồi cho xuất 32led đơn thi 16led phải sẽ sáng báo hiệu cho phép đếm xung
e Tiép theo la chuong trinh void b412_dem_xung_ngoai_t0() chu trình thực hiện như đã trình bày ở lưu đồ ta dùng điều kiện if dé thực hiện
© - Chương trình chính void main dùng vòng lặp while(true) cho 3 chương trình con RUN, STOP, b412 dem xung ngoai (00)
d mô phỏng
Trang 22
Khi nhắn STOP
Mach protues cua Ngoc Thach-20
1® bait 12 - Proteus & Professional - Schematic Capture = a x
Fle Edit View Tool Design Graph Debug Library Tomplate SyZem Halp
Trang 233W bai412 - Proteus 8 Professioral - Schematic Capture Som
Fe Eqit View Tool Desi h Debug Lirary Template SyZem Help
DORR ATSQGES="O AMM 4@ee0 OC RR TEM Ow? Ban aXai
#Q Pee aee@ces 90 ~yme eow me Khi nhan STOP
Link quay bài 412 cho nhóm chúng em: h((ps://www.youtube.com/watch?v=yYfNh77 khc Bài 413 :
— :_VĐK PIC
ĐIỀU Giống bài 412 có them nút UD đề chọn hiển thị đếm lên hoặc dém
KHIỂN xuống Ban đầu đếm lên, có đèn báo hiệu, nhấn UD thì đảo đếm
ược lại Đếm trong giới hạn 0 đến 50,
lên thành đếm xuống hoặc n
a Vẽ sơ đồ khối
Trang 24
s - Đếm lên: 8 led thấp trai sáng, 8 led cao trái tắt
s - Đếm xuống: 8 led thấp trái tắt, 8 led cáo trái sáng
© - Ngưng đếm thi 16 led tat
b.Phân tích và vẽ lưu đồ
Trang 25cấu hình, khởi tạo port Timer0: tắt
Biến t0, t0_tam, g_han=50
động
báo hiệu bằng đèn led
Trang 26
'
t0_ đọc giá trị tỉmer0
ni i a
Dang | đúng
đảo tt_ud il | hiển thị t0 — | hiển thị [g_han -t0]
7 t0= giới hạn -t0, khởi tạo
Trang 29e - Khai báo thư viện, khai báo biên,mảng
s Đây là chương trinh cua phim RUN va STOP:
- Về chương trình phím STOP thi đầu tiên kiểm tra nút nhân Nếu không nhắn thi thoat if còn nếu có nhấn thì thực hiện điều kiện if Sau đó khởi tạo timer0 off nếu có xung vào cũng không đếm Gán Ip=0 sau đó xuất ra 32 led đơn thì ca 32 led đều tắt
- _ Về chương trình phím RUN thi đầu tiên cũng kiểm tra nút nhắn giống nút STOP Sau đó khởi tạo timer0 là đếm xung ngoại cạnh lên hệ số chia = 1 Gán lIp=0xffff rồi cho xuất 32led đơn thi 16led phải sẽ sáng báo hiệu cho phép đếm xung
s Chương trình void b4l3 đem xung ngoai t0Q thực hiện như đã trình bày ở lưu đồ
s - Chương trình chính void main
d Mô phỏng và chạy trên kit
Trang 31ĐIỀU Giống bài 412, có thêm 2 nút UP và DW dùng để chỉnh giới hạn ban
KHIỂN đầu là 50 Khi nhấn UP thì tăng giới hạn, nhấn DW thì giảm giới
Trang 32
C phím run ) C phim stop )
cấu hình, khởi tạo port Timer0: tắt
Biến t0, t0_tam, g_han=50
Trang 33
Tương tự 413 nhưng thêm sơ đồ nút up and dw
Kiểm tra xem có nhấn up hay không nếu có thì chính giới hạn nếu biến g_han lớn hơn 99 thì cuộn về bang 0 cho hién thị sai thì xem có nhân dw hay không không thì trả về còn có thì giảm giá trị ngược lại với up rồi cho hiển thị
c viết chương trình
Trang 37d mô phỏng
Trang 38BT1
Br fess oe
Trang 39Ve lwu do
Giống bài 414, thay bằng ma trận phim Phim A la stop, phim D la Run Phím F cho phép cài giới hạn 2 số, phím E thì không cho phép cài giới hạn Có led đơn báo các trạng thái cho phép đếm, cài
Trang 40chương trình chính
cấu hình, khởi tạo port Timer0: tắt
Biến t0_cai=0,t0, t0_tam, g_han=50
Trang 41
đúng
báo hiệu bằng đèn led báo hiệu bằng đèn led
Trang 42signed int8 donvi, chuc;
int1 tt_cai= disable;
Trang 45t9 tamz1 ; g hanz 50; donvi= @; chuc= 5;
g_han= chuc*10+ donvi; 1t=0; lp=0e;
" `
Trang 47Bắt đầu chương trình
COUNTER O = (®) a ee
Se
B11
COUNTER 1 = pee am
Nhấn nút enable cho cài giá trị giưới hạn
SO 5: TRAN VANA Iitfl—-= ® `