THÔNG TIN CẢM BIẾN NHIỆT DS75 VỚI TRUYỀN TẢI GIAO THỨC SMS

THÔNG TIN CẢM BIẾN NHIỆT DS75 VỚI TRUYỀN TẢI GIAO THỨC SMS


Chuẩn bị bởi: Engin Karabulut - Ngoài việc thực hiện dự án, thông tin chi tiết về pic16f876 sẽ hữu ích cho bạn.
Tóm tắt dự án : Dự án này là sự tiếp nối của dự án trước đây "Chiếu đo nhiệt độ và hiển thị trong DISPLAY với cảm biến nhiệt độ kỹ thuật số ds75 I2C". Việc thiết kế với các dự án trước đó trong SMS của dữ liệu nhiệt độ kỹ thuật số thu được (dịch vụ tin nhắn ngắn) thông qua GSM (Groupe Speciale Mobile) là được truyền đi qua mạng sağlanmıştır.proj phần phần cứng của loạt PIC16F876 với một vi điều khiển như là bậc thầy và một chiếc điện thoại Siemens S25 GSM oluşturur.softwar PDI mã hóa, mô-đun bus usart và I2C bị gián đoạn.
pic16f876a sms giao thức truyền dữ liệu
Giới thiệu: sử dụng rộng rãi SMS đang được sử dụng để truyền dữ liệu chi phí theo các cuộc gọi điện thoại ngoại trừ việc yaygınlaştırmıştır.sms tin nhắn sử dụng là thấp nó những ví dụ tốt nhất của dịch vụ servisleridir.b logo giai điệu sẽ được gửi đến logo hoặc nhạc chuông của bạn, họ giao tiếp với các tin nhắn SMS, sau đó một veridir.b theo đó người mua ngay cả khi điện thoại không có giao thức ứng dụng không dây (WAP) hoặc khả năng dịch vụ vô tuyến gói (GPRS) chung.
Đây ít được biết đến ở nước ta, dự án SMS đã sử dụng hướng truyền dữ liệu và thiết kế đã được thực hiện với một chiếc điện thoại GSM được sử dụng trong các thử nghiệm để giảm chi phí và đạt được cắt giảm đáng kể chi phí.
SMS roaming (chuyển vùng) được bao gồm trong hệ thống, vì vậy người mua so với dữ liệu mong muốn, bất kể nơi nào trên thế giới nếu GSM, TDMA, có thể được truyền nếu có trong vùng phủ sóng CDMA hoặc Globalstar, không giống như hệ thống GPRS được hỗ trợ rất hiếm ở các nước đang phát triển và chuyển vùng hỗ trợ gelişmemiştir.b phần trăm dự án SMS đã được sử dụng.

BỘ VI ĐIỀU KHIỂN PIC16F876A

vi điều khiển hệ thống được dựa, vi điều khiển, vi xử lý, RAM, ROM, I / O, từng công việc mà ADC và nhiều đơn vị làm bằng tasarlanmıştır.mikrodenetleyici bằng cách đặt một tích hợp duy nhất thực sự làm cho các bộ vi xử lý (đã bao gồm một bộ vi xử lý đơn giản của riêng mình trong vi điều khiển) nhưng đơn vị lân cận khác, trong trường hợp này Vì lý do này, 99% vi điều khiển hiện đang được sử dụng trong môi trường công nghiệp mà không đòi hỏi sức mạnh xử lý cao.
Hình 1: Một 16F876
PIC16F876 để
PIC16F876A, Microchip (TM) Technology Inc. Công ty có trụ sở tại Arizona, có thị phần đáng kể trong thị trường vi điều khiển thế giới.
Mikrodenetleyici yanında seri(I2C) E²PROM, analog devre elemanları üretmektedir.16F876A midrange serisinin en güçlü üyelerinden biridir.0-20Mhz clock frekansında çalışabilir.Z80 gibi mikroişlemcilerin aksine statik yapıdadır yani üzerinde DRAM(Dynamic Ram) bulunmaz,bu yüzden herhangi bir altsınır clock frekansı yoktur.DRAM’ler ise her 15.6µs’de bir tazelenmelidir,daha yüksek bir tazeleme periyodunda içerdiği veriler silinir,bu yüzden PIC serisi mikrodenetleyiciler SRAM(Static Ram) kullanırlar.
SRAM này là 368 byte rộng và chạy các chương trình chạy trên nó. 16F876 chương trình sahiptir.derlen 14,2 Flash ROM trong hex dạng dịch tới đây sẽ được lưu, cung cấp bộ nhớ này bị gián đoạn thậm chí không lông mao, vi điều khiển để thực hiện việc đọc và viết trong lĩnh vực này lập trình viên used.This dự án P16Pro lập trình viên 256Byt như PROM E² kullanılmıştır.so nội bộ chứa, đây lập trình viên nó có thể lưu dữ liệu mà nó không muốn bị xóa khi ngắt nguồn.
Thiết bị ngoại vi tích hợp:
3 quầy phần cứng (2 8bit, 16bit 1): Bộ đếm của giai đoạn đếm là prescene (chức năng phân vùng) với sự trợ giúp của dễ dàng điều chỉnh. Bên cạnh đó, một số quầy từ một ngắt bên ngoài (TOCK) và có thể được kích hoạt, do đó bên ngoài cho bất kỳ hiệu lực thi hành (điều này có thể là một cảm biến) có thể được tính.
MSSP (cổng nối tiếp đồng bộ master-slave): MSSP được sử dụng để gửi thông tin nối tiếp đồng bộ, tức là, trong một miền đồng hồ, cả hai định dạng I2C và SPI đều được hỗ trợ.
USART là một trong hai mô-đun I / O nối tiếp được tích hợp vào bộ vi điều khiển, USART còn được gọi là giao tiếp nối tiếp nối tiếp hoặc giao diện nối tiếp nối tiếp (SCI ). Ngoài ra, bộ chuyển đổi A / D hoặc D / A có thể được cấu hình như một nửa song công (một chiều) để giao tiếp với các thiết bị ngoại vi như EEPROM nối tiếp.
Đơn vị tương tự:
5 10bit Analogue / Digital converter. 
2 bộ so sánh phần cứng tương tự.
Flash ROM: Built-in chương trình có thể được viết vào bộ nhớ flash bị xóa 100000 lần, tôi E²PRO dữ liệu nội bộ được lưu trữ và dữ liệu chúng chứa có thể bị xóa thậm chí bằng văn bản, thông thường một triệu lần so với thực hiện năng lượng trong cả hai bộ nhớ có thể lưu trữ hơn 40 năm.
Chương trình được bảo vệ chống vi phạm bản quyền Chương trình được lưu trữ trong bộ vi điều khiển không thể đọc được nếu tính năng này được bật.
PIC16F87X loạt "Trong chương trình nối tiếp mạch" có tính năng theo đó người dùng cuối được tích hợp vào các mạch bởi các nhà thiết kế mà không cần bất kỳ loại lập trình viên MAX232 chỉ sử dụng cổng nối tiếp qua bộ chuyển đổi RS232-TTL có thể cài đặt chương trình riêng của mình, nhưng trước khi hoạt động "bootloader" này một chương trình như một vi điều khiển phải được cài đặt, với sự giúp đỡ của PIC này có thể tự chương trình.
Tất cả đều được sản xuất sử dụng PIC16F876 công nghệ CMOS có thể hoạt động giữa 2.0-5.0V Bên cạnh những ưu điểm và chỉ tiêu thụ 2μ đến loạt PIC với ưu thế kỹ thuật rộng lớn và cả hai có thể được tìm thấy rộng rãi trong thị trường hiện nay là vi điều khiển khá phổ biến
USART (đồng bộ phổ Asynchronous thu-phát): Định dạng RS232 tại 19200 baud trong dự án Siemens S25 tốc độ truyền điện thoại kurulmuşur.gsm giao tiếp với điện thoại GSM là cố định và giai đoạn thiết kế 19200baud / giây như được thực hiện trong phần cứng với USART truyền seçilmiştir.rs232.
232 là một hình thức không đồng bộ của truyền thông truyền tải không kèm theo một tín hiệu đồng hồ, nhưng trong trường hợp này tốc độ truyền của máy phát cho người nhận phải được thông báo trước và tốc độ của một chiếc đồng hồ và thông tin liên lạc đồng bộ dòng dữ liệu như değiştirilemez.ı2c sau khi xác định một lần, không có cần phải biết tốc độ gửi ở phía đối diện , máy chủ có thể thay đổi tốc độ truyền động bằng cách thay đổi tốc độ đồng hồ của máy phát. Đồng bộ hóa trong R232 được thực hiện với các bit khởi động và dừng, hệ thống này được gọi là hệ thống 8N1.
Hình 2: Dạng sóng RS232 TTL / CMOS
TTL CMOS RS232 dạng sóng
8N1 8 bit dữ liệu, 1 bit stop và tính chẵn lẻ một khởi đầu như trong belirtir.ilet Hình 2. Sử dụng các bit (0V) bit của başlar.dah sau 8bit gửi theo thứ tự, và cuối cùng dừng lại (5V) bất cứ điều gì từ việc truyền bitirilir.hat với chút không được gửi lojik1 để trống (5V) được giữ mức, nếu stop bit (5V) thay vì lojik0 (0V) lỗi xảy ra nếu cuộc gọi nhận được "lỗi khung" được gọi là RS232 dữ liệu không được truyền đi từ các đường dây truyền tải TTL cấp như trong hình 2, thể hiện trong hình 3 hệ thống được sử dụng thay .
Hình 3: Dạng sóng logic RS232
Dạng sóng logic RS232
Phạm vi từ -3V đến -25V được sử dụng làm logic1 và phạm vi từ + 3V đến + 25V được sử dụng làm logic0. Phạm vi từ -3V đến + 3V không được xác định.
Ưu điểm của việc này là rất thấp so với các hệ thống TTL sự mất mát trong dòng truyền như vậy mà TTL của một đường truyền trong khi giới hạn bởi một 3m tối đa, RS232 20m rất trơn tru kullanlabilir.proje ở mức TTL như nó chỉ là 1m đường truyền RS232 được sử dụng, do đó giao tiếp với USART cũng một là không cần sử dụng biến tần. USART, được tích hợp vào PIC16F876A, được cấu hình với 2 thanh ghi chính, đây là TXSTA và RXSTA.
TXSTA: (Đăng ký trạng thái và kiểm soát) (ĐỊA CHỈ 98h)
Trạng thái phát và kiểm soát trạng thái truyền TXSTA ĐỊA CHỈ 98h
CSRC: bit chọn nguồn đồng hồ 
cho chế độ không đồng bộ: 
không hiệu quả và 
đồng bộ chế độ: 
1 = Master mode (đồng hồ tín hiệu BRG (máy phát tốc độ truyền) để tạo nội bộ. 
= Chế độ 0 Slave (tín hiệu đồng hồ được tạo ra bởi máy phát bên ngoài)
TX9: Lựa chọn truyền 9 bit (chẵn lẻ) 
1 = chế độ truyền 9 bit (chất lượng) 
0 = chế độ truyền 8 bit (không có tính chẵn lẻ)
TXEN: bắt đầu truyền dữ liệu 
1 = bắt đầu truyền dữ liệu 
0 = dừng truyền dữ liệu
SYNC: Chế độ USART chọn bit 
1 = Chế độ đồng bộ 
0 = Chế độ không đồng bộ
BRGH: Tốc độ bit chọn tốc độ truyền tốc độ cao 
Chế độ không đồng bộ: 
1 = Tốc độ cao 
0 = Tốc độ thấp Ở 
chế độ đồng bộ: 
Không hiệu quả.
TRMT: Trạng thái đăng ký thay đổi truyền đăng ký 
1 = TSR (thanh ghi dịch chuyển số) rỗng 
0 = TSR (thanh ghi dịch chuyển) đã đầy
TX9D: Giá trị của bit chẵn lẻ được đặt ở đây.
RCSTA: (GHI DANH TÌNH TRẠNG VÀ KIỂM SOÁT KIỂM SOÁT) (ĐỊA CHỈ 18h)
RCSTA NHẬN ĐƯỢC TÌNH TRẠNG VÀ ĐỊA CHỈ ĐĂNG KÝ KIỂM SOÁT 18h
SP tại: Serial Port chuyển 
1 = serial mạch cổng (RC7 / RX / DT và RC6 / TX / CK bộ chân như cổng nối tiếp) 
0 = cổng nối tiếp vô hiệu hóa (RC7 / RX / DT và RC6 / TX / CK ghim số I / O)
Chế độ tiếp nhận RX9: 9 bit (chẵn lẻ) chế độ tiếp nhận 
1 = 9bit (chẵn lẻ) hoạt động 
0 = 8bit (không có tính chẵn lẻ) (8N1)
SREN:
Chế độ nhận đơn Bật bit Chế độ không đồng bộ: 
Không hoạt động.
CREN: Chế độ thu thập dữ liệu liên tục bật / tắt 
Chế độ không đồng bộ: 
1 = Tiếp tục liên tục hoạt động 
0 = Tiếp nhận liên tục thụ động
THÊM: Bật / tắt cảm biến địa chỉ 
Chế độ không đồng bộ 9 bit (RX9 = 1): 
1 = Cảm biến địa chỉ hoạt động 
0 = Cảm biến địa chỉ hoạt động
FERR: Lỗi khung bit 
1 = Lỗi khung hình xảy ra (có thể được cập nhật bằng cách đọc đăng ký RCREG) 
0 = Lỗi khung không xảy ra
OERR: Overrun chút Lỗi 
xảy ra 1 = Overrun lỗi (lỗi có thể được sửa chữa bằng cách chuyển các bit CREN.) 
0 = lỗi tràn đã không xảy ra
RX9D: Tiếp nhận kết thúc thứ 9 (chẵn lẻ)
USART Baud Rate Generator (BRG): BRG hỗ trợ cả chế độ không đồng bộ và đồng bộ của USART và chỉ được sử dụng như một bộ tạo tốc độ truyền 8 bit. Thanh ghi SPBRG chỉ định khoảng thời gian của bộ đếm thời gian 8 bit được sử dụng để dịch chuyển TXREG. Trong chế độ không đồng bộ, BRGH (TXSTA <2>) là hiệu ứng trên tốc độ truyền trên bit. Ở chế độ đồng bộ, bit BRGH bị tắt.
Hình 6: Bảng tính tốc độ truyền
Bảng tính tốc độ truyền
Hình 6 được nhập vào các giá trị SPBRG đăng ký tính bằng cách sử dụng tốc độ truyền của bảng göstermektedir.b bảng tính cho các chế độ USART khác nhau và trong đó tần số pha lê Fosc.
BRGH = 1 chế độ được sử dụng cho tốc độ thấp trong kullanılsa cho truyền thông tốc độ cao có thể thuận lợi bởi vì FOSC / (16 (X + 1)) tỷ lệ lỗi giữa tốc độ truyền mong muốn và tốc độ truyền được tính bằng phương trình một giá trị mới cho ít nhất một thanh ghi düşürülebilir.spbrg vào BRG reset bộ đếm thời gian và tốc độ truyền USART khởi getirir.şekil7 được đưa ra trong bảng được tính cho tỷ lệ tinh thể khác nhau.
Intco REGISTER (ĐỊA CHỈ 0BH, 8BH, 10Bh, 18Bh): Intco pıc't sổ đăng ký phần cứng ngắt để kiểm soát toàn bộ sự kết hợp có thể được đóng lại từ đó bằng cách cắt eder.donanımsal bit cần thiết.
Hình 7: Cấu trúc đăng ký Intcon
Cấu trúc đăng ký Intcon
GIE: Bật / tắt tất cả các vết cắt 
1 = Bật tất cả các vết cắt 
0 = Tắt tất cả các vết cắt
PEIE: Bật / tắt các 
thiết bị ngoại vi 1 = Bật tất cả các thiết bị ngoại vi ngắt 
0 = Vô hiệu hóa tất cả các ngắt ngoại vi
TMR0IE: Bật / tắt ngắt tràn TMR0 
1 = Tắt TMR0 cho phép ngắt 
= 0 TMR0
INTE: Bật / tắt 
ngắt ngoài RB0 / INT 1 = Ngắt bên ngoài khi hoạt động RB0 / INT 
0 = Ngắt bên ngoài khi tắt RB0 / INT
RBIE: Bật / tắt ngắt cổng RB 
1 = RB (4: 7) cổng ngắt ngắt hoạt động 
0 = RB (4: 7) ngắt cổng
TMR0IF: TMR0 tràn cờ ngắt bit 
1 = TMR0 đăng ký tràn (phần mềm thiết lập lại) 
0 = TMR0 đăng ký không tràn
INTF: RB0 / INT bit cờ ngắt ngoài 
xảy ra 1 = RB0 / INT ngắt ngoài (phải được thiết lập lại với phần mềm) 
0 = RB0 / INT ngắt bên ngoài đã không xảy ra
RBIF: RB Port (4: 7) thay đổi ngắt cờ chút 
1 = RB7: RB4 changed status của ít nhất một pin (cổng ngắt bằng cách đọc các giá trị 
của vụ án phải được thoát) 
0 = RB7: RB4 pin không thay đổi trạng thái của nó
PIE1 REGISTER (ADDRESS 8Ch): Được sử dụng để bật và tắt các thiết bị ngoại vi.
Hình 8: Thanh ghi Pie1
Đăng ký Pie1
PSPIE: Không được sử dụng cho 16F876A.
ADIE: A / D chuyển đổi cắt bit 
1 = A / D chuyển đổi cutoff hoạt động 
0 = A / D chuyển đổi cắt tắt
RCIE: USART tiếp nhận bit 
ngắt 1 = USART tiếp nhận ngắt hoạt động 
0 = ngắt tiếp nhận USART bị gián đoạn
TXIE: bit 
ngắt truyền USART 1 = USART gián đoạn truyền dẫn hoạt động 
0 = ngắt truyền dẫn USART bị vô hiệu hóa
SSPIE: Ngắt kết nối cổng nối tiếp đồng bộ (SSP) kết thúc 
1 = hoạt động ngắt SSP 
0 = Ngắt SSP bị vô hiệu hóa
Nó không được sử dụng bởi CCP1IE và TMR2IE 16F876A.
TMR1IE: tràn TMR1 (timer1) ngắt 
1 = tràn tràn TMR1 hoạt động 
0 = vô hiệu hóa tràn tràn TMR1
Đăng nhập PIR1 (ĐỊA CHỈ 0Ch): Cung cấp thông tin về việc liệu bản ghi PIR1 đã được xóa cho các thiết bị ngoại vi chưa.
Hình 9: Đăng ký PIR1
Đăng ký PIR1
PSPIF: Không được sử dụng cho 16F876A
ADIF: A / D chuyển đổi bit cờ ngắt 
1 = 
A / D chuyển đổi hoàn thành 0 = Một hoạt động chuyển đổi A / D đang được tiến hành, chưa hoàn thành.
RCIF: USART tiếp nhận ngắt cờ bit 
1 = bộ đệm bộ đệm tiếp nhận USART đầy 
0 = bộ nhớ đệm tiếp nhận USART trống
TXIF: USART truyền cờ cắt bit 
1 = Bộ nhớ đệm truyền USART trống 
0 = Bộ nhớ đệm truyền USART đầy
SSPIF: bit ngắt nối tiếp cổng SSPIF (SSP) 
1 = Trạng thái ngắt SSP đã xảy ra và phải được thiết lập lại phần mềm khi trở về từ chương trình con ngắt.
• Trong chế độ SPI: Đã xảy ra sự truyền hoặc nhận dữ liệu. 
• Chế độ I2C Slave: Đã xảy ra sự truyền hoặc nhận dữ liệu. 
• Chế độ chủ I2C: 
- Đã xảy ra sự truyền hoặc nhận dữ liệu. 
- Bắt đầu trạng thái Bắt đầu hoàn thành bởi mô-đun SSP. 
- Bắt đầu trạng thái Dừng hoàn thành bởi mô-đun SSP. 
- Bắt đầu khởi động lại trạng thái được hoàn thành bởi mô-đun SSP. 
- Trạng thái xác nhận khởi tạo được hoàn thành bởi mô-đun SSP. 
0 = Không có trạng thái ngắt SSP nào xảy ra.
CCP1IF, TMR2IF: Những lá cờ này không được sử dụng bởi 16F876A.
TMR1IF: Cờ tràn cờ TMR1 bit 
1 = Thanh ghi TMR1 bị tràn (phần mềm phải được đặt lại) 
0 = Thanh ghi TMR1 không được chuyển sang
Chương trình con 'rs232init' mang USART đến trạng thái ban đầu của nó

void rs232init ()
{
   BRGH = 1; // BRGH = 1 để chọn chế độ tốc độ cao
   SPBRG = 12; // SPBRG = 12 được chọn cho tốc độ 19200 baud / giây (BaudRate = FOSC / (16 (X + 1))
   TX9 = 0; // bit chẵn lẻ được tắt bằng cách gửi TX9 = 0.
   RX9 = 0; // tiếp nhận bit chẵn lẻ được tắt bằng TX9 = 0.
   SYNC = 0; // Chế độ không đồng bộ được chọn bằng cách thiết lập SYNC = 0.
   SPEN = 1; // cổng nối tiếp đang được kích hoạt.
   RCIE = 1; // Mở tiếp nhận.
   TXEN = 1; // truyền đang được kích hoạt.
   PEIE = 1; // các thiết bị ngoại vi được kích hoạt.
   CREN = 1; // tiếp nhận liên tục được kích hoạt.
}


Chương trình con 'RS232Send' gửi dữ liệu 8bit (8N1) với USART
void rs232send (unsigned char sendvalue)
{
 while (TRMT == 0) // Đợi cho đến khi thanh ghi Shift Shift rỗng
 {//
 nop (); //
 } //  
 TXREG = sendvalue; // Giá trị 8 bit được gửi tới TXREG và được gửi
}     

Chương trình con ngắt để truy xuất dữ liệu từ USART
void isr ngắt (void)
{
RX2flag = 0; // Bộ đệm đôi RCREG, vì vậy có bao nhiêu tầng được lấp đầy RX2flag   
              // Nó được giữ trên thanh ghi.   

GIE = ​​0; // tất cả các ngắt với GIE = ​​0 để ngăn chặn gián đoạn thêm trong khi gián đoạn
          // đóng cửa
if (GIE == 0) // lần trước GIE = ​​0 đang được xem xét.
  {
  if (RCIF == 1) // Nhìn xem liệu ngắt có đến từ USART hay không.
    {
    RXreg = RCREG; // Nhận dữ liệu 8bit từ bộ đệm RCREG.
    nếu (RCIF == 1) // nếu RCIF = 1 thì nó đầy trên tầng thứ hai của RCREG.
      {             
      RXreg2 = RCREG; // đây là lý do tại sao dữ liệu 8 bit trong hàng thứ 2 đang được thực hiện.
      RX2flag = 1; // 2. RX2flag bit 1 được thiết lập bởi vì nó được nhận trong dữ liệu 8 bit.
      }	 
    lcdputch (rxreg); // byte đầu tiên được ghi vào màn hình LCD
    if (RX2flag == 1) // RX2flag = 1? 
      {
      lcdputch (rxreg2); // Nếu nhận được, byte thứ hai được ghi vào màn hình LCD.
      RX2flag = 0; // bit RX2flag được đặt thành 0 khi thoát.
      nếu (OERR == 1) // lỗi sai (tràn)? Ghi chú của lập trình viên:
        {// nếu xảy ra sự cố khi xảy ra lỗi khung  
        CREN = 0; // USART đặt lại để nhận lỗi,
        FERR = 0; // tạo CREN = 0 và tạo CREN tiếp tuyến = 1
        CREN = 1; // đây phải là FERR = 0 và được nhập vào lỗi khung.
        }     
      } 
    GIE = ​​1; // GIE đang mở ở đầu ra ngắt.
    }
  }   
}

GỬI SMS BẰNG PIC

Dịch vụ tin nhắn ngắn GSM (SMS) cho phép gửi các tin nhắn ngắn và chữ giữa các hệ thống di động và GSM, hoặc giữa các thiết bị bên ngoài có khả năng gửi và nhận tin nhắn ngắn với các hệ thống di động.
GSM hỗ trợ hai loại dịch vụ tin nhắn ngắn. Đầu tiên là dịch vụ điểm-điểm mà người dùng gửi tin nhắn theo cách tương tác với Thực thể Thông điệp Ngắn (SME) để nhập vào hệ thống tin nhắn.
Người dùng có thể tương tác với SME bằng cách nhận tin nhắn e-mail và gọi hệ thống trả lời bằng giọng nói chấp nhận cuộc gọi điện thoại hoặc âm DTMF (Âm kép đa tần số) trong nhà điều hành vào hệ thống. Thứ hai là phát sóng cuộc gọi SMS. Trong dịch vụ này, nhiều trạm di động truyền cùng một thông điệp qua truyền tin nhắn. Hệ thống hướng dịch vụ đồng thời cung cấp cùng một thông tin cho nhiều trạm di động. Thông tin có thể bao gồm tin tức hoặc kết quả thể thao, thông tin thị trường chứng khoán và nhiều thông tin khác.
Tổ chức ETSI được liên kết với EU có thể liên lạc với SMS (hệ thống tin nhắn ngắn) được xác định trong các tài liệu GSM 03.40 và GSM 03.38 với tối đa 160 ký tự với bảng chữ cái 7bit. Nó được hỗ trợ bằng tin nhắn SMS trong hệ thống 8bit (140 ký tự) và 16 bit (70 ký tự) bên cạnh bảng chữ cái 7bit.
Hệ thống 8 bit thường được sử dụng cho các dịch vụ thiết lập logo, giai điệu và wap (giao thức ứng dụng không dây) vì nó tương thích với bảng ASCII, một hệ thống 16 bit thường được các nước Viễn Đông sử dụng với hàng nghìn bảng chữ cái.
Sự tương ứng của một số ký tự trong bảng trên có thể không được tìm thấy trong bảng Ascii 8 bit, hoặc nó có thể ngược lại, khi bảng được thiết kế, các ký tự có thể được sử dụng với SMS được ưu tiên. Ví dụ, ký tự 'chuông' (hex 07) trong bảng Ascii không được hiển thị ở đây.
Hình 10: Tốc độ dữ liệu SMS
Tốc độ dữ liệu SMS
SCA: Phần này bao gồm các số trung tâm tin nhắn và một numarya quốc gia tôi nếu thông điệp của tôi được thể hiện ở đây sẽ được gửi đến một numaraya quốc tế.
Loại PDU: Các tùy chọn để gửi thư được chỉ định ở đây, sử dụng cờ trạng thái làm ví dụ tại đây.
Tham chiếu thông điệp (MR) phải được giữ nguyên là 00H.
DA (địa chỉ đích): Số điện thoại của người nhận được nhập vào đây.
PID (định danh giao thức): Phải được đặt thành 00H để truyền SMS chuẩn.
DCS (lược đồ mã hóa dữ liệu): 00H nên được sử dụng cho bảng chữ cái theo tiêu chuẩn 7bit.
VP (thời hạn hiệu lực): Cho biết thời gian SMS sẽ được lưu giữ tại SMSC (trung tâm nhắn tin), theo giá trị được nhập tại đây, nếu SMS không thể gửi đúng thời gian, SMS sẽ tự động bị xóa.
UDL (chiều dài dữ liệu người dùng): chiều dài của đơn vị dữ liệu giao thức (PDU ) được truyền phải được xác định tại đây.
UD (dữ liệu người dùng): Trình tự PDU được tính từ chuỗi ký tự sử dụng bảng chữ cái 7 bit.
Tính toán trình tự PDU bằng bảng chữ cái 7 bit
Hình 11: Tài khoản chuỗi PDU
Tài khoản chuỗi PDU
Thứ nhất bảy (h) một hai bảy (e) 0. vào 8bit bằng cách thêm đầu bit getirilir.b như mở 1 + 1.101.000 = 11.101.000 ( "E8") như được thực hiện trên sau khi Septet nhị nguyên đúng chút thay đổi người đầu tiên Bảy thêm bit 0 hai bit cuối cùng của bảy thứ ba sau khi quá trình elenir.b được chèn trước Septet II (00+ 110.010 = 00.110.010 ( "32"). thủ tục này được thực hiện như trong Septet thứ tám Hình 11A 
thu được là kết quả của Hình 12 ..
Hình 12: Chuỗi PDU được tính toán
Chuỗi PDU được tính toán
Thuật toán cho tài khoản PDU
#define PIC_CLK 4000000


#include 
#include "always.h"

#include "delay.h"
#include "delay.c"

#include "lcd.h"
#include "lcd.c"

#include "877_i2c.h"

__CONFIG (HS & WDTDIS & PWRTEN & BOREN & LVPDIS & DUNPROT & DEBUGDIS & UNPROTECT);


void init_ports (void)
{
#if được xác định (_16F876A)
	ADCON0 = 0;
	ADCON1 = 0B00000110; // Thực hiện các đầu vào tương tự số E0, E1, E2	
#endif	

	TRISA = 0B11110001; // Đầu vào Data1-2 và đầu ra CLK1-2
	TRISB = 0B11000000;
	TRISC = 0xFF;
	

	PORTA = 0x00;
	PORTB = 0;
	PORTC = 0;
	

	TMR0 = 0;
	
	OPTION = 0b10000111; // Bộ đếm trước 111 -> 1/256
        INTCON = 0b00000000; // GIE và thụ động ngắt ngoại vi
        PIR1 = 0x00;
        PIR2 = 0x00;
        
}


////////////////////////////////////////////////// ///////////////////////////
unsigned char data2, data1, swap1, swap2, k;
unsigned char On1, On2, On3, On4, Z;
unsigned char RXreg, RXreg2;
bit RX2flag;
bank1 unsigned char p [17] = {'s', 'i', 'c', 'a', 'k', 'l', 'i', 'k', ':'
bank1 unsigned char hexsonuc [30];
bank2 unsigned char smsheader [] = {'0', '7', '9', '1', '0', '9', '4', '5', '9', '2', ' '' 8 '' 0 '' 0 '' 3 '' 3 '' 1 '' 1 '' 0 '' 0 '' 0 '' C '' 9', '1', '0', '9', '3', '5', '5', '2', '3', '9', '6', '0', '9', '7 '' 0 '' 0 '' 0 '' 0 '' a '' a '' 1 '' 1 '};

char bin2bcd (char);
void decimal (void);
void nop (void);
void rs232send (unsigned char);
void rs232init (void);
void smsinit (void);
void pduconv (unsigned char *, unsigned char *);
////////////////////////////////////////////////// ///////////////////////////
void isr ngắt (void)
{
RX2flag = 0;
GIE = ​​0;
nếu (GIE == 0)
  {
  if (RCIF == 1)
    {
    RXreg = RCREG;
    if (RCIF == 1)
      {
      RXreg2 = RCREG;
      RX2flag = 1;
      }	 
    // RSflag = 1;
    RCIE = 0;
    lcdputch (rxreg);
    if (RX2flag == 1)
      {
      lcdputch (rxreg2);
      RX2flag = 0;
      if (OERR == 1)
        {
        CREN = 0;
        FERR = 0;
        CREN = 1;
        }     
      } 
    RCIE = 1;
    }
  }   
}
////////////////////////////////////////////////// ///////////////////////////


void main ()
{
        
	init_ports ();	
        rs232init ();
       	lcd_init ();
	lcd_initt là ();
	lcd_cle là ();
        i2c_init ();
        i2c_start (); 
        i2c_writ A (0x90); 
        delayms (10);
        i2c_writ A (0x01);
        delayms (10);
        i2c_writ A (0x60);
        delayms (10);
        i2c_stop ();
        delayms (11);
        i2c_start ();
        delayms (10);
        i2c_writ A (0x90);
        delayms (10);
        i2c_writ A (0x00);
        delayms (10);
        i2c_stop ();
while (1)        
{

        i2c_start ();
        i2c_writ A (0x91);
	trong khi (RA0 == 0)
        {
          RA1 = hi;   
          Gie = 1;

		            Mảnh = 1;
          pduconv (p, hexsonuc);
          delayms (250);
          rs232send ( 'A');
          rs232send ( 'T');
          rs232send ( '+');
          rs232send ( 'C');
          rs232send ( 'M');
          rs232send ( 'D');
          rs232send (S ');
          rs232send ( '=');
          rs232send ( '1');
          rs232send ( '4');
          rs232send ( '0');
          rs232send (0x0D);
          delayms (250);
          smsinit ();
          for (k = 0; k <30 font="" k="">
          {
          rs232send (hexsonuc [k]);
          }
          rs232send (26);
          Mảnh = 0;
          Gie = 0;
          sự chậm trễ (3);
          RA1 = lo;
        }
        sự chậm trễ (1);
        lcd_cle là ();
        data1 = i2c_read (1);
        delayms (1);
        data2 = i2c_read (0);
        i2c_stop ();  
        lcd_putch (S ');
        lcd_putch (0x02);
        lcd_putch ( 'c');
        lcd_putch ( 'a');
        lcd_putch ( 'k');
        lcd_putch ( 'l');
        lcd_putch (0x02);
        lcd_putch ( 'k');       
        lcd_putch ( ':');
        lcd_goto (64);
        data1 = (dữ liệu1 & 0x7F);
	data1 = bin2bcd (dữ liệu1);
	swap1 = data1;
	swap1 = swap1 & 0x0F;
	swap1 = swap1 | 0x30;
	swap2 = data1;
	swap2 = swap2 >> 4; 
	swap2 = swap2 | 0x30;
        (Trong hệ thập phân);
        lcd_putch (swap2);
	lcd_putch (swap1);
        lcd_putch ( '');
        lcd_putch (on1);
        lcd_putch (On2);
        lcd_putch (On3);
        lcd_putch (one4);
        lcd_putch (0xDF);    
        lcd_putch ( 'C');
	p [9] = swap2;
        p [10] = swap1;
        p [11] = '.';
        p [12] = On1;
        p [13] = On2;
        p [14] = On3;
        p [15] = On4;
        p [16] = 'C';  

}	
}

////////////////////////////////////////////////// ///////////////////////////////////////////////
char bin2bcd (char binary_value) 
{ 

 {
 temp = p [sayac1 * 8 + 1 + k]; // bây giờ temp được nhập vào như là giá trị tiếp theo từ các gói 7bit.
 temp = temp << (7-k); // được tính bằng cách cuộn sang trái sang phải.
 temp3 = p [sayac1 * 8 + k]; // biến simdiki được nhập vào temp3
 temp3 = temp3 >> (k); // temp3 saga đang được cuộn.
 temp3 = temp | temp3; // Giá trị được tính từ giá trị tiếp theo với giá trị hiện tại đang chạy.
 s [log + 1 + k] = temp3; // Giá trị hiện tại được ghi vào s'e bằng cách đánh giá nhật ký.
 }
for (k = 0; k <15 font="" k="">
 {
  temp = s [k];
  temp = temp & 0x0F;
  hexsonuc [k * 2 + 1] = hex [temp];
  temp = s [k];
  temp = temp >> 4;
  hexsonuc [k * 2] = hex [temp];
 }
}       
}
////////////////////////////////////////////////// ////////////////////////////////////////////////
void nop (void)
{
  # asm
  nope
  #endasm
}
////////////////////////////////////////////////// ////////////////////////////////////////////////
void rs232init ()
{
   BRGH = 1;
   SPBRG = 12;
   TX9 = 0;
   RX9 = 0;
   SYNC = 0;
   SPEN = 1;
   RCIE = 1;
   TXEN = 1;
   PEIE = 1;
   CREN = 1;
}
////////////////////////////////////////////////// ////////////////////////////////////////////////
void rs232send (unsigned char sendvalue)
{
 trong khi (TRMT == 0)
 {
 nop ();
 } 
 TXREG = sendvalue;
}     
////////////////////////////////////////////////// /////////////////////////////////////////////////       
void smsinit (void)
{	     
  
   for (k = 0; k <44 font="" k="">
   {
    rs232send (smsheader [k]);
   }
   k = 0;

}



nhắn RS232 gửi: Modem và để giao tiếp các thiết bị như điện thoại di động thông qua các lệnh RS232 'Hayes' với các lệnh lệnh verilir.hayes được chuẩn hóa, và mỗi lần AT (chú ý) để bắt đầu, nếu ví dụ tình trạng pin điện thoại di động đang mong muốn được học; Lệnh AT + CBC sẽ được gửi đi, lệnh để nhận được như sau.
+ CBC: 0,100
tốt
Ở đây, 0,100 chỉ ra rằng pin kích thích là 100% đầy. Một ví dụ khác là lệnh AT + GMI. câu trả lời nhận được,
ERICSSON
OK
, hàng trăm lệnh AT được sử dụng cho các hoạt động khác nhau, có thể thu thập thêm thông tin từ trang web của ETSI.
Lệnh "at + cmgs" được sử dụng trong dự án. Trình tự PDU được tạo sẽ được truyền tới điện thoại. Dưới đây là một giao tiếp mẫu giữa pic và điện thoại.
pic gửi lệnh: at + cmgs = 140 (pic báo cáo 140 byte để gửi)
câu trả lời là:> (điện thoại yêu cầu một mảng byte được gửi)
pic pd đang gửi hàng loạt dữ liệu: 0011000781214365F70000AA05E8329BFD06
câu trả lời nhận: OK (tin nhắn gửi)
Toàn bộ chương trình được viết cho dự án
#define PIC_CLK 4000000


#include 
#include "always.h"

#include "delay.h"
#include "delay.c"

#include "lcd.h"
#include "lcd.c"

#include "877_i2c.h"

__CONFIG (HS & WDTDIS & PWRTEN & BOREN & LVPDIS & DUNPROT & DEBUGDIS & UNPROTECT);


void init_ports (void)
{
#if được xác định (_16F876A)
	ADCON0 = 0;
	ADCON1 = 0B00000110; // Thực hiện các đầu vào tương tự số E0, E1, E2	
#endif	

	TRISA = 0B11110001; // Đầu vào Data1-2 và đầu ra CLK1-2
	TRISB = 0B11000000;
	TRISC = 0xFF;
	

	PORTA = 0x00;
	PORTB = 0;
	PORTC = 0;
	

	TMR0 = 0;
	
	OPTION = 0b10000111; // Bộ đếm trước 111 -> 1/256
        INTCON = 0b00000000; // GIE và thụ động ngắt ngoại vi
        PIR1 = 0x00;
        PIR2 = 0x00;
        
}


////////////////////////////////////////////////// ///////////////////////////
unsigned char data2, data1, swap1, swap2, k;
unsigned char On1, On2, On3, On4, Z;
unsigned char RXreg, RXreg2;
bit RX2flag;
bank1 unsigned char p [17] = {'s', 'i', 'c', 'a', 'k', 'l', 'i', 'k', ':'
bank1 unsigned char hexsonuc [30];
bank2 unsigned char smsheader [] = {'0', '7', '9', '1', '0', '9', '4', '5', '9', '2', ' '' 8 '' 0 '' 0 '' 3 '' 3 '' 1 '' 1 '' 0 '' 0 '' 0 '' C '' 9', '1', '0', '9', '3', '5', '5', '2', '3', '9', '6', '0', '9', '7 '' 0 '' 0 '' 0 '' 0 '' a '' a '' 1 '' 1 '};
char bin2bcd (char);
void decimal (void);
void nop (void);
void rs232send (unsigned char);
void rs232init (void);
void smsinit (void);
void pduconv (unsigned char *, unsigned char *);
////////////////////////////////////////////////// ///////////////////////////
void isr ngắt (void)
{
RX2flag = 0;
GIE = ​​0;
nếu (GIE == 0)
  {
  if (RCIF == 1)
    {
    RXreg = RCREG;
    if (RCIF == 1)
      {
      RXreg2 = RCREG;
      RX2flag = 1;
      }	 
    // RSflag = 1;
    RCIE = 0;
    lcdputch (rxreg);
    if (RX2flag == 1)
      {
      lcdputch (rxreg2);
      RX2flag = 0;
      if (OERR == 1)
        {
        CREN = 0;
        FERR = 0;
        CREN = 1;
        }     
      } 
    RCIE = 1;
    }
  }   
}
////////////////////////////////////////////////// ///////////////////////////


void main ()
{
        
	init_ports ();	
        rs232init ();
       	lcd_init ();
	lcd_initt là ();
	lcd_cle là ();
        i2c_init ();
        i2c_start (); 
        i2c_writ A (0x90); 
        delayms (10);
        i2c_writ A (0x01);
        delayms (10);
        i2c_writ A (0x60);
        delayms (10);
        i2c_stop ();
        delayms (11);
        i2c_start ();
        delayms (10);
        i2c_writ A (0x90);
        delayms (10);
        i2c_writ A (0x00);
        delayms (10);
        i2c_stop ();
while (1)        
{

        i2c_start ();
        i2c_writ A (0x91);
	trong khi (RA0 == 0)
        {
          RA1 = hi;   
          Gie = 1;
          Mảnh = 1;
          pduconv (p, hexsonuc);
          delayms (250);
          rs232send ( 'A');
          rs232send ( 'T');
          rs232send ( '+');
          rs232send ( 'C');
          rs232send ( 'M');
          rs232send ( 'D');
          rs232send (S ');
          rs232send ( '=');
          rs232send ( '1');
          rs232send ( '4');
          rs232send ( '0');
          rs232send (0x0D);
          delayms (250);
          smsinit ();
          for (k = 0; k <30 font="" k="">
          {
          rs232send (hexsonuc [k]);
          }
          rs232send (26);
          Mảnh = 0;
          Gie = 0;
          sự chậm trễ (3);
          RA1 = lo;
        }
        sự chậm trễ (1);
        lcd_cle là ();
        data1 = i2c_read (1);
        delayms (1);
        data2 = i2c_read (0);
        i2c_stop ();  
        lcd_putch (S ');
        lcd_putch (0x02);
        lcd_putch ( 'c');
        lcd_putch ( 'a');
        lcd_putch ( 'k');
        lcd_putch ( 'l');
        lcd_putch (0x02);
        lcd_putch ( 'k');       
        lcd_putch ( ':');
        lcd_goto (64);
        data1 = (dữ liệu1 & 0x7F);
	data1 = bin2bcd (dữ liệu1);
	swap1 = data1;
	swap1 = swap1 & 0x0F;
	swap1 = swap1 | 0x30;
	swap2 = data1;
	swap2 = swap2 >> 4; 
	swap2 = swap2 | 0x30;
        (Trong hệ thập phân);
        lcd_putch (swap2);
	lcd_putch (swap1);
        lcd_putch ( '');
        lcd_putch (on1);
        lcd_putch (On2);
        lcd_putch (On3);
        lcd_putch (one4);
        lcd_putch (0xDF);    
        lcd_putch ( 'C');
	p [9] = swap2;
        p [10] = swap1;
        p [11] = '.';
        p [12] = On1;
        p [13] = On2;
        p [14] = On3;
        p [15] = On4;
        p [16] = 'C';  

}	
}

////////////////////////////////////////////////// ///////////////////////////////////////////////
char bin2bcd (char binary_value) 
{ 
char temp; 
char retval; 

temp = binary_value; 
retval = 0; 

while (1) 
{ 
if (temp> = 10) 
{ 
temp - = 10; 
retval + = 0x10; 
} 
khác 
{ 
retval + = temp; 
break; 
} 
} 

return (retval); 
} 
////////////////////////////////////////////////// ///////////////////////////////////////////////
void decimal (void)
{
  data2 = data2 & 0xF0;
  switch (data2)
  {
      trường hợp 0x00: {On1 = 0x30; On2 = 0x30; On3 = 0x30; One4 = 0x30; break;}
      trường hợp 0x10: {On1 = 0x30; On2 = 0x36; On3 = 0x32; One4 = 0x35; break;}
      trường hợp 0x20: {On1 = 0x31; On2 = 0x32; On3 = 0x35; One4 = 0x30; break;}
      trường hợp 0x30: {On1 = 0x31; On2 = 0x38; On3 = 0x37; One4 = 0x35; break;}
      trường hợp 0x40: {On1 = 0x32; On2 = 0x35; On3 = 0x30; One4 = 0x30; break;}
      trường hợp 0x50: {On1 = 0x33; On2 = 0x31; On3 = 0x32; One4 = 0x35; break;}
      trường hợp 0x60: {On1 = 0x33; On2 = 0x37; On3 = 0x35; One4 = 0x30; break;}
      trường hợp 0x70: {On1 = 0x34; On2 = 0x33; On3 = 0x37; One4 = 0x35; break;}
      trường hợp 0x80: {On1 = 0x35; On2 = 0x30; On3 = 0x30; One4 = 0x30; break;}
      trường hợp 0x90: {On1 = 0x35; On2 = 0x36; On3 = 0x32; One4 = 0x35; break;}
      trường hợp 0xA0: {On1 = 0x36; On2 = 0x32; On3 = 0x35; One4 = 0x30; break;}
      trường hợp 0xB0: {On1 = 0x36; On2 = 0x38; On3 = 0x37; One4 = 0x35; break;}
      trường hợp 0xC0: {On1 = 0x37; On2 = 0x35; On3 = 0x30; One4 = 0x30; break;}
      trường hợp 0xD0: {On1 = 0x38; On2 = 0x31; On3 = 0x32; One4 = 0x35; break;}
      trường hợp 0xE0: {On1 = 0x38; On2 = 0x37; On3 = 0x35; One4 = 0x30; break;}
      trường hợp 0xF0: {On1 = 0x39; On2 = 0x33; On3 = 0x37; One4 = 0x35; }
  }
}
////////////////////////////////////////////////// ///////////////////////////////////////
void pduconv (unsigned char * p, unsigned char * hexsonuc)
{
 unsigned char temp, temp3, count, count1, s1, log;
 unsigned char k = 0;
 unsigned char s [15];
 unsigned char hex [16] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, '' B '' C '' D '' E '' F '};
 counter = 17;
 sayac1 = sayac / 8;
 counter = (phản 8 * sayac1); // số byte còn lại từ các gói được nhập
cho (k = 0; k <(sayac1); k ++) // gói lựa chọn vòng tròn
{
  s1 = k * 8; // số lượng bắt đầu của nhóm gói để xử lý được tính toán
  For (; s1 <(8 * k + 7); s1 ++) // Chuyển đổi cho nhóm gói đã chọn được thực hiện
  {
  temp = p [s1 + 1]; // nhập số lượng 7bit tiếp theo
  temp = temp << (7- (s1-8 * k)); // được tính bằng cách cuộn sang trái
  temp3 = p [S1]; // biến simdiki được nhập vào temp3
  temp3 = temp3 >> (s1-8 * k); // temp3 saga đang được cuộn cho đoạn đường nối
  temp3 = temp | temp3; // Giá trị được tính từ giá trị tiếp theo với giá trị hiện tại đang chạy.
  s [s1-k] = temp3; // Giá trị hiện tại đang được viết.
  đăng nhập = s1-k; // trên kết quả của vòng lặp, mảng kết quả được chuyển sang biến nhật ký nơi văn bản của tôi bị bỏ lại, do đó vòng lặp xác định 7bit hiện đang xác định nơi bắt đầu văn bản của tôi.
  }
}
if (count! = 0) // Nếu số byte còn lại từ các gói không phải là 0, hoạt động cần thiết được thực hiện.
{
 for (k = 0; k> (K); // temp3 saga đang được cuộn.
 temp3 = temp | temp3; // Giá trị được tính từ giá trị tiếp theo với giá trị hiện tại đang chạy.
 s [log + 1 + k] = temp3; // Giá trị hiện tại được ghi vào s'e bằng cách đánh giá nhật ký.
 }
for (k = 0; k <15 font="" k="">
 {
  temp = s [k];
  temp = temp & 0x0F;
  hexsonuc [k * 2 + 1] = hex [temp];
  temp = s [k];
  temp = temp >> 4;
  hexsonuc [k * 2] = hex [temp];
 }
}       
}
////////////////////////////////////////////////// ////////////////////////////////////////////////
void nop (void)
{
  # asm
  nope
  #endasm
}
////////////////////////////////////////////////// ////////////////////////////////////////////////
void rs232init ()
{
   BRGH = 1;
   SPBRG = 12;
   TX9 = 0;
   RX9 = 0;
   SYNC = 0;
   SPEN = 1;
   RCIE = 1;
   TXEN = 1;
   PEIE = 1;
   CREN = 1;
}
////////////////////////////////////////////////// ////////////////////////////////////////////////
void rs232send (unsigned char sendvalue)
{
 trong khi (TRMT == 0)
 {
 nop ();
 } 
 TXREG = sendvalue;
}     
////////////////////////////////////////////////// /////////////////////////////////////////////////       
void smsinit (void)
{	     
  
   for (k = 0; k <44 font="" k="">
   {
    rs232send (smsheader [k]);
   }
   k = 0;

}

HITECH PICC COMPILER

Dự án này được viết bằng các chương trình của hội đồng cổ điển thay vì ngôn ngữ C của vi điều khiển, sử dụng nó trong loạt PIC của vi điều khiển ngôn ngữ C là tương đối mới và nhiều người chưa được biết ở nước ta, tôi sử dụng internet về chủ đề này, và tôi kiểm tra như thế nào hệ thống hoạt động. Ngôn ngữ C là rất mạnh mẽ để lắp ráp, một quá trình được thực hiện ở bước 5 của ASM vừa C có thể được thực hiện chỉ bằng một lệnh, SF nước khốn thường đơn giản nhất (đặc biệt Function Register) để chuyển đổi giữa s cần thay đổi phương tiện ASM ngân hàng, C trình biên dịch cho loại công việc này được thực hiện trên danh nghĩa và các dự án dễ dàng hơn nhiều để thiết kế của bạn, nhưng những lợi thế quan trọng nhất của C là tính di động, một hàm được viết cho một bộ xử lý x86 bình thường nếu bạn có thể dễ dàng cổng cho PIC, nếu cần thiết,
Hình 14: Sơ đồ mạch
PIC16F876 to-SMS-mạch
D1, D2: 1N4001 
DISPLAY: HD44780 của 
U2: 78L05 
C1: 100nF 
U1: PIC16F876 của 
R2, R8, R9: 10k 
R1, R10: 330ohm 
R3, R4 1K 
Y1: 4MHz XTAL 
U3: DS75 
R5: 160ohm 
Q1: 2N2222 
C2, C3 : 33pf 
R6: 1K 
R7 1.5K 
R11 2.2K 
U7, U8: 74LS07N 
U5: Siemens S25 điện thoại di động
Tài liệu tham khảo:
http://www.maxim-ic.com 
http://www.microchip.com 
http://www.microchipc.com 
http://www.hitachi.com 
http://www.htsoft.com 
http://www.elektroda.pl 
http://www.picproje.com 
http://www.fairchild.com 
http://www.semiconductor.philips.com 
16F876A Datasheet, Microchip Inc.Arizona (AZ) 
Lệnh AT hướng dẫn sử dụng cho điện thoại di động Siemens S25, Siemens Gmbh.Berlin (thông tin bí mật) 
SMS với Hướng dẫn của nhà phát triển modem PDU-modem, Siemens Gmbh.Berlin (thông tin bí mật) 
http://www.dreamfabric.co.uk 
http: // www .cmail.cz / doveda / gsm / pdu_sms.htm 
http://www.etsi.org
Tệp tải xuống danh sách LINK (ở định dạng TXT) link-4056.zip mật khẩu-pass: 320volt.com

Post a Comment

[disqus] [facebook] [blogger]

MKRdezign

Biểu mẫu liên hệ

Name

Email *

Message *

Powered by Blogger.
Javascript DisablePlease Enable Javascript To See All Widget
Hỗ trợ trực tuyến