Chào mừng đến với Câu Lạc Bộ Sáng Tạo
Chia sẻ kinh nghiệm
Kết nối đam mê
Đang cập nhật thời gian...
BÀI VIẾT NỔI BẬT
Xin chào! Tôi là Ếch Sáng Tạo :-)
Chia sẻ trang




Chuyên mục
Bài mới
Xem nhiều
Thống kê
    Đang tải..
Bài viết
Hướng dẫn sử dụng CodeVisionAVR - SangTaoClub.Net
Hướng dẫn sử dụng CodeVisionAVR
Đăng bởi: Vũ Văn Thái - Thời gian: 27-04-2014, 20:11
Chuyên mục: Học lập trình AVR - Lượt xem: 20.624

Hướng dẫn sử dụng CodeVisionAVR

Chào các bạn, để bắt đầu học vi điều khiển AVR chúng ta cần phải có một công cụ soạn thảo code mạnh điển hình như CodeVisionAVR cho phép soạn thảo code, dịch code hex, debug, nạp chip, hỗ trợ viết code sẵn..... và rất nhiều thư viện cho bạn sử dụng với code C. Hôm nay chúng ta sẽ làm quen với công cụ này, giúp các bạn thành thạo hơn khi sử dụng phần mềm cũng như các bạn mới học về AVR.

Để bắt đầu, máy tính của các bạn phải có một phiên bản CodeVisionAVR, các bạn có thể tải dễ dàng về trong phần Tài Liệu của SangTaoClub.Net, và tiến hành cài đặt, crack theo hướng dẫn.

Sau khi cài đặt hoàn tất, crack thành công bạn sẽ có ngay một công cụ soạn thảo cực mạnh cho AVR.

Ta bắt đầu chạy chương trình và làm quen với giao diện phần mềm:

B1. Khởi chạy phần mềm:

Hướng dẫn sử dụng CodeVisionAVR

B2. Tạo một project mới

Hướng dẫn sử dụng CodeVisionAVR

File > New

Hướng dẫn sử dụng CodeVisionAVR

Chọn Project > OK > Yes > OK

Hướng dẫn sử dụng CodeVisionAVR

Hướng dẫn sử dụng CodeVisionAVR

Chọn chip và chọn tần số dao động cho chip

Ở đây các bạn có thể chọn bất kỳ thư viện code sẵn nào mà bạn muốn CAVR sẽ tự động tạo mã và chèn vào cho bạn. Như trên ta có thể sử dụng LCD (LCD16x2...), ADC, Timer, PWM, WDT, I2C (DS1307), 1wire (DS18B20), SPI, UART, Analog Comparator....

Cuối cùng ta tick vào biểu tượng hình bánh răng để lưu các file trong project lại, lưu tất cả chung vào một thư mục:

Hướng dẫn sử dụng CodeVisionAVR

Các bạn cần phải đặt tên cho 3 file quan trọng khi tạo project: C, PRJ, CWP

Hướng dẫn sử dụng CodeVisionAVR

B3. Dịch code sang file HEX, ta bấm vào biểu tượng Build trên thanh công cụ

Hướng dẫn sử dụng CodeVisionAVR

Trình biên dịch sẽ hiện ra một bảng thông báo, nếu code không vấn đề gì thì như sau:

Hướng dẫn sử dụng CodeVisionAVR

Nếu báo Errors thì sẽ ko tạo được file Hex, còn Warnings thì vẫn tạo file hex. Nếu có lỗi ta chỉ cần click đúp vào tên lỗi là nó tự trỏ tới dòng bị lỗi:

Hướng dẫn sử dụng CodeVisionAVR

B4. Cài đặt lại một số thông số cho project như chân giao tiếp LCD, thạch anh.... ta làm như sau:

Tick vào biểu tượng hình cái cờ lê

Hướng dẫn sử dụng CodeVisionAVR

 

Hiện ra hội thoại và các bạn chọn các Tab tương ứng để thay đổi:

Hướng dẫn sử dụng CodeVisionAVR

 

OK! hôm nay chúng ta sẽ dừng lại ở đây, các bài viết sau chúng ta sẽ đi vào học AVR qua các ví dụ luôn :)




  • Bạn chưa đăng nhập, không thể viết bình luận!
    Bấm vào đây để Đăng nhập hoặc Đăng ký!
  • Vũ Văn Thái lúc 24-12-2016, 10:45
    Bạn nén project lại, kèm cả mô phỏng trên proteus 7.10 nhé, rồi up thành một bài viết thảo luận.
  • Vũ Văn Thái lúc 24-12-2016, 07:07
    Lấy 8bit thấp có 2 cách là ép kiểu (unsigned char)biến; hoặc biến chứa ở dạng unsigned char nó sẽ tự xén bit cho bạn, còn khai báo dữ liệu flash bạn sửa lại là flash unsigned char thay cho unsigned flash nhé..
  • sangtaoclub98 lúc 23-12-2016, 10:56
    em quét ma trận, nhưng gặp vấn đề là khi ghép các mã led 8 bit thanh 16 bit (dùng để dịch lên xuống), nhưng khi lấy ra lại thì chỉ có 8 bit cao là đúng, còn 8 bit thấp thì chỉ có mã đầu tiên (_16_bit[0]&0x00ff) là đúng còn lại là sai hết. các mã led đã được kiểm tra lại trước khi ghép, ad cho em hỏi có phải do lỗi của IDE trong codevisionavr vì mã led trong bộ nhớ flash. mới lần đầu quét ma trận dùng avr,bộ nhớ flash của avr, mã bị thế này khó chịu thật, (em dùng bản 2.05) em thấy codevision còn có lỗi là vòng lặp for không cho đếm ngược tới giá trị 0(-- tới>=0), nó sẽ chãy mãi không dừng lại. thông tin này là để em chứng minh, ide có vấn dề, và không biết có phải do nó gây ra lỗi đầu tiên mà em đề cập đến không. code của em như thế này ạ:

        /*****************************************************
    This program was produced by the
    CodeWizardAVR V2.05.0 Professional
    Automatic Program Generator
    © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
    http://www.hpinfotech.com

    Project :
    Version :
    Date    : 24-11-2016
    Author : NeVaDa
    Company :
    Comments:


    Chip type               : ATmega8
    Program type            : Application
    AVR Core Clock frequency: 8.000000 MHz
    Memory model            : Small
    External RAM size       : 0
    Data Stack size         : 256
    *****************************************************/

    #include <mega8.h>
    #include <delay.h>
    #include <string.h>
    #define DS   PORTC.1
    #define STCP PORTC.2
    #define SHCP PORTC.0
    #define E1   PORTD.7 //active high
    #define A    PORTD.4
    #define B    PORTD.5
    #define C    PORTD.6
    //#define port_ (PORTD.1,PORTD.6);
    unsigned char i,c_dai=0;
    unsigned char scan_variant;
    unsigned char quet[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
    unsigned char chuoi[]="hello";
    //unsigned char chuoi[]="Hello This Is My Project Using Matrix LED Hope You Enjoy It";
    unsigned char mang[];
    unsigned int _16_bit[];


    unsigned flash hello[]= {//chuoi[i]
                             //unsigned char chuoi[]="XINCHAOHELLOMYPROJECT";      
                             //0E0H,1FH,90H,0H,88H,0H,88H,0H,88H,0H,90H,0H,0E0H,1FH,0H,0H
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,//space (ascii code: 32)
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0x1F,0xE0,0x0F,0xE0,0x67,0xFE,0x67,0xFE,0x67,0xFE,0x0F,0xE0,0x1F,0xE0,0xFF,0xFF,
                             //0x1F,0xE0,0x6F,0xFF,0x77,0xFF,0x77,0xFF,0x77,0xFF,0x6F,0xFF,0x1F,0xE0,0xFF,0xFF,//A65
                             //0F8H,1FH,88H,10H,88H,10H,88H,10H,88H,10H,88H,10H,70H,0FH,0H,0H
                             0x07,0xE0,0x07,0xE0,0x67,0xE6,0x67,0xE6,0x67,0xE6,0x0F,0xF0,0x9F,0xF9,0xFF,0xFF,   
                             //0x07,0xE0,0x77,0xEF,0x77,0xEF,0x77,0xEF,0x77,0xEF,0x77,0xEF,0x8F,0xF0,0xFF,0xFF,//B
                             //0F0H,0FH,8H,10H,8H,10H,8H,10H,8H,10H,8H,10H,10H,8H,0H,0H
                             0x0F,0xF0,0x07,0xE0,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0xC7,0xE3,0xCF,0xF3,0xFF,0xFF,   
                             //0x0F,0xF0,0xF7,0xEF,0xF7,0xEF,0xF7,0xEF,0xF7,0xEF,0xF7,0xEF,0xEF,0xF7,0xFF,0xFF,//C
                             //0F8H,1FH,8H,10H,8H,10H,8H,10H,8H,10H,10H,8H,0E0H,7H,0H,0H
                             0x07,0xE0,0x07,0xE0,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0x0F,0xF0,0x1F,0xF8,0xFF,0xFF,   
                             //0x07,0xE0,0xF7,0xEF,0xF7,0xEF,0xF7,0xEF,0xF7,0xEF,0xEF,0xF7,0x1F,0xF8,0xFF,0xFF,//D
                             //0F8H,1FH,88H,10H,88H,10H,88H,10H,88H,10H,8H,10H,10H,8H,0H,0H   
                             0x07,0xE0,0x07,0xE0,0x67,0xE6,0x67,0xE6,0xE7,0xE7,0xE7,0xE7,0xEF,0xF7,0xFF,0xFF,   
                             //0x07,0xE0,0x77,0xEF,0x77,0xEF,0x77,0xEF,0x77,0xEF,0xF7,0xEF,0xEF,0xF7,0xFF,0xFF,//E
                             //0F8H,1FH,88H,0H,88H,0H,88H,0H,88H,0H,8H,0H,10H,0H,0H,0H   
                             0x07,0xE0,0x07,0xE0,0x67,0xFE,0x67,0xFE,0xE7,0xFF,0xE7,0xFF,0xEF,0xFF,0xFF,0xFF,
                             //0x07,0xE0,0x77,0xFF,0x77,0xFF,0x77,0xFF,0x77,0xFF,0xF7,0xFF,0xF7,0xFF,0xFF,0xFF,//F
                             //0F0H,0FH,8H,10H,8H,10H,8H,12H,8H,12H,8H,12H,10H,1EH,0H,0H   
                             0x0F,0xF0,0xF7,0xEF,0xF7,0xEF,0xF7,0xED,0xF7,0xED,0xF7,0xED,0xF7,0xE1,0xFF,0xFF,//G
                             //0F8H,1FH,80H,0H,80H,0H,80H,0H,80H,0H,80H,0H,0F8H,1FH,0H,0H   
                             0x07,0xE0,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x7F,0xFF,0x07,0xE0,0xFF,0xFF,//H
                             //8H,10H,8H,10H,8H,10H,0F8H,1FH,8H,10H,8H,10H,8H,10H,0H,0H   
                             0xF7,0xEF,0xF7,0xEF,0xF7,0xEF,0x07,0xE0,0xF7,0xEF,0xF7,0xEF,0xF7,0xEF,0xFF,0xFF,//I
                             //8H,8H,8H,10H,8H,10H,0F8H,0FH,8H,0H,8H,0H,8H,0H,0H,0H   
                             0xF7,0xF7,0xF7,0xEF,0xF7,0xEF,0x07,0xF0,0xF7,0xFF,0xF7,0xFF,0xF7,0xFF,0xFF,0xFF,//J
                             //0F8H,1FH,80H,0H,80H,1H,40H,2H,20H,4H,10H,8H,8H,10H,0H,0H   
                             0x07,0xE0,0x7F,0xFF,0x7F,0xFE,0xBF,0xFD,0xDF,0xFB,0xEF,0xF7,0xF7,0xEF,0xFF,0xFF,//K
                             // 0F8H,1FH,0H,10H,0H,10H,0H,10H,0H,10H,0H,10H,0H,10H,0H,0H   
                             0x07,0xE0,0xFF,0xEF,0xFF,0xEF,0xFF,0xEF,0xFF,0xEF,0xFF,0xEF,0xFF,0xEF,0xFF,0xFF,//L
                             //0F8H,1FH,20H,0H,40H,0H,80H,0H,40H,0H,20H,0H,0F8H,1FH,0H,0H   
                             0x07,0xE0,0xEF,0xFF,0xDF,0xFF,0xBF,0xFF,0xDF,0xFF,0xEF,0xFF,0x07,0xE0,0xFF,0xFF,//M
                             //0F8H,1FH,20H,0H,40H,0H,80H,0H,0H,1H,0H,2H,0F8H,1FH,0H,0H   
                             0x07,0xE0,0xEF,0xFF,0xDF,0xFF,0xBF,0xFF,0x7F,0xFF,0xFF,0xFE,0x07,0xE0,0xFF,0xFF,//N
                             //0F0H,0FH,8H,10H,8H,10H,8H,10H,8H,10H,8H,10H,0F0H,0FH,0H,0H   
                             0x0F,0xF0,0xF7,0xEF,0xF7,0xEF,0xF7,0xEF,0xF7,0xEF,0xF7,0xEF,0x0F,0xF0,0xFF,0xFF,//O
                             //0F8H,1FH,88H,0H,88H,0H,88H,0H,88H,0H,88H,0H,70H,0H,0H,0H   
                             0x07,0xE0,0x77,0xFF,0x77,0xFF,0x77,0xFF,0x77,0xFF,0x77,0xFF,0x8F,0xFF,0xFF,0xFF,//P
                             //0F0H,0FH,8H,10H,8H,10H,8H,10H,8H,14H,8H,38H,0F0H,4FH,0H,0H   
                             0x1F,0xF8,0xEF,0xF7,0xF7,0xEF,0xF7,0xEF,0xF7,0xEB,0xEF,0xF7,0x1F,0xE8,0xFF,0xFF,//Q
                             //0F8H,1FH,88H,0H,88H,1H,88H,2H,88H,4H,88H,8H,70H,10H,0H,0H   
                             0x07,0xE0,0x77,0xFF,0x77,0xFE,0x77,0xFD,0x77,0xFB,0x77,0xF7,0x8F,0xEF,0xFF,0xFF,//R   
                             //70H,8H,88H,10H,88H,10H,88H,10H,88H,10H,88H,10H,10H,0FH,0H,0H   
                             0x8F,0xF7,0x77,0xEF,0x77,0xEF,0x77,0xEF,0x77,0xEF,0x77,0xEF,0xEF,0xF0,0xFF,0xFF,//S
                             //8H,0H,8H,0H,8H,0H,0F8H,1FH,8H,0H,8H,0H,8H,0H,0H,0H   
                             0xF7,0xFF,0xF7,0xFF,0xF7,0xFF,0x07,0xE0,0xF7,0xFF,0xF7,0xFF,0xF7,0xFF,0xFF,0xFF,//T
                             //0F8H,0FH,0H,10H,0H,10H,0H,10H,0H,10H,0H,10H,0F8H,0FH,0H,0H   
                             0x07,0xF0,0xFF,0xEF,0xFF,0xEF,0xFF,0xEF,0xFF,0xEF,0xFF,0xEF,0x07,0xF0,0xFF,0xFF,//U   
                             //0F8H,3H,0H,4H,0H,8H,0H,10H,0H,8H,0H,4H,0F8H,3H,0H,0H   
                             0x07,0xFC,0xFF,0xFB,0xFF,0xF7,0xFF,0xEF,0xFF,0xF7,0xFF,0xFB,0x07,0xFC,0xFF,0xFF,//V
                             //0F8H,1FH,0H,8H,0H,4H,0H,2H,0H,4H,0H,8H,0F8H,1FH,0H,0H   
                             0x07,0xF0,0xFF,0xEF,0xFF,0xF7,0xFF,0xFB,0xFF,0xF7,0xFF,0xEF,0x07,0xF0,0xFF,0xFF,//W
                             //0x18,0x1C,0x20,0x02,0x40,0x01,0x80,0x00,0x40,0x01,0x20,0x02,0x18,0x1C,0x00,0x00,   
                            
                             0xE7,0xE3,0xDF,0xFD,0xBF,0xFE,0x7F,0xFF,0xBF,0xFE,0xDF,0xFD,0xE7,0xE3,0xFF,0xFF,//X
                             //18H,0H,20H,0H,40H,0H,80H,1FH,40H,0H,20H,0H,18H,0H,0H,0H   
                             0xE7,0xFF,0xDF,0xFF,0xBF,0xFF,0x7F,0xE0,0xBF,0xFF,0xDF,0xFF,0xE7,0xFF,0xFF,0xFF,//Y
                             //8H,1CH,8H,12H,8H,11H,88H,10H,48H,10H,28H,10H,18H,10H,0H,0H   
                             0xF7,0xE7,0xF7,0xEB,0xF7,0xED,0xF7,0xEE,0x77,0xEF,0xB7,0xEF,0xC7,0xEF,0xFF,0xFF,//Z
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
                             0xFF,0xF3,0xBF,0xED,0xBF,0xED,0xBF,0xED,0xBF,0xED,0x7F,0xF0,0xFF,0xEF,0xFF,0xFF,//a97
                             0x07,0xE0,0x7F,0xF7,0xBF,0xEF,0xBF,0xEF,0xBF,0xEF,0xBF,0xEF,0x7F,0xF0,0xFF,0xFF,//b   
                             0x7F,0xF0,0xBF,0xEF,0xBF,0xEF,0xBF,0xEF,0xBF,0xEF,0xBF,0xEF,0x7F,0xF7,0xFF,0xFF,//c   
                             0x7F,0xF0,0xBF,0xEF,0xBF,0xEF,0xBF,0xEF,0xBF,0xEF,0x7F,0xF7,0x07,0xE0,0xFF,0xFF,//d   
                             0x7F,0xF0,0xBF,0xED,0xBF,0xED,0xBF,0xED,0xBF,0xED,0xBF,0xED,0x7F,0xF6,0xFF,0xFF,//e
                             0xBF,0xFF,0xBF,0xFF,0x0F,0xE0,0xB7,0xFF,0xB7,0xFF,0xF7,0xFF,0xEF,0xFF,0xFF,0xFF,//f   
                             0x7F,0xB0,0xBF,0x6F,0xBF,0x6F,0xBF,0x6F,0xBF,0x77,0x7F,0x80,0xBF,0xFF,0xFF,0xFF,//g   
                       /*h*/ 0x07,0xE0,0x7F,0xFF,0xBF,0xFF,0xBF,0xFF,0xBF,0xFF,0xBF,0xFF,0x7F,0xE0,0xFF,0xFF,//h
                             0xFF,0xEF,0xBF,0xEF,0xBF,0xEF,0x2F,0xE0,0xFF,0xEF,0xFF,0xEF,0xFF,0xEF,0xFF,0xFF,//i   
                             0xBF,0xDF,0xBF,0xBF,0xBF,0x7F,0xBF,0x7F,0xBF,0x7F,0xBF,0xBF,0x2F,0xC0,0xFF,0xFF,//j      
                             0x07,0xE0,0xFF,0xFE,0xFF,0xFE,0x7F,0xFD,0xBF,0xFB,0xDF,0xF7,0xEF,0xEF,0xFF,0xFF,//k            
                             0xF7,0xEF,0xF7,0xEF,0xF7,0xEF,0x07,0xE0,0xFF,0xEF,0xFF,0xEF,0xFF,0xEF,0xFF,0xFF,//l
                             0x3F,0xE0,0xBF,0xFF,0xBF,0xFF,0x7F,0xE0,0xBF,0xFF,0xBF,0xFF,0x7F,0xE0,0xFF,0xFF,//m   
                             0x3F,0xE0,0xBF,0xFF,0xBF,0xFF,0xBF,0xFF,0xBF,0xFF,0x7F,0xE0,0xFF,0xFF,0xFF,0xFF,//n
                             0x7F,0xF0,0xBF,0xEF,0xBF,0xEF,0xBF,0xEF,0xBF,0xEF,0x7F,0xF0,0xFF,0xFF,0xFF,0xFF,//o   
                             0x7F,0x00,0xBF,0xEF,0xBF,0xEF,0xBF,0xEF,0xBF,0xEF,0xBF,0xEF,0x7F,0xF0,0xFF,0xFF,//p   
                             0x7F,0xF0,0xBF,0xEF,0xBF,0xEF,0xBF,0xEF,0xBF,0xEF,0xBF,0xEF,0x7F,0x00,0xFF,0xFF,//q                  
                             0xFF,0xEF,0xFF,0xEF,0x3F,0xE0,0xFF,0xEE,0x7F,0xEF,0xBF,0xEF,0xBF,0xEF,0xFF,0xFF,//r   
                             0x7F,0xEE,0xBF,0xED,0xBF,0xED,0xBF,0xED,0xBF,0xED,0xBF,0xED,0xBF,0xF3,0xFF,0xFF,//s
                             0xBF,0xFF,0xBF,0xFF,0x0F,0xF0,0xBF,0xEF,0xBF,0xEF,0xBF,0xEF,0xFF,0xF7,0xFF,0xFF,//t   
                             0x3F,0xF0,0xFF,0xEF,0xFF,0xEF,0xFF,0xEF,0xFF,0xEF,0x3F,0xF0,0xFF,0xEF,0xFF,0xFF,//u   
                             0x3F,0xFC,0xFF,0xFB,0xFF,0xF7,0xFF,0xEF,0xFF,0xF7,0xFF,0xFB,0x3F,0xFC,0xFF,0xFF,//v   
                             0x3F,0xF0,0xFF,0xEF,0xFF,0xF7,0xFF,0xEF,0xFF,0xF7,0xFF,0xEF,0x3F,0xF0,0xFF,0xFF,//w            
                             0xBF,0xEF,0x7F,0xF7,0xFF,0xFA,0xFF,0xFD,0xFF,0xFA,0x7F,0xF7,0xBF,0xEF,0xFF,0xFF,//x   
                             0xBF,0xFF,0x7F,0xFF,0xFF,0xFE,0xFF,0xE1,0xFF,0xFE,0x7F,0xFF,0xBF,0xFF,0xFF,0xFF,//y   
                             0xBF,0xEF,0xBF,0xE7,0xBF,0xEB,0xBF,0xED,0xBF,0xEE,0x3F,0xEF,0xBF,0xEF,0xFF,0xFF,//z
                             };
    /*******************************************8
    when two led code are buildt and one is located in flash memory, the other must be located in
    flash memory, if not mcu only run with led code in flash memory
    **********8*********************************/
    flash unsigned char oneday[]=    {
                                  
                                  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                                  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                                  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                                  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                                  0xFC,0x22,0x21,0x21,0x21,0x22,0xFC,0x00,
                                  0xFF,0x89,0x89,0x89,0x89,0x89,0x76,0x00,
                                  0x7E,0x81,0x81,0x81,0x81,0x81,0x62,0x00,
                                  0xFF,0x81,0x81,0x81,0x81,0x42,0x3C,0x00,
                                  0xFF,0x89,0x89,0x89,0x89,0x81,0x42,0x00,
                                  0xFF,0x09,0x09,0x09,0x09,0x01,0x01,0x00,
                                  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                                  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                                  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                                  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                                  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                                  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                                  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                                  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
                                };

                            



    void shift_check(unsigned char b)
        {
             unsigned char _shift_;
             for(_shift_=0;_shift_<8;_shift_++)
                 {
                    PORTB.1=b&0x80;//get msb bit
                    PORTB.0=1;
                    delay_us(1);
                    PORTB.0=0;
                    b<<=1;//shift and make value of b variant<==>b=(b>>1);
                 }
             
        }

    void shift_checks(unsigned char *p,unsigned char element)
        {
             unsigned char b,cnt;
             for(cnt=0;cnt<element;cnt++)
                 {
                    b=*(p+element-cnt-1);
                    shift_check(b);
                 }
             PORTB.3=1;
             delay_ms(1);
             PORTB.3=0;         
        }

    void get_code_shift()
        {   
                 {   
                    unsigned char count,group,result=0,count1=0,count2=0,count3;
                    unsigned char ffering[2];
                    for(group=0;group<2;group++)
                         {   
                             for(count=0;count<16;count++)
                                {   
                                     count1++;
                                     if(i+group>=c_dai)
                                         {
                                            mang[result]=0x00;            
                                         }
                                     else
                                         {
                                            mang[result]=hello[(chuoi[i+group]*16-512)+count];            
                                         }
                                     
                                     result++;
                                     
                                }
                            
                         }
                    //cac ma led 8 bit duoc lay ra da kiem tra lai va da dung het khong sai.
                    for(count1=0;count1<32;count1+=2)   //chua lay dung code
                         {
                             _16_bit[count1/2]=((mang[count1+1]<<8)|mang[count1]);//da kiem tra, khong sai!?
                         }
                    //khi ghep lai thanh so 16 bit, khi lay ra lai 8 bit thi chi co 8 bit cao dung
                    // cac bit thap chi dung dung nhat o thanh ma led dau tien (_16_bit[0])
                    //con lai sai het.
                    ffering[0]=mang[6]; //nhu the nay ma cung truyen sai ma led nua
                    ffering[1]=mang[7]; //nhu the nay ma cung truyen sai ma led nua
                    shift_checks(ffering,2);

                    while(1);
                    for(count3=0;count3<16;count3++)
                         {
                             ffering[0]=_16_bit[count3]&0x00ff;
                             ffering[1]=_16_bit[count3]>>8;
                             shift_checks(ffering,2);
                             delay_ms(1500);
                         }
    //                ffering[0]=0x55;
    //                ffering[1]=0x55;
    //                shift_checks(ffering,2);
    //                delay_ms(500);
    //                ffering[0]=~0x55;
    //                ffering[1]=~0x55;
    //                shift_checks(ffering,2);
    //                delay_ms(500);
    //                ffering[0]=0x55;
    //                ffering[1]=0x55;
    //                shift_checks(ffering,2);
    //                delay_ms(500);
    //                ffering[0]=~0x55;
    //                ffering[1]=~0x55;
    //                shift_checks(ffering,2);
    //                delay_ms(500);
                    while(1);
                 }   
        }

    void shift_char_up()
        {
             unsigned char j,k,m,n,buffer[4];
             c_dai=strlen(chuoi);
             for(i=0;i<c_dai;i++)
             {
             for(j=0;j<16;j+=2)
                 {
                    get_code_shift();
                      
                    for(n=0;n<8;n++)
                    {   
                         _16_bit[n]>>n;
                         _16_bit[n+1]>>n;
                         for(k=0;k<8;k++)
                             {   
                                scan_variant=0;
                                for(m=0;m<16;m+=2)
                                     {
                                         buffer[0]=_16_bit[n]&0x00ff;
                                         buffer[1]=_16_bit[n]>>8;
                                         buffer[2]=_16_bit[n+1]&0x00ff;
                                         buffer[3]=_16_bit[n+1]>>8;
                                         _74hc595s(buffer,4);
                                         PORTD=~(0x01<<scan_variant);
                                         delay_ms(8);
                                         PORTD=0xff;
                                         delay_us(1);
                                         scan_variant++;   
                                     }
                             }
                    }
                 }
             }
        }

    void main(void)
    {
    PORTB=0x00;
    DDRB=0xff;


    PORTC=0x00;
    DDRC|=(1<<DDC0)|(1<<DDC1)|(1<<DDC2);


    PORTD=0x00;
    DDRD=0xff;

    while (1)
           {
             
             //_scan_forward();
             //_scan_reverse();//this function cause while function is *ẩn*abled// because it's the true simple prt
             //check();         
             //check_16();
             shift_char_up();
             //check_any_function();
             //check_out();
           }
    }

  • Trang 1/1: 1

    Bài viết cùng chuyên mục
    ATMG16 giao tiếp với LCD ATMG16 giao tiếp với LCD
    Đăng bởi: haydayanh - Thời gian: 04-06-2021, 22:33
    Chuyên mục: Học lập trình AVR - Lượt xem: 3.338
    Hướng dẫn làm KIT AVR đơn giản Hướng dẫn làm KIT AVR đơn giản
    Đăng bởi: Vũ Văn Thái - Thời gian: 25-10-2014, 09:39
    Chuyên mục: Học lập trình AVR - Lượt xem: 11.899
    [Bài 6] Lập trình giao tiếp USART và RS232 với AVR [Bài 6] Lập trình giao tiếp USART và RS232 với AVR
    Đăng bởi: Vũ Văn Thái - Thời gian: 15-08-2014, 15:25
    Chuyên mục: Học lập trình AVR - Lượt xem: 20.411
    [Bài 5] Lập trình ADC - Đo nhiệt độ dùng LM35 hiển thị LCD với AVR [Bài 5] Lập trình ADC - Đo nhiệt độ dùng LM35 hiển thị LCD với AVR
    Đăng bởi: Vũ Văn Thái - Thời gian: 25-06-2014, 10:17
    Chuyên mục: Học lập trình AVR - Lượt xem: 61.686
    [Bài 4] Lập trình giao tiếp LCD16x2 cho AVR trên CodeVisionAVR [Bài 4] Lập trình giao tiếp LCD16x2 cho AVR trên CodeVisionAVR
    Đăng bởi: Vũ Văn Thái - Thời gian: 22-06-2014, 10:42
    Chuyên mục: Học lập trình AVR - Lượt xem: 25.789
    [Bài 3] Lập trình ngắt cho AVR trên CodeVisionAVR [Bài 3] Lập trình ngắt cho AVR trên CodeVisionAVR
    Đăng bởi: Vũ Văn Thái - Thời gian: 16-06-2014, 14:06
    Chuyên mục: Học lập trình AVR - Lượt xem: 24.370
    [Bài 2] Tìm hiểu bộ Timer-Counter trên AVR [Bài 2] Tìm hiểu bộ Timer-Counter trên AVR
    Đăng bởi: Vũ Văn Thái - Thời gian: 15-06-2014, 11:55
    Chuyên mục: Học lập trình AVR - Lượt xem: 22.412
    [Bài 1] Xuất nhập Port đơn giản cho AVR [Bài 1] Xuất nhập Port đơn giản cho AVR
    Đăng bởi: Vũ Văn Thái - Thời gian: 29-05-2014, 21:22
    Chuyên mục: Học lập trình AVR - Lượt xem: 10.874
    Hướng dẫn set fuse bit cho AVR Hướng dẫn set fuse bit cho AVR
    Đăng bởi: Vũ Văn Thái - Thời gian: 16-05-2014, 22:09
    Chuyên mục: Học lập trình AVR - Lượt xem: 24.486
    Mạch nạp ISP cho vi điều khiển AVR và 89S Mạch nạp ISP cho vi điều khiển AVR và 89S
    Đăng bởi: Vũ Văn Thái - Thời gian: 10-05-2014, 12:22
    Chuyên mục: Học lập trình AVR - Lượt xem: 21.828
    Chào mừng hoaiantran_o2 đã tham gia câu lạc bộ sáng tạo!
    Vũ Văn Thái - vuthai
    Hôm nay là sinh nhật của minhtien757, zena93, huytuong90, ngocson9xht, sam6886, hienbk9210, Thuvan, vanbong1325, nguyenanh26, Vanthu, el_gj_4, gnldgnds, nguyentrungduc, Tai1st, truongthanhphuong, ← Gửi tin nhắn chúc mừng
    Múi giờ: UTC+07:00 - Asia/Ho Chi Minh ***** IP của bạn: 3.148.221.78 ***** Status: Cache Update thành công!