Ngày nay kĩ thuật vi điều khiển đã trở nên quen thuộc trong ngành kỹ thuật và cả trong các ứng dụng đời thường. Hầu hết các dây truyền tự động lớn và các sản phẩn dân dụng ta đều thấy sự suất hiện của vi điều khiển. Vi điểu khiển được nhà sản xuất tích hợp rất nhiều các nhiều tính năng với các bộ ngoại vi được tích hợp ngay trên vi điều khiển, cùng với khả năng xử lý nhiều hoạt động phức tạp, tất cả được tích hợp trên một con chip nhỏ gọn, chính vì vậy sẽ gặp nhiều thuận lợi hơn trong thiết kế board, khi đó board mạch sẽ nhỏ gọn và đẹp hơn dễ thiết kế hơn rất nhiều. Về mặt tính năng và công năng thì có thề xem PIC vượt trội hơn rất nhiều so với 89 với nhiều module được tích hợp sẵn như ADC10 BIT, PWM 10 BIT, PROM 256 BYTE, COMPARATER, VERF COMPARATER, một đặc điểm nữa là tất cả các con PIC sử dụng thì đều có chuẩn PI tức chuẩn công nghiệp thay vì chuẩn PC (chuẩn dân dụng). Ngoài ra PIC còn được rất nhiều nhà sản xuất phần mềm tạo ra các ngôn ngữ hỗ trợ cho việc lập trình ngoài ngôn ngữ Asembly ra còn có thể sử dụng ngôn ngữ C thì sử dụng CCSC, HTPIC hay sử dụng Basic thì có MirkoBasic và còn nhiều chương trình khác nữa để hỗ trợ cho việc lập trình bên cạnh ngôn ngữ kinh điển là asmbler. Cùng với sự phát triển của vi điều khiển là sự phát triển mạnh mẽ của các dịch vụ điện thoại chính vì vậy nên việc quản lý các cuộc điện thoại trở nên cấp thiết. Từ yêu cầu trên và những kiến thức em đã được học trên trường em đã được chọn đề tài quản lý số điện thoại gọi đi với mục tiêu đặt ra: sử dụng PIC 16F887A và đồng hồ thời gian thực để xác định thời gian gọi, ghép nối với LCD để hiển thông tin về cuộc gọi .
Giới hạn đề tài : việc thiết kế các ứng dụng của PIC với đường dây điện thoại rất phong phú và phức tạp, do vậy trong luận văn này em tập trung giải quyết các vấn đề chính:
Thiết kế phần cứng mạch quản lý cuộc gọi đi
Hiển thị thông tin cuộc gọi trên màn hình LCD
68 trang |
Chia sẻ: oanhnt | Lượt xem: 1949 | Lượt tải: 3
Bạn đang xem trước 20 trang tài liệu Đề tài Thiết kế các ứng dụng của PIC với đường dây điện thoại, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
TÓM TẮT NỘI DUNG
Sử dụng vi điều khiển PIC 16F877A để thiết kế một mạch quản lý cuộc gọi đi. Việc thiết kế cần phải có kiến thức cơ sở về điện thoại và mã DTMF. Vì vậy trong chương 1 của luận văn em trình bày cơ sở lý thuyết về điện thoại và mã DTMF. Tiếp theo là vi điều khiển PIC 16F877A được em lựa chọn và lí do em lựa trọn được em trình bày ở chương 3, đặc điểm kỹ thuật được trình bày ở phần phụ lục. Phần thực nghiệm bao gồm các công việc: thiết kế mạch phần cứng của mạch quản lý cuộc gọi đi bằng phần mềm Altium Designer 6.7.9346, lập trình các khối cho bản mạch.
Trong luận văn này tập trung vào các vấn đề sau:
Thiết kế phần cứng của mạch quản lý số điện thoại gọi đi
Hiển thị thông tin cuộc gọi lên LCD
BẢNG CHỮ CÁI VIẾT TẮT
DTMF : dual-tone multiFequency
I2C : Inter-intergrated Circuit
ICSP : In-Circuit Serial Programming
MCLR : Master Clear
PIC : Peripheral Interface Controller
: Programmable Intelligent Computer
LCD : Liquid crytal Display
SPI : Serial Pripheral Interface
LỜI CẢM ƠN
Lời đầu tiên trong khoá luận em xin bày tỏ lòng biết ơn tới toàn thể các thầy cô, cán bộ trong khoa Điện tử - Viễn thông trường Đại học Công nghệ - Đại học Quốc Gia Hà Nội, đặc biệt là các thầy cô trong bộ môn điện tử đã nhiệt tình chỉ dạy dỗ em trong suốt bốn năm học vừa qua.
Em xin chân thành cảm ơn thầy giáo PGS.TS Ngô Diên Tập đã hướng dẫn, quan tâm, chỉ bảo tận tình để em hoàn thành khoá luận tốt nghiệp này.
Cảm ơn gia đình, bạn bè đã động viên, khích lệ, giúp đỡ về mọi mặt trong quá trình em làm luận văn tốt nghiệp.
Hà Nội: ngày 07 tháng 5 năm 2008
Sinh viên thực hiện
Vũ Tiến Chương
LỜI NÓI ĐẦU
Ngày nay kĩ thuật vi điều khiển đã trở nên quen thuộc trong ngành kỹ thuật và cả trong các ứng dụng đời thường. Hầu hết các dây truyền tự động lớn và các sản phẩn dân dụng ta đều thấy sự suất hiện của vi điều khiển. Vi điểu khiển được nhà sản xuất tích hợp rất nhiều các nhiều tính năng với các bộ ngoại vi được tích hợp ngay trên vi điều khiển, cùng với khả năng xử lý nhiều hoạt động phức tạp, tất cả được tích hợp trên một con chip nhỏ gọn, chính vì vậy sẽ gặp nhiều thuận lợi hơn trong thiết kế board, khi đó board mạch sẽ nhỏ gọn và đẹp hơn dễ thiết kế hơn rất nhiều. Về mặt tính năng và công năng thì có thề xem PIC vượt trội hơn rất nhiều so với 89 với nhiều module được tích hợp sẵn như ADC10 BIT, PWM 10 BIT, PROM 256 BYTE, COMPARATER, VERF COMPARATER, một đặc điểm nữa là tất cả các con PIC sử dụng thì đều có chuẩn PI tức chuẩn công nghiệp thay vì chuẩn PC (chuẩn dân dụng). Ngoài ra PIC còn được rất nhiều nhà sản xuất phần mềm tạo ra các ngôn ngữ hỗ trợ cho việc lập trình ngoài ngôn ngữ Asembly ra còn có thể sử dụng ngôn ngữ C thì sử dụng CCSC, HTPIC hay sử dụng Basic thì có MirkoBasic… và còn nhiều chương trình khác nữa để hỗ trợ cho việc lập trình bên cạnh ngôn ngữ kinh điển là asmbler. Cùng với sự phát triển của vi điều khiển là sự phát triển mạnh mẽ của các dịch vụ điện thoại chính vì vậy nên việc quản lý các cuộc điện thoại trở nên cấp thiết. Từ yêu cầu trên và những kiến thức em đã được học trên trường em đã được chọn đề tài quản lý số điện thoại gọi đi với mục tiêu đặt ra: sử dụng PIC 16F887A và đồng hồ thời gian thực để xác định thời gian gọi, ghép nối với LCD để hiển thông tin về cuộc gọi .
Giới hạn đề tài : việc thiết kế các ứng dụng của PIC với đường dây điện thoại rất phong phú và phức tạp, do vậy trong luận văn này em tập trung giải quyết các vấn đề chính:
Thiết kế phần cứng mạch quản lý cuộc gọi đi
Hiển thị thông tin cuộc gọi trên màn hình LCD
PHẦN 1: LÝ THUYẾT
CHƯƠNG 1
Ý TƯỞNG VÀ CƠ SỞ LÝ THUYẾT
1.1 Ý tưởng
Nhiều khi em mở hoá đơn điện thoại ra và nghĩ rằng: “Mình không thể gọi nhiều như thế được”. Hầu hết các hoá đơn điện thoại ghi lại các cuộc gọi đường dài và đưa ra chi tiết các số đã gọi. Nhưng các cuộc gọi địa phương (như kiểu nội hạt) chỉ được cộng tổng lại vì vậy sẽ không thể biết được chi tiết về các cuộc gọi đi. Chính vì vậy mà em thiết kế mạnh điện này để lưu lại chi tiết cuộc gọi mà mình đã gọi đi (số điện thoại và thời gian gọi). Với mạch điện này thì tất cả những cuộc gọi đi được ghi lại và vì vậy em có thể biết đựơc chi phí cước gọi hàng tháng.
Mạch điện ghi lại thời gian bắt đầu và kết thúc của tất cả các cuộc gọi đi cùng với các số đã gọi. Nó hoạt động một cách độc lập với PC. Dữ liệu cuộc gọi điện thoại là đầu ra trong một fomat mà có thể dễ dàng nhập vào Microsoft Excel. Các chức năng đa dạng của Excel sau đó có thể được dùng để phân tích và phân loại dữ liệu và tạo ra các bản in từ máy tính đã được định dạnh. Dữ liệu được lưu trữ trong bộ nhớ EEPROM, do đó sẽ không mất dữ liệu trong các trường hợp bị mất điện. Mạch điện được cung cấp với bộ nhớ 256K.
1.2 Cơ sở lý thuyết
1.2.1 Cấu tạo cơ bản và nguyên lý hoạt động của điện thoại
Một chiếc máy điện thoại cơ bản là gồm ba phần chính sau:
Phần chuyển đổi mạch điện: Phần này gồm hệ thống lá mạ tiếp điểm và có nhiệm vụ đóng mở mạch điện khi có yêu cầu.
Phần thu và phát tín hiệu gọi: Phần này gồm hai phần chính là máy điện quay tay có nhiệm vụ phát tín hiệu gọi lên đường chuyền và phần chuông máy có nhiệm vụ biến dòng tín hiệu gọi thành tín hiệu gọi.
Phần thu phát thoại: Gồm có loa và mic. Loa có nhiệm vụ biến đổi tín hiệu âm thanh thành tín hiệu điện và mic thì có nhiệm vụ ngược lại biến tín hiệu điện thành tín hiệu âm thanh.
Nút gạt tổ hợp
Thiết bị gửi số
Triệu tiếng lickic
Bù trừ chiều dài đường dây
Chuông
Ống nói
Cuộn cảm ứng
Ống nghe
Mạch cân bằng
Hình 1.1: Sơ đồ khối của điện thoại
Nguyên lý hoạt động:
Khi ta thực hiện cuộc gọi dao động âm thanh của tiếng nói sẽ tác động vào màng rung của mic làm suất hiện dòng điện biến đổi tương ứng trong mạch. Dòng điện biến đổi này được truyền trên đường dây điện thoại và được chuyển mạch đến máy điện thoại được gọi, làm cho màng rung của loa dao động, lớp không khí trước màng sẽ dao động theo phát ra âm thanh tác động đến tai người nghe và quá trình chuyền dẫn ngược lại cũng tương tự.
1.3 phân loại các kiểu điện thoại
1.3.1 Phân loại theo phương thức tiếp dây
+Máy điện thoại nhân công: các loại máy liên lạc với nhau qua tổng đài nhân công gồm hai loại
Máy điện thoại từ thạch: Nguồn cung cấp để đàm thoại và gọi chuông đều được trang bị tại từng máy lẻ, nguồn đàm thoại thường dùng pin, nguồn gọi chuông là máy phát điện magneto.
Máy điện thoại công điện: Nguồn cung cấp để đàm thoại và để gọi chuông được đặt tại tổng đài, sử dụng nguồn một chiều 48V.
+Máy điện thoại tự động
Liên lạc với nhau qua tổng đài tự động bằng cách quay số hay bằng ấn phím.
Nguồn cung cấp điện để đàm thoại là nguồn một chiều 48V hoặc 60V, nguồn để gọi chuông từ 90 – 100 V, tần số 16 – 25 Hz.
1.4 Sơ lược về tín hiệu DTMF
1.4.1 Định nghĩa
DTMF(dual tone multi-frequency): là tín hiệu gồm có hai tần số xếp trồng lên nhau. Mỗi tần số được lựa chọn sao cho có lợi cho việc thiết kế bộ lọc và dễ dàng truyền đi trên đường dây điện thoại có băng thông khoảng chừng 3,5KHz. DTMF phát ra là 1 tín hiệu âm thanh ghép của 2 tín hiệu trong dải tần số từ 697Hz đến 1633Hz
Phiên bản của DTMF sử dụng cho tín hiệu điện thoại được biết đến như hãng Touch-Tone, và được tiêu chuẩn hoá bởi ITU-T là Q.23. Tín hiệu DTMF có thể được phát hoặc thu bằng một IC chuyên dụng (VD: MTD887X)
Hệ thống DTMF đang phát triển và trở thành phổ biến trong hệ thống điện thoại hiện nay. Hệ thống này được hình thành vào năm 1960 nhưng mãi đến năm 1970 mới được phát triển rộng rãi.
1.4.2 KEYPAD
Trong DTMF mỗi chữ số chọn lựa có tín hiệu dưới dạng tổ hợp của hai tần số xoay chiều :
Hình 1.2: Dạng tín hiệu DTMF
Khi một nút được bấm, hai tần số mô tả chữ số được phát ra và được gửi một cách đồng thời. Đặc biệt là hai âm thanh này không cùng âm, tức là tần số của âm thanh này không có cùng ước số chung với âm thanh kia, điều này để tránh sự nhầm lẫn vô tình với âm hiệu nói, sự phân tánh rõ ràng giữa hai loại này là rất cần thiết. Ví dụ như hai tần số 750 và 500 là hai tần số không thể kết hợp thành tín hiệu DTMF vì có cùng ước số chung là 250, hai tần số này là hai thanh cùng âm.
Keypad chuẩn là một ma trận chữ nhật gồm ba cột và bốn hàng (3x4) tạo nên tổng cộng là 12 phím nhấn: trong đó có 10 phím cho chữ số (từ 0 đến 9), hai phím đặc biệt là ‘*’ và ‘#’. Mỗi hàng trên bàn phím bấm được gán cho một tần số tín hiệu thấp, mỗi cột được gán cho tần số tín hiệu cao. Mỗi một phím sẽ có một tín hiệu DTMF riêng được tổng hợp bởi hai tần số tương ứng với hàng và cột mà phín đó đang đứng . Những tần số này đã được lựa chọn cẩn thận sao cho có lợi cho việc thiết kế bộ lọc và dễ dàng truyền đi trên đường dây điện thoại.
Hình 1.3: Bàn phím chuẩn 12 nút
Ngày nay người ta còn cho thêm một vài phím để tạo nên bảng mã được nằm trong một ma trận (4x4) với mỗi hàng miêu tả bằng một tần số thấp và mỗi cột miêu tả bằng một tần số cao.
Hình 1.4: Bàn phín mở rộng 16 phím
-----------------------------------------------------------------------------------
PHẦN 2: THỰC NGHIỆM
CHƯƠNG 2
SƠ ĐỒ KHỐI VÀ NGUYÊN LÝ HOẠT ĐỘNG
2.1 Sơ đồ khối của mạch
PHONE
Mạch giao tiếp đường dây
Khối thu và
giải mã DTMF
Khối đồng hồ thời gian
Khối hiển thị
Khối ghép nối máy tính
EEPROM
Khối cảm biến tín hiệu nhấc điện thoại
Khối xử lý trung tâm
Hình 2.1: Sơ đồ khối của mạch.
2.2 Nguyên lý hoạt động
2.2.1 Khối xử lý trung tâm
Khối xử lý trung tâm điều khiển toàn bộ hoạt động của mạch: nhận dữ liệu giải mã DTMF từ bộ giải mã DTMF, nhận tín hiệu thời gian từ khối đồng hồ thời gian thực, ghi dữ liệu (số điện thoại, ngày giờ gọi, thời gian gọi) vào EEPROM và hiển thị tất cả thông tin lên màn hình tinh thể lỏng.
2.2.2 Khối thu và giải mã DTMF
Khối này có nhiệm vụ nhận tín hiệu DTMF từ mạch giao tiếp với đường dây điện thoại và sau đó giải mã thành mã nhi phân 4 bit đưa vào khối xử lý trung tâm.
2.2.3 Khối đồng hồ thời gian thực
Khối này cung cấp dữ liệu về: ngày, tháng, năm, giờ, phút, giây một cách chính xác cho khối điều khiển để tính thời gian gọi đến và thời gian gọi. Chính vì vậy mà nó cần phải chạy ngay cả khi mất điện nên yêu cầu có nguồn pin để nuôi trong trường hợp mất điện.
2.2.4 Khối hiển thị
Là màn hình tinh thể lỏng LCD (2 dòng, mỗi dòng 16 kí tự) để hiển thị thông tin cuộc gọi như: số điện thoại, thời gian thực hiện cuộc gọi, thời gian gọi
2.2.5 Khối EEPROM
Khối này để lưu trữ toàn bộ thông tin về cuộc gọi (số điện thoại, thời gian thực hiện cuộc gọi, thời gian gọi). Khối này có dung lượng là 256kB.
2.2.6 Khối ghép nối máy tính theo chuẩn RS-232
Khối này có nhiệm vụ giao tiếp với máy tính theo chuẩn RS-232. Khối này có nhiệm vụ chính là đọc dữ liệu cuộc gọi từ EEPROM.
2.2.7 Khối nguồn nuôi
Là khối cơ bản nhất nó cung cấp dòng nuôi cho toàn bộ linh kiện trong mạch. Nó tạo ra điện áp ổn định thoả mãn các chỉ số về điện áp và dòng .
2.2.8 Hoạt động của mạch
Mạch được ghép nối song song với đường dây điện thoại để đảm bảo cho thuê bao luôn hoạt động bình thường. mạch có chức năng hiển thị các thông tin chi tiết về cuộc gọi đi: ngày, giờ gọi, thời gian gọi, số gọi đi.
Mạch có phần phát hiện cuộc gọi, tức là nếu người dùng nhấc máy thực hiện cuộc gọi thì mạch sẽ hiển thị số gọi đi và khi kết thúc cuộc gọi sẽ hiển thị thời gian đã thực hiện cuộc gọi.
Cuối tháng người dùng có thể lấy thông tin chi tiết từ tất cả các cuộc gọi đi trong tháng bằng cách kết nối mạch với máy tính từ cổng COM.
-----------------------------------------------------------
CHƯƠNG 3
THIẾT KẾ MẠCH ĐIỆN VÀ THỰC NGHIỆM
3.1 Thiết kế mạch nguyên lý
3.1.1 Khối xử lý trung tâm
Khối xử lý trung tâm là vi điều khiển PIC16F877A, là IC có 40 chân, với 5 cổng vào ra là Port A(RA0÷RA5), Port B(RB0÷RB7), Port C(RC0÷RC7), Port D(RD0÷RD7), Port E(RE0÷RE2). Nó có 8k Flash ROM và 368 Byte RAM. Sơ đồ chi tiết là:
Hình 3.1: Sơ đồ nguyên lý của PIC16F877A trong mạch
Chân RESET là chân số 1 của PIC (chân MCLR) PIC sẽ reset khi chân này ở mức thấp. Bộ dao động thạch anh (20MHz) được nối với chân 13 và 14 của vi điều khiển, bộ dao động có thêm tụ C12 và C14 để tăng sự ổn định cho nguồn xung nhịp của hệ thống. PIC được cấp nguồn qua hai cặp chân VSS và VDD. Hai cặp chân VSS là chân 12 và 31 nối đất còn hai cặp chân VDD là chân 11 và 32 nối lên nguồn +5V do bộ nguồn nuôi cung cấp.
Các cổng của PortB (từ RB0 đến RB7, RB3 không dùng) nối đến LCD. Các cổng của PortD (từ RD0 đến RD3) là lối vào của tín hiệu DTMF đã được mã hoá thành mã nhị phân 4 bit. Các cổng của PortC (từ RC2 đến RC4 ) được nối đến đồng hồ thời gian thực, từ RC6 đến RC7 kết nối tới máy tính theo chuẩn RS-232.
3.1.2 Khối thu và giải mã DTMF
Giải mã DTMF được thực hiện bằng vi mạch chuyên dụng IC MT8870 nhờ thế mà việc giải mã trở nên đơn giản hơn. Sơ đồ nguyên lý kết nối của IC MT8870 trong mạch được trình bày như hình dưới:
Hình 3.2: Sơ đồ nguyên lý kết nối trong mạch của IC MT8870
IC nhận tín hiệu DTMF từ đường điện thoại qua chân 2 (IN -), sau khi thực hiện giải mã nó đưa dữ liệu qua ra 4 chân (từ chân 11 đến chân 14) dưới dạng 4 bit nhị phân. IC sử dụng dao động thạch anh 3, 579545 MHz .
MT8870 hoạt động theo nguyên lý:
Digit
TOE
INH
Est
Q4
Q3
Q2
Q1
ANY
L
X
H
Z
Z
Z
Z
1
H
X
H
0
0
0
1
2
H
X
H
0
0
1
0
3
H
X
H
0
0
1
1
4
H
X
H
0
1
0
0
5
H
X
H
0
1
0
1
6
H
X
H
0
1
1
0
7
H
X
H
0
1
1
1
8
H
X
H
1
0
0
0
9
H
X
H
1
0
0
1
0
H
X
H
1
0
1
0
*
H
X
H
1
0
1
1
#
H
X
H
1
1
0
0
A
H
L
H
1
1
0
1
B
H
L
H
1
1
1
0
C
H
L
H
1
1
1
1
D
H
L
H
0
0
0
0
A
H
H
H
undetected, the output code will remain the same as the previous detected code
B
H
H
H
C
H
H
H
D
H
H
H
3.1.3 Khối đồng hồ thời gian thực
IC DS1307 đồng hồ thời gian thực nối tiếp (DS1307) của hãng Dallas Semiconductor. Nó sử dụng một giao diện nối tiếp I2C 2 dây để giao tiếp với vi điều khiển. Nó đếm giây, phút, giờ, ngày trong tháng, tháng, ngày trong tuần và năm cho đến năm 2100. Nó có một đầu xung vuông (pin 7), đã được lập trình để đưa ra một tín hiệu một giây. Ngoài ra DS1307 chuyển mạch tự động khi phát hiện lỗi nguồn. Bộ pin lithium 3V cung cấp nguồn dự phòng trong trường hợp mất điện.
Cách nối chân trong mạch:
Vcc: nối với nguồn
X1, X2: nối với thạch anh 32, 768 kHz
Vbat: đầu vào pin 3V
GND: đất
SDA: chuỗi data
SCL: dãy xung clock
SQW/OUT: xung vuông/đầu ra driver
Sơ đồ nguyên lý kết nối trong mạch:
Hình 3.3: Sơ đồ nguyên lý kết nối trong mạch điện
3.1.4 Khối hiển thị thông tin
Sử dụng màn hình tinh thể lỏng LCD (Liquid Crytal Display) loại 2 dòng, 16 kí tự LCD1602. Màn hình LCD đã rất phổ biến trên thị trường và việc lập trình cho nó rất đơn giản thêm vào đó là nó có mặt thẩm mĩ rất cao. Sử dụng nguồn nuôi thấp (từ 2, 5 đến 5V). Có thể hoạt động ở hai chế độ 4 bit hoặc 8 bit (trong đề tài này em sử dụng chế độ 4 bit). Có thể điều chỉnh độ tương phản qua biến trở R6. Có thể ghi lên LCD và đọc dữ liệu từ LC
Sơ đồ nguyên lý kết nối của LCD1602 trong mạch điện:
Hình 3.4: Sơ đồ nguyên lý kết nối của LCD1602 trong mạch điện
LCD1602 được ghép nối với vi điều khiển thông qua PortB (RB0 đến RB7 Không sử dụng RB3). RB0 nối với chân E, RB1 nối với chân RS, RB2 nối với chân R/W là chân đọc ghi dữ liệu và chân RB4 đến RB7 là chân dữ liệu vào.
3.1.5 Khối EEPROM
Mạch điện được cung cấp với bộ nhớ 256K sử dụng IC AT24C526. Mạch điện ghi lại thời gian bắt đầu và kết thúc của tất cả các cuộc gọi đi cùng với các số đã gọi. Dữ liệu được lưu trữ trong bộ nhớ EEPROM, do đó sẽ không mất dữ liệu trong các trường hợp bị mất điện.
IC AT24C256 ghép nối với PIC qua PortC theo chuẩn I2C (RC3 và RC4). Sơ đồ ghép nối như hình dưới:
Hình 3.5: Sơ đồ nguyên lý kết nối AT24C256 trong mạch điện
3.1.6 Khối ghép nối máy tính theo chuẩn RS-232
Sơ đồ ghép nối:
Hình 3.6: Sơ đồ nguyên lý kết nối MAX232 trong mạch điện
Mạch điện được ghép nối với máy tính thông qua vi mạch MAX232 qua hai chân 25 và 26 của PIC (RC6 và RC7). Qua ghép nối này ta có thể lấy dữ liệu về thông tin cuộc gọi từ EEPROM qua máy tính.
3.1.7 Khối nguồn nuôi
Dùng IC 7805 để tạo nguồn +5V ổn định cấp toàn mạch cho mạch. Tụ C2 và C3 để lọc nhiễu, diode D3 có nhiệm vụ báo nguồn. Sơ đồ nguyên lý như hình dưới:
Hình 3.6: Sơ đồ nguyên lý nguồn nuôi của mạch
-----------------------------------------------
3.2 THỰC NGHIỆM
3.2.1 Thiết kế mạch in
Trong phần này em đã sử dụng công cụ phần mềm Altium Designer 6.7.9346 để thực hiện, nó là một phần mềm phát triển của protel. Hình dưới là bản mạch in sau khi đã vẽ hoàn chỉnh :
Hình 3.7: Bản mạch in
Bản mạch in được trình bày: các jack cắm (2 jack RJ11, 1 jack cắm nguồn, cổng kết nối với máy tính DB9), đèn báo nguồn và khối nguồn nuôi cấp nguồn +5V cho toàn mạch được sếp trên cùng để thuận tiện cho việc ghép nối. Tiếp theo đó là khối giải mã DTMF, đồng hồ thời gian thực và EEPRROM. Cuối cùng là vi điều khiển PIC16F877A, nguồn dự phòng cho đồng hồ thời gian thực trong trường hợp mất điện và jack cắm dùng để nạp vi điều khiển ngay trên mạch (ICSP)
Bản mạch sau khi đã hàn linh kiện đầy đủ:
Hình 3.8: Bản mạch khi đã hàn linh kiện
3.2.2 Lập trình
Việc lập trình cho PIC sử dụng ngôn ngữ C chuẩn, viết bằng phần mền CCS PIC C Compiler phiên bản 3.249. Phần mềm CCS hỗ trợ một thư viện với khá nhiều hàm con nên việc lập trình trở nên dễ dàng hơn. Giao diện của phần mềm khá đẹp và có thể sử dụng một cách dễ dàng. Thêm vào đó CCS cung cấp một trang web có code chuẩn để tham khảo: ccsinfo.com/forum .
Giao diện của PIC C Compiler:
Hình 3.9: Giao diện của PIC C Compiler
Giao diện phần mềm nạp cho PIC WinPic800:
Hình 3.9: Giao diện phần mềm nạp WinPic800
Em sử dụng phần mềm WinPic800 để nạp cho PIC ngay trên mạch theo chuẩn ICSP. Khi trình dịch CCS đã dịnh dữ liệu thành file *.hex, sau đó WinPic800 sẽ gửi từ máy tính tới vi điều khiển, vi điều khiển sẽ nhận dữ liệu thông qua cổng truyền thông nối tiếp và ghi lên bộ nhớ chương trình.
Lưu đồ lập trình:
Bắt đầu
Đọc thời gian
Hiển thị thời gian lên LCD
Lưu vào EEPROM
STD=1
Hiển thị số điện thoai lênLCD
Sai
Hình 3.8: Lưu đồ lập trình
3.2.3 Lý do chọn PIC 16F877A
Ngày nay vi điều khiển được sử dụng rất nhiều trong lĩnh vực điều khiển tự động mà vi điều khiển có rất nhiều loại như: dòng 89 hay AVR, PIC, PSOC…Em chọn PIC mà ko chọn AVR hay 89, bởi nếu so với 89 về mặt tính năng và công năng thì có thề xem PIC vượt trội hơn rất nhiều so với 89 với nhiều module được tích hợp sẵn như ADC10 BIT, PWM 10 BIT, PROM 256 BYTE, COMPARATER, VERF COMPARATER…Nhưng về mặt giá cả thì có đôi chút chênh lệch như giá 1 con 89S52 khoảng 20.000 thì PIC16F877A là 60.000 nhưng khi so sánh như thề thì em lại phần linh kiện cho việc thiết kế mạch nếu như dùng 89 muốn có ADC em phải mua con ADC chẳng hạn như ADC0808 hay 0809 với giá vài chục nghìn và bộ opamp thì khi sử dụng PIC nó đã tích hợp cho em sẵn các module đó, có nghĩa là em không cần mua ADC, opam, EPPROM vì PIC đã có sẵn trong nó rồi ngoài ra em sẽ gặp nhiều thuận lợi hơn trong thiết kế board, khi đó board mạch của em sẽ nhỏ gọn và đẹp hơn dễ thi công hơn rất nhiều, nên tính về giá cả tổng cộng cho đến lúc thành phẩm thì PIC có thể xem như rẻ hơn 89, một đặc điểm nữa là tất cả các con PIC sử dụng thì đều có chuẩn PI tức chuẩn công nghiệp thay vì chuẩn PC (chuẩn dân dụng) nếu mua một con 89PI thì lúc đó giá cả giữa PIC và 89PI thì đã chênh lệch rất nhiều rồi. Và gần đây Philip cũng đã ra 1 dòng 89VRD mới bổ sung thêm chức năng PWM nhưng giá cả còn rất đắt mà vẫn còn thiếu nhiều tính năng so với PIC.
Ngoài ra PIC còn được rất nhiều nhà sản xuất phần mềm tạo ra các ngôn ngữ hỗ trợ cho việc lập trình ngoài ngôn ngữ Asembly ra còn có thể sử dụng ngôn ngữ C thì sử dụng CCSC, HTPIC hay sử dụng Basic thì có MirkoBasic… và còn nhiều chương trình khác nữa để hỗ trợ cho việc lập trình bên cạnh ngôn ngữ kinh điển là asmbler. Tóm lại em chọn PIC bởi nó được phát triển lâu đời và có rất nhiều dòng sản phầm cho em lựa chọn như dòng basic PIC 12 midrange là PIC16, hi end là PIC18, gần đây là DS PIC, vói những ai quan tâm đến lập trình điều khiển từ xa thì có IF PIC… và trong mỗi dòng sản phẩm ấy lại có rất nhiều loại chip để đ