欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

    標(biāo)題: 自己移植的Nokia5110的代碼驅(qū)動(dòng)基于K60 [打印本頁]

    作者: 爬山虎40    時(shí)間: 2017-8-10 10:15
    標(biāo)題: 自己移植的Nokia5110的代碼驅(qū)動(dòng)基于K60
    使用的是山外的庫函數(shù)


    單片機(jī)源程序如下:
    1. #include "nokia5110.h"
    2. #include "fontbank.h"
    3. #include "MK60_gpio.h"

    4. void Nokia5110_Send(uint8 data, DCType dc)
    5. {
    6.   uint8 i;
    7.   if(dc == DC_DATA)
    8.     Nokia5110_DC_DATA();
    9.   else
    10.     Nokia5110_DC_CMD();
    11.    for(i=0; i<8; i++)
    12.   {
    13.     if((data<<i)&0x80)
    14.       Nokia5110_DIN_H();
    15.     else
    16.       Nokia5110_DIN_L();
    17.       Nokia5110_CLK_L();
    18.       DELAY_US(1);
    19.       Nokia5110_CLK_H();
    20.   }
    21. }


    22. void Nokia5110_Init(void)
    23. {
    24.    gpio_init(PTD1,GPO,1);   
    25.    gpio_init(PTD2,GPO,1);   
    26.    gpio_init(PTD3,GPO,1);   
    27.    gpio_init(PTD4,GPO,1);     
    28.    gpio_init(PTD5,GPO,1);
    29.    gpio_init(PTD6,GPO,1);   
    30.   
    31.     Nokia5110_LIGHT_ON();   //打開背光燈
    32.     Nokia5110_RST_L();
    33.     DELAY_US(10);          //這個(gè)延時(shí)是必須的       
    34.     Nokia5110_RST_H();
    35.        
    36.     Nokia5110_CE_H();
    37.     Nokia5110_CE_L();
    38.                      //設(shè)置LCD
    39.     Nokia5110_Send(0x21, DC_CMD);        //使用擴(kuò)展命令設(shè)置Nokia5110模式
    40.     Nokia5110_Send(0xC8, DC_CMD);        //設(shè)置偏置電壓
    41.     Nokia5110_Send(0x06, DC_CMD);        //溫度校正
    42.     Nokia5110_Send(0x13, DC_CMD); //1:48
    43.     Nokia5110_Send(0x20, DC_CMD);        //使用基本命令
    44.     Nokia5110_Send(0x0E, DC_CMD);        //設(shè)定顯示模式,反轉(zhuǎn)顯示
    45.        
    46.     Nokia5110_Clear();
    47. }

    48. void Nokia5110_Clear(void)
    49. {
    50.     uint16 i;
    51.     Nokia5110_Send(0x40,DC_CMD);  //設(shè)置RAM的Y坐標(biāo)地址為0   
    52.     Nokia5110_Send(0x80,DC_CMD);  //設(shè)置RAM的X坐標(biāo)地址為0
    53.        
    54.     for(i=0; i<504; i++)          //共計(jì)504個(gè)像素點(diǎn)
    55.     Nokia5110_Send(0, DC_DATA);   //全部寫零達(dá)到清除的目的  
    56. }

    57. void Nokia5110_SetXY(uint8 X, uint8 Y)
    58. {
    59.     if(X > 13) X = 13;
    60.     if(Y > 5)  Y = 5;
    61.     X *=6;
    62.        
    63.     Nokia5110_Send(0x80 | X,DC_CMD);
    64.     DELAY_US(10);
    65.     Nokia5110_Send(0x40 | Y,DC_CMD);
    66. }

    67. /*設(shè)置屏幕對(duì)比度,contrast的范圍為0~64;*/
    68. void Nokia5110_SetContrast(uint8 contrast)
    69. {
    70.         if(contrast > 64) contrast = 64;
    71.         Nokia5110_Send(0x21,DC_CMD);  //進(jìn)入拓展命令模式
    72.         Nokia5110_Send(0x80 | contrast,DC_CMD);  //設(shè)置對(duì)比度
    73.         Nokia5110_Send(0x20,DC_CMD);  //進(jìn)入基本命令模式
    74. }

    75. /*寫一個(gè)字節(jié)*/
    76. void Nokia5110_WriteChar(uint8 ascii)
    77. {
    78.         uint8 i;
    79.         for(i=0; i<6; i++)
    80.         Nokia5110_Send(Font6x8[ascii-32][i],DC_DATA);
    81. }

    82. uint8 LongToString(uint8 *str, signed long dat)
    83. {
    84.         signed char i = 0;
    85.         unsigned char len = 0;
    86.         unsigned char buf[12];

    87.         if(dat < 0)
    88.         {
    89.                 dat = -dat;
    90.                 *str++ = '-';
    91.                 len++;
    92.         }
    93.         do{
    94.                 buf[i++] = dat % 10;
    95.                 dat /= 10;
    96.                 }while(dat > 0);
    97.         len += i;
    98.         while(i-- > 0)
    99.         {
    100.                 *str++ = buf[i] + '0';
    101.         }
    102.         *str = '\0';

    103.         return len;
    104.                
    105. }

    106. /* 在液晶上寫數(shù)字*/
    107. void Nokia5110_WriteNum(uint8 X,uint8 Y,uint32 number)
    108. {
    109.         uint8 str[12];
    110.        
    111.         LongToString(str,number);
    112.         Nokia5110_WriteEnStr(X,Y,str);
    113. }

    114. /* 在液晶上顯示字符串,(x,y)-對(duì)應(yīng)屏幕上的起始坐標(biāo),str-字符串指針 */
    115. void Nokia5110_WriteEnStr(uint8 X, uint8 Y, uint8 *str)
    116. {
    117.     Nokia5110_SetXY(X,Y);  //設(shè)置起始地址
    118.     while (*str != '\0')  //連續(xù)寫入字符串?dāng)?shù)據(jù),直到檢測(cè)到結(jié)束符
    119.     {
    120.         Nokia5110_WriteChar(*str++);
    121.     }
    122.                 Nokia5110_Send(0,DC_DATA);
    123. }

    124. /*寫一個(gè)中文字符*/
    125. void Nokia5110_WriteChinese(uint8 X, uint8 Y,uint8 GBK)
    126. {
    127.         uint8 i;
    128.   Nokia5110_SetXY(X,Y);
    129.         for(i=0; i<12; i++)
    130.         {
    131.           Nokia5110_Send(Font12x16_chinese[GBK][i],DC_DATA);
    132.         }
    133.         //delay_us(10);
    134.         Nokia5110_SetXY(X,Y+1);
    135.         for(i=12; i<24; i++)
    136.         {
    137.           Nokia5110_Send(Font12x16_chinese[GBK][i],DC_DATA);
    138.         }
    139. }

    140. /*寫一幅圖像到液晶*/
    141. void Nokia5110_WriteImage(void)
    142. {
    143.     uint8 row,column;
    144.     for(row=0; row<6; row++)
    145.     {
    146.        Nokia5110_SetXY(0,row);
    147.        for(column=0; column<83; column++)
    148.       {
    149.         Nokia5110_Send(image1[row][column],DC_DATA);
    150.        }
    151.     }
    152. }
    復(fù)制代碼

    所有資料51hei提供下載:
    nokia5110.zip (4.14 KB, 下載次數(shù): 6)







    歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1