Gói cước data MobiFone ngắn ngày

 Mọi thuê bao trả trước, trả sau của MobiFone đều có thể đăng ký gói ngắn ngày 3 ngày , 7 ngày sử dụng theo nhu cầu . Tận hưởng 3GB – 7GB dùng hết ngắt kết nối hoặc trừ data vào gói 3G/4G chính

Tên gói Đăng ký nhanh
D15
(15.000đ/ 3 ngày)
ĐĂNG KÝ
3 GB/3 ngày
D30 
(30.000đ/ 7 ngày)
ĐĂNG KÝ
7 GB/7 ngày

Top 5 gói cước 4G MobiFone được đăng ký nhiều nhất

Các bạn có thể đăng ký các gói cước theo tháng theo các link ĐĂNG KÝ hoặc quét mã QR trong phần bên dưới bảng này để đăng ký nhanh nhất:

Tên gói Đăng ký nhanh 
C120T
(120.000đ/ 30 ngày)
ĐĂNG KÝ 
  • 6GB/ngày => 180GB/30 ngày
  • Miễn phí cuộc gọi nội mạng từ phút thứ 2
  • 100 phút gọi trong nước
HD90
(90.000đ/30 ngày)
Áp dụng cho mọi thuê bao
ĐĂNG KÝ 
8GB/30 ngày
C90N
(90.000đ/30 ngày)
ĐĂNG KÝ 
  • 4GB/ngày => 120GB/30 ngày
  • Miễn phí 1000 phút nội mạng
  • Miễn phí 50 phút gọi liên mạng
NCT79
(79.000đ/30 ngày)
ĐĂNG KÝ
  • 3GB/ ngày => 90GB/30 ngày
  • Hết data truy cập  tốc độ 5Mbps không giới hạn
ED60
(60.000đ/ 30 ngày)
ĐĂNG KÝ 
  • 2GB/ ngày ( 60GB/30 ngày)
  • Hết data miễn phí truy cập tiếp
D30
(30.000đ/7 ngày)
ĐĂNG KÝ 
7GB/7 ngày

 

QUÉT MÃ QR ĐỂ ĐĂNG KÝ NHANH CÁC GÓI CƯỚC ĐƯỢC NHIỀU NGƯỜI SỬ DỤNG NHẤT DƯỚI ĐÂY HOẶC CLICK VÀO LINK ĐĂNG KÝ ĐỂ ĐĂNG KÝ DỄ DÀNG NHẤT.
THÔNG TIN CHI TIẾT VỀ CÁC GÓI CƯỚC XEM BẢNG BÊN TRÊN.
GÓI C120T


GÓI HD90


GÓI C90N


GÓI NCT79


GÓI ED60


GÓI D30

Danh sách tất cả các gói cước 4G Mobifone

DANH SÁCH GÓI CƯỚC
             
             
             
STT Tên gói cước Loại gói cước Giá cước (VNĐ) Chu kỳ Giới thiệu Đăng ký nhanh
1 12C120 Hot, Data, Thoại & SMS                                      1,440,000 420 Ngày 1440GB + Free phút gọi + … Đăng ký
2 C90N Hot, Data, Thoại & SMS                                            90,000 30 Ngày 120GB + 1050 phút gọi … Đăng ký
3 C120 Hot, Data                                          120,000 30 Ngày 120GB + Free phút gọi + … Đăng ký
4 Y60  Data                                            60,000 30 Ngày 60 GB tốc độ cao Đăng ký
5 12MAX90 Hot, Trả trước                                      1,080,000 495 Ngày 2880GB tốc độ cao Đăng ký
6 FD60 Hot, Data                                            60,000 30 Ngày 60GB tốc độ cao Đăng ký
7 ED60 Hot, Data                                            60,000 30 Ngày 60GB + Tài khoản mobiEdu Đăng ký
8 AG60 Hot, Data                                            60,000 30 Ngày 60GB/chu kì + Tài khoản mobiAgri Đăng ký
9 CF60 Hot, Data, Thoại & SMS                                            60,000 30 Ngày 60 GB data tốc độ cao Đăng ký
10 THAGA60 Hot, Data                                            60,000 30 Ngày 120 GB Tốc độ cao Đăng ký
11 HP2 Hot, Data, Thoại & SMS                                          200,000 60 Ngày 8GB + 40 phút gọi trong nước và quốc tế Đăng ký
12 F200  Data                                          200,000 30 Ngày 20GB tốc độ cao Đăng ký
13 GYM1 Hot, Data                                          100,000 30 Ngày 3GB tốc độ cao Đăng ký
14 6DIP79  Data                                          474,000 180 Ngày 48GB tốc độ cao Đăng ký
15 3Z70  Data                                          210,000 90 Ngày 45GB tốc độ cao Đăng ký
16 3FV99 Hot, Data                                          297,000 90 Ngày 180GB + Free truy cập FPT Play, Viber Đăng ký
17 FV119 Hot, Data, Thoại & SMS                                          119,000 30 Ngày 90GB + 530 phút gọi + … Đăng ký
18 3C120 Hot, Data, Thoại & SMS                                          360,000 90 Ngày 360GB + Free phút gọi + … Đăng ký
19 21G12  Data                                          708,000 420 Ngày 1050GB tốc độ cao Đăng ký
20 3DIP79  Data                                          237,000 90 Ngày 24GB tốc độ cao Đăng ký
21 F150  Data                                          150,000 90 Ngày 9GB tốc độ cao Đăng ký
22 24GIP  Data                                          149,000 30 Ngày 120GB tốc độ cao Đăng ký
23 GV119  Data, Thoại & SMS                                          119,000 30 Ngày 120GB + 530 phút gọi … Đăng ký
24 ON30  Data                                            30,000 30 Ngày 300MB + Free truy cập VTVCab ON Đăng ký
25 CS60 Hot, Data                                            60,000 30 Ngày 6GB tốc độ cao Đăng ký
26 6CV99 Hot, Data                                          594,000 210 Ngày 420GB tốc độ cao Đăng ký
27 24GDIP  Data                                          219,000 30 Ngày 150GB tốc độ cao Đăng ký
28 12CS119 Hot, Data, Thoại & SMS                                      1,428,000 420 Ngày 1260GB + 7420 phút gọi … Đăng ký
29 9GV99  Data                                          891,000 330 Ngày 660GB tốc độ cao/ chu kỳ Đăng ký
30 CS6N Hot, Data                                          540,000 180 Ngày 1080GB tốc độ cao Đăng ký
31 RC2  Data, Thoại & SMS                                          500,000 7 Ngày 1GB + 20 phút gọi đi + 20 SMS + 20 phút nhận cuộc gọi Đăng ký
32 TQT299  Thoại & SMS                                          299,000 30 Ngày 380 phút gọi quốc tế Đăng ký
33 MBH6  Trả trước                                          900,000 180 Ngày Ưu đãi wifi tốc độ cao, ưu đãi truyền hình cap… Đăng ký
34 6F90N Hot, Data                                          540,000 180 Ngày 54GB tốc độ cao Đăng ký
35 MBH12  Data                                      1,800,000 360 Ngày Ưu đãi wifi tốc độ cao, ưu đãi truyền hình cap… Đăng ký
36 DATA5 Hot, Data                                            50,000 30 Ngày 10GB tốc độ cao Đăng ký
37 6MAX120 Hot, Trả trước                                          720,000 255 Ngày 2160GB tốc độ cao Đăng ký
38 3CF120 Hot, Data, Thoại & SMS                                          360,000 90 Ngày 240GB tốc độ cao + 750 phút thoại Đăng ký
39 6CF120 Hot, Data, Thoại & SMS                                          720,000 210 Ngày 480GB tốc độ cao + 1750 phút thoại Đăng ký
40 ESIM12  Data                                      1,080,000 434 Ngày 2604GB tốc độ cao Đăng ký
41 EVIP12  Data                                      3,480,000 434 Ngày Không giới hạn dung lượng data tốc độ cao Đăng ký
42 C150K Hot, Data, Thoại & SMS                                          150,000 30 Ngày 7GB tốc độ cao/ngày + Free phút gọi… Đăng ký
43 6FD60 Hot, Data                                          360,000 210 Ngày 420GB tốc độ cao Đăng ký
44 12FD60 Hot, Data                                          720,000 420 Ngày 840GB tốc độ cao Đăng ký
45 6NCT99  Data                                          594,000 210 Ngày 840 GB tốc độ cao + 1 tài khoản VIP NCT Đăng ký
46 3SM90 Hot, Data, Thoại & SMS                                          270,000 90 Ngày 5Gb Data tốc độ cao/ngày + Miễn phí cuộc gọi dưới 10 phút + … Đăng ký
47 ALO50 Hot, Trả trước, Thoại & SMS                                            50,000 31 Ngày 1000 phút thoại nội mạng + 100 phút thoại trong nước Đăng ký
48 6SM120 Hot, Data, Thoại & SMS                                          720,000 180 Ngày 7 Gb Data tốc độ cao/ngày + Miễn phí cuộc gọi dưới 10 phút + … Đăng ký
49 HDP100 Hot, Data, Thoại & SMS                                          100,000 30 Ngày 3GB + 100 phút nội mạng Đăng ký
50 HD90 Hot, Data                                            90,000 30 Ngày 8GB tốc độ cao Đăng ký
51 MC90 Hot, Trả trước, Thoại & SMS                                            90,000 60 Ngày 5GB + Free phút gọi + … Đăng ký
52 CB3  Data, Thoại & SMS                                            30,000 30 Ngày 2,3GB + 330 phút gọi Đăng ký
53 6Z70  Data                                          420,000 210 Ngày 105GB tốc độ cao Đăng ký
54 9FV119 Hot, Data, Thoại & SMS                                      1,071,000 270 Ngày 810GB + 4770 phút gọi + … Đăng ký
55 HD200 Hot, Data                                          200,000 30 Ngày 18GB tốc độ cao Đăng ký
56 HDY  Data                                          100,000 30 Ngày 3GB tốc độ cao Đăng ký
57 6FV99 Hot, Data                                          594,000 180 Ngày 360GB + Free truy cập FPT Play, Viber Đăng ký
58 3D70  Data                                          210,000 90 Ngày 45GB tốc độ cao Đăng ký
59 6CS120 Hot, Data, Thoại & SMS                                          720,000 180 Ngày 720GB + 3300 phút gọi … Đăng ký
60 24GIP12  Data                                      1,788,000 420 Ngày 2100GB tốc độ cao Đăng ký
61 24GDIP6  Data                                      1,314,000 210 Ngày 1260GB tốc độ cao Đăng ký
62 12GV99  Data                                      1,188,000 450 Ngày 900GB tốc độ cao/chu kỳ Đăng ký
63 D70  Data                                            70,000 30 Ngày 15GB tốc độ cao Đăng ký
64 TT80 Hot, Data                                            80,000 30 Ngày 3GB tốc độ cao Đăng ký
65 CS119 Hot, Data, Thoại & SMS                                          119,000 30 Ngày 90GB + 530 phút gọi … Đăng ký
66 6MD100 Hot, Data                                          600,000 180 Ngày 360GB + Tài khoản mobiEdu, mSkill Đăng ký
67 12CV99 Hot, Data                                      1,188,000 420 Ngày 840GB tốc độ cao Đăng ký
68 3CV119 Hot, Data                                          357,000 90 Ngày 360GB + 1590 phút gọi … Đăng ký
69 12CS  Data, Thoại & SMS                                      1,080,000 420 Ngày 900GB + 14700 phút gọi … Đăng ký
70 MFY199 Hot, Data, Thoại & SMS                                          199,000 30 Ngày 10GB + 520 phút gọi … Đăng ký
71 3MD100 Hot, Data                                          300,000 90 Ngày 180GB + Tài khoản mobiEdu, mSkill Đăng ký
72 TQT199  Thoại & SMS                                          199,000 30 Ngày 250 phút gọi quốc tế Đăng ký
73 TQT99  Thoại & SMS                                            99,000 30 Ngày 100 phút gọi quốc tế Đăng ký
74 12F90N Hot, Data                                      1,080,000 360 Ngày 108GB tốc độ cao Đăng ký
75 12DATA5 Hot, Data                                          600,000 360 Ngày 120GB tốc độ cao Đăng ký
76 MAX90 Hot, Trả trước                                            90,000 30 Ngày 150GB tốc độ cao Đăng ký
77 6MAX90 Hot, Trả trước                                          540,000 255 Ngày 1440GB tốc độ cao Đăng ký
78 12CF150 Hot, Data, Thoại & SMS                                      1,800,000 420 Ngày 1200GB tốc độ cao + 4900 phút thoại Đăng ký
79 ESIM290  Data, Thoại & SMS                                          290,000 31 Ngày 186GB tốc độ cao + Free gọi nội mạng dưới 10 phút… Đăng ký
80 3NCT79  Data                                          237,000 90 Ngày 180GB tốc độ cao + 1 tài khoản VIP NCT… Đăng ký
81 12C120T Hot, Data, Thoại & SMS                                      1,440,000 420 Ngày 6GB Tốc độ cao/ngày + Miễn phí phút gọi + … Đăng ký
82 6NCT60 Hot, Data                                          360,000 210 Ngày 420 GB tốc độ cao + 1 tk VIP NCT Đăng ký
83 12CF60 Hot, Data, Thoại & SMS                                          720,000 360 Ngày 720GB data tốc độ cao Đăng ký
84 6CF60 Hot, Data, Thoại & SMS                                          360,000 180 Ngày 360GB data tốc độ cao Đăng ký
85 F120  Data                                          120,000 30 Ngày 12GB tốc độ cao Đăng ký
86 6CS100D Hot, Data                                          600,000 180 Ngày 360GB tốc độ cao Đăng ký
87 CB5  Data, Thoại & SMS                                            50,000 60 Ngày 5GB + 550 phút gọi Đăng ký
88 FIKA  Data                                            85,000 30 Ngày 8.5GB trong vùng + 1GB ngoài vùng Đăng ký
89 MC299  Data, Thoại & SMS                                          299,000 60 Ngày 12GB + Free phút gọi + … Đăng ký
90 3KV60 Hot, Data                                          180,000 90 Ngày  15GB tốc độ cao Đăng ký
91 12D70  Data                                          840,000 420 Ngày 210GB tốc độ cao Đăng ký
92 D15 Hot, Data                                            15,000 3 Ngày 3GB tốc độ cao Đăng ký
93 HDP200 Hot, Data, Thoại & SMS                                          200,000 30 Ngày 6.5GB + 200 phút nội mạng Đăng ký
94 21G3  Data                                          177,000 90 Ngày 225GB tốc độ cao Đăng ký
95 X30 Hot, Data                                          100,000 30 Ngày 2.5GB tốc độ cao Đăng ký
96 3CS  Data, Thoại & SMS                                          270,000 90 Ngày 225GB + 3150 phút gọi … Đăng ký
97 6CS  Data, Thoại & SMS                                          540,000 210 Ngày 450GB + 7350 phút gọi … Đăng ký
98 6GV99  Data                                          594,000 240 Ngày 480GB tốc độ cao/chu kỳ Đăng ký
99 Z70  Data                                            70,000 30 Ngày 15GB tốc độ cao Đăng ký
100 12Y60  Data                                          720,000 360 Ngày 720 GB tốc độ cao Đăng ký
101 MFY99 Hot, Data, Thoại & SMS                                            99,000 30 Ngày 5GB + 260 phút gọi … Đăng ký
102 24GDIP12  Data                                      2,628,000 420 Ngày 2520GB tốc độ cao Đăng ký
103 8E  Thoại & SMS                                            40,000 30 Ngày 1500 phút nội mạng + 3000 SMS + … Đăng ký
104 6CS60 Hot, Data                                          360,000 210 Ngày 42GB tốc độ cao Đăng ký
105 3ED100 Hot, Data                                          300,000 90 Ngày 360GB + Tài khoản mobiEdu, mSkill Đăng ký
106 6CF100 Hot, Data, Thoại & SMS                                          600,000 180 Ngày 30GB + 1560 phút gọi + 1380 SMS + … Đăng ký
107 12CS60 Hot, Data                                          720,000 420 Ngày 84GB tốc độ cao Đăng ký
108 CB  Thoại & SMS                                              9,000 30 Ngày Dịch vụ chặn cuộc gọi MobiFone Đăng ký
109 GV99  Data                                            99,000 30 Ngày 60GB tốc độ cao Đăng ký
110 12HD120N Hot, Data                                      1,200,000 360 Ngày 720GB tốc độ cao Đăng ký
111 3MAX90 Hot, Trả trước                                          270,000 105 Ngày 450GB tốc độ cao Đăng ký
112 R500  Thoại & SMS                                          500,000 7 Ngày 10 phút gọi đi + 10 phút nhận cuộc gọi + 30 SMS Đăng ký
113 RD300  Data                                          300,000 7 Ngày 8MB tốc độ cao Đăng ký
114 RH  Data                                          100,000 7 Ngày 200MB tốc độ cao Đăng ký
115 RC1  Data, Thoại & SMS                                          250,000 7 Ngày 300MB + 10 phút gọi đi + 10 SMS + 10 phút nhận cuộc gọi Đăng ký
116 TQT49  Thoại & SMS                                            49,000 7 Ngày 40 phút gọi quốc tế Đăng ký
117 CS3N Hot, Data                                          270,000 90 Ngày 540GB tốc độ cao Đăng ký
118 3MAX120 Hot, Trả trước                                          360,000 105 Ngày 720GB tốc độ cao Đăng ký
119 ESIM6                                            540,000 217 Ngày 1302GB tốc độ cao Đăng ký
120 ESIM490  Data, Thoại & SMS                                          490,000 31 Ngày Không giới hạn data tốc độ cao + Free gọi nội mạng dưới 20 phút…. Đăng ký
121 6NCT79  Data                                          474,000 210 Ngày 360GB tốc độ cao + 1 tài khoản VIP NCT Đăng ký
122 12NCT99  Data                                      1,188,000 420 Ngày 1680 GB tốc độ cao + 1 tài khoản VIP NCT… Đăng ký
123 12SM60 Hot, Data, Thoại & SMS                                          720,000 360 Ngày 3 Gb Tốc độ cao/ngày + Miễn phí cuộc gọi dưới 10 phút + … Đăng ký
124 6SM90 Hot, Data, Thoại & SMS                                          540,000 180 Ngày 5Gb Data tốc độ cao/ngày + Miễn phí cuộc gọi dưới 10 phút + … Đăng ký
125 SM120 Hot, Data, Thoại & SMS                                          120,000 30 Ngày 7 Gb Data tốc độ cao/ngày + Miễn phí cuộc gọi dưới 10 phút + … Đăng ký
126 3SM120 Hot, Data, Thoại & SMS                                          360,000 90 Ngày 7 Gb Data tốc độ cao/ngày + Miễn phí cuộc gọi dưới 10 phút + … Đăng ký
127 3DTHN70  Data                                          210,000 90 Ngày 3GB Data tốc độ cao/ngày + Miễn phí data truy cập Clip.tv, Tiktok, … Đăng ký
128 3CF60 Hot, Data, Thoại & SMS                                          180,000 90 Ngày 180 GB data tốc độ cao Đăng ký
129 SHIP120 Hot, Data, Thoại & SMS                                          120,000 31 Ngày 186GB + Miễn phí truy cập APP vận chuyển, giao hàng + … Đăng ký
130 DP1500 Hot, Data, Thoại & SMS                                      1,500,000 90 Ngày 15GB + 1500 phút gọi + 1500 SMS nội mạng Đăng ký
131 HD400 Hot, Data                                          400,000 30 Ngày 44GB tốc độ cao Đăng ký
132 T59  Trả trước, Thoại & SMS                                            59,000 30 Ngày 30 phút ngoại mạng + 1000 phút nội mạng + … Đăng ký
133 XP30  Data                                            40,000 30 Ngày 400MB + Free xem phim trên iflix Đăng ký
134 D30 Hot, Data                                            30,000 7 Ngày 7GB tốc độ cao Đăng ký
135 HSV50 Hot, Data                                            50,000 30 Ngày 5GB tốc độ cao Đăng ký
136 12FV99 Hot, Data                                      1,188,000 360 Ngày 720GB + Free truy cập FPT Play, Viber Đăng ký
137 THAGA5 Hot, Data                                            50,000 30 Ngày 100GB trong vùng + 2GB ngoài vùng Đăng ký
138 HSV25 Hot, Data                                            25,000 30 Ngày 2GB tốc độ cao Đăng ký
139 F300  Data                                          300,000 30 Ngày   Đăng ký
140 6Y60  Data                                          360,000 180 Ngày 360GB tốc độ cao Đăng ký
141 3CF100 Hot, Data, Thoại & SMS                                          300,000 90 Ngày 15GB + 780 phút gọi + 690 SMS + … Đăng ký
142 24THAGA15  Data                                          600,000 360 Ngày Miễn phí 60 GB truy cập data tốc độ cao/ tháng Đăng ký
143 TS4G  Data                                            99,000 30 Ngày Miễn phí 5 GB data tốc độ cao/ ngày (150 GB/ chu kì) Đăng ký
144 MD100 Hot, Data                                          100,000 30 Ngày 60GB + Tài khoản mobiEdu, mSkill Đăng ký
145 CV99 Hot, Data                                            99,000 30 Ngày 60GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-CV99?rf=091ISA
146 6CV119 Hot, Data                                          714,000 210 Ngày 840GB + 3710 phút gọi … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-6CV119?rf=091ISA
147 MFY99T Hot, Data, Thoại & SMS                                            99,000 30 Ngày 5GB + 260 phút gọi … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-MFY99T?rf=091ISA
148 12HD90N Hot, Data                                          900,000 360 Ngày 360GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-12HD90N?rf=091ISA
149 ED100 Hot, Data                                          100,000 30 Ngày 120GB + Tài khoản mobiEdu, mSkill https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-ED100?rf=091ISA
150 CV119 Hot, Data, Thoại & SMS                                          119,000 30 Ngày 120GB + 530 phút gọi … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-CV119?rf=091ISA
151 8P  Trả trước, Thoại & SMS                                            80,000 30 Ngày 1500 phút nội mạng + 1500 SMS nội mạng https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-8P?rf=091ISA
152 RD500  Data                                          500,000 7 Ngày 15MB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-RD500?rf=091ISA
153 3DATA5 Hot, Data                                          150,000 90 Ngày 30GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-3DATA5?rf=091ISA
154 DN90 Hot, Trả trước                                            90,000 30 Ngày 150GB tốc độ cao (Trong khu vực … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-DN90?rf=091ISA
155 3DN90 Hot, Trả trước                                          270,000 105 Ngày 525GB tốc độ cao (Trong khu vực… https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-3DN90?rf=091ISA
156 EVIP6  Data                                      1,740,000 217 Ngày Không giới hạn dung lượng data tốc  độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-EVIP6?rf=091ISA
157 12NCT79  Data                                          948,000 420 Ngày 720GB tốc độ cao + 1 tài khoản VIP NCT… https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-12NCT79?rf=091ISA
158 6C150K Hot, Data, Thoại & SMS                                          900,000 210 Ngày 7GB tốc độ cao/ngày + Free phút gọi… https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-6C150K?rf=091ISA
159 3NCT60 Hot, Data                                          180,000 90 Ngày 180 GB tốc độ cao + 1 tk VIP NCT https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-3NCT60?rf=091ISA
160 10BLTS Hot, Data                                          600,000 360 Ngày 2GB data/ ngày + … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-10BLTS?rf=091ISA
161 C120T Hot, Data, Thoại & SMS                                          120,000 30 Ngày 6GB Tốc độ cao/ngày + Miễn phí phút gọi + … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-C120T?rf=091ISA
162 6SM60 Hot, Data, Thoại & SMS                                          360,000 180 Ngày 3 Gb Tốc độ cao/ngày + Miễn phí cuộc gọi dưới 10 phút + … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-6SM60?rf=091ISA
163 3SHIP120 Hot, Data, Thoại & SMS                                          360,000 93 Ngày 558GB + Miễn phí truy cập APP vận chuyển, giao hàng + … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-3SHIP120?rf=091ISA
164 NCT60 Hot, Data                                            60,000 30 Ngày 60 GB tốc độ cao + 1 tk VIP NCT https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-NCT60?rf=091ISA
165 SM60 Hot, Data, Thoại & SMS                                            60,000 30 Ngày 3 Gb Tốc độ cao/ngày + Miễn phí cuộc gọi dưới 10 phút + … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-SM60?rf=091ISA
166 HDP120 Hot, Data, Thoại & SMS                                          120,000 30 Ngày 4GB + 120 phút nội mạng https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-HDP120?rf=091ISA
167 F500  Data                                          500,000 360 Ngày 96GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-F500?rf=091ISA
168 6CS100C Hot, Data, Thoại & SMS                                          600,000 180 Ngày 5GB + 50 phút ngoại mạng + 100 phút nội mạng https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-6CS100C?rf=091ISA
169 HD120 Hot, Data                                          120,000 30 Ngày 10GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-HD120?rf=091ISA
170 C190                                            190,000 30 Ngày 60GB + Free phút gọi + … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-C190?rf=091ISA
171 MC149  Data, Thoại & SMS                                          149,000 60 Ngày 8GB + Free phút gọi + … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-MC149?rf=091ISA
172 9FV99 Hot, Data                                          891,000 270 Ngày 540GB + Free truy cập FPT Play, Viber https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-9FV99?rf=091ISA
173 12Z70  Data                                          840,000 420 Ngày 210GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-12Z70?rf=091ISA
174 KV60 Hot, Data                                            60,000 60 Ngày  5GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-KV60?rf=091ISA
175 HD99FIM  Data                                            99,000 30 Ngày 4GB + Free truy cập FIM+ https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-HD99FIM?rf=091ISA
176 C390  Data, Thoại & SMS                                          390,000 30 Ngày 210GB + Free phút gọi + … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-C390?rf=091ISA
177 HD500 Hot, Data                                          500,000 30 Ngày 55GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-HD500?rf=091ISA
178 3GV99  Data                                          297,000 120 Ngày 240GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-3GV99?rf=091ISA
179 12GV119  Data, Thoại & SMS                                      1,428,000 420 Ngày 1680GB + 6360 phút gọi … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-12GV119?rf=091ISA
180 24G3  Data                                          297,000 90 Ngày 450GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-24G3?rf=091ISA
181 24G6  Data                                          594,000 210 Ngày 1050GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-24G6?rf=091ISA
182 24G12  Data                                      1,188,000 420 Ngày 2100GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-24G12?rf=091ISA
183 3CS119 Hot, Data, Thoại & SMS                                          357,000 90 Ngày 270GB + 1590 phút gọi … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-3CS119?rf=091ISA
184 12ED100 Hot, Data                                      1,200,000 420 Ngày 1680GB + Tài khoản mobiEdu, mSkill https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-12ED100?rf=091ISA
185 6ED100 Hot, Data                                          600,000 210 Ngày 840GB + Tài khoản mobiEdu, mSkill https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-6ED100?rf=091ISA
186 24GIP6  Data                                          894,000 210 Ngày 1050GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-24GIP6?rf=091ISA
187 3TS4G  Data                                          297,000 90 Ngày 450GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-3TS4G?rf=091ISA
188 6HD120 Hot, Data                                          600,000 180 Ngày 72GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-6HD120?rf=091ISA
189 12HD200N Hot, Data                                      2,000,000 360 Ngày 1080GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-12HD200N?rf=091ISA
190 C120N Hot, Data, Thoại & SMS                                          120,000 30 Ngày 120GB + Free phút gọi + … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-C120N?rf=091ISA
191 B2  Thoại & SMS                                          300,000 30 Ngày 4 phút gọi đi + 4 phút nhận cuộc gọi + 20 SMS https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-B2?rf=091ISA
192 MB188 Hot, Data, Thoại & SMS                                          188,000 30 Ngày 188GB + 1888 phút nội mạng + 188 phút ngoại mạng https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-MB188?rf=091ISA
193 3F90N Hot, Data                                          270,000 90 Ngày 27GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-3F90N?rf=091ISA
194 CF150 Hot, Data, Thoại & SMS                                          150,000 30 Ngày 100GB tốc độ cao + 350 phút thoại https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-CF150?rf=091ISA
195 CF120 Hot, Data, Thoại & SMS                                          120,000 30 Ngày 80GB tốc độ cao + 250 phút thoại https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-CF120?rf=091ISA
196 12MAX120 Hot, Trả trước                                      1,440,000 495 Ngày 4320GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-12MAX120?rf=091ISA
197 ESIM1  Data                                            90,000 31 Ngày 186GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-ESIM1?rf=091ISA
198 12C150K Hot, Data, Thoại & SMS                                      1,800,000 420 Ngày Miễn phí 7GB data/ngày + Free phút gọi… https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-12C150K?rf=091ISA
199 C120K Hot, Data, Thoại & SMS                                          120,000 30 Ngày 6GB tốc độ cao/ngày + Free phút gọi… https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-C120K?rf=091ISA
200 NCT79  Data                                            79,000 30 Ngày 60GB tốc độ cao + 1 tài khoản VIP NCT… https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-NCT79?rf=091ISA
201 NCT99  Data                                            99,000 30 Ngày 120 GB tốc độ cao + 1 tài khoản VIP NCT… https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-NCT99?rf=091ISA
202 BLTS Hot, Data                                            60,000 30 Ngày 2GB data/ ngày + … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-BLTS?rf=091ISA
203 3OF70  Data, Thoại & SMS                                          210,000 90 Ngày 2GB GB tốc độ cao/ngày + phút thoại nội mạng, ngoại mang, … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-3OF70?rf=091ISA
204 12NCT60 Hot, Data                                          720,000 420 Ngày 840 GB tốc độ cao + 1 tk VIP NCT https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-12NCT60?rf=091ISA
205 6SHIP120 Hot, Data, Thoại & SMS                                          600,000 186 Ngày 1116GB + Miễn phí truy cập APP vận chuyển, giao hàng + … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-6SHIP120?rf=091ISA
206 12SM120 Hot, Data, Thoại & SMS                                      1,440,000 360 Ngày 7 Gb Data tốc độ cao/ngày + Miễn phí cuộc gọi dưới 10 phút + … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-12SM120?rf=091ISA
207 3NCT99  Data                                          297,000 90 Ngày 360 GB tốc độ cao + 1 tài khoản VIP NCT… https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-3NCT99?rf=091ISA
208 6SHIP99 Hot, Data, Thoại & SMS                                          495,000 186 Ngày 372GB + Miễn phí truy cập APP vận chuyển, giao hàng + … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-6SHIP99?rf=091ISA
209 6OF70  Data, Thoại & SMS                                          420,000 210 Ngày 2GB GB tốc độ cao/ngày + phút thoại nội mạng, ngoại mang, … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-6OF70?rf=091ISA
210 6BLTS Hot, Data                                          360,000 210 Ngày 2GB data/ ngày + … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-6BLTS?rf=091ISA
211 HD70 Hot, Data                                            70,000 30 Ngày 6GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-HD70?rf=091ISA
212 6HD200 Hot, Data                                      1,000,000 180 Ngày 132GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-6HD200?rf=091ISA
213 F90  Data                                            90,000 30 Ngày 9GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-F90?rf=091ISA
214 6CS50 Hot, Thoại & SMS                                          300,000 180 Ngày 50 phút ngoại mạng + 100 phút nội mạng https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-6CS50?rf=091ISA
215 HDP300 Hot, Data, Thoại & SMS                                          300,000 30 Ngày 10GB + 300 phút nội mạng https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-HDP300?rf=091ISA
216 K90 Hot, Thoại & SMS                                            90,000 30 Ngày 90 phút ngoại mạng + Free nội mạng < 10 phút https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-K90?rf=091ISA
217 21G6  Data                                          354,000 180 Ngày 450GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-21G6?rf=091ISA
218 24G  Data                                            99,000 30 Ngày 150GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-24G?rf=091ISA
219 HD79NCT  Data                                            79,000 30 Ngày 4GB + Free truy cập Nhạc của tui https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-HD79NCT?rf=091ISA
220 6C90N Hot, Data, Thoại & SMS                                          540,000 180 Ngày 720GB + 1050 phút gọi … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-6C90N?rf=091ISA
221 12KV60 Hot, Data                                          720,000 360 Ngày 60GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-12KV60?rf=091ISA
222 6D70  Data                                          420,000 210 Ngày 105GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-6D70?rf=091ISA
223 6FV119 Hot, Data, Thoại & SMS                                          714,000 180 Ngày 540GB + 3180 phút gọi + … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-6FV119?rf=091ISA
224 6KV60 Hot, Data                                          360,000 180 Ngày 30GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-6KV60?rf=091ISA
225 CS  Data, Thoại & SMS                                            90,000 30 Ngày 60GB + 1050 phút gọi … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-CS?rf=091ISA
226 CS120 Hot, Data, Thoại & SMS                                          120,000 30 Ngày 120GB + 550 phút gọi … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-CS120?rf=091ISA
227 3CS120 Hot, Data, Thoại & SMS                                          360,000 90 Ngày 360GB + 1650 phút gọi … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-3CS120?rf=091ISA
228 24GDIP3  Data                                          657,000 90 Ngày 450GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-24GDIP3?rf=091ISA
229 3Y60  Data                                          180,000 90 Ngày 180 GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-3Y60?rf=091ISA
230 12MD100 Hot, Data                                      1,200,000 360 Ngày 720GB + Tài khoản mobiEdu, mSkill https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-12MD100?rf=091ISA
231 6GV119  Data, Thoại & SMS                                          714,000 210 Ngày 840GB + 3710 phút gọi … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-6GV119?rf=091ISA
232 SF80  Data                                            80,000 30 Ngày 3GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-SF80?rf=091ISA
233 18WF Hot, Data                                      1,800,000 540 Ngày 180GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-18WF?rf=091ISA
234 R300  Thoại & SMS                                          300,000 7 Ngày 5 phút gọi đi + 5 phút nhận cuộc gọi + 15 SMS https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-R300?rf=091ISA
235 RC3  Data, Thoại & SMS                                      1,000,000 7 Ngày 2.5GB + 30 phút gọi đi + 30 SMS + 30 phút nhận cuộc gọi https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-RC3?rf=091ISA
236 12WF Hot, Data                                      1,200,000 360 Ngày 120GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-12WF?rf=091ISA
237 6WF Hot, Data                                          600,000 180 Ngày Miễn phí 600p nội mạng… https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-6WF?rf=091ISA
238 MB288 Hot, Data, Thoại & SMS                                          288,000 30 Ngày 288GB + 2888 phút nội mạng + 288 phút ngoại mạng https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-MB288?rf=091ISA
239 6CF150 Hot, Data, Thoại & SMS                                          900,000 210 Ngày 600GB tốc độ cao + 2450 phút thoại https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-6CF150?rf=091ISA
240 CF90 Hot                                            90,000 30 Ngày 50GB tốc độ cao + Free truy cập ClipTV, mSkill… https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-CF90?rf=091ISA
241 6CF90 Hot                                          540,000 210 Ngày 50GB tốc độ cao + Free truy cập ClipTV, mSkill… https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-6CF90?rf=091ISA
242 6C120K Hot, Data, Thoại & SMS                                          720,000 210 Ngày 6GB tốc độ cao/ngày + Free phút gọi… https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-6C120K?rf=091ISA
243 12C120K Hot, Data, Thoại & SMS                                      1,440,000 420 Ngày 6GB tốc độ cao/ngày + Free phút gọi… https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-12C120K?rf=091ISA
244 12DTHN70  Data                                          840,000 420 Ngày 3GB Data tốc độ cao/ngày + Miễn phí data truy cập Clip.tv, Tiktok, … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-12DTHN70?rf=091ISA
245 6DTHN70  Data                                          420,000 210 Ngày 3GB Data tốc độ cao/ngày + Miễn phí data truy cập Clip.tv, Tiktok, … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-6DTHN70?rf=091ISA
246 12SHIP120 Hot, Data, Thoại & SMS                                      1,200,000 372 Ngày 2232GB + Miễn phí truy cập APP vận chuyển, giao hàng + … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-12SHIP120?rf=091ISA
247 9THAGA60 Hot, Data                                          540,000 270 Ngày 1080 GB Tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-9THAGA60?rf=091ISA
248 6ED60 Hot, Data                                          360,000 210 Ngày 420GB + Tài khoản mobiEdu https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-6ED60?rf=091ISA
249 12AG60 Hot, Data                                          720,000 420 Ngày 840GB + Tài khoản mobiAgri https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-12AG60?rf=091ISA
250 DTHN70  Data                                            70,000 30 Ngày 3GB Data tốc độ cao/ngày + Miễn phí data truy cập Clip.tv, Tiktok, … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-DTHN70?rf=091ISA
251 6HD90 Hot, Data                                          450,000 180 Ngày 54GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-6HD90?rf=091ISA
252 6HD300 Hot, Data                                      1,500,000 180 Ngày 216GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-6HD300?rf=091ISA
253 F250  Data                                          250,000 180 Ngày 18GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-F250?rf=091ISA
254 DP200 Hot, Data, Thoại & SMS                                          200,000 60 Ngày 4GB + 200 phút nội mạng + 200 SMS nội mạng https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-DP200?rf=091ISA
255 HD300 Hot, Data                                          300,000 30 Ngày 33GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-HD300?rf=091ISA
256 MC99  Data, Thoại & SMS                                            99,000 30 Ngày 2GB + Free phút gọi + … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-MC99?rf=091ISA
257 D90 Hot, Data                                            90,000 30 Ngày 30GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-D90?rf=091ISA
258 6C120 Hot, Data, Thoại & SMS                                          720,000 210 Ngày 720GB + Free phút gọi + … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-6C120?rf=091ISA
259 21G  Data                                            59,000 30 Ngày 60GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-21G?rf=091ISA
260 TIKA  Data                                            50,000 30 Ngày 5GB trong vùng + 1GB ngoài vùng https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-TIKA?rf=091ISA
261 C490  Data, Thoại & SMS                                          490,000 30 Ngày 240GB + Free phút gọi + … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-C490?rf=091ISA
262 C200N Hot, Data                                          200,000 30 Ngày 120GB + Free phút gọi + … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-C200N?rf=091ISA
263 YC30  Data                                            99,000 30 Ngày 3GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-YC30?rf=091ISA
264 HD119FIM  Data                                          119,000 30 Ngày 6GB + Free truy cập FIM+ https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-HD119FIM?rf=091ISA
265 FV99 Hot, Data                                            99,000 30 Ngày 60GB + Free truy cập FPT Play, Viber https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-FV99?rf=091ISA
266 QT50  Data                                            50,000 30 Ngày 102GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-QT50?rf=091ISA
267 12DIP79  Data                                          948,000 360 Ngày 96GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-12DIP79?rf=091ISA
268 3FV119 Hot, Data, Thoại & SMS                                          357,000 90 Ngày 270GB + 1590 phút gọi + … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-3FV119?rf=091ISA
269 DP300 Hot, Data, Thoại & SMS                                          300,000 60 Ngày 6GB + 300 phút nội mạng + 300 SMS nội mạng https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-DP300?rf=091ISA
270 C290 Hot, Data, Thoại & SMS                                          290,000 30 Ngày 180GB + Free phút gọi + … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-C290?rf=091ISA
271 F70  Data                                            70,000 30 Ngày 7GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-F70?rf=091ISA
272 24GIP3  Data                                          447,000 90 Ngày 360GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-24GIP3?rf=091ISA
273 MFY399 Hot, Data, Thoại & SMS                                          399,000 30 Ngày 20GB + 1040 phút gọi … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-MFY399?rf=091ISA
274 CF100 Hot, Data, Thoại & SMS                                          100,000 30 Ngày 5GB + 260 phút gọi + 230 SMS + … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-CF100?rf=091ISA
275 3CS60 Hot, Data                                          180,000 90 Ngày 18GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-3CS60?rf=091ISA
276 6CS119 Hot, Data, Thoại & SMS                                          714,000 210 Ngày 630GB + 3710 phút gọi … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-6CS119?rf=091ISA
277 21GP  Data                                            59,000 30 Ngày 60GB + Free truy cập ClipTV, Nhac.vn https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-21GP?rf=091ISA
278 9CV99 Hot, Data                                          891,000 270 Ngày 540GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-9CV99?rf=091ISA
279 3CV99 Hot, Data                                          297,000 90 Ngày 180GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-3CV99?rf=091ISA
280 MFY29T Hot, Data, Thoại & SMS                                            29,000 30 Ngày 1.8GB + 100 phút gọi … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-MFY29T?rf=091ISA
281 12CV119 Hot, Data, Thoại & SMS                                      1,428,000 420 Ngày 1680GB + 7420 phút gọi … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-12CV119?rf=091ISA
282 12CS120 Hot, Data, Thoại & SMS                                      1,440,000 360 Ngày 1440GB + 6600 phút gọi … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-12CS120?rf=091ISA
283 12HD300N Hot, Data                                      3,000,000 360 Ngày 1440GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-12HD300N?rf=091ISA
284 3C90N Hot, Data, Thoại & SMS                                          270,000 90 Ngày 360GB + 3150 phút gọi … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-3C90N?rf=091ISA
285 12C90N Hot, Data, Thoại & SMS                                      1,080,000 360 Ngày 1440GB + 12600 phút gọi … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-12C90N?rf=091ISA
286 R1000  Thoại & SMS                                      1,000,000 7 Ngày 25 phút gọi đi + 25 phút nhận cuộc gọi + 60 SMS https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-R1000?rf=091ISA
287 RD1000  Data                                      1,000,000 7 Ngày 35MB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-RD1000?rf=091ISA
288 MB388 Hot, Data, Thoại & SMS                                          388,000 30 Ngày 388GB + 3888 phút nội mạng + 388 phút ngoại mạng https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-MB388?rf=091ISA
289 F90N Hot, Data                                            90,000 30 Ngày 9GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-F90N?rf=091ISA
290 6DATA5 Hot, Data                                          300,000 180 Ngày 60GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-6DATA5?rf=091ISA
291 3CF150 Hot, Data, Thoại & SMS                                          450,000 90 Ngày 300GB tốc độ cao + 1050 phút thoại https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-3CF150?rf=091ISA
292 MAX120 Hot, Trả trước                                          120,000 30 Ngày 240GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-MAX120?rf=091ISA
293 6DN90 Hot, Trả trước                                          540,000 225 Ngày 1125GB tốc độ cao (Trong khu vực… https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-6DN90?rf=091ISA
294 12DN90 Hot, Trả trước                                      1,080,000 435 Ngày 2175GB tốc độ cao (Trong khu vực… https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-12DN90?rf=091ISA
295 3CF90 Hot                                          270,000 90 Ngày 50GB tốc độ cao + Free truy cập ClipTV, mSkill… https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-3CF90?rf=091ISA
296 12CF120 Hot, Data, Thoại & SMS                                      1,440,000 420 Ngày 960GB tốc độ cao + 3500 phút thoại https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-12CF120?rf=091ISA
297 EVIP1  Data                                          290,000 31 Ngày Không giới hạn dung lượng data tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-EVIP1?rf=091ISA
298 3FD60 Hot, Data                                          180,000 90 Ngày 180GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-3FD60?rf=091ISA
299 ESIM990  Data, Thoại & SMS                                          990,000 31 Ngày Không giới hạn data tốc độ cao + Free gọi nội mạng dưới 20 phút…. https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-ESIM990?rf=091ISA
300 12ED60 Hot, Data                                          720,000 420 Ngày 840GB + Tài khoản mobiEdu https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-12ED60?rf=091ISA
301 6THAGA60 Hot, Data                                          360,000 210 Ngày 840 GB Tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-6THAGA60?rf=091ISA
302 12CF90 Hot                                      1,080,000 420 Ngày 50GB tốc độ cao + Free truy cập ClipTV, mSkill… https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-12CF90?rf=091ISA
303 12THAGA60 Hot, Data                                          720,000 420 Ngày 1680 GB Tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-12THAGA60?rf=091ISA
304 OF70  Data, Thoại & SMS                                            70,000 30 Ngày 2GB GB tốc độ cao/ngày + phút thoại nội mạng, ngoại mang, … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-OF70?rf=091ISA
305 3SHIP99 Hot, Data, Thoại & SMS                                          297,000 93 Ngày 186GB + Miễn phí truy cập APP vận chuyển, giao hàng + … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-3SHIP99?rf=091ISA
306 12SHIP99 Hot, Data, Thoại & SMS                                          990,000 372 Ngày 744GB + Miễn phí truy cập APP vận chuyển, giao hàng + … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-12SHIP99?rf=091ISA
307 12BLTS Hot, Data                                          720,000 420 Ngày 2GB data/ ngày + … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-12BLTS?rf=091ISA
308 3AG60 Hot, Data                                          180,000 90 Ngày 180GB + Tài khoản mobiAgri https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-3AG60?rf=091ISA
309 G80  Data                                            80,000 30 Ngày Miễn phí 2GB data tốc độ cao/ ngày https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-G80?rf=091ISA
310 DIP79  Data                                            79,000 30 Ngày 8GB tốc độ cao https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-DIP79?rf=091ISA
311 8NCT  Data, Thoại & SMS                                            50,000 30 Ngày 3GB + 120 phút gọi + … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-8NCT?rf=091ISA
312 HD99NCT  Data                                            99,000 30 Ngày 6GB + Free truy cập Nhạc của tui https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-HD99NCT?rf=091ISA
313 6CS100T Hot, Thoại & SMS                                          600,000 180 Ngày 100 phút ngoại mạng + 300 phút nội mạng https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-6CS100T?rf=091ISA
314 12FV119 Hot, Data, Thoại & SMS                                      1,428,000 360 Ngày 1080GB + 6360 phút gọi + … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-12FV119?rf=091ISA
315 MFY49T Hot, Data, Thoại & SMS                                            49,000 30 Ngày 2.5GB + 135 phút gọi … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-MFY49T?rf=091ISA
316 3GV119  Data, Thoại & SMS                                          357,000 90 Ngày 360GB + 1590 phút gọi … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-3GV119?rf=091ISA
317 9GV119  Data, Thoại & SMS                                      1,071,000 270 Ngày 1080GB + 4770 phút gọi … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-9GV119?rf=091ISA
318 12CF100 Hot, Data, Thoại & SMS                                      1,200,000 360 Ngày 60GB + 3120 phút gọi + 2760 SMS + … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-12CF100?rf=091ISA
319 12THAGA15  Data                                          300,000 180 Ngày Miễn phí 60 GB data tốc độ cao/ tháng https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-12THAGA15?rf=091ISA
320 6TS4G  Data                                          594,000 210 Ngày Miễn phí 5GB data tốc độ cao/ ngày (1050 GB/ chu kì) https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-6TS4G?rf=091ISA
321 12TS4G  Data                                      1,188,000 420 Ngày Miễn phí 5 GB data tốc độ cao/ tháng (2100GB/ chu kì) https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-12TS4G?rf=091ISA
322 21GP12  Data                                          708,000 420 Ngày 45GB + Free truy cập ClipTV, Nhac.vn https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-21GP12?rf=091ISA
323 B3  Thoại & SMS                                          500,000 30 Ngày 8 phút gọi đi + 8 phút nhận cuộc gọi + 20 SMS https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-B3?rf=091ISA
324 3ED60 Hot, Data                                          180,000 90 Ngày 180GB + Tài khoản mobiEdu https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-3ED60?rf=091ISA
325 6AG60 Hot, Data                                          360,000 210 Ngày 420GB + Tài khoản mobiAgri https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-6AG60?rf=091ISA
326 3SM60 Hot, Data, Thoại & SMS                                          180,000 90 Ngày 3 Gb Tốc độ cao/ngày + Miễn phí cuộc gọi dưới 10 phút + … https://congtacvien.mobifone.vn/goi-cuoc-uu-dai/chi-tiet-goi-cuoc-3SM60?rf=091ISA
327 6C120T Hot, Data, Thoại & SMS                                          720,000 210 Ngày 6GB Tốc độ cao/ngày + Miễn phí phút gọi + … Đăng ký
328 SHIP99 Hot, Data, Thoại & SMS                                            99,000 31 Ngày 62GB + Miễn phí truy cập APP vận chuyển, giao hàng + … Đăng ký
329 12OF70  Data, Thoại & SMS                                          840,000 420 Ngày 2GB GB tốc độ cao/ngày + phút thoại nội mạng, ngoại mang, … Đăng ký
330 3THAGA60 Hot, Data                                          180,000 90 Ngày 360 GB Tốc độ cao Đăng ký
331 12SM90 Hot, Data, Thoại & SMS                                      1,080,000 360 Ngày 5Gb Data tốc độ cao/ngày + Miễn phí cuộc gọi dưới 10 phút + … Đăng ký
332 SM90 Hot, Data, Thoại & SMS                                            90,000 30 Ngày 5Gb Data tốc độ cao/ngày + Miễn phí cuộc gọi dưới 10 phút + … Đăng ký

Button Shortcode WordPress – cách thêm nút bấm vào WordPress

Bạn đã từng cố gắng thêm button vào trang web WordPress của mình chưa? Nền tảng này không có bất kỳ tính năng mặc định nào cho phép bạn tạo button, chúng ta phải nhờ sự giúp đỡ của các plugin. Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách sử dụng cả plugin WordPress shortcode và plugin non-shortcode để tạo ra các shortcode cho button. Từ đó nhúng shortcode button vào WordPress, bạn sẽ có thể chèn nút vào.

Shortcodes là gì?

Trước khi bắt đầu bài hướng dẫn, chúng ta sẽ tìm hiểu xem shortcodes là gì.

Về cơ bản, shortcode là mã đơn giản được để trong dấu ngoặc vuông – [như thế này] – cho phép bạn thêm chức năng vào các bài đăng và trang WordPress.

Để sử dụng shortcode WordPress button, chỉ cần nhập chúng vào trang biên tập bài viết. WordPress sẽ render code và hiển thị kết quả là nút bấm trên trang web của bạn.

Điều thú vị về WordPress button shortcode là bạn có thể tự làm một cái nếu code có sẵn không đáp ứng được nhu cầu.

Trong trường hợp cụ thể này, chúng tôi sẽ hướng dẫn luôn việc tạo WordPress button shortcode để thêm button trên trang web của bạn. Nhưng vì việc viết code từ đầu sẽ khó với đa số mọi người nên chúng tôi sẽ chỉ bạn cách làm bằng cách sử dụng plugin thay thế.

Sau đó, chúng tôi còn có giải pháp thay thế cho plugin shortcode nếu bạn không thích xài shortcode.

Nào hãy bắt đầu!

Cách thêm WordPress button

Không có nghi ngờ gì về việc các button của trang web đóng vai trò khuyến khích mọi người thực hiện hành động cụ thể như đăng ký, đăng nhập, tải tệp xuống, v.v. Ví dụ, Amazon sử dụng button để giúp khách truy cập dễ dàng thêm mặt hàng vào giỏ hàng của họ và mua hàng.

button trên trang web amazon

Bạn cũng có thể chèn button như trong ví dụ trên.

Tạo Button Shortcode bằng cách sử dụng plugin

Trong số nhiều plugin WordPress button shortcode có sẵn, lựa chọn hàng đầu của chúng tôi là MaxButtons với hơn 100.000 bản cài đặt được kích hoạt. Nó tương thích với các phiên bản WordPress khác nhau. Và quan trọng hơn là rất dễ sử dụng nên bất kỳ ai cũng có thể dùng mà không gặp vấn đề gì.

Để bắt đầu, hãy tải xuống và kích hoạt plugin. Sau đó, đến menu MaxButtons. Khi bạn đã ở trong dashboard của plugin, hãy nhấp vào Add new và bạn sẽ được đưa đến Button Editor.

tạo mới button trong MaxButtons

Điều đầu tiên bạn cần điền là thông tin cơ bản như: button name (tên nút, để phân biện các button với nhau), URL (liên kết với button) và button text (text trên button) .

Trong phần đầu tiên này, bạn cũng có thể thay đổi phông chữ, màu text, di chuột màu văn bản và kích thước của button. Bạn có thể nhìn thấy tất cả các thay đổi thực hiện trong bản live preview ở bên phải màn hình.

Thông tin cơ bản trong MaxButtons

Cuộn xuống, bạn sẽ thấy nhiều tùy chọn hơn để tùy chỉnh giao diện của các button.

Khi bạn thấy hài lòng với style của button rồi, hãy bấm Save ở đầu trang.

Bây giờ, hãy quay lại dashboard MaxButtons, bạn sẽ thấy shortcode cho button bạn vừa tạo. Trong ví dụ dưới đây, shortcode là 

ví dụ của button shortcode dùng MaxButtons

Chèn Button Shortcode vào WordPress

Khi bạn muốn chèn button vào WordPress Editor, chỉ cần sao chép và dán shortcode. Ngoài ra, bạn có thể nhấp vào Add Button và chọn nút bạn muốn chèn:

Thêm button vào WordPress bằng MaxButtons

Sau đó, sửa đổi button URL và button text theo những gì bạn cần cho bài đăng cụ thể đó. Bằng cách này, bạn không phải tạo ra shortcode khác nhau cho các bài đăng khác nhau.

sửa thông tin button trong MaxButtons

Và chỉ vậy thôi! Bạn vừa tạo WordPress button đầu tiên của mình! Bạn có thể không thấy kết quả trên trình chỉnh sửa WordPress, vì button thực tế sẽ xuất hiện trên bài đăng khi nó được xuất bản.

Thay thế cho Plugin Shortcode

Hạn chế lớn nhất của plugin WordPress button shortcode như MaxButtons là tính linh hoạt. Nếu bạn muốn thêm button với một chút thay đổi về kiểu dáng, bạn phải truy cập dashboard plugin và chỉnh sửa nó từ đó.

Vậy nên thay vào đó, cách tốt nhất là sử dụng plugin không có shortcode như Forget About Shortcode Buttons.

Giống như tên của nó đã cho thấy, Forget About Shortcode Buttons không dựa vào shortcode. Bạn có thể tạo button ngay lập tức trong trình chỉnh sửa WordPress và tạo mọi kiểu từ đó. Chỉ cần nhấp vào biểu tượng Insert Button và bạn có thể bắt đầu sửa đổi button của mình ngay lập tức.

thêm nút bằng Forget About Shortcodes Button

Các tùy chọn khá giống với MaxButtons – kiểu viền, màu nền và kích thước button. Nhưng có thêm tính năng bổ sung khác mà bạn sẽ hoàn toàn yêu thích: khả năng thêm một icon vào button của bạn. Với tinh chỉnh, nó sẽ khiến button của bạn trở nên độc đáo và đẹp hơn.

Tùy chỉnh button bằng Forget About Shortcode Buttons

Nếu bạn muốn sử dụng lại button hiện tại của bạn trong tương lai, bạn không nên làm lại từ đầu! Chỉ cần lưu nó bằng cách nhấp vào biểu tượng Floppy Disk. Sau này bạn có thể sử dụng lại từ tab Templates bất cứ khi nào bạn cần.

Khi bạn đã hoàn tất, nhấp vào Update để chèn button.

Kết luận

Button rất có lợi cho mọi trang web. Chúng có hiệu quả trong việc thu hút sự chú ý. Quan trọng nhất là nó chứa text call-to-action khuyến khích mọi người thực hiện hành động.

Vì WordPress không cung cấp tính năng mặc định nào để chèn button vào trang web. Bạn sẽ phải sử dụng một số plugin bổ sung. Có các plugin WordPress dựa trên  shortcode và non-shortcode. Trong hướng dẫn này, bạn đã học cách sử dụng cả hai. Cái nào là phù hợp nhất với bạn? Tuỳ bạn quyết định thôi!https://www.hostinger.vn/huong-dan/button-shortcode-wordpress#:~:text=B%E1%BA%A1n%20c%C3%B3%20th%E1%BB%83%20t%E1%BA%A1o%20button,n%E1%BB%81n%20v%C3%A0%20k%C3%ADch%20th%C6%B0%E1%BB%9Bc%20button.

Danh sách các gói cước 4G Mobifone Giá Rẻ Nhất Data khủng 2023

 

Gói Cước C120

 

Danh sách các gói cước 4G Mobifone Giá Rẻ Nhất Data khủng 2023

Nên lựa chọn gói cước 4G Mobifone tháng, ngày hay chu kỳ dài nào để sử dụng mạng internet trên di động hiệu quả tiết kiệm nhất. Với gói 4G MobiFone đa dạng như hiện nay chắc chắn sẽ có gói cước MobiFone phù hợp cho quý khách hàng với giá rẻ từ 5.000đ, 10.000đ, 50.000đ…

Nhằm mang lại một trải nghiệm mạng di động 4G MobiFone không dây nhanh gấp 10 đến 20 lần so với công nghệ 3G MobiFone trước đây thì nhà mạng đã cung cấp cho khách hàng rất nhiều lựa chọn khi đăng ký gói 4G Mobi với nhiều mức giá cũng như ưu đãi về data tốc độ cao 4G.

» Tham khảo ngay: Các gói cước C120 MobiFone nhận 4GB Data/ngày

Cùng MobiFone.net.vn tìm hiểu cách đăng ký gói 4G Mobifone cho thuê bao của mình và phù hợp với nhu cầu sử dụng mạng 4G MobiFone của mình nhé?

Video tổng hợp các gói 4G MobiFone nhiều khách hàng đăng ký nhất

Các ưu điểm khi sử dụng gói 4G mạng MobiFone là gì? 

  • Sử dụng gói 4G Mobifone trọn gói không giới hạn giúp cho việc đăng ký 4G Mobi 1 tuần, tháng 1 lần duy nhất sử dụng trong tháng mà không mất thêm chi phí.
  • Ưu đãi của gói 4G Mobi theo tháng, chu kỳ dài rất khủng kèm giá rẻ là sự lựa chọn tốt nhất cho khách hàng tiết kiệm chi phí.
  • Sử dụng gói 4G MobiFone sẽ giúp cho việc kết nối nhanh, ổn định mọi lúc mọi nơi trên di động.

Hướng dẫn đăng ký gói cước 4G Mobifone cho thuê bao di động, Fast Connect

– Hiện tại nhà mạng Mobifone chia gói cước thành 2 nhóm khách hàng: thuê bao di động (sim nghe gọi) và thuê bao Fast Connect (sim lên mạng). Từng gói cước sẽ có những ưu đãi chuyên biệt để khách hàng có thể lựa chọn dễ dàng hơn.

– Thuê bao có nhu cầu sử dụng gói 4G Mobifone hãy soạn tin nhắn đăng ký theo cú pháp chung như sau:

MO [khoảng trắng] TÊN-GÓI-CƯỚC gửi đến 9084 (Miễn phí SMS)

Ngay khi đăng ký 4G MobiFone thành công, hãy nhanh chóng khởi động lại điện thoại để hệ thống cập nhật lại ưu đãi cho thuê bao di động của mình nhé.

Các gói cước 4G Mobifone giá rẻ được đăng ký nhiều nhất 2023

Gói cước Cú pháp đăng ký Đăng ký nhanh
Gói HD90
(90.000đ/30 ngày)
MO HD90 gửi 9084 Đăng ký
Cộng 8GB/tháng Đăng ký
Gói ED60
(60.000đ/30 ngày)
MO ED60 gửi 9084
  • 2GB/ngày => 60GB/tháng
  • Hết data miễn phí truy cập tiếp internet tốc độ thường.
Gói FD60
(60.000đ/30 ngày)
MO FD60 gửi 9084
Cộng 2GB/ngày => 60GB/30 ngày
Gói 21G
(59.000đ/30 ngày)
MO 21G gửi 9084
  • 2GB/ngày (60GB/tháng)
  • Miễn phí tốc độ 2Mbps/2Mbps khi hết data vẫn xem phim, youtube, tiktok … bình thường
Gói ED100
(100.000đ/30 ngày)
MO ED100 gửi 9084
  • 4GB/ngày => 120GB/tháng.
  • Hết data miễn phí truy cập ở tốc độ 5Mbps xem được Youtube, Tiktok….
Gói C120
(120.000đ/30 ngày)
MO C120 gửi 9084
  • 4GB/ngày => 120GB data tháng
  • Miễn phí cuộc gọi nội mạng MobiFone dưới 20 phút
  • Miễn phí 50 phút gọi liên mạng

Danh sách các gói 4G MobiFone được đăng ký nhiều nhất 2023

Tha hồ lướt nét tốc độ siêu nhanh với gói cước 4G Mobifone

Danh sách các gói cước 4G Mobifone ưu đãi data khủng 2023

1. Các gói 4G MobiFone tháng chỉ ưu đãi data 4G

Tên gói Cú pháp/Ưu đãi Đăng ký
HD70

(70.000đ/30 ngày)

MO HD70 gửi 9084
6GB
Hết data ngưng kết nối
HD90

(90.000đ/ 30 ngày)

MO HD90 gửi 9084
8GB
Hết data ngưng kết nối
HD120

(120.000đ/30 ngày)

MO HD120 gửi 9084
10GB
Hết data ngưng kết nối
HD200

(200.000đ/ 30 ngày)

MO HD200 gửi 9084
18GB
Hết data ngưng kết nối

Các gói cước 4G Mobifone không giới hạn dành cho thuê bao di động có giá cước dao động từ 70.000đ – 200.000đ và có ưu đãi data KHỦNG từ từ 6GB data. Các gói cước 4G Mobifone khi sử dụng hết ưu đãi sẽ tự động ngắt kết nối nên bạn không cần phải lo lắng về cước phí vượt gói.

2. Các gói 4G Mobi chu kỳ 3 ngày – 7 ngày ưu đãi khủng

Tên gói Cú pháp/Ưu đãi Đăng ký nhanh
D15
(15.000đ/3 ngày)
MO D15 gửi 9084
3GB
D30
(30.000đ/7 ngày)
MO D30 gửi 9084
7GB

3. Danh sách các gói 4G Mobi trọn gói không giới hạn dung lượng

Tên gói/Chu kỳ Cú pháp sms/Ưu đãi Đăng ký nhanh
ED60
(60.000đ/tháng)
MO ED60 gửi 9084
  • 2GB/ngày (60GB/tháng)
  • Hết data miễn phí truy cập tiếp
ED100
(100.000đ/tháng)
MO ED100 gửi 9084
  • 4GB/ngày (120GB/tháng)
  • Hết data miễn phí truy cập tiếp
NCT60
(60.000đ/tháng)
MO NCT60 gửi 9084
  • 60 GB/tháng
  • Hết data miễn phí truy cập tiếp
AG60
(60.000đ/ 30 ngày)
MO AG60 gửi 9084
  • 2GB/ ngày ( 60GB/30 ngày)
  • Hết data miễn phí truy cập tiếp
21G
(59.000đ/tháng)
MO 21G gửi 9084
  • 2GB/ngày (60GB/tháng)
  • Hết data truy cập tốc độ 2Mbps không giới hạn
24G
(99.000đ/tháng)
MO 24G gửi 9084
  • 3GB/ngày (90GB/tháng)
  • Hết data truy cập tốc độ 2Mbps không giới hạn
CF60
(60.000đ/tháng)
MO CF60  gửi 9084
  • 2GB/ngày => 60GB/tháng
  • Hết data miễn phí truy cập tiếp
 CF90
(90.000đ/tháng)
MO CF90 gửi 9084
  • 50 GB/tháng
  • Hết data truy cập tốc độ 5Mbps không giới hạn
CF120
(120.000đ/tháng)
MO CF120 gửi 9084
  • 80 GB/tháng
  • Hết data truy cập tốc độ 5Mbps không giới hạn
CF150
(150.000đ/tháng)
MO CF150 gửi 9084
  • 100 GB/tháng
  • Hết data truy cập tốc độ 5Mbps không giới hạn

Các gói cước 4G Mobifone trọn gói không giới hạn dung lượng sẽ mang đến cho quý khách hàng ưu đãi trọn vẹn, bởi khi sử dụng hết ưu đãi hệ thống sẽ tự động hạ băng thông, khách hàng được truy cập mạng hoàn toàn miễn phí ở tốc độ thường.

Theo đó, mỗi ngày khách hàng sẽ được tặng một dung lượng data nhất định để truy cập mạng, dùng hết trong ngày hệ thống sẽ hạ băng thông. Nếu không dùng hết hệ thống sẽ tự động xóa ưu đãi và tiếp tục cộng ưu đãi cho ngày mới.

4. Các gói cước 4G của Mobifone ưu đãi data, gọi thoại và SMS siêu hấp dẫn

Tên gói Cú pháp Đăng ký
C120
(120.000đ/tháng)
MO C120 gửi 9084
  • 4GB/ngày =>120GB/tháng
  • Miễn phí cuộc gọi nội mạng dưới 20 phút
  • 50 phút gọi liên mạng/tháng
C190
(190.000đ/tháng)
MO C190 gửi 9084
  • 5GB/ ngày => 150 GB/tháng
  • Miễn phí gọi nội mạng < 10 phút
  • 160 phút gọi liên mạng/tháng
C90N
(90.000đ/tháng)
MO C90N gửi 9084
  • 4GB/ ngày => 120 GB/tháng
  • Miễn phí 1000 phút gọi nội mạng
  • 50 phút gọi liên mạng/tháng

Với các gói 4G Mobifone kèm ưu đãi gọi thoại, SMS thường sẽ quy định đối tượng đăng ký. Để biết thuê bao của bạn có thể đăng ký gói cước thành công hay không, hãy soạn tin nhắn KT DSKM gửi 999, hoặc gọi đến tổng đài Mobifone số 9090 để được hỗ trợ tra cứu.
cách đăng ký 4g mobi

5. Gói cước 4G Mobi 1 tháng  giá rẻ chỉ từ 10.000đ

Các gói 4G Mobifone giá rẻ đáp ứng các nhu cầu truy cập mạng đột xuất của quý thuê bao một cách tiết kiệm nhất. Đây là lựa chọn cứu cánh khi có nhu cầu kết nối mạng giá chỉ từ 10.000đ quý khách hàng có 30 ngày truy cập mạng thoải mái hơn.

Tên gói Cú pháp/Ưu đãi Đăng ký
M10
(10.000đ/30 ngày)
MO M10 gửi 9084
500MB
M25
(25.000đ/30 ngày)
MO M25 gửi 9084
2GB
M50
(50.000đ/30 ngày)
MO M50 gửi 9084
4GB

6. Danh sách các gói cước 4G của Mobifone dùng chung cho người thân, bạn bè

Tên gói Cú pháp SMS Đăng ký nhanh
CF50
(50.000đ/30 ngày)
MO CF50 gửi 9084
  • 30GB data tốc độ cao/30 ngày
  • 100 phút gọi nội mạng
  • 35 phút gọi ngoại mạng
  • 115 tin nhắn SMS
  • Miễn phí gọi giữa các thành viên trong nhóm
  • Miễn phí data khi truy cập ứng dung ClipTV
CF90
(90.000đ/30 ngày)
MO CF90 gửi 9084
  • Tặng 50GB/30 ngày. Hết data, không giới hạn truy cập ở tốc độ 5Mbps.
  • Miễn phí truy cập ClipTV và tài khoản mskill của MobiEdu
  • Miễn phí gọi giữa các thành viên trong nhóm
CF120
(120.000đ/30 ngày)
MO CF120 gửi 9084
  • 80GB data tốc độ cao/30 ngày
  • 200 phút gọi nội mạng
  • 50 phút gọi ngoại mạng
  • 115 tin nhắn SMS
  • Miễn phí gọi giữa các thành viên trong nhóm
  • Miễn phí data khi truy cập ứng dụng ClipTV, nhaccuatui.
CF150
(150.000đ/30 ngày)
MO CF150 gửi 9084
  • 100GB tốc độ cao/30 ngày
  • 300 phút gọi nội mạng
  • 50 phút gọi ngoại mạng
  • 115 tin nhắn
  • Miễn phí gọi giữa các thành viên trong nhóm
  • Miễn phí data truy cập ứng dung ClipTV, nhaccuatui.
MFY99
(99.000đ/30 ngày)
MO MFY99 gửi 9084
  • 6,5GB/30 ngày tốc độ cao
  • 200 phút gọi nội mạng
  • 60 phút gọi ngoại mạng
  • Miễn phí gọi giữa các thành viên trong nhóm
MFY199
(199.000đ/30 ngày)
MO MFY199 gửi 9084
  • 12,5GB/30 ngày tốc độ cao
  • 400 phút gọi nội mạng
  • 120 phút gọi ngoại mạng
  • Miễn phí gọi giữa các thành viên trong nhóm
MFY399
(399.000đ/30 ngày)
MO MFY399 gửi 9084
  • 30GB/30 ngày tốc độ cao
  • 800 phút gọi nội mạng
  • 240 phút gọi ngoại mạng
  • Miễn phí gọi giữa các thành viên trong nhóm

Với các gói cước 4G Mobifone dùng chung, khi tiến hành đăng ký quý khách hàng được phép thêm số thuê bao Mobifone để có thể dùng chung data, phút gọi nội mạng. Tiến hành thêm số thuê bao dùng chung bạn có thể soạn tin nhắn thêm theo cú pháp:

  • Gói CF: Soạn ADM CF [số thuê bao thành viên] gửi 999 (15.000đ/ thành viên/ tháng)
  • Gói MFY: Soạn ADM MFY [số thuê bao thành viên] gửi 999 (15.000đ/ thành viên/ tháng)

7. Bảng giá các gói 4G Mobifone miễn phí data học online trên MobiEdu Mobifone

Nếu có con em đang học tập online thì các gói cước 4G Mobifone miễn phí data học trên MobiEdu Mobifone là một giải pháp dành cho bạn. Khi đăng ký gói cước bạn sẽ được miễn phí 1 tài khoản ôn tập, thi thử tại dịch vụ MobiEdu Mobifone.

Tên gói Cú pháp SMS Đăng ký nhanh
ED50
(50.000đ/30 ngày)
MO ED50 gửi 9084
  • Tặng 1GB/ngày (30GB/30 ngày). Hết data miễn phí truy cập Internet ở tốc độ 5Mbps.
  • Miễn phí 1 tài khoản ôn tập, thi thử tại dịch vụ MobiEdu MobiFone
ED60
(60.000đ/30 ngày)
MO ED60 gửi 9084
  • Tặng 2GB/ngày (60GB/30 ngày). Dùng hết data  miễn phí ở ở tốc độ 5Mbps
  • Miễn phí 1 tài khoản ôn tập dịch vụ MobiEdu (gói cơ bản, chỉ được chọn 1 khối lớp từ 1 đến 12)
ED100
(100.000đ/30 ngày)
MO ED100 gửi 9084
  • Tặng 2GB/ngày (60GB/30 ngày). Hết data miễn phí truy cập ở tốc độ 5Mbps.
  • Miễn phí 1 tài khoản ôn tập, thi thử tại dịch vụ MobiEdu MobiFone
  • Miễn phí 1 tài khoản mSkill học 30 khóa học kỹ năng.

8. Danh sách các gói 4G Mobi chu kỳ 3 tháng – 6 tháng

Các gói cước 4G của Mobifone chu kỳ 3 tháng, 6 tháng sẽ giúp quý khách hàng có những trải nghiệm truy cập mạng tuyệt vời. Khi chỉ với 1 lần đăng ký quý khách hàng sẽ được dùng data thoải mái trong suốt 3 hoặc 6 tháng.

Bên cạnh đó, khi đăng ký gói 4G Mobifone 6 tháng, một số gói cước còn dành tặng ưu đãi thêm 1 tháng sử dụng cho khách hàng. Với ưu đãi này, khách hàng chỉ cần trả cước 6 tháng nhưng được dùng lên đến 7 tháng.

Tên gói Cú pháp Đăng ký
3FD50
(150.000đ/3 tháng)
MO 3FD50 gửi 9084
3GB/ngày (270GB/90 ngày)
3C120
(360.000đ/ 3 tháng)
MO 3C120 gửi 9084
  • 120GB tốc độ cao/tháng (360GB/3 tháng)
  • Miễn phí các cuộc gọi nội mạng dưới 20 phút
  • 50 phút gọi liên mạng/tháng (150 phút/3 tháng)
6C120
(720.000đ/ 7 tháng)
MO 6C120 gửi 9084
  • 120GB tốc độ cao/tháng (840GB/7 tháng)
  • Miễn phí các cuộc gọi nội mạng dưới 20 phút
  • 50 phút gọi liên mạng/tháng (350 phút/7 tháng)
6C90N
(540.000đ/6 tháng)
MO 6C90N gửi 9084
  • Tặng 4GB/ngày (720GB/6 tháng)
  • Gọi nội  mạng: 1000 phút/tháng (6000 phút/6 tháng)
  • Gọi liên mạng: 50 phút/tháng (300 phút/6 tháng)
6HD70
(350.000đ/7 tháng)
MO 6HD70 gửi 9084
  • 7GB/30 ngày (49GB/7 tháng)
  • Mua 6 tháng tặng 1 tháng
6HD90
(450.000đ/7 tháng)
MO 6HD90 gửi 9084
  • 9GB/30 ngày (63GB/7 tháng)
  • Mua 6 tháng tặng 1 tháng
6HD120
(600.000đ/7 tháng)
MO 6HD120 gửi 9084
  • 12GB/30 ngày (84GB/7 tháng)
  • Mua 6 tháng tặng 1 tháng
6FD50
(300.000đ/6 tháng)
MO 6FD50 gửi 9084
4GB/ngày (720GB/6 tháng)

9. Bảng giá các gói 4G Mobifone chu kỳ 12 tháng

Đăng ký 4G Mobifone chu kỳ 12 tháng chỉ với 1 lần đăng ký bạn có 1 năm sử dụng mạng thoải mái, mà không phải đăng ký hay gia hạn. Một số gói cước còn có ưu đãi tặng thêm 2 tháng sử dụng nâng tổng thời gian lên 14 tháng giúp quý khách hàng có thêm thời gian truy cập mạng với data khủng.

Tên gói Cú pháp Đăng ký ngay
12C120
(1.440.000đ/ 14 tháng)
(12 tháng tặng 2 tháng)
MO 12C120 gửi 9084
  • 120GB data tốc độ cao/tháng (1.680GB/14 tháng)
  • Miễn phí các cuộc gọi nội mạng dưới 20 phút
  • 50 phút gọi ngoại mạng/tháng (700 phút/14 tháng)
12HD70N
(500.000đ/12 tháng)
MO 12HD70N gửi 9084
0,5 GB data/ngày (180GB/ 12 tháng)
12HD90N
(900.000đ/12 tháng)
MO 12HD90N gửi 9084
1GB/ngày (360GB/ 12 tháng)
12ED50
(600.000đ/12 tháng)
MO 12ED50 gửi 9084
1GB/ngày (360GB/ 12 tháng)
12FD50
(600.000đ/12 tháng)
MO 12FD50 gửi 9084
5GB/ngày (1.800GB/ 12 tháng)
12CF50
(600.000đ/12 tháng)
MO 12CF50 gửi 9084
30GB/30 ngày (360GB/ 12 tháng)

10. Bảng giá các gói cước 4G Mobifone Fast Connect mới nhất năm 2023

Nhà mạng Mobifone mang đến cho các thuê bao Fast Connect Mobifone các gói cước 4G Mobifone theo tháng và chu kỳ dài để khách hàng có thể đa dạng sử dụng. Hãy chọn cho mình gói 4G Fast Connect Mobi phù hợp để tiến hành sử dụng ngay nhé.

10.1 Bảng gói cước 4G của Mobifone Fast Connect chu kỳ tháng

Tên gói Cú pháp/Ưu đãi Đăng ký nhanh
F70
(70.000đ/30 ngày)
MO F70 gửi 9084
7GB data
Cước vượt gói 200đ/MB
F90
(95.000đ/30 ngày)
MO F90 gửi 9084
9GB data
Cước vượt gói 200đ/MB
F120
(120.000đ/30 ngày)
MO F120 gửi 9084
12GB data
Cước vượt gói 200đ/MB
F200
(200.000đ/30 ngày)
MO F200 gửi 9084
20GB data
Cước vượt gói 200đ/MB
F300
(300.000đ/30 ngày)
MO F300 gửi 9084
30GB data
Cước vượt gói 200đ/MB

*Lưu ý:

  • Với gói cước 4G Mobifone cho thuê bao Fast Connect khách hàng có 30 ngày sử dụng.
  • Sử dụng hết ưu đãi hệ thống sẽ tính cước vượt gói với mức phí 200đ/MB.
  • Gói cước sẽ tự động gia hạn sau 30 ngày sử dụng.

10.2 Bảng giá gói cước 4G Mobifone cho Fast Connect chu kỳ 3 tháng, 6 tháng, 12 tháng

Tên gói Cú pháp/Ưu đãi Đăng ký nhanh
F150
(150.000đ/3 tháng)
MO F150 gửi 9084
3GB/tháng ⇔ 9GB/ 3 tháng
F250
(250.000đ/6 tháng)
MO F250 gửi 9084
3GB/tháng ⇔ 18GB/ 6 tháng
F500
(500.000đ/12 tháng)
MO F500 gửi 9084
5GB/tháng ⇔ 60GB/ 12 tháng

*Lưu ý:

  • Các gói cước 4G Fast Connect Mobifone chu kỳ dài không giới hạn dung lượng. Theo đó, sử dụng hết ưu đãi tốc độ cao trong tháng khách hàng được miễn phí truy cập ở tốc độ thường.
  • Ưu đãi tốc độ cao được sử dụng trong vòng 30 ngày, sau 30 ngày hệ thống sẽ tự động cộng lại ưu đãi, không bảo lưu ưu đãi cũ.
  • Gói cước cũng có tính năng gia hạn tự động sau chu kỳ 3 tháng, 6 tháng và 12 tháng.


gói cước mobi 4g

Một số điều bạn cần biết khi sử dụng gói cước 4G của Mobifone

– Khách hàng có nhu cầu đăng ký gói cước 4G Mobifone cần phải sử dụng sim 4G Mobifone. Nếu chưa thực hiện chuyển đổi sim 4G Mobifone hãy để cửa hàng Mobifone, hoặc thực hiện cách chuyển đổi tại nhà nhé.

» Tìm hiểu ngay cách đổi sim 4G Mobifone miễn phí nhanh chóng và đơn giản nhất

– Bên cạnh đó, điện thoại bạn đang dùng phải được hỗ trợ kết nối mạng 4G Mobifone. Nếu điện thoại không có hỗ trợ kết nối 4G, bạn hoàn toàn có thể truy cập mạng ở tốc độ 3G trên các gói 4G của Mobifone đã đăng ký.

  • Trong quá trình sử dụng, để kiểm tra dung lượng data gói cước 4G Mobifone miễn phí còn lại của gói cước bằng cách soạn tin nhắn: KT DATA gửi 999 (200đ/tin nhắn).
  • Hầu hết các gói cước đều có tính năng gia hạn tự động khi hết chu kỳ, chính vì thế khi không có nhu cầu sử dụng tiếp nữa hãy huỷ gói 4G Mobifone bằng cách soạn tin: HUY TENGOICUOC gửi 999.
  • Trường hợp, muốn hủy gia hạn gói cước (tiếp tục sử dụng ưu đãi đến hết chu kỳ nhưng không gia hạn ở chu kỳ sau), bạn có thể soạn tin: KGH gửi 999

Gói cước 4G Mobi giá rẻ cho di động và Fast Connect sẽ giúp khách hàng có những trải nghiệm thoải mái hơn khi có nhu cầu truy cập Internet. Hãy chọn lựa cho mình gói cước thật phù hợp để các nhu cầu truy cập mạng, Facebook, Youtube, Zalo, Check mail… trên di động trở nên dễ dàng nhanh chóng và tiết kiệm hơn. Chúc quý khách hàng chọn được gói cước ưng ý và đăng ký gói cước thành công!

Người dùng tìm kiếm: 

  • Gói cước 4G Mobi 90k
  • Gói cước 4G Mobi 120GB
  • Gói cước 4G Mobi
  • Gói 4G Mobi
  • Gói cước 4G MobiFone
  • Các gói 4G Mobi
  • Các gói cước 4G Mobi
  • ….

Cước phí đăng ký qua tổng đài Mobifone 9084 là Miễn Phí, Cảm ơn Quý Khách đã sử dụng dịch vụ của Mobifone

Các Gói Cước Nổi Bật

D30

30.000đ
  •  DATA: 7GB
  •  Hạn: 7 ngày
  •  Soạn: MO D30 Gửi 9084

Chi tiết 

HD90

90.000đ
  •  DATA: 8GB
  •  Hạn: 30 ngày
  •  Soạn: MO HD90 Gửi 9084

Chi tiết 

21G

59.000đ
  •  DATA: 60GB
  •  Hạn: 30 ngày
  •  Soạn: MO 21G Gửi 9084

Chi tiết 

ED100

100.000đ
  •  DATA: 120GB
  •  Hạn: 30 ngày
  •  Soạn: MO ED100 Gửi 9084

Chi tiết 

C120

120.000đ
  •  DATA: 120GB + Miễn Phí gọi
  •  Hạn: 30 ngày
  •  Soạn: MO C120 Gửi 9084

Chi tiết 

ED60

60.000đ
  •  DATA: 60GB
  •  Hạn: 30 ngày
  •  Soạn: MO ED60 Gửi 9084

Chi tiết 

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

BÀI 1: NH ẬP MÔN VI ĐIỀU KHIỂN PIC I. PHẦN LÝ THUY ẾT

1. Giới thiệu về vi điều khiển PIC

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

Bộ vi điều khiển viết tắt là Micro-controller là m ạch tích hợp trên một chip có th ể lập trình được, dùng để điều khiển hoạt động của hệ thống .Theo các ậtp lệnh của người lập trình, bộ vi điêu khiển tiến hành đọc, lưu trữ thông tin, x ử lý thông tin, đo thời gian và tiến hành đóng mở một cơ cấu nào đó .

Trong các thiết bị điện và điện tử, các bộ vi điều khiển điều khiển hoạt động của ti vi, máy giặt, đầu đọc lase, lò vi ba, điện thoại …Trong h ệ thống sản xuất tự động, bộ vi điều khiển sử dụng trong robot, các hệ thống đo lường giám sát .Cácệ thống càng thông minh thì vai trò c ủa vi điều khiển ngày càng quan tr ọng. Hiện nay trên thị trường có r ất nhiều họ vi điều khiển như: 6811 của Motorola, 8051 của Intel, Z8 của Zilog, PIC của
Microchip Technology .

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

PIC bắt nguồn từ chữ viết tắt của “Programmable Intelligent Computer” ( Máy tính khả trình thông minh) là s ản phẩm của hãng General Instrument đặt cho dòng s ản

phẩm đầu tiên ủca họ là PIC 1650. Lúc này Pic dùng để giao tiếp với các thiết bị ngoại vi cho máy chủ 16 bit CP1600, vì vậy người ta gọi PIC với tên là “ Peripheral Interface Controller” ( b ộ điều khiển giao tiếp ngoại vi) .

Năm 1985 General Instrument bán bộ phận vi điện tử của họ, và ch ủ sở hữu mới (Microchip Technology) huỷ bỏ hầu hết các dự án – lúc đó đã quá ỗli thời. Tuy nhiên PIC
được bổ sung EEPROM để tạo thành m ột bộ điều khiển vào ra kh ả trình. Ngày nay có r ất nhiều dòng PIC được sản xuất với hàng lo ạt các modul ngoại vi được tích hợp sẵn ( như :USART, PWM, ADC…) v ới bộ nhớ chương trình từ 512 word đến 32k word.

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

PIC sử dụng tập lệnh RISC, với dòng PIC low- end (độ dài mã l ệnh 12 Bit ví dụ PIC12Cxxx) và mid- range (độ dài mã l ệnh 14 bit , ví dụ PIC16Fxxx), tập lệnh bao gồm khoảng 35 lệnh, và 70 l ệnh đối với dòng PIC high- end( có độ dài mã l ệnh 16bit PIC18Fxxxx). Tập lệnh bao gồm các ệlnh tính toán trên các thanh ghi, và cácằngh số, hoặc các vị trí ô nh ớ, cũng như có các lệnh điều kiện, nhảy/ gọi hàm, và các lệnh quay trở về, nó c ũng có các chức năng phần cứng khác như ngắt hoặc sleep( chế độ hoạt động tiết kiệm điện ). Microchip cung cấp môi trường lập trình MPLAB0, nó bao g ồm phần mềm mô ph ỏng và trình d ịch ASM

Hiện nay có khá nhiều dòng PIC và có r ất nhiều khác biệt về phần cứng, nhưng chúng ta có thể điểm qua một vài nét như sau :
8/16/24/32 bit CPU, xây d ựng theo kiến trúc Harvard Flash và Rom có th ể tuỳ chọn 256 byte đến 256 kbybe

Bộ nhớ nội EEPROM – có th ể ghi/ xoá lênớ it hàng tri ệu lần

Các ổcng xuất/nhập (mức lôgic thường từ 0v đến 5v, ứng với mức logic 0 và 1,

dòng kho ảng vài ch ục mA) 8/16 bit timer

Modun giao tiếp ngoại vi nối tiếp không đồng bộ: USART Modun giao tiếp ngoại vi song song (kiểu máy in)
Bộ chuyển đổi ADC 10 bit nội gồm 8 kênh đầu vào

Module ngoại vi MSSP dùng cho các giao tiếp I2C, SPI Modul CCP có ch ức năng
o Comparator (so sánh)

o Capture

Một số

o PWM: dùng trong điều khiển động cơ dòng vi điều khiển PIC hỗ trợ thêm:
Hỗ trợ điều khiển động cơ 3 pha, 1 pha

Hỗ trợ giao tiếp USB

Hỗ trợ điều khiển Ethernet

Hỗ trợ giao tiếp CAN

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

Hỗ trợ giao tiếp LIN Hỗ trợ giao tiếp IRDA

DSP những tính năng xử lý tín hi ệu số

1.3 Các thành phần cơ bản của một mạch ứng dụng vi điều khiển PIC:

1.4 Các khái ệmni cơ bản:

Cổng xuất nhập I/O:

Trong vi điều khiển PIC16F877A có 5 c ổng:

Cổng A gồm 6 chân: RA0, RA1.. RA5

Cổng B gồm 8 chân: RB0, RB1,..RB7

Cổng C gồm 8 chân: RC0, RC1, ..RC7

Cổng D gồm 8 chân: RD0, RD1,..RD7

Cổng E gồm 3 chân: RE0, RE1, RE2

Mỗi cổng thực chất được quản lý b ởi các thanh ghi PORTA, PORTB, PORTC, PORTD, PORTE nằm trong bộ nhớ RAM của vi điều khiển. Xem hình sau:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Bộ nhớ RAM của vi điều khiển PIC 16F877A gồm 4 bank nhớ. Nhìn vào các bank nhớ ta có th ể thấy các thanh ghi được đặt tên và các thanh ghi đa mục đích (General Purpose
Register).
Các thanh ghi được đặt tên là các thanh ghi đặc biệt dùng để điều khiển, quản lý hoặc thể hiện trạng thái ủca các khối chức năng trong vi điều khiển ví dụ PORTA

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

chân c ủa vi điều khiển có
HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

là đại diện cho các chân cổng A, PORTB là đại diện cho các chân cổng B v.v. Các thanh ghi này có địa chỉ xác định và không được dùng cho các mục đích khác

Các thanh ghi đa mục đích được dùng để đặt biến trong một chương trình ứng dụng của vi điều khiển. Nhìn vào b ản đồ bộ nhớ RAM, ta thấy biến có th ể đặt từ

địa chỉ 20F đến 7Fh trong bank nhớ 0, A0h-EFh, 120h-16Fh, 1A0h-1EFh.

Trở lại vấn đề về các cổng, tới đây ta có thể đưa ra nhận xét:

Thanh ghi PORTA phản ánh trạng thái ủca các chân cổng A, nghĩa là mu ốn tín hiệu đầu ra của các chân cổng A như thế nào ta ch ỉ việc đưa giá trị vào các bit tương ứng trên thanh ghi PORTA. Cũng như khi đọc giá trị của thanh ghi PORTA ta sẽ biết được trạng thái ủca các chân cổng A.
Ví dụ:

Muốn RA0 ở mức logic 1 (mức 5V), RA1 ở mức logic 0 (mức 0V), RA2 ở mức logic 1, RA3 ở mức logic 0, RA4 ở mức logic 1, RA5 ở mức logic 1, ta chỉ việc gán giá ịtr 000110101 cho thanh ghi PORTA.
X X 1 1 0 1 0 1

RA5 RA4 RA3 RA2 RA1

RA0

X: không quan tâm.

Tương tự như vậy với PORTB,PORT C,PORTD,PORTE.

Tính đa chức năng của một chân trên vi điều khiển:

Nhìn vào s ơ đồ chân c ủa vi điều khiển, ta có th ể thấy một số

tên gồm nhiều phần với dấu gạch chéo. Ví dụ: RA0/AN0, RC7/RX/DT, RC6/TX/CK Đây chính là tính đa chức năng của một chân trên vi điều khiển hay còn g ọi là s ự dồn
kênh.

Ý ngh ĩa của nó là:

Bình thường nếu không được cài đặt thì tấc cả các chân trên 5 ổcng A, B, C, D, E là các chân vào ra s ố I/O.

Nếu trong chương trình ta có cài đặt một chức năng nào đó như RS232, ADC hoặc PWM v.v thì các chân tương ứng với chức năng đó sẽ hoạt động theo chức năng đó. Khi đó chân này s ẽ không được dùng làm chân vào ra s ố như bình thường nữa.

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

Ví dụ: bình thường chân RA0/ANO là chân vào ra s ố RA0, nếu chức năng ADC với kênh vào tín hi ệu analog là kênh0 được cài đặt khi đó chân RA0 /AN0 sẽ là chân vào c ủa bộ ADC, tức là ho ạt động theo chức năng AN0.

Tương tự như vậy, khi cài đặt giao tiếp với thiết bị ngoại vi theo chuẩn RS232, chân vào ra số RC7/RX/DT sẽ hoạt động như đầu vào d ữ liệu RS232 tức là ch ức năng RX của chân này.

Cài đặt vào/ra cho các chân vào ra s ố trên cácổ ng:c

Các chân vào/ra số trên vi điều khiển PIC phải được cài đặt là chân vào ho ặc chân ra thì

mới hoạt động đúng chức năng. Việc một chân trên cổng X (X=A,B,..E) được qui định là đầu ra hay đầu vào ph ụ thuộc vào bit tương ứng trên thanh ghi TRISX (X=A,B,..E) là 0 hay 1.

Ví dụ: Muốn 4 chân th ấp (bit thấp) trên ổcng B (RB0-RB3) là chân vào, 4 chân cao (bit

cao) trên ổcng B (RB4-RB7) là chân ra thì giá trị các bit trên thanh ghi TRISBẽ slà:

0 0 0 0 1 1 1 1

Gợi ý d ễ nhớ là:

Để chân RB.m (m=0- 7) là đầu ra, tức Output thì giá trị TRISB.m là 0 Là đầu vào, t ức Input thì giá trị TRISB.m là 1
Tương tự như vậy đối với các chân trên cácổ ngc còn l ại

2. Ngôn ng ữ lập trình cho vi điều khiển PIC- CCS:

2. 1 Các ngôn ngữ lập trình cho vi điều khiển PIC: Ngôn ng ữ lập trình cho vi điều khiển PIC có 2 lo ại:

– Ngôn ng ữ lập trình cấp thấp- Hợp ngữ: có ph ần mềm MPLAB

– Ngôn ng ữ lập trình bậc cao: có nhi ều loại, được phát triển theo ngôn ng ữ C, như: CCS, HTPIC, PIC BASIC v.v
Ưu điểm của hợp ngữ là giúp người học và l ập trình hiểu rõ hơn về cấu trúc bên trong ủca

vi điều khiển PIC, cũng như tối ưu hóa bộ nhớ chương trình. Tuy nhiên, nhìn chung phương pháp tiếp cận hợp ngữ là khó và kh ả năng phát triển ứng dụng là h ạn chế, mất

 

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

thời gian. Vì vậy, khóa h ọc sẽ tập trung vào s ử dụng ngôn ng ữ bậc cao mà c ụ thể là CCS để nghiên ứcu và phát triển cácứng dụng trên PIC.

Ưu điểm của CCS là:

– Kế thừa tấc cả đặc điểm của ngôn ng ữ C- là ngôn ng ữ cơ bản, quen thuộc mà sinh viên đã được đào tạo

– Xây d ựng sẵn các hàm phục vụ cho việc sử dụng dễ dàng các khối chức năng đặc biệt của Vi điều khiển PIC như khối ADC, PWM, RS232, SPI
– Có kh ả năng kết hợp với ngôn ng ữ hợp ngữ, tạo sự mềm dẻo trong phát triển ứng dụng

– Khả năng phát triển, nâng c ấp ứng dụng là d ễ dàng

– Ngày càng được cập nhật với nhiều tính năng ưu việt và hi ệu quả hơn.

2.2 Cơ bản về ngôn ng ữ lập trình CCS:

2.2.1 Ví dụ về một chương trình viết trên ngôn ngữ CCS:

// Đây là chú thích chương trình

//Bắt đầu các chỉ thị tiền xử lý c ủa chương trình

#include<16f877a.h> // cho file định nghĩa thiết bị 16f877a.h vào chương trình #fuses HS,NOLVP,NOWDT// Cấu hình cho vi điều khiển PIC

#use delay (clock=4000000) // dùng thạch anh tần số 4MHz // Khai báo biến hằng
byte const MAP[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //=========================================== //===========================================

// Bắt đầu chương trình con hiển thị

void display(int n)

{

char b; // khai báo biến b

b=((MAP[n/10]) ^ 0x00);

if ((n/10)==(0)) b=0xff;

output_b(b); // sử dụng hàm xu ất giá trị ra cổng B

output_low(PIN_A4);// sử dụng hàm đưa giá trị chân RA4 xu ống mức thấp

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

delay_ms(2);// Sử dụng hàm t ạo trễ 2 ms

output_high(PIN_A4); // sử dụng hàm đưa giá trị chân RA4 lên mức cao

output_b((MAP[n%10]) ^ 0x00);

output_low(PIN_A5);

delay_ms(2);

output_high(PIN_A5);

}

// Kết thúc chương trình con hiển thị

//============================================

// Bắt đầu chương trình chính

// Đây là nơi vi điều khiển bắt đầu chạy lệnh

//============================================

void main()

{

int i,count;

count=0;

while(TRUE)

{

for (i=0;i<=50;i++)

display(count); // dispay 50 times

count=(count==99) ? 1: count+1;

}

}

2.2.2 Cấu trúc của một chương trình viết bằng CCS:

2.2.2.1 Khai báo tiền xử lý:

Bắt đầu một chương trình viết bằng ngôn ng ữ CCS là ph ần khai báo tiền xử lý:

1. Đầu tiên là phần khai báo file header:#include <tên chip dùng.h>

Ví dụ: # include <16f877a.h>

Việc khai báo này thực chất là chép cả file 16f877a.h vào chương trình này.

 

 

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

Vậy nội dung của file .h này là gì? N ội dung của file này s ẽ định nghĩa tấc cả các tên ũngc như định nghĩa các hằng sẽ được dùng trong các hàm chức năng của
CCS.

Ví dụ trong chương trình cho ở trên, trong dòng lệnh :

output_low(PIN_A4);// sử dụng hàm đưa giá trị chân RA4 xu ống mức thấp

thì hằng PIN_A4 được định nghĩa trong file 16f877a.h là #define PIN_A4 44,

CCS hiểu đây là bit thứ 4 của thanh ghi có địa chỉ 04h (thanh ghi PORTA). Có th ể mở file: C:\Program Files\PICC\Devices\16f877a.h để hiểu thêm

2. Thứ hai là ph ần khai báo ấcu hình: #fuses HS,NOLVP,NOWDT

Vi điều khiển PIC có th ể hoạt động ở nhiều chế độ khác nhau, ũngc như cách cấu hình phần cứng của nó c ũng có nhiều chế độ. Mỗi chế độ như vậy được khai báo và dùng s ẽ ảnh hưởng đến hoạt động của các khối chức năng, cũng như các chân của vi điều khiển. Vì vậy, đối với mỗi ứng dụng, ta phải khai báo ấcu hình cho phù hợp.

Trong ví dụ trên, khai báoấuc hình cho bộ dao động kiểu HS, không s ử dụng chức năng Watchdog Timer, và lập trình điện áp thấp.
3. Thứ ba là ph ần khai báo ầtn số của thạch anh dùng cho ứng dụng, tốc độ này ph ải phù hợp với thạch anh ta dùng trong mạch.
# USE Delay(clock=tần số thạch anh)

Ví dụ: # USE Delay(clock=4000000)// Khai báo dùng thạch anh 4 MHz

Điều lưu ý là chúng ta chỉ dùng được hàm t ạo thời gian trễ delay_ms(), delay_us() sau khi có khai báo này trong chương trình.

4. Ngoài ra, khi s ử dụng bất cứ khối chức năng đặc biệt nào trong vi điều khiển PIC ta phải dùng chỉ thị tiền xử lý #USE để khai báo. Các khối chức năng đặc biệt là RS232, PWM, SPI, I2C ..v.v

Ví dụ: #use rs232(baud=9600, xmit=PIN_C6,rcv=PIN_C7)

2.2.2.2 Phần khai báo biến toàn c ục:

Sau phần khai báo tiền xử lý là ph ần khai báo biến toàn c ục nếu có.

Cũng nhắc lại biến toàn c ục là bi ến được sử dụng trong toàn b ộ chương trình, cả chương trình chính và ch ương trình con. Điều này khác với biến cục bộ là bi ến được khai báo

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

trong các chương trình con, hàm con, ch ương trình chính, các biến này ch ỉ được tạo ra và sử dụng trong chính mỗi chương trình khai báo nó.
Nhân đây cũng giới thiệu qua dạng dữ liệu dùng trong CCS. Có m ột số các dạng cơ bản như sau:

Khai báo biến:

Int1,short: dạng logic 1,0

Int,Int8,byte: dạng số nguyên 8 bit, nếu khai báo dạng số nguyên 8 bit có dấu thêm signed

Int16,long: dạng số nguyên 16 bit

Int32: dạng số nguyên 32 bit

Char: dạng kí tự 8 bit

Float: dạng số thực 32 bit

Ví dụ: int8 a; // Khai báo a là biến số nguyên 8 bit

Khai báo hằng số:

Ví dụ: int8 const a=231;

Khai báo mảng hằng số:

Ví dụ: int const a[5]= {1, 23, 3, 4, 5}

2.2.2.3 Phần khai báo, định nghĩa cácchương trình con:

Chương trình con là ch ương trình sẽ được gọi từ chương trình chính ho ặc chương trình con khác.
Chương trình con phải được khai báo và định nghĩa trong một file chương trình ứng dụng.

Phần khai báo phải đặt trước chương trình chính (trong file)

Phần định nghĩa có thể định nghĩa ngay trong khai báo hoặc được đặt bất kì nơi nào sau phần khai báo biến toàn c ục nếu có.
Ngoài các chương trình con bình thường ra, còn có ch ương trình con phục vụ ngắt được đặt sau khai báo tiền xử lý: # int_tên ngắt. Phần này s ẽ được bàn k ĩ hơn trong các bài học
sau.

2.2.2.3 Phần chương trình chính:

Bắt đầu bằng:

void main() {

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

 

}

Cũng nhắc lại là trong m ột chương trình CCS , vi điều khiển sẽ chạy từ chương trình chính, hay nói cách khác là ừt dòng l ệnh đầu tiên sau void main().

Các chương trình con chỉ được gọi tại các ờli gọi chương trình con trong chương trình chính hoặc từ các chương trình con khác. Chương trình con phục vụ ngắt chỉ được chạy khi có ng ắt xảy ra, và ng ắt đó được cho phép (sẽ bàn k ĩ hơn trong các bài học sau).
2.2.3 Các ấcu trúc thuật toán ủca ngôn ng ữ CCS:

Cấu trúc thuật toán ủca ngôn ng ữ CCS kế thừa 100% từ ngôn ng ữ C. Ở đây xin nhắc lại một số các ấcu trúc hay dùng:
– Cấu trúc IF:

o If (biểu thức) Lệnh1;

Else lệnh2;

Ví dụ: if (x==25)

x=1;

else

x=x+1;

– Cấu trúc lặp While:

o While (biểu thức)

{

Các ệlnh;

}

Ví dụ: While (count<20)

{

Output_B(count);

Count=count+1;

}

Chú ý: while(1) sẽ thực hiện các ệlnh trong khối while này mãi mãi

– Cấu trúc lặp FOR:

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

o For (biểu thức 1, biểu thức 2, biểu thức 3)

{

Các ệlnh;

}

Ví dụ: for (i=1;i<=10;++i)

A=a+i;

Cấu trúc lựa chọn SWITCH:

o SWITCH (biến)

{

Case giá trị 1: lệnh 1;

Break;

Case giá trị 2: lệnh 2;

Break;

………

Case giá trị n: lệnh n

Break;

[default: lệnh n+1; break;]

}

Ví dụ: switch (cmd)

{ case 0:printf(“cmd 0”);

break;

case 1:printf(“cmd 1”);

break;

default:printf(“bad cmd”);

break;

}

CÔNG TY TNHH CÔNG NGH

Ệ CAO ATECKO

www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

Chú ý: lệnh break được dùng để thoát ậlp tức khỏi một vòng l ặp For, While, Switch

 

2.2.4 Các toánử tcơ bản trong CCS:

Hoàn toàn tương tự trong C.

Nhắc lại một số toán ửt hay dùng:

– += ý ngh ĩa là c ộng thêm một giá trị và l ấy kết quả Ví dụ: a+=2 nghĩa là a= a+2

Tương tự đối với các phép toánừtr,chia, nhân

-++ ý ngh ĩa là c ộng thêm 1 đơn vị vào bi ến

Ví dụ: a++; tức là a=a+1

– &&: phép AND

– ||: phép OR

– !: phép NOT

– !=: không b ằng

– >>n: dịch trái n bit

– <<n: dịch phải n bit

2.2.5 Các hàm số học cơ bản trong CCS:

Hoàn toàn gi ống trong C.

Nhắc lại một số hàm cơ bản:

Abs (): lấy trị tuyệt đối

Ceil(): làm tròn theo h ướng tăng

Floor(): làm tròn theo h ướng giảm

Pow(): lũy thừa

Sqrt(): lấy căn

Chi tiết tra help CCS : trong tab contents, chọn Built-In-Function Chú ý là khi s ử dụng các hàm này c ần khai báo file header tương ứng

2.2.6 Các hàm vào ra cơ bản trong CCS:

– Output_low (chân ): cho chân xuống mức logic thấp (mức điện áp 0V), chân có thể là:

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

PIN_A0, PIN_A1, ..PIN_B0, PIN_B1,.. PIN_C0,..v.v Nói chung là các chân có

tên trong file C:\Program Files\PICC\Devices\16f877a.h

Ví dụ: Output_low(PIN_D0) đưa chân RD0 của PIC xuống mức thấp

– Output_high(chân ): cho chân lên mức logic thấp (mức điện áp 0V), chân có thể là:

PIN_A0, PIN_A1, ..PIN_B0, PIN_B1,.. PIN_C0,..v.v Nói chung là các chân có tên trong file C:\Program Files\PICC\Devices\16f877a.h
Ví dụ: Output_high(PIN_a5) đưa chân Ra5 của PIC lên mức cao

– Output_bit(chân,giá trị): là l ệnh tổng hợp 2 lệnh trên, xuất giá trị ra chân. Giá trị có th ể là 0 (m ức thâp) ho ặc là 1 (m ức cao). Tên chân tương tự như 2 lệnh trên Ví dụ: output_bit(PIN_E0,1); đưa chân E0 lên mức 1

– Output_X(giá trị): lệnh này đưa giá trị ra cổng X. X có th ể là A, B, C, D, E.

Ví dụ: Output_A(0x21); đưa giá trị 0x21 ra cổng A

– Biến=Input_X(): đưa giá trị của cổng X vào B iến. X là A, ho ặc B, C, D, E

Ví dụ: bien1= Input_A()

– Biến=Input(chân ): lệnh này đưa giá trị của chân vào bi ến. Chân tương tự như trong các ệlnh.

Ví dụ: bien2= Input(PIN_A2);

2.2.7 Các hàm tạo trễ:

Các hàm tạo trễ gồm delay_cycles(), delay_us(), delay_ms. Tạo một khoảng thời gian trễ từ lúc lệnh được thực hiện. Chú ý là ph ải sử dụng khai báo tiền xử lý # use delay(clock=tần sô) thì m ới dùng được các ệlnh này.

– delay_cycles(số chu kỳ): tạo trễ một khoảng thời gian bằng số chu kỳ. Số chu kỳ=0-255
– delay_us(số micro giây) : tạo trễ số micro giây. S ố micro giây =0-65535

– delay_ms(số mili giây) : tạo trễ số mili giây. S ố mili giây= 0-65535

 

 

 

 

 

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

 

 

 

 

 

 

 

II. PHẦN THỰC HÀNH

Mục tiêu:

– Làm quen v ới ngôn ng ữ lập trình CCS, phần mềm mô ph ỏng Proteus, kit phát

triển

– Hiểu được các phần cơ bản của một mạch thực thi vi điều khiển PIC

– Hiểu được việc xuất nhập dữ liệu trên các chân vi điều khiển

– Ôn l ại tư duy lập trình, thuật toán và cấu trúc một chương trình viết trên C

– Làm quen v ới một số lệnh cơ bản trong CCS

Bài t ập 1.1: Dùng phần mềm mô ph ỏng Proteus thiết kế mạch như hình vẽ sau:

 

 

 

 

 

 

 

 

 

 

 

 

 

a. Viết chương trình bật đèn led D1

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

b. Viết chương trình bật đèn led D2, tạo trễ 1s, tắt đèn led D2, lặp lại quá trình này

c. Viết chương trình bật đèn D1, D2, …D7 theo giá trị của cổng B từ 0x00 đến 0xFF rồi lặp lại quá trìnhđó.
d. Viết chương trình bật các đèn led theo trình tự như sau: D1 sáng, D1 tắt đồng thời

D2 sáng, D2 ắt đồng thời D3 sáng v.v. Và lặp lại Bài t ập 1.2: Dùng Proteus thiết kế mạch như hình vẽ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Viết chương trình hiển thị các led theo qui luật sau:

– Ban đầu không có đèn nào sang

– Mỗi lần bấm vào phím b ấm nối với chân RD0, đèn sẽ sáng theo ốs lần bấm: bấm

1 lần đèn D1 sáng, bấm 2 lần đèn D2 sáng,… bấm 8 lần đèn D8 sáng, bấm 9 lần

quay lại chu trình trên.

Bài 1.3: Viết chương trình mô ph ỏng hào quang ở chùa trong ngày l ễ.

 

 

 

 

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

 

BÀI 2: CÁC PHƯƠNG PHÁP HIỂN THỊ TRONG CÁC THIẾT BỊ DÙNG VI ĐIỀU KHIỂN

PHẦN LÝ THUY ẾT:

Hiện nay, trong hầu hết các thiết bị nhúng đều có s ử dụng các khối hiển thị. Mục đích cho người dùng giám sát, cài đặt và hi ển thị các thông số của thiết bị cũng như đối tượng cần giám sát điều khiển.

Có r ất nhiều phương pháp hiển thị, có th ể kể ra như sau:

– Hiển thị cảnh báo, báoỗi:l thông thường dùng led đơn. Có thể hiển thị theo kiểu dùng nhiều màu khác nhau hoặc bật tắt v.v

– Hiển thị số liệu: dùng led 7 đoạn, LCD hoặc LCD đồ họa v.v

– Hiển thị trên máy tính: dùng cácầphnmềm điều khiển giám sát,ếkt nối thiết bị và máy tính thông qua chu ẩn RS232 hoặc các chuẩn mạng (giám sátừ txa)

Trong bài này s ẽ giới thiệu 2 cách hiển thị đầu, phần hiển thị bằng máy tính ẽs được đề cập trong bài h ọc về chuẩn giao tiếp RS232.

2.1 Hiển thị bằng led đơn:

Đây là cách hiển thị đơn giản nhất.

Thông thường cách hiển thị này dùng để báo một trạng thái nào đấy của thiết bị như trạng thái làm vi ệc của nguồn (lỗi hoặc không l ỗi), cũng như các khối chức năng khác.

Có r ất nhiều loại led đơn dùng để hiển thị. Phương pháp đơn giản như sau:

 

 

 

 

 

 

 

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

 

 

 

 

 

 

 

 

 

Hình 2.1: Hiển thị led đơn

Các led này sáng khi được cấp áp ỡc 2 V, dòng 10-20mA.

Nếu dùng một chân ra t ừ vi điều khiển để bật tắt led, phải dùng thêm điện trở hạn dòng,h ạn áp.

Tính toán như sau:

Muốn bật đèn, ta cho chân ra vi điều khiển lên mức cao nối với đầu vào c ủa mạch trên. Như ta biết, chân ra vi điều khiển ở mức logic cao có điện áp 5V.

Cho điện áp rơi trên led là 2V, dòng qua là 15mA.

Suy ra, điện áp rơi trên trở là 3V. Dòng qua led chính là dòng qua điện trở và b ằng 15mA.

Suy ra, điện trở dùng: R=3/15mA=200 ohm.

Chọn điện trở tiêu chuẩn 220 ohm

(Điện trở tiêu chuẩn: 10, 11, 12, 13, 15, 16, 18, 20, 22, 24, 27, 30, 33, 36, 39, 43, 47, 51, 56, 62, 68, 72, 82, 91 và các bội số)

2.2 Hiển thị bằng led bảy đoạn- 7 segment led:

2.2.1 Cấu tạo của led 7 đoạn:

 

 

 

 

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

 

 

 

 

 

 

 

 

 

Hình 2.2: Led 7 đoạn

Một led 7 đoạn thực ra là g ồm 7 led đơn nối với nhau (8 led đơn nêu có thêm dấu chấm-dp).

Có 2 lo ại:

– Chung catod: các đầu catod (cực âm) được nối chung với nhau và n ối với đất, các đầu anod a,b,c,d,e,f,g,h được đưa ra ngoài (các chân) nhận tín hiệu điều khiển. Khi cấp điện áp 5v cho mỗi đầu anod, led tương ứng với đầu đó sẽ sáng

– Chung anod: các đầu anod (cực âm) được nối chung với nhau và n ối với nguồn, các đầu catod a,b,c,d,e,f,g,h được đưa ra ngoài (các chân) nhận tín hiệu điều khiển. Muốn led đơn nào sáng chỉ việc đưa chân catod của led tương ứng xuống mức 0V.

 

 

 

 

 

 

 

 

 

 

Hình 2.3: Cấu tạo của 2 loại led 7 đoạn

 

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

2.2.2 Hiển thị 1 led 7 đoạn dùng vi điều khiển:

 

 

 

 

 

 

 

 

 

 

 

 

Như đã gi ới thiệu ở phần trên, thực chất led 7 đoạn gồm 8 hoặc 7 led đơn nối với nhau. Vì vậy để điều khiển thanh led đơn sáng, cách thực hiện phần cứng như hình 2.1.

Cụ thể hơn, như dùng led chung anod như hình vẽ trên. Mỗi đầu vào a,b,c,d,e,f,g,h được nối với một chân c ủa vi điều khiển, tương ứng là RB0, RB1, ..RB7, thông qua các điện trở phân áp 200 ohm, đầu anod chung được nối với nguồn. Để led đơn sáng đơn giản ta đưa chân vi điều khiển nối với led đó xuống mức thấp.

Như trên hình 2.4 trên,để led 7 đoạn hiển thị số 2 thì các led a,b,d,e,g sáng; các led c,ắtf. tGiá trị sáng tương ứng chân vi điều khiển nối vào ở mức 0, giá trị tắt tương ứng với chân vi điều khiển nối với ở mức 1.

Do đó nội dung của thanh ghi PORTB là:

0 0 1 0 0 1 0 0

Đây là mã led 7 đoạn của số 2

Như vậy, chúng ta lưu ý m ột điều rằng, dữ liệu xuất ra led 7 đoạn là mã led t ương ứng với số cần xuất

Mã led t ương ứng với các ốs từ 0 đến 9 là:

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90

Cách điều khiển led 7 đoạn chung catod thì ngược lại.

2.2.3 Hiển thị nhiều led 7 đoạn dùng vi điều khiển: Trong thực tế, ta phải dùng nhiều led 7 đoạn để hiển thị. Vậy giải quyết việc hiển thị nhiều led như thế nào?
Ví dụ: để hiển thị số 35 bằng 2 led 7 đoạn.

Đối chiếu với cách hiển thị 1 led 7 đoạn, ta nghĩ đơn giản chỉ là dùng 1 c ổng hiển thị số 3, 1 cổng khác hiển thị số 5.

Như vậy ta mất 2 cổng. Hiển thị 4 led thì mất 4 cổng => toàn b ộ chân trên vi điều khiển dùng cho việc hiển thị led…Không còn chân để giao tiếp với các thiết bị khác như bàn phím, đầu vào s ố khác v.v Không khả thi!

Ta có phương pháp tiết kiệm chân hơn để giải quyết:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Hình 2.5: Hiển thị 2 led 7 đoạn

 

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

Các chân dữ liệu (chân s ẽ nhận mã led t ừ vi điều khiển) được nối tương ứng với nhau và n ối vào 1 cổng của vi điều khiển, chẳng hạn như cổng B

Chân ngu ồn của 2 led được điều khiển bởi 2 chân trên vi điều khiển, chằng hạn chân RA4 và RA5 như trên hình, thông qua c ực B của 2 transistor pnp.

Quá trình hiển thị con số 35 trên 2 led ẽs như sau:

– Cho chân RA4 (chân n ối với led hàng ch ục) xuống mức thấp, transistor thứ nhất mở do tiếp giáp BE thuận, chân RA5 lên mức cao (chân n ối với led hàng đơn vị), transistor thứ hai không m ở. Vậy chỉ có led hàng ch ục được cấp nguồn.
– Cho cổng B xuất dữ liệu mã led c ủa số 3. Chỉ có led hàng ch ục được cấp nguồn nên chỉ có led này sáng

– Tạo thời gian trễ 10-20ms

– Điều khiển tương tự cho led hàng đơn vị được cấp nguồn, led hàng ch ục không c ấp nguồn, xuất dữ liệu mã led s ố 5 ra cổng B. Led đơn vị hiển thị số 5.

– Tạo thời gian trễ 10-20ms

– Quay lại bước thứ nhất

Như vậy, số 3 hiển thị 10ms, số 5 hiển thị 10ms và quay vòng nh ư vậy. Thời gian này r ất nhanh, do hiệu ứng của mắt, ta cảm giác như số 35 hiển thị cùng lúc. Bài toán được giải quyết, ta chỉ mất có 10 chân để điều khiển 2 led.

Cách hiển thị nhiều led cũng tương tự như vậy.

Cũng giải thích thêm lí do dùng transistor nối vào RA4, RA5. Do chân vi điều khiển có dòng khoảng vài ch ục mA, đây là chân cấp nguồn cho led 7 đoạn, mỗi led đơn trong Led 7 đoạn mất 20mA vây c ả led 7 đoạn mất trên 100mA. Vì vậy ta phải dùng transistor để khuếch đại dòng.

2.3 Hiển thị dùng LCD:

 

 

 

 

 

 

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

LM016L

VSSVDDVEE RSRWE D0D1D2D3D4D5D6D7

1 2 3 4 5 6 7 8 9 10 11 12 13 14

Hình 2.6: Các chân LCD

2.3.1 Các chân cơ bản của LCD 2 dòng 16 kí t ự:

• VSS: Chân đất

• VCC: Chân ngu ồn

• VEE: Chân hi ệu chỉnh độ sáng ủca LCD

• RS:

–=0: LCD sẽ nhận lệnh từ vi điều khiển

–=1: LCD sẽ nhận kí tự từ vi điều khiển để hiển thị

• R/W:

–=1: Vi điều khiển đọc dữ liệu từ LCD

–=0: Vi điều khiển ghi dữ liệu lên LCD

Thông thường Vi điều khiển chủ yếu ghi dữ liệu lên LCD nên chân này thường nối đất

 

 

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

• E: Chân cho phép (Enable). Sau khi lệnh hoặc dữ liệu đã được chuẩn bị trên đường dữ liệu, tạo xung mức cao-mức thấp sẽ bắt đầu quá trình LCD nhận dữ liệu hoặc lệnh từ vi điều khiển.

• D0-D7: các chân dữ liệu, nơi vi điều khiển truyền lệnh hoặc dữ liệu lên LCD.

2.3.2 Khởi tạo LCD:

LCD có nhi ều độ làm vi ệc, có th ể kể ra như sau:

– Chế độ 1 dòng hay 2 dòng

– Chế độ giao tiếp 4 bit hay 8 bit

– Chế độ font 5*8 hoặc 5*10

– Ngoài ra còn có th ể thay đổi vị trí hiển thị kí tự v.v

Vì vậy, trước khi bắt đầu quá trình hiển thị một chuỗi kí tự nào đó, ta cần quá trình khởi tạo để

cài đặt các chế độ này. Vi điều khiển thực hiện quá trình khởi tạo này b ắt cách ghi đến LCD một chuỗi các ệlnh.

Căn cứ vào ch ức năng của các chân vi điều khiển được giới thiệu ở trên, ta đưa ra qui trình của việc gửi một lệnh từ Vi điều khiển đến LCD:

– Cho chân R/W=0 để xác định đây là ghi xuống LCD (thông thường chân này được nối

đất, nên mặc định chân này ở mức 0, ta không c ần quan tâm đến nữa)

– Cho chân RS=0 để xác định đây là lệnh mà vi điều khiển gửi xuống LCD (phân bi ệt với RS=1, gửi kí tự hiển thị)

– Gửi mã l ệnh xuống LCD theo các đường dữ liệu (RD0-RD7 nếu dùng chế độ 8 bit, R4-R7 nếu dùng chế độ 4 bit)
– Đưa chân E (chân cho phép- Enable) lên mức cao, mức 1

– Tạo trễ vài chu kì l ệnh

– Đưa chân E xuống mức thấp, mức 0

Mã l ệnh như đã gi ới thiệu trong phần trên tùy thuộc vào t ừng lệnh, ở đấy giới thiệu một số lệnh cơ bản như sau:

. Lệnh cài đặt chế độ làm vi ệc:

 

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

0 0 1 DL N F – –

• DL:

–= 1: 8 bit

–= 0: 4 bit

• N:

–= 1: 2 dòng

–= 0 1 dòng

• F:

–= 1: font 5×10 dot

–= 0: font 5×8 dot

. Lệnh đặt chế độ tăng giảm địa chỉ:

0 0 0 0 0 1 I/D S

• I/D:

–= 1 tăng địa chỉ

–= 0 giảm địa chỉ

• S:

–=1: Cài đặt di chuyển cùng địa chỉ

. Lệnh đặt chế độ hiển thị:

0 0 0 0 1 D C B

 

• D: Cho phép hiển thị

• C: cài đặt hiển thị con trỏ

• B: nhấp nháy vị trí kí tự

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

. Lệnh đặt vị trí hiển thị của kí tự:
1 ĐC ĐC ĐC ĐC ĐC ĐC ĐC

 

• Địa chỉ dòng 1: 00- 0F

• Địa chỉ dòng 2: 40-4F

Vì vậy, muốn hiển thị đầu dòng th ứ nhất, mã l ệnh sẽ là 0x80

muốn hiển thị đầu dòng th ứ hai, mã l ệnh sẽ là 0xC0

. Lệnh xóa màn hình: mã l ệnh 0x01

. Lệnh trở về đầu dòng th ứ nhất: mã l ệnh 0x02

Chi tiết có th ề xem datasheet đi kèm

2.3.2 Ghi kí tự lên LCD để hiển thị:

Sau khi thực hiện quá trình khởi tạo để gửi các ệnhl cài đặt chế độ làm vi ệc cùa LCD, kí tự sẽ được hiển thị lên LCD bất kì khi nào vi điều khiển muốn gửi.

Quá trình gửi kí tự gồm các bước sau:

– Cho chân R/W=0 để xác định đây là ghi xuống LCD (thông thường chân này được nối

đất, nên mặc định chân này ở mức 0, ta không c ần quan tâm đến nữa)

– Cho chân RS=1 để xác định đây là kí tự mà vi điều khiển gửi xuống LCD (phân bi ệt với RS=0, gửi lệnh)

– Gửi mã ascii c ủa kí tự cần hiển thị xuống LCD theo các đường dữ liệu (RD0-RD7 nếu dùng chế độ 8 bit, R4-R7 nếu dùng chế độ 4 bit)

– Đưa chân E (chân cho phép- Enable) lên mức cao, mức 1

– Tạo trễ vài chu kì l ệnh

– Đưa chân E xuống mức thấp, mức 0

 

2.4 Giới thiệu một thư viện cho LCD 4 bit và bài t ập ứng dụng:

 

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

File: LCD_lib_4bit:

#include <stddef.h>

#define LCD_RS PIN_B2

#define LCD_EN PIN_B3

#define LCD_D4 PIN_B4

#define LCD_D5 PIN_B5

#define LCD_D6 PIN_B6

#define LCD_D7 PIN_B7

#define Line_1 0x80

#define Line_2 0xC0

#define Clear_Scr 0x01

#separate void LCD_Init ();// ham khoi tao LCD

#separate void LCD_SetPosition ( unsigned int cX );//Thiet lap vi tri con tro

#separate void LCD_PutChar ( unsigned int cX );// Ham viet1kitu/1chuoi len LCD

#separate void LCD_PutCmd ( unsigned int cX) ;// Ham gui lenh len LCD

#separate void LCD_PulseEnable ( void );// Xung kich hoat

#separate void LCD_SetData ( unsigned int cX );// Dat du lieu len chan Data

 

//khoi tao LCD**********************************************

#separate void LCD_Init ()

{

LCD_SetData ( 0x00 );

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

delay_ms(20); /*Cho cho lcd khoi tao */
output_low ( LCD_RS );// che do gui lenh
LCD_SetData ( 0x03 ); /* khoi tao che do 4 bit */
LCD_PulseEnable();
LCD_PulseEnable();
LCD_PulseEnable();
LCD_SetData ( 0x02 ); /* tao giao dien 4 bit */
LCD_PulseEnable(); /* send dual nibbles hereafter, MSN first */
LCD_PutCmd ( 0x2C ); /* function set (all lines, 5×7 characters) */
LCD_PutCmd ( 0x0C ); /* display ON, cursor off, no blink */
LCD_PutCmd ( 0x06 ); /* entry mode set, increment & scroll left */
LCD_PutCmd ( 0x01 ); /* clear display */

 

// Init for BarGraph

 

}

 

#separate void LCD_SetPosition ( unsigned int cX )

{

/* this subroutine works specifically for 4-bit Port A */

LCD_SetData ( swap ( cX ) | 0x08 );

LCD_PulseEnable();

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

LCD_SetData ( swap ( cX ) );

LCD_PulseEnable();

}

 

#separate void LCD_PutChar ( unsigned int cX )

{

/* this subroutine works specifically for 4-bit Port A */

output_high ( LCD_RS );

LCD_PutCmd( cX );

output_low ( LCD_RS );

}

#separate void LCD_PutCmd ( unsigned int cX )

{

LCD_SetData ( swap ( cX ) ); /* send high nibble */

LCD_PulseEnable();

LCD_SetData ( swap ( cX ) ); /* send low nibble */

LCD_PulseEnable();

}

#separate void LCD_PulseEnable ( void )

{

output_high ( LCD_EN );

delay_us ( 3 ); // was 10

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

output_low ( LCD_EN );

delay_ms ( 3 ); // was 5

}

#separate void LCD_SetData ( unsigned int CX )

{

output_bit ( LCD_D4, CX & 0x01 );

output_bit ( LCD_D5, CX & 0x02 );

output_bit ( LCD_D6, CX & 0x04 );

output_bit ( LCD_D7, CX & 0x08 );

}

Chương trình ứng dụng:

 

C1

UDK

30pF X1
13 OSC1/CLKIN RB0/INT 33
CRYSTAL 14 OSC2/CLKOUT RB1 34
C2 RB2 35
2 RA0/AN0 RB3/PGM 36
3 RA1/AN1 RB4 37
30pF 4 38
RA2/AN2/VREF-/CVREF RB5
5 39
RA3/AN3/VREF+ RB6/PGC
6 40
RA4/T0CKI/C1OUT RB7/PGD
7

RA5/AN4/SS/C2OUT 15

8 RC0/T1OSO/T1CKI
16
RE0/AN5/RD RC1/T1OSI/CCP2
9 17
RE1/AN6/WR RC2/CCP1
10 18

RE2/AN7/CS RC3/SCK/SCL
23
RC4/SDI/SDA
1 24
MCLR/Vpp/THV RC5/SDO
R9 RC6/TX/CK 25
RC7/RX/DT 26

4K 19
RD0/PSP0 20
RD1/PSP1 21
RD2/PSP2
22
RD3/PSP3
27
RD4/PSP4 28
RD5/PSP5 29
RD6/PSP6
30
RD7/PSP7
PIC16F877A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

LCD1

LM016L

VSSVDDVEE RSRWE D0D1D2D3D4D5D6D7
1 2 3 4 5 6 7 8 9 10 11 12 13 14

Hình 2.7: Ví dụ về LCD

#include <16f877A.h>

#fuses HS, NOLVP, NOWDT, NOPROTECT

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

#use delay (clock=4000000) //Use built-in function: delay_ms() & delay_us()

#include “LCD_LIB_4BIT.c”

 

 

 

VOID MAIN()

 

{

LCD_INIT();

LCD_PUTCHAR(‘X’);

DELAY_MS(1000);

LCD_PUTCHAR(‘I’);

DELAY_MS(1000);

LCD_PUTCHAR(‘N’);

DELAY_MS(1000);

LCD_PUTCHAR(‘ ‘);

DELAY_MS(1000);

LCD_PUTCHAR(‘C’);

DELAY_MS(1000);

LCD_PUTCHAR(‘H’);

DELAY_MS(1000);

LCD_PUTCHAR(‘A’);

DELAY_MS(1000);

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

LCD_PUTCHAR(‘O’);

PHẦN THỰC HÀNH:

Bài 2.2: Hi ển thị 1 led 7 đoạn

Bài 2.3: Thi ết kế mạch trên Proteus như hình 2.5

a. Lập trình cho 2 led hiển thị số 35

b. Lập trình hiển thị số đếm từ 0-99

Bài 2.4 Thi ết kế mạch trên Proteus như hình 2.7

Lập trình thực hiển hiển thị họ tên, thayđổi các chế độ hiển thị bằng cách gửi lệnh lên LCD

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BÀI 3: B Ộ ĐỊNH THỜI – TIMER

3.1 Giới thiệu:

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

Trong cácứng dụng của vi điều khiển trong thực tế, việc định thời (tạo một khoảng thời gian giữa 2 sự kiện) các thao tác là việc thường xuyên xảy ra.

Để thực hiện việc này, ta có 2 cách:

– Dùng các ệlnh thực hiện các vòng lặp để tạo ra khoảng thời gian. Nguyên ắtc tạo ra khoảng thời gian này đơn giản như sau: nếu vi điều khiển mất một khoảng thời gian x để thực hiện một lệnh, việc lặp lại một lệnh n lần sẽ mất n*x thời gian.

Trong chương trình, cách này được dùng nhiều với thể hiện là các lệnh Delay_ms(), Delay_us()
– Dùng các bộ định thời Timer để tạo ra khoảng thời gian trễ.

Trong bài này, ta s ẽ đi vào nguyên cứu các bộ timer. Một chế độ quan trọng nữa của Timer là khi nó ho ạt động như bộ đếm. Trong ứng dụng này, timer ho ạt động như một bộ đếm, có nhi ệm vụ đếm số các xung đi vào một chân c ụ thể trên vi điều khiển. Chế độ bộ đếm này có nhi ều ứng dụng trong thực tế như đếm số vòng quay c ủa động cơ (phản hồi từ bộ đo tốc độ động cơ-encoder), đếm số sản phẩm trên một dây chuy ền v.v.

Vi điều khiển PIC16F877A có 3 b ộ Timer:

– Timer0: 8 bit (số đếm tối đa của nó là 255), ho ạt động ở 2 chế độ định thời và b ộ đếm.

– Timer1: 16 bit (số đếm tối đa của nó là 65535), ho ạt động ở 2 chế độ định thời và b ộ

đếm.

– Timer2: 8 bit, hoạt động phục vụ chức năng PWM (Pulse Width Modulation- Điều chế

độ rộng xung)

Trong bài này ta đi vào khảo sát 2 bộ Timer0 và Timer1, Timer2 s ẽ được khảo sát trong bài về PWM.

Để tiện cho việc khảo sát, ta đi vào nguyên lý ho ạt động cơ bản của các bộ timer ở hai chế độ:

định thời và b ộ đếm.

3.2 Nguyên lý hoạt động cơ bản của một bộ Timer:

3.2.1 Chế độ định thời:

 

 

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

Mỗi bộ timer có m ột hoặc nhiều thanh ghi chứa giá trị đếm của nó (tùy thu ộc vào độ dài c ủa

timer), ta giả sử tên thanh ghi là TMR có độ dài là n byte, hay giá trị đếm tối đa là . Khi giá trị của TMR đạt đến giá trị này, vi điều khiển sẽ set bit cờ của bộ timer đó lên mức 1. Người dùng sẽ biết được thời điểm này b ằng cách kiểm tra bit cờ. Đồng thời TMR sẽ tự động xóa về giá trị 0.

Khi được cài đặt hoạt động trong chế độ định thời, Giá trị của thanh ghi TMR sẽ tự động tăng lên 1 đơn vị sau mỗi chu kì lệnh của vi điều khiển. Khi giá trị của TMR đạt đến giá trị tối đa, bit cờ của Timer sẽ được set lên mức 1 và TMR b ị xóa, TMR=0.

Giả sử vi điều khiển dùng thạch anh tần số 4MHz, như vậy:

Chu kỳ lệnh= 4 chu kì thạch anh= =1µs

 

Vậy TMR sẽ tự động tăng lên 1 đơn vị sau 1µs.

Nếu ban đầu ta cho TMR= x. Thì sau khoảng thời gian (µs) giá trị TMR sẽ đạt giá trị

tối đa của nó là . Thời điểm này được xác định thông qua trạng thái của bit cờ.

Ngược lại, ta muốn thực hiện định thời khoảng thời gian t sau một sự kiện 1 như sau:

– Sự kiện 1

– Tạo khoảng thời gian trễ t

– Sự kiện 2

Ta làm các bước:

– Sự kiện 1

– Gán giá ịtrban đầu cho TMR =

– Kiểm tra bit cờ

– Khi bit cờ = 1, thực hiện sự kiện 2.

Thật vậy, sau 1 (µs) TMR tăng lên 1 đơn vị, để tăng giá trị cho TMR từ đến giá trị

tối đa (khi bit cờ được set lên 1) mất -t) = t (µs)

Vậy khoảng thời gian từ sau sự kiện 1 (khi TMR bắt đầu được gán) đến sự kiện 2 (ngay sau khi bit cờ được set) là t đúng như yêu cầu của ta.

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

Ví dụ: Để định thời 200 (µs) dùng Timer0 (8 bit; n=1; giá trị tối đa là 255) ta cho TMR0= 255-200=55 rồi bắt đầu cho đếm lên.

3.2.2 Chế độ bộ đếm:

Khi được cài đặt trong này, m ột chân ch ức năng trên vi điều khiển sẽ trở thành chân đầu vào xung của bộ đếm. Ví dụ: chân RA4 đối với Timer0 và RC0 đối với Timer1. Hoạt động của nó có nét giống với chế độ định thời.

Khi được cài đặt hoạt động trong chế độ bộ đếm, Giá trị của thanh ghi TMR sẽ tự động tăng lên 1 đơn vị khi có một xung vào chân đầu vào xung c ủa timer đó. Khi giá trị của TMR0 đạt đến giá trị tối đa, bit cờ của Timer sẽ được set lên mức 1 và TMR b ị xóa, TMR=0.

Như vậy, về cách hoạt động trong chế độ này ch ỉ khác với chế độ định thời ở chỗ, thay vì TMR tự động tăng lên sau mỗi chu kì lệnh, thì TMR tăng lên khi có một xung đi vào chân đầu vào xung của Timer đó.

Dạng xung được xác định là sườn âm hay sườn dương phụ thuộc vào vi ệc cài đặt bit chọn dạng xung tương ứng trên thanh ghi ủac vi điều khiển.

Nguyên lý hoạt động định thời và b ộ đếm này c ũng đúng với các bộ vi điều khiển, vi xử lý khác.

Ta đi vào khảo sát ục thể 2 Timer0 và Timer1 c ủa vi điều khiển PIC.

3.3 Timer 0:

3.3.1 Nguyên lý hoạt động:

Timer 0 có độ dài 8 bit – Thanh ghi ch ứa giá trị đếm là TMR0 (s ố đếm tối đa là 255). Hoạt động

ở 2 chế độ là định thời và b ộ đếm.

Đẻ hoạt động ở chế độ định thời, ta cho bit T0CS (bit 5 của thanh ghi Option_Reg) ở mức 0. Khi đó, giá trị của thanh ghi TMR0 sẽ tự động tăng lên 1 đơn vị sau mỗi chu kì lệnh của vi điều khiển.

Đẻ hoạt động ở chế độ bộ đếm, ta cho bit T0CS (bit 5 của thanh ghi Option_Reg) ở mức 1. Khi đó, giá trị của thanh ghi TMR0 sẽ tự động tăng lên 1 đơn vị sau khi có m ột xung đi vào chân RA4 của vi điều khiển. Việc chọn xung là d ạng sườn lên hay sườn xung phụ thuộc vào bit T0SE (bit 4 của thanh ghi Option_Reg là 0 hay 1.

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Khi giá trị TMR0 đạt đến giá trị tối đa 255 (0xFF) nó sẽ bị xóa v ề 0 đồng thời bit cờ TMR0IF (bit 5 của thanh ghi INTCON ) được set lên 1, báo cho chương trình biết đã có s ự tràn TMR.

Lưu ý là ng ười lập trình phải xóa TMR0IF b ằng chương trình (để ghi nhận đúng các lần tràn k ế tiếp).

Ngoài ra, để tăng thời gian định thời hoặc số xung đếm đầu vào t ối đa của Timer 0, vi điều khiển còn cho phép việc lựa chọn tỉ lệ Prescale cho đầu vào c ủa Timer 0 bằng 3 bit PS2-PS0 (bit 2-0 của thanh ghi

Option_ Reg). Tỉ lệ như sau:

 

 

 

 

 

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

 

 

 

 

 

 

 

 

Ta có th ể hiểu đơn giản như sau:

Nếu tỉ lệ Prescale là 1:64 thì:

– Trong chế độ định thời, TMR0 sẽ tăng lên 1 đơn vị sau 64 chu kì lệnh

– Trong chế độ định thời, TMR0 sẽ tăng lên 1 đơn vị sau khi có 64 xung đi vào chân RA4

Như vậy, thời gian định thời tối đa cũng như số xung đếm được khi TMR0 tràn s ẽ tăng lên 64 lần.

Tương tự với các ỉt lệ khác.

Thực ra, Timer 0 chia sẻ bộ chia tần số Prescale với một chế độ khác ủac vi điều khiển- chế độ Watchdog Timer. Việc chọn chế độ này được thực hiện khi cho bit PSA (bit 3 của thanh ghi Option_Reg) giá trị 0. Chế độ này s ẽ được nghiên ứcu sau. Ở đây ta chỉ quan tâm đến bộ chia tần số dành cho Timer 0 khi PSA=1. Vì v ậy trong sơ đồ trên ta chỉ quan tâm đến cácđường đến ghi chú thêm ằngb đường thẳng mỏng.

3.3.2 Các thanh ghi liên quan:

Thanh ghi TMR0 (Địa chỉ 01h):

Chứa giá trị đếm hiện tại của Timer 0

Thanh ghi Option_Reg (Địa chỉ 81h):

 

 

 

 

T0CS: Bit chọn chế độ

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

= 0: TMR0 hoạt động chế độ định thời

= 1: TMR0 hoạt động chế độ bộ đếm

T0SE: Bit chọn dạng xung cho chế độ bộ đếm

= 0: Xung sườn lên

= 1: Xung sườn xuống

PSA: Bit chọn chế độ cho bộ chia tần số PresCale là WatchDog_Timer hay Timer 0.

= 0: Bộ chia tần số dành cho Timer 0

= 1: Bộ chia tần số dành cho Watch_Dog Timer

PS2-PS0: 3 bit chọn tỉ lệ chia tần số như đã gi ới thiệu ở phần trên

Thanh ghi INTCON (0Bh):

 

 

 

 

Bit TMR0IE: Bit này b ằng 1 cho phép ngắt Timer 0. Sự kiện ngắt xảy ra khi có s ự tràn TMR0 từ 255 xuống 0.

Bit TMR0IF: Bit cờ xác nhận giá trị TMR0 đã b ị tràn t ừ 255 về 0

3.3.3 Các ệlnh CCS dùng cho thanh ghi Timer 0:

Lệnh cài đặt chế độ: Setup_timer_0 (chế độ|tỉ lệ chia tần số)

Chế độ có th ể là m ột trong những từ sau:

– RTCC_INTERNAL: chế độ định thời

– RTCC_EXT_L_TO_H: chế độ bộ đếm với xung dạng sườn lên

– RTCC_EXT_H_TO_L: chế độ bộ đếm với xung dạng sườn xuống

Tỉ lệ chia tần số là m ột trong những từ sau:

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

– RTCC_DIV_2, RTCC_DIV_4, RTCC_DIV_8, RTCC_DIV_16, RTCC_DIV_32,
RTCC_DIV_64, RTCC_DIV_128, RTCC_DIV_256: tương ứng với tỉ lệ chia

Lệnh gán giá ịtrđầu cho thanh ghi TMR0: Set_timer_0 (giá trị)

Giá trị nằm trong khoảng từ 0-255

Lệnh đọc giá trị hiện tại của thanh ghi TMR0: biến = Get_timer_0()

 

 

 

3.4 Timer 1:

3.4.1 Nguyên lý hoạt động:

Timer 1 có độ dài 16 bit. Giá trị của bộ đếm timer 1 được lưu trong 2 thanh ghi 8 bit TMR1H và

TMR1L. Timer 1 cũng có 2 chế độ được cài đặt bởi bit TMR1CS (bit 1 của thanh ghi T1CON):

– TMR1CS = 0: Chế độ định thời

– TMR1CS = 1: Chế độ bộ đếm. Có 2 d ạng được phân bi ệt bởi bit T1SYNC (bit 2 của T1CON)

o T1SYNC = 0: Bộ đếm đồng bộ

o T1SYNC = 1: Bộ đếm không đồng bộ

Trong chế độ bộ đếm, đầu vào cho xung có th ể nối vào chân RC0 ho ặc RC1 tùy thuộc vào bit T1OSCEN (bit 3 của T1CON)

– T1OSCEN = 1: Đầu vào xung n ối với RC1

– T1OSCEN = 0: Đầu vào xung n ối với RC0

Chú ý là khác với Timer 0, đầu vào xung ở Timer 1 phải có d ạng sườn xuống.

Chế độ đồng bộ của chế độ bộ đếm nghĩa là n ếu như vi điều khiển đang ở chế độ ngủ thì giá trị của thanh ghi TMR1L và TMR2L không tăng lên.

Tỉ lệ bộ chia tần số Prescal của timer 1 được chọn bởi 2 bit T1CKPS1-T1CKPS0 (Bit 5-4 của T1CON). Tỉ lệ chia lớn nhất là 1:8.

3.4.2 Các thanh ghi liên quan:

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

Thanh ghi TMR1L (Địa chỉ 0Eh) và TMR1H (Địa chỉ 0Fh):

Thanh ghi chứa 8 bit thấp và 8 bit cao c ủa giá trị đếm 16 bit của timer 1.

Thanh ghi điều khiển Timer 1- T1CON (Địa chỉ 10h):

– – T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON T1CKPS1-T1CKPS0: Chọn tỉ lệ bộ chia tần số:

T1CKPS1-T1CKPS0 Tỉ lệ chia tần số

00 1:1

01 1:2

10 1:4

11 1:8

T1OSCEN: bit chọn đầu vào xung là RC1 hay RC0

– =1: RC1

– =0: RC0

T1SYNC: bit chọn chế độ bộ đếm đồng bộ

– =1: Không đồng bộ

– =0: Không đồng bộ

TMR1CS: bit chọn chế độ định thời hay chế độ bộ đếm

– =1: Chế độ bộ đếm

– =0: Chế độ bộ định thời

TMR1ON: bit bật hay tắt Timer 1

– =1: Bật Timer 1

– =0: Tắt Timer 1

 

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

Thanh ghi PIR1:

Kqt Kqt kqt kqt Kqt kqt kqt TMR1IF

 

Bit TMR1IF là bit c ờ của timer 1. Bit được set lên giá ịtr1 khi xảy ra tràn 2 thanh ghi TMR1L và TMR2H từ 65535 về 0.

3.4.3 Các ệnhl CCS liên quan đến Timer 1:

Lệnh cài đặt chế độ: Setup_timer_1 (chế độ|tỉ lệ chia tần số)

Chế độ có th ể là m ột trong những từ sau:

– T1_DISABLE: không s ử dụng, tắt Timer 1

– T1_INTERNAL: chế độ định thời

– T1_EXTERNAL: chế độ bộ đếm không đồng bộ

– T1_EXTERNAL_SYNC: chế độ bộ đồng bộ

Tỉ lệ chia tần số là m ột trong những từ sau:

– T1_DIV_1, T1_DIV_2, T1_DIV_4, T1_DIV_8: tương ứng với tỉ lệ chia

Lệnh gán giá ịtrđầu cho cặp thanh ghi TMR1L và TMR1H: Set_timer_1 (giá trị)

Giá trị nằm trong khoảng từ 0-65535

Lệnh đọc giá trị hiện tại của cặp thanh ghi TMR1L và TMR1H: bi ến = Get_timer_1()

 

 

 

 

 

 

 

 

 

 

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

 

 

 

 

 

 

 

 

 

 

BÀI T ẬP:

3.1 Cho sơ đồ mạch như sau:

C1

30pF
X1
C2 CRYSTAL

30pF

U1

13 OSC1/CLKIN RB0/INT 33
14 34
OSC2/CLKOUT RB1
35
RB2
2 36
RA0/AN0 RB3/PGM
3 37
RA1/AN1 RB4
4 38
RA2/AN2/VREF-/CVREF RB5
5 39
RA3/AN3/VREF+ RB6/PGC
6 40
RA4/T0CKI/C1OUT RB7/PGD
7
RA5/AN4/SS/C2OUT 15
RC0/T1OSO/T1CKI
8 16
9 RE0/AN5/RD RC1/T1OSI/CCP2 17

10 RE1/AN6/WR RC2/CCP1 18

RE2/AN7/CS RC3/SCK/SCL 23
R9 RC4/SDI/SDA
1 MCLR/Vpp/THV RC5/SDO 24
4K RC6/TX/CK 25
26
RC7/RX/DT 19
RD0/PSP0
20
RD1/PSP1
21
RD2/PSP2 22
RD3/PSP3 27
RD4/PSP4
28
RD5/PSP5 29
RD6/PSP6 30
RD7/PSP7
PIC16F877A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

R1

268

R2

220

R3

222

R4

220

R5

220

R6

220

R7

220

R8 Q1
PNP

4K
R10 Q2
PNP
10k

 

a. 2 led 7 đoạn hiển thị số đếm, giá trị số đếm tự động tăng lên từ 0-99 sau khoảng thời gian định thời bởi Timer 0

b. Tăng thời gian định thời bằng cách ửs dụng Timer 1

c. Định thời 1 s dùng Timer 1

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

3.2 Cho sơ đồ mạch như sau:

C1

30pF
X1
C2 CRYSTAL

30pF

 

U1
13 OSC1/CLKIN RB0/INT 33
14 34
OSC2/CLKOUT RB1
35
RB2
2 RA0/AN0 RB3/PGM 36
3 37
RA1/AN1 RB4
RC 4 RA2/AN2/VREF-/CVREF RB5 38
5 RA3/AN3/VREF+ RB6/PGC 39
4K 6 RA4/T0CKI/C1OUT RB7/PGD 40
7
RA5/AN4/SS/C2OUT 15
8 RC0/T1OSO/T1CKI 16
RE0/AN5/RD RC1/T1OSI/CCP2
9 17

RE1/AN6/W R RC2/CCP1
10 18
RE2/AN7/CS RC3/SCK/SCL 23
R9 1 RC4/SDI/SDA 24
MCLR/Vpp/THV RC5/SDO
25
4K RC6/TX/CK 26
RC7/RX/DT 19
RD0/PSP0
20
RD1/PSP1
21
RD2/PSP2 22
RD3/PSP3 27
RD4/PSP4
28
RD5/PSP5 29
RD6/PSP6 30
RD7/PSP7
PIC16F877A

 

 

 

 

 

 

R1

268

R2

220

R3

222

R4

220

R5

220

R6

220

R7

220

R8 Q1
PNP
4K
R10 Q2
PNP
10k

Trong đó phím bấm nối với chân đầu vào xung c ủa Timer 0, RA4.

2 led bảy đoạn hiển thị số lần bấm phím

3.3 Cho sơ đồ mạch đo tốc độ động cơ như sau:

C1

30pF
X1
C2 CRYSTAL

30pF

U1
13 OSC1/CLKIN RB0/INT 33 +12v
14 34
OSC2/CLKOUT RB1
RB2 35 +12v
2 36
RA0/AN0 RB3/PGM
3 RA1/AN1 RB4 37
4 38
RA2/AN2/VREF-/CVREF RB5
5 39
RA3/AN3/VREF+ RB6/PGC
6 RA4/T0CKI/C1OUT RB7/PGD 40
7
RA5/AN4/SS/C2OUT 15 RV?
8 RC0/T1OSO/T1CKI 16
RE0/AN5/RD RC1/T1OSI/CCP2 1k
9 17
RE1/AN6/WR RC2/CCP1
10 18
RE2/AN7/CS RC3/SCK/SCL 23
1 RC4/SDI/SDA 24 +88.8
R9 MCLR/Vpp/THV RC5/SDO
RC6/TX/CK 25
26
4K RC7/RX/DT
RD0/PSP0 19
RD1/PSP1 20
21
RD2/PSP2
RD3/PSP3 22
RD4/PSP4 27
RD5/PSP5 28
RD6/PSP6 29
RD7/PSP7 30
PIC16F877A

 

 

 

 

 

 

LCD1

LM016L

VSSVDDVEE RSRWE D0D1D2D3D4D5D6D7
1 2 3 4 5 6 7 8 9 10 11 12 13 14

Động cơ được thay đổi tốc độ nhờ biến trở. Tốc độ động cơ được đo bởi encoder nằm ngay trong động cơ và tín hiệu được truyền tới chân RA4 , chân đầu vào xung c ủa Timer

0. Dùng Timer 0 chế độ bộ đếm, Timer 1 chế độ định thời để đọc tốc độ động cơ. Giá trị đọc được hiển thị lên LCD.

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

 

 

BÀI 4: NG ẮT

4.1 Ngắt là gì:

Ngắt hiểu theo nghĩa đơn giản là các sự kiện ngẫu nhiên làm gián đoạn quá trình của một sự kiện đang xảy ra. Để có th ể dễ hiểu khái niệm mới này ta cùng đưa ra một ví dụ trong thực tế như sau:

Ví dụ: Trong giờ học trên ớp,l ta đang học bài, có chuông điện thoại hoặc có b ạn gọi, ta phải dừng hoạt động học bài l ại để trả lời điện thoại hoặc ra gặp bạn. Sự kiện điện thoại reo chuông, hay bạn bè gọi được gọi là sự kiện ngắt, việc ta trả lời điện thoại hay ra gặp bạn là chương trình phục vụ ngắt. Việc đang học bài được xem là chương trình chính.

Ngắt được thực hiện khi và ch ỉ khi cài đặt cho phép nó. Như trong ví dụ trên, nếu sự kiện ngắt-điện thoại reo xảy ra, nếu giáo viên và ảbn thân ta cho phép mình trả lời điện thoại khi đang học bài thì khi có điện thoại ta mới nghe.

Vi điều khiển cũng có ngắt. Cách xử lý c ủa nó c ũng tương tự như ví dụ trên.

Cụ thể hoạt động của vi điều khiển khi có s ự kiện ngắt xảy ra và ng ắt đó đã được cho phép:

– Thực hiện nốt lệnh đang thực hiện

– Dừng chương trình đang thực hiện

– Lưu lại địa chỉ của lệnh kế tiếp trong chương trình đang thực hiện vào b ộ nhớ stack

– Nhảy tới địa chỉ 0x04 trong bộ nhớ chương trình

– Tại đây, vi điều khiển sẽ thực hiện chương trình con phục vụ ngắt do người lập trình đã lập trình từ trước.
– Sau khi thực hiện xong chương trình con phục vụ ngắt, vi điều khiển lấy lại địa chỉ của lệnh kế tiếp đã được lưu và thực hiện tiếp chương trình đang thực hiện dở lúc chưa có ngắt

Như vậy, cách phản ứng của vi điều khiển là khá tương đồng với cách xử lý c ủa con người trong thực tế. Như trong ví dụ trên, khi ta đang học bài, khi có ng ắt, tức có điện thoại-sự kiện ngắt, ta đọc nốt từ cuối cùng, nhớ dòng đang đọc ở trang thứ mấy, đánh dấu, trả lời điện thoại (chương trình con phục vụ ngắt), trả lời xong ta trở lại học bài ở dòng, trang đã được đánh dấu.

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

Tới đây ta tổng hợp lại các thuật ngữ dùng cho xử lý ng ắt trong vi điều khiển:

– Nguồn ngắt: nguồn ngắt là nguyên nhân gây ra ng ắt. Như trong ví dụ trên, nguồn ngắt có thể

Là điện thoại gọi hoặc bạn gọi

– Sự kiện ngắt: khi nguồn ngắt xảy ra

– Chương trình con phục vụ ngắt: là chương trình vi điều khiển xử lý khi có s ự kiện ngắt xảy ra do người lập trình lập trình ra

Ví dụ như ta trả lời hoặc chạy ra khỏi phòng g ặp bạn

– Vecto ngắt: tức địa chỉ 0x04 nơi vi điều khiển chạy tới sau khi lưu địa chỉ trả về

– Bit cho phép ngắt: tức việc cho phép vi điều khiển chạy chương trình con phục vụ ngắt khi có s ự kiện ngắt xảy ra. Trong vi điều khiển PIC, mỗi ngắt có bit cho phép của nó. Bit này t ận cùng bằng chữ E (enable), nằm trong các thanh ghi chuyênụdng. Muốn cho phép ngắt đó, ta phải đưa bit cho phép ngắt tương ứng lên giá ịtr1. Ngắt chỉ thực sự được cho phép ngắt khi ta cho bit cho phép ngắt toàn c ục GIE (Global Interrupt Enable) lên mức 1. Ta hình dùng như sau: khi có sự kiện ngắt- điện thoại gọi, nếu ta cho phép mình nghe điên thoại (tức bit cho phép ngắt của ngắt đó được set lên1) đồng thời thầy giáo cho phép (bit cho phép ngắt toàn c ục GIE được lên mức 1) thì ta mới nghe điện thoại (cho chương trình con phục vụ ngắt hoạt động).

Một số các ngắt khác, như các ngắt ngoại vi bao gồm ADC, PWM v.v Muốn cho phép nó còn ph ải đưa bit cho phép ngắt ngoại vi lên mức 1.

– Cờ ngắt: là bit ph ản ánh trạng thái ủca sự kiện ngắt. Mỗi ngắt có m ột bit cờ. Khi bit cờ này b ằng 1 nghĩa là s ự kiện ngắt tương ứng với cờ đó xảy ra. Ta hình dung như tiếng chuông c ủa điện thoại là c ờ ngắt, chuông rung báo có sự kiện ngắt- có điện thoại xảy ra. Các bit này tận cùng bằng từ F (Flag- cờ). Lưu ý là dù m ột ngắt có được cho phép hay

không thì c ờ ngắt vẫn được set lên 1 khi có sự kiện ngắt xảy ra. (Dù ta có được phép nghe điện thoại hay không thì chuông điện thoại vẫn cứ reo).

4.2 Các ngắt trong vi điều khiển PIC16F877A:

Vi điều khiển PIC16F877A có 15 ngu ồn ngắt. Được chia làm 2 l ớp ngắt:

– Lớp ngắt cơ bản: bao gồm các ngắt cơ bản như ngắt tràn timer 0, ng ắt ngoài, ng ắt thay đổi trạng thái ủca các chân PortB (RB4-RB7). Bit cho phép ngắt và bit c ờ tương ứng là

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

TMR0IE,TMR0IF; INTE, INTF; RBIE và RBIF. Để ý là để cho phép ngắt thực sự xảy ra phải có bit cho phép ngắt toàn c ục GIE.

– Lớp ngắt ngoại vi: bao gồm các ngắt ngoại vi như ngắt tràn timer 1 (TMR1IE, TMR1IF), ngắt tràn Timer 2(TMR2IE, TMR2IF), ng ắt hoàn thành vi ệc chuyển đổi ADC (ADCIE, ADCIF), ngắt hoàn thành vi ệc nhận kí tự trong truyền thông RS232 (RCIE, RCIF), ngắt hoàn thành vi ệc truyền kí tự trong truyền thông RS232 (TXIE, TXIF) v.v Để

ý là mu ốn thực sự cho phép các ngắt này ngoài bit cho phép ng ắt toàn c ục được set phải set cả bỉt cho phép ngắt ngoại vi PEIE.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.3 Viết chương trình xử lý ng ắt bằng CCS:

Ví dụ một chương trình có ng ắt như sau:

#INCLUDE <16F877A.H>

#FUSES NOLVP, NOWDT, HS

#USE DELAY(CLOCK=8000000)

BYTE CONST MAP[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

VOID HIENTHI(INT A);

INT SODEM;

//CHUONG TRINH CON PHUC VU NGAT DAT SAU #INT_EXT

#INT_EXT

VOID NGATNGOAI()

{

// XOA CO NGAT NGOAI CLEAR_INTERRUPT(INT_EXT);

// CAM NGAT TRONG CHUONG TRINH CON PHUC VU NGAT DISABLE_INTERRUPTS(GLOBAL);

SODEM++;

// CHO PHEP NGAT TOAN CUC

ENABLE_INTERRUPTS(GLOBAL);

}

VOID HIENTHI(INT A)

{

INT HC, HDV;

HC=A/10;

HDV=A%10;

OUTPUT_LOW(PIN_A4);

OUTPUT_D(MAP[HC]);

DELAY_MS(15);

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

OUTPUT_HIGH(PIN_A4);

OUTPUT_LOW(PIN_A5);

OUTPUT_D(MAP[HDV]);

DELAY_MS(15);

OUTPUT_HIGH(PIN_A5);

}

VOID MAIN()

{

// CAI DAT VAO RA CHO CONG B SET_TRIS_B(0xFF);

// CHO PHEP NGAT NGOAI ENABLE_INTERRUPTS(INT_EXT);
// CAI DAT SUON NGAT

EXT_INT_EDGE(H_TO_L);

// CHO PHEP NGAT TOAN CUC ENABLE_INTERRUPTS(GLOBAL);
// VONG LAP DOI NGAT WHILE(1)

{

HIENTHI(SODEM);

}

}

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

Như vậy, lúc viết chương trình có dùng ng ắt bằng CCS, ta có nh ững lưu ý sau:

– Trong chương trình chính (main), chúng ta cài đặt ngắt: cho phép ngắt cụ thể, cho phép ngắt toàn c ục. Đợi ngắt

– Chương trình con xử lý ng ắt là chương trình con nằm ngay sau chỉ thị biên dịch

#INT_XXX, trong đó XXX là tên của ngắt cụ thể. Ví dụ: #INT_EXT: ngắt ngoài

– Trong chương trình con xử lý ng ắt: xóa c ờ ngắt, cấm ngắt toàn c ục đề phòng khi đang xử lý ng ắt có ng ắt xảy ra. Sau khi xử lý d ữ liệu trong chương trình con xử lý ng ắt, ta cho phép ngắt toàn c ục lại.

Tên một số ngắt của PIC như sau:

– INT_EXT: ngắt ngoài

– INT_TIMER0: ngắt timer 0

– INT_TIMER1: ngắt timer 1

– INT_TIMER2: ngắt timer 2

– INT_RDA: ngắt nhận đủ kí tự trong truyền thông máy tính

– INT_RB: ngắt thay đổi trạng thái các chân RB7-RB4

Trong phần tiếp theo, ta sẽ khảo sát một số ngắt tiêu biểu như ngắt ngoài INT, ng ắt thay đổi trạng thái các chân cao PORTB, ngắt tràn Timer 0, ng ắt tràn Timer 1. Các ngắt ngoại vi khác ẽs được nhắc đến khi nghiên ứcu các modun ngoại vi này.

4.4 Ngắt ngoài:

4.4.1 Hoạt động:

– Nguồn ngắt: là xung đi vào chân RB0 c ủa vi điều khiển PIC

– Sự kiện ngắt: sự kiện ngắt xảy ra khi có xung đi vào chân RB0 của vi điều khiển. Xung là xung sườn dương hay sườn âm ph ụ thuộc bit cài đặt chọn dạng xung, bit INTEDG ( bit 6 của thanh ghi PTION_REG) là 1 hay không.

– Bit cho phép ngắt: Để cho phép ngắt ngoài, bit cho phép ngắt ngoài INTIE (bit 4 c ủa thanh ghi INTCON) phải được set lên 1. Ngoài ra, bit cho phép ngắt toàn c ục GIE (bit 7 của thanh ghi INTCON) cũng phải được set lên 1.

– Cờ ngắt: bit cờ ngắt ngoài là bit INTIF (bit 1 c ủa thanh ghi INTCON) được tự động set lên 1 khi có sự kiện ngắt ngoài x ảy ra. Cờ này ph ải được xóa b ằng chương trình (cụ thể là

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

trong chương trình con phục vụ ngắt) để vi điều khiển quản lý chính xác cácầln ngắt kế tiếp.

4.4.2 Quản lý ng ắt ngoài trong c hương trình CCS:

Trong chương trình chính, cài đặt ngắt:

– Cài đặt chân RB0 là chân vào: SET_TRIS_B(0x01)

– Cài đặt dạng xung đầu vào là sườn dương hay sườn âm: EXT_INT_EDGE(H_TO_L) hoặc EXT_INT_EDGE(L_TO_H)

– Cho phép ngắt ngoài: ENABLE_INTERRUPTS(INT_EXT)

– Cho phép ngắt toàn c ục: ENABLE_INTERRUPTS(GLOBAL)

Chương trình con phục vụ ngắt đặt sau chỉ định biên dịch #INT_EXT:

#INT_EXT

Định nghĩa chương trình con

Trong chương trình con phục vụ ngắt:

– Xóa c ờ ngắt: CLEAR_INTERRUPT(INT_EXT)

– Cấm ngắt toàn c ục, đề phòng lúc đang xử lý ng ắt, lại có ng ắt xảy ra:

DISABLE_INTERRUPTS(GLOBAL)

– Xử lý ng ắt đó: tùy thuộc vào ý đồ của người lập trình

– Cho phép ngắt toàn c ục: ENABLE_INTERRUPTS(GLOBAL)

4.5 Ngắt Thay Đổi Trạng Thái Các Chân RB7-RB4:

4.5.1 Hoạt động:

– Nguồn ngắt: là tr ạng thái ủca một trong các chân RB7-RB4 của vi điều khiển PIC

– Sự kiện ngắt: sự kiện ngắt xảy ra khi có s ự thay đổi trạng thái (1-0 hay 0-1) ủca một trong các chân RB7-RB4 của PortB

– Bit cho phép ngắt: Để cho phép ngắt này, bit cho phép ngắt RBIE (bit 3 của thanh ghi INTCON) phải được set lên 1. Ngoài ra, bit cho phép ngắt toàn c ục GIE (bit 7 của thanh ghi INTCON) cũng phải được set lên 1.

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

– Cờ ngắt: bit cờ ngắt ngoài là bit RBIF (bit 0 c ủa thanh ghi INTCON) được tự động set lên 1 khi có sự kiện ngắt ngoài x ảy ra. Cờ này ph ải được xóa b ằng chương trình (cụ thể là trong chương trình con phục vụ ngắt) để vi điều khiển quản lý chính xác cácầln ngắt kế tiếp.

Lưu ý quan tr ọng: Khi sử dụng ngắt này trong các ứng dụng xử lý các xung đầu vào RB4-RB7, ví dụ như phím bấm chẳng hạn, ta cần lưu ý điểm sau. Giả sử như ban đầu phím bấm chưa bấm, đầu vào RB ở mức 1, khi bấm phím RB xuống mức 1, như vậy có 1 s ự kiện ngắt xảy ra. Tuy nhiên, khi thả phím bấm ra, RB lên mức 1, tức cũng có một sự thay đổi trạng thái ủca chân RB7-RB4, nên ũngc có ngắt xảy ra. Vì vậy, việc ấn và nh ả phím bấm được tính 2 lần ngắt. Cần để ý điều này khi lập trình.

Vấn đề thứ 2 là c ần sử dụng một lệnh đọc cổng B để loại bỏ trạng thái mismatch lúc ảxy ra ngắt ở các chân này.

4.5.2 Quản lý ng ắt RB trong chương trình CCS:

Trong chương trình chính, cài đặt ngắt:

– Cài đặt chân RB4-RB7 là chân vào: SET_TRIS_B(0xF0)

– Cho phép ngắt RB: ENABLE_INTERRUPTS(INT_RB)

– Cho phép ngắt toàn c ục: ENABLE_INTERRUPTS(GLOBAL)

Chương trình con phục vụ ngắt đặt sau chỉ định biên dịch #INT_RB:

#INT_RB

Định nghĩa chương trình con

Trong chương trình con phục vụ ngắt:

– Xóa c ờ ngắt: CLEAR_INTERRUPT(INT_RB)

– Cấm ngắt toàn c ục, đề phòng lúc đang xử lý ng ắt, lại có ng ắt xảy ra:

DISABLE_INTERRUPTS(GLOBAL)

– Đoc cổng B để loại bỏ trạng thái mismatch

– Xử lý ng ắt đó: tùy thuộc vào ý đồ của người lập trình, chú ý đến số lần ngắt

– Cho phép ngắt toàn c ục: ENABLE_INTERRUPTS(GLOBAL)

 

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

4.6 Ngắt Timer 0:

4.6.1 Hoạt động:

– Nguồn ngắt: là tr ạng thái tràn của thanh ghi bộ đếm timer 0, TMR0 vi điều khiển PIC

– Sự kiện ngắt: sự kiện ngắt xảy ra khi có s ự tràn c ủa TMR0, tức là khi TMR0=255 r ồi bị xóa

– Bit cho phép ngắt: Để cho phép ngắt này, bit cho phép ngắt TMR0IE (bit 5 của thanh ghi INTCON) phải được set lên 1. Ngoài ra, bit cho phép ngắt toàn c ục GIE (bit 7 của thanh ghi INTCON) cũng phải được set lên 1.
– Cờ ngắt: bit cờ ngắt ngoài là bit TMR0IF (bit 2 c ủa thanh ghi INTCON) được tự động set lên 1 khi có sự kiện ngắt ngoài x ảy ra. Cờ này ph ải được xóa b ằng chương trình (cụ thể là trong chương trình con phục vụ ngắt) để vi điều khiển quản lý chính xác cácầln ngắt kế tiếp.

4.6.2 Quản lý ng ắt Timer 0 trong chương trình CCS:

Trong chương trình chính, cài đặt ngắt:

– Gán giá ịtrban đầu cho thanh ghi TMR0, tùy thuộc vào th ời gian mà người lập trình muốn (xem lại bài 3): SET_TIMER0(giá trị)

– Cho phép ngắt timer 0: ENABLE_INTERRUPTS(INT_TIMER0)

– Cho phép ngắt toàn c ục: ENABLE_INTERRUPTS(GLOBAL)

Chương trình con phục vụ ngắt đặt sau chỉ định biên dịch #INT_TIMER0:

#INT_TIMER0

Định nghĩa chương trình con

Trong chương trình con phục vụ ngắt:

– Xóa c ờ ngắt: CLEAR_INTERRUPT(INT_TIMER0)

– Cấm ngắt toàn c ục, đề phòng lúc đang xử lý ng ắt, lại có ng ắt xảy ra:

DISABLE_INTERRUPTS(GLOBAL)

– Xử lý ng ắt đó: tùy thuộc vào ý đồ của người lập trình, chú ý đến số lần ngắt

– Gán ạli giá trị ban đầu cho thanh ghi TMR0 (tùy thuộc vào ý đồ của người lập trình):

SET_TIMER0(giá trị)

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

– Cho phép ngắt toàn c ục: ENABLE_INTERRUPTS(GLOBAL)

 

 

 

 

 

 

 

 

 

 

 

BÀI T ẬP:

4.1 Cho sơ đồ mạch như hình vẽ:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

 

 

R11

10K

13 U1 33 R1

OSC1/CLKIN RB0/INT
14 34
OSC2/CLKOUT RB1 35
RB2 268
2 RA0/AN0 RB3/PGM 36
3 RA1/AN1 RB4 37
4 RA2/AN2/VREF-/CVREF RB5 38 R2
5 RA3/AN3/VREF+ RB6/PGC 39
6 RA4/T0CKI/C1OUT RB7/PGD 40 220
7
RA5/AN4/SS/C2OUT 15
8 RC0/T1OSO/T1CKI 16 R3
RE0/AN5/RD RC1/T1OSI/CCP2
9 17

10 RE1/AN6/W R RC2/CCP1 18

RE2/AN7/CS RC3/SCK/SCL 222
23
RC4/SDI/SDA
1 24
MCLR/Vpp/THV RC5/SDO R4
RC6/TX/CK 25
26
RC7/RX/DT
RD0/PSP0 19 220

20
RD1/PSP1
21 R5
RD2/PSP2
22
RD3/PSP3 27
RD4/PSP4 220
28
RD5/PSP5
RD6/PSP6 29 R6
RD7/PSP7 30
PIC16F877A 220

R7
220

R8 Q1

PNP
4K
R10 Q2

PNP
10k

Lập trình để mạch hoạt động như sau: 2 led 7 đoạn hiển thị số lần phím bấm

4.2 Cho sơ đồ mạch như sau:

 

 

 

 

 

 

 

 

 

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

 

 

C1 R11 R12
10K 10K

30pF X1
C2 CRYSTAL

30pF 13 U1 33

R1
14 OSC1/CLKIN RB0/INT 34
OSC2/CLKOUT RB1 35
2 RB2 36 268
RA0/AN0 RB3/PGM
3 37
RA1/AN1 RB4
4 38 R2
RA2/AN2/VREF-/CVREF RB5
5 39
6 RA3/AN3/VREF+ RB6/PGC 40
7 RA4/T0CKI/C1OUT RB7/PGD 220

RA5/AN4/SS/C2OUT 15
8 RC0/T1OSO/T1CKI 16 R3
RE0/AN5/ RD RC1/T1OSI/CCP2
9 17
10 RE1/AN6/WR RC2/CCP1 18
222
RE2/AN7/CS RC3/SCK/SCL
R9 RC4/SDI/SDA 23
1 RC5/SDO 24
MCLR/Vpp/THV R4
4K RC6/TX/CK 25
26
RC7/RX/DT
RD0/PSP0 19 220

20
RD1/PSP1
21 R5
RD2/PSP2 22
RD3/PSP3
RD4/PSP4 27 220
28
RD5/PSP5 29 R6
RD6/PSP6 30
RD7/PSP7
PIC16F877A 220

R7
220

 

2 led 7 đoạn hiển thị số lần phím bấm

4.3 Làm l ại các bài tập 3.1, 3.2, 3.3 nhưng sử dụng ngắt.

 

 

 

 

 

 

D1

LED-RED

D2

LED-RED

D3

LED-RED

D4

LED-RED

D5

LEDD6-RED

LED-RED

D7

LED-RED

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

 

BÀI 5: ĐIỀU CHẾ ĐỘ RỘNG XUNG-PWM

5.1 Nguyên lý hoạt động:

 

 

 

 

 

 

 

 

 

Bộ điều chế độ rộng xung tạo xung hình chữ nhật trên 2 chân RC1/CCP2 và RC2/CCP1-giá trị xung ở 2 chân là ngược nhau (bù nhau). Thực ra đây là một chức năng của modun CCP gồm 3 chức năng: Comparation, Capture, PWM.

Nguyên lý tạo xung như sau:

Khi Thanh ghi bộ đếm của bộ định thời Timer 2 đạt giá trị bằng giá trị của thanh ghi PR2, đầu ra xung RC2/CCP1 được set lên mức cao. TMR2 được reset về 0, sau đó đếm lên, khi TMR2 đạt giá trị bằng độ rộng xung, chân RC2/CCP1 được reset về 0. TMR2 tiếp tục đếm lên cho đến khi bằng giá trị PR2 thì chu trình sẽ lặp lại như lúc đầu. Xung ra ở chân RC1/CC21 là bù c ủa xung trên chân RC2/CCP1 .

5.2 Chu kỳ xung:

Để xác định chu kỳ xung ta đưa ra phân tích như sau:

Như đã tìm hi ểu về cách làm việc của các bộ timer, ta biết: sau mỗi chu kì lệnh giá trị của TMR2 sẽ tăng lên 1 đơn vị. Nếu dùng bộ chia tần số, giả sử là 1: N thì sau N chu kì l ệnh giá trị của TMR2 mới tăng lên 1 đơn vị.

Mỗi chu kì lệnh gồm 4 chu kì xung.

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

Chu kì xung chính là kho ảng thời gian từ lúc TMR2=0 cho đến khi TMR2=PR2. Suy ra, để tăng PR2 đơn vị, hay chính là chu kì xung s ẽ bằng:

 

 

Ở đây, Tosc là chu kì xung c ủa vi điều khiển hay chu kì của thạch anh N là t ỉ lệ chia tần số.

Ví dụ: với thạch anh Fosc=4Mhz, N=4, ta có chu kì xung tối đa đạt được là khi PR2=255 (PR2 là thanh ghi 8 bit)

T=(255+1)*4*(1/4Mhz)*4=1024µs

Tức tần số xung là: F=1/T=976Hz= 1KHz.

5.3 Độ rộng xung:

Độ rộng xung là giá trị 10 bit : trong đó 8 bit cao được ghi vào thanh ghi CCPR1L, và 2 bit thấp ghi vào 2 bit 5 và 4 c ủa thanh ghi CCP1CON :

Độ rộng xung PWM được xác định theo công thức:

PWM Duty Cycle= (CCPR1L:CCP1CON<5:4>)*Tosc*N

Trong đó, CCPR1L là thanh ghi 8 bit, CCP1CON<5:4> là 2 bit 5 và 4 của thanh ghi điều khiển CCP1CON. N là t ỉ lệ chia tần số.

5.4 Qui trình thực hiện xuất xung PWM:

Gồm các bước:

– Cài đăt modun CCP chức năng PWM: setup_CCP1(CCP_PWM)

– Cài đặt Timer 2: setup_timer_2 (mode, period, 1)

Trong đó, mode có thể là: T2_DISABLED, T2_DIV_BY_1, T2_DIV_BY_4, T2_DIV_BY_16, nghĩa là t ắt Timer2 hoặc định tỉ lệ bộ chia tần số

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

Period chính là giá trị của thanh ghi PR2 để xác định chu kì của xung

– Cài đặt độ rộng xung: set_pwm1_duty(value);

Trong đó, value là giá trị CCPR1L:CCP1CON<5:4>

Và độ rộng xung được tính theo công thức:

PWM Duty Cycle= value*Tosc*N

5.5 Ứng dụng PWM trong điều khiển tốc độ động cơ 1 chiều:

 

C1
30pF X1
UDK
C2 CRYSTAL
13 33
OSC1/CLKIN RB0/INT
14 34
OSC2/CLKOUT RB1
35
RB2
30pF 2 36
RA0/AN0 RB3/PGM
3 37
RA1/AN1 RB4
4 38
RA2/AN2/VREF-/CVREF RB5 LCD1
5 39
RA3/AN3/VREF+ RB 6/PGC
6 40 LM016L
RA4/T0CKI/C1OUT RB 7/PGD
7
RA5/AN4/SS/C2OUT
15
RC0/T1OSO/T1CKI
8 16
+5V RE0/AN5/RD RC1/T1OSI/CCP2
9 17
RE1/AN6/WR RC2/CCP1
10 18
RE2/AN7/CS RC3/SCK/SCL
23
RC4/SDI/SDA VSSVDDVEE
1 MCLR/Vpp/THV 24 RS RWE D0D1 D2D3 D4D5 D6 D7
RC5/SDO
RC6/TX/CK 25
26
RC7/RX/DT 12 3 4 56 78 910 1112 1314

R9
RD0/PSP0 19
20
RV1 4K RD1/PSP1
21
RD2/PSP2
22
RD3/PSP3
27
RD4/PSP4
28
RD5/PSP5
29
RD6/PSP6
30
RD7/PSP7

10K PIC16F877A
+12V
R6 U2
2K2
1 6
5
2
4 R5 Q5
NPN
OPTOCOUPLER-NPN 1K
Q2

NPN
R7
10k
+12V
R1 U1 D32
2K2
DIODE
1 6

R11 5 + 12V
10k R2
2 Q?
4 MPSA05
1K

OPTOCOUPLER-NPN
R3
10K
D1
DIODE

+88.8

BÀI T ẬP:

1. Lập trình để xuất xung PWM có tần số là 1KHZ, độ rộng xung là 50%

2. Ứng dụng PWM

 

 

 

 

 

 

 

 

 

 

 

 

RL?

OMI-SH-205D

 

CHƯƠNG TRÌNH BÀN PHÍM

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

 

#include <16F877A.h>

 

#fuses HS,NOWDT,NOPROTECT,NOLVP

#device *=16 adc=10

#use delay(clock=4000000)

#include <lcd_lib_4bit.c>

//#INCLUDE <KBD.C>

#define col0 PIN_B4

#define col1 PIN_B5

#define col2 PIN_B6

#define col3 PIN_B7

#define row0 PIN_B0

#define row1 PIN_B1

#define row2 PIN_B2

#define row3 PIN_B3

 

// Keypad layout:

char const KEYS[4][4] = {{‘0′,’1′,’2′,’3’},

{‘4′,’5′,’6′,’7’},

{‘8′,’9′,’A’,’B’},

{‘C’,’D’,’E’,’F’}

};

 

#define KBD_DEBOUNCE_FACTOR 100 // Set this number to apx n/333 where // n is the number of times you expect

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

// to call kbd_getc each second

 

 

 

#SEPARATE void kbd_init() {

}

 

 

short int ALL_ROWS (void)

{

if (input (row0) & input (row1) & input (row2) & input (row3))

return (0);

else

return (1);

}

 

 

 

char kbd_getc( ) {

static byte kbd_call_count;

static short int kbd_down;

static char last_key;

static byte col;

 

byte kchar;

byte row;

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

 

kchar=’\0′;

if(++kbd_call_count>KBD_DEBOUNCE_FACTOR) { switch (col) {

case 0 :

output_low(col0);

 

output_high(col1);

output_high(col2);

output_high(col3);

//DELAY_MS(1000);

break;

case 1 : output_high(col0);

output_low(col1);

output_high(col2);

output_high(col3);

break;

case 2 : output_high(col0);

output_high(col1);

output_low(col2);

output_high(col3);

break;

case 3 : output_high(col0);

output_high(col1);

output_high(col2);

output_low(col3);

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

break;

}

 

if(kbd_down)//NEU LAN TRUOC DO DA CO MOT PHIM DUOC BAM

{

if(!ALL_ROWS())//DOI CHO DEN KHI PHIM DUOC NHA RA

{

kbd_down=false;

kchar=last_key;

last_key=’\0′;

}

}

else //NEU KHONG CO PHIM NAO BAM TRUOC DO

{

if(ALL_ROWS())//NEU CO PHIM BAM

{

if(!input (row0))

row=0;

else if(!input (row1))

row=1;

else if(!input (row2))

row=2;

else if(!input (row3))

row=3;

last_key =KEYS[row][col];

kbd_down = true;

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

}

else // NEU KHONG CO PHIM NAO BAM, CHUYEN SANG QUET COT TIEP THEO

{

++col;

if(col>=4)

col=0;

}

}

kbd_call_count=0;//SAU 1 LAN QUET RESET KBD_CALL_COUNT VE 0, DE DOI LAN QUET TIEP

}

return(kchar);

}

void main()

{

INT C;

INT16 value;

SET_TRIS_D(0X00);

SET_TRIS_B(0X0F);

lcd_putcmd(0x80);

lcd_init();

delay_ms(200);

OUTPUT_B(0XF0);

 

 

PRINTF(LCD_PUTCHAR,”PHIM BAM: “);

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

 

while( TRUE )

 

{

C=KBD_GETC();

IF (C!=’\0′)

{

LCD_PUTCMD(0X01);

PRINTF(LCD_PUTCHAR,”%C”,C);

}

 

}

 

}

Chương trình nhập số:

 

void main()

{

INT C;

INT16 DAT_THU;

INT16 value;

SET_TRIS_D(0X00);

SET_TRIS_B(0X0F);

lcd_putcmd(0x80);

lcd_init();

 

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

delay_ms(200);

 

PRINTF(LCD_PUTCHAR,”PHIM BAM: “);

WHILE( TRUE )

 

{

DAT_THU=0;

DO

{

C=KBD_GETC();

IF (C!=’\0’& c!=’A’&C!=’B’& c!=’C’&C!=’D’&=’D’&C!=’E’&C!=’F’)c!

{

DAT_THU =DAT_THU*10;

DAT_THU=DAT_THU+C-0X30;

LCD_PUTCHAR(C);

}

}WHILE(C!=’E’);

LCD_PUTCMD(0X01);

PRINTF(LCD_PUTCHAR,”GIA TRI PHIM BAM:”);

LCD_PUTCMD(0XC2);

PRINTF(LCD_PUTCHAR,”%6LU”,DAT_THU);

 

 

 

 

 

 

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

HƯỚNG DẪN LẬP TRÌNH VI ĐIỀU KHIỂN PIC VỚI PHẦN MỀM CCS

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CÔNG TY TNHH CÔNG NGH Ệ CAO ATECKO www.atecko.com.vn

GIỚI THIỆU VỀ PIC 16F877A

PIC16F877A là gì

PIC16F877A là một Vi điều khiển PIC 40 chân và được sử dụng hầu hết trong các dự án và ứng dụng nhúng. Nó có năm cổng bắt đầu từ cổng A đến cổng E. Nó có ba bộ định thời trong đó có 2 bộ định thời 8 bit và 1 bộ định thời là 16 Bit. Nó hỗ trợ nhiều giao thức giao tiếp như giao thức nối tiếp, giao thức song song, giao thức I2C. PIC16F877A hỗ trợ cả ngắt chân phần cứng và ngắt bộ định thời.

 

Thông số kỹ thuật PIC16F877A

 

CPU PIC 8 bit
Cấu trúc 8
Kích thước bộ nhớ chương trình (Kbyte) 14
RAM (bytes) 368
EEPROM/HEF 256/HEF
Số chân 40
Tốc độ CPU tối đa (MHz) 20
Chọn chân ngoại vi (PPS) Không
Bộ tạo dao động bên trong Không
Số bộ so sánh 2
Số opamp Không
Số kênh ADC 14
Độ phân giải ADC tối đa (bit) 10
ADC với tính toán Không
Số bộ chuyển đổi DAC 0
Độ phân giải DAC tối đa 0
Tham chiếu điện áp nội bộ
Zero Cross Detect Không
Số bộ định thời 8 bit 2
Số bộ định thời 16 bit 1
Bộ định thời đo tín hiệu 0
Bộ định thời giới hạn phần cứng 0
Số đầu ra PWM 0
Độ phân giải PWM tối đa 10
Bộ định thời góc Không
Bộ tăng tốc toán học Không
Số module UART 1
Số module SPI 1
Số module I2C 1
Số module USB 0
Bộ định thời giám sát có cửa sổ (WWDT) Không
CRC/Scan Không
Bộ tạo dao động được điều khiển bằng số 0
Cap. Touch Channels 11
LCD phân đoạn 0
Nhiệt độ hoạt động tối thiểu (* C) -40
Nhiệt độ hoạt động tối đa (* C) 125
Điện áp hoạt động tối thiểu (V) 2
Điện áp hoạt động tối đa (V) 5.5
Điện áp cao có thể Không

 

Sơ đồ chân PIC16F877A

Hình dưới đây là Sơ đồ chân PIC16F877A. Ngoài ra còn có bảng thông tin chi tiết đi kèm số thứ tự của chân, tên tương ứng và mô tả sơ lược về chân.

 

STT chân Tên chân Mô tả
1 MCLR / Vpp MCLR được sử dụng trong quá trình lập trình, chủ yếu được kết nối với programer như PicKit
2 RA0 / AN0 Chân analog 0 hoặc chân 0 của PORTA
3 RA1 / AN1 Chân analog 1 hoặc chân 1 của PORTA
4 RA2 / AN2 / Vref- Chân analog 2 hoặc chân 2 của PORTA
5 RA3 / AN3 / Vref + Chân analog 3 hoặc chân 3 của PORTA
6 RA4 / T0CKI / C1out Chân 4 của PORTA
7 RA5/AN4/SS/C2out Chân analog 4 hoặc chân 5 của PORTA
8 RE0 / RD / AN5 Chân analog 5 hoặc chân 0 của PORTE
9 RE1 / WR / AN6 Chân analog 6 hoặc chân 1 của PORTE
10 RE2/CS/AN7 Chân 7 của PORTE
11 Vdd Chân nối đất của MCU
12 Vss Chân dương của MCU (+5V)
13 OSC1 / CLKI Bộ dao động bên ngoài / chân đầu vào clock
14 OSC2 / CLKO

Quảng cáo đặt hàng nhập
Bộ dao động bên ngoài / chân đầu vào clock
15 RC0 / T1OSO / T1CKI Chân 0 của PORT C
16 RC1 / T1OSI / CCP2 Chân 1 của POCTC hoặc chân Timer / PWM
17 RC2 / CCP1 Chân 2 của POCTC hoặc chân Timer / PWM
18 RC3 / SCK / SCL Chân 3 của POCTC
19 RD0 / PSP0 Chân 0 của POCTD
20 RD1 / PSPI Chân 1 của POCTD
21 RD2 / PSP2 Chân 2 của POCTD
22 RD3 / PSP3 Chân 3 của POCTD
23 RC4 / SDI / SDA Chân 4 của POCTC hoặc chân Serial Data vào
24 RC5 / SDO Chân 5 của POCTC hoặc chân Serial Data ra
25 RC6 / Tx / CK Chân thứ 6 của POCTC hoặc chân phát của Vi điều khiển
26 RC7 / Rx / DT Chân thứ 7 của POCTC hoặc chân thu của Vi điều khiển
27 RD4 / PSP4 Chân 4 của POCTD
28 RD5/PSP5 Chân 5 của POCTD
29 RD6/PSP6 Chân 6 của POCTD
30 RD7/PSP7 Chân 7 của POCTD
31 Vss Chân dương của MCU (+5V)
32 Vdd Chân nối đất của MCU
33 RB0/INT Chân thứ 0 của POCTB hoặc chân ngắt ngoài
34 RB1 Chân thứ 1 của POCTB
35 RB2 Chân thứ 2 của POCTB
36 RB3/PGM Chân thứ 3 của POCTB hoặc kết nối với programmer
37 RB4 Chân thứ 4 của POCTB
38 RB5 Chân thứ 5 của POCTB
39 RB6/PGC Chân thứ 6 của POCTB hoặc kết nối với programmer
40 RB7/PGD Chân thứ 7 của POCTB hoặc kết nối với programmer

Bạn có thể thấy trong hình trên các chân của Vi điều khiển PIC có nhiều hơn một tên, vì mỗi chân của PIC có thể thực hiện nhiều nhiệm vụ.

Ví dụ, Chân số 25, nó có thể được sử dụng như một chân số 6 cổng C kỹ thuật số (RC6) và cũng có thể được sử dụng như một Bộ phát (TX) cho giao tiếp nối tiếp.

Vì vậy nó sẽ tùy thuộc vào cách bạn muốn sử dụng từng chân. Trong bài hướng dẫn này  chúng ta sẽ kiểm tra hầu hết các chức năng của chân.

 

Mạch cơ bản PIC16F877A

Mỗi vi điều khiển PIC có một mạch cơ bản và nếu bạn không thiết kế mạch cơ bản thì nó sẽ không hoạt động.

Nó giống như cấp nguồn cho vi điều khiển PIC và nó hoạt động ở mức + 5V.

Nếu bạn muốn bật quạt thì bạn sẽ làm gì? Bạn chỉ cần cung cấp điện cho nó và đó là những gì chúng ta sẽ làm với PIC nhưng trong trường hợp của PIC, chúng ta cũng cần cung cấp tần số mà nó sẽ hoạt động.

Chúng ta cần thiết kế mạch cơ bản và mạch cơ bản này chứa công suất cũng như tần số mà nó sẽ hoạt động.

Để cung cấp tần số cho vi điều khiển PIC, chúng ta sử dụng bộ dao động tinh thể và đối với PIC 16F877a, bạn có thể sử dụng bộ dao động tinh thể dải tần từ 4MHz đến 40MHz.

Đây là Mạch cơ bản PIC16F877a mà bạn cần thiết kế:

Giải thích mạch trên

Chân số 1: Chân này được gọi là MCLR (Master Clear) và chúng ta cần cấp 5V cho chân này thông qua điện trở 10k-ohm.

Chân số 11 và chân số 32: Các chân này được ký hiệu là Vdd nên chúng ta cũng cần cấp cho nó + 5V và bạn có thể thấy các đường này có màu đỏ trong hình trên.

Chân số 12 và chân số 31: Các chân này là Vss, vì vậy chúng ta cấp GND (nối đất) tại chân này và các đường của nó có màu đen.

Chân số 13 và 14: Các chân này được đặt tên là OSC1 (Bộ tạo dao động 1) và OSC2 (Bộ tạo dao động 2), bây giờ chúng ta phải gắn bộ tạo dao động tinh thể (16MHz) tại các chân này trên đường màu cam. Sau bộ dao động tinh thể, chúng ta có tụ điện 33pF và sau đó được nối đất.

 

Chúng ta đã thiết kế mạch cơ bản và bây giờ vi điều khiển PIC đã sẵn sàng hoạt động và bạn cũng có thể thấy một LED được gắn ở chân số 21, đó là bởi vì chúng ta cũng cần kiểm tra xem nó có đang chạy hay không để chúng ta có thể bật hoặc tắt đèn LED này.

 

Các cổng PIC16F877A

Trong mạch cơ bản, chúng ta đã sử dụng tất cả các chân nguồn của vi điều khiển PIC, trong khi tất cả các chân cổng vẫn còn chưa được sử dụng.

Vì vậy, bây giờ khi chúng ta đã cấp nguồn cho bộ vi điều khiển PIC, điều tiếp theo chúng ta cần làm là thiết kế một số code và sử dụng các cổng vi điều khiển PIC. Đầu tiên chúng ta hãy xem xét các Cổng PIC16F877a.



PIC16F877a có tổng cộng 5 Cổng là:

Cổng A: có tổng cộng 6 chân bắt đầu từ chân số 2 đến chân số 7. Các chân cổng A được ký hiệu từ RA0 đến RA5 trong đó RA0 là ký hiệu của chân đầu tiên của Cổng A.

Cổng B: có tổng cộng 8 chân bắt đầu từ chân số 33 đến chân số 40. Các chân cổng B được ký hiệu từ RB0 đến RB7 trong đó RB0 là ký hiệu của chân đầu tiên của cổng B.

Cổng C: có tổng cộng 8 Chân. Các chân của nó không được thẳng hàng với nhau. Bốn chân đầu tiên của cổng C nằm ở chân số 15 đến chân số 18, còn bốn chân cuối cùng nằm ở chân số 23 đến chân số 26.

Cổng D: có tổng cộng 8 chân. Các chân của nó cũng không thẳng hàng với nhau. Bốn chân đầu tiên của cổng D nằm ở chân số 19 đến chân số 22, trong khi bốn chân cuối cùng nằm ở chân số 27 đến chân số 30.

Cổng E: có tổng cộng 3 chân bắt đầu từ chân số 8 đến chân số 10. Các chân cổng E được ký hiệu từ RE0 đến RE2 trong đó RE0 là ký hiệu của chân đầu tiên của cổng E.

 

Trước hết những gì bạn cần quyết định là bạn muốn các chân cổng là đầu vào hay đầu ra.

Giả sử bạn có một số cảm biến và bạn muốn nhận giá trị của nó thì bạn phải kết nối cảm biến này với vi điều khiển PIC. Trong trường hợp này, chân PIC sẽ hoạt động như chân đầu vào vì nó sẽ nhập giá trị từ cảm biến. Cảm biến gửi giá trị và PIC nhận nó.

Trong trường hợp bạn có động cơ DC và bạn muốn di chuyển động cơ DC đó bằng vi điều khiển PIC. Bạn phải gửi lệnh từ bộ vi điều khiển PIC đến động cơ DC để chân PIC hoạt động như chân đầu ra.

 

Mỗi cổng của vi điều khiển PIC được liên kết với hai thanh ghi (register), ví dụ các thanh ghi cổng D là PortD và TRISD.

Cả hai thanh ghi này đều có 8 bit vì cổng D có 8 chân.

TRISD quyết định cổng là đầu ra hay đầu vào và chúng ta cũng có thể gán giá trị cho từng chân riêng biệt. Nếu chúng ta đã gán 0 thì nó sẽ là đầu ra và nếu chúng ta đã gán 1 thì nó sẽ là đầu vào.

Ví dụ: nếu chúng ta gán TRISD = 0x01, thì 7 chân đầu tiên của cổng D sẽ là đầu ra nhưng chân cuối cùng sẽ là đầu vào vì 0x01 là 00000001 trong hệ nhị phân.

Thanh ghi PortD chứa giá trị thực và giá trị này là sự kết hợp của tất cả 8 chân.

 

Trình biên dịch PIC16F877a

Trình biên dịch chính thức của vi điều khiển PIC là trình biên dịch MPLAB C18, có trên trang web chính thức của Microchip.

Chúng ta viết code trong trình biên dịch PIC và sau đó biên dịch nó. Sau khi biên dịch, một file hex được tạo và chúng ta sẽ tải lên trong bộ vi điều khiển PIC.

 

Cổng nối tiếp PIC16F877a

PIC16F877a có một cổng nối tiếp trong đó được sử dụng để giao tiếp dữ liệu.

Chân số 25 cũng hoạt động như TX vì vậy nếu bạn muốn thực hiện giao tiếp nối tiếp thì nó sẽ được sử dụng để gửi dữ liệu nối tiếp.

Chân 26 cũng hoạt động như RX, vì vậy nếu bạn muốn thực hiện giao tiếp nối tiếp thì nó sẽ được sử dụng để nhận dữ liệu nối tiếp.

 

Giao tiếp I2C PIC16F877a

PIC16F877a cũng có một cổng I2C có thể dễ dàng thực hiện giao tiếp I2C.

Chân số 18 hoạt động như SCL, viết tắt của Serial Clock Line.

Chân số 23  hoạt động như SDA, là chữ viết tắt của Serial Data Line.

Bây giờ bạn có thể thấy chúng ta có cổng nối tiếp và cổng I2C trong cổng C, vì vậy chúng ta có thể sử dụng cổng C như một cổng đơn giản nhưng cũng có thể thực hiện hai giao tiếp này với các chân của nó, vì vậy nó hoàn toàn phụ thuộc vào lập trình viên.

 

Ngắt PIC16F877a

PIC16F877a có tổng cộng 8 nguồn ngắt. Nguồn ngắt là một số sự kiện tạo ra ngắt, nguồn này có thể là bộ đếm thời gian như các ngắt được tạo sau mỗi 1 giây hoặc cũng có thể là sự kiện thay đổi trạng thái chân, chẳng hạn như nếu trạng thái chân bị thay đổi sau đó ngắt sẽ được tạo ra.

Vì vậy, ngắt PIC16F877a có thể được tạo ra bằng 8 cách sau:

  • Ngắt ngoài.
  • Ngắt bộ định thời (Timer0 / Timer1).
  • Thay đổi trạng thái cổng B.
  • Cổng Slave Song song Đọc / Ghi.
  • Bộ chuyển đổi A / D.
  • Nhận / Truyền nối tiếp.
  • PWM (CCP1 / CCP2).
  • Thao tác ghi EEPROM.

 

Ngắt PIC16F877a được liên kết với 5 thanh ghi dưới đây:

  • INTCON
  • PIE1
  • PIR1
  • PIE2
  • PIR2



Vi điều khiển PIC

PIC là một họ vi điều khiển RISC được sản xuất bởi công ty Microchip Technology. Dòng PIC đầu tiên là PIC1650 được phát triển bởi Microelectronics Division thuộc General Instrument.

PIC bắt nguồn là chữ viết tắt của “Programmable Intelligent Computer” (Máy tính thông minh có thể lập trình được) là một sản phẩm của hãng General Instrument đặt cho dòng sản phẩm đầu tiên của họ là PIC1650. Lúc này, PIC1650 được dùng để giao tiếp với các thiết bị ngoại vi cho máy chủ 16bit CP1600, vì vậy, người ta cũng gọi PIC với cái tên “Peripheral Interface Controller” (Bộ điều khiển giao tiếp ngoại vi). CP1600 là một CPU tốt, nhưng lại kém về các hoạt động xuất nhập, và vì vậy PIC 8-bit được phát triển vào khoảng năm 1975 để hỗ trợ hoạt động xuất nhập cho CP1600. PIC sử dụng microcode đơn giản đặt trong ROM, và mặc dù, cụm từ RISC chưa được sử dụng thời bây giờ, nhưng PIC thực sự là một vi điều khiển với kiến trúc RISC, chạy một lệnh một chu kỳ máy (4 chu kỳ của bộ dao động).

Năm 1985 General Instrument bán bộ phận vi điện tử của họ, và chủ sở hữu mới hủy bỏ hầu hết các dự án – lúc đó đã quá lỗi thời. Tuy nhiên PIC được bổ sung EEPROM để tạo thành 1 bộ điều khiển vào ra khả trình. Ngày nay rất nhiều dòng PIC được xuất xưởng với hàng loạt các module ngoại vi tích hợp sẵn (như USART, PWM, ADC…), với bộ nhớ chương trình từ 512 Word đến 32K Word.

Hiện nay, tại Việt Nam, đã có một cộng đồng nghiên cứu và phát triển PIC, dsPIC và PIC32.

Lập trình cho PIC[sửa | sửa mã nguồn]

PIC sử dụng tập lệnh RISC, với dòng PIC low-end (độ dài mã lệnh 12 bit, ví dụ: PIC12Cxxx) và mid-range (độ dài mã lệnh 14 bit, ví dụ: PIC16Fxxxx), tập lệnh bao gồm khoảng 35 lệnh, và 70 lệnh đối với các dòng PIC high-end (độ dài mã lệnh 16 bit, ví dụ: PIC18Fxxxx). Tập lệnh bao gồm các lệnh tính toán trên các thanh ghi, với các hằng số, hoặc các vị trí bộ nhớ, cũng như có các lệnh điều kiện, lệnh nhảy/gọi hàm, và các lệnh để quay trở về, nó cũng có các tính năng phần cứng khác như ngắt hoặc sleep (chế độ hoạt động tiết kiện điện). Microchip cung cấp môi trường lập trình MPLAB, nó bao gồm phần mềm mô phỏng và trình dịch ASM.

Một số công ty khác xây dựng các trình dịch C, Basic, Pascal cho PIC. Microchip cũng bán trình dịch “C18” (cho dòng PIC high-end) và “C30” (cho dòng dsPIC30Fxxx). Họ cũng cung cấp các bản “student edition/demo” dành cho sinh viên hoặc người dùng thử, những version này không có chức năng tối ưu hoá code và có thời hạn sử dụng giới hạn. Những trình dịch mã nguồn mở cho C, Pascal, JAL, và Forth, cũng được cung cấp bởi PicForth.



GPUTILS là một kho mã nguồn mở các công cụ, được cung cấp theo công ước về bản quyền của GNU General Public License. GPUTILS bao gồm các trình dịch, trình liên kết, chạy trên nền Linux, Mac OS X, OS/2 và Microsoft Windows. GPSIM cũng là một trình mô phỏng dành cho vi điều khiển PIC thiết kế ứng với từng module phần cứng, cho phép giả lập các thiết bị đặc biệt được kết nối với PIC, ví dụ như LCD, LED…

Một vài đặc tính[sửa | sửa mã nguồn]

Hiện nay có khá nhiều dòng PIC và có rất nhiều khác biệt về phần cứng, nhưng chúng ta có thể điểm qua một vài nét như sau:

  • 8/16 bit CPU, xây dựng theo kiến trúc Harvard có sửa đổi
  • FLASH và ROM có thể tuỳ chọn từ 256 byte đến 256 Kbyte
  • Các cổng Xuất/Nhập (I/O ports) (mức logic thường từ 0V đến 5.5V, ứng với logic 0 và logic 1)
  • 8/16 Bit Timer
  • Công nghệ Nanowatt
  • Các chuẩn Giao Tiếp Ngoại Vi Nối tiếp Đồng bộ/Không đồng bộ USARTAUSARTEUSARTs
  • Bộ chuyển đổi ADC Analog-to-digital converters, 10/12 bit
  • Bộ so sánh điện áp (Voltage Comparators)
  • Các module Capture/Compare/PWM
  • LCD
  • MSSP Peripheral dùng cho các giao tiếp I²CSPI, và I²S
  • Bộ nhớ nội EEPROM – có thể ghi/xoá lên tới 1 triệu lần
  • FLASH (dùng cho bộ nhớ chương trình) có thể ghi/xóa 10.000 lần (tiêu biểu) [1]
  • Module Điều khiển động cơ, đọc encoder
  • Hỗ trợ giao tiếp USB
  • Hỗ trợ điều khiển Ethernet
  • Hỗ trợ giao tiếp CAN
  • Hỗ trợ giao tiếp LIN
  • Hỗ trợ giao tiếp IrDA
  • Một số dòng có tích hợp bộ RF (PIC16F639, và rfPIC)
  • KEELOQ Mã hoá và giải mã
  • DSP những tính năng xử lý tín hiệu số (dsPIC)

Họ vi điều khiển PIC 8/16-bit[sửa | sửa mã nguồn]

Các link này được lấy từ trang chủ www.microchip.com, tuy nhiên hiện nay trang này đang rất thường bị chết, có thể do lượng truy cập quá nhiều, và các đường dẫn luôn thay đổi, vì vậy, có thể link sẽ bị chết.

Vi điều khiển 8-bit

Vi điều khiển 16-bit

Bộ điều khiển xử lý tín hiệu số 16-bit (dsPIC)

Bộ điều khiển xử lý tín hiệu số 32-bit (PIC32)

  • PIC32 (công bố ngày 05/11/2007)

Gỡ lỗi[sửa | sửa mã nguồn]

In-circuit debugging[sửa | sửa mã nguồn]

Toàn bộ các thiết bị PIC mới nhất ngày nay đều hỡ trợ một giao diện ICD (in-circuit debugging) trong CPU, để hỗ trợ việc gỡ lỗi trong chương trình với MPLAB IDE.

GIỚI THIỆU VỀ STM32F103C8T6

Giới thiệu sơ lược

STM32 là một trong những dòng chip phổ biến của ST với nhiều họ thông dụng như F0,F1,F2,F3,F4….. Stm32f103 thuộc họ F1 với lõi là ARM COTEX M3. STM32F103 là vi điều khiển 32 bit, tốc độ tối đa là 72Mhz. Giá thành cũng khá rẻ so với các loại vi điều khiển có chức năng tương tự. Mạch nạp cũng như công cụ lập trình khá đa dạng và dễ sử dụng.

Một số ứng dụng chính: dùng cho driver để điều khiển ứng dụng, điều khiển ứng dụng thông thường, thiết bị cầm tay và thuốc, máy tính và thiết bị ngoại vi chơi game, GPS cơ bản, các ứng dụng trong công nghiệp, thiết bị lập trình PLC, biến tần, máy in, máy quét, hệ thống cảnh báo, thiết bị liên lạc nội bộ…

Phần mềm lập trình: có khá nhiều trình biên dịch cho STM32 như IAR Embedded Workbench, Keil C… Ở đây mình sử dụng Keil C nên các bài viết sau mình chỉ đề cập đến Keil C.

Thư viện lập trình: có nhiều loại thư viện lập trình cho STM32 như: STM32snippets, STM32Cube LL, STM32Cube HAL, Standard Peripheral Libraries, Mbed core. Mỗi thư viện đều có ưu và khuyết điểm riêng, ở đây mình xin phép sử dụng Standard Peripheral Libraries vì nó ra đời khá lâu và khá thông dụng, hỗ trợ nhiều ngoại vi và cũng dễ hiểu rõ bản chất của lập trình.

Mạch nạp: có khá nhiều loại mạch nạp như : ULINK, J-LINK , CMSIS-DAP, STLINK… ở đây mình sử dụng Stlink vì giá thành khá rả và debug lỗi cũng tốt.

Board để lập trình: các bạn có thể mua sẵn 1 số kit ra chân đã có sẵn trên thị trường hoặc thiết kế 1 cái board dành riêng cho bản thân mình. Ở đây mình đã thiết kế 1 board đã tích hợp sẵn mạch nạp, mình cũng đã test và chạy khá ổn, debug bằng Keil C khá giống với phiên bản STlink V2 trên thị trường. Nói chung là sử dụng đồ tự làm khá thú vị. Đây là board của mình:

Sơ lược về Board trên:

  • 1 cổng Mini USB dùng để cấp nguồn, nạp cũng như debug.
  • 2 MCU bao gồm 1 MCU nạp và 1 MCU dùng để lập trình.
  • Có chân Output riêng cho các chân mạch nạp trên MCU1.
  • Có chân Output đầy đủ cho các chân MCU2.
  • Chân cấp nguồn ngoài riêng cho MCU2 nếu không sử dụng nguồn từ USB.
  • Thạch anh 32,768khz dùng cho RTC và Backup.
  • Chân nạp dùng cho chế độ nạp boot loader.
  • Nút Reset ngoài và 1 led hiển thị trên chân PB9, 1 led báo nguồn cho MCU2.

Cấu hình chi tiết của STM32F103C8T6:

  • ARM 32-bit Cortex M3 với clock max là 72Mhz.
  • Bộ nhớ:
    • 64 kbytes bộ nhớ Flash(bộ nhớ lập trình).
    • 20kbytes SRAM.
  • Clock, reset và quản lý nguồn.
    • Điện áp hoạt động 2.0V -> 3.6V.
    • Power on reset(POR), Power down reset(PDR) và programmable voltage detector (PVD).
    • Sử dụng thạch anh ngoài từ 4Mhz -> 20Mhz.
    • Thạch anh nội dùng dao động RC ở mode 8Mhz hoặc 40khz.
    • Sử dụng thạch anh ngoài 32.768khz được sử dụng cho RTC.
  • Trong trường hợp điện áp thấp:
    • Có các mode :ngủ, ngừng hoạt động hoặc hoạt động ở chế độ chờ.
    • Cấp nguồn ở chân Vbat bằng pin để hoạt động bộ RTC và sử dụng lưu trữ data khi mất nguồn cấp chính.
  • 2 bộ ADC 12 bit với 9 kênh cho mỗi bộ.
    • Khoảng giá trị chuyển đổi từ 0 – 3.6V.
    • Lấy mẫu nhiều kênh hoặc 1 kênh.
    • Có cảm biến nhiệt độ nội.
  • DMA: bộ chuyển đổi này giúp tăng tốc độ xử lý do không có sự can thiệp quá sâu của CPU.
    • 7 kênh DMA.
    • Hỗ trợ DMA cho ADC, I2C, SPI, UART.
  • 7 timer.
    • 3 timer 16 bit hỗ trợ các mode IC/OC/PWM.
    • 1 timer 16 bit hỗ trợ để điều khiển động cơ với các mode bảo vệ như ngắt input, dead-time..
    • 2 watdog timer dùng để bảo vệ và kiểm tra lỗi.
    • 1 sysTick timer 24 bit đếm xuống dùng cho các ứng dụng như hàm Delay….
  • Hỗ trợ 9 kênh giao tiếp bao gồm:
    • 2 bộ I2C(SMBus/PMBus).
    • 3 bộ USART(ISO 7816 interface, LIN, IrDA capability, modem control).
    • 2 SPIs (18 Mbit/s).
    • 1 bộ CAN interface (2.0B Active)
    • USB 2.0 full-speed interface
  • Kiểm tra lỗi CRC và 96-bit ID.

Kit Phát Triển STM32F103C8T6 BluePill

KIT STM32F103C8T6 Mini thuộc loại kit phát triển là Kit phát triển được thiết kế với đơn giản, kít ra đầy đủ chân của vi điều khiển, có cổng giao tiếp USB và cổng nạp SWD, sử dụng dòng vi điều khiển 32 Bit của dòng ST. Thích hợp với những người tiếp cận dòng STM 32 Bit.

Thông số kỹ thuật:

  • Vi điều khiển: STM32F103C8T6.
  • Điện áp cấp 5VDC qua cổng Micro USB sẽ được chuyển đổi thành 3.3VDC qua IC nguồn và cấp cho Vi điều khiển chính.
  • Tích hợp sẵn thạch anh 8Mhz.
  • Tích hợp sẵn thạnh anh 32Khz cho các ứng dụng RTC.
  • Ra chân đầy đủ tất cả các GPIO và giao tiếp: CAN, I2C, SPI, UART, USB,…
  • Tích hợp Led trạng thái nguồn, Led PC13, Nút Reset.
  • Kích thước: 53.34 x 15.24mm
  •  Sử dụng với các mạch nạp:
    • ST-Link Mini
    • J-link
    • USB TO COM
  • Kết nối chân khi nạp bằng ST-Link Mini
  • Nạp theo chuẩn SWD
    • TCK — SWCLK
    • TMS — SWDIO
    • GND — GND
    • 3.3V — 3.3V

Lưu ý : khi sử mạch nạp ST Link dùng nguồn 3.3v

Nguồn: http://laptrinharmst.blogspot.com/



RISC là gì? RISC V là gì? Chúng khác nhau như thế nào?

Khi nói về bộ vi xử lý, x86 và ARM là hai thuật ngữ xuất hiện nhiều nhất, đặc biệt nếu nói về các thiết bị gần đây. Nhưng có rất nhiều kiến ​​trúc khác ngoài kia. Ví dụ, bạn có thể đã nghe tên RISC và RISC-V thỉnh thoảng xuất hiện.

Mặc dù có tên giống nhau, nhưng chúng là những khái niệm khác nhau. Vậy RISC là gì và RISC-V là gì? Và sự khác biệt giữa chúng ra sao? Cùng Quantrimang.com tìm hiểu qua bài viết sau đây nhé!

RISC là gì?
Bảng mạch Raspberry Pi màu xanh lá cây và xám

RISC là một thuật ngữ rộng, viết tắt của “Reduced Instruction Set Computer”. Về cơ bản, một máy tính RISC được thiết kế để chạy các lệnh riêng lẻ, đơn giản. So với CISC (Complex Instruction Set Computer), bộ xử lý RISC sử dụng độ dài lệnh thống nhất cho hầu hết các lệnh. Ngược lại, các lệnh CISC phức tạp hơn và có thể thực hiện những hoạt động ở mức thấp và nhiều bước.

Để đơn giản hóa, bộ xử lý RISC có thể thực hiện các lệnh đơn giản hơn, thống nhất, trong khi CISC có thể thực hiện các lệnh với độ phức tạp và phạm vi khác nhau. Mỗi lệnh RISC chỉ có thể thực hiện một việc tại một thời điểm, trong khi các lệnh CISC có thể làm nhiều việc đồng thời. Bởi vì các lệnh được viết bằng code và có bản chất đơn giản hơn, bộ xử lý RISC thường cần nhiều hướng dẫn hơn để đạt được các nhiệm vụ tương tự như bộ xử lý CISC. Sự khác biệt này được bù đắp bằng cách tăng tốc độ mà CPU RISC có thể thực hiện thông qua việc sử dụng pipelining. Vì chúng đơn giản hơn, nên bộ xử lý RISC cũng có thể được thiết kế nhanh hơn bộ xử lý CISC và chúng có thể chạy code hiệu quả hơn.

Vì RISC không phải là một kiến ​​trúc mà là một thuật ngữ rộng, nhiều kiến ​​trúc CPU có thể được coi là RISC. Một trong những kiến ​​trúc bộ xử lý RISC nổi tiếng nhất là ARM, cung cấp năng lượng cho điện thoại thông minh và gần đây là một số laptop và máy tính mà chúng ta sử dụng. Những thứ khác bao gồm PowerPC, đã được sử dụng trong máy tính Apple và game console trong một thời gian dài. Trong khi đó, x86 có thể được coi là một thiết kế CISC vì nó phức tạp hơn.

Thuật ngữ RISC được đặt ra bởi dự án nghiên cứu Berkeley RISC do David Patterson đứng đầu tại Đại học California, Berkeley, từ năm 1980 đến năm 1984. Hóa ra, dự án đã thực sự thành công và thuật ngữ “RISC” sẽ tiếp tục bao gồm tất cả các máy tính với tập lệnh đơn giản hóa – ngay cả một dự án MIPS cạnh tranh do Đại học Stanford phát triển cùng thời gian cuối cùng cũng được gọi là kiến ​​trúc RISC. Đối với dự án Berkeley cụ thể đó, nó tiếp tục được sử dụng bởi vi kiến ​​trúc SPARC do Sun Microsystems phát triển – kiến ​​trúc cuối cùng sẽ đóng vai trò là nguồn cảm hứng cho kiến ​​trúc ARM trong điện thoại thông minh.

RISC-V là gì?
Bảng mạch

Bản thân RISC không phải là một kiến ​​trúc cụ thể, bạn có thể đã bị nhầm lẫn bởi một kiến ​​trúc lấy và sử dụng tên RISC. Đó là RISC-V – một kiến ​​trúc tập lệnh (ISA) được phát triển bởi Đại học California, Berkeley, nhằm thể hiện các nguyên tắc của bộ xử lý RISC đồng thời là một tiêu chuẩn nguồn mở. Trong khi ARM, kiến ​​trúc RISC được biết đến nhiều nhất, là độc quyền và cần được cấp phép bởi các nhà sản xuất chip, RISC-V có nghĩa là miễn phí bản quyền và nói chung, được sử dụng miễn phí cho tất cả mọi người.

RISC-V bắt đầu được phát triển vào năm 2010 và được phát hành cho cộng đồng mở vào năm 2015. Tất nhiên, khi RISC-V được phát hành, ARM đã có trong hàng triệu điện thoại thông minh trên toàn thế giới. Nhưng không giống như ARM, RISC-V được phát triển và phát hành với mục đích đưa một thiết kế CPU ra ngoài có mã nguồn mở, có thể mở rộng và được triển khai trên bất kỳ thiết bị nào mà không cần tiền bản quyền dưới bất kỳ hình thức nào. Theo các nhà thiết kế, có một kiến ​​trúc CPU sử dụng miễn phí có thể giảm đáng kể chi phí của phần mềm bằng cách cho phép tái sử dụng nhiều hơn và cho phép cạnh tranh nhiều hơn.

RISC-V không phải là một kiến ​​trúc đang được triển khai rộng rãi trên điện thoại thông minh hoặc bất cứ thứ gì tương tự – xét cho cùng, hầu hết chúng đều sử dụng ARM hoặc x86. Tuy nhiên, nó vẫn được sử dụng. Cụ thể hơn, RISC-V đã được sử dụng trong điện toán đám mây, máy chủ và các ứng dụng nhúng. Các thiết kế dựa trên RISC-V đã biết bao gồm chip bảo mật Titan M2 được sử dụng bởi điện thoại thông minh Pixel. Có nhiều trường hợp sử dụng được lên kế hoạch cho kiến ​​trúc RISC-V trong tương lai, bao gồm cả những trường hợp sử dụng từ các công ty tên tuổi như NVIDIA và Seagate. Vì được miễn phí bản quyền, nó làm giảm chi phí và khiến tất cả mọi người dùng cảm thấy hài lòng.

RISC khác biệt như thế nào so với RISC-V?
Bộ xử lý máy tính hiển thị hình ảnh

Thoạt nhìn, một số người có thể nghĩ rằng RISC-V là một biến thể của RISC và RISC là một kiến ​​trúc tập lệnh. Rốt cuộc, vì chúng có tên tương tự, nên chẳng ngạc nhiên khi có sự nhầm lẫn. Như đã trình bày chi tiết trước đây, sự khác biệt nằm ở chỗ RISC là một kiến ​​trúc tập lệnh thực tế, trong khi RISC-V là một thuật ngữ tổng quát bao gồm nhiều kiến ​​trúc CPU.

Như đã đề cập trước đây, RISC là một thuật ngữ rộng được sử dụng để nói về các máy tính với tập lệnh đơn giản hóa – thuật ngữ này bao gồm một loạt các kiến ​​trúc CPU với những thiết kế và khả năng đơn giản hơn, một số trong đó được sử dụng tích cực bởi hàng tỷ thiết bị và vài kiến trúc khác đã được không dùng nữa theo thời gian. Và thuật ngữ này tồn tại để phân biệt các loại máy tính này với CISC, hoặc máy tính tập lệnh phức tạp, một thuật ngữ được sử dụng để mô tả kiến ​​trúc x86 được sử dụng bởi hầu hết các PC trên toàn thế giới, cũng như một số ít thiết bị khác.

Và sau đó, RISC-V là kiến ​​trúc tập lệnh dựa trên thiết kế RISC, nhưng so với các kiến ​​trúc RISC khác như ARM, RISC-V là mã nguồn mở thay vì độc quyền, có nghĩa là bất kỳ nhà sản xuất chip nào cũng có thể tạo thiết kế dựa trên RISC-V mà không phải trả tiền tiền bản quyền hoặc phí cấp phép cho bất kỳ ai. Nó được thiết kế để sử dụng cho nhiều mục đích khác nhau và được nhiều nhà sản xuất silicon cũng như nhiều hệ điều hành mã nguồn mở hỗ trợ.

Một mô tả một loại CPU, trong khi cái kia là kiến ​​trúc CPU theo đúng nghĩa là một sự thay thế cho ARM và các CPU RISC khác.

RISC-V và RISC không giống nhau
Thuật ngữ RISC được sử dụng để nói về một số loại bộ xử lý nhất định và nó là thuật ngữ xác định một loạt các kiến ​​trúc. Tuy nhiên, một số người lầm tưởng rằng RISC là một kiến ​​trúc CPU. Những người này có lẽ đang nghĩ về RISC-V và nhầm nó với thuật ngữ RISC. Bây giờ, bạn đã biết sự khác biệt và hy vọng bạn sẽ không còn nhầm lẫn hai thuật ngữ này trong tương lai nữa.

Chip U, P và H của Intel khác nhau như thế nào?
CPU HEDT là gì?
CPU Intel Core và Intel Core X có gì khác nhau?
KVM switch là gì? Khi nào nên sử dụng?

Tổng quan về kiến trúc ARM và họ vi điều khiển STM32

KIT STM32F4Discovery – Bài 1. Tổng quan về kiến trúc ARM và họ vi điều khiển STM32

Sơ lược về kiến trúc ARM
Các thế hệ vi điều khiển ngày càng phát triển không ngừng nhằm đáp ứng các yêu cầu điều khiển, xử lý dữ liệu ngày càng lớn. Các vi điều khiển 8 bit rất phổ biến trong các ứng dụng điều khiển trong công nghiệp cũng như các sản phẩm dân dụng, các vi điều khiển 16 bit được nâng cấp hơn, có khả năng đáp ứng cao hơn so với dòng vi điều khiển 8 bit, tuy nhiên với các yêu cầu điều khiển, khối lượng dữ liệu xử lý như hình ảnh trong các thiết bị điều khiển sinh học, các thiết bị giải trí như máy chụp ảnh kỹ thuật số, máy tính bảng, máy định vị dẫn đường, … thì các vi điều khiển 8 bit và 16 bit sẽ không đáp ứng được do không đủ không gian bộ nhớ để chứa dữ liệu, không đủ nhanh để xử lý dữ liệu,… để đáp ứng được các yêu cầu đó thì các thế hệ vi điều khiển 32 bit đã ra đời, dòng vi điều khiển phổ biến nhất là ARM.
Vi xử lý ARM là thành phần chủ lực làm nên thành công lớn của các hệ thống nhúng 32-bit. Các vi xử lý ARM được ứng dụng rộng rãi trong các điện thoại di động, máy tính bảng và các thiết bị di động khác. ARM có kiến trúc RISC, cho phép tiêu hao năng lượng thấp nên là một lựa chọn lý tưởng cho các hệ thống nhúng.

Sơ lược về họ vi điều khiển STM32
Tham khảo cuốn “Kiến trúc cơ bản của STM32 ARM Cortex M3” (trên trang web http://arm.vn)

Giới thiệu KIT STM32F4 Discovery
STM32F4Discovery là board vi điều khiển dành cho người mới học lập trình nhúng hoặc dành cho những người muốn làm quen với lập trình trên vi điều khiển 32-bit dòng ARM… Board được tích hợp chip ARM Cortex-M4 cùng với bộ tính toán số thực (FPU), hoạt động với tần số rất cao 168 MHz, tỷ suất DMIPS/MHZ cao 1.25 giúp cho hệ thống có thể đạt được hiệu năng 210 DMIPS, board rất thích hợp cho các ứng dụng với yêu cầu tính toán xử lý nhanh, ví dụ như DSP, điều khiển robot… Với STM32F4Discovery, người dùng sẽ không cần phải lo lắng và không cần phải bỏ tiền ra để mua mạch nạp đắt tiền như các loại board MCU thông thường. Điểm nổi bật nhất của board là có nhiều tính năng trong khi giá thành rất rẻ.

Các đặc điểm của KIT STM32F4Discovery:

Sử dụng vi điều khiển lõi ARM Cortex-M4 32-bit STM32F407VGT6, 1 MB Flash, 192 KB RAM đóng gói LQFP100 (100 chân)
Tích hợp sẵn mạch nạp ST-LINK/V2
Nguồn cung cấp cho board: qua USB bus hoặc từ nguồn điện ngoài 5V
Cấp nguồn cho ứng dụng ngoài: 3V và 5V
Cảm biến chuyển động ST MEMS LIS302DL
Cảm biến âm thanh ST MEMS MP45DT02
Audio DAC CS43L22 với driver loa lớp D tích hợp
8 đèn LED:
+ LD1 (red/green) dùng cho giao tiếp USB
+ LD2 (red) báo hiệu nguồn 3.3 V đang bật
+ 4 đèn LED người dùng: LD3 (orange), LD4 (green), LD5 (red) và LD6 (blue)
+ 2 đèn LED cho USB OTG: LD7 (green) VBus và LD8 (red) over-current

2 nút bấm (user và reset)
USB OTG FS với micro-AB connector
KIT STM32F4Discovery
KIT STM32F4Discovery

Một số linh kiện trên KIT STM32F4 Discovery

Kích thước cơ khí của KIT STM32F4 Discovery

https://www.dientuhello.com/chuong-1-tong-quan-ve-kien-truc-arm-va-ho-vi-dieu-khien-stm32/

ADC với STM32

I. Lý thuyết

ADC (Analog-to-Digital Converter) là 1 mạch điện tử lấy điện áp tương tự làm đầu vào và chuyển đổi nó thành dữ liệu số (1 giá trị đại diện cho mức điện áp trong mã nhị phân). Ảnh dưới mô tả sơ đồ khối của 1 ADC.

Các khái niệm cần biết:     

       Độ phân giải (resolution): dùng để chỉ số bit cần thiết để chứa hết các mức giá trị số (digital) sau quá trình chuyển đổi ở ngõ ra. Bộ chuyển đổi ADC của STM32F103C8T6 có độ phân giải mặc định là 12 bit, tức là có thể chuyển đổi ra 212= 4096 giá trị ở ngõ ra số.

       Thời gian lấy mẫu (sampling time): là khái niệm được dùng để chỉ thời gian giữa 2 lần số hóa của bộ chuyển đổi, thời gian lấy mẫu càng lâu độ chính xác càng cao. Nhìn vào đồ thị dưới ta sẽ thấy ADC cần 1 khoảng thời gian ổn định tSTAB trước khi bắt đầu chuyển đổi. Sau khi chuyển đổi xong cờ EOC sẽ được set, và kết quả được lưu vào thanh ghi. Trước khi bắt đầu quá trình chuyển đổi tiếp theo thì cờ EOC clear.

       Để hiểu quá trình số hóa trong STM32 diễn ra như thế nào ta theo dõi ví dụ sau. Giả sử ta cần đo điện áp tối thiểu là 0V và tối đa là 3.3V, trong STM32 sẽ chia 0 → 3.3V thành 4096 khoảng giá trị (từ 0 → 4095, do 212 = 4096), giá trị đo được từ chân IO tương ứng với 0V sẽ là 0, tương ứng với 1.65V là 2047 và tương ứng 3.3V sẽ là 4095.

Các mode hoạt động của ADC:

       Single conversion mode: Trong chế độ này, ADC sẽ chỉ thực hiện 1 chuyển đổi cho tới khi người dùng cho phép chuyển đổi tiếp.

       Continuous Conversion Mode: ở chế độ này, ADC sẽ ngay lập tức thực hiển 1 chuyển đổi khác khi chuyển đổi trước vừa kết thúc.

        Scan Mode: Chế độ này được sử dụng để quét 1 nhóm các kênh. 1 chuyển đổi duy nhất được thực hiện cho mỗi kênh. Sau khi 1 kênh chuyển đổi xong, kênh tiếp theo sẽ tự động chuyển đổi.

        Discontinuous Mode: Chế độ này được sử dụng để chuyển đổi n lần (n <= 8). Giá trị của n được xác định tại bit DISCNUM[2:0] trong thanh ghi ADC_CR1.

II. Lập trình ADC trên STM32:

Ở ví dụ này ta sẽ Dùng bộ ADC để đọc giá trị của biến trở thông qua điện áp. Sử dụng 2 chế độ continuos mode và scan mode.

Đấu nối mạch theo sơ đồ: (với ADC 0 là PA0, ADC1 là PA1)

CONTINOUS MODE:

1.     Khởi tạo project với CubeMx

Bước 1: Bước đầu tiên ta sẽ làm tương tự như bài 1 (cấu hình thạch anh, debug, …)

Bước 2: Cấu hình ADC: (đối với continous mode).

Ở đây ta chỉ sử dụng ADC1 chennel 0 (PA0).

Enable continous mode (biến đổi liên tục).

Chọn Sampling Time = 239.5 (để tối ưu độ chính xác).

Kích hoạt ngắt trong NVIC settings. Chọn mức ưu tiên = 2.

Bước 3: Đặt tên project và GENERATE CODE.

2.     Giải thích 1 số hàm quan trọng

  void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)

Sau khi ADC chuyển đổi xong giá trị thì chương trình sẽ thực thi các lệnh trong câu lệnh này.

Tham số:

hadc: trỏ tới adc được kích hoạt ngắt (&hadc1 hoặc &hadc2).

  HAL_StatusTypeDef HAL_ADC_Start_IT(ADC_HandleTypeDef* hadc)

Kích hoạt ADC ở chế độ ngắt.

Tham số:

hadc: trỏ tới adc được start ở chế độ ngắt

  HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef* hadc)

Kích hoạt ADC ở chế độ normal

Tham số:

hadc: trỏ adc được start ở chế đọ normal.



  HAL_StatusTypeDef HAL_ADC_Stop(ADC_HandleTypeDef* hadc)

Stop ADC ở chế độ normal

Tham số:

hadc: trỏ tới adc được stop.

  uint32_t HAL_ADC_GetValue(ADC_HandleTypeDef* hadc)

Đọc giá trị ADC, giá trị trả về chính là kết quả sau khi biến đổi xong.

Tham số:

hadc: trỏ tới adc được lấy giá trị.

  HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef* hadc, uint32_t Timeout)

Chuyển đổi ADC.

Tham số:

hadc: trỏ tới adc chờ chuyển đổi.

Timeout: thời gian chuyển đổi tối đa.

3.     Lập trình trên Keil C

B1: khai báo giá trị ADC trả về:

B2: kích hoạt ADC ta sẽ thực hành trên cả 2 chế độ: Normal, ngắt.

Normal: Đọc giá trị ADC với chu kỳ 100ms.

int main(void)
{
 HAL_Init();
 SystemClock_Config();
 MX_GPIO_Init();
 MX_ADC1_Init();
 HAL_ADC_Start(&hadc1); 
 while (1)
 {
   ADC_value = HAL_ADC_GetValue(&hadc1);
   HAL_Delay(100);
 }
}

Ngắt: Sau khi chuyển đổi xong, chương trình sẽ thực hiện các câu lệnh trong hàm HAL_ADC_ConvCpltcallback().

uint32_t ADC_value;
int main(void)
{
 HAL_Init();
 SystemClock_Config();
 MX_GPIO_Init();
 MX_ADC1_Init();
 HAL_ADC_Start_IT(&hadc1);
 while (1)
 {
 }
}
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
{
 if(hadc->Instance == hadc1.Instance) // kiểm tra ADC nào gây ra ngắt
 {
   ADC_value = HAL_ADC_GetValue(&hadc1);
 }
}

B3: bật chế độ Debug để theo dõi giá trị ADC trả về:

Click chọn vào biểu tượng Debug session.

Add ADC_value vào watch 1 để theo dõi:

Sau đó sẽ click chọn Run để theo dõi Debug.

SCAN MODE:

1.     Khởi tạo project với CubeMx

B1: Cấu hình lại ADC

Ta dùng 2 kênh ADC nên là chọn number of conversion = 2

Enable scan mode và continuous mode, đồng thời chọn thời gian chuyển đổi.

B2: Gen code.

2.     Lập trình trên Keil C

B1: Tách phần init 2 kênh ADC trong hàm MX_ADC1_Init() thành 2 hàm riêng biệt.

// khởi tạo ADC1 channel 0
void ADC_Select_CH0 (void)
{
 ADC_ChannelConfTypeDef sConfig = {0};
 sConfig.Channel = ADC_CHANNEL_0;
 sConfig.Rank = ADC_REGULAR_RANK_1;
 sConfig.SamplingTime = ADC_SAMPLETIME_239CYCLES_5;
 if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
 {
   Error_Handler();
 }
}
// khởi tạo ADC1 channel 1
void ADC_Select_CH1 (void)
{
 ADC_ChannelConfTypeDef sConfig = {0};
 sConfig.Channel = ADC_CHANNEL_1;
 sConfig.Rank = ADC_REGULAR_RANK_1;
 sConfig.SamplingTime = ADC_SAMPLETIME_239CYCLES_5;
 if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
 {
   Error_Handler();
 }
}

B2: Thực hiện việc đọc giá trị lần lượt ở 2 kênh ADC.

uint32_t ADC_VAL[2];
int main(void)
{
 HAL_Init();
 SystemClock_Config();

 MX_GPIO_Init();
 MX_ADC1_Init();

 while (1)
 {
   ADC_Select_CH0();
   HAL_ADC_Start(&hadc1);
   HAL_ADC_PollForConversion(&hadc1, 1000);
   ADC_VAL[0] = HAL_ADC_GetValue(&hadc1);
   HAL_ADC_Stop(&hadc1);
   HAL_Delay(10);
   ADC_Select_CH1();
   HAL_ADC_Start(&hadc1);
   HAL_ADC_PollForConversion(&hadc1, 1000);
   ADC_VAL[1] = HAL_ADC_GetValue(&hadc1);
   HAL_ADC_Stop(&hadc1);
   HAL_Delay(10);
 }
}

B3: nạp chương trình và chạy ở chế độ debug để theo dõi giá trị ADC đọc về

1 số lưu ý:

Ở đây giá trị ta đọc được chỉ là giá trị của điện áp trả về. Muốn biết

được giá trị điện trở ta phải xem mạch nguyên lý.

Cụ thể ở đây : Từ giá trị đo được ta sẽ tính điện trở theo công

thức:



Timer với STM32

I. Giới thiệu về Timer:

Có thể hiểu 1 cách đơn giản: timer là 1 mạch digital logic có vai trò đếm mỗi chu kỳ clock (đếm lên hoặc đếm xuống).

Dưới đây là 1 bộ timer 16 bit cơ bản, nó có thể đếm từ 0 -> 65535 (216-1). Mỗi chu kỳ clock, giá trị của bộ đếm được tăng thêm 1. Và như các bạn có thể thấy, tần số của timer ftimer = tần số APB của timer / (Prescaler+1) (fAPBx / (PSC+1)).

Vì khi PSC = 0 nghĩa là hệ số chia 1:1.

Timer còn có thể hoạt động ở chế độ counter, nó sẽ nhận xung clock từ các tín hiệu ngoài. Có thể là từ 1 nút nhấn, bộ đếm sẽ được tăng sau mỗi lần bấm nút (sườn lên hoặc sườn xuống tùy vào cấu hình). Như các bạn có thể thấy, ở chế độ này tín hiệu của xung clock sẽ được điều khiển bằng nút nhấn và đồng thời PSC = 1 (bấm bao nhiêu thì đếm bấy nhiêu).

Ngoài ra còn các chế độ khác (ở đây mình chỉ liệt kê, sau này sẽ có bài viết riêng về các chế độ này):

·        PWM Mode

·        Advanced PWM Mode

·        Output Compare Mode

·        One-Pulse Mode

·        Input Capture Mode

·        Encoder Mode

·        Timer Gate Mode

·        Timer DMA Burst Mode

·        IRTIM Infrared Mode

Dưới đây là sơ đồ khối timer của STM32f103C8T6.

Bao gồm 1 bộ đếm auto-reaload 16 bit. Có thể hoạt động ở các mode: timer, counter, PWM, input capture, output compare…

II. Giải thích các hàm mới dùng trong chương trình:

   HAL_StatusTypeDef HAL_TIM_Base_Start(TIM_HandleTypeDef *htim)

·        Start timer ở chế độ mặc định

Tham số:

·        htim: trỏ đến timer được start (htim1 -> htim4).

   void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim);

·       Khi timer tràn, chương trình sẽ chạy các câu lệnh trong hàm này

Tham số:

·       htim: trỏ đến timer sinh ra ngắt (htim1 -> htim4).

   HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim)

·        Start timer ở chế độ ngắt

Tham số:

·        htim: trỏ đến timer được start (htim1 -> htim4).



 III. Lập trình timer trên STM32:

Ở phần này ta sẽ lấy 2 ví dụ về mode counter và timer để nháy led.

1.     Ngắt Timer:

Bước 1: Khởi tạo project với cubeMx: Cấu hình clock, debug mode,.. như những phần trước.

Bước 2: Cấu hình timer (sử dụng timer 2)

·       Clock suorce: chọn Internal clock.

·       Prescaler: 35999

·       Counter Period: 1999

*Giải thích: Vì tần số của bộ APBx là 72Mhz, Prescaler là hệ số chia, từ đó ta có được tần số của timer là 72Mhz/(3599+1) = 20Khz. Counter Period là giá trị đếm max, khi đếm hơn giá trị này thì sẽ bị tràn -> kích hoạt ngắt. Counter Period = 19999: đếm từ 0 -> 19999, khi đếm lên 20000 thì tràn, vậy chu kỳ tràn là 20000*(1/20Khz) = 1s.

·       Vào NVIC để kích hoạt ngắt và set mức ưu tiên ngắt = 2.

Bước 3: Cấu hình các chân GPIO để nháy led. (sử dụng 1 led và 1 trở 330ohm đấu nối theo sơ đồ sau)

·       Chân katot của led nối vào chân PB0

·       Cấu hình chân theo như ảnh dưới.

Bước 4: Đặt tên project và GEN code.

Lập trình trên Keil C:

Cách 1: Dùng ngắt timer sau mỗi 1 giây.

Bước 1: Sử dụng HAL_TIM_Base_IT() để Khởi tạo ngắt Timer2.

int main(void)
{
 HAL_Init();
 SystemClock_Config();
 MX_GPIO_Init();
 MX_TIM2_Init();
 MX_TIM1_Init();
 HAL_TIM_Base_Start_IT(&htim2);
 while (1)
 {
 }

}

Bước 2: Cho nháy led trong hàm HAL_TIM_PeriodElapsedCallback().

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
 if(htim->Instance == htim2.Instance)
 {
   HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0);
 }
}

Bước 3: nạp chương trình và chạy.

Cách 2: tạo hàm delay sử dụng timer.

Bước 1: tạo hàm delay 1ms.

void delay_1ms(void)
{
 __HAL_TIM_SetCounter(&htim2, 0);
 while (__HAL_TIM_GetCounter(&htim2)<20);
}

Bước 2: tạo hàm delay x ms.

void delay_ms(int time)
{
 int i = 0;
 for(i = 0; i < time; i++)
 {
   delay_1ms();
 }
}

Bước 3: Khởi động timer và cho nháy led.

int main(void)
{
 HAL_Init();
 SystemClock_Config();
 MX_GPIO_Init();
 MX_TIM2_Init();
 MX_TIM1_Init();
 HAL_TIM_Base_Start(&htim2);
 while (1)
 {
   HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0);
   delay_ms(1000);
 }
}

Bước 4: nạp Code và theo dõi kết quả



GIAO TIẾP UART LÀ GÌ

UART hay bộ thu-phát không đồng bộ đa năng là một trong những hình thức giao tiếp kỹ thuật số giữa thiết bị với thiết bị đơn giản và lâu đời nhất. Bạn có thể tìm thấy các thiết bị UART trong một phần của mạch tích hợp (IC) hoặc dưới dạng các thành phần riêng lẻ. Các UART giao tiếp giữa hai nút riêng biệt bằng cách sử dụng một cặp dẫn và một nối đất chung.

Hướng dẫn giao tiếp UART

Vì nó là thiết lập phổ quát nên chúng ta có thể định cấu hình UART để hoạt động với nhiều loại giao thức nối tiếp khác nhau. UART đã được điều chỉnh thành các đơn vị chip đơn vào đầu những năm 1970, bắt đầu với Western Digital’s WD1402A.

Trong một sơ đồ giao tiếp UART:

Chân Tx (truyền) của một chip kết nối trực tiếp với chân Rx (nhận) của chip kia và ngược lại. Thông thường, quá trình truyền sẽ diễn ra ở 3.3V hoặc 5V. UART là một giao thức một master, một slave, trong đó một thiết bị được thiết lập để giao tiếp với duy nhất một thiết bị khác.

Dữ liệu truyền đến và đi từ UART song song với thiết bị điều khiển (ví dụ: CPU).

Khi gửi trên chân Tx, UART đầu tiên sẽ dịch thông tin song song này thành nối tiếp và truyền đến thiết bị nhận.

UART thứ hai nhận dữ liệu này trên chân Rx của nó và biến đổi nó trở lại thành song song để giao tiếp với thiết bị điều khiển của nó.

UART truyền dữ liệu nối tiếp, theo một trong ba chế độ:

– Full duplex: Giao tiếp đồng thời đến và đi từ mỗi master và slave

– Half duplex: Dữ liệu đi theo một hướng tại một thời điểm

– Simplex: Chỉ giao tiếp một chiều

Dữ liệu truyền qua UART được tổ chức thành các gói. Mỗi gói chứa 1 bit bắt đầu, 5 đến 9 bit dữ liệu (tùy thuộc vào UART), một bit chẵn lẻ tùy chọn và 1 hoặc 2 bit dừng.

Bit bắt đầu

Đường truyền dữ liệu UART thường được giữ ở mức điện áp cao khi không truyền dữ liệu. Để bắt đầu truyền dữ liệu, UART truyền sẽ kéo đường truyền từ mức cao xuống mức thấp trong một chu kỳ clock. Khi UART nhận phát hiện sự chuyển đổi điện áp cao xuống thấp, nó bắt đầu đọc các bit trong khung dữ liệu ở tần số của tốc độ truyền.

Khung dữ liệu

Khung dữ liệu chứa dữ liệu thực tế được chuyển. Nó có thể dài từ 5 bit đến 8 bit nếu sử dụng bit chẵn lẻ. Nếu không sử dụng bit chẵn lẻ, khung dữ liệu có thể dài 9 bit. Trong hầu hết các trường hợp, dữ liệu được gửi với bit ít quan trọng nhất trước tiên.

Module điện tử 932*50
Bit chẵn lẻ

Bit chẵn lẻ là một cách để UART nhận cho biết liệu có bất kỳ dữ liệu nào đã thay đổi trong quá trình truyền hay không. Bit có thể bị thay đổi bởi bức xạ điện từ, tốc độ truyền không khớp hoặc truyền dữ liệu khoảng cách xa. Sau khi UART nhận đọc khung dữ liệu, nó sẽ đếm số bit có giá trị là 1 và kiểm tra xem tổng số là số chẵn hay lẻ. Nếu bit chẵn lẻ là 0 (tính chẵn), thì tổng các bit 1 trong khung dữ liệu phải là một số chẵn. Nếu bit chẵn lẻ là 1 (tính lẻ), các bit 1 trong khung dữ liệu sẽ tổng thành một số lẻ. Khi bit chẵn lẻ khớp với dữ liệu, UART sẽ biết rằng quá trình truyền không có lỗi. Nhưng nếu bit chẵn lẻ là 0 và tổng là số lẻ; hoặc bit chẵn lẻ là 1 và tổng số là chẵn, UART sẽ biết rằng các bit trong khung dữ liệu đã thay đổi.

Bit dừng

Để báo hiệu sự kết thúc của gói dữ liệu, UART gửi sẽ điều khiển đường truyền dữ liệu từ điện áp thấp đến điện áp cao trong ít nhất khoảng 2 bit.

Có thể tóm tắt lại như sau. Quá trình truyền dữ liệu diễn ra dưới dạng các gói dữ liệu, bắt đầu bằng một bit bắt đầu, đường mức cao được kéo xuống đất. Sau bit bắt đầu, năm đến chín bit dữ liệu truyền trong khung dữ liệu của gói, theo sau là bit chẵn lẻ tùy chọn để xác minh việc truyền dữ liệu thích hợp. Cuối cùng, một hoặc nhiều bit dừng được truyền ở nơi đường đặt ở mức cao. Như vậy là kết thúc một gói.

UART là giao thức không đồng bộ, do đó không có đường clock nào điều chỉnh tốc độ truyền dữ liệu. Người dùng phải đặt cả hai thiết bị để giao tiếp ở cùng tốc độ. Tốc độ này được gọi là tốc độ truyền, được biểu thị bằng bit trên giây hoặc bps. Tốc độ truyền thay đổi đáng kể, từ 9600 baud đến 115200 và hơn nữa. Tốc độ truyền giữa UART truyền và nhận chỉ có thể chênh lệch khoảng 10% trước khi thời gian của các bit bị lệch quá xa.

Mặc dù UART là giao thức cũ và chỉ có thể giao tiếp giữa một master và slave duy nhất, nhưng nó dễ thiết lập và cực kỳ linh hoạt. Do đó, bạn có thể gặp nó khi làm việc với các dự án vi điều khiển. UART có thể là một phần của hệ thống mà bạn sử dụng hàng ngày, mà có thể bạn không nhận ra.


Ưu và nhược điểm của UART

Không có giao thức truyền thông nào là hoàn hảo, nhưng UART thực hiện khá tốt công việc của nó. Dưới đây là một số ưu và nhược điểm để giúp bạn quyết định xem nó có phù hợp với nhu cầu của bạn hay không:

Ưu điểm

Chỉ sử dụng hai dây

Không cần tín hiệu clock

Có một bit chẵn lẻ để cho phép kiểm tra lỗi

Cấu trúc của gói dữ liệu có thể được thay đổi miễn là cả hai bên đều được thiết lập cho nó

Phương pháp có nhiều tài liệu và được sử dụng rộng rãi

Nhược điểm

Kích thước của khung dữ liệu được giới hạn tối đa là 9 bit

Không hỗ trợ nhiều hệ thống slave hoặc nhiều hệ thống master

Tốc độ truyền của mỗi UART phải nằm trong khoảng 10% của nhau

CHUẨN GIAO TIẾP I2C LÀ GÌ

Giới thiệu giao tiếp I2C

I2C kết hợp các tính năng tốt nhất của SPI và UART. Với I2C, bạn có thể kết nối nhiều slave với một master duy nhất (như SPI) và bạn có thể có nhiều master điều khiển một hoặc nhiều slave. Điều này thực sự hữu ích khi bạn muốn có nhiều hơn một vi điều khiển ghi dữ liệu vào một thẻ nhớ duy nhất hoặc hiển thị văn bản trên một màn hình LCD.

Giống như giao tiếp UART, I2C chỉ sử dụng hai dây để truyền dữ liệu giữa các thiết bị:

SDA (Serial Data) – đường truyền cho master và slave để gửi và nhận dữ liệu.

SCL (Serial Clock) – đường mang tín hiệu xung nhịp.

I2C là một giao thức truyền thông nối tiếp, vì vậy dữ liệu được truyền từng bit dọc theo một đường duy nhất (đường SDA).

Giống như SPI, I2C là đồng bộ, do đó đầu ra của các bit được đồng bộ hóa với việc lấy mẫu các bit bởi một tín hiệu xung nhịp được chia sẻ giữa master và slave. Tín hiệu xung nhịp luôn được điều khiển bởi master.

Cách hoạt động của I2C

Với I2C, dữ liệu được truyền trong các tin nhắn. Tin nhắn được chia thành các khung dữ liệu. Mỗi tin nhắn có một khung địa chỉ chứa địa chỉ nhị phân của địa chỉ slave và một hoặc nhiều khung dữ liệu chứa dữ liệu đang được truyền. Thông điệp cũng bao gồm điều kiện khởi động và điều kiện dừng, các bit đọc / ghi và các bit ACK / NACK giữa mỗi khung dữ liệu:

Điều kiện khởi động: Đường SDA chuyển từ mức điện áp cao xuống mức điện áp thấp trước khi đường SCL chuyển từ mức cao xuống mức thấp.

Điều kiện dừng: Đường SDA chuyển từ mức điện áp thấp sang mức điện áp cao sau khi đường SCL chuyển từ mức thấp lên mức cao.

Khung địa chỉ: Một chuỗi 7 hoặc 10 bit duy nhất cho mỗi slave để xác định slave khi master muốn giao tiếp với nó.

Bit Đọc / Ghi: Một bit duy nhất chỉ định master đang gửi dữ liệu đến slave (mức điện áp thấp) hay yêu cầu dữ liệu từ nó (mức điện áp cao).

Bit ACK / NACK: Mỗi khung trong một tin nhắn được theo sau bởi một bit xác nhận / không xác nhận. Nếu một khung địa chỉ hoặc khung dữ liệu được nhận thành công, một bit ACK sẽ được trả lại cho thiết bị gửi từ thiết bị nhận.

Địa chỉ

I2C không có các đường Slave Select như SPI, vì vậy cần một cách khác để cho slave biết rằng dữ liệu đang được gửi đến slave này chứ không phải slave khác. Nó thực hiện điều này bằng cách định địa chỉ. Khung địa chỉ luôn là khung đầu tiên sau bit khởi động trong một tin nhắn mới.

Master gửi địa chỉ của slave mà nó muốn giao tiếp với mọi slave được kết nối với nó. Sau đó, mỗi slave sẽ so sánh địa chỉ được gửi từ master với địa chỉ của chính nó. Nếu địa chỉ phù hợp, nó sẽ gửi lại một bit ACK điện áp thấp cho master. Nếu địa chỉ không khớp, slave không làm gì cả và đường SDA vẫn ở mức cao.



Bit đọc / ghi

Khung địa chỉ bao gồm một bit duy nhất ở cuối tin nhắn cho slave biết master muốn ghi dữ liệu vào nó hay nhận dữ liệu từ nó. Nếu master muốn gửi dữ liệu đến slave, bit đọc / ghi ở mức điện áp thấp. Nếu master đang yêu cầu dữ liệu từ slave, thì bit ở mức điện áp cao.

Module điện tử 932*50
Khung dữ liệu

Sau khi master phát hiện bit ACK từ slave, khung dữ liệu đầu tiên đã sẵn sàng được gửi.

Khung dữ liệu luôn có độ dài 8 bit và được gửi với bit quan trọng nhất trước. Mỗi khung dữ liệu ngay sau đó là một bit ACK / NACK để xác minh rằng khung đã được nhận thành công. Bit ACK phải được nhận bởi master hoặc slave (tùy thuộc vào cái nào đang gửi dữ liệu) trước khi khung dữ liệu tiếp theo có thể được gửi.

Sau khi tất cả các khung dữ liệu đã được gửi, master có thể gửi một điều kiện dừng cho slave để tạm dừng quá trình truyền. Điều kiện dừng là sự chuyển đổi điện áp từ thấp lên cao trên đường SDA sau khi chuyển tiếp từ thấp lên cao trên đường SCL , với đường SCL vẫn ở mức cao.

Các bước truyền dữ liệu I2C

Master gửi điều kiện khởi động đến mọi slave được kết nối bằng cách chuyển đường SDA từ mức điện áp cao sang mức điện áp thấp trước khi chuyển đường SCL từ mức cao xuống mức thấp.

Master gửi cho mỗi slave địa chỉ 7 hoặc 10 bit của slave mà nó muốn giao tiếp, cùng với bit đọc / ghi.

Mỗi slave sẽ so sánh địa chỉ được gửi từ master với địa chỉ của chính nó. Nếu địa chỉ trùng khớp, slave sẽ trả về một bit ACK bằng cách kéo dòng SDA xuống thấp cho một bit. Nếu địa chỉ từ master không khớp với địa chỉ của slave, slave rời khỏi đường SDA cao.
Master gửi hoặc nhận khung dữ liệu.

Sau khi mỗi khung dữ liệu được chuyển, thiết bị nhận trả về một bit ACK khác cho thiết bị gửi để xác nhận đã nhận thành công khung.

Để dừng truyền dữ liệu, master gửi điều kiện dừng đến slave bằng cách chuyển đổi mức cao SCL trước khi chuyển mức cao SDA.

Một master với nhiều slave

Vì I2C sử dụng định địa chỉ nên nhiều slave có thể được điều khiển từ một master duy nhất. Với địa chỉ 7 bit sẽ có 128 (2 mũ 7) địa chỉ duy nhất. Việc sử dụng địa chỉ 10 bit không phổ biến, nhưng nó cung cấp 1.024 (2 mũ 10) địa chỉ duy nhất. Để kết nối nhiều slave đến một master duy nhất, bạn có thể đấu dây như thế này, với điện trở kéo lên 4,7K Ohm kết nối đường SDA và SCL với Vcc:

Nhiều master với nhiều slave

Nhiều master có thể được kết nối với một slave hoặc nhiều slave. Sự cố với nhiều master trong cùng một hệ thống xảy ra khi hai master cố gắng gửi hoặc nhận dữ liệu cùng một lúc qua đường SDA. Để giải quyết vấn đề này, mỗi master cần phải phát hiện xem đường SDA thấp hay cao trước khi truyền tin nhắn. Nếu đường SDA thấp, điều này có nghĩa là một master khác có quyền điều khiển bus và master đó phải đợi để gửi tin nhắn. Nếu đường SDA cao thì có thể truyền tin nhắn an toàn. Để kết nối nhiều master với nhiều slave, hãy sử dụng sơ đồ sau, với các điện trở kéo lên 4,7K Ohm kết nối các đường SDA và SCL với Vcc:

Ưu điểm và nhược điểm của I2C

Có rất nhiều điều ở I2C có thể khiến nó nghe có vẻ phức tạp so với các giao thức khác, nhưng có một số lý do chính đáng khiến bạn có thể muốn hoặc không muốn sử dụng I2C để kết nối với một thiết bị cụ thể:

Ưu điểm

Chỉ sử dụng hai dây

Hỗ trợ nhiều master và nhiều slave

Bit ACK / NACK xác nhận mỗi khung được chuyển thành công

Phần cứng ít phức tạp hơn so với UART

Giao thức nổi tiếng và được sử dụng rộng rãi

Nhược điểm

Tốc độ truyền dữ liệu chậm hơn SPI

Kích thước của khung dữ liệu bị giới hạn ở 8 bit

Cần phần cứng phức tạp hơn để triển khai so với SPI


CHUẨN GIAO TIẾP SPI LÀ GÌ

Giới thiệu về giao tiếp SPI

SPI là một giao thức giao tiếp phổ biến được sử dụng bởi nhiều thiết bị khác nhau. Ví dụ, module thẻ SD, module đầu đọc thẻ RFID và bộ phát / thu không dây 2,4 GHz đều sử dụng SPI để giao tiếp với vi điều khiển.

Lợi ích duy nhất của SPI là dữ liệu có thể được truyền mà không bị gián đoạn. Bất kỳ số lượng bit nào cũng có thể được gửi hoặc nhận trong một luồng liên tục. Với I2C và UART, dữ liệu được gửi dưới dạng gói, giới hạn ở một số bit cụ thể. Điều kiện bắt đầu và dừng xác định điểm bắt đầu và kết thúc của mỗi gói, do đó dữ liệu bị gián đoạn trong quá trình truyền.

Các thiết bị giao tiếp qua SPI có quan hệ master – slave. Master là thiết bị điều khiển (thường là vi điều khiển), còn slave (thường là cảm biến, màn hình hoặc chip nhớ) nhận lệnh từ master. Cấu hình đơn giản nhất của SPI là hệ thống một slave, một master duy nhất, nhưng một master có thể điều khiển nhiều hơn một slave.

MOSI (đầu ra master / đầu vào slave) – đường truyền cho master gửi dữ liệu đến slave.

MISO (đầu vào master / đầu ra slave) – đường cho slave gửi dữ liệu đến master.

SCLK (clock) – đường cho tín hiệu xung nhịp.

SS / CS (Slave Select / Chip Select) – đường cho master chọn slave nào để gởi tín hiệu.

Cách hoạt động cuả SPI

Xung nhịp

Tín hiệu xung nhịp đồng bộ hóa đầu ra của các bit dữ liệu từ master để lấy mẫu các bit của slave. Một bit dữ liệu được truyền trong mỗi chu kỳ xung nhịp, do đó tốc độ truyền dữ liệu được xác định bởi tần số của tín hiệu xung nhịp. Giao tiếp SPI được khởi tạo bởi master kể từ khi master cấu hình và tạo ra tín hiệu xung nhịp.

Bất kỳ giao thức giao tiếp nào mà các thiết bị chia sẻ tín hiệu xung nhịp thì đều được gọi là đồng bộ. SPI là một giao thức giao tiếp đồng bộ. Ngoài ra còn có các phương thức không đồng bộ không sử dụng tín hiệu xung nhịp. Ví dụ, trong giao tiếp UART, cả hai bên đều được đặt thành tốc độ truyền được cấu hình sẵn để chỉ ra tốc độ và thời gian truyền dữ liệu.

Tín hiệu xung nhịp trong SPI có thể được sửa bằng cách sử dụng các thuộc tính của phân cực xung nhịp và pha xung nhịp. Hai thuộc tính này làm việc cùng nhau để xác định khi nào các bit được xuất ra và khi được lấy mẫu. Phân cực xung nhịp có thể được thiết lập bởi master để cho phép các bit được xuất ra và lấy mẫu trên cạnh lên hoặc xuống của chu kỳ xung nhịp. Pha xung nhịp có thể được đặt để đầu ra và lấy mẫu xảy ra trên cạnh đầu tiên hoặc cạnh thứ hai của chu kỳ xung nhịp, bất kể nó đang tăng hay giảm.

Slave Select

Master có thể chọn slave mà nó muốn giao tiếp bằng cách đặt đường CS / SS của slave ở mức điện áp thấp. Ở trạng thái idle, không truyền tải, dòng slave select được giữ ở mức điện áp cao. Nhiều chân CS / SS có thể có sẵn trên thiết bị master cho phép đấu dây song song nhiều slave. Nếu chỉ có một chân CS / SS, nhiều slave có thể được kết nối với master bằng cách nối chuỗi.

Nhiều slave

Module điện tử 932*50
SPI có thể thiết lập để hoạt động với một master và một slave duy nhất, và nó có thể được thiết lập với nhiều slave do một master duy nhất điều khiển. Có hai cách để kết nối nhiều slave với master. Nếu master có nhiều chân slave select, các slave có thể được nối dây song song như thế này:

Nếu chỉ có một chân slave select, các slave có thể được nối chuỗi như sau:

MOSI và MISO

Master gửi dữ liệu đến slave từng bit, nối tiếp qua đường MOSI. Slave nhận dữ liệu được gửi từ master tại chân MOSI. Dữ liệu được gửi từ master đến slave thường được gửi với bit quan trọng nhất trước.

Slave cũng có thể gửi dữ liệu trở lại master thông qua đường MISO nối tiếp. Dữ liệu được gửi từ slave trở lại master thường được gửi với bit ít quan trọng nhất trước.

Các bước truyền dữ liệu SPI

Master ra tín hiệu xung nhịp.

Master chuyển chân SS / CS sang trạng thái điện áp thấp, điều này sẽ kích hoạt slave.

Master gửi dữ liệu từng bit một tới slave dọc theo đường MOSI. Slave đọc các bit khi nó nhận được.

Nếu cần phản hồi, slave sẽ trả lại dữ liệu từng bit một cho master dọc theo đường MISO. Master đọc các bit khi nó nhận được.

Ưu và nhược điểm của SPI

Có một số ưu và nhược điểm khi sử dụng SPI và nếu được lựa chọn giữa các giao thức giao tiếp khác nhau, bạn nên biết khi nào sử dụng SPI theo yêu cầu của dự án:

Ưu điểm

Không có bit bắt đầu và dừng, vì vậy dữ liệu có thể được truyền liên tục mà không bị gián đoạn

Không có hệ thống định địa chỉ slave phức tạp như I2C

Tốc độ truyền dữ liệu cao hơn I2C (nhanh gần gấp đôi)

Các đường MISO và MOSI riêng biệt, vì vậy dữ liệu có thể được gửi và nhận cùng một lúc


Nhược điểm

Sử dụng bốn dây (I2C và UART sử dụng hai)

Không xác nhận dữ liệu đã được nhận thành công (I2C có điều này)

Không có hình thức kiểm tra lỗi như bit chẵn lẻ trong UART

Chỉ cho phép một master duy nhất

GPIO là gì?

GPIO là viết tắt của General Purpose Input Output là một trong những thuật ngữ phổ biến nhất mà bạn có thể đã gặp. Khi bạn bắt đầu công việc trong một hệ thống nhúng, đây là từ đầu tiên bạn phải nghe nói đến. Nhưng bạn có nghĩ rằng bạn đã nắm vững tất cả các khái niệm liên quan đến GPIO? Tín hiệu trên các chân GPIO cho phép chúng ta đạt được chức năng cuối của mình và cho phép chúng ta nói chuyện với thế giới bên ngoài. Trong bài viết này, tôi sẽ đi sâu về các khái niệm khác nhau liên quan đến GPIO. Ở cuối bài viết này, bạn sẽ có thể trả lời gpio là gì, các loại GPIO có thể được sử dụng là gì, cách cấu hình gpio để tiết kiệm điện năng, ảnh hưởng của tốc độ GPIO đến phát xạ EMI của bo mạch, khóa gpio để ngăn việc cấu hình lại ngẫu nhiên,… Là một kỹ sư phần mềm, bạn phải nắm vững các khái niệm này vì hầu hết công việc của bạn sẽ là viết mã bare metal hoặc mã driver và là một nhà phát triển ứng dụng nhúng, bạn nên biết các khái niệm này theo thứ tự để hiểu các chức năng cốt lõi được cung cấp bởi GPIO API và nếu có gì đó bị hỏng, bạn có thể nhanh chóng sửa chữa ở cấp driver.

 

GPIO là gì?

 

GPIO là một chân tín hiệu kỹ thuật số trên mạch tích hợp mà hành vi của nó (đầu vào hoặc đầu ra) được điều khiển bởi phần mềm ứng dụng. GPIO về cơ bản là một chân có thể được cấu hình làm đầu vào hoặc đầu ra. Nếu chúng ta cấu hình chân như một đầu ra, chúng ta có thể ghi 0 (LOW) hoặc 3,3 / 5 V (VDD) vào chân đó. Khi được cấu hình làm đầu vào, chúng ta có thể đọc tín hiệu trên chân đó. GPIO là giao diện tiêu chuẩn mà qua đó vi điều khiển có thể giao tiếp với thế giới bên ngoài. Nó có thể được sử dụng để đọc các giá trị từ cảm biến analog hoặc kỹ thuật số, điều khiển đèn LED, điều khiển đồng hồ cho giao tiếp I2C,…

 

Bản đồ bộ nhớ của ngoại vi GPIO

 

Như chúng ta đã biết rằng vi điều khiển hiện đại sử dụng kỹ thuật bản đồ bộ nhớ để ánh xạ tất cả các thiết bị ngoại vi trong một không gian bộ nhớ thống nhất. Vì bộ điều khiển STM32F446RE là bộ vi điều khiển dựa trên ARM Cortex M4 nên không gian bộ nhớ cho các thiết bị ngoại vi được ARM dành riêng như thể hiện trong hình:

Đị

a chỉ bộ nhớ trong khoảng từ 0x40000000 đến 0x600000000 có thể được nhà cung cấp vi điều khiển sử dụng để ánh xạ các thiết bị ngoại vi khác nhau của họ. Vùng này được chia thành nhiều vùng phụ, mỗi vùng được ánh xạ tới một thiết bị ngoại vi cụ thể, như thể hiện trong hình bên dưới. Từ góc độ lập trình viên, chúng ta cần tìm ra địa chỉ mà một thiết bị ngoại vi cụ thể được ánh xạ trong dải địa chỉ này. Datasheet của vi điều khiển sẽ cung cấp địa chỉ một thiết bị ngoại vi cụ thể được ánh xạ. Trong trường hợp của chúng ta, như chúng ta có thể thấy trong hình bên dưới, thiết bị ngoại vi GPIO được ánh xạ trong dải địa chỉ 0x40020000 đến 0x40021FFF. Đây cũng là vùng băng tần bit (chúng ta sẽ tìm hiểu về điều này sau).

Như chúng ta thấy, GPIO ngoại vi được chia thành GPIO A, GPIO B, GPIO C, GPIO D, GPIO E, GPIO F, GPIO G, GPIO H và mỗi cổng chứa tối đa 16 chân. Ngoại vi GPIOA được ánh xạ từ địa chỉ 0x40020000 đến 0x400203FF và nó quản lý tất cả các chân kết nối với PORT-A.

 

Mẫu vi xử lý ARM Cortex M-4 có bus dữ liệu rộng 32 bit, bus địa chỉ và tập thanh ghi rộng 32 bit. Trên thực tế, mỗi từ có kích thước 32-bit. Biết được bus dữ liệu, bus địa chỉ và chiều rộng thanh ghi là rất quan trọng vì nó sẽ giúp hiểu mọi thứ ở cấp độ rất thấp (cơ bản) tức là cấp độ trình điều khiển. Vì chúng ta biết rằng kích thước từ là 4 byte, do đó chúng ta có thể nói rằng mọi thanh ghi của ngoại vi GPIO dài 4 byte.

 

Cho đến bây giờ, chúng ta đã tìm ra địa chỉ cơ sở của các thiết bị ngoại vi GPIO. Đó là điều đầu tiên bạn sẽ làm với tư cách là một lập trình viên bất cứ khi nào bạn định lập trình bất kỳ thiết bị ngoại vi nào là tìm địa chỉ cơ sở của thiết bị ngoại vi. Bây giờ, chúng ta cần biết địa chỉ thanh ghi chính xác để lập trình các thanh ghi. Trước khi bắt đầu lập trình các thanh ghi, chúng ta phải hiểu mục đích của các thanh ghi này. Hãy đi sâu vào tập hợp thanh ghi GPIO!

 

Thanh ghi GPIO

 

Tất cả các GPIO có trong vi điều khiển được nhóm lại thành Cổng X trong đó X là A, B, C, D …

 

Mỗi cổng trong STM32F446RE bao gồm 16 chân. Mỗi chân có nhiều thanh ghi khác nhau được liên kết với nó, bằng cách thay đổi nội dung của các thanh ghi, chúng ta có thể kiểm soát hành vi của một chân cụ thể.

 

Trong STM32F446RE, hành vi của mỗi chân có thể được kiểm soát bằng cách sử dụng:

 

Thanh ghi chế độ GPIO

Thanh ghi loại đầu ra GPIO

Thanh ghi tốc độ GPIO

Thanh ghi kéo lên / kéo xuống GPIO

Thanh ghi dữ liệu đầu vào GPIO

Thanh ghi dữ liệu đầu ra GPIO

Thanh ghi set / reset bit GPIO

Thanh ghi khóa cấu hình GPIO

Thanh ghi chức năng thay thế GPIO

Chúng ta sẽ xem xét các chức năng được phục vụ bởi từng thanh ghi này trong bài viết này. Hiểu chức năng của các thanh ghi này là rất quan trọng vì nó sẽ giúp bạn kiểm soát chân theo yêu cầu của bạn. Ngoài ra, nếu bạn muốn viết driver GPIO của riêng mình, bạn sẽ chủ yếu viết các hàm cốt lõi để lập trình các thanh ghi này và cung cấp API trừu tượng cho các ứng dụng người dùng sử dụng driver của bạn.

 

Chi tiết về thanh ghi GPIO

 

Thanh ghi chế độ GPIO – Thanh ghi này được sử dụng để chọn chế độ của chân cắm. Có bốn chế độ có thể được lập trình vào thanh ghi này: Chế độ đầu vào, Chế độ đầu ra mục đích chung, Chế độ chức năng thay thế và Chế độ analog. Khi phần mềm muốn đọc bất kỳ dữ liệu nào từ bên ngoài như cảm biến, nó đã định cấu hình chân cắm làm đầu vào. Mỗi chân có một bộ đệm đầu vào tương ứng mà phần mềm có thể đọc được khi chân đó đang hoạt động ở Chế độ INPUT. Chế độ Đầu ra Mục đích Chung được sử dụng khi chúng ta muốn ghi giá trị THẤP hoặc CAO vào chân. Ví dụ: nếu chúng ta kết nối một đèn LED với một chân và chúng ta muốn bật đèn LED, phần mềm sẽ cấu hình chân đó là đầu ra và ghi HIGH (VDD) vào chân. Mỗi chân có một bộ đệm đầu ra tương ứng có thể được ghi bởi phần mềm, trong trường hợp này, chúng ta đang ghi 1 vào bộ đệm đầu ra. Chế độ chức năng thay thế được sử dụng khi chúng ta muốn gán một chân cụ thể cho bất kỳ thiết bị ngoại vi nào khác. Hãy chia nhỏ ra một cách đơn giản dễ hiểu với một ví dụ đơn giản. Ví dụ: Nếu bạn muốn sử dụng giao tiếp I2C, bạn sẽ cần hai chân là SDA và SCL. Bạn cần chọn một số chân cụ thể do nhà cung cấp vi điều khiển cung cấp, có thể được sử dụng như dòng I2C SDA và SCL. Bạn có thể lấy thông tin này từ datasheet thiết bị. Trong bảng dưới đây, bạn có thể thấy rằng đối với SCL ngoại vi I2C1, bạn có thể sử dụng Cổng B Chân 6 trong Chức năng Thay thế (AF) 4.

Từ sơ đồ trên, bạn có thể thấy rằng nhà sản xuất thiết bị đã ánh xạ một số chân cụ thể nhất định sẽ được sử dụng bởi các thiết bị ngoại vi khác nhau. Do đó, trong ví dụ của chúng ta, Cổng B Chân 6 nên được cấu hình ở chế độ chức năng Thay thế để nó có thể được sử dụng bởi thiết bị ngoại vi I2C1. Nếu bạn muốn gán các chân cho thiết bị ngoại vi ADC (Analog to Digital Converter) hoặc DAC (Digital to Analog convertor), bạn nên định cấu hình chế độ là chế độ Analog.

 

Module điện tử 932*50

Thanh ghi loại đầu ra GPIO – Thanh ghi này được viết bởi phần mềm để cấu hình loại đầu ra của chân. Có thể có hai loại đầu ra: Đầu ra push-pull và Đầu ra open-drain. Để hiểu sự khác biệt giữa đầu ra push-pull và đầu ra open-drain, chúng ta cần hiểu cách chân gpio được thực hiện về mặt cổng transistor. Là một kỹ sư nhúng, bạn nên hiểu rõ về sự khác biệt giữa hai cấu hình này.

Hãy tìm hiểu cách thức hoạt động của chế độ đầu vào và đầu ra ở cấp độ mạch. Hình dưới đây cho thấy cách thực hiện đơn giản của chân GPIO trong vi điều khiển.

Mỗi chân bao gồm hai bộ đệm – bộ đệm đầu vào và đầu ra cùng với một dòng enable. Khi dòng enable là 0, bộ đệm đầu ra được kích hoạt và bộ đệm đầu vào sẽ bị vô hiệu hóa. Bộ đệm đầu ra về cơ bản là hai transistor CMOS được kết nối theo kiểu bên dưới.

Khi chúng ta ghi 1 từ phần mềm, inverter đầu tiên sẽ đặt nó là 0 và mạch PMOS (T1) sẽ hoạt động (NMOS (T2) sẽ bị vô hiệu hóa) do đó chân sẽ được kéo lên VCC. Khi chúng ta ghi 0 từ phần mềm, biến tần đầu tiên sẽ đặt nó là 1 và NMOS sẽ được kích hoạt do đó chân sẽ được kéo xuống 0. Đây là cấu hình mặc định của chân GPIO và còn được gọi là đầu ra push-pull.

 

Nếu chúng ta đặt dòng enable là 1, thì chân sẽ được cấu hình ở chế độ đầu vào bằng cách kích hoạt bộ đệm đầu vào. Bộ đệm đầu vào bao gồm hai transistor CMOS được kết nối theo kiểu dưới đây:

Khi chân đọc 1 (CAO), inverter sẽ đảo mức logic cao này về 0 và transistor T1 PMOS sẽ BẬT. Vì nó được kéo lên VCC, phần mềm đọc logic là 1. Khi chân đọc 0 (LOW), inverter đảo mức logic thấp này thành 1 và T2 NMOS sẽ được kích hoạt và nó sẽ được kéo xuống 0, do đó phần mềm đọc 0. Dòng kích hoạt này được cấu hình bởi phần mềm.

 

Trong chế độ open-drain đầu ra, transistor PMOS trên cùng không có mặt. Sơ đồ trông giống như sau:

Khi T2 bật, chân sẽ được kéo xuống mức thấp (gnd). Khi T2 tắt, drain (D) của transistor sẽ nổi hoặc mở, do đó đầu ra sẽ nổi. Do đó, cấu hình open-drain chỉ có thể kéo chân xuống, không thể kéo chân lên. Vì open-drain chỉ có hai mức logic, logic 0 hoặc nổi, bạn cần cung cấp khả năng kéo lên cho chân này bằng cách kích hoạt điện trở kéo lên bên trong (có thể được thực hiện thông qua thanh ghi GPIO) hoặc đưa điện trở kéo lên bên ngoài. Trong một số thiết bị ngoại vi, GPIO được định cấu hình là open-drain, ví dụ, thiết bị ngoại vi I2C định cấu hình các chân SDA và SCL trong cấu hình open-drain.

 

Thanh ghi tốc độ GPIO – Tốc độ này không liên quan gì đến tần số chuyển mạch. Tốc độ nhanh hơn không có nghĩa là tốc độ chuyển đổi GPIO cao hơn (số lần một chân chuyển từ BẬT sang TẮT theo đơn vị thời gian). Tham số tốc độ này chỉ đơn giản xác định tốc độ quay của GPIO, tức là tốc độ nó có thể đi từ mức 0V đến mức VDD và ngược lại.

Làn sóng màu đỏ là đường cong chuyển đổi lý tưởng từ 0 sang 1 nhưng trong thực tế, chúng ta chỉ nhận được làn sóng màu xanh lá cây. Tăng thông số tốc độ sẽ di chuyển đường cong màu xanh lá cây sang trái sang đường màu đỏ. Lưu ý: Việc điều khiển chân ở tốc độ cao hơn cũng ảnh hưởng đến sự phát xạ EMI tổng thể của bo mạch.

 

Thanh ghi kéo lên / kéo xuống GPIO – Sử dụng thanh ghi này, chúng ta có thể bật / tắt điện trở kéo lên và kéo xuống của một chân nhất định.

Thanh ghi dữ liệu đầu vào GPIO – Chúng ta có thể sử dụng thanh ghi này để đọc trạng thái đầu vào (logic) trên chân. Tuy nhiên, nó chỉ có thể được đọc dưới dạng 4 byte, do đó chúng ta cần phải che tất cả các bit khác để trích xuất bit quan tâm của chúng ta.

Thanh ghi dữ liệu đầu ra GPIO – Thanh ghi này được sử dụng để thiết lập / thiết lập lại logic trên chân đầu ra. Để đẩy chân lên cao, phần mềm ghi 1 vào bit cụ thể của thanh ghi này tương ứng với chân cụ thể.

Thanh ghi set / reset bit GPIO – Thanh ghi này cho phép ứng dụng thiết lập và đặt lại từng bit riêng lẻ trong thanh ghi dữ liệu đầu ra GPIO. Sử dụng thanh ghi này để thay đổi giá trị của các bit riêng lẻ trong thanh ghi dữ liệu đầu ra là một hiệu ứng “một lần” tức là nó cung cấp một cách thực hiện xử lý theo từng bit nguyên tử.

Thanh ghi khóa cấu hình GPIO – Thanh ghi này được sử dụng để khóa cấu hình của chân port cho đến lần thiết lập lại tiếp theo. Có một trình tự cụ thể trong đó thanh ghi này cần được ghi để kích hoạt khóa.

Thanh ghi chức năng thay thế GPIO – Thanh ghi này được sử dụng để định cấu hình các chân gpio làm các chức năng thay thế, tức là các chân này có thể được sử dụng bởi các thiết bị ngoại vi khác trong bộ vi điều khiển. Tuy nhiên, một chân cụ thể chỉ có thể được liên kết với một thiết bị ngoại vi tại một thời điểm. Hầu hết các chân I / O được kết nối với các thiết bị ngoại vi trên bo mạch thông qua một bộ ghép kênh cho phép chỉ một chức năng thay thế của một thiết bị ngoại vi được kết nối với một chân I / O tại một thời điểm, đảm bảo rằng không thể có xung đột giữa các thiết bị ngoại vi chia sẻ cùng một chân I / O . Mỗi chân I / O có một bộ ghép kênh với 16 đầu vào chức năng thay thế (AF0 đến AF15) có thể được chọn bằng cách sử dụng thanh ghi chức năng thay thế GPIO. Sau khi đặt lại, tất cả I / O được kết nối với chức năng thay thế AF0 của hệ thống, đây là hoạt động mặc định. Các chức năng thay thế của thiết bị ngoại vi được ánh xạ từ AF1 đến AF13.

Vì vậy, nếu bạn muốn sử dụng một chân cụ thể làm thiết bị ngoại vi I2C1 (miễn là chân đó hỗ trợ chức năng I2C1), bạn sẽ chọn AF4 bằng cách viết thanh ghi chức năng thay thế gpio này với giá trị tương ứng.

 

Làm thế nào để truy cập thanh ghi GPIO trong chương trình?

 

Khi bạn đã xác định được địa chỉ cơ sở của thiết bị ngoại vi GPIO nhất định và hiểu các chức năng của các thanh ghi khác nhau để định cấu hình các chân, bây giờ chúng ta có thể tiếp tục và hiểu cách truy cập và lập trình các thanh ghi này. Xin lưu ý rằng mỗi port sẽ có một tập hợp tất cả 9 thanh ghi mà chúng ta đã thảo luận ở trên.

 

Giả sử bạn muốn lập trình thanh ghi chế độ của GPIOA. Một cách để lập trình các thanh ghi này là tìm ra địa chỉ chính xác của thanh ghi chế độ GPIOA và lấy một con trỏ đến địa chỉ thực đó, tham khảo con trỏ này, chỉnh sửa các giá trị và ghi lại vào vị trí này bằng cách sử dụng cùng một con trỏ. Đây là một cách tiếp cận dài dòng vì bạn cần tìm ra địa chỉ thực của mọi thanh ghi để đọc / ghi từ đó.

 

Cách tiếp cận khác đơn giản hơn là trừu tượng hóa ánh xạ ngoại vi cụ thể. Điều này được thực hiện bằng cách xác định một số bộ xử lý cho mỗi thiết bị ngoại vi. Một trình xử lý là một cấu trúc C, có các tham chiếu được sử dụng để trỏ đến các địa chỉ ngoại vi thực.

Đoạn mã trên là cấu trúc C và mỗi trường rộng 32 bit tương ứng với các thanh ghi mà chúng ta đã thấy ở trên. Nếu chúng ta trỏ cấu trúc GPIO_TypeDef đến địa chỉ cơ sở của thiết bị ngoại vi GPIOA, và vì mỗi trường này rộng 32 bit, mỗi trường có thể trỏ đến địa chỉ thanh ghi tương ứng trong bộ nhớ.

 

Do đó, bằng cách viết như thế này GPIOA ((GPIO_TypeDef *) GPIOA_BASE) trong đó GPIOA_BASE tương ứng với địa chỉ GPIOA thực là 0x40020000, mỗi trường bên trong cấu trúc này trỏ đến địa chỉ thanh ghi tương ứng thực tế trong bộ nhớ. Do đó, bằng cách viết GPIOA-> MODER, chúng ta có thể truy cập nội dung của thanh ghi chế độ của thiết bị ngoại vi GPIOA.

 

Trạng thái của GPIO ngay sau khi khởi động lại nguồn là gì?

 

Trong và ngay sau khi thiết lập lại bật nguồn, hầu hết các chân GPIO I / O (Đầu vào / Đầu ra) được cấu hình ở chế độ nổi đầu vào. Tuy nhiên, các chân gpio dành riêng cho mạch debug, tức là các chân debug được định cấu hình ở chế độ chức năng thay thế. Sau mỗi lần thiết lập lại thiết bị, các chân JTAG / SWD (mạch debug) này được chỉ định làm các chân chuyên dụng có thể sử dụng ngay lập tức bởi máy chủ debug. Điều này có ý nghĩa vì bạn muốn mạch debug hoạt động trong và ngay sau khi reset.

Tổng hợp các gói cước 4G 2023 của VinaPhone được nhiều người đăng ký nhất

Tổng hợp các gói cước 4G 2023 của VinaPhone được nhiều người đăng ký nhất

Trả lời

 

Được triển khai tại Việt Nam từ năm 2015, đến nay, công nghệ 4G đã ngày càng trở nên phổ biến hơn bao giờ hết. Hãy cùng tổng hợp tất tần tật các gói cước 4G 2023 đến từ nhà mạng VinaPhone, để xem bạn có những sự lựa chọn thích hợp nào nhé!

Trải nghiệm giải trí cực đỉnh khi đăng ký gói cước 4G VinaPhone

  1. Danh sách các gói cước chu k ngày được yêu thích nht

Nhóm các gói cước chu kỳ ngày ra đời đáp ứng nhu cầu sử dụng mạng đột xuất, hoặc người không thường xuyên truy cập Internet 4G. Với các gói cước này, bạn dễ dàng đăng ký chỉ trong vài giây, nhận ưu đãi nhanh chóng, giá cước tương đối rẻ và sử dụng trong 24 giờ.

Dưới đây là một số gói cước 4G ngày phổ biến nhất năm 2023 đến từ VinaPhone:

Tên gói Cú pháp đăng ký Giá cước (đồng) Thời hạn sử dụng Ưu đãi
VD2 MI_VD2 P0309950 gửi 900 2.000 Đến 24h ngày đăng ký – 500MB dung lượng data

– 20 phút gọi nội mạng

D3K MI_D3K P0309950  gửi 9114 3.000 1 ngày 250MB dung lượng data.
D5K MI_D5K P0309950  gửi 9114 5.000 1 ngày 500MB dung lượng data.
D7 MI_D7 P0309950  gửi 9114 7.000 1 ngày 1,2GB dung lượng data
D2 MI_D2 P0309950  gửi 9114 10.000 1 ngày 2GB dung lượng data
D15 MI_D15 P0309950  gửi 9114 15.000 1 ngày 5GB dung lượng data
D3 MI_D3 P0309950  gửi 9114 15.000 3 ngày Data 3GB/3 ngày
  1. Gói cước 4G chu k tun tin dng, hp dn

Nếu bạn tìm kiếm những gói cước ngắn ngày, phục vụ cho việc đi công tác, du lịch trong khoảng một tuần, các gói cước dưới đây sẽ là lựa chọn không thể nào phù hợp hơn. Bạn sẽ đăng ký duy nhất một lần để được nhận ưu đãi data cả tuần và không cần gia hạn nhiều lần.

Hai gói cước DT20 và DT30 hiện đang là 2 gói tuần được yêu thích nhất từ người dùng VinaPhone.

Tên gói Cú pháp đăng ký Giá cước (đồng) Điều kiện đăng ký Ưu đãi
DT20 MI_DT20 P0309950  gửi 9114 20.000 Thuê bao trả trước nằm trong danh sách khuyến mãi Data 1GB/7 ngày.
DT30 MI_DT30 P0309950  gửi 9114 30.000 Mọi thuê bao VinaPhone trả trước, trả sau và ezCom. Data 7GB/7 ngày.
  1. Các gói 4G chu k tháng ph biến nht năm 2023 ca VinaPhone

Nếu bạn có nhu cầu dùng mạng thường xuyên, ổn định trong suốt cả tháng thì các gói cước chu kỳ tháng chính là sự lựa chọn cực kỳ tiết kiệm dành cho bạn. Không chỉ sở hữu ưu đãi khủng, các gói cước này còn có giá cực tốt, phù hợp với từng đối tượng hoặc khu vực riêng biệt. Với dung lượng data giới hạn mỗi ngày lên đến 6GB, bạn hoàn toàn có thể dùng mạng cho mọi mục đích sử dụng của mình.

Dưới đây là danh sách 13+ gói cước 4G VinaPhone được dùng nhiều nhất năm 2023:

Tên gói Cú pháp đăng ký Giá cước (đồng) Điều kiện đăng ký Ưu đãi
MAX MI_MAX P0309950  gửi 9114 70.000 Mọi thuê bao trả trước, trả sau và ezCom. – Data 9GB/tháng, hết tốc độ cao truy cập miễn phí ở tốc độ thường.

– Ưu đãi data xem truyền hình trên di động qua MyTV OTT.

MAX100 MI_ MAX100 P0309950  gửi 9114 100.000 Mọi thuê bao trả trước và trả sau – Data 30GB/tháng, hết tốc độ cao truy cập miễn phí ở tốc độ thường.

– Miễn phí data xem truyền hình trên di động qua MyTV OTT.

MAX200 MI_ MAX200 P0309950  gửi 9114 200.000 Mọi thuê bao trả trước và trả sau – Data 60GB/tháng, hết tốc độ cao truy cập miễn phí ở tốc độ thường.

– Miễn phí data xem truyền hình trên di động qua MyTV OTT.

MAX300 MI_ MAX300 P0309950  gửi 9114 300.000 Mọi thuê bao trả trước và trả sau – Data 100GB/tháng, hết tốc độ cao truy cập miễn phí ở tốc độ thường.

– Miễn phí data xem truyền hình trên di động qua MyTV OTT.

BIG70 MI_ BIG70 P0309950  gửi 9114 70.000 Mọi thuê bao trả trước, trả sau và ezCom. – Data 500MB/ngày (15GB/tháng), hết dung lượng ngừng truy cập Internet.

– Miễn phí data xem truyền hình trên di động qua MyTV OTT.

BIG90 MI_ BIG90 P0309950  gửi 9114 90.000 Mọi thuê bao trả trước, trả sau và ezCom. – Data 1GB/ngày (30GB/tháng), hết dung lượng ngừng truy cập Internet.

– Miễn phí data xem truyền hình trên di động qua MyTV OTT.

BIG120 MI_ BIG120 P0309950  gửi 9114 120.000 Mọi thuê bao trả trước và trả sau. – Data 2GB/ngày (60GB/tháng), hết dung lượng ngừng truy cập internet.

– Miễn phí data xem truyền hình trên di động qua MyTV OTT.

BIG200 MI_ BIG200 P0309950  gửi 9114 200.000 Mọi thuê bao trả trước và trả sau. – Data 4GB/ngày (120GB/tháng), hết dung lượng ngừng truy cập internet.

– Miễn phí data xem truyền hình trên di động qua MyTV OTT.

BIG300 MI_ BIG300 P0309950  gửi 9114 300.000 Mọi thuê bao trả trước và trả sau. – Data 6GB/ngày (180GB/tháng), hết dung lượng ngừng truy cập internet.

– Miễn phí data xem truyền hình trên di động qua MyTV OTT.

D15G MI_D15G P0309950  gửi 9114 70.000 Áp dụng cho thuê bao có trong danh sách khuyến mãi. Data 500MB/ngày (15GB/tháng), hết dung lượng ngừng truy cập Internet.
D30G MI_D30G P0309950  gửi 9114 90.000 Áp dụng cho thuê bao có trong danh sách khuyến mãi. Data 1GB/ngày (30GB/tháng), hết dung lượng ngừng truy cập Internet.
  1. Nhóm gói cước chu k dài 6 tháng, 12 tháng cho mi thuê bao

Những thuê bao muốn sử dụng mạng 4G lâu dài và ổn định có thể cân nhắc lựa chọn các gói cước chu kỳ 6 tháng, 12 tháng. Với gói 6 tháng, bạn sẽ tiết kiệm 1 tháng giá cước so với đăng ký gia hạn từng tháng thông thường. Với gói 12 tháng, bạn sẽ được ưu đãi 2 tháng giá cước. Đây là mức chi phí vừa tiết kiệm, vừa giúp bạn không phải lo hết data đột xuất hay tài khoản không đủ số dư để tiếp tục gia hạn mỗi tháng.

Tên gói Cú pháp đăng ký Giá cước (đồng) Thời hạn sử dụng Ưu đãi
MAX_6M MI_MAX_6M P0309950  gửi 9114 350.000 180 ngày – Data 9GB/tháng trong 6 tháng, hết tốc độ cao truy cập miễn phí ở tốc độ thường.

– Ưu đãi data xem truyền hình trên di động qua MyTV OTT.

MAX100_6M MI_MAX100_6M P0309950  gửi 9114 500.000 180 ngày – Data 30GB/tháng trong 6 tháng, hết tốc độ cao truy cập miễn phí ở tốc độ thường.

– Miễn phí data xem truyền hình trên di động qua MyTV OTT.

MAX200_6M MI_MAX200_6M P0309950  gửi 9114 1.000.000 180 ngày – Data 60GB/tháng trong 6 tháng, hết tốc độ cao truy cập miễn phí ở tốc độ thường.

– Miễn phí data xem truyền hình trên di động qua MyTV OTT.

MAX300_6M MI_MAX300_6M P0309950  gửi 9114 1.500.000 180 ngày – Data 100GB/tháng trong 6 tháng, hết tốc độ cao truy cập miễn phí ở tốc độ thường.

– Miễn phí data xem truyền hình trên di động qua MyTV OTT.

MAX_12M MI_MAX_12M P0309950  gửi 9114 700.000 360 ngày – Data 9GB/tháng (108GB/12 tháng), hết tốc độ cao truy cập miễn phí ở tốc độ thường.

– Ưu đãi data xem truyền hình trên di động qua MyTV OTT.

MAX100_12M MI_MAX100_12M P0309950  gửi 9114 1.000.000 360 ngày – Data 30GB/tháng (360GB/12 tháng), hết tốc độ cao truy cập miễn phí ở tốc độ thường.

– Miễn phí data xem truyền hình trên di động qua MyTV OTT.

MAX200_12M MI_MAX200_12M P0309950  gửi 9114 2.000.000 360 ngày – Data 60GB/tháng (720GB/12 tháng), hết tốc độ cao truy cập miễn phí ở tốc độ thường.

– Miễn phí data xem truyền hình trên di động qua MyTV OTT.

MAX300_12M MI_MAX300_12M P0309950  gửi 9114 3.000.000 360 ngày – Data 100GB/tháng(1200GB/12 tháng), hết tốc độ cao truy cập miễn phí ở tốc độ thường.

– Miễn phí data xem truyền hình trên di động qua MyTV OTT.

BIG70_6M MI_ 6BIG70 P0309950  gửi 9114 350.000 180 ngày – Data 500MB/ngày (90GB/6 tháng), hết dung lượng ngừng truy cập internet.

– Miễn phí data xem truyền hình trên di động qua MyTV OTT.

BIG90_6M MI_ 6BIG90 P0309950  gửi 9114 450.000 180 ngày – Data 1GB/ngày (180GB/6 tháng), hết dung lượng ngừng truy cập internet.

– Miễn phí data xem truyền hình trên di động qua MyTV OTT.

BIG120_6M MI_ 6BIG120 P0309950  gửi 9114 600.000 180 ngày – Data 2GB/ngày (360GB/6 tháng), hết dung lượng ngừng truy cập internet.

– Miễn phí data xem truyền hình trên di động qua MyTV OTT.

BIG200_6M MI_ 6BIG200 P0309950  gửi 9114 1.000.000 180 ngày – Data 4GB/ngày (720GB/6 tháng), hết dung lượng ngừng truy cập internet.

– Miễn phí data xem truyền hình trên di động qua MyTV OTT.

BIG300_6M MI_ 6BIG300 P0309950  gửi 9114 1.500.000 180 ngày – Data 6GB/ngày (1080GB/6 tháng), hết dung lượng ngừng truy cập internet.

– Miễn phí data xem truyền hình trên di động qua MyTV OTT.

BIG70_12M MI_BIG70_12M P0309950  gửi 9114 700.000 360 ngày – Data 500MB/ngày (180GB/12 tháng), hết dung lượng ngừng truy cập Internet.

– Miễn phí data xem truyền hình trên di động qua MyTV OTT.

BIG90_12M MI_BIG90_12M P0309950  gửi 9114 900.000 360 ngày – Data 1GB/ngày (360GB/12 tháng), hết dung lượng ngừng truy cập Internet.

– Miễn phí data xem truyền hình trên di động qua MyTV OTT.

BIG120_12M MI_BIG120_12M P0309950  gửi 9114 1.200.000 360 ngày – Data 2GB/ngày (720GB/12 tháng), hết dung lượng ngừng truy cập Internet.

– Miễn phí data xem truyền hình trên di động qua MyTV OTT.

BIG200_12M MI_BIG200_12M P0309950  gửi 9114 2.000.000 360 ngày – Data 4GB/ngày (1440GB/12 tháng), hết dung lượng ngừng truy cập Internet.

– Miễn phí data xem truyền hình trên di động qua MyTV OTT.

BIG300_12M MI_BIG300_12M P0309950  gửi 9114 3.000.000 360 ngày – Data 6GB/ngày (2160GB/12 tháng), hết dung lượng ngừng truy cập Internet.

– Miễn phí data xem truyền hình trên di động qua MyTV OTT.

Để sử dụng mạng 4G Vina tốt nhất, bạn đừng quên ghi nhớ hai cú pháp quen thuộc:

  • Hủy gói cước: HUY TENGOI gửi 9114.
  • Kiểm tra dung lượng còn lại: DATA gửi 9114.

Đây là hai cú pháp tin nhắn quan trọng để bạn chủ động trong việc dùng phân chia sử dụng data Internet, cũng như tránh lãng phí số dư khi không còn nhu cầu sử dụng 4G.

Trên đây là tổng hợp toàn bộ những gói cước 4G 2023 được yêu thích nhất từ nhà mạng VinaPhone. Nếu bạn đã có sự lựa chọn cho riêng mình, đừng ngần ngại đăng ký trải nghiệm ngay hôm nay! Nếu bạn vẫn còn những thắc mắc chưa thể giải đáp, liên lạc ngay tổng đài 1800.1091 để nhận hỗ trợ nhanh nhất, tháo gỡ mọi vướng mắc của bạn!

Nguồn: vnpt.com.vn

 

IC LM317 là gì? Sơ đồ chân, thông số kỹ thuật và những ứng dụng

Chắc hẳn, những người yêu thích linh kiện điện tử không quá xa lạ với IC LM317 sử dụng trong các mạch điều chỉnh điện áp. Và để hiểu rõ hơn về dòng IC này, dientusangtaovn sẽ cung cấp cho bạn những thông tin chi tiết về sơ đồ chân, cách sử dụng LM317. Hãy cùng tham khảo nhé.

IC LM317 là gì?

IC LM317 là gì?
IC LM317 là gì?

LM317 là một IC điều chỉnh điện áp dương được dùng rộng rãi trong ccs mạch điện tử cả ở thương mại, dân sinh đến trường học. Đây cũng là một trong dòng vi mạch nổi tiếng trong ngành điện và điện tử.

Lý do mà LM317 được sử dụng rộng rãi đó là nó chứa toàn bộ mạch cấp điện ổn áp có thể điều chỉnh đặt trong một con chip duy nhất. Bởi vậy, bạn có thể tạo ra một bộ nguồn với chi phí thấp ở mức điện áp DC từ 1.2V đến 37V, dòng đầu ra lên đến 1.5A và ít cần linh kiện bên ngoài.

LM317 còn có một số tính năng khác được tích hợp sẵn như bảo vệ ngắn mạch, quá nhiệt, khu vực an toàn nên giúp nó có khả năng năng chống chọi tốt, hoạt động ổn định và lâu dài.

Tính năng và các thông số kỹ thuật của LM317

  • IC có thể điều chỉnh điện áp từ 1.2V đến 37V
  • Dòng điện đầu ra tối đa là 1.5A
  • Điện áp đầu vào tối đa là 40V DC
  • Điện áp vào phải lớn hơn 3V so với điện áp đầu ra
  • Không yêu cầu nhiều linh kiện bên ngoài
  • Chỉ yêu cầu hai điện trở bên ngoài để điều chỉnh đầu ra.
  • Có khả năng bảo vệ ngắn mạch
  • Chức năng tắt quá nhiệt, ngắn mạch
  • Giá thấp, tiết kiệm chi phí
  • Đáng tin cậy để sử dụng trong các ứng dụng thương mại
  • Dòng điện chờ thấp
Đọc thêm:  Tìm hiểu IC TL431 là gì? Thông số, nguyên lý hoạt động và ứng dụng thực tế

Sơ đồ chân của IC LM317

Sơ đồ chân của IC LM317
Sơ đồ chân của IC LM317

Nhìn từ mặt trước thì sơ đồ chân IC LM317 theo thứ tự từ trái qua phải lần lượt là chân 1 là chân điều chỉnh Adj, chân 2 là chân đầu ra Output, chân 3  là chân đầu vào Input.

Datasheet của LM317: https://cdn.datasheetspdf.com/pdf-down/L/M/3/LM317_ONSemiconductor.pdf

Công thức tính điện áp đầu ra của mạch đó là: Vout = 1.25 x (1 + R2/R1) (V)

Sơ đồ mạch bên trong của LM317:

Trong đó, diode Zener dùng làm điện áp tham chiếu 1.25V chính là điện áp nhỏ nhất trong dải điện áp điều chỉnh khi ta nối chân Adj với chân Vout, muốn thay đổi điện áp đầu ra thì ta mắc thêm các trở ngoài như hình bên trên.

Mạch ứng dụng của IC LM317

Mạch ứng dụng trong hình ở trên có thể được sử dụng để tạo nguồn cấp với LM317. Điện áp vào tối đa có thể đặt vào mạch đó là 40VDC với cường độ 2 đến 3A. Lưu ý, điện áp đầu vào không bắt buộc ở 40V mà bạn có thể thay đổi trong dải điện áp từ 3 – 40V tùy theo yêu cầu sử dụng thực tế.

Đầu ra có thể điều chỉnh từ 1.2V đến 37VDC với dòng điện đầu ra có cường tối đa là 1.5A. Điện áp đầu ra có thể được điều chỉnh khi thay đổi giá trị của biến trở 5K. Bạn có thể áp dụng công thức tính điện áp đầu ra Vout = 1.25 x (1 + R2/R1) để có được sự điều chỉnh phù hợp nhất.

Ví dụ: Nguồn điện có thể điều chỉnh 1,2V đến 12V thì hãy cấp cao hơn 3V so với điện áp đầu ra tối đa của mạch điện. Khi đó, với yêu cầu nguồn từ 1,2V đến 12V thì điện áp đầu vào không được thấp hơn 12V + 3V = 15V.

Đọc thêm:  Atmega8 là gì? Sơ đồ chân, ứng dụng và cách sử dụng

Những ứng dụng của LM317

Những ứng dụng của LM317
Những ứng dụng của LM317

Hiện nay, IC LM317 được ứng dụng khá rộng rãi trong các mạch điện tử, đặc biệt là bộ điều khiển điện áp. Một số ứng dụng nổi bật sử dụng LM317 đó là:

  • Mạch giảm điện áp
  • Các loại dụng cụ cầm tay
  • Nguồn điện phòng thí nghiệm
  • Nguồn cung cấp năng lượng mặt trời
  • Các ứng dụng liên quan đến vi điều khiển
  • Bộ chuyển đổi DC sang DC
  • Bộ sạc pin thiết bị di động

Những IC thay thế cho LM317

Bạn có thể lựa chọn một số loại IC sau để thay thế cho LM317 trong mạch điện: LM117, LM217, LM338, LT1117-ADJ, LM1086-ADJ, LT1086-ADJ, B29150, LM1084-ADJ.

Hướng dẫn sử dụng LM317 an toàn và lâu dài

Để có được hiệu suất ổn định và lâu dài từ LM317 thì bạn cần phải tuân thủ các tiêu chuẩn kỹ thuật của IC này.

  • Không cung cấp điện áp đầu vào quá 40V DC,
  • Không tải quá 1,5A
  • Luôn sử dụng bộ tản nhiệt phù hợp với IC
  • Luôn để LM317 hoạt động ở nhiệt độ trên -55 độ C và dưới +150 độ C.
  • Bảo quản IC ở nhiệt độ từ -65 độ C đến +150 độ C.

Trên đây là những thông tin chi tiết về sơ đồ chân, tính năng, thông số kỹ thuật và ứng dụng của IC LM317. Mong rằng những thông tin trong bài viết sẽ giúp bạn có được nhiều kiến thức bổ ích.

Bài viết được copy từ ;https://dientusangtaovn.com/ic-lm317/