欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
stm32驅動5110液晶屏的程序源碼
[打印本頁]
作者:
凱歌1
時間:
2018-7-15 17:16
標題:
stm32驅動5110液晶屏的程序源碼
stm32顯示5110源代碼
單片機源程序如下:
#include "5110.h"
#include "delay.h"
#include "sys.h"
#include "math.h"
#include <stdlib.h>
//LCD的IO口宏定義
#define CLR_RESET PAout(6)=0
#define SET_RESET PAout(6)=1
#define CLR_SCE PAout(7)=0
#define SET_SCE PAout(7)=1
#define CLR_DC PAout(5)=0
#define SET_DC PAout(5)=1
#define CLR_SDIN PAout(4)=0
#define SET_SDIN PAout(4)=1
#define CLR_SCLK PAout(3)=0
#define SET_SCLK PAout(3)=1
#define CLR_BL PAout(2)=0
#define SET_BL PAout(2)=1
unsigned int table[20]; //功能5110用于存放數字
const unsigned char font6x8[][6]=//功能ASCII碼
{
{0x00,0x00,0x00,0x00,0x00,0x00},//sp
{0x00,0x00,0x00,0x2f,0x00,0x00},//!
{0x00,0x00,0x07,0x00,0x07,0x00},//"
{0x00,0x14,0x7f,0x14,0x7f,0x14},//#
{0x00,0x24,0x2a,0x7f,0x2a,0x12},//$
{0x00,0x62,0x64,0x08,0x13,0x23},//%
{0x00,0x36,0x49,0x55,0x22,0x50},//&
{0x00,0x00,0x05,0x03,0x00,0x00},//'
{0x00,0x00,0x1c,0x22,0x41,0x00},//(
{0x00,0x00,0x41,0x22,0x1c,0x00},//)
{0x00,0x14,0x08,0x3E,0x08,0x14},//*
{0x00,0x08,0x08,0x3E,0x08,0x08},//+
{0x00,0x00,0x00,0xA0,0x60,0x00},//,
{0x00,0x08,0x08,0x08,0x08,0x08},//-
{0x00,0x00,0x60,0x60,0x00,0x00},//.
{0x00,0x20,0x10,0x08,0x04,0x02},///
{0x00,0x3E,0x51,0x49,0x45,0x3E},//0
{0x00,0x00,0x42,0x7F,0x40,0x00},//1
{0x00,0x42,0x61,0x51,0x49,0x46},//2
{0x00,0x21,0x41,0x45,0x4B,0x31},//3
{0x00,0x18,0x14,0x12,0x7F,0x10},//4
{0x00,0x27,0x45,0x45,0x45,0x39},//5
{0x00,0x3C,0x4A,0x49,0x49,0x30},//6
{0x00,0x01,0x71,0x09,0x05,0x03},//7
{0x00,0x36,0x49,0x49,0x49,0x36},//8
{0x00,0x06,0x49,0x49,0x29,0x1E},//9
{0x00,0x00,0x36,0x36,0x00,0x00},//:
{0x00,0x00,0x56,0x36,0x00,0x00},//;
{0x00,0x08,0x14,0x22,0x41,0x00},//<
{0x00,0x14,0x14,0x14,0x14,0x14},//=
{0x00,0x00,0x41,0x22,0x14,0x08},//>
{0x00,0x02,0x01,0x51,0x09,0x06},//?
{0x00,0x32,0x49,0x59,0x51,0x3E},//@
{0x00,0x7C,0x12,0x11,0x12,0x7C},//A
{0x00,0x7F,0x49,0x49,0x49,0x36},//B
{0x00,0x3E,0x41,0x41,0x41,0x22},//C
{0x00,0x7F,0x41,0x41,0x22,0x1C},//D
{0x00,0x7F,0x49,0x49,0x49,0x41},//E
{0x00,0x7F,0x09,0x09,0x09,0x01},//F
{0x00,0x3E,0x41,0x49,0x49,0x7A},//G
{0x00,0x7F,0x08,0x08,0x08,0x7F},//H
{0x00,0x00,0x41,0x7F,0x41,0x00},//I
{0x00,0x20,0x40,0x41,0x3F,0x01},//J
{0x00,0x7F,0x08,0x14,0x22,0x41},//K
{0x00,0x7F,0x40,0x40,0x40,0x40},//L
{0x00,0x7F,0x02,0x0C,0x02,0x7F},//M
{0x00,0x7F,0x04,0x08,0x10,0x7F},//N
{0x00,0x3E,0x41,0x41,0x41,0x3E},//O
{0x00,0x7F,0x09,0x09,0x09,0x06},//P
{0x00,0x3E,0x41,0x51,0x21,0x5E},//Q
{0x00,0x7F,0x09,0x19,0x29,0x46},//R
{0x00,0x46,0x49,0x49,0x49,0x31},//S
{0x00,0x01,0x01,0x7F,0x01,0x01},//T
{0x00,0x3F,0x40,0x40,0x40,0x3F},//U
{0x00,0x1F,0x20,0x40,0x20,0x1F},//V
{0x00,0x3F,0x40,0x38,0x40,0x3F},//W
{0x00,0x63,0x14,0x08,0x14,0x63},//X
{0x00,0x07,0x08,0x70,0x08,0x07},//Y
{0x00,0x61,0x51,0x49,0x45,0x43},//Z
{0x00,0x00,0x7F,0x41,0x41,0x00},//[
{0x00,0x55,0x2A,0x55,0x2A,0x55},//5
{0x00,0x00,0x41,0x41,0x7F,0x00},//]
{0x00,0x04,0x02,0x01,0x02,0x04},//^
{0x00,0x40,0x40,0x40,0x40,0x40},//_
{0x00,0x00,0x01,0x02,0x04,0x00},//'
{0x00,0x20,0x54,0x54,0x54,0x78},//a
{0x00,0x7F,0x48,0x44,0x44,0x38},//b
{0x00,0x38,0x44,0x44,0x44,0x20},//c
{0x00,0x38,0x44,0x44,0x48,0x7F},//d
{0x00,0x38,0x54,0x54,0x54,0x18},//e
{0x00,0x08,0x7E,0x09,0x01,0x02},//f
{0x00,0x18,0xA4,0xA4,0xA4,0x7C},//g
{0x00,0x7F,0x08,0x04,0x04,0x78},//h
{0x00,0x00,0x44,0x7D,0x40,0x00},//i
{0x00,0x40,0x80,0x84,0x7D,0x00},//j
{0x00,0x7F,0x10,0x28,0x44,0x00},//k
{0x00,0x00,0x41,0x7F,0x40,0x00},//l
{0x00,0x7C,0x04,0x18,0x04,0x78},//m
{0x00,0x7C,0x08,0x04,0x04,0x78},//n
{0x00,0x38,0x44,0x44,0x44,0x38},//o
{0x00,0xFC,0x24,0x24,0x24,0x18},//p
{0x00,0x18,0x24,0x24,0x18,0xFC},//q
{0x00,0x7C,0x08,0x04,0x04,0x08},//r
{0x00,0x48,0x54,0x54,0x54,0x20},//s
{0x00,0x04,0x3F,0x44,0x40,0x20},//t
{0x00,0x3C,0x40,0x40,0x20,0x7C},//u
{0x00,0x1C,0x20,0x40,0x20,0x1C},//v
{0x00,0x3C,0x40,0x30,0x40,0x3C},//
{0x00,0x1C,0xA0,0xA0,0xA0,0x7C},//y
{0x00,0x44,0x64,0x54,0x4C,0x44},//z
{0x14,0x14,0x14,0x14,0x14,0x14}//horizlines
};
unsigned char string[14]={"Nokia5110"};
/******************************************************************************
----------------------功能:5110的IO口初始化--------------------------------------
******************************************************************************/
void LCD_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/********************使能A口************************/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
//設置A0口
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_2);
//設置A1口
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_3);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
//設置B6口 SCL
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_4);
//設置B7口 SDA
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_5);
/********************使能C口************************/
// RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
//設置C3口
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_6);
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_7);
}
/******************************************************************************
功能:5110寫數據/命令
dat寫入的數據,command寫入的命令
D/C=0命令,D/C=1數據。
******************************************************************************/
void LCD_write_byte(unsigned char dat,unsigned char command)
{
unsigned char i;
CLR_SCE;
if(command==0)
CLR_DC;
else
SET_DC;
for(i=0;i<8;i++)
{
if(dat&0x80)
SET_SDIN;
else
CLR_SDIN;
CLR_SCLK;
dat=dat<<1;
SET_SCLK;
}
SET_SCE;
}
/******************************************************************************
功能:設置坐標X:0-83Y:0-5
******************************************************************************/
void LCD_set_XY(unsigned char X,unsigned char Y)
{
LCD_write_byte(0x40|Y,0);
LCD_write_byte(0x80|X,0);
}
/******************************************************************************
功能:清屏
******************************************************************************/
void LCD_clear(void)
{
unsigned int i;
LCD_write_byte(0x0c,0);
LCD_write_byte(0x80,0);
for(i=0;i<504;i++)
{
LCD_write_byte(0,1);
}
}
/******************************************************************************
功能:5110初始化
******************************************************************************/
void LCD_init(void)
{
CLR_RESET;
delay_us(2);
SET_RESET;
CLR_SCE;
SET_SCE;
LCD_write_byte(0x21,0);
LCD_write_byte(0xc8,0);
LCD_write_byte(0x06,0);
LCD_write_byte(0x13,0);
LCD_write_byte(0x20,0);
LCD_clear();
LCD_write_byte(0x0c,0);
CLR_SCE;
}
/******************************************************************************
功能:顯示一個字符
******************************************************************************/
void LCD_write_char(unsigned char c)
{
unsigned char line;
c-=32;
for(line=0;line<6;line++)
LCD_write_byte(font6x8[c][line],1);
}
/******************************************************************************
功能:顯示一個字符串
******************************************************************************/
void LCD_write_str(unsigned char*string)
{
while(*string)
{
LCD_write_char(*string);string++;
}
}
/******************************************************************************
函數名稱:Write_num(longintnum);
輸入:longintnum
功能:顯示10位十進制整數
*****************************************************************************/
void Write_num(long int num)
{
char i,weishu=0;
unsigned long int x,y;
if(num<0)
LCD_write_char('-');//如果小于0,加負號
x=labs(num);//取絕對值
while(num=num/10)//此處必須是一個等于號
{
weishu++;
}
weishu++;//計算輸入的num的位數
num=x;//取回數值
for(i=0;i<weishu;i++)
{
/*一位一位的取值放入table[20]中,table[20]根據輸入的num的位數變為table[weishu]*/
x=num/10;
y=num-x*10;
table[i]=y;
num=x;
}
for(i=0;i<weishu;i++)
{
/*對table[weishu]中寄存的數據一位一位的與十進制的數字比較然后顯示*/
if(table[weishu-1-i]==0)LCD_write_char('0');
if(table[weishu-1-i]==1)LCD_write_char('1');
if(table[weishu-1-i]==2)LCD_write_char('2');
if(table[weishu-1-i]==3)LCD_write_char('3');
if(table[weishu-1-i]==4)LCD_write_char('4');
if(table[weishu-1-i]==5)LCD_write_char('5');
if(table[weishu-1-i]==6)LCD_write_char('6');
if(table[weishu-1-i]==7)LCD_write_char('7');
if(table[weishu-1-i]==8)LCD_write_char('8');
if(table[weishu-1-i]==9)LCD_write_char('9');
}
}
/******************************************************************************
功能:位圖繪制函數
XY起始坐標
*map:位圖點陣數據
Pix_x:長
Pix_y:寬
******************************************************************************/
void LCD_draw_bmp_pixel(unsigned char X,unsigned char Y,unsigned char*map,unsigned char
Pix_x,unsigned char Pix_y)
{
unsigned int i,n;
unsigned char row;
if(Pix_y%8==0)
row=Pix_y/8;
else
row=Pix_y/8+1;
LCD_set_XY(X,Y);
for(n=0;n<row;n++)
{
for(i=0;i<Pix_x;i++)
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
5110.rar
(272.68 KB, 下載次數: 91)
2018-7-15 23:23 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1