toilet

STM8S003F3P6 Giao tiếp LCD 16x2 chế độ 4 bit Designed by Lượng Trần 0989.285.187

Thảo luận trong 'STM8'

Đang xem chủ đề này ( Thành viên: 0, Khách: 0)

  1. Đăng 29/5/14 #1

    Tran luong Trần Đình Lượng, Đt: 0989285187-HCM

    Số bài viết: 463
    Đã được thích: 361
    Yahoo Messenger
    Facebook Profile
    STM8S003F3P6 Giao tiếp LCD 16x2 chế độ 4 bit Designed by Lượng Trần 0989.285.187

    - Mạch sử dụng chip STM8S003F3P6 dạng 20 chân dán.
    [​IMG]
    - Mạch nạp mình mua ở bên này:
    ST-Link-V2 Mini (Mạch nạp STM8 và STM32 ) - www.tme.vn - Linh kien dien tu, Kit Phat trien, Mach nap, GSM, GPS, GPRS, RF,  8051, PIC, AVR, ARM, EPROM, Flash
    [​IMG]
    - Video demo:



    - Cuối cùng là Code demo: Chúc các bạn thành công!
    Mã:
    #include "stm8s.h"
    #include <string.h>
    #include <iostm8s003f3.h>
    #include <intrinsics.h>
    #include <stm8s_it.h>
    #define LED  PD_ODR_ODR4
    #define LCD_RS  PB_ODR_ODR5
    #define LCD_EN  PB_ODR_ODR4
    #define LCD_D4    PC_ODR_ODR4
    #define LCD_D5    PC_ODR_ODR5
    #define LCD_D6    PC_ODR_ODR6
    #define LCD_D7    PC_ODR_ODR7
    #define Line_1 0x80
    #define Line_2 0xC0      /////// lcd
    #define Clear_LCD 0x01
    void delay_us(unsigned int time)
    {
       unsigned int i;
       for(i=0;i<time;i++)
       {
          ;// khong lam gi ca
       }
    }
    void delay_ms(unsigned time)
    {
        unsigned int i,j;
        for(i=0;i<time;i++)
        for(j=0;j<125;j++)
        {
          ;// khong lam gi ca
        }
    }
    void LCD_Enable(void)
    {
      LCD_EN = 1;
    delay_us(3);
      LCD_EN=0;
      delay_us(50);
    }
    void LCD_Send4Bit( unsigned char Data )
    {
    LCD_D4= Data & 0x01;
    LCD_D5= (Data>>1)&1;
    LCD_D6= (Data>>2)&1; // gui data 4 bit
    LCD_D7= (Data>>3)&1;
    }
    void LCD_SendCommand (unsigned char command )
    {
    LCD_Send4Bit  ( command >>4 );/* Gui 4 bit cao */
    LCD_Enable () ;                                      // gui data 8 bit
    LCD_Send4Bit  ( command  ); /* Gui 4 bit thap*/
    LCD_Enable () ;
    }
    void LCD_Init ( void )
    {
    LCD_Send4Bit(0x00);
    delay_ms(10);
    LCD_RS=0;
    LCD_Send4Bit(0x03);
    LCD_Enable();
    delay_ms(5);                         // khai bao LCD che do 4bit 5x7
    LCD_Enable();
    delay_us(100);
    LCD_Enable();
    LCD_Send4Bit(0x02);
    LCD_Enable();
    LCD_SendCommand( 0x28 );      // giao thuc 4 bit, hien thi 2 hang, ki tu 5x8
    LCD_SendCommand( 0x0c);     // cho phep hien thi man hinh
    LCD_SendCommand( 0x06 );      // tang ID, khong dich khung hinh
    LCD_SendCommand( Clear_LCD ); // xoa toan bo khung hinh
    }
    //////////////////////
    void LCD_Gotoxy(unsigned char x, unsigned char y)// x:vi tri con tro( 0-->15), y : vi tri dong ( 0: dong 1,1 dong 2)
    {
      unsigned char address;
      if(!y)
      address = (Line_1+x);
      else  address = (Line_2+x);     // xac dinh vi tri con tro
      delay_us(300);
      LCD_SendCommand(address);
      delay_us(50);
    }
    void LCD_Clear()
    {
      LCD_SendCommand( Clear_LCD );  // xoa LCD
      delay_us(10);
    }
    void LCD_PutChar ( unsigned char Data )  // LCD_Putchar('x')
    {
    LCD_RS=1;
    LCD_SendCommand( Data );  //  xuat data 8 bit 1 ki tu
    LCD_RS=0 ;
    }
    void LCD_Puts (char *s)// LCD_Puts("xxx")
    {
       while (*s)
       {
          LCD_PutChar(*s);  // xuat chuoi data "xxx"
          s++;
       }
    }
    void LCD_Putn(unsigned char c)
    {
      LCD_EN = 1;// Cho fep muc cao
      LCD_RS=1;// Ghi du lieu                // xuat so xxx+48
      LCD_PutChar(c);// Gia tri C
      LCD_EN = 0;// Xung cao xuong thap
      delay_ms(10);// Cho 
    }
    //////////////////////////////////////////
    void InitClock(void)
    {
      /*
       CLK_ICKR_HSIEN = 1;
       while(!CLK_ICKR_HSIRDY);
       CLK_CKDIVR = 0x00;
      */
        CLK_DeInit();
        CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);      //f_Master = HSI/1 = 16MHz
        CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV16);            //f_CPU = f_Master/1 = 16MHz
        while(CLK_GetFlagStatus(CLK_FLAG_HSIRDY)!=SET);     //wait until HSI ready
    }
    //////////////////////////////////////////
    void InitGPIO(void)
    {
      PB_DDR = 0xFF;
      PB_CR1 = 0xFF;
      PC_DDR = 0xFF;
      PC_CR1 = 0xFF;
      PD_DDR = 0xFF;
      PD_CR1 = 0xFF;
    }
    //////////////////////////////////////////
    void InitTimer4(void)
    {
      TIM4_CR1_ARPE = 1;
      TIM4_IER_UIE  = 1;
      TIM4_PSCR     = 0x07;
      TIM4_ARR      = 250;
         TIM4_CR1_CEN = 1;
      __enable_interrupt();
    }
    //////////////////////////////////////////
    uint16_t k = 0;
    int ngay=0, gio=0, phut=0, giay=0;
      void main(void)
      {
       InitClock();
       InitGPIO();
    
       LCD_Init();
       LCD_Clear();
       LED=1;
       delay_ms(500);
       LED=0;
       delay_ms(500);
       LCD_Gotoxy(0,0);
       LCD_Puts("HI STM8S003F3P6!");
       LCD_Gotoxy(0,1);
       LCD_Puts("MY NAME IS LUONG");
       delay_ms(2000);
      LCD_Gotoxy(0,0);
       LCD_Puts("I AM VERY FUNNY!");
       LCD_Gotoxy(0,1);
       LCD_Puts("WHEN YOU'RE MINE");
       delay_ms(2000);
    
       InitTimer4();
    
      while(1)
      {
    
       LCD_Gotoxy(0,0);
       LCD_Puts(" Time Hien Tai: ");
       LCD_Gotoxy(0,1);
       LCD_Puts("    ");
       LCD_Gotoxy(4,1);
       LCD_PutChar(gio/10+48);
       LCD_PutChar(gio%10+48);
       LCD_PutChar(':');
       LCD_PutChar(phut/10+48);
       LCD_PutChar(phut%10+48);
       LCD_PutChar(':');
       LCD_PutChar(giay/10+48);
       LCD_PutChar(giay%10+48);
       LCD_Puts("        ");
      }
      }
    #pragma vector=TIM4_OVR_UIF_vector
    __interrupt void Timer4_ISR(void)
    {
      TIM4_SR_UIF = 0;
    
        k++;
        if(k==500)
        {
          GPIO_WriteReverse(GPIOD,GPIO_PIN_4);
              k=0;giay++;
              if(giay==60)
              {
              phut++;
              giay=0;
                 if(phut==60)
                 {
                 gio++;
                 phut=0;
              
                    if(gio==24)
                    {
                    gio=0;
                    ngay++;
                    }
                 }
              }
        }
    }
    Trần Tài, Hoang Quan, huunho5 others thích bài này.
    #1
  2. Đăng 29/5/14 #2

    mast0904 Kỹ sư

    Số bài viết: 304
    Đã được thích: 201
    làm vs con này khá hay và rẻ. mua sll có 5-6k/con, thích hợp cho các ứng dụng cần rẻ, ít IO. ADC con này cũng 10bit khá tiện, 5 kênh.
    Các bạn sv nên tiếp cận dần vs mấy dòng stm8, smt32 giá rất rẻ, module cực nhiều. chỉ có 1 nhược điểm là bọn này chỉ có dạng chân dán hơi khó cho việc hàn đối vs sv. mấy em pic, avr đắt hơn nhiều so với dòng này
    P/s: bạn nào ở HN mua mạch nạp trên pm mình 150k :D
    #2
  3. Đăng 29/5/14 #3

    huunho Thạc sỹ

    Số bài viết: 3,037
    Đã được thích: 1,368
    120k bán không bạn? mình sinh viên ít tiền lắm, STM8S003F3P6 bạn bán bao nhiêu? bạn ở đâu của hà nội?
    Tran luong thích bài này.
    #3
  4. Đăng 30/5/14 #4

    mast0904 Kỹ sư

    Số bài viết: 304
    Đã được thích: 201
    ko nhé bạn, 150k là đã quá rẻ cho mạch nạp vừa nạp đc cho stm8 vừa nạp đc cho các dòng stm32 rồi
    giá đó mình chỉ có thể cung cấp sll tầm > 5 mà thôi
    #4
  5. Đăng 30/5/14 #5

    vietthai Kỹ sư

    Số bài viết: 170
    Đã được thích: 87
    hinh như stm 8 của nouvo phai hk bác
    #5
  6. Đăng 30/5/14 #6

    Tran luong Trần Đình Lượng, Đt: 0989285187-HCM

    Số bài viết: 463
    Đã được thích: 361
    Yahoo Messenger
    Facebook Profile
    stm8 là của hãng ST mà bạn... Hahaha
    #6
  7. Đăng 30/5/14 #7

    Tran luong Trần Đình Lượng, Đt: 0989285187-HCM

    Số bài viết: 463
    Đã được thích: 361
    Yahoo Messenger
    Facebook Profile
    Ai cần mạch nạp này pm mình làm tay rồi send ra cho. Sll >10, 100k Sln<10, 130k
    #7
  8. Đăng 30/5/14 #8

    huunho Thạc sỹ

    Số bài viết: 3,037
    Đã được thích: 1,368
    STM8S003F3P6 con này bạn bán bao nhiêu?
    #8
  9. Đăng 30/5/14 #9

    vietthai Kỹ sư

    Số bài viết: 170
    Đã được thích: 87
    bác có tài liệu lập trình loại nầy hk cho mình xinh nhé
    Tran luong thích bài này.
    #9
  10. Đăng 31/5/14 #10

    Tran luong Trần Đình Lượng, Đt: 0989285187-HCM

    Số bài viết: 463
    Đã được thích: 361
    Yahoo Messenger
    Facebook Profile
    Hiện minh đang nghiên cứu nó bạn ah. Tài liệu chưa có nhiều, hihi
    #10

Chia sẻ trang này