<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

        AM12864測試程序

        作者:佚名   來源:本站原創   點擊數:  更新時間:2007年07月08日   【字體:

        AM12864測試程序(C語言)

        /********************************************/
        /* AM12864測試程序 1.0 */
        /* Designed by Andorin LCM R&D Group */
        /********************************************/

        #include <reg51.h>
        #include <ctype.h>
        #include <string.h>
        #include <stdlib.h>
        #include <stdio.h>
        #include <math.h>
        /********************************************/
        /* AM12864測試程序 1.0 */
        /* Designed by Andorin LCM R&D Group */
        /********************************************/

        /* Define the register command code */
        #define Disp_On 0x3f
        #define Disp_Off 0x3e
        #define Col_Add 0x40
        #define Page_Add 0xb8
        #define Start_Line 0xc0
        #define Lcd_Bus P1 //MCU P1<------> LCM
        sbit Mcs=P2^3; //Master chip enable
        sbit Scs=P2^4; //Slave chip enable
        sbit Enable=P2^2; //6800 mode Enable single
        sbit Di=P2^0; //Data or Instrument Select
        sbit RW=P2^1; //Write or Read
        sbit Lcd_Rst=P2^5; //Lcm reset
        sbit Test_Key=P3^1;

        char code ce[]={/*-- 文字: 測 --*/0x08,0x31,0x86,0x60,0x00,0xFE,0x02,0xF2,0x02,0xFE,0x00,0xF8,0x00,0x00,0xFF,0x00,
        0x04,0xFC,0x03,0x00,0x80,0x47,0x30,0x0F,0x10,0x67,0x00,0x07,0x40,0x80,0x7F,0x00};
        char code shi[]={/*-- 文字: 試 --*/0x40,0x42,0xDC,0x08,0x00,0x90,0x90,0x90,0x90,0x90,0xFF,0x10,0x12,0x1C,0x10,0x00,
        0x00,0x00,0x7F,0x20,0x10,0x20,0x20,0x1F,0x10,0x10,0x01,0x06,0x18,0x20,0x78,0x00};
        char code kai[]={/*-- 文字: 開 --*/0x40,0x42,0x42,0x42,0x42,0xFE,0x42,0x42,0x42,0x42,0xFE,0x42,0x42,0x42,0x42,0x00,
        0x00,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00};
        char code shi2[]={0x10,0x90,0x70,0x1F,0x12,0xF0,0x00,0x20,0x70,0x28,0x27,0x22,0x28,0x70,0x20,0x00,
        0x40,0x21,0x12,0x0C,0x06,0x09,0x30,0x00,0x7F,0x21,0x21,0x21,0x21,0x7F,0x00,0x00};//始
        char code wan[]={0x00,0x90,0x8C,0xA4,0xA4,0xA4,0xA5,0xA6,0xA4,0xA4,0xA4,0xA4,0x94,0x8C,0x04,0x00,
        0x00,0x80,0x40,0x20,0x18,0x07,0x00,0x00,0x00,0x3F,0x40,0x40,0x40,0x70,0x00,0x00};//完
        char code bi[]={0x00,0x00,0xFF,0x88,0x48,0x28,0x08,0x80,0x7F,0x88,0x88,0x88,0x84,0x84,0xE0,0x00,
        0x04,0x04,0x04,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00};//畢
        char code yang[]={0x20,0x10,0x2C,0x23,0x6A,0xAA,0x2A,0xAA,0x6A,0x2A,0x2A,0x2A,0xEA,0x02,0x00,0x00,
        0x00,0x10,0x11,0x15,0x15,0x15,0xFF,0x15,0x15,0x15,0x11,0x10,0x3F,0x40,0x30,0x00};
        char code qi[]={0x40,0x20,0x58,0x47,0x54,0x54,0x54,0x54,0x54,0x54,0xD4,0x14,0x06,0x04,0x00,0x00,
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x40,0x80,0x70,0x00};//氣
        char code nong[]={0x10 ,0x21 ,0x62 ,0x06 ,0x90 ,0x0C ,0x04 ,0x84,0x64 ,0x9F ,0x04 ,0x04 ,0x94 ,0xCC ,0x00 ,0x00,
        0x04 ,0x04 ,0xFE ,0x01 ,0x04 ,0x02 ,0x01 ,0xFF, 0x40 ,0x21 ,0x06 ,0x09 ,0x10 ,0x30 ,0x10 ,0x00 };//濃
        char code du[]={0x00 ,0x00 ,0x0FC ,0x24 ,0x24 ,0x24 ,0x0FC ,0xA5, 0xA6 ,0xA4 ,0x0FC ,0x24 ,0x34 ,0x26 ,0x04 ,0x00,
        0x40 ,0x20 ,0x9F ,0x80 ,0x42 ,0x42 ,0x26 ,0x2A, 0x12 ,0x2A ,0x26 ,0x42 ,0x40 ,0xC0 ,0x40 ,0x00};//度
        char code bi2[]={0x00, 0x00, 0xFE, 0x40, 0x40, 0x60, 0x40, 0x00,0xFF, 0x80, 0x40, 0x20, 0x30, 0x00, 0x00, 0x00,
        0x00, 0x40, 0x7F, 0x20, 0x20, 0x10, 0x10, 0x00,0x3F, 0x40, 0x40, 0x40, 0x40, 0x40, 0x78, 0x00};//比
        char code fen[]={0x00 ,0x80 ,0x40 ,0x20 ,0x98 ,0x86 ,0x80 ,0x80,0x83 ,0x8C ,0x90 ,0x20 ,0xC0 ,0x80 ,0x80 ,0x00,
        0x01 ,0x00 ,0x80 ,0x40 ,0x20 ,0x1F ,0x00 ,0x40, 0x80 ,0x40 ,0x3F ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 };// 分
        char code bai[]={0x02 ,0x02 ,0x02 ,0xE2 ,0x22 ,0x32 ,0x2A ,0x26,0x22 ,0x22 ,0x22 ,0xF2 ,0x22 ,0x03 ,0x02 ,0x00,
        0x00 ,0x00 ,0x00 ,0xFF ,0x42 ,0x42 ,0x42 ,0x42, 0x42 ,0x42 ,0x42 ,0xFF ,0x00 ,0x00 ,0x00 ,0x00};// 百
        char code wei[]={

        0x20 ,0x20 ,0x20 ,0x22 ,0x24 ,0x2C ,0x20 , 0xE0,
        0x3F ,0x20 ,0x20 ,0x20 ,0x20 ,0xF0 ,0x20 ,0x00,
        0x00 ,0x40 ,0x20 ,0x10 ,0x08 ,0x04 ,0x03 ,0x00,
        0x02 ,0x04 ,0x4C ,0x80 ,0x40 ,0x3F ,0x00 ,0x00
        };//為

         

        /*------------------延時子程序-----------------------------*/
        void delay(unsigned int t)
        {
        unsigned int i,j;
        for(i=0;i<t;i++) ;
        for(j=0;j<10;j++) ;
        }
        /*------------------寫命令到LCD------------------------------*/
        void write_com(unsigned char cmdcode)
        {
        do{delay(0);}while(P0^7==1);
        Di=0;
        RW=0;
        Lcd_Bus=cmdcode;
        delay(0); //原來是delay(0)
        Enable=1;
        delay(0);
        Enable=0;

        }
        /*-------------------寫數據到LCD----------------------------*/
        void write_data(unsigned char Dispdata)
        { do{delay(10);}while(P0^7==1);
        Di=1;
        RW=0;
        Lcd_Bus=Dispdata;
        delay(0);
        Enable=1;
        delay(0);
        Enable=0;
        }
        /*-------------------讀LCD數據----------------------------*/
        unsigned char read_data()
        { //do{delay(100);}while(P0^7==1);
        unsigned char tmpin;
        Di=1;
        RW=1;
        delay(0);
        Enable=1;
        delay(0);
        Enable=0;do{delay(100);}while(P0^7==1);
        tmpin=Lcd_Bus;
        return tmpin;
        }
        /*------------------顯示邊框-------------------------------*/
        void frame()
        {
        unsigned char i;
        Mcs=1;
        Scs=1;
        write_com(Page_Add+0);
        write_com(Col_Add+0);
        for(i=0;i<64;i++) write_data(0x01);
        write_com(Page_Add+7);
        write_com(Col_Add+0);
        for(i=0;i<64;i++) write_data(0x80);
        for(i=0;i<8;i++)
        {
        Mcs=0;
        Scs=1;
        write_com(Page_Add+i);
        write_com(Col_Add+63);
        write_data(0x55);
        Mcs=1;
        Scs=0;
        write_com(Page_Add+i);
        write_com(Col_Add+0);
        write_data(0x55);
        }
        }
        /*------------------清除內存AM12864測試程序---------------*/
        void Clr_Scr()
        {
        unsigned char j,k;
        Mcs=1;Scs=1;
        write_com(Page_Add+0);
        write_com(Col_Add+0);
        for(k=0;k<8;k++){
        write_com(Page_Add+k);
        for(j=0;j<64;j++)write_data(0x00);
        }
        }
        /*------------------顯示12864圖片---------------------------*/
        void Disp_Img(unsigned char code *img)
        {
        unsigned char j,k;
        for(k=0;k<8;k++){
        Mcs=1;Scs=0;delay(0);
        write_com(Page_Add+k);
        write_com(Col_Add+0);

        for(j=0;j<64;j++) write_data(img[k*128+j]);
        Mcs=0;Scs=1; delay(0);
        write_com(Page_Add+k);
        write_com(Col_Add+0);
        for(j=64;j<128;j++) write_data(img[k*128+j]);
        }
        }
        /*------------------顯示橫--------------AM12864測試程序-------------*/
        void Disp_H_Line()
        {
        unsigned char i,j;
        Mcs=1;
        Scs=1;
        write_com(Disp_On);
        write_com(Page_Add);
        write_com(Start_Line);
        write_com(Col_Add);
        for(j=0;j<8;j++)
        {
        write_com(Page_Add+j);
        write_com(Col_Add+0);
        // write_com(Start_Line+0);
        for(i=0;i<64;i++)write_data(0x00);
        }
        }

        /*------------------顯示列-----------------------------*/
        void Disp_V_Line()
        {
        unsigned char i,j;
        write_com(Disp_On);
        write_com(Page_Add);
        write_com(Start_Line);
        write_com(Col_Add);
        for(j=0;j<8;j++)
        {
        write_com(Page_Add+j);
        write_com(Col_Add+0);
        write_com(Start_Line+0);
        for(i=0;i<32;i++)
        {
        write_data(0x00);
        write_data(0x55);
        }
        }
        }
        /*------------------棋盤-----------------------------*/
        void Disp_Cross_Line(unsigned char mode)
        {
        unsigned char i,j;
        unsigned char data1,data2;
        if(mode==0) {data1=0xaa;data2=0x55;}
        else if(mode==1) {data1=0x55;data2=0xaa;}
        else return;
        Mcs=1;Scs=1;
        write_com(Disp_On);
        write_com(Page_Add);
        write_com(Start_Line);
        write_com(Col_Add);
        for(j=0;j<8;j++)
        {
        write_com(Page_Add+j);
        write_com(Col_Add+0);
        write_com(Start_Line+0);
        for(i=0;i<32;i++){
        write_data(data1);
        write_data(data2);
        }
        }
        }

        /*---------------------指定位置顯示漢字16*16-----------------------*/
        void hz_disp16(unsigned char pag,unsigned char col, unsigned char code *hzk)
        {
        unsigned char j=0,i=0;
        for(j=0;j<2;j++){
        write_com(Page_Add+pag+j);
        write_com(Col_Add+col);
        for(i=0;i<16;i++) write_data(hzk[16*j+i]);
        }
        }

        /*------------------初始化LCD屏--------------------------*/
        void init_lcd()
        { Lcd_Rst=0;
        delay(100);
        Lcd_Rst=1;
        delay(100);
        Mcs=1;
        Scs=1;/////////////////////////////////////////////////////////
        delay(100);
        write_com(Disp_Off); /////////////////////
        write_com(Page_Add);
        write_com(Start_Line);
        write_com(Col_Add);
        write_com(Disp_On);
        }

        /*------------------------------信息顯示------------------------*/
        void Msg(int flg)
        {
        Clr_Scr();
        frame();
        if(flg==0){ //顯示"測試開始"
        Mcs=1;Scs=0;
        hz_disp16(3,32,ce);
        delay(2000);
        hz_disp16(3,48,shi);
        delay(2000);
        Mcs=0;Scs=1;
        hz_disp16(3,0,kai);
        delay(2000);
        hz_disp16(3,16,shi2);
        delay(2000);
        }
        else if(flg==1){ //顯示"測試完畢"
        Mcs=1;Scs=0;
        hz_disp16(0,32,ce);
        hz_disp16(0,48,shi);
        Mcs=0;Scs=1;
        hz_disp16(0,0,wan);
        hz_disp16(0,16,bi);
        Mcs=1;Scs=0;
        hz_disp16(3,0,yang);
        hz_disp16(3,16,qi);
        hz_disp16(3,32,nong);
        hz_disp16(3,48,du);
        Mcs=0;Scs=1;
        hz_disp16(3,0,bai);
        hz_disp16(3,16,fen);
        hz_disp16(3,32,bi2);
        hz_disp16(3,48,wei);


        }
        }

        /*--------------------------------鍵盤掃描-------------------------*/
        void Key_Scan()
        {
        while(Test_Key);
        while(~Test_Key);
        }

        /*--------------------主程序-----------AM12864測試程序----------------------*/

        main()
        {
        unsigned char i=0;
        while(1){
        // Key_Scan();
        init_lcd();
        //Disp_Img(FirstPage);
        //delay(10000);
        // Key_Scan();
        Msg(0);
        delay(10000);
        Disp_H_Line();
        delay(10000);
        Disp_V_Line();
        delay(10000);

        Msg(1);
        delay(10000);
        Clr_Scr();
        //while(1);
        }
        }

        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮