ImageVerifierCode 换一换
格式:DOCX , 页数:46 ,大小:31.14KB ,
资源ID:6030113      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6030113.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(STM32F4LCD12864串行并行驱动程序合集.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

STM32F4LCD12864串行并行驱动程序合集.docx

1、STM32F4LCD12864串行并行驱动程序合集LCD12864.c文件:/* File name - lcd12864.c* Version - V1.1* Date - 07-15-2017* Brief - LCD12864驱动函数* 适用于ST7920驱动芯片 V1.0* Revise - A、修正操作命令宏定义。* - B、显示字符串函数增加显示长度选择,即显示多少个ASCII可显示字符,汉字x2即可* - C、去掉显示数组函数,合并在字符串显示里 V1.1* Revise - A、增加STM32硬件SPI控制接口* - B、修正STM32并口控制LCD12864接口(但未测试)*

2、/#include lcd12864.h/* 自定义显示字符 */#define CGRAM_Value 64 /写入CGRAM数量 u8 CGROM_Code = /电量100Percent(add_h=0,add_l=0) 0x00,0x00,0x00,0x00,0xFF,0xFE,0x80,0x02,0xB6,0xDA,0xB6,0xDB,0xB6,0xDB,0xB6,0xDB, 0xB6,0xDB,0xB6,0xDB,0xB6,0xDB,0xB6,0xDA,0x80,0x02,0xFF,0xFE,0x00,0x00,0x00,0x00, /月亮图形(add_h=0,add_l=2) 0

3、x01,0x80,0x07,0x00,0x0E,0x00,0x1C,0x00,0x3C,0x00,0x78,0x00,0x78,0x00,0x78,0x00, 0x78,0x00,0x7C,0x00,0x7C,0x00,0x3E,0x00,0x1F,0x00,0x0F,0x80,0x03,0xF0,0x00,0x30, /存储设备(add_h=0,add_l=4) 0x00,0x00,0x0F,0xF8,0x08,0x08,0x0B,0x68,0x08,0x08,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE, 0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x3F,

4、0xFE,0x1F,0xFC,0x0F,0xF8,0x07,0xF0,0x03,0xE0, /天线图形(add_h=0,add_l=6) 0x10,0x10,0x20,0x08,0x40,0x04,0x84,0x42,0x88,0x22,0x90,0x12,0x93,0x92,0x93,0x92, 0x91,0x12,0x88,0x22,0x85,0x42,0x41,0x04,0x21,0x08,0x11,0x10,0x03,0x80,0x03,0x80 /CD图形 /0xff,0xff,0xff,0xff,0xff,0xff,0xe3,0x07,0xc9,0xb3,0x9d,0xb9,0x9

5、f,0xb9,0x9f,0xb9, /0x9f,0xb9,0x9f,0xb9,0x9d,0xb9,0xc9,0xb3,0xe3,0x07,0xff,0xff,0xff,0xff,0xff,0xff, /右指向手型 /0x00,0x00,0x1e,0x00,0x12,0x00,0x73,0xfc,0x52,0x02,0x52,0x1c,0x53,0xe0,0x52,0x10, /0x53,0xe0,0x52,0x10,0x53,0xe0,0x52,0x10,0x73,0xe0,0x12,0x00,0x1e,0x00,0x00,0x00 /摄氏图形 /0x00,0x00,0x00,0x00,0x0

6、0,0x00,0x1c,0x70,0x14,0xd8,0x1d,0x88,0x01,0x80,0x01,0x80, /0x01,0x80,0x01,0x80,0x01,0x88,0x00,0xc8,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00, /天线图形1 /0xff,0xff,0x80,0x01,0xbf,0xfd,0xdf,0xfb,0xec,0x37,0xf6,0x6f,0xfb,0xdf,0xfd,0xbf, /0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,0xfe,0x7f,

7、0xff,0xff, /蓝牙图形 /0x07,0xe0,0x0e,0x70,0x1e,0xb8,0x3e,0xdc,0x36,0xec,0x3a,0xdc,0x3c,0xbc,0x3e,0x7c, /0x3e,0x7c,0x3c,0xbc,0x3a,0xdc,0x36,0xec,0x3e,0xdc,0x1e,0xb8,0x0e,0x70,0x07,0xe0,;u8 const ClearCGRAM = 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0

8、x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00;u8 const SunIcon = 0x00,0x80,0x40,0x82,0x20,0x84,0x10,0x08,0x03,0xC0,0x07,0xE0,0x0F,0xF0,0xEF,0xF7, 0x0F,0xF0,0x0F,0xF0,0x07,0xE0,0x03,0xC0,0x10,0x08,0x20,0x84,0x40,0x82,0x00,0x80;u8 const MoonIcon = 0x01,0x80,0x07,0x00,0x0E,0x00,0x1C,0

9、x00,0x3C,0x00,0x78,0x00,0x78,0x00,0x78,0x00, 0x78,0x00,0x7C,0x00,0x7C,0x00,0x3E,0x00,0x1F,0x00,0x0F,0x80,0x03,0xF0,0x00,0x30,;u8 const AntennaIcon = 0x10,0x10,0x20,0x08,0x40,0x04,0x84,0x42,0x88,0x22,0x90,0x12,0x93,0x92,0x93,0x92, 0x91,0x12,0x88,0x22,0x85,0x42,0x41,0x04,0x21,0x08,0x11,0x10,0x03,0x80,

10、0x03,0x80;u8 const WIFIConnection = 0x00,0x00,0x00,0x00,0x0F,0xF0,0x3F,0xFC,0x70,0x0E,0xE0,0x07,0x07,0xE0,0x0F,0xF0, 0x1C,0x38,0x00,0x00,0x01,0x80,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x00,0x00,0x00,0x00;u8 const Battery_100Percent = 0x00,0x00,0x00,0x00,0xFF,0xFE,0x80,0x02,0xB6,0xDA,0xB6,0xDB,0xB6,0xDB,0xB

11、6,0xDB, 0xB6,0xDB,0xB6,0xDB,0xB6,0xDB,0xB6,0xDA,0x80,0x02,0xFF,0xFE,0x00,0x00,0x00,0x00;u8 const Battery_80Percent = 0x00,0x00,0x00,0x00,0xFF,0xFE,0x80,0x02,0xB6,0xC2,0xB6,0xC3,0xB6,0xC3,0xB6,0xC3, 0xB6,0xC3,0xB6,0xC3,0xB6,0xC3,0xB6,0xC2,0x80,0x02,0xFF,0xFE,0x00,0x00,0x00,0x00;u8 const Battery_60Per

12、cent = 0x00,0x00,0x00,0x00,0xFF,0xFE,0x80,0x02,0xB6,0x02,0xB6,0x03,0xB6,0x03,0xB6,0x03, 0xB6,0x03,0xB6,0x03,0xB6,0x03,0xB6,0x02,0x80,0x02,0xFF,0xFE,0x00,0x00,0x00,0x00;u8 const Battery_40Percent = 0x00,0x00,0x00,0x00,0xFF,0xFE,0x80,0x02,0xB0,0x02,0xB0,0x03,0xB0,0x03,0xB0,0x03, 0xB0,0x03,0xB0,0x03,0x

13、B0,0x03,0xB0,0x02,0x80,0x02,0xFF,0xFE,0x00,0x00,0x00,0x00;u8 const Battery_20Percent = 0x00,0x00,0x00,0x00,0xFF,0xFE,0x80,0x02,0x80,0x02,0x80,0x03,0x80,0x03,0x80,0x03, 0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x02,0x80,0x02,0xFF,0xFE,0x00,0x00,0x00,0x00;u8 const ASCII_Table = 0x00,0x00,0x00,0x18,0x24,0x42

14、,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00,/*0,0*/ 0x00,0x00,0x00,0x10,0x70,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00,/*1,1*/ 0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x04,0x04,0x08,0x10,0x20,0x42,0x7E,0x00,0x00,/*2,2*/ 0x00,0x00,0x00,0x3C,0x42,0x42,0x04,0x18,0x04,0x02,0x02,0x42,0x44,

15、0x38,0x00,0x00,/*3,3*/ 0x00,0x00,0x00,0x04,0x0C,0x14,0x24,0x24,0x44,0x44,0x7E,0x04,0x04,0x1E,0x00,0x00,/*4,4*/ 0x00,0x00,0x00,0x7E,0x40,0x40,0x40,0x58,0x64,0x02,0x02,0x42,0x44,0x38,0x00,0x00,/*5,5*/ 0x00,0x00,0x00,0x1C,0x24,0x40,0x40,0x58,0x64,0x42,0x42,0x42,0x24,0x18,0x00,0x00,/*6,6*/ 0x00,0x00,0x0

16、0,0x7E,0x44,0x44,0x08,0x08,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00,/*7,7*/ 0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x24,0x18,0x24,0x42,0x42,0x42,0x3C,0x00,0x00,/*8,8*/ 0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x42,0x26,0x1A,0x02,0x02,0x24,0x38,0x00,0x00 /*9,9*/;u8 LCD12864_LockedFlag; /LCD12864 locked flag/=vo

17、id LCD_delay_1us() int i = 200; /最小90可以稳定工作 while (i-);void LCD_delay_nus(int nus) while (nus-)LCD_delay_1us();#ifdef LCD_Work_Mode_Parallel /如果定义了,则使用并口工作模式GPIO_InitTypeDef GPIOStru; /定义用于定义所以引脚为输出的变量/=/* 函数功能 - 把所有数据端口初始化为推挽输出模式的函数。* 入口参数 - none* 返回数值 - none* 功能说明 - none*/void LCDDataBus_OUT(void)

18、 RCC_APB2PeriphClockCmd(DataBusGPIOCLK,ENABLE); GPIOStru.GPIO_Pin = DataBusPins; /LCD数据端口对应的引脚 GPIOStru.GPIO_Mode = GPIO_Mode_OUT; /普通输出模式 GPIOStru.GPIO_OType = GPIO_OType_PP; /推挽输出 GPIOStru.GPIO_Speed = GPIO_Speed_100MHz;/100MHz GPIOStru.GPIO_PuPd = GPIO_PuPd_UP; /上拉 GPIO_Init(DataBusGPIO,&GPIOStru

19、); /* 函数功能 - 把数据引脚初始化为浮空输入的函数* 入口参数 - none* 返回数值 - none* 功能说明 - none*/void LCDDataBus_IN(void) RCC_APB2PeriphClockCmd(DataBusGPIOCLK,ENABLE); GPIOStru.GPIO_Pin = DataBusPins; /LCD数据端口对应的引脚 GPIOStru.GPIO_Mode = GPIO_Mode_IN; /普通输入模式 GPIOStru.GPIO_OType = GPIO_OType_OD; /开漏模式 GPIOStru.GPIO_Speed = GPI

20、O_Speed_100MHz;/100MHz GPIOStru.GPIO_PuPd = GPIO_PuPd_NOPULL; /无上下拉 GPIO_Init(DataBusGPIO,&GPIOStru); /* 函数功能 - LCD12864判断忙* 入口参数 - none* 返回数值 - none* 功能说明 - none*/void LCD_Check_Busy(void) static u16 busytimeout; /忙超时 /= LCDDataBus_IN(); /把数据引脚定义为浮空输入 do busytimeout+; if(busytimeout 300) break; LCD

21、_RS = 0; LCD_Delay(); LCD_RW = 1; LCD_Delay(); LCD_EN = 1; LCD_Delay(); while(GPIO_ReadInputData(DataBusGPIO) & DataBusPin7); /等待LCD忙完 LCD_EN = 0; LCDDataBus_OUT(); /把数据引脚定义为输出 /= if(busytimeout = 300) printf(LCD Busy TimeOut.rn); busytimeout = 0;/* 函数功能 - LCD写入一个字节命令或者数据,判断忙标志(8位数据一次发送完毕)* 入口参数 - d

22、at:要写入的字节* ord:判断dat是命令还是数据依据,“0”为命令,“1”为数据* 返回数值 - none* 功能说明 - none*/void LCD_Write_Byte(u8 dat,u8 ord) /= LCD_Check_Busy(); /判断是否在忙? LCD_EN = 0; LCD_Delay(); LCD_RW = 0; LCD_Delay(); if(ord & 0x01) LCD_RS = 1; /放上数据或者命令判断位 else LCD_RS = 0; LCD_EN = 1; LCD_Delay(); LCDWriteData(dat); /放入数据 LCD_Del

23、ay(); LCD_EN = 0; /=/=#else /没定义则使用串口通讯模式 #ifdef LCD_Work_Mode_HardSPI /串行模式-采用硬件SPI /= /* * 函数功能 - 初始化硬件SPI1模块,配置为主机模式 * 入口参数 - none * 返回数值 - none * 功能说明 - none */ void SPI1_Init(void) GPIO_InitTypeDef GPIO_InitStructure; SPI_InitTypeDef SPI_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIO

24、B, ENABLE); /使能GPIOB时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE); /使能SPI1时钟 /GPIOB3,5初始化设置(仅使用SCK,MOSI引脚) GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_5; /PB35复用功能输出 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; /复用功能 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; /推挽输出 GPIO_InitStruct

25、ure.GPIO_Speed = GPIO_Speed_100MHz; /100MHz GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; /上拉 GPIO_Init(GPIOB, &GPIO_InitStructure); /初始化 GPIO_PinAFConfig(GPIOB,GPIO_PinSource3,GPIO_AF_SPI1); /PB3复用为 SPI1(SCK) /GPIO_PinAFConfig(GPIOB,GPIO_PinSource4,GPIO_AF_SPI1); /PB4复用为 SPI1(MISO) GPIO_PinAFConfig(GPIOB,GPIO_PinSource5,GPIO_AF_SPI1); /PB5复用为 SPI1(MOSI) /这里只针对SPI口初始化 RCC_APB2PeriphResetCmd(RCC_APB2Periph_SPI1,ENABLE); /复位SPI1 RCC_APB2PeriphResetCmd(RCC_APB2Per

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1