/***写汉字 同步显示0-32字节写过程程序测试***/

/***2018 1 28 21:15 L217 CODE 220340*********/

      #include <stm32f10x_lib.h>

  #include "sys.h"  

  #include "stdio.h" 

  #include "usart.h"

  #include "delay.h"

  #include "led.h" 

  #include "flash.h"

    #include "lcd.h"    

  #include "text.h"

  #include "fat.h"

  #include "fontupd.h"

  #include "mmc_sd.h"

  const unsigned char Hz1[32]=   

              {

      0x10,0x00,0x10,0x00,0x3D,0xFC,0x20,0x20,

      0x40,0x20,0xBC,0x20,0x10,0x20,0x10,0x20,

              0xFD,0xFC,0x10,0x20,0x10,0x28,0x10,0x24,

      0x14,0x24,0x18,0x20,0x13,0xFE,0x00,0x00

  };/*"钰"*/

          const unsigned char Hz2[32]=

      {

  0X01,0XFF,0X01,0XFF,0X01,0XFF,0X01,0XFF,

      0X01,0XFF,0X01,0XFF,0X01,0XFF,0X01,0XFF,

      0X01,0XFF,0X01,0XFF,0X01,0XFF,0X01,0XFF,

      0X01,0XFF,0X01,0XFF,0X01,0XFF,0X01,0XFF

      };/*"竖条"*/ 

      const unsigned char Hz3[32]=

      {

      0X00,0X01,0X00,0X03,0X00,0X07,0X00,0X0F,

      0X00,0X1F,0X00,0X3F,0X00,0X7F,0X00,0XFF,

      0X01,0XFF,0X03,0XFF,0X07,0XFF,0X0F,0XFF,

      0X1F,0XFF,0X3F,0XFF,0X7F,0XFF,0XFF,0XFF

        };/*三角形*/ 

      const u8 disdt[]={48,49,50,51,52,53,54,55,56,57};

/**************写汉字字节数显示*********/

              void  dispvavel(u8 vel)

      { 

      u8 l,m,n;

          l=vel/100;

      m=(vel-l*100)/10;

          n=vel-l*100-m*10;

      POINT_COLOR=RED;//设置字体为红色 

      LCD_ShowChar(10,32,disdt[l],16,0); //10横向 90纵向disdt[]

          POINT_COLOR=BLUE;//设置字体为蓝色

      LCD_ShowChar(18,32,disdt[m],16,0); //18横向 90纵向disdt[]

      POINT_COLOR=BROWN;//设置字体为棕色

      LCD_ShowChar(26,32,disdt[n],16,0); //26横向 90纵向disdt[]

          }

/**************写一个“沁”字***********Hz1************/

              void LcdShowHz1(u16 x,u16 y)

      {

      u8 temp,t1,t,k;                  //数据缓冲 一个字节循环 汉字字节总数

      u8 x0,s=0;                      //数据缓冲 一个字节循环 汉字字节总数

       for(t=0;t<16;t++)                 //共16个字节

       {

       x0=x; //汉字左边缘等于实参

        for(k=0;k<2;k++)  //两行等于两字节,左右结构

        {

        dispvavel(s); //临时函数,写汉字字节显示

        temp=Hz1[s]; //取字符表代码

         for(t1=0;t1<8;t1++)             //一个字节左移8次 读每移动一次后0或1

         {

          if(temp&0x80)

      {

      LCD_DrawPoint(x0,y);           //如为1在XY地址写显示

      }

     temp<<=1;                       //左移一位

         x0++;                           //水平位置加1共0--15计16个点

         }

         s++; // 写完1字节八个点 字符表位置加1

         delay_ms(600);

        }

       y++;      //两个字节换一行

               }

      }

/**************画一个竖条 左部00H 右部FFH***Hz2*************/

          void LcdShowHz2(u16 x,u16 y)

      {

      u8 temp,t1,t,k;                  //数据缓冲 一个字节循环 汉字字节总数

      u8 x0,s=0;                      //数据缓冲 一个字节循环 汉字字节总数

       for(t=0;t<16;t++)                 //共16个字节

       {

       x0=x;      //汉字左边缘等于实参

        for(k=0;k<2;k++)       //两行等于两字节,左右结构

        {

        dispvavel(s);      //临时函数,写汉字字节显示

        temp=Hz2[s];      //取字符表代码

         for(t1=0;t1<8;t1++)             //一个字节左移8次 读每移动一次后0或1

         {

          if(temp&0x80)

      {

      LCD_DrawPoint(x0,y);           //如为1在XY地址写显示

      }

     temp<<=1;                       //左移一位

         x0++;                           //水平位置加1共0--15计16个点

         }

         s++;      // 写完1字节八个点 字符表位置加1

         delay_ms(600);

         }

        y++;      //两个字节换一行

               }

      }

/***************画一个三角形****Hz3******************/

          void LcdShowHz3(u16 x,u16 y)

      {

      u8 temp,t1,t,k;                  //数据缓冲 一个字节循环 汉字字节总数

      u8 x0,s=0;                      //数据缓冲 一个字节循环 汉字字节总数

       for(t=0;t<16;t++)                 //共16个字节

       {

       x0=x;          //汉字左边缘等于实参

        for(k=0;k<2;k++)       //两行等于两字节,左右结构

        {

        dispvavel(s);      //临时函数,写汉字字节显示

        temp=Hz3[s];      //取字符表代码

         for(t1=0;t1<8;t1++)             //一个字节左移8次 读每移动一次后0或1

         {

          if(temp&0x80)

      {

      LCD_DrawPoint(x0,y);           //如为1在XY地址写显示

      }

     temp<<=1;                       //左移一位

         x0++;                           //水平位置加1共0--15计16个点

         }

         s++;          // 写完1字节八个点 字符表位置加1

         delay_ms(600);

         }

        y++;      //两个字节换一行

               }

      }

/*************************************/

      int main(void)

      {  

   u8 i;

     Stm32_Clock_Init(9);              //系统时钟设置

   delay_init(72);              //延时初始化

   uart_init(72,9600);               //串口1初始化    

   LCD_Init();              //初始化液晶   

       LED_Init();                       //LED初始化

   SPI_Flash_Init();              //SPI FLASH初始化 

            if(Font_Init())                  //字库不存在,则更新字库

            {

                POINT_COLOR=RED;      

            LCD_Clear(WHITE);

              LCD_ShowString(60,50,"Mini STM32");

              LCD_ShowString(60,70,"Font Updating...");  

//字体更新 

            SD_Initialize(); //初始化SD卡       

             while(FAT_Init()) //FAT 错误

             {

     LCD_ShowString(60,90,"FAT SYS ERROR");  

     i=SD_Initialize();

     if(i)//SD卡初始化 

     {   

LCD_ShowString(60,110,"SD_CARD ERROR");

     }   

     delay_ms(500);

     LCD_Fill(60,90,240,126,WHITE);//清除显示   

     delay_ms(500);

     LED0=!LED0;    

         }  

        LCD_Fill(60,90,240,126,WHITE);//清除显示   

        while(Update_Font()!=0)//字体更新出错

        {   

     LCD_ShowString(60,90,"SYSTEM FILE LOST");   

     delay_ms(500);    

     LCD_ShowString(60,90,"Please Check....");

     delay_ms(500);    

     LED0=!LED0;

        };  

        LCD_Clear(WHITE);

           }  

       while(1)

   {

   POINT_COLOR=BLUE;     

   Show_Str(60,50,"2016 10 5",16,0);      

   Show_Str(10,70,"蔡沁钰 常州市北实验中学",16,0);      

   Show_Str(60,90,"八(8)班",16,0);

   delay_ms(5000);

   delay_ms(5000);

   LCD_Clear(WHITE); //清除显示

   delay_ms(5000);      

       POINT_COLOR=RED;  

   Show_Str(60,32,"1",16,0);         //1

   LcdShowHz1(00,00); //画横线 已实现

    for(i=0;i<20;i++)    

    {

        delay_ms(200);

    LED0=!LED0;

    LED1=!LED1;

    }

    LCD_Clear(WHITE); //清除显示

    for(i=0;i<50;i++) //已实现

    {

    delay_ms(20);

    LED1=!LED1;

    } 

Show_Str(60,32,"2",16,0);        //2

      LcdShowHz2(00,00); //画横线 已实现

    for(i=0;i<20;i++)    

    {

    delay_ms(200);

    LED0=!LED0;

    LED1=!LED1;

    }

    LCD_Clear(WHITE); //清除显示

    Show_Str(60,32,"3",16,0);        //3

    LcdShowHz3(00,00); //画横线 已实现

    for(i=0;i<20;i++)    

    {

    delay_ms(200);

    LED0=!LED0;

    LED1=!LED1;

    }  

   }

/***原子开发板LCD显示屏编译测试***********************/

/***汉字显示,画两条横线三条竖线**2018 1 28 PAST******/

/***L85 CODE 4736        *****************************/

                #include <stm32f10x_lib.h>

    #include "sys.h"

        #include "usart.h"

          #include "delay.h"

        #include "led.h" 

            #include "lcd.h"    

            #include "text.h"

/******在x=0~239y=0~319位置连续写点(画直线)横线*****/

              void LcdShowHz(u16 x,u16 y)

              {

            u8 i;

            for(i=0;i<100;i++)    //已实现

           {

           delay_ms(100);

           LED1=!LED1;    //

           LCD_DrawPoint(i,0);//如为1在XY地址写显示  画点x=0~239y=0~319

               LCD_DrawPoint(i,1);//如为1在XY地址写显示

           LCD_DrawPoint(i,2);//如为1在XY地址写显示

           LCD_DrawPoint(i,3);//如为1在XY地址写显示

             LCD_DrawPoint(i,4);//如为1在XY地址写显示

           LCD_DrawPoint(i,y+120);//如为1在XY地址写显示  画点x=0~239y=0~319

               LCD_DrawPoint(i,y+121);//如为1在XY地址写显示

           LCD_DrawPoint(i,y+122);//如为1在XY地址写显示

           LCD_DrawPoint(i,y+123);//如为1在XY地址写显示

           LCD_DrawPoint(i,y+124);//如为1在XY地址写显示

           }

              }

/********************************/

              int main(void)

              {  

          u8 i;

            Stm32_Clock_Init(9);          //系统时钟设置

          delay_init(72);         //延时初始化

          uart_init(72,9600);           //串口1初始化    

          LCD_Init();         //初始化液晶   

          LED_Init();                   //LED初始化

          while(1)

           {

            POINT_COLOR=BLUE;     

              Show_Str(60,50,"2016 10 5",16,0);      

            Show_Str(10,70,"蔡沁钰 常州市北实验中学",16,0);      

            Show_Str(60,90,"八(8)班",16,0);

            Show_Str(60,34,"2018 1 28  1",16,0); //显示状态标志1

            for(i=0;i<100;i++)                 //画三条宽度5个点的竖线 已实现

            {

            POINT_COLOR=BLUE;            //设置字体为红色 

            LCD_DrawPoint(1,i+110); //调用画点子程序

            LCD_DrawPoint(2,i+110); //调用画点子程序

            LCD_DrawPoint(3,i+110); //调用画点子程序

            LCD_DrawPoint(4,i+110); //调用画点子程序

            LCD_DrawPoint(5,i+110); //调用画点子程序

            LCD_DrawPoint(26,i+110); //调用画点子程序

            LCD_DrawPoint(27,i+110); //调用画点子程序

              LCD_DrawPoint(28,i+110); //调用画点子程序

            LCD_DrawPoint(29,i+110); //调用画点子程序

            LCD_DrawPoint(30,i+110); //调用画点子程序

            LCD_DrawPoint(46,i+110); //调用画点子程序

            LCD_DrawPoint(47,i+110); //调用画点子程序

            LCD_DrawPoint(48,i+110); //调用画点子程序

            LCD_DrawPoint(49,i+110); //调用画点子程序

            LCD_DrawPoint(50,i+110); //调用画点子程序

            delay_ms(200);

            LED0=!LED0;

            }      

                POINT_COLOR=RED; 

            Show_Str(60,34,"2018 1 28  2",16,0);    //显示状态标志2

            LcdShowHz(30,110);         //调用画竖线子程序

            for(i=0;i<100;i++)    

            {

            delay_ms(200);

            LED0=!LED0;

            LED1=!LED1;

            }

            LCD_Clear(WHITE);         //清除显示

            Show_Str(60,34,"2018 1 28  3",16,0); //显示状态标志3

            for(i=0;i<100;i++)         //已实现

            {

            delay_ms(100);

            LED1=!LED1;

            }  

           }

              }

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐