STM32的1602程序.doc_第1页
STM32的1602程序.doc_第2页
STM32的1602程序.doc_第3页
STM32的1602程序.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/*文件名称:stm_1602.h for STM32*by zyy 2013-12-02*/#ifndef LCD1602_STM32_H#define LCD1602_STM32_H#define LCD_RS_1 GPIOE-BSRR=GPIO_Pin_0 /PE.0-(LCD)RS#define LCD_RS_0 GPIOE-BRR =GPIO_Pin_0#define LCD_RW_1 GPIOE-BSRR=GPIO_Pin_1 /PE.1-(LCD)RW#define LCD_RW_0 GPIOE-BRR =GPIO_Pin_1#define LCD_EN_1 GPIOE-BSRR=GPIO_Pin_2 /PE.2-(LCD)E#define LCD_EN_0 GPIOE-BRR =GPIO_Pin_2#define DATAOUT GPIOD-ODR /PD0.7-(LCD)D0D7#ifndef uchar#define uchar unsigned char#endif#ifndef uint#define uint unsigned int#endifextern void delay_nms(unsigned long n);extern void delay_nus(unsigned long n);void LCD_Writecmd(uchar cmd);void LCD_Writedata(uchar dat);void LCD_write_char(uchar row,uchar col,char ch);void LCD_write_str(uchar x,uchar y,char str);void LCD_clear(void);void LCD_Init(void);/延时n usvoid delay_nus(unsigned long n);void delay_nms(unsigned long n);void A1602_GPIO_Configuration(void);void LCD_Init(void);#endif/*文件名称:stm_1602.c for STM32*by zyy 2013-12-02*/#include stm32f10x.h#include stm_1602.h#ifndef LCD1602_STM32_C#define LCD1602_STM32_C/*名 称:LCD_Writecmd()*功 能:写指令到LCD1602,指令数据占一个字节*入口参数:cmd:待写入的指令*出口参数:无*/void LCD_Writecmd(uchar cmd)LCD_RS_0; /对同一个寄存器的两次写入,中间延时一会delay_nus(1);LCD_RW_0;delay_nus(1);LCD_EN_1; DATAOUT = cmd;delay_nus(300);/必要的延时LCD_EN_0; /下降沿,LCD1602开始工作/*名 称:LCD_Writedata()*功 能:写一字节数据到LCD1602*入口参数:dat:无符号字节类型,0255 包括各个ASCII码字符*出口参数:无*/void LCD_Writedata(uchar dat)LCD_RS_1;delay_nus(1);LCD_RW_0;delay_nus(1);LCD_EN_1; /先拉高 DATAOUT = dat;delay_nus(300); /很重要的延时,经调试,延时300us以上才可以LCD_EN_0; /下降沿,开始写入有效数据/*功 能:在指定位置显示一个字符 *入口参数:y:行 0或1 x:列,015,ch:待显示的字符*/void LCD_write_char(uchar x,uchar y,char ch)if(y=0)LCD_Writecmd(0x80+x);elseLCD_Writecmd(0xC0+x);LCD_Writedata(ch);/*名 称:LCD_write_str()*功 能:使LCD1602显示一个字符串*入口参数:y:行 0或1 x:列,015,str:待显示的字符串*出口参数:无*/void LCD_write_str(uchar x,uchar y,char str)uchar i=0;if(y=0)LCD_Writecmd(0x80+x);elseLCD_Writecmd(0xC0+x);while(stri != 0)LCD_Writedata(stri);+i;/*/*清屏函数*/*/void LCD_clear(void)LCD_Writecmd(0x01);delay_nms(5);/*名 称:LCD_Init()*功 能:初始化LCD1602*入口参数:无*出口参数:无*常用命令:0x38:16*2显示,5*&点阵显示字符,8位数据;指令执行时间40us* 0x0C:开显示,关光标 40us* 0x08:关显示,关光标 40us* 0x0D:字符闪烁,关光标,接着设定位置,闪烁周期0.4ms左右* 0x0F:字符闪烁,开光标* 0x06:写完数据自动右移光标,普通情形,从左向右显示 40us* 0x04:写完数据自动左移光标,可以从右向左显示 40us* 0x01:清除显示内容,即清屏 1.64ms* 0x02:使光标还回起始位置 1.64ms* 0x18:屏幕上所有字符同时左移一格,适合滚动显示 40us* 0x1C:屏幕上所有字符同时右移一格,适合滚动显示 40us*/void LCD_Init(void) delay_nms(100); /延时20ms LCD_Writecmd(0x38); /16*2显示,5*7点阵,8位数据delay_nms(10);LCD_Writecmd(0x38); /16*2显示,5*7点阵,8位数据delay_nms(10);LCD_Writecmd(0x38); /16*2显示,5*7点阵,8位数据delay_nms(10);LCD_Writecmd(0x38); /16*2显示,5*7点阵,8位数据delay_nms(10);LCD_Writecmd(0x08); /先关显示,后开显示delay_nms(10);LCD_Writecmd(0x01); /清除LCD的显示内容delay_nms(10);LCD_Writecmd(0x06); /自动右移光标,0x04为左移光标delay_nms(10);LCD_Writecmd(0x0c); /显示开,关光标;0x08为关显示delay_nms(10);/延时n usvoid delay_nus(unsigned long n)unsigned long j;while(n-) j=8;while(j-);/延时n msvoid delay_nms(unsigned long n)while(n-)delay_nus(1100); /*/*GPIO配置函数*/*/void A1602_GPIO_Configuration(void)GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOD, ENABLE);/开启端口D的时钟GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;/PD0PD7 推挽输出,不能有漏极输出,除非外有有上拉电阻GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_Init(GPIOD, &GPIO_InitStructure);RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOE, ENABLE);/开启端口E的时钟GPIO_InitStructure.GPIO

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论