MICROCHIP PIC SERIES CCS C VÍ DỤ ỨNG DỤNG ĐƠN GIẢN

MICROCHIP PIC SERIES CCS C VÍ DỤ ỨNG DỤNG ĐƠN GIẢN

CCS C thực hiện của hầu hết thực hiện với PIC16F648 2 đơn vị PIC16F628 với isis mô phỏng các file C và HEX Mã có PIC là một nguồn lực lớn cho những người làm việc trong các chương trình đó hoặc tìm hiểu C trong một loạt các mạch biên dịch CCS C đã qua sử dụng RS232, bàn phím, màn hình LCD, hiển thị, eeprom, truy cập, pwm, v.v ... rất nhiều tệp mẫu dựa trên các mạch đơn giản
Dưới đây là danh sách các ví dụ và danh sách
Tắt đèn Led bằng PIC16F628
Tắt đèn Led bằng PIC16F628
////////////////////////////////////////////////// //////////////////////////////////
// VsZeNeR'04  
// 14 / August / 05
// vszener@gmail.com
// Chương trình: Nhấp nháy của người dẫn đầu mỗi 0.5 giây 
// Phiên bản: 0.0 sửa đổi del 16F648a
//
// Thiết bị: Trình biên dịch PIC 16F628A: CCS vs3.227
// Môi trường IDE: MPLAB IDE v7.20 Simulator: Proteus 6.7sp3
//
// Ghi chú: nhấp nháy LED 0.5s cho mỗi cổng B pin RB0
////////////////////////////////////////////////// ////////////////////////////////

#include <16f628a .h=""> // pic một tiện ích    
#fuses XT, NOWDT, NOPROTECT, PUT // đơn đặt hàng cho lập trình viên 
#use delay (clock = 4000000) // Fosc = 4Mhz
#use fast_io (b)

/// PROGRAM
void chính (void)
{
 set_tris_b (0xFE); // portb là đầu ra (RB0, những người khác bị vô hiệu hóa)
 disable_interrupts (GLOBAL); // tất cả các ngắt bị tắt
 
 làm { 
  output_low (PIN_B0); //dẫn ra
  delay_ms (500);    
  output_high (PIN_B0); // dẫn đầu
  delay_ms (500);
 } trong khi (TRUE); // bucle infinito
}
Trượt Leder với PIC16F648A
Trượt Leder với PIC16F648A
////////////////////////////////////////////////// //////////////////////////////////
// VsZeNeR'04  
// 14 / August / 05
// vszener@gmail.com
// Chương trình: Fantastic Car
// Phiên bản: 2.0
//
// Thiết bị: Trình biên dịch PIC 16F648A: CCS vs3.227
// Môi trường IDE: MPLAB IDE v7.20 Simulator: Proteus 6.7sp3
//
// Ghi chú: LED quét mô phỏng ánh sáng xe tuyệt vời bởi
// port B. Thích ứng của mã trong cơ bản de lordlafebre 
//
// RB0 -> 1º Led
// RB1 -> 2º Led
// RB2 -> 3º Led
// RB3 -> 4º Led
// RB4 -> 5º Led
// RB5 -> 6º Led
// RB6 -> 7º Led
// RB7 -> 8º Led
// Trong biến tiếp theo, các giá trị được lưu trữ 1-2-4-8-16-32-64-128
// trong nhị phân tương ứng với chuỗi 00000001-00000010-00000100 ...
// là đèn LED được chiếu sáng, trùng với trình tự ánh sáng
// của chiếc xe tuyệt vời (phiên bản Ecuador: xe tuyệt vời)
////////////////////////////////////////////////// ////////////////////////////////

#include <16f648a .h=""> // pic một tiện ích    
#fuses XT, NOWDT, NOPROTECT, PUT, NOLVP // đơn đặt hàng cho lập trình viên 
#use delay (clock = 4000000) // Fosc = 4Mhz
#use standard_io (B) // cổng B là đầu ra

/// PROGRAM
void chính (void)
{
 int i, cont; // biến definidas
 set_tris_b (0x00); // portb là đầu ra
 disable_interrupts (GLOBAL); // tất cả các ngắt bị tắt
 
 làm {// bucle ...
  tài khoản = 1; // ... inicializar
  
  cho (i = 1; i <8 d="" derecha="" font="" i="" n="" tr="" u="">
   output_b (tiếp theo); // chiếu sáng tương ứng
   delay_ms (100);
   tài khoản tài khoản = * 2;
   }
  
  cho (i = 1; i <8 font="" i="">
   output_b (tiếp theo); // chiếu sáng tương ứng
   delay_ms (100);
   tài khoản = Tiếp / 2;
   }
   
  } trong khi (TRUE); //...infinito
}

Ứng dụng hiển thị thanh Led với PIC16F648A
Ứng dụng hiển thị thanh Led với PIC16F648A
////////////////////////////////////////////////// //////////////////////////////////
// VsZeNeR'05  
// 8 / tháng 11/05
// vszener@gmail.com
// Programa: Led & hiển thị 7seg andodo comun
// Phiên bản: 0.0
//
// Thiết bị: Trình biên dịch PIC 16F648A: CCS vs3.236
// Môi trường IDE: MPLAB IDE v7.22 Simulator: Proteus 6.7sp3
//
// Ghi chú: Chương trình này cho thấy cách kết hợp mã ASM trong chương trình của chúng tôi trong C.
// Các mô-đun trong asm xử lý các thiết bị ngoại vi (một là một thanh đèn LED,
// chiếu sáng tối đa 4 đèn LED liên tiếp và quay lại để bắt đầu và các đèn LED khác
/ / lái xe một bcd lên truy cập từ 0a9 và trở lại để bắt đầu). Nó sử dụng
// bộ giải mã ngoại vi 4555 và bcd-7sec 74247.
// Kết nối: A0 -> A 4555 DEC        
// A1 -> B 4555 DEC   
// B4 -> A 74247 / Led D1  
// B5 -> B 74247 / Led D2    
// B6 -> C 74247 / Led D3            
// B7 -> D 74247 / Led D4 
////////////////////////////////////////////////// ////////////////////////////////

#include <16f648a .h=""> // pic một tiện ích    
#fuses XT, NOWDT, NOPROTECT, PUT, NOLVP // đơn đặt hàng cho lập trình viên 
#fuses INTRC // bộ dao động nội bộ
#use delay (clock = 4000000) // Fosc = 4Mhz
#use fast_io (a)
#use fast_io (b)
#byte PORTB = 0x06 // định nghĩa của PORTB
#byte STATUS = 0x03 // definicion del STATUS

/// PROGRAM
void chính (void)
{
 char cont = 0; // định nghĩa của ...
 ký char bcd = -1; //...biến
 
 set_tris_a (0x00); // cổng thoát
 set_tris_b (0x00); // portb salida
 
 cho (;;) {// bucle ... 
  output_a (tiếp); // bật đèn LED tương ứng
  
  #asm // modulo asm para manejar bcd-> 7seg
  movlw 1; w <- 1="" font="">
  addwf bcd, 1; bcd <- bcd="" font="" w="">
  movf bcd, 0; w <- bcd="" font="">
  sublw 10; 10- w
  btfsc STATUS, 2, đã đạt đến 9?
  goto bằng, YES-> đi đến cùng
  swapf bcd, 0; KHÔNG: w <- alta="" bcd="" font="" parte="">
  goto mẫu, đi đến mẫu
bằng nhau: 
  movlw 0; w <- 0="" font="">
  movwf bcd; bcd <- font="" w="">
mẫu:
  movwf PORTB, PORTB <- font="" w="">
  #endasm // asm cuối mô-đun để xử lý bcd-> 7 giây
  
  delay_ms (450);
  
  #asm // mô-đun asm để xử lý
  movlw 1; w <- 1="" font="">
  addwf cont, 1; cont <- cont="" font="" w="">
  #endasm // asm cuối mô-đun để xử lý
  
  if (cont> 3) // có lần hiển thị cuối cùng được hiển thị không?
   tt = 0; // SI-> đặt lại cont
  } //...infinito
}
PIC16F648A 7 phân đoạn ứng dụng bcd
PIC16F648A 7 phân đoạn ứng dụng bcd

////////////////////////////////////////////////// //////////////////////////////////
// VsZeNeR'05  
// 22 / August / 05
// vszener@gmail.com
// Programa: Contador 0-9 hiển thị BDC & Boton
// Phiên bản: 0.0
//
// Thiết bị: Trình biên dịch PIC 16F648A: CCS vs3.227
// Môi trường IDE: MPLAB IDE v7.20 Simulator: Proteus 6.7sp3
//
// Ghi chú: Số lượt truy cập từ 0 đến 9 mỗi khi chúng ta nhấn nút và bắt đầu lại. 
// lưu ý rằng bạn phải đặt chỉ thị NOLVP để pin B4 là 
// thoát. Khi chúng ta thêm nút vào mạch của mình, chúng ta phải tính đến
// thiết bị này tạo ra 'số trang không truy cập' phải được loại bỏ
// hiển thị chính xác trên màn hình của chữ số đã chọn. Lần này
// việc loại bỏ 'bị trả lại' đã được thực hiện bằng phần mềm. 
// Khi một giá trị logic '0' (thấp) được nhập qua chân A0 của chủ sở hữu, 
// tăng một chữ số trong màn hình BCD.
//
// Kết nối: Nút A0 ->        
// B0 -> a 
// B1 -> b 
// B2 -> c 
// B3 -> d 
// BCD:
// dcba NUM
// 0 0 0 0 0
// 0 0 0 1 1
// 0 0 1 0 2
// 0 0 1 1 3
// 0 1 0 0 4
// 0 1 0 1 5
// 0 1 1 0 6
// 0 1 1 1 7
// 1 0 0 0 8
// 1 0 0 1 9
////////////////////////////////////////////////// ////////////////////////////////

#include <16f648a .h=""> // pic một tiện ích    
#fuses XT, NOWDT, NOPROTECT, PUT, NOLVP // đơn đặt hàng cho lập trình viên 
#use delay (clock = 4000000) // Fosc = 4Mhz
#use fixed_io (b_outputs = PIN_B0, PIN_B1, PIN_B2, PIN_B3)
#use standard_io (A)
  
/// PROGRAM
void chính (void)
{
 char i = 0; // bộ đếm cho bảng BCD
 int tabBCD [10] = {0b0000,0b0001,0b0010,0b0011,0b0100,0b0101,0b0110,0b0111,0b1000,0b1001}; // BCD 0-9
  
 set_tris_a (0xFF); // cửa làm đầu vào 
 disable_interrupts (GLOBAL); // tất cả các ngắt bị tắt
 
 output_b (tabBCD [i]); // inicializa displayBCD digito 0

 cho (;;) {// bucle ...
  if (! input (PIN_A0)) // đã nhấn nút chưa?
   {
    delay_ms (151); // YES -> delay để tránh rebounds
    i ++; // bảng đếm chỉ số gia tăngBCD
    nếu (i> 9) // có chữ số 9 được hiển thị không?
     i = 0; // SI -> khôi phục giá trị chỉ mục (để hiển thị chữ số 0)
    output_b (tabBCD [i]); // hiển thị theo phân đoạn 7 chữ số portb
   }   
  } //...infinito
}

PIC16F648A Lỗi Int portB
PIC16F648A Lỗi Int portB
////////////////////////////////////////////////// //////////////////////////////////
// VsZeNeR'06  
// 01 / July / 06
//
// Chương trình: Kiểm tra gián đoạn do thay đổi trạng thái portb <4: 7="">
// Phiên bản: 0.0
//
// Thiết bị: Trình biên dịch PIC 16F648A: CCS vs3.249
// Môi trường IDE: MPLAB IDE v7.40 Simulator: Proteus 6.9sp4
//
// Ghi chú: Chương trình này sẽ quan tâm để xem trình biên dịch của nhà CCS có bị hủy kích hoạt hay không
// ngắt cổng chính xác b, vì điều này bạn phải:
// 1. Đọc cổng B cổng
// 2. Xóa bit ngắt (bit RBIF)
// Mỗi lần có sự thay đổi trạng thái trong các chân của cổng B <4: 7="">
// một sự gián đoạn sẽ xảy ra, làm tăng một biến sẽ được sử dụng
// trong chương trình chính để hiển thị đèn LED. Ngoài ra,
// mỗi lần xảy ra gián đoạn, đèn LED được kết nối với ghim sẽ sáng lên
// A4 sẽ xuất hiện khi chúng tôi thoát khỏi sự gián đoạn này.
//
// Kết nối: A0 -> A dec 4028        
// A1 -> B tháng 12 năm 4028
// A2 -> C tháng 12 năm 4028
// A3 -> D tháng 12 năm 4028
// A4 -> đèn báo gián đoạn   
// B4 -> boton  
// B5 -> boton    
// B6 -> boton           
// B7 -> boton 
//
// Kết luận: CCS không thực hiện điều trị gián đoạn tốt 
// của portB, vì vậy chúng ta sẽ phải đọc / ghi một số pin 
// của portB hoặc toàn bộ cổng.
////////////////////////////////////////////////// ////////////////////////////////

#include <16f648a .h=""> // pic một tiện ích    
#fuses XT, NOWDT, NOPROTECT, PUT, NOLVP // đơn đặt hàng cho lập trình viên 
#fuses INTRC // bộ dao động nội bộ
#use delay (clock = 4000000) // Fosc = 4Mhz
#use fast_io (b)
#use fast_io (a)


/// KHAI THÁC BIẾN ĐỔI TOÀN CẦU
int biến = 0;  

/// CALL CHỨC NĂNG TƯƠNG LAI
#INT_RB
void IntPortB4_7 ()
{     
 output_high (pin_a4); // indicador de interrupcion on

// Kích hoạt dòng dưới đây để xem các thay đổi !!! 
// trong khi đầu vào (PIN_B4) ||! đầu vào (PIN_B5) ||! đầu vào (PIN_B6) ||! (PIN_B7)); // elimina rebotes
// trong trường hợp các ccs hoạt động, nó không nên xử lý gián đoạn một lần nữa cho đến khi một thay đổi trạng thái
// của bất kỳ các chân <4: 7=""> của portb. CCS không thành công, vì vậy nếu chúng ta có dòng đọc / ghi
// cổng b (hoặc một trong số các ghim của nó) bị hủy kích hoạt sẽ luôn nhập vào gián đoạn!

 biến ++; // biến incrementamos
 
 if (biến> 0b00001001) // có đèn LED cuối cùng được chiếu sáng không?
  biến = 0; // SI -> biến đặt lại
 
 output_low (pin_a4); // ngắt lời chỉ định
}

/// PROGRAM
void chính (void)
{
 setup_oscillator (OSC_4MHZ); // chúng tôi đặt bộ dao động thành 4MHz

 set_tris_a (0x00); // cổng thoát
 set_tris_b (0xFF); // portb entrada
 
 enable_interrupts (int_rb); // activar interrupcion rb4: 7
 enable_interrupts (GLOBAL); // kích hoạt ngắt
 
 output_low (pin_a4); // indicador de la interrupcion off

 làm {// bucle ...
  output_a (biến); // chúng tôi hiển thị giá trị của biến
  } trong khi (TRUE); //...infinito
}
PIC16F648A lcd ve 24lc256 Eeprom
PIC16F648A lcd ve 24lc256 Eeprom
////////////////////////////////////////////////// //////////////////////////////////
// VsZeNeR'05  
// 30 / August / 05
// vszener@gmail.com
// Chương trình: Viết và đọc eeprom ngoài 24LC256 và hiển thị nó bằng màn hình LCD
// Phiên bản: 0.0
//
// Thiết bị: Trình biên dịch PIC 16F648A: CCS vs3.227
// Môi trường IDE: MPLAB IDE v7.21 Simulator: Proteus 6.7sp3
//
// Ghi chú: Thông tin được ghi trong bộ nhớ được hiển thị bằng màn hình LCD (LM016L)
// bên ngoài 24LC256 (eeprom) và sau đó được hiển thị bởi màn hình LCD
// Các biến cục bộ được sử dụng:
// dir-> vị trí để ghi trên eeprom 24LC256
// · men1 [] -> chứa 1 tin nhắn để viết trong eeprom và hiển thị trong màn hình LCD
// · men2 [] -> chứa thông điệp thứ 2 để viết bằng eeprom và hiển thị trên màn hình LCD
// · men3 [] -> chứa tin nhắn thứ 3 để viết bằng eeprom và hiển thị trên màn hình LCD
// · men4 [] -> chứa thông điệp thứ 4 để viết trên eeprom và hiển thị trên màn hình LCD
// Màn hình LCD hiển thị địa chỉ bộ nhớ nơi ghi âm được ghi
// tin nhắn được hiển thị và thông báo tương ứng.
// Hãy nhớ rằng bạn phải đặt chỉ thị NOLVP để pin B4 là 
// thoát. 
// Kết nối: A0 -> SCK eeprom bên ngoài
// A1 -> SDA eeprom bên ngoài
// B0 -> E        
// B1 -> RS   
// B2 -> RW  
// B4 -> D4    
// B5 -> D5            
// B6 -> D6 
// B7 -> D7                   
////////////////////////////////////////////////// ////////////////////////////////

#include <16f648a .h=""> // pic một tiện ích    
#use delay (CLOCK = 4000000) // Fosc = 4Mhz 
#fuses HS, NOPUT, NOPROTECT, NOBROWNOUT, NOLVP, NOWDT // comandos para el programador 
#define use_portb_lcd TRUE // sử dụng cổng b cho lcd 
# define EEPROM_SDA PIN_A1 // xác định các ghim ở đâu ...
#define EEPROM_SCL PIN_A0 // la eeprom ira conectada
#include <24256 .c=""> // libreria de eeprom externa 24LC256 
#include  // libreria de lcd

/// PROGRAM
void main (void) { 
 int dir = 0; // địa chỉ eeprom để viết và đọc thư
 char men1 [] = "VsZeNeR'05"; // declarationacion de ...
 char men2 [] = "Hola";
 char men3 [] = "Foro";
 char men4 [] = "TODOPIC!"; //...messajes để viết và đọc bởi 25LC256  

 lcd_init (); // khởi tạo lcd
 init_ext_eeprom (); // inicializa eeprom
 
 lcd_putc ("~ Viết trong ... \ n24LC256 \ n");
 delay_ms (500);
 write_ext_eeprom (dir, men1); // quá trình viết ...
 bạn ++;
 write_ext_eeprom (dir, men2);
 bạn ++;
 write_ext_eeprom (dir, men3);
 bạn ++;
 write_ext_eeprom (dir, men4); // ... thư trong eeprom bên ngoài
 lcd_putc ("\ fFin de escritura vi \ n24LC25");
 delay_ms (1500);
 
 lcd_putc ("\ f >>> Leyendo ... \ n");
  cho (dir = 0; dir <4 b="" c="" dir="" eeprom="" font="" h="" hi="" i="" l="" lcd="" m="" n="" ng="" ngo="" nh="" p="" th="" trong="" v="">
  printf (lcd_putc, "\ n% d ~% s", dir, read_ext_eeprom (dir));
  delay_ms (1500); // chậm trễ cho các tin nhắn xuất hiện trên màn hình
  lcd_putc ("\ n"); // borrado 2ºlinea de lcd
  } 
 output_a (0b00); // apago port a
 lcd_putc ("\ fFin de lectura!");
 
 cho (;;) {// animacion ...
  for (dir = 1; dir <8 b="" font="" n="">
   lcd_gotoxy (dir, 2);
   lcd_putc ("VsZeNeR'05");
   delay_ms (200);
   lcd_putc ("\ n");
   }
  for (dir = 6; dir> 1; bạn -) {
   lcd_gotoxy (dir, 2);
   lcd_putc ("VsZeNeR'05");
   delay_ms (200);
   lcd_putc ("\ n");
   }
  } //...sau cùng     
} 
5x7 Led Matrix
5x7 Led Matrix
////////////////////////////////////////////////// ////////////////////////////////
// VsZeNeR'05  
// 19/12/05
// vszener@gmail.com
// Chương trình: Bảng chữ cái trong mảng LED 5x7
// Phiên bản: 0.0
//
// Thiết bị: Trình biên dịch PIC 16F648A: CCS vs3.236
// Môi trường IDE: MPLAB IDE v7.30 Simulator: Proteus 6.7sp3
//
// Ghi chú: Chương trình này hiển thị bằng bảng chữ cái trong ma trận đèn LED 5x7.
// Trong các cột, bộ giải mã 4028 được sử dụng để quét
// Kết nối: A0 -> A 4028 DEC        
// A1 -> B 4028 DEC
// A2 -> C 4028 DEC
// A3 -> D 4028 DEC
// B0 -> Ma trận hàng 1 5x7
// B1 -> ma trận Row 2 5x7
// B2 -> Hàng 3 ma trận 5x7
// B3 -> Ma trận Fila 4 5x7   
// B4 -> Ma trận Fila 5 5x7  
// B5 -> ma trận hàng 6 5x7    
// B6 -> ma trận Row 7 5x7            
////////////////////////////////////////////////// ////////////////////////////////

#include <16f648a .h=""> // pic một tiện ích    
#fuses XT, NOWDT, NOPROTECT, PUT, NOLVP // đơn đặt hàng cho lập trình viên 
#fuses INTRC // bộ dao động nội bộ
#use delay (clock = 4000000) // Fosc = 4Mhz
#use fast_io (a)
#use fast_io (b)

/// Biến thể GLOBAL TOÀN CẦU
int thư [5], tùy chọn = 0;

/// CALL CHỨC NĂNG TƯƠNG LAI
# INT_TIMER1
void interrupcion ()
{
 switch (tùy chọn) {// chọn chữ cái
  trường hợp 0: letra [0] = 0b00000001; // A
    thư [1] = 0b01110110;
    thư [2] = 0b01110110;
    thư [3] = 0b01110110;
    thư [4] = 0b00000001; 
    tùy chọn ++;
    phá vỡ;
  trường hợp 1: letra [0] = 0b01001001; // B
    thư [1] = 0b00110110;
    thư [2] = 0b00110110;
    thư [3] = 0b00110110;
    thư [4] = 0b00000000; 
    tùy chọn ++;
    phá vỡ;
  trường hợp 2: letra [0] = 0b00111110; // C 
    thư [1] = 0b00111110;
    thư [2] = 0b00111110;
    thư [3] = 0b00111110;
    thư [4] = 0b01000001; 
    tùy chọn ++;
    phá vỡ;
  trường hợp 3: letra [0] = 0b01000001; // D 
    thư [1] = 0b00111110;
    thư [2] = 0b00111110;
    thư [3] = 0b00111110;
    thư [4] = 0b00000000; 
    tùy chọn ++;
    phá vỡ;
  trường hợp 4: letra [0] = 0b00111110; // E 
    thư [1] = 0b00110110;
    thư [2] = 0b00110110;
    thư [3] = 0b00110110;
    thư [4] = 0b00000000; 
    tùy chọn ++;
    phá vỡ;
  trường hợp 5: letra [0] = 0b01111110; // F 
    thư [1] = 0b01110110;
    thư [2] = 0b01110110;
    thư [3] = 0b01110110;
    thư [4] = 0b00000000; 
    tùy chọn ++;
    phá vỡ;
  trường hợp 6: letra [0] = 0b01001110; // G 
    thư [1] = 0b00110110;
    thư [2] = 0b00110110;
    thư [3] = 0b00111110;
    thư [4] = 0b01000001; 
    tùy chọn ++;
    phá vỡ;
  trường hợp 7: letra [0] = 0b00000000; // H 
    thư [1] = 0b01110111;
    thư [2] = 0b01110111;
    thư [3] = 0b01110111;
    thư [4] = 0b00000000; 
    tùy chọn ++;
    phá vỡ;
  trường hợp 8: letra [0] = 0b00111110; //TÔI 
    thư [1] = 0b00111110;
    thư [2] = 0b00000000;
    thư [3] = 0b00111110;
    thư [4] = 0b00111110; 
    tùy chọn ++;
    phá vỡ;
  trường hợp 9: letra [0] = 0b01111111; // J 
    thư [1] = 0b00000000;
    thư [2] = 0b00111110;
    thư [3] = 0b00101110;
    thư [4] = 0b01001111; 
    tùy chọn ++;
    phá vỡ;
  trường hợp 10: letra [0] = 0b00111110; // K 
     thư [1] = 0b01011101;
     thư [2] = 0b01101011;
     thư [3] = 0b01110111;
     thư [4] = 0b00000000; 
     tùy chọn ++;
     phá vỡ;
  trường hợp 11: letra [0] = 0b00111111; // L 
     thư [1] = 0b00111111;
     thư [2] = 0b00111111;
     thư [3] = 0b00111111;
     thư [4] = 0b00000000; 
     tùy chọn ++;
     phá vỡ;
  trường hợp 12: letra [0] = 0b00000000; // M
     thư [1] = 0b01111101;
     thư [2] = 0b01111011;
     thư [3] = 0b01111101;
     thư [4] = 0b00000000; 
     tùy chọn ++;
     phá vỡ;
  trường hợp 13: letra [0] = 0b00000011; // N
     thư [1] = 0b01011111;
     thư [2] = 0b01101111;
     thư [3] = 0b01110111;
     thư [4] = 0b00000011; 
     tùy chọn ++;
     phá vỡ;
  trường hợp 14: letra [0] = 0b00000011; // Ñ
     thư [1] = 0b01011101;
     thư [2] = 0b01101101;
     thư [3] = 0b01110101;
     thư [4] = 0b00000011; 
     tùy chọn ++;
     phá vỡ;
  trường hợp 15: letra [0] = 0b01000001; // O
     thư [1] = 0b00111110;
     thư [2] = 0b00111110;
     thư [3] = 0b00111110;
     thư [4] = 0b01000001; 
     tùy chọn ++;
     phá vỡ;
  trường hợp 16: letra [0] = 0b01111001; // P 
     thư [1] = 0b01110110;
     thư [2] = 0b01110110;
     thư [3] = 0b01110110;
     thư [4] = 0b00000000; 
     tùy chọn ++;
     phá vỡ;
  trường hợp 17: letra [0] = 0b00000001; // Q 
     thư [1] = 0b00011110;
     thư [2] = 0b00101110;
     thư [3] = 0b00111110;
     thư [4] = 0b01000001; 
     tùy chọn ++;
     phá vỡ;
  trường hợp 18: letra [0] = 0b01111001; // R 
     thư [1] = 0b00110110;
     thư [2] = 0b01010110;
     thư [3] = 0b01100110;
     thư [4] = 0b00000000; 
     tùy chọn ++;
     phá vỡ;
  trường hợp 19: letra [0] = 0b01001110; //S
     thư [1] = 0b00110110;
     thư [2] = 0b00110110;
     thư [3] = 0b00110110;
     thư [4] = 0b00111001; 
     tùy chọn ++;
     phá vỡ;
  trường hợp 20: letra [0] = 0b01111110; // T 
     thư [1] = 0b01111110;
     thư [2] = 0b00000000;
     thư [3] = 0b01111110;
     thư [4] = 0b01111110; 
     tùy chọn ++;
     phá vỡ;
  trường hợp 21: letra [0] = 0b01000000; // U 
     thư [1] = 0b00111111;
     thư [2] = 0b00111111;
     thư [3] = 0b00111111;
     thư [4] = 0b01000000; 
     tùy chọn ++;
     phá vỡ;
  trường hợp 22: letra [0] = 0b01100000; // V 
     thư [1] = 0b01011111;
     thư [2] = 0b00111111;
     thư [3] = 0b01011111;
     thư [4] = 0b01100000; 
     tùy chọn ++;
     phá vỡ;
  trường hợp 23: letra [0] = 0b01000000; // W
     thư [1] = 0b00111111;
     thư [2] = 0b01000111;
     thư [3] = 0b00111111;
     thư [4] = 0b01000000; 
     tùy chọn ++;
     phá vỡ;
  trường hợp 24: letra [0] = 0b00111011; // X
     thư [1] = 0b01010111;
     thư [2] = 0b01101111;
     thư [3] = 0b01010111;
     thư [4] = 0b00111011; 
     tùy chọn ++;
     phá vỡ;
  case 25: letter [0] = 0b01111110; // Y
     thư [1] = 0b01111101;
     thư [2] = 0b00000011;
     thư [3] = 0b01111101;
     thư [4] = 0b01111110; 
     tùy chọn ++;
     phá vỡ;
  trường hợp 26: letra [0] = 0b00111100; // Z
     thư [1] = 0b00111010;
     thư [2] = 0b00110110;
     thư [3] = 0b00101110;
     thư [4] = 0b00011110; 
     option = 0;
  }
 set_timer1 (3036); // TMR1 tràn mỗi 0.5 giây         
}

void chính (void)
{
 int i; // biến contador
 
 enable_interrupts (INT_TIMER1); // interrupcion TIMER1 activada
 setup_timer_1 (T1_INTERNAL | T1_DIV_BY_8); // configuracion TMR1
 set_timer1 (65535); // Tải TMR1 cho tràn trực tiếp
 enable_interrupts (GLOBAL); // gián đoạn được kích hoạt
   
 set_tris_b (0x00); // portb salida
 set_tris_a (0x00); // cổng thoát
 
 làm {// bucle ...
  cho (i = 0; i <5 font="" i="">
   output_a (i); // columnas
      output_b (letra [i]); // filas
      delay_ms (10); // tạm dừng để có thể xem
      }
    } trong khi (TRUE); //...infinito
}
Văn bản cuộn màn hình LCD
Văn bản cuộn màn hình LCD
////////////////////////////////////////////////// //////////////////////////////////
// VsZeNeR'05  
// 29 / August / 05
// vszener@gmail.com
// Programa: VsZeNeR'05 mov pantalla
// Phiên bản: 0.0
//
// Thiết bị: Trình biên dịch PIC 16F648A: CCS vs3.227
// Môi trường IDE: MPLAB IDE v7.21 Simulator: Proteus 6.7sp3
//
// Ghi chú: Nó được hiển thị bằng màn hình LCD (LM016L) như từ VsZeNeR'05 
// nó di chuyển trên màn hình, bắt đầu ở hàng thứ nhất và kết thúc ở hàng thứ 2.
// Các biến cục bộ được sử dụng:
// · x -> các hàng chỉ mục, có kiểu char được ký vì chúng ta cần số âm
// để kết thúc thông báo xuất hiện đầu tiên ở hàng thứ 2 của màn hình LCD.
// · y -> chỉ mục cột: y = 1 -> cột thứ nhất
// y = 2 -> cột thứ hai
// 'x' được hiểu trên màn hình từ 1 đến 16 và 'y' từ 1 đến 2.
// Hãy nhớ rằng bạn phải đặt chỉ thị NOLVP để pin B4 là 
// thoát. 
//
// Kết nối: B0 -> E        
// B1 -> RS   
// B2 -> RW  
// B4 -> D4    
// B5 -> D5            
// B6 -> D6 
// B7 -> D7                   
////////////////////////////////////////////////// ////////////////////////////////

#include <16f648a .h=""> // pic một tiện ích    
#fuses XT, NOWDT, NOPROTECT, PUT, NOLVP // đơn đặt hàng cho lập trình viên 
#use delay (clock = 4000000) // Fosc = 4Mhz
#define use_portb_lcd TRUE // definir portb lcd
#include  // libreria manejo lcd
  
/// PROGRAM
void chính (void)
{
 char y = 1; // cột chỉ mục
 ký char x = 1; // indice filas
 
 lcd_init (); // khởi tạo lcd
 
 trong khi (TRUE) {// bucle ...
  lcd_gotoxy (x, y); // con trỏ để viết tin nhắn
  lcd_putc ("VsZeNeR'05"); // hiển thị thông báo trên màn hình
  delay_ms (150);   
  x ++; // tăng chỉ số hàng
  if (x> 16) {// có toàn bộ thông điệp được hiển thị bởi 1ºfila không?
   x = -8; // SI -> chỉ mục hàng x = -8
   và ++; // tăng cột chỉ mục
   nếu (y> 2) // có thông báo được hiển thị theo cột thứ 2 không?
    y = 1; // SI -> khôi phục cột chỉ mục
   }
  lcd_putc ("\ f"); // borra pantalla  
  } //...infinito
}
Ứng dụng LCD DS1302
Ứng dụng LCD DS1302
////////////////////////////////////////////////// //////////////////////////////////
// VsZeNeR'05  
// 09/09/05
// vszener@gmail.com
// Chương trình: Đồng hồ lịch DS1302
// Phiên bản: 0.0
//
// Thiết bị: Trình biên dịch PIC 16F648A: CCS vs3.227
// Môi trường IDE: MPLAB IDE v7.21 Simulator: Proteus 6.7sp3
//
// Ghi chú: Ngày và thời gian thu được bằng màn hình hiển thị được hiển thị bằng màn hình LCD (LM016L)
// đọc DS1302. Có thể sửa đổi bằng các nút Conf / Ok và lên.
// Biến toàn cục được sử dụng:
// · ngày-> dia ds1302
// · mth -> mes ds1302
// · năm -> año ds1302
// · giờ -> hora ds1302
// · phút -> phút ds1302
// · sec-> segundos ds1302
// · menu -> biến hiển thị cấu hình tùy chọn menu
// · flag -> biến đếm lên tới 130ms.
/ / Var -> điều chỉnh tốt để nó tràn mỗi 130ms khoảng.
// TMR0 được nạp với 0 vì vậy nó tràn trong khoảng 65ms, chúng tôi muốn
// hiển thị và khôi phục các giá trị được lấy từ ds1302 mỗi khoảng 130ms, do đó
// chúng tôi sử dụng một biến được gọi là cờ sẽ chịu trách nhiệm cho tác vụ này.
// Khi bắt đầu chương trình, đồng hồ phải được định cấu hình, nút 'lên' là
// chịu trách nhiệm di chuyển qua các tùy chọn menu: giờ, phút, ....
// và nút 'Conf / Ok' chịu trách nhiệm thiết lập đồng hồ (khi chúng ta đang ở chế độ xem
// thời gian và ngày) hoặc người phụ trách rời khỏi cấu hình của các tùy chọn (khi nào
// chúng tôi đang ở định dạng để định cấu hình ngày và giờ).
// Hãy nhớ rằng bạn phải đặt chỉ thị NOLVP để pin B4 là 
// thoát. 
// Conexiones: A0 -> RST DS1302
// A1 -> SCLK DS1302
// A2 -> I / O DS1302
// A3 -> Boton 'lên'
// A5 -> Boton 'Conf / Ok'
// B0 -> E        
// B1 -> RS   
// B2 -> RW  
// B4 -> D4    
// B5 -> D5            
// B6 -> D6 
// B7 -> D7
// B3 -> Zumbador (tiếng bíp)                   
////////////////////////////////////////////////// ////////////////////////////////

#include <16f648a .h=""> // pic một tiện ích    
#use delay (CLOCK = 4000000) // Fosc = 4Mhz 
#fuses HS, NOPUT, NOPROTECT, NOBROWNOUT, NOLVP, NOWDT, NOMCLR // comandos para el programador 
#use standard_io (a)
#use standard_io (b)
#define use_portb_lcd TRUE // sử dụng cổng b cho lcd 
#define RTC_SCLK PIN_A1 // pin của definimos ...
#define RTC_IO PIN_A2
#define RTC_RST PIN_A0 //...de conexion de la rtc ds1302
#include  // libreria de rtc ds1302 
#include  // libreria de lcd

/// Biến thể GLOBAL
byte ngày, mth, năm, dow, giờ, phút, giây; // variabes para ds1302
menu byte = 0, cờ = 0, var = 2; // variables para menu configurar

/// ĐỊNH NGH OFA CHỨC NĂNG 
void configurar (void);
void horas (void);     
void minutos (void);
void dia (void);
void mes (void);
void anio (void);
void beep (void);

/// CALL CHỨC NĂNG TƯƠNG LAI
# INT_TIMER0
void interrupcion ()
{
 if (flag> var) {// ¿ya es 130ms aprox?
  var--; // SI -> decremento var ...
  if (var == 0)
   var = 2; // ... điều chỉnh tốt khoảng 130ms
  flag = 0; // đặt lại cờ para contar 130ms aprox
  rtc_get_date (ngày, tháng, năm, tháng); // coge dia, mes, año
       rtc_get_time (giờ, phút, giây); // lấy giờ, phút, giây
  printf (lcd_putc, "\ fFecha:% 2X /% 2X /% 2X \ nHora:% 2X:% 2X:% 2X", ngày, tháng, năm, giờ, phút, giây); // lcd
  }
  
 set_timer0 (0); // đặt lại TMR0
 cờ ++; // cờ biến incremento
}

/// PROGRAM
void main (void) { 
 
 enable_interrupts (INT_TIMER0); // interrupcion TIMER0 activada
 setup_counters (RTCC_INTERNAL, RTCC_DIV_256); // configuracion interrupcion TMR0
 set_timer0 (0); // carga TMR0
 
 lcd_init (); // khởi tạo lcd
 rtc_init (); // inicializa rtc
 
 lcd_putc ("Reloj Calendario \ n VsZeNeR'05"); // presentacion ...
 delay_ms (800); //...inicial
 
 configure (); // vào menu cài đặt
 enable_interrupts (GLOBAL); // gián đoạn được kích hoạt
 
  cho (;;) {// bucle ...
  if (đầu vào (PIN_A5) == 0) {// Si se pulsa Conf ....
   while (! input (PIN_A5)) {} // rebina loại bỏ
   tiếng kêu bíp();
   configure ();
   } // đi tới cấu hình trình đơn
  } //...infinito    
} 

/// CHỨC NĂNG CONFIGURE
void configurar (void) {
 disable_interrupts (GLOBAL); // gián đoạn bị hủy kích hoạt
 
 làm {
  switch (menu) {
   case 0: lcd_putc ("\ fConfigurar \ nhoras?"); // horas
     if (! input (PIN_A5)) {
      trong khi (! đầu vào (PIN_A5)) {}
      tiếng kêu bíp();
      giờ ();
      menu = 1; // trỏ tới tùy chọn tiếp theo
      }
     phá vỡ;
   trường hợp 1: lcd_putc ("\ fConfigurar \ nminutos?"); // minutos
     if (! input (PIN_A5)) {
      trong khi (! đầu vào (PIN_A5)) {}
      tiếng kêu bíp();
      phút ();
      menu = 2; // trỏ tới tùy chọn tiếp theo
      }
     phá vỡ;
   trường hợp 2: lcd_putc ("\ fConfigurar \ ndia?"); // dias
     if (! input (PIN_A5)) {
      trong khi (! đầu vào (PIN_A5)) {}
      tiếng kêu bíp();
      ngày ();
      menu = 3; // trỏ tới tùy chọn tiếp theo
      }
     phá vỡ;
   trường hợp 3: lcd_putc ("\ fConfigurar \ nmes?"); // mes
     if (! input (PIN_A5)) {
      trong khi (! đầu vào (PIN_A5)) {}
      tiếng kêu bíp();
      (Của tôi);
      menu = 4; // trỏ tới tùy chọn tiếp theo
      }
     phá vỡ;
   trường hợp 4: lcd_putc ("\ fConfigurar \ nanio?"); // años
     if (! input (PIN_A5)) {
      trong khi (! đầu vào (PIN_A5)) {}
      tiếng kêu bíp();
      anio ();
      menu = 5; // trỏ tới tùy chọn tiếp theo
      }
     phá vỡ;
   trường hợp 5: lcd_putc ("\ fSalir \ nconfigurar?"); // salir configuracion
     if (! input (PIN_A5)) {
      menu = 6;
      tiếng kêu bíp();
      }     
   }
   
  if (! input (PIN_A3)) {// controla el boton up ...
   trong khi (! đầu vào (PIN_A3)) {}
   menu ++;
   if (menu> 5)
    menu = 0;
   } //...để hiển thị menu bằng màn hình LCD
   
  delay_ms (130); // chậm trễ để xem lcd
  } trong khi (menu <6 font="">
  
  menu = 0; // cập nhật menu chỉ mục
  rtc_set_datetime (ngày, tháng, năm, giờ, phút); // nueva hora, minuto, ...
  enable_interrupts (GLOBAL); // gián đoạn được kích hoạt
  set_timer0 (0); // carga TMR0
}
/// CÀI ĐẶT CÀI ĐẶT CHỨC NĂNG
void horas (void) {
 printf (lcd_putc, "\ fConf.Horas: \ nHora:% 2X:% 2X:% 2X", giờ, phút, giây); // muestra por lcd
 làm {
  if (! input (PIN_A3)) {// ¿se ha pulsado lên?
   while (! input (PIN_A3)) {} // rebina loại bỏ
   giờ ++; // SI -> giờ tăng dần
   chuyển đổi (giờ) {// giới hạn ...
    trường hợp 0x0A: giờ = 0x10; ngắt;  
    trường hợp 0x1A: giờ = 0x20; ngắt;
    trường hợp 0x24: giờ = 0x00;
    } //...hour
   printf (lcd_putc, "\ nHora:% 2X:% 2X:% 2X", giờ, phút, giây); // muestra por lcd hour
   }
  } while (đầu vào (PIN_A5));
 while (! input (PIN_A5)) {} // rebina loại bỏ
}
/// CONFIGURE MINUTES FUNCTION
void minutos (void) {
 printf (lcd_putc, "\ fConf.Minutos: \ nHora:% 2X:% 2X:% 2X", giờ, phút, giây); // muestra por lcd
 làm {
  if (! input (PIN_A3)) {// ¿se ha pulsado lên?
  while (! input (PIN_A3)) {} // rebina loại bỏ
  min ++; // CÓ -> phút tăng
  chuyển đổi (tối thiểu) {// giới hạn ...
   trường hợp 0x0A: min = 0x10; ngắt;
   trường hợp 0x1A: min = 0x20; ngắt;
   trường hợp 0x2A: min = 0x30;
   case 0x3A: min = 0x40; ngắt;
   trường hợp 0x4A: min = 0x50; ngắt;
   case 0x5A: min = 0x00;
   } //...min
  printf (lcd_putc, "\ nHora:% 2X:% 2X:% 2X", giờ, phút, giây); // muestra por lcd min
  }
  } while (đầu vào (PIN_A5));
 while (! input (PIN_A5)) {} // rebina loại bỏ
}
/// CONFIGURATION DAY FUNCTION
void dia (void) {
 printf (lcd_putc, "\ fConf.Dias: \ nFecha:% 2X /% 2X /% 2X", ngày, tháng, năm); // muestra por lcd
 làm {
  if (! input (PIN_A3)) {// ¿se ha pulsado lên?
   while (! input (PIN_A3)) {} // rebina loại bỏ
   ngày ++; // SI -> incremento day
   chuyển đổi (ngày) {// giới hạn ...
    trường hợp 0x0A: ngày = 0x10; ngắt;
    trường hợp 0x1A: ngày = 0x20; ngắt;
    trường hợp 0x2A: ngày = 0x30;
    trường hợp 0x32: ngày = 0x01;
    } //...ngày
   printf (lcd_putc, "\ fConf.Dias: \ nFecha:% 2X /% 2X /% 2X", ngày, tháng, năm); // muestra por lcd day
   }
  } while (đầu vào (PIN_A5));
 while (! input (PIN_A5)) {} // rebina loại bỏ
}
/// CHỨC NĂNG CONFIGURE MONTH
void mes (void) {
 printf (lcd_putc, "\ fConf.Mes: \ nFecha:% 2X /% 2X /% 2X", ngày, tháng, năm); // muestra por lcd
 làm {
  if (! input (PIN_A3)) {// ¿se ha pulsado lên?
   while (! input (PIN_A3)) {} // rebina loại bỏ
   mth ++; // SI -> incremento mth
   chuyển đổi (mth) {// giới hạn ...
    trường hợp 0x0A: mth = 0x10; ngắt;
    trường hợp 0x13: mth = 0x01;
    } //...mth
  printf (lcd_putc, "\ fConf.Mes: \ nFecha:% 2X /% 2X /% 2X", ngày, tháng, năm); // muestra por lcd
   }
  } while (đầu vào (PIN_A5));
 while (! input (PIN_A5)) {} // rebina loại bỏ
}
/// CONFIGURE NĂM CHỨC NĂNG
void anio (void) {
 printf (lcd_putc, "\ fConf.Anio: \ nFecha:% 2X /% 2X /% 2X", ngày, tháng, năm); // muestra por lcd
 làm {
  if (! input (PIN_A3)) {// ¿se ha pulsado lên?
   while (! input (PIN_A3)) {} // rebina loại bỏ
   năm ++; // SI -> incremento mth
   chuyển đổi (năm) {// giới hạn ...
    trường hợp 0x0A: năm = 0x10; ngắt;
    case 0x1A: year = 0x20; break;
    trường hợp 0x2A: năm = 0x30;
    trường hợp 0x3A: năm = 0x40; ngắt;
    case 0x4A: year = 0x50; break;
    trường hợp 0x5A: năm = 0x60; ngắt;
    case 0x6A: year = 0x70; break;
    trường hợp 0x7A: năm = 0x80; ngắt;
    trường hợp 0x8A: năm = 0x90; ngắt;
    trường hợp 0x9A: năm = 0x00;
    } //...year
  printf (lcd_putc, "\ fConf.Anio: \ nFecha:% 2X /% 2X /% 2X", ngày, tháng, năm); // muestra por lcd
   }
  } while (đầu vào (PIN_A5));
 while (! input (PIN_A5)) {} // rebina loại bỏ
}
/// FUNCION BEEP
void beep (void) {
 output_high (PIN_B3); // activa zumbador
 delay_ms (50);
 output_low (PIN_B3); // desactiva zumbador
}
In một chữ cái trên màn hình LCD
In một chữ cái trên màn hình LCD
////////////////////////////////////////////////// //////////////////////////////////
// VsZeNeR'05  
// 26 / August / 05
// vszener@gmail.com
// Chương trình: Abecedario
// Phiên bản: 0.0
//
// Thiết bị: Trình biên dịch PIC 16F648A: CCS vs3.227
// Môi trường IDE: MPLAB IDE v7.21 Simulator: Proteus 6.7sp3
//
// Ghi chú: Nó được hiển thị bằng màn hình LCD (LM016L) bảng chữ cái và quay lại để bắt đầu 
// Hãy nhớ rằng bạn phải đặt chỉ thị NOLVP để pin B4 là 
// thoát. 
// · abecedario [] -> vectơ nơi abecedario được lưu trữ
// · x -> chỉ mục cho bảng chữ cái vector và chỉ mục cho cột LCD
// · y -> chỉ mục cho hàng lcd: y = 1 -> Hàng 1
// y = 2 -> Hàng 2
// Kết nối: B0 -> E        
// B1 -> RS   
// B2 -> RW  
// B4 -> D4    
// B5 -> D5            
// B6 -> D6 
// B7 -> D7                   
////////////////////////////////////////////////// ////////////////////////////////

#include <16f648a .h=""> // pic một tiện ích    
#fuses XT, NOWDT, NOPROTECT, PUT, NOLVP // đơn đặt hàng cho lập trình viên 
#use delay (clock = 4000000) // Fosc = 4Mhz
#define use_portb_lcd TRUE // definir portb lcd
#include  // libreria manejo lcd
  
/// PROGRAM
void chính (void)
{
 char abecedario [27] = {'', 'a', 'b', 'c', 'd', 'e', ​​'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w ',' x ',' y ',' z '}, x, y = 1; // biến tabla y definidas
  
 lcd_init (); // khởi tạo lcd
 
 làm {// bucle ...
 cho (x = 1; x <27 ch="" font="" hi="" l="" n="" ng="" p="" s="" th="" v="" x="">
  if (y == 1) // hàng đầu tiên của màn hình LCD
   lcd_gotoxy (x, y);
  else // hàng thứ 2 của màn hình LCD
   lcd_gotoxy ((x-16), y);
  
  if (x> 15) // Hàng đầu tiên của LCD đã hoàn thành chưa?
   y = 2; // SI -> viết ở hàng thứ 2
   
  printf (lcd_putc, "% c", bảng chữ cái [x]); // hiển thị ký tự trên màn hình  
  delay_ms (300);     
  }
 printf (lcd_putc, "\ f"); // borra pantalla del lcd
 y = 1; // chỉ mục đặt lại
 } trong khi (TRUE); //...infinito
}
4 Ledli Black Lightning
4 Ledli Black Lightning
////////////////////////////////////////////////// //////////////////////////////////
// VsZeNeR'04  
// 12 / August / 05
// vszener@gmail.com
// Chương trình: Fantastic Car
// Phiên bản: 1.0
//
// Thiết bị: Trình biên dịch PIC 16F648A: CCS vs3.227
// Môi trường IDE: MPLAB IDE v7.20 Simulator: Proteus 6.7sp3
//
// Ghi chú: LED quét mô phỏng ánh sáng xe tuyệt vời bởi
// cổng B bằng phương tiện lệnh xoay.
//
// RB0 -> 1º Led
// RB1 -> 2º Led
// RB2 -> 3º Led
// RB3 -> 4º Led
////////////////////////////////////////////////// ////////////////////////////////

#include <16f648a .h=""> // pic một tiện ích    
#fuses XT, NOWDT, NOPROTECT, PUT // đơn đặt hàng cho lập trình viên 
#use delay (clock = 4000000) // Fosc = 4Mhz
#use standard_io (B) // cổng B là đầu ra
#byte portb = 0x6 // địa chỉ cổng b

/// PROGRAM
void chính (void)
{
 int led_on = 0b0001; // dẫn đầu một iluminar
 set_tris_b (0xf0); // portb là đầu ra (một số bị vô hiệu hóa)
 disable_interrupts (GLOBAL); // tất cả các ngắt bị tắt
 
 làm {// bucle ...
  
  do {// ánh sáng bên trái
   portb = led_on;
   rotate_left (& led_on, 1);
   delay_ms (300);
   } while (bit_test (led_on, 3) == 0);
  
  do {// ánh sáng ở bên phải
   portb = led_on;
   rotate_right (& led_on, 1);
   delay_ms (300);
   } while (bit_test (led_on, 0) == 0);
   
  } trong khi (TRUE); //...infinito
}
8 Ledli Black Lightning Circuit
8 Ledli Black Lightning Circuit
////////////////////////////////////////////////// //////////////////////////////////
// VsZeNeR'04  
// 14 / August / 05
// vszener@gmail.com
// Chương trình: Fantastic Car
// Phiên bản: 2.0
//
// Thiết bị: Trình biên dịch PIC 16F648A: CCS vs3.227
// Môi trường IDE: MPLAB IDE v7.20 Simulator: Proteus 6.7sp3
//
// Ghi chú: LED quét mô phỏng ánh sáng xe tuyệt vời bởi
// port B. Thích ứng của mã trong cơ bản de lordlafebre 
//
// RB0 -> 1º Led
// RB1 -> 2º Led
// RB2 -> 3º Led
// RB3 -> 4º Led
// RB4 -> 5º Led
// RB5 -> 6º Led
// RB6 -> 7º Led
// RB7 -> 8º Led
// Trong biến tiếp theo, các giá trị được lưu trữ 1-2-4-8-16-32-64-128
//     que en binario corresponden a la secuencia 00000001-00000010-00000100...
//     son los led's a iluminar, coincidiendo con la secuencia de iluminacion
//     del coche fantastico(version Ecuatoriana: auto fantastico)
//////////////////////////////////////////////////////////////////////////////////

#include <16f648a .h="">    //pic a utilizar    
#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP  //ordenes para el programador 
#use delay (clock=4000000)   //Fosc=4Mhz
#use standard_io(B)     //puerto B como salida

///PROGRAMA
void main(void)
{
 int i,cont;      //variables definidas
 set_tris_b(0x00);    //portb como salida
 disable_interrupts(GLOBAL);  //todas las interrupciones desactivadas
 
 do{        //bucle...
  cont=1;      //inicializar...
  i=1;      //...variables
  
  do{       //led's on derecha
   output_b (tiếp theo); // chiếu sáng tương ứng
   delay_ms (100);
   tài khoản tài khoản = * 2;
   i ++; // incremento i
   } trong khi (i <8 font="">
   
  i = 1; // đặt lại valor i
  
  do {// led's trên izquierda
   output_b (tiếp theo); // chiếu sáng tương ứng
   delay_ms (100);
   tài khoản = Tiếp / 2;
   i ++; // incremento i
   } trong khi (i <8 font="">
   
  } trong khi (TRUE); //...infinito
}

DANH SÁCH ỨNG DỤNG VÍ DỤ ĐƠN GIẢN PIC C

16F628A LED on-off 
16f648a tự tuyệt vời là 
16f648A Luces trò chơi 
aupa depo 
betis 
c , ASM 
chụp CCP1 
ccp1_pwm 
ccp1_pwm_vs2 
chìa khóa 
xe ngựa tuyệt vời 
comecocos 
truy cập 0000a9999 
truy cập 00_99 
tăng dần truy cập 
tự động truy cập 
BCD truy cập 0A9 
BCD truy cập rev 
xuống truy cập 
đảo ngược truy cập 
dữ liệu 
phân phối d thay đổi 
DS1620 
Lỗi Int PORTB 
hola_rot_7seg 
int PORTB 
int RB0 
int RDA EEPROM 25lc256 
int DDR nội EEPROM 
int EEPROM nội DDR
bộ trong khi 
bộ
LCD & 24lc256 
LCD & bàn phím 
LCD & rs232 
lcd abecedario 
lcd caracter nuevo 
lcd Contador 
lcd ds1302 
lcd hola_mundo 
lcd limites 
lcd mover palabra 
lcd đọc & viết eeprom Tế 
limites 7seg 
ma trận dẫn 5x7 
Parpadeo un dẫn 
parpadeo4leds 
PCF8591 ADC 
PCF8591 nghị đến 
publicar 
Reloj 7seg 
rs232 & bàn phím 
rs232 & leds 
saa1064 16disp 7seg 
saa1064 dinamico 
saa1064 estatico 
version_ahorro_1pin 
vs_pcf8591 
PIC C
Nguồn: todopic.mforos.com Tất cả các tập tin: Microchip PIC Series CCS C Ví dụ Ứng dụng đơn giản
Tải xuống tệp LINK danh sách (ở định dạng TXT) link-2101.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