单片机STM32_ds18b20工作原理简述

单片机STM32_ds18b20工作原理简述硬件原理图LCD12864.c你主要看每个功能函数是如何实现的/*****************************************按照自己的硬件电路图来设置*————————–*|PB.09:(LCD_BLK)|*|PC.06:(LCD_RST)…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

硬件原理图

在这里插入图片描述

LCD12864.c

你主要看每个功能函数是如何实现的

/**************************************** * 按照自己的硬件电路图来设置 * -------------------------- * | PB.09: (LCD_BLK) | * | PC.06: (LCD_RST) | * | PE.09: (LCD_EN,LCD_CLK) | * | PE.08: (LCD_RW,LCD_DAT) | * | PE.07: (LCD_RS,LCD_CS) | * | PD.08: (LCD_DB0) | * | PD.09: (LCD_DB1) | * | PD.10: (LCD_DB2) | * | PD.11: (LCD_DB3) | * | PD.12: (LCD_DB4) | * | PD.13: (LCD_DB5) | * | PD.14: (LCD_DB6) | * | PD.15: (LCD_DB7) | * -------------------------- **********************************************************************************/
#include "lcd12864.h"
#include "comm.h"
u8 Drawx = 0x90;	//--ÓÃÓÚÇå³ý·´°×,ĬÈϵØַΪ¹¦ÄÜÑ¡Ôñ½çÃæ
u8 Drawy = 0x90;	//--ÓÃÓÚÇå³ý·´°×,ĬÈϵØַΪ¹¦ÄÜÑ¡Ôñ½çÃæ
u8 Drwxy = 0;	 //--ÓÃÓÚÇå³ýÏ»®Ïß,ĬÈÏΪ¸ß×Ö½Ú
u8 Bytenum = 0;
void 	Lcd_Delay_us(u16 x)
{ 

while(x--);
}
/* * º¯ÊýÃû£ºLCD12864_GPIO_Config * ÃèÊö £ºÅäÖÃLCD12864Óõ½µÄI/O * ÊäÈë £ºÎÞ * Êä³ö £ºÎÞ * µ÷Óà £ºÄÚ²¿µ÷Óà */
void Lcd_GPIOConfigOut(void)
{ 

GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOE, ENABLE);
GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_0 | GPIO_Pin_1;//RW¡¢EN
GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;//RS
GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;//RST
GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;//BLK±³¹â
GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
ResetLcdBLK;
// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;//°´¼üÒý½Å
// GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
// GPIO_Init(GPIOE, &GPIO_InitStructure);
// RCC->APB2ENR |= 0x00000020;
// RCC->APB2ENR|=1<<3;//¿ªÆôBʱÖÓ
// RCC->APB2ENR|=1<<6;//¿ªÆôEʱÖÓ
// 
// GPIOD->CRL = (GPIOD->CRL&0x000fffff)|0x33300000;
// GPIOD->CRH = (GPIOD->CRH&0x00000000)|0x33333333; 
// GPIOD->ODR|=0XFF00;//ÉÏÀ­Êä³ö 
// GPIOB->CRH = (GPIOB->CRH&0xfff0ffff)|0x00030000; 
// GPIOE->CRH = (GPIOE->CRH&0x0000ffff)|0x44440000;
}	
void Lcd_GPIOConfigIn(void)                 //ͨ¹ýÁ½¸öºê¶¨Ò壬ʡÊÂÒ»ÏÂ×ÓÅäÖÃÁËÆ߸öGPIO¿Ú
{ 

GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
GPIO_InitStructure.GPIO_Pin   = LCD_DATA_PIN;
GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_IPD;//±ØÐëÅäÖóÉÏÂÀ­ÊäÈë
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(LCD_PORT, &GPIO_InitStructure);	
// GPIOD->CRH = (GPIOD->CRH&0x00000000)|0x44444444; 
}
void Lcd_GPIOD_Out(void)
{ 

GPIOD->CRH = (GPIOD->CRH&0x00000000)|0x33333333;	
}
void Lcd_CheckBusy(void)
{ 
	
ResetLcdRS;
SetLcdRW;
SetLcdEN;
//ÏÂÃæÕâ¾äºÜÖØÒª
GPIOD->ODR = GPIOD->ODR&0X00ff;//ÒòLCDÊý¾ÝÒý½Å±»ÅäÖóÉÁ˸¡¿ÕÊäÈ룬ËùÒÔÔÚ¶ÁLCDÒý½ÅÊý¾ÝÇ°ÏÈд0£¬ÒÔ±£Ö¤Òý½ÅµçƽÎȶ¨£¬¶ÁÈ¡µÄÊý¾Ý¿É¿¿
Lcd_GPIOConfigIn();
while((GPIOD->IDR>>8)&0x80);
ResetLcdEN;
Lcd_GPIOD_Out();		
}
void Lcd_WriteCmd(uint8_t cmd)
{ 

Lcd_CheckBusy();
ResetLcdRS;
ResetLcdRW;
SetLcdEN;
LCD_PORT->ODR = ((LCD_PORT->ODR&0x00ff)|(cmd<<8));  //¶ÁLCDÒý½ÅÊý¾ÝÇ°ÏÈд0£¬ÒÔ±£Ö¤Òý½ÅµçƽÎȶ¨£¬¶ÁÈ¡µÄÊý¾Ý¿É¿¿
ResetLcdEN;
}
void Lcd_WriteData(uint8_t dat)
{ 

Lcd_CheckBusy();
SetLcdRS;
ResetLcdRW;
SetLcdEN;
LCD_PORT->ODR = ((LCD_PORT->ODR&0x00ff)|(dat<<8));  //¶ÁLCDÒý½ÅÊý¾ÝÇ°ÏÈд0£¬ÒÔ±£Ö¤Òý½ÅµçƽÎȶ¨£¬¶ÁÈ¡µÄÊý¾Ý¿É¿¿
ResetLcdEN;
}
unsigned char ReadByte_12864(void)
{ 

unsigned char dat;
Lcd_CheckBusy();
Lcd_GPIOConfigIn();	
SetLcdRS;
SetLcdRW;
SetLcdEN;
dat = (uint8_t)(LCD_PORT->IDR>>8); 
ResetLcdEN;	
Lcd_GPIOD_Out();
return dat;		
}
void Lcd_Init(void)
{ 

Lcd_Delay_us(100);
SetLcdRST;
// SetLcdPSB;
Lcd_Delay_us(LCD_DELAY);
Lcd_WriteCmd(0x30);
Lcd_Delay_us(LCD_DELAY);
Lcd_WriteCmd(0x0c);
Lcd_Delay_us(LCD_DELAY);
Lcd_WriteCmd(0x01);
Lcd_Delay_us(LCD_DELAY);
Lcd_WriteCmd(0x06);
Lcd_Delay_us(LCD_DELAY);
}
void Lcd_ClearDRAM(void)
{ 

Lcd_WriteCmd(0x30);
Lcd_WriteCmd(0x01);//ÇåDDRAM£¬Ðèʱ4.6ms
// Lcd_Delay_us(20000); //´ËÑÓʱºÜ¹Ø¼ü£¬Ö±½ÓÓ°Ïìµ½LCDË¢ÆÁËÙ¶È
}
void Lcd_ClearLineFB(uint8_t addr_x, uint8_t addr_y, uint8_t num)
{ 

uint8_t x = 0, y = 0;
Lcd_WriteCmd(0x34); //ʹÓÃÀ©³äÖ¸Á
for(y=0; y<16; y++)
{ 
	 		
for(x=0; x<num; x++)
{ 

Lcd_WriteCmd(addr_y + y);// ÏȽ«´¹Ö±µÄλԪ×é×ø±ê(Y) дÈëGDRAM
Lcd_WriteCmd(addr_x + x);// ÔÙ½«Ë®Æ½×ø±ê(X) дÈëGDRAM
Lcd_WriteData(0x00);//дÊý¾Ý¸ß°Ëλ
Lcd_WriteData(0x00);//дÊý¾ÝµÍ°Ëλ 
}
// Lcd_WriteCmd(0x36); // Ñ¡Ôñ8λÊý¾ÝÁ÷,À©³äÖ¸Áî, »æͼÏÔʾ¿ª
}
Lcd_WriteCmd(0x36);
Lcd_WriteCmd(0x30);	
}
void Lcd_LineFB(uint8_t addr_x, uint8_t addr_y, uint8_t num)
{ 

uint8_t x = 0, y = 0;
if((Drawx!=addr_x) || (Drawy!=addr_y) || (Bytenum!=num))
{ 

Lcd_ClearLineFB(Drawx, Drawy, Bytenum);
Drawx = addr_x;
Drawy = addr_y;
Bytenum = num;	
}
Lcd_WriteCmd(0x34); 
for(y=0; y<16; y++)
{ 
			
for(x=0; x<num; x++)
{ 

Lcd_WriteCmd(addr_y + y);
Lcd_WriteCmd(addr_x + x);
Lcd_WriteData(0xff);
Lcd_WriteData(0xff);	
}
Lcd_WriteCmd(0x36);
}
Lcd_WriteCmd(0x30);	
}
void Draw_Pic(uint8_t addr_x, uint8_t addr_y, uint8_t const *pdat, uint8_t wide, uint8_t high)
{ 

uint16_t hang, lie;
Lcd_WriteCmd(0x34);//À©Õ¹Ö¸Á
Lcd_WriteCmd(0x36);//¹Ø»æͼ¹¦ÄÜ
if(wide%8 == 0) wide >>= 3;
else wide = (wide>>3)+1;
for(hang=0; hang<high; hang++)
{ 

if(addr_y+hang>31)
{ 

Lcd_WriteCmd(0x80+addr_y+hang-32);
Lcd_WriteCmd(0x88+addr_x);
}
else
{ 

Lcd_WriteCmd(0x80+addr_y+hang);
Lcd_WriteCmd(0x80+addr_x);
}
for(lie=0; lie<wide; lie++)
{ 

Lcd_WriteData(pdat[hang*wide+lie]);
}
}
Lcd_WriteCmd(0x36);// Ñ¡Ôñ8 λÊý¾ÝÁ÷,À©³äÖ¸Áî, »æͼÏÔʾ¿ª
Lcd_WriteCmd(0x30);
}
void Lcd_Pos(unsigned char x,unsigned char y)
{ 

unsigned char pos;
switch(x)
{ 

case 0:x=0x80;break;
case 1:x=0x90;break;
case 2:x=0x88;break;
case 3:x=0x98;break;
default:x=0x80;
break;
}
pos=x+y;
Lcd_WriteCmd(pos);
}
void Draw_Font_16x16(uint8_t addr_x, uint8_t addr_y, uint8_t width, uint8_t const *pAry, uint8_t num)
{ 

uint8_t x = 0, y = 0;
// uint8_t res = 2*width;
Lcd_WriteCmd(0x34); //ʹÓÃÀ©³äÖ¸Á
for(x=0; x<num; x++)
{ 

for(y=0; y<width; y++)
{ 
	 		
Lcd_WriteCmd(addr_y + y);// ÏȽ«´¹Ö±µÄλԪ×é×ø±ê(Y) дÈëGDRAM
Lcd_WriteCmd(addr_x + x);// ÔÙ½«Ë®Æ½×ø±ê(X) дÈëGDRAM
// Lcd_WriteData(pAry[y+res*x]);//дÊý¾Ý¸ß°Ëλ
// Lcd_WriteData(pAry[y+width+res*x]);//дÊý¾ÝµÍ°Ëλ 
Lcd_WriteData(pAry[y]);//дÊý¾Ý¸ß°Ëλ
Lcd_WriteData(pAry[y+width]);//дÊý¾ÝµÍ°Ëλ 
}
// Lcd_WriteCmd(0x36); // Ñ¡Ôñ8λÊý¾ÝÁ÷,À©³äÖ¸Áî, »æͼÏÔʾ¿ª
}	
Lcd_WriteCmd(0x36);
Lcd_WriteCmd(0x30);		
}
void Draw_Dot(unsigned char x, unsigned char y)
{ 

unsigned char x_byte,x_bit;//ÔÚºá×ø±êµÄÄÄÒ»¸ö×Ö½Ú£¬ÄÄÒ»¸öλ
unsigned char y_byte,y_bit;//ÔÚÄÄÒ»Ò³
unsigned char temp_h,temp_l; //ÕâÁ½±äÁ¿ÓÃÀ´´æ·Å¶Á³öÀ´µÄÊý¾Ý
x &= 0x7f; //ÏÞ¶¨xµÄÊýÖµ·¶Î§ÔÚ0¡«127Ö®¼ä
y &= 0x3f; //ÏÞ¶¨yµÄÊýÖµ·¶Î§ÔÚ0¡«63Ö®¼ä
x_byte = x >> 4;//Ëã³öÔÚÄÄÒ»¸ö×Ö½Ú£¨µØÖ·£©£¬Ò»¸öµØÖ·ÊÇ16λ
x_bit = x & 0x0f;//Ëã³öÔÚÄÄÒ»¸öλ
y_byte = y >> 5; //È·¶¨ÔÚÉÏ°ëÆÁ»¹ÊÇÏ°ëÆÁ 0-ÉÏ 1-Ï 
y_bit = y & 0x1f;
Lcd_WriteCmd(0x34);//À©Õ¹Ö¸Á
Lcd_WriteCmd(0x36);//¹Ø»æͼ¹¦ÄÜ
Lcd_WriteCmd(0x80 + y_bit);//ÏÈд´¹Ö±µØÖ·£¬×î¸ßλ±ØÐëΪ1
Lcd_WriteCmd(0x80 + x_byte + 8 * y_byte);//ˮƽ×ø±ê
//Ï°ëÆÁµÄˮƽ×ø±êÆðʼµØַΪ0X88
//8 * y_byte ¾ÍÊÇÓÃÀ´È·¶¨ÔÚÉÏ°ëÆÁ»¹ÊÇÏ°ëÆÁ
ReadByte_12864();//ÏÈ¿Õ¶ÁÒ»´Î
temp_h = ReadByte_12864();//¶Á¸ßλ
temp_l = ReadByte_12864();	//¶ÁµÍλ
//¶Á²Ù×÷»á¸Ä±äAC£¬ËùÒÔÒªÖØÐÂÉèÖÃÒ»´Î
Lcd_WriteCmd(0x80 + y_bit);//ÏÈд´¹Ö±µØÖ·£¬×î¸ßλ±ØÐëΪ1
Lcd_WriteCmd(0x80 + x_byte + 8 * y_byte);//ˮƽ×ø±ê
if(x_bit < 8)
{ 

Lcd_WriteData(temp_h | (0x01 << (7 - x_bit)));//д¸ß×Ö½Ú¡£ÒòΪ×ø±êÊÇ´Ó×óÏòÓÒµÄ,//¶øGDRAM¸ßλÔÚ×󣬵×λÔÚÓÒ 
Lcd_WriteData(temp_l); //Ô­Êý¾ÝËÍ»Ø 
}
else
{ 
	 
Lcd_WriteData(temp_h);
Lcd_WriteData(temp_l | (0x01 << (15 - x_bit)));			
}
Lcd_WriteCmd(0x36);// Ñ¡Ôñ8 λÊý¾ÝÁ÷,À©³äÖ¸Áî, »æͼÏÔʾ¿ª
Lcd_WriteCmd(0x30);
}
void Draw_Line(unsigned char  x1, unsigned char y1, unsigned char x2, unsigned char y2)
{ 

int x, y, dx, dy, s1, s2, p, temp, interchange, i;
x = x1;
y = y1;
dx = x2 > x1 ? (x2 - x1) : (x1 - x2);
dy = y2 > y1 ? (y2 - y1) : (y1 - y2);
if(x2 > x1)
s1 = 1;
else
s1 = -1;
if(y2>y1)
s2 = 1;
else
s2 = -1;
if(dy > dx)
{ 

temp = dx;
dx = dy;
dy = temp;
interchange = 1;
}
else
interchange = 0;
p = (dy << 1) - dx;
for(i = 0;i <= dx;i++)
{ 

Draw_Dot(x,y);
if(p >= 0)
{ 

if(interchange == 0)
y = y + s2;
else
x = x + s1;
p = p - (dx << 1);
}
if(interchange == 0)
x = x + s1; 
else
y = y + s2;
p = p + (dy << 1);
}
}
void Lcd_ClearGRAM(void)
{ 

uint8_t y, x,z;
uint8_t addr_y, addr_x;
addr_y = 0x80;
addr_x = 0x80;
Lcd_WriteCmd(0x34);
for(z=0; z<2; z++)
{ 

for(y=0; y<32; y++)
{ 

for(x=0; x<8; x++)//°Ë¸öÖÐÎÄ×Ö
{ 

Lcd_WriteCmd(addr_y+y); // ½«´¹Ö±µÄλԪ×é×ø±ê( Y) дÈëGDRAM
Lcd_WriteCmd(addr_x+x); // ÏȽ«Ë®Æ½µ¥ÔªÐ´Èëºá×ø±ê£¨X£©) дÈëGDRAM 
Lcd_WriteData(0x00);	//дÊý¾Ý¸ß°Ë룬16*16
Lcd_WriteData(0x00); //дÊý¾ÝµÍ°Ëλ
}//for(x=0; x<8; x++) end
Lcd_WriteCmd(0x36);  // Ñ¡Ôñ8 λÊý¾ÝÁ÷,À©³äÖ¸Áî, »æͼÏÔʾ¿ª
}//for(y=0; y<32; y++) end
addr_x = 0x88;
}//for(z=0; z<2; z++) end
Lcd_WriteCmd(0x30); 
}
void Lcd_Printf(uint8_t add, uint8_t *pdat)
{ 

Lcd_WriteCmd(add);
while(*pdat != '\0')
{ 

Lcd_WriteData(*pdat++);
// Lcd_Delay_us(5);
}
}
/
/*----------------È¡ÏûÏ»®Ïß/Ìî³äº¯Êý---------------------------------*/
void UnLcdDrw(uint8_t addr_x, uint8_t addr_y)
{ 

uint8_t y, x;
Lcd_WriteCmd(0x34);
for(y=0; y<15; y++)
{ 

for(x=0; x<1; x++)
{ 

Lcd_WriteCmd(addr_y+y); // ÏȽ«´¹Ö±µÄλԪ×é×ø±ê( Y) дÈëGDRAM
Lcd_WriteCmd(addr_x+x); // ÔÙ½«Ë®Æ½×ø±ê( X) дÈëGDRAM 
Lcd_WriteData(0x00);	//дÊý¾Ý¸ß°Ëλ
Lcd_WriteData(0x00); //дÊý¾ÝµÍ°Ëλ
}//for(x=0; x<1; x++) end 
Lcd_WriteCmd(0x36);  // Ñ¡Ôñ8 λÊý¾ÝÁ÷,À©³äÖ¸Áî, »æͼÏÔʾ¿ª
}//for(y=0; y<16; y++) end
Lcd_WriteCmd(0x30);
}
/*----------------µ¥×Ö½Ú·´°×/»­Ï»®Ïß---------------------------------*/
void LcdDrw(uint8_t addr_x, uint8_t addr_y, uint8_t num, uint8_t fl)
{ 

uint8_t y, x, i;
if(fl == LINE) i = 14;
else i = 0;
if((Drawx!=addr_x)||(Drawy!=addr_y)||(Drwxy!=num))
{ 
	
UnLcdDrw(Drawx,Drawy);
Drawx=addr_x;   
Drawy=addr_y;
Drwxy=num;
}//if((Drawx!=addr_x)||(Drawy!=addr_y)||(Drwxy!=num)) end
Lcd_WriteCmd(0x34);
for(y=i; y<15; y++)
{ 

for(x=0; x<1; x++)
{ 

Lcd_WriteCmd(addr_y+y); // ÏȽ«´¹Ö±µÄλԪ×é×ø±ê( Y) дÈëGDRAM
Lcd_WriteCmd(addr_x+x); // ÔÙ½«Ë®Æ½×ø±ê( X) дÈëGDRAM 
if (num == 0)//Ê××Ö½Ú·´°×
{ 

Lcd_WriteData(0xff);	//дÊý¾Ý¸ß°Ëλ
Lcd_WriteData(0x00); //дÊý¾ÝµÍ°Ëλ
}//if (num == 0) end
else if (num == 1)//´Î×Ö½Ú·´°×
{ 

Lcd_WriteData(0x00);	//дÊý¾Ý¸ß°Ëλ
Lcd_WriteData(0xff); //дÊý¾ÝµÍ°Ëλ 
}//else if (num == 1) end
}//for(x=0; x<1; x++) end 
Lcd_WriteCmd(0x36);  // Ñ¡Ôñ8 λÊý¾ÝÁ÷,À©³äÖ¸Áî, »æͼÏÔʾ¿ª
}//for(y=0; y<16; y++) end 
Lcd_WriteCmd(0x30);
}
/*----------------×Ö·´°×/»­Ï»®Ïß---------------------------------*/
void LcdDrwWord(uint8_t addr_x, uint8_t addr_y, uint8_t fl)
{ 

uint8_t y, x, i;
if(fl == LINE) i = 14;
else i = 0;
if((Drawx!=addr_x)||(Drawy!=addr_y))
{ 
	
UnLcdDrw(Drawx, Drawy);
Drawx=addr_x;   
Drawy=addr_y;
}//if((Drawx!=addr_x)||(Drawy!=addr_y)||(Drwxy!=num)) end
Lcd_WriteCmd(0x34);
for(y=i; y<15; y++)
{ 

for(x=0; x<1; x++)
{ 

Lcd_WriteCmd(addr_y+y); // ÏȽ«´¹Ö±µÄλԪ×é×ø±ê( Y) дÈëGDRAM
Lcd_WriteCmd(addr_x+x); // ÔÙ½«Ë®Æ½×ø±ê( X) дÈëGDRAM
Lcd_WriteData(0xff);	//дÊý¾Ý¸ß°Ëλ
Lcd_WriteData(0xff); //дÊý¾ÝµÍ°Ëλ
}	               
Lcd_WriteCmd(0x36);  // Ñ¡Ôñ8 λÊý¾ÝÁ÷,À©³äÖ¸Áî, »æͼÏÔʾ¿ª
}//for(y=0; y<16; y++) end
Lcd_WriteCmd(0x30);	
}
// * º¯ÊýÃû£ºLCD12864_Init
// * ÃèÊö £ºLCD12864³õʼ»¯
// * ÊäÈë £ºÎÞ
// * Êä³ö £ºÎÞ
// * µ÷Óà £ºÍⲿµ÷ÓÃ
// */
void LCD12864_Init(void)
{ 

Lcd_GPIOConfigOut();
Lcd_Init();
SetLcdBLK;	
Lcd_ClearDRAM();
Lcd_ClearGRAM(); 
}
//1¡¢80-87
//2¡¢90-97
//3¡¢88-8f
//4¡¢98-9f
void Ready_Mea_Scr(void)
{ 

Lcd_Printf(0x81, "");
Lcd_Printf(0x90, " ÕýÔÚ×¼±¸²âÁ¿" );
Lcd_Printf(0x88, " ÇëÉÔµÈ... " );
}

LCD12864.h

#ifndef __LCD12864_H
#define __LCD12864_H
#include "stm32f10x.h"
#define FB 0 //LCDµ¥×Ö½Ú·´°×ÏÔʾ
#define LINE 1 //LCDµ¥×Ö½ÚÏ»®ÏßÏÔʾ
#define LCD_DELAY 30
#define LCD_PORT GPIOD
#define LCD_DATA_PIN GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15
#define LCD_RS_PIN GPIO_Pin_5
#define LCD_RW_PIN GPIO_Pin_0
#define LCD_EN_PIN GPIO_Pin_1
#define LCD_BLK_PIN GPIO_Pin_9
#define LCD_RST_PIN GPIO_Pin_12
#define SetLcdRS GPIO_SetBits (GPIOC, LCD_RS_PIN)
#define ResetLcdRS GPIO_ResetBits(GPIOC, LCD_RS_PIN)
#define SetLcdRW GPIO_SetBits (GPIOB, LCD_RW_PIN)
#define ResetLcdRW GPIO_ResetBits(GPIOB, LCD_RW_PIN)
#define SetLcdEN GPIO_SetBits (GPIOB, LCD_EN_PIN)
#define ResetLcdEN GPIO_ResetBits(GPIOB, LCD_EN_PIN)
#define SetLcdBLK GPIO_SetBits(GPIOB, LCD_BLK_PIN)
#define ResetLcdBLK GPIO_ResetBits(GPIOB, LCD_BLK_PIN)
//#define SetLcdRST GPIO_SetBits (GPIOC, LCD_RST_PIN)
#define SetLcdRST GPIO_SetBits (GPIOB, LCD_RST_PIN)
#define ResetLcdRST GPIO_ResetBits(GPIOB, LCD_RST_PIN)
void Lcd_Delay_us(u16 x);
void LCD12864_Init(void);
//void Scr1(void);
void Lcd_WriteCmd(uint8_t cmd);
void Lcd_WriteData(uint8_t dat);
void Draw_Font_16x16(uint8_t addr_x, uint8_t addr_y, uint8_t width, uint8_t const *pAry, uint8_t num);
void Draw_Line(unsigned char  x1, unsigned char y1, unsigned char x2, unsigned char y2);
void LCD_12864_DrawLine(u16 x1, u16 y1, u16 x2, u16 y2);
void Set_12864_point(u8 x,u8 y);
void Draw_Dot(unsigned char x, unsigned char y);
void Lcd_Pos(unsigned char x,unsigned char y);
void Draw_Pic(uint8_t addr_x, uint8_t addr_y, uint8_t const *pdat, uint8_t wide, uint8_t high);
void Lcd_ClearLineFB(uint8_t addr_x, uint8_t addr_y, uint8_t num);
void Lcd_ClearGRAM(void);
void Lcd_ClearDRAM(void);
void Lcd_Printf(uint8_t add, uint8_t *pdat);
void LcdDrw(uint8_t addr_x, uint8_t addr_y, uint8_t num, uint8_t fl);
void LcdDrwWord(uint8_t addr_x, uint8_t addr_y, uint8_t fl);
void Lcd_LineFB(uint8_t addr_x, uint8_t addr_y, uint8_t num);
void Ready_Mea_Scr(void);
void Show_Uarms_Scr(char *string);
#endif /* __LCD12864_H */

LCD12864参考手册

这个网上一大堆,程序都是按照手册来写的,你可以去某个卖LCD12864的淘宝店,淘宝店页面就会分享有各种配套资料。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

找不到的就私聊我

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/194203.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • mysql中explain的用法_mysql substr用法

    mysql中explain的用法_mysql substr用法基于Mysql5.7版本的explain参数详解…Mysql官网相关参数解读一:idSELECT标识符1.id越大越先执行2.相同id,从从往下执行二:select_type1.SIMPLE:最简单的查询(没有关联查询没有子查询没有union的查询语句)2:PRIMARY:子查询最外层的查询语句3.SUBQUERY:子查询内层查询语句4.DERIVED:派生表查询,FROM后的不是表而是查询后的结果集5.UNION:union或unionall中的第二个以后的查询表6.U

  • yum彻底卸载软件包(包含依赖)

    yum彻底卸载软件包(包含依赖)概述yum命令安装软件包会同时安装需要的依赖包,但yumremove却只卸载这个文件包本身,如果需要删除安装时附加的依赖包,则可以使用yumhistory的相关操作实现回滚。具体操作查看yum操作(事务)历史[root@localhost~]#yumhistorylist或yumhistoryLoading”fastestmirror”pluginConfigtime:0.007Yumversion:3.4.3ID|Loginuser

  • Python之requests的安装

    在windows系统下,只需要输入命令pipinstallrequests,即可安装。   在linux系统下,只需要输入命令sudo  pipinstallrequests,即可安装。   注:关于python第三方库的安装最好少使用easy_install,因为easy_install只能安装不能卸载,如果要卸载需要进入到python的安装

  • 访问页面升级访问_容器化单页面应用中RESTful API的访问

    访问页面升级访问_容器化单页面应用中RESTful API的访问最近在工作中,需要让运行在容器中的单页面应用程序能够访问外部的RESTfulAPI。这个需求看起来并不困难,不过实现起来还是有些曲折的。在此,我就将这部分内容总结一下。在入正题之前,有个一问题,就是为什么要将单页面应用放在容器中运行?这个问题其实跟“为什么要将应用程序容器化”是一个问题。简单来讲,容器化的应用程序可以运行在任何具有容器执行环境的宿主平台上,比如可以在Linux系统中运行…

  • 中国电信修改光猫路由模式为桥接模式怎么改_打10000改电信光猫桥接模式

    中国电信修改光猫路由模式为桥接模式怎么改_打10000改电信光猫桥接模式首先,需要搞到超级管理员的账号和密码,可以上网根据光猫型号查找,也可以直接跟安宽带的工作人员要.第一步:准备超级管理员账号和密码.可以自行根据光猫型号搜索,也可以直接跟安宽带的工作人员要.第二步:使用超级管理员账密登录网关管理页面(光猫)一般为192.168.1.1(前提你的路由模式为路由模式,而不是桥接模式)第三步:修改光猫参数1:连接名称修改改为3_INTERNET_R_VID_412:连接模式修改为桥接3:保存第四步:使用路由器拨号宽带账号和密码一般都会贴在光猫上,如果丢失了

  • IntelliJ IDEA 2021.5 x64 激活码[在线序列号]

    IntelliJ IDEA 2021.5 x64 激活码[在线序列号],https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号