Tải bản đầy đủ (.docx) (44 trang)

Thiết kế mạch đo điện áp và tần số của tín hiệu xoay chiều

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.74 MB, 44 trang )

MỤC LỤC
DANH MỤC HÌNH VÀ BẢNG
LỜI NÓI ĐẦU
Với sự phát triển không ngừng của khoa học công nghệ, cuộc sống con người ngày
càng trở nê tiện nghi và hiện đại hơn. Điều đó đem lại cho chúng ta nhiều giải pháp tốt
hơn, đa dạng hơn trong việc xử lý những vấn đề tưởng chừng như rất phức tạp gặp
phải trong cuộc sống. Việc ứng dụng các thành tựu khoa học kyc thuật hiện đại trong
tất cả các lĩnh vực đã và đang rất phổ biến trong toàn thế giới, thay thế dần những
phương thức thủ công, lạc hậu và ngày càng được cải tiến hiện đại hơn, hoàn mỹ hơn.
Cùng với sự phát triển chung đó, nước ta cũng đang mạnh mẽ tiến hành công cuộc
công nghiệp hóa hiện đại hóa đất nước để theo kịp sự phát triển của các nước trong
khu vực và trên thế giới. Trong đó có lĩnh vực điện tử đang ngày càng đóng vai trò
quan trọng trong việc phát triển kinh kế và đời sống con người. Sự phổ biến của nó
đóng góp không nhỏ tới sự phát triển của tất cả các ngành sản xuất, giải trí,…trong
những năm gần đây đặc biệt trong lĩnh vực cần đến độ chính xác cao trong thiết kế và
sản xuất, các dụng cụ hỗ trợ đo hiện đại sẽ đem lại rất nhiều lợi ích cho các ngành
1
công nghiệp như: tiết kiệm chi phí, thời gian, cháy nổ, an toàn,…nó đã có sự phát
triển mạnh mẽ với nhiều hình thức, phương pháp tiếp cận, chia sẻ thông tin hiện đại
và toàn diện hơn.
Nhóm em thực hiện đề tàido Thầy TS. Nguyễn Xuân Quyềngiao:“ Thiết Kế Mạch
Đo Điện Áp và Tần Số Của Tín Hiệu Xoay Chiều ” làm đề tài đồ án thiết kế II.
Trong thời gian thực hiện đề tài cộng với kiến thức còn nhiều hạn chế, nên trong
đồ án này không tránh khỏi những sai sót, nhóm thực hiện rất mong được sự đóng góp
ý kiến của thầy cô và các bạn sinh viên.
Nhóm sinh viên thực hiện đề tài.
LỜI CẢM ƠN
Trong suốt khóa học tại “ Đại Học Bách Khoa Hà Nội ”, với sự giúp đỡ của quý thầy
cô và giáo viên hướng dẫn về mọi mặt từ nhiều phía và nhất là trong thời gian thực
hiện đề tài , nên đề tài đã được hoàn thành đúng thời gian qui định. Nhóm thực hiện
xin chân thành cảm ơn đến:


Quý thầy cô trong viện Điện tử - Viễn thông đã giảng dạy những kiến thức chuyên
môn làm cơ sở để thực hiện tốt đồ án môn học và đã tạo điều kiện thuận lợi cho chúng
em hoàn tất đồ án môn học này.
Đặc biệt, Thầy TS. Nguyễn Xuân Quyền, giáo viên hướng dẫn đề tài đã nhiệt tình
giúp đỡ và cho nhóm thực hiện những lời chỉ dạy quý báu, giúp nhóm thực hiện định
hướng tốt trong khi thực hiện đề tài.
Hà Nội Ngày Tháng 12 Năm 2013
Nhóm sinh viên thực hiện.
2
NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN





3
CHƯƠNG I: TÌM HIỂU ĐỀ TÀI
I, GIỚI THIỆU ĐỀ TÀI :
Với quy mô là đồ án môn học, nên nhóm em đã cố gắng làm những gì giảng viên
yêu cầu, nhưng do kiến thức còn hạn chế nên chúng em thực hiện được những yêu
cầu:
1, Hiển thị kết quả đo trên LCD 2x16.
2, Khoảng điện áp : 0 – 1000 mV, 1 – 50 V.
3, Khoảng tần số : 0- 1 MHz.
4, Truyền lên máy tính.
II, MỤC ĐÍCH NGHIÊN CỨU :
Mục đích trước hết khi thực hiện đề tài này là để hoàn tất chương trình môn học
để đủ điều kiện hoàn thành yêu cầu của môn học. Cụ thể khi nghiên cứu đề tài là
4
chúng em muốn phát huy những thành quả ứng dụng của vi điều khiển vào mạch thực

tế. Nó còn là kinh nghiệm cho chúng em tiến đến đồ án tốt nghiệp sắp tới.
Ngoài ra quá trình thực hiện đề tài là một cơ hội để chúng em tự kiểm tra lại kiến
những kiến thức đã học ở trường. Đồng thời phát huy tính sáng tạo, khả năng giải
những vấn đề do nhu cầu đặt ra.
III, ĐỐI TƯỢNG NGHIÊN CỨU :
1, Các phương án điều khiển và xử lý dữ liệu.
2, Tìm hiểu về kit MSP 430, ic msp430g2553.
3, Tìm hiểu về LCD và UART.
4, Tìm hiểu IC ổn áp 7812, 7912.
5, Tìm hiểu IC dán AMS117 – 3.3V, AMS117 – 5V.
6, Tìm hiểm IC khuếch đại thuật toán TL 072.
5
CHƯƠNG II:
GIỚI THIỆU VỀ CÁC LINH KIỆN
2.1, Giới Thiệu Về Kit MSP430G2553 :
2.1.1, Tổng Quan MSP430G2553 :

Vi điều khiển là đơn vị xử lý nhỏ, nó được tích hợp toàn bộ các bộ nhớ như ROM ,
RAM , các port truy xuất , giao tiếp ngoại vi trực tiếp trên 1 con chip hết sức nhỏ gọn.
Được thiết kế dựa trên cấu trúc VON-NEUMAN , đặc điểm của cấu trúc này là chỉ có
duy nhất 1 bus giữa CPU và bộ nhớ (data và chương trình) , do đó mà chúng phải có
độ rộng bit tương tự nhau. Dưới đây là những đặc điểm tổng quát của họ vi điều khiển
MSP430:
+ Cấu trúc sử dụng nguồn thấp giúp kéo dài tuổi thọ của Pin
-Duy trì 0.1µA dòng nuôi RAM.
-Chỉ 0.8µA real-time clock.
-250 µA/ MIPS.
+ Bộ tương tự hiệu suất cao cho các phép đo chính xác
-12 bit hoặc 10 bit ADC-200 kskp, cảm biến nhiệt độ, Vref ,
-12 bit DAC.

6
-Bộ giám sát điện áp nguồn.
+ 16 bit RISC CPU cho phép được nhiều ứng dụng, thể hiện một phần ở kích thước
Code lập trình.
-Thanh ghi lớn nên loại trừ được trường hợp tắt nghẽn tập tin khi đang làm việc.
-Thiết kế nhỏ gọn làm giảm lượng tiêu thụ điện và giảm giá thành.
-Tối ưu hóa cho những chương trình ngôn ngữ bậc cao như C, C++
-Có 7 chế độ định địa chỉ.
-Khả năng ngắt theo véc tơ lớn.
+ Trong lập trình cho bộ nhớ Flash cho phép thay đổi Code một cách linh hoạt, phạm
vi rộng, bộ nhớ Flash còn có thể lưu lại như nhật ký của dữ liệu.
2.1.2, Phần Cứng MSP430G2553 :
2.1.2.a.Sơ đồ chân :
Chip MSP430 có kích thước nhỏ gọn , chỉ với 20 chân đối với kiểu chân DIP.
Bao gồm 2 port I/O (hay GPIO general purprose input/ output : cổng nhập xuất
chung).
Hình 1: Sơ đồ chân
Ta thấy rằng mỗi port đều có 8 chân.
Port 1 : có 8 chân từ P1.0 đến P1.7 tương ứng với các chân từ 2-7 và 14 , 15.
Port 2 : cũng gồm có 8 chân P2.0 – P2.7 ứng với các chân 8 – 13 , 18,19.
7
8
Bảng 1: Chức năng chân MSP430G2553
Trên bảng là chức năng của từng chân , ngoài ra đối với các MCU có kiểu chânSMD
loại 28 chân thì nó có thêm port 3 nữa,nhưng ở đây chỉ xét đối với kiểu DIP 20 chân
và kiểu TSSOP 20 chân , kiểu còn lại các bạn có thể tìm hiểu trên trang chủ của nhà
sản xuất .
9
2.1.2.b, Giải thích sơ lược các chân :
- Chân số 1 là chân cấp nguồn Vcc( ký hiệu trên chip là DVcc ) , ở đây nguồn cho

chip chỉ được cấp ở mức 3,3V , nếu cấp nguốn cao quá mức này thì chip có thể hoạt
động sai hay cháy chip .
-Chân 20 là chân nối cực âm (0V) , chân này thì không có gì đặc biệt.
-Chân reset : Chính là chân số 16 RST , nếu các bạn đã từng học về PIC thì sẽ thấy
chân reset có ký hiệu là MCLR , các bạn để ý thấy dấu gạch ngang trên có nghĩa là
chân này tích cực ở mức thấp . Mục đích của việc reset là nhằm cho chương trình
chạy lại từ đầu .
- Port I/O :
Port 1 : có 8 chân từ P1.0 đến P1.7 tương ứng với các chân từ 2-7 và 14 , 15.
Port 2 : cũng gồm có 8 chân P2.0 – P2.7 ứng với các chân 8 – 13 , 18,19.
Trong chế độ nhập (input) thì cả 2 port đều có 1 mạch điều khiển điện trở kéo dương
– gọi là PULL UP nhưng giá trị của điện trở này rất lớn khoảng 47K nên gọi là
WEAK PULL UP RESISTAN. Việc điều khiển PULL UP sẽ được tiến hành thông
qua lập trình tác động lên thanh ghi PxREN sẽ được đề cập ở chương sau .
Điều này cũng giống như việc thiết lập input ở port B của vi điều khiển PIC, ở port B
cũng có điện trở kéo lên , và người lập trình phải thao tác qua thanh ghi
OPTION_REG.
2.1.3, Mạch Nạp Cho MCU :

Msp430 là dòng value line , power low, và low – cost . Chính vì vậy mà TI đã cung
cấp cho người dùng 1 mạch nạp code + debug chỉ trên 1 mạch nhỏ gọn
Đây chính là hình ảnh của Kit lanchpad :
10

11
Hình 2: Giới thiệu MSP430
-Kit có thể nạp được code cho dòng Msp430G : như msp430g2231, 2553, 2452,…
-Kit kết nối với máy tính thông qua cổng USB .
2.1.4, Trình Biên Dịch :
2.1.4.a, IAR (IAR Embedded Workbench ) :

Để tải chương trình , chúng ta có thể vào trang chủ : www.iar.com hoặc từ địa
chỉ của TI : www.ti.com , sau đó gõ từ IAR trên mục tìm kiếm ,để download
được thì các bạn phải tạo 1 tài khoản và đăng nhập để tải về .
2.1.4.b, CCS (Code composer studio )
2.1.5, Basic Clocks :.
Chế độ clock được cung cấp trong tất cả các dòng MCUs Msp430 của TI .Trong
chương này sẽ giúp các bạn hiểu rõ về hoạt động các xung clocks cơ bản của
msp430.
12
2.1.5.a, Giới thiệu về clock :
Với dòng msp430 này thì nó 3 loại xung cơ bản như sau :
- Internal Oscillators
- External Crystals
- External Oscillators
Internal/External Oscillators :
+ Internal :
Đây là nguồn dao động có sẵn bên trong chip , thông thường sử dụng các mạch
RC được tích hợp sẵn với các hệ mạch .
- Lợi ích của nguồn này đó là việc chúng ta có thể dễ dàng thay đổi được tần số
hoạt động mà không cần phải sử dụng các linh kiện ngoại – làm chiếm diện tích
board .
- Trên chip Msp430 đã có sẵn nguồn xung DCO (Digitally Controller Oscillator)
hỗ trợ tốc độ cao .
+ External :
Khác với những dòng vi điều khiển khác thì dòng Msp430 chỉ có thể hỗ trợ
thạch anh có tần số lên đến 32.768khz ,việc sử dụng thạch anh ngoại nhằm đáp
ứng nhu cầu về ứng dụng cần chạy thời gian thực và cần sự chính xác cao .
2.1.5.b, Mode trong xung nội :

Trong nguồn xung nội thì chúng ta có tối đa là 4 mode chế độ hoạt động , các mode

này lần lượt là :
LFXT1CLK : Low-frequency/high-frequency oscillator
Module dao động hỗ trợ tần số thấp / cao , có thể được dung cho ứng dụng với bộ theo
dõi tần số thấp thạch anh 32.768khz , hoặc từ các nguồn xung khác có tần số từ
400khz đến 16Mhz .
XT2CLK: Optional high-frequency oscillator .
Module lựa chọn làm việc ở tần số cao .
13
DCOCLK: Internal digitally controlled oscillator (DCO).
Bộ dao động số được tích hợp sẵn trong chip, khi làm việc nếu không có thiết lập gì
về nguồn xung thì msp430 sẽ hoạt động dưa trên bộ DCO này .
VLOCLK: Internal very low power, low frequency oscillator with 12-kHz typical
frequency
Module tích hợp , đây là mode hoạt động siêu tiết kiệm năng lượng .
Sơ đồ khối clocks :
Hình 3: Sơ đồ khối clock
2.1.6, Module ADC :
2.1.6.a, Giới thiệu Module ADC 10 bit :
Bộ chuyển đổi ADC10 (dựa trên các điện áp V+ và V- làm hệ quy chiếu) sẽ
chuyển từ tín hiệu analog thành tín hiệu digital với bộ phân giải 10 bit và lưu kết
quả vào thanh ghi ADC10MEM.
14
Nếu điện áp đọc vào lớn hơn V+ thì kết quả sẽ là 0x3ff và nếu bé hơn V- thì kếtquả sẽ
là 0.
Bộ điều khiển ADC được cài đặt bởi 2 thanh ghi là ADC10CTL0 và ADC10CTL1chỉ
có thể được chỉnh sửa khi bit ENC=0 và sau khi chỉnh sửa xong thì bạn cần setbit
ENC=1 để ADC làm việc.
2.1.6.b, Thanh ghi ADC10CTL0 :
Hình 4: Thanh ghi ADC10TL0
Nếu bạn chọn điện áp quy chiếu nội:

+ Chọn nguồn điện áp so sánh bằng cách set bit REFON (REFON mất 30us để
chuyển trạng thái).Khi REFON = 0 thì tức là bạn chọn nguồn nội AVCC =3.5V,khi
REFON =1 thì:
*Khi REF2_5V = 1,điện áp quy chiếu nội là 2.5V,ngược lại (bằng 0)
điện áp quy chiếu nội là 1.5V.
Nếu bạn chọn điện áp quy chiếu ngoại:
Khi đó bit REFOUT =1 thì chúng ta phải gắn điện áp quy chiếu ngoại vào 2 chân
Vref+ và chân Vref- của chip,lần lượt ở P1.3 và P1.4.
-ADC10ON : bật tắt bộ ADC10.
-ADC10IE : cho phép ngắt trong ADC10,cờ ngắt ADC10IFG sẽ được set mỗi khi
chuyển đổi xong,để dùng được ngắt này thì bit cho phép ngắt ADC và ngắt toàn
cục phải được set trước đó (GIE = 1),cờ ngắt sẽ được tự reset mỗi khi vào chương
trình ngắt.
-ENC (Enable conversion ) và ADC10SC (Start conversion) sẽ được set khi chúng
15
bắt đầu chuyển đổi.
Bit MSC : lựa chọn khởi động bằng tay sau mỗi lần chuyển đổi hoặc tự động
chuyển đổi liên tục ADC (Chỉ dùng trong mode 1,2,3 của ADC).
2.1.6.c, Thanh ghi ADC10CTL1 :
Hình 5: ADC10CTL1, ADC10 Control Register 1
16
17
Có 4 mode chuyển đổi ADC bằng cách chỉnh sửa bit CONSEQx:
+MODE 00: mẫu sẽ được chuyển đổi 1 lần, kết quả lưu trong thanh ghi
ADC10MEM,chuyển đổi được kích hoạt dựa vào bit ADC10SC và ENC phải được
set lại sau mỗi lần chuyển đổi.
+MODE 01: chuyển đổi lần lượt nhiều tín hiệu ADC từ chân Ax (config bit trong
INCHx) đến chân A0 kết quả sẽ lưu lần lượt vào ADC10MEM.
+MODE 10: chuyển đổi liên tục tín hiệu ADC từ 1 chân cố định kết quả sẽ lưu lần
lượt vào ADC10MEM.

+MODE 11: chuyển đổi liên tục nhiều tín hiệu ADC từ chân Ax (config bit trong
INCHx) đến chân A0 kết quả sẽ lưu lần lượt vào ADC10MEM.
=>Để mang lại hiệu năng cao nhất với cácSC = 1 ( multiple sample and convert ).
Bên cạnh việc set bit INCHx chọn chân mang chức năng ADC, các bạn phải enable
chức năng ADC cho chúng qua thanh ghi ADC10AE.
2.1.7. Timer0 Module
Các module Timer0 kết hợp các tính năng sau :
+ Phần mềm hoạt động như là một lựa chọn bộ đếm thời gian hoặc truy cập vào cả 2
bit – 8 hoặc chế độ 16- bit.
+ Có thể đọc và ghi thanh ghi.
+ Chuyên dụng 8-bit, phần mềm lập trình precaler.
+ Đồng hồ lựa chọn mã nguồn ( bên trong hoặc bên ngoài ).
18
+ Edge cọn cho đồng hồ bên ngoài.
+ Ngắt –on- tràn.
2.1.7.a, Hoạt Động Của Timer 0 :
Timer 0 có thể hoạt động như là một bộ định thời hoặc ngược lại, lựa chọn với các
bit T0CS (T0CON <5>). Trong chế độ hẹn giờ (T0CS=0). Các gia số module trên mỗi
đồng hồ theo mặc định. Nếu ghi TMR0 được ghi vào, độ tăng được kìm hãm đối với
hai chu trình lệnh sau. Người dùng có thể làm việc này bằng cách viết một gía trị điều
chỉnh cho ghi TMR0.
Chế độ truy cập đang chọn bằng cách thiết lập bit T0CS(=1). Trong chế độ này , số
ra Timer0 hoặc teeen tất cả các gọc lên và xuống của RA4/T0CKI pin. Cạnh độ ăng
được xác định bởi các Timer Source Edge Select, T0SE (T0CON<4>); xóa bit này lựa
chọn các góc lên. Các hạn chế trên đầu vào đồng hồ bên ngoài được tính sau.
Một nguồn clock bên ngoài có thể được sử dụng để cung cấp cho Timer0, tuy nhiên,
nó phải đáp ứng các yêu cầu nhất định để đảm bảo rằng đồng hồ từ bên ngoài có thể
được đồng bộ hóa với pha bên trong đồng hồ (TOSC). Một trễ pha giữa đồng bộ và
bắt đầu tăng dần của bộ hẹn giờ/ truy cập.
2.1.7.b, Các Timer0 Đọc và Ghi Trong 16-Bit Mode :

TMR0H không phải là byte cao thật sự của Timer0 ở chế độ 16-bit, nó thực tế là
một phiên bản có bộ đếm của byte cao của Timer0 mà không trực tiếp có thể đọc được
và cũng không thể xin lệnh. TMR0H được updeted với các nội dung của byte cao của
Timer0 trong một đọc của TMR0L. Điều này cung cấp khả năng đọc tất cả 16 bit của
Timer0 mà không cần phải xác minh rằng đọc của byte cao và thấp là có giá trị, do
Rollover giữa kế tiếp lần đọc của byte cao và thấp.
Tương tự, một ghi cho các byte cao của Timer0 cũng phải được thực hiện thông
qua việc ghi TMR0H bộ nhớ đệm. Các byte cao được cập nhật với các nội dung của
TMR0H khi ghi ra TMR0L. Điều này cho phép tất cả 16 bit của Timer0 để được cập
nhật cùng một lúc.
19
Hình 6: Timer0 đọc và ghi trong 16 bit mode
2.1.7.c, Ngắt Timer0 :
Việc ngắt TMR0 được tạo ra khi ghi TMR0 tràn từ FFh đến 00h trong 8-bit hoặc từ
FFFFh đến 0000h ở chế độ 16-bit. Tràn này thiết lập bit cờ TMR0IF. Việc ngắt có thể
được ẩn bằng cách xóa bít TMR0IE ( INTCON<5). Trước khi cho phép tái ngắt, các
bit TMR0IF phải được xóa trong phần mềm của những lần định kỳ ngắt.
Kể từ khi Timer0 bị dừng lại mode Sleep “quá trình nghỉ”, các TMR0 ngắt không
thể hoạt động bộ vi xử lý từ quá trình nghỉ.
Bảng 2: Ngắt Timer0
2.2, Giới Thiệu Về Các Linh Kiện Khác :
2.2.1, Liquid crystal display ( LCD ) :
2.1.1.a, Sơ đồ nguyên lý :
20

Hình 7: LCD 16x4
2.2.1.b, Nguyên tắc hiển thị ký tự trên LCD :
Một chương trình hiển thị ký tự trên LCD sẽ đi theo bốn bước sau :
1, Xóa toàn bộ màn hình.
2, Đặt chế độ hiển thị.

3, Đặt vị trí con trỏ ( nơi bắt đầu của ký tự hiển thị ).
4, Hiển thị ký tự.
Chú ý:
+ các bước 3, 4 có thể lặp lại nhiều lần nếu cần hiển thị nhiều ký tự.
+ Mỗi khi thực hiện ghi lệnh hoặc ghi dữ liệu hiển thị lên LCD cần phải kiểm tra cờ
bận trước. Vì vậy, cần phải chủ động phân phối thời gian khi ra lệnh cho LCD ( ví
dụ sau khi xóa màn hình sau khoảng 2ms mới ra lệnh khác vì thời gian để LCD xóa
màn hình là 1,64ms ).
+ Chế độ mặc định sẽ là hiển thị dịch, vị trí con trỏ mặc định sẽ đầu dòng thứ nhất.
2.2.2, Giới Thiệu Về Các IC Sử Dụng
2.2.2.a, IC Ổn Áp 7812 và 7912 :
Hình 8: Hình ảnh IC 7812 và 7912
Đó là loại IC của họ 78 và 79 với các nguồn ổn áp đầu ra khác nhau.
+ Họ 78xx là họ cho ổn định điện áp đầu ra là dương. Còn xx là giá trị điện áp đầu ra
nhứ 5V, 6V
+ Họ 79xx là họ ổn định điện áp đầu ra là âm. Còn xx là giá trị điện áp đầu ra như :
-5V,-6V
Sự kết hợp của hai con này sẽ tạo ra được bộ nguồn đối xứng.
21
 IC 7812: Đây là dạng mạch nguồn ổn định điện áp đầu ra với công suất lớn.
Sử dụng IC ổn áp họ 78XX và transitor công suất.
Nhiệm vụ của 7812 trong mạch dùng để ổn định giá trị điện áp đầu ra là 12V cố
định. Với dòng đầu ra của 7812 là 1A.
 IC 7912: Cũng như họ 78 thì họ 79 có hoạt động tương tự những điện áp đầu
ra là âm (-) trái ngược với họ 78.
2.2.2.b, IC Ổn Áp dán AMS 117 – 3.3V và AMS 117 – 5V
+ IC AMS 117 – 3.3 V cấp nguồn cho IC MSP G2553 với điện áp đầu ra 3.3 V .
+ IC AMS 117 – 5V cấp nguồn cho LCD.
2.2.2.c, IC khuếch đại thuật toán TL 072
Hình 9: IC khuếch đại thuật toán TL 072

+ Làm việc ở chế độ so sánh mức 0 không đảo.
22
CHƯƠNG III : THIẾT KẾ VÀ THI CÔNG MẠCH
3.1, Thi Công
3.1.1, Mạch Nguồn :
Hình 10: Khối mạch nguồn
+ Nguồn cung cấp cho tất cả các khối là 12V DC.
+ Điện áp xoay chiều khi qua cầu diode sẽ được nắn tương đối phẳng.
+ Tụ C5 có nhiệm vụ làm phẳng điện áp.
3.1.2, Khối Xử Lý nguồn để cấp cho IC và LCD :

Hình 11: Khối Xử Lý Nguồn
23
Hình 12: Khối xử lý

Hình 13: Khối hiển thị
3.2, Code Chương Trình Hiển Thị Điện Áp và Tần Số lên LCD
 LCD.h
#define delay_us(x) __delay_cycles(x*2ul)
#define delay_ms(x) __delay_cycles(x*1100ul)
typedef unsigned char uchar;
union reg
{ unsigned char _byte; //khai bao 1byte
struct bit
24
{ //dinh nghia bit trong byte vua khai bao
unsigned char b0:1; //bit 0 trong byte
unsigned char b1:1; //bit 1 trong byte
unsigned char b2:1; //bit 2 trong byte
unsigned char b3:1; //bit 3 trong byte

unsigned char b4:1; //bit 4 trong byte
unsigned char b5:1; //bit 5 trong byte
unsigned char b6:1; //bit 6 trong byte
unsigned char b7:1; //bit 7 trong byte
} _bit;
};
union reg* P2_dir=(union reg*)0x2a; //khai bao dia chi o nho
union reg* P2_out=(union reg*)0x29;
union reg* P2_sel=(union reg*)0x2e;
union reg* P2_in=(union reg*)0x28;
union reg* P1_sel=(union reg*)0x26;
union reg* P1_dir=(union reg*)0x22; //khai bao dia chi o nho
union reg* P1_out=(union reg*)0x21;
union reg* P1_in=(union reg*)0x20;
/********************** I/O LCD ******************************/
#define LCD_RS P2_out->_bit.b5
#define LCD_EN P2_out->_bit.b4
25

×