STM32驱动1602程序

发布者:虚拟现实迷最新更新时间:2018-03-07 来源: eefocus关键字:STM32  驱动1602 手机看文章 扫描二维码
随时随地手机看文章

    标 注:用到了 PD_0—7,给PO口(单片机板液晶数据口),PA0_2;

    已在函数中将他们以寄存器形式配置,注踏出再次配置PD时

    不应在配置这些口;

    在主函数中需将PD,PA使能。

    头函数:#include"1602.h"

    函 数:在1602.h中有列举;

    返回值:无;

    用PD0_7给液晶数据,PA0_2位控制为依次rs,rw,en;

    #ifndef __1602_H

    #define __1602_H

    #include "stm32f10x.h"

    void write1602_com(u8 com);

    void write1602_dat(u8 dat);

    void LCD1602_init(void);

    void write1602_Achar(u8 hang,u8 numadd,u8 x);

    void write1602_string(u8 hang,u8 numadd,u8 *p);

    #endif

    #include"stm32f10x.h"

    #include"1602.h"

    //sbit rs=P2^5;//gpioa_0

    //sbit rw=P2^6;//gpioa_1

    //sbit en=P2^7;//gpioa_2

    void Delayms(unsigned short time)//nms

    {

    unsigned short i, j;

    for(; time > 0; time--){

    for(j = 0; j < 10; j++){

    for(i = 0; i < 1000; i++);

    }

    }

    }

    void write1602_com(u8 com)

    {

    GPIOD->ODR&=0xff00;//??

    GPIOA->ODR&=0xfffb;//GPIOA->ODR&=0<<2;/

    void RCC_Configuration(void);

    void GPIO_Configuration(void);

    void NVIC_Configuration(void);

    u8 table[]="2010-4-30";

    void Delay(unsigned short time)//nms

    {

    unsigned short i, j;

    for(; time > 0; time--){

    for(j = 0; j < 10; j++){

    for(i = 0; i < 1000; i++);

    }

    }

    }

    int main(void)

    {

    u8 i;

    RCC_Configuration();

    NVIC_Configuration();

    GPIO_Configuration();

    lcd1602_init();

    while (1)

    {

    //i=KeysCAN();

    //LED(i);

    write1602_string(1,17,table);

    for(i=0;i<16;i++)

    {

    write1602_com(0x18);

    Delay(200);

    }

    }

    }

    void RCC_Configuration(void)

    {

    RCC_DeInit();

    RCC_HSEConfig(RCC_HSE_ON);

    HSEStartUpStatus = RCC_WaitForHSEStartUp();

    if(HSEStartUpStatus == SUCCESS)

    {

    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

    FLASH_SetLatency(FLASH_Latency_2);

    RCC_HCLKConfig(RCC_SYSCLK_Div1);

    RCC_PCLK2Config(RCC_HCLK_Div1);

    RCC_PCLK1Config(RCC_HCLK_Div2);

    RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);

    RCC_PLLCmd(ENABLE);

    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)

    {

    }

    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

    while(RCC_GetSYSCLKSource() != 0x08)

    {

    }

    }

    RCC_APB2PeriphCLOCkCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOA| RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOB

    | RCC_APB2Periph_AFIO, ENABLE);

    }

    void GPIO_Configuration(void)

    {

    GPIO_InitTypeDef GPIO_InitStructure;

    GPIO_InitStructure.GPIO_PIN =GPIO_Pin_All;

    GPIO_InitStructure.GPIO_Speed =GPIO_Speed_50MHz;

    GPIO_InitStructure.GPIO_Mode =GPIO_Mode_Out_PP;

    GPIO_Init(GPIOB, &GPIO_InitStructure);

    }

    void NVIC_Configuration(void)

    {

    //NVIC_InitTypeDef NVIC_InitStructure;

    #ifdef VECT_TAB_RAM

    NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);

    #else

    NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);

    #endif

    }


关键字:STM32  驱动1602 引用地址:STM32驱动1602程序

上一篇:STM32模拟IIC程序
下一篇:采用STM32的PWM输入功能计算输入PWM的周期

推荐阅读最新更新时间:2024-03-16 15:56

US-020超声波模块驱动STM32
一、前期准备 单片机:STM32F103C8T6 开发环境:MDK5.14 库函数:标准库V3.5 US-020模块:淘宝有售 二、实验效果 三、驱动原理 触发信号Tirig维持10Us以上的高电平即可等待Echo的返回,这里是用EXTI检测俩个跳变信号,去打开和关闭定时器,最后一次测量计算结果后清除定时器计时,并等待下一个循环开始。需要完整工程或者有问题的请加QQ:1002521871,验证:呵呵。 四、驱动代码 US-020.h #ifndef __US_020_H__ #define __US_020_H__ #include stm32f10x.h #include gpio.h #include
[单片机]
US-020超声波模块<font color='red'>驱动</font>(<font color='red'>STM32</font>)
STM32之CAN详解
简介:bxCAN有3个主要的工作模式:初始化模式、正常模式和睡眠模式。 当bxCAN处于睡眠模式,软件必须对CAN_MCR寄存器的INRQ位置’1’并且同时对SLEEP位清’0’,才能进入初始化模式。 有2种方式可以唤醒(退出睡眠模式)bxCAN:通过软件对SLEEP位清’1’,或硬件检测到CAN总线的活动。 1 bxCAN工作模式 bxCAN有3个主要的工作模式:初始化模式、正常模式和睡眠模式。 在硬件复位后,bxCAN工作在睡眠模式以节省电能,同时CANTX引脚的内部上拉电阻被激活。软件通过对CAN_MCR寄存器的INRQ或SLEEP位 置’1’,可以请求bxCAN进入初始化或睡眠模式。一旦进入了初始化或睡眠模
[单片机]
<font color='red'>STM32</font>之CAN详解
STM32标准库转LL库代码
一、四种库比较 LL库,即STM32Cube Low-Layer,也叫Cube LL、Cube底层库等。 开发STM32通常有四种“库”,寄存器、标准外设库、HAL、LL。 早在2014年,ST推出了STM32CubeMX这款工具,同步推出了对应的STM32Cube HAL库。 但是,HAL存在一些问题:代码量大、执行效率低等缺点。 因此,在2017年,ST推出了STM32Cube LL库,目的就是为了解决的HAL库的缺点,让开发STM32的工程师有更多的选择。 之前有工程师总结了寄存器、标准外设库、HAL、LL四种库的代码性能: (来源ST社区) 针对上图(Flash、 SRAM 占用量和执行代码的效率这三项指标对比
[单片机]
<font color='red'>STM32</font>标准库转LL库代码
STM32程序移植技巧总结
1. 工程更换不同的STM32芯片 eg:stm32f103rct6 ---- stm32f103c8t6: 1.1. 修改芯片 点击魔术棒,在出来的菜单栏里,Device 选项重新选择芯片 1.2. 修改启动文件 此处举例是 RCT6 修改为 C8T6,因为 flash 容量大小不一样,所以需要对应修改启动文件,如果是 flash 大小相同,此步骤不需要。此处由:startup_stm32f10x_hd.s修改为startup_stm32f10x_md.s 1.3. 修改全局宏定义 同样先点击魔术棒,在菜单栏选择 C/C++。进而修改全局宏定义。此处:STM32F10X_HD– STM32F10X_MD
[单片机]
<font color='red'>STM32</font>程序移植技巧总结
蓝桥杯嵌入式STM32学习笔记(一)——MDK下C语言基础复习
MDK下C语言基础复习 写在前面:就在前几天我刚刚参加完了蓝桥杯的省赛,在比赛之前我阅读了社区里许多优秀博主的文章,所以也想把自己的收获当作笔记记下,希望能够帮助后面也要参赛的同学,顺便也总结一下自己这段时间的收获。 这一部分是MDK中有关C语言的部分,如果大家C语言都学得很好就忽略,主要是讲一些基本操作。 1.1位操作 在MDK下常用的位操作符和微操作技巧 C语言支持如下6钟位操作 其中这里与、或、异或和取反不用我多讲我在这里讲一下移位运算。 移位运算包括左移和右移 左移运算:x K 表示:x左移k位,并在右端补零 右移运算:x K 表示:x右移k位,并在左端正数补0,负数补1(算术移位) 例子: 假设u8 A=
[单片机]
蓝桥杯嵌入式<font color='red'>STM32</font>学习笔记(一)——MDK下C语言基础复习
STM32实现ADS1256进行数据电压采集程序
通过cubeMX配置STM32RCT6的IO口与ads1256ADC模块的连接IO口工作模式SPI,还有接受中断接受状态引脚,最终ADC采集数据经过卡尔曼滤波器滤波输出 单片机源程序如下: #include ads1256.h int32_t adcVaule = 0x00; float voltage = 0x00; float filterVoltage = 0.0; float filterVoltage2 = 0.0; void delayXus(uint16_t us) { uint16_t diff = 0xffff - 5 - us; //设置定时器的计数值 __HAL_TIM_SET_COUNT
[单片机]
STM32:USART串口通信笔记
硬件平台:stm32f10xZET6 开发环境:keil MDK uVision v4.10 开发语言:C、ST_lib_3.5固件库 【串口通信】 typedef struct { u32 USART_BaudRate; u16 USART_WordLength; u16 USART_StopBits; u16 USART_Parity; u16 USART_Mode; u16 USART_HardwareFlowControl; } USART_InitTypeDef; typedef struct { u16 USART_Clock; u16 USART_CPOL; u16 USART_CPHA;
[单片机]
STM32默认启动
TM32默认启动时PB4、PB3、PA15三个引脚不是普通IO,而是JTAG的复用功能,分别为JNTRST、JTDI、JTDO。 当我们试用SWD接口调试仿真时,这三个引脚可以用作普通IO。 具体做法就是禁用JTAG功能。只需使用以下语句即可。 #define GPIO_Remap_SWJ_JTAGDisable ((uint32_t)0x00300200) GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved