/***写汉字 同步显示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 Hz132=
{
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 Hz232=
{
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 Hz332=
{
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,disdtl,16,0); //10横向 90纵向disdt\[\]
POINT_COLOR=BLUE;//设置字体为蓝色
LCD_ShowChar(18,32,disdtm,16,0); //18横向 90纵向disdt\[\]
POINT_COLOR=BROWN;//设置字体为棕色
LCD_ShowChar(26,32,disdtn,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=Hz1s; //取字符表代码
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=Hz2s; //取字符表代码
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=Hz3s; //取字符表代码
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;
}
}
}
