Bài đăng

Hiển thị các bài đăng có nhãn Lập Trình Mikro C

(Mikro C) Đồng hồ thời gian thực - DS1307 (real time - Mikro C code)

Hình ảnh
sơ đồ nguyên lý cảm biến thời gian thực DS1307 Sơ đồ nguyên lý sử dụng vdk PIC 16f887, cảm biến thời gian thực DS1307 + pin nuôi và một số nút nhấn để điều chỉnh thời gian cho phù hợp. Mạch sử dụng giao tiếp I2C, đọc và hiển thị thời gian lên LCD.  sau đây là code :  sbit LCD_RS at RD0_bit;  sbit LCD_EN at RD1_bit;  sbit LCD_D4 at RD4_bit;  sbit LCD_D5 at RD5_bit;  sbit LCD_D6 at RD6_bit;  sbit LCD_D7 at RD7_bit;  sbit LCD_RS_Direction at TRISD0_bit;  sbit LCD_EN_Direction at TRISD1_bit;  sbit LCD_D4_Direction at TRISD4_bit;  sbit LCD_D5_Direction at TRISD5_bit;  sbit LCD_D6_Direction at TRISD6_bit;  sbit LCD_D7_Direction at TRISD7_bit;  short readdata(short adrs)  {   short getinp;   I2C1_Start();   I2C1_Wr(0xD0);   I2C1_Wr(adrs);   I2C1_Repeated_Start();   I2C1_Wr(0xD1);   getinp=I2C1_Rd(0);   I2C1_Stop();   return getinp;  }  void writedata(unsigned short adrs,short writedat)  {   I2C1_Start();   I2C1_Wr(0xD0);   I2C1_Wr(adrs);   I2C1_Wr(writeda

(Mikro C) Điều khiển động cơ bước dùng PIC 16F887 (step motor code Mikro C)

Hình ảnh
Mô phỏng điều khiển động cơ bước Mạch sử dụng IC PIC 16f887, động cơ bước, uln2003, LCD và một số nút nhấn để điều khiển. Nguyên lý hoạt động có hai phương pháp để điều khiển động cơ bước, đó là điều khiển nửa bước (half step) và đủ bước (full step). Link download this project (code + altium) : google drive:  project MikroC github:  https://github.com/minhhieuec/pic-stepper-motor-controller Code trên chỉ đúng với mô phỏng, để đúng với thực tế, tùy theo số góc bước của động cơ bước, tùy theo phương pháp điều khiển (đủ bước, nửa bước) các bạn chỉnh lại cho phù hợp. vd : mình dùng động cơ có góc bước là : 7,5* Bạn hãy tưởng tượng động cơ bước là 2 bánh răng được ghép với nhau, bánh răng nhỏ quay được một vòng, thì bánh răng lớn sẽ quay được 7,5 độ (số góc bước của động cơ). Tức là mình kích 1 vòng như hình trên :       // chế độ quay thuận, quay nghịch thì ngược lại nhé!        PORTD=0x08;        Delay_ms(100);        PORTD=0x0C;        Delay_ms(100);        PORTD=0x

(Mikro C) đọc phím nhấn keypad (keypad mikro C code)

Hình ảnh
đọc phím nhấn của Keypad 4x4 sử dụng PIC 16F887. sơ đồ kết nối  code :  char  keypadPort at PORTC; sbit LCD_RS at RB0_bit; sbit LCD_EN at RB1_bit; sbit LCD_D4 at RB4_bit; sbit LCD_D5 at RB5_bit; sbit LCD_D6 at RB6_bit; sbit LCD_D7 at RB7_bit; sbit LCD_RS_Direction at TRISB0_bit; sbit LCD_EN_Direction at TRISB1_bit; sbit LCD_D4_Direction at TRISB4_bit; sbit LCD_D5_Direction at TRISB5_bit; sbit LCD_D6_Direction at TRISB6_bit; sbit LCD_D7_Direction at TRISB7_bit; void main() {   char kp=0;   ANSEL=0;   ANSELH=0;   TRISC=1;   TRISB=0;   PORTB=0x00;   Keypad_Init();   LCD_INIT();   lcd_cmd(_lcd_cursor_off);   while(1)   {       kp = Keypad_Key_press();       switch(kp)       {         case 1 :         lcd_cmd(_lcd_clear);         lcd_out(1,1,"7");         break;         case 2 :         lcd_cmd(_lcd_clear);         lcd_out(1,1,"8");         break;         case 3 :         lcd_c

(Mikro C) Đọc giá trị điện áp hiện thị lên Led 7 đoạn

Hình ảnh
phần mềm sử dụng : Mikro C, proteus IC : PIC 16F887 sử dụng chức năng ADC ở PORT A của VĐK để đọc giá trị điện áp 5V và hiển thị lên LED 7 đoạn. code : code unsigned char led7seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0xf8,0x80,0x90}; unsigned int adc; unsigned int dienap; int i; int a; int b; int e; int g; void main() {    ANSEL=0X01;    ANSELH=0;    TRISA.B0=1;    TRISB=0;    TRISD=0;    PORTB=0X00;    PORTD=0X00;    while(1)    {       adc=adc_read(0);       dienap=adc*5000.0f/1023;       a=dienap/1000;       portb=0x01;       portd=led7seg[a];       delay_ms(1);       b=dienap/100-a*10;       portb=0x02;       portd=led7seg[b];       delay_ms(1);       e=dienap/10-a*100-b*10;       portb=0x04;       portd=led7seg[e];       delay_ms(1);       g=dienap-a*1000-b*100-e*10;       portb=0x08;       portd=led7seg[g];       delay_ms(1);    } }