Welcome & Happy Holidays!
Kết quả 1 đến 1 của 1
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Cần giúp viết hộ e bài code điều khiển led 7 thanh mong mn giúp đỡ

    BÀI TẬP VỀ ĐIỀU KHIỂN LED 7 THANH


    Đề bài: Viết chương trình thực hiện yêu cầu sau:


    Có 3 phím ấn được nối chân như sau:

    N1: PD4

    N2: PD5

    N3: PD6

    Có 4 số Led 7 thanh được điều khiển bởi thanh ghi dịch 4094 (như trong demo của Mr Tiếp) với quy định chân:

    Data: PD3;

    Latch: PD2;

    Clock: PD1.


    Coi như có sẵn hàm tạo trễ: delay_ms(n) với n là số nguyên <655

    35.

    Gọi hàm delay_ms(1000) sẽ có tác dụng trễ 1000ms ~ 1s.

    Quy ước: N=1: có phím ấn.


    Ban đầu: 4 số Led 7 thanh là 0000.


    Nếu ấn phím N1: tăng giá trị hiện có trên 4 ô Led 7 thanh lên 1; nếu đã là 9999 rồi thì sẽ quay lại 0000.


    Nếu ấn phím N2: giảm giá trị hiện có trên 4 ô Led 7 thanh xuống 1; nếu đã là 0000 rồi thì quay lại 9999.


    Nếu ấn phím N3: 4 ô Led 7 thanh sẽ chạy chế độ test: 4 ô đều số 0; trễ 1s; 4 ô đều số 1; trễ 1 giây; 4 ô đều số 2; ... 4 ô đều số 9; trễ 1 giây; rồi lại quay lại 4 ô đều số 0. Khi nào có nút N1 hoặc N2 ấn thì thoát ra và lại gán 4 số Led 7 thanh là 0000;


    Yêu cầu: Viết chương trình hoàn chỉnh, có dịch sang file hex để sẵn sàng nạp cho vi điều khiển.


    demo code đầu ra
    #include "stm8s.h"
    #include <iostm8s003f3.h>
    #define CDAT PD_ODR_ODR3
    #define CLAT PD_ODR_ODR2
    #define CCLK PD_ODR_ODR1
    #define PORTD PD_ODR
    #define BUT1 PC_IDR_IDR4
    #define BUT2 PC_IDR_IDR5
    #define BUT3 PC_IDR_IDR6
    //////////////////
    unsigned char so_ht[]={0x18,0x7b,0x2c,0x29,0x4b,0x89,0x88,0x3b,0x08,0x0 9,0xff};
    // 0 1 2 3 4 5 6 7 8 9 tat
    unsigned char mat_na[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,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 InitClock(void)
    {
    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)
    {
    // dinh nghia I/O
    }
    void main(void)
    {

    }

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •  
Múi giờ GMT +7. Bây giờ là 02:58 AM. Diễn đàn sử dụng vBulletin® Phiên bản 4.2.5.
Bản quyền của 2024 vBulletin Solutions, Inc. Tất cả quyền được bảo lưu.
Ban quản trị không chịu trách nhiệm về nội dung do thành viên đăng.