STM32 +LCD1602 液晶屏程序
1602.h 文件
- #ifndef __1602_H
- #define __1602_H
- #include "sys.h"
- void init1602(void);
- void write_com(unsigned char com);
- void write_dat(unsigned char date);
- //void write_2date(unsigned char a,unsigned char b);
- #endif
复制代码
1602.c 文件
- #include <stm32f10x_lib.h>
- #include "1602.h"
- #include "sys.h"
- #include "delay.h"
- #define rd PCout(8)
- #define wr PCout(7)
- #define en PCout(6)
-
- void init1602()
- {
- AFIO->MAPR&=0XF8FFFFFF; //清除MAPR的[26:24]
- AFIO->MAPR|=0X04000000;
- RCC->APB2ENR|=1<<2; //使能PORTA时钟
- RCC->APB2ENR|=1<<4; //使能PORTC时钟
- // RCC->APB2ENR|=1<<0; //开启辅助时钟
- //pc6-pc9推挽输出
- GPIOC->CRH&=0XFFFFFF00;
- GPIOC->CRL&=0X00FFFFFF;
- GPIOC->CRH|=0X00000033;
- GPIOC->CRL|=0X33000000;
- GPIOC->ODR|=0X03C0;
- //Pa推挽输出
- GPIOA->CRL&=0X00000000;
- GPIOA->CRL|=0X33333333;
- GPIOA->ODR|=0XFF;
-
- // delay_ms(5);
- // write_com(0x38);
- // delay_ms(5);
- // write_com(0x38);
- delay_ms(5);
- write_com(0x38);
- write_com(0x38);
- write_com(0x08);
- write_com(0x01);
- write_com(0x06);
- write_com(0x0c);
- }
-
- /*******************写指令函数************************/
- void write_com(unsigned char com)
- {
- rd=0;
- wr=0;
- en=0;
-
- delay_ms(2);
- GPIOA->ODR=0X00FF&com;
- delay_ms(5);
- en=1;
- delay_ms(5);
- en=0;
- delay_ms(5);
- }
- /*******************写数据函数************************/
- void write_dat(unsigned char date)
- {
- rd=1;
- wr=0;
- en=0;
-
- delay_ms(2);
- GPIOA->ODR=0X00FF&date;
- delay_ms(5);
- en=1;
- delay_ms(5);
- en=0;
- }
复制代码- /*******************************************************************************
- *程序功能: 基于stm32驱动1602LCD显示的简单测试
- *使用说明:使用ALIENTEK mini开发板和开发箱显示模块
-
- *硬件连接:1602的连接请参照头文件的注释
- *备 注:没有经过其他硬件测试,但借助开发箱LCD的显示无异常
- *作 者:CCZ
- *******************************************************************************/
- #include <stm32f10x_lib.h>
- #include "sys.h"
- #include "delay.h"
- #include "1602.h"
- u8 table1[]="ARM-Stm32 CCZ" ;
- u8 table2[]="HELLO Tomorrow" ;
- int main(void)
- {
- u8 cc;
- Stm32_Clock_Init(9); //系统时钟设置
- delay_init(72); //延时初始化
- init1602();
- write_com(0x80); //第一行的首地址
- for(cc=0;cc<13;cc++)
- {
- write_dat(table1[cc]);
- delay_ms(3);
- }
- write_com(0x80+0x40); //第二行的首地址
- for(cc=0;cc<15;cc++)
- {
- write_dat(table2[cc]);
- delay_ms(3);
- }
- while(1);
- }
复制代码
Keil代码下载:
stm32 1602测试程序.7z
(1.05 MB, 下载次数: 48)
|