... Giao tiếp máy tính RS232
Việc giao tiếp giữa Vi điều khiển và máy tính là bài lập trình khá quan trọng khi ta làm
việc với các dòng Vi điều khiển khác nhau. Với Vi điều khiển PIC cũng vậy, trong mỗi IC
PIC đều có tích hợp một khối giao tiếp máy tính USART. Ta sử dụng khối giao tiếp này để
truyền dữ liệu lên máy tính và xử lý dữ liệu đó tùy vào mục đích của người lập trình. Để
nhận dữ liệu do Vi điều khiển truyền lên máy tính ta có thể sử dụng các phần mềm giao
tiếp COM có sẵn hay viết một chương trình m
ới, sử dụng các ngôn ngữ lập trình như C++,
VB hay Delphi… Trong chương trình ví dụ dưới đây tôi sử dụng công cụ sẵn có của CCS là
Serial Port Monitor để truyền và nhận dữ liệu từ PIC.
Sơ đồ mạch điện ORCAD. Mạch sử dụng IC MAX232 để kết nối đến cổng COM của
máy tính. Mạch đơn giản chỉ nhằm mục đích giới thiệu khối giao tiếp máy tính của PIC và
cách lập trình cho nó trong CCS.
RWD6
D4
RX _PIC
C9
1uF
C10
1uF
LCD - 16x2 - DM1602A
LCD_ 1602A
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
VSS
VCC
VEE
RS
R/W
E
D0
D1
D2
D3
D4
D5
D6
D7
A
K
D5
HI
33pF
D7
VCC
RX_PC
RX _PIC
RS
U14
MAX232
1
3
4
5
2
6
12
9
11
10
13
8
14
7
C1+
C1-
C2+
C2-
V+
V-
R1OUT
R2OUT
T1IN
T2IN
R1IN
R2IN
T1OUT
T2OUT
10K
D6
VCC
TX _PIC
20MHz
RW
33pF
E
C8
1uF
RS
HI
D5
C7
1uF
D4
D7
TX_PC
TX _PIC
11
12
21
22
23
24
25
26
27
28
14
13
16
17
40
39
38
37
36
35
34
33
4
5
6
7
8
9
10
29
18
19
20
1
2
3
15
30
32
31
VDD
VSS
RD2/PSP2
RD3/PSP3
RC4/SDI/SDA
RC5/SDO
RC6/TX/CK
RC7/RX/DT
RD4/PSP4
RD5/PSP5
OSC2/CLKO
OSC1/CLKI
RC1/CCP2
RC2/CCP1
RB7/PGD
RB6/PGC
RB5
RB4
RB3/PGM
RB2
RB1
RB0/INT
RA2/AN2
RA3/AN3
RA4
RA5/AN4
RE0/AN5
RE1/AN6
RE2/AN7
RD6/PSP6
RC3/SCK/SCL
RD0/PSP0
RD1/PSP1
VPP
RA0/AN0
RA1/AN1
RC0/T1CKI
RD7/PSP7
VDD1
VSS1
E
HI
Hình 3.5. Mạch giao tiếp máy tính, hiển thị LCD
Người báo cáo:
Nguyễn Chí Linh
Tài liệu:
TUT01.01.PVN
Ngày:
9/8/2006
Trang:
2/32
...
value=(value‐558.5)/2.048;
if (do_F==1) value=1.8*value+32;
convert_bcd((int8)value);
printf(ʺ\n\rNhiet do phong: %uʺ,value);// Gui gia tri len may tinh
LCD_ putcmd(0xC0);
printf (LCD_ putchar,ʺ Temp = ʺ);
LCD_ putchar(high); LCD_ putchar(low);
if (do_F==0) printf (LCD_ putchar,ʺ Cʺ);
else printf (LCD_ putchar,ʺ Fʺ);
i=0;
}
i++;
if(((int8)value > 40) || ((int8)value < 15))
on_off=1;
else
{
on_off = 0;
LCD_ Putcmd(0xCF);
LCD_ putchar(ʺ ʺ);
blink=0;
}
if (on_off==1)
{
if (blink==0) {
LCD_ Putcmd(0xCF) ;LCD_ putchar(ʺ!ʺ);blink=1;delay_ms(250);}
else {LCD_ Putcmd(0xCF) ;LCD_ putchar(ʺ ʺ);blink=0;delay_ms(250);}
}
}
}//end main‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
#INT_EXT
void test()
{
if (do_F == 1) do_F=0;
else do_F=1;
}
void convert_bcd(int8 x)
{
low=x%10; //chia lay phan du, so hang don vi
Người báo cáo:
Nguyễn Chí Linh
Tài liệu:
TUT01.01.PVN
Ngày:
9/8/2006
Trang:
14/32
...
high=x/10; //tach hang tram va hang chuc
low = low + 0x30;
high = high + 0x30;
}
void bao_dong(){
int8 i;
if (blink == 0) blink = 1;
else blink=0;
for(i=0;i<50;i++)
{
LCD_ Putcmd(0xCF);
if (blink==0) LCD_ putchar(ʺ!ʺ);
else LCD_ putchar(ʺ ʺ);
}
}
Dưới đây là một sơ đồ dùng PIC và LM335 để đo nhiệt độ, hiển thị trên LCD và trên
LED 7. Trong chương trình bạn thấy có hàm chuyển đổi nhiệt độ từ ía trị độ K về độ C.
Nguyên nhân có hàm đó là do con LM335 thay đổi 10mV/K, ta cần hiển thị là độ C. Nhận
thấy 0
o
C = 273K, như vậy tại 0
o
C con LM335 sẽ xuất ra một điện áp là 2.73V và với điện áp
này, ADC trong PIC sẽ cho giá trị số là
558.558
5
1023*73.2
=
. Như vậy khi tính toán giá trị
nhiệt độ ta cần trừ đi giá trị 558.558 này. Công thức đầy đủ là:
048.2
558.558_
_
−
=
valueadc
CDo
Giá trị 2.048 có là do ta dùng ADC 10‐bit, điện áp lấy mẫu là 5V, như vậy mỗi mức
lượng tử sẽ tương ứng với
mV
V
883.4
1024
5
=
. LM335 thay dổi 10mV/K do đó ứng với sụ thay
đổi 1 độ C sẽ thay đổi 2.048 mức lượng tử (10mV/4.883mV = 2.048). Công thức trên là cho
ADC 10‐bit, với các bộ ADC 8‐bit hay 12‐bit việc tính toán chuyển đổi giá trị cũng tương tự.
Người báo cáo:
Nguyễn Chí Linh
Tài liệu:
TUT01.01.PVN
Ngày:
9/8/2006
Trang:
18/32
...
... file
CSS bên ngoài liên kết vào trang web, CSS nhúng trong thẻ <style> và các CSS
nội tuyến. Sau đó, trình duyệt sẽ tổng hợp toàn bộ CSS này vào một CSS ảo, và
nếu có các thuộc tính CSS ... bạn sẽ ưu tiên cho các CSS nội tuyến > CSS bên trong > CSS
bên ngoài > CSS mặc định của trình duyệt.
Ví dụ:
Trong một trang web có liên kết tới file style .css có nội dung như sau: ... 18
Simple CSS Standard Edition WallPearl
2.4. Sự ưu tiên:
Trước khi thực thi CSS cho một trang web. Trình duyệt sẽ đọc toàn bộ CSS
mà trang web có thể được áp dụng, bao gồm: CSS mặc định...
... trỏ của bạn vào CSS chỉ cần dùng dòng sau
CURSOR: url(tencontro.ani);
Tiếp theo sau chúng ta tìm hiểu về scroll bar trong CSS
ví dụ đoạn code sau:
<STYLE TYPE="text /css& quot;> BODY ... Font: #000000
Thuộc tính CSS đặc biệt
white-space: nowrap;
cursor: pointer;
Liên kết CSS bình thường
Màu nền: #FFFFFF
Màu Font: #22229C
Text decoration: None
Liên kết CSS đã vào:
Màu nền: #FFFFFF
Màu ... #003366
Thuộc tính CSS đặc biệt:
padding: 3px 6px 3px 6px;
white-space: nowrap;
Liên kết CSS bình thường
Màu nền: #FFFFFF
Màu Font: #003366
Text decoration: None
Liên kết CSS đã vào:
Màu nền:...
...
La chn PIC:
- Mi hc: PIC1 6F628A hoc PIC1 6F88
- Hc tng hp: PIC1 6F877A
- Lm ti: PIC1 6F876A
- Cn mnh hn: PIC1 8F458
Cỏc loi trờn u cú th dựng PG2C v IC-PROG 1.05D
- iu khin ng c: PIC1 8F4331, ... núi PIC1 6F628A tng thớch PIC1 6F84A v
PIC1 6F88 tng thớch vi hai loi cũn li. Cú ngha l trong cỏc ng dng ca PIC1 6F84A, khi thay
i bng PIC1 6F88, hay PIC1 6F628A u c.
Tt nhiờn, 3 loi vi dũng PIC ... h tr giao tip USB l dũng PIC1 8F2550 v PIC1 8F4550
- Dũng PIC iu khin ng c mnh nht l dũng PIC1 8F4x31
- Khi cho rng mỡnh chuyờn nghip hn, cỏc bn nờn dựng PIC1 8F458
- dsPIC chỳng tụi khuyờn khụng...
... MPASM, CCS C và HT PIC để
hướng dẫn các bạn. Vì vậy, chúng tôi tạm thời gác lại các ngôn ngữ khác là C17, C18
(dùng cho PIC1 8F), C30 (dùng cho dsPIC), cũng như một số ngôn ngữ PICBasic,
hoặc ... Tương thích PICStart
Plus
Nạp nhanh, giá cao hơn MCP
PIC1 6Pro40 LPT WinPICProg Mạch nạp điển hình của Nigel
Goodwin, được dùng để giảng dạy ở
nhiều trường đại học trên thế giới
ProPIC2 COM ICPROG, ... có là 2 con PIC1 6F628A và 16F877A. Các bạn có thể tìm thấy
các con PIC này ở các chợ điện tử như Hàng Trống – Hà Nội hoặc Nhật Tảo – TPHCM.
Tuy nhiên, các bạn vẫn có thể mua được PIC thông qua...
...
Chương 2: Vi điều khiển PIC
Giới thiệu chung
Trong chương này chúng ta sẽ đi tìm hiểu về Vi điều khiển PIC, mà cụ thể là dòng Vi
điều khiển PIC1 8F4331. Tại sao lại chọn PIC1 8F4331, điều này ... ra khi
bắt đầu học PIC thì bạn có thể chọn bất cứ con PIC nào để tìm hiểu, bởi hầu hết các
dòng PIC đều có cấu trúc phần cứng về cơ bản là giống nhau, và tùy từng dòng PIC mà
sẽ có những tính ... trình ứng dụng. Sau đó sẽ tìm hiều về những tính năng
riêng của PIC1 8F4331 và PIC1 8F4550
- Kiến trúc RISC của vi điều khiển PIC
PIC được tổ chức phần cứng theo kiến trúc Harvard, và tập lệnh...
... nhớ của PIC (các BANK)
- Khái niệm Stack
1) Giới thiệu về kỹ thuật bảng
Để hiểu về kỹ thuật bảng, trước tiên chúng ta xem ví dụ sau:
Giả
sử chúng ta cần xuất dữ liệu ra màn hình LCD với ...
Giả
sử chúng ta cần xuất dữ liệu ra màn hình LCD với dãy chữ : PIC_ Tutorial”. Ở
đây, chúng ta không cần quan tâm đến hoạt động của LCD và hình thức xuất dữ liệu
như thế nào. Chỉ cần các bạn nắm ... phần kiến trúc
Harvard và kiến trúc Von Neumann. Tuy nhiên, chúng ta sẽ nhắc lại rằng, đối với PIC
dòng Mid Range, bộ nhớ chương trình có 14 bit cho mỗi lệnh, vì vậy, cho dù các bạn
thực hiện...