OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2214|回复: 1

求助 STM32F103ZET6驱动ST7032I COG1602屏点不亮

[复制链接]

1

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2019-7-18
在线时间
21 小时
发表于 2020-1-14 15:32:18 | 显示全部楼层 |阅读模式
8金钱
#include"st7032i.h"
#include "string.h"
#include "stm32f10x_gpio.h"
#include "delay.h"


void St7032i_Port(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        RCC_APB2PeriphClockCmd(I2C_SCL_PORT_RCC|I2C_SDA_PORT_RCC|I2C_rest_PORT_RCC  , ENABLE);       
       
       
  GPIO_InitStructure.GPIO_Pin =I2C_SCL_PIN;  //????????? IO      
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                          
  GPIO_Init(I2C_SCL_PORT, &GPIO_InitStructure);       
       
         GPIO_InitStructure.GPIO_Pin =I2C_SDA_PIN;
         GPIO_Init(I2C_SDA_PORT, &GPIO_InitStructure);       
       
         GPIO_InitStructure.GPIO_Pin =I2C_rest_PIN;
         GPIO_Init(I2C_rest_PORT, &GPIO_InitStructure);       
       
       
         I2C_SCL=1;
         I2C_SDA=1;
        I2C_rest=1;
}
void SDA_in(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;
       
        GPIO_InitStructure.GPIO_Pin =I2C_SDA_PIN;  //????????? IO      
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                          
  GPIO_Init(I2C_SDA_PORT, &GPIO_InitStructure);       
               
}


void iicstart(void)//起始型信号
{
  SDA_OUT();
       
        I2C_SDA=1;
        I2C_SCL=1;
//        nop;
//        nop;
//        nop;
        delay_us(5);
        I2C_SDA=0;
//        nop;
//        nop;
//        nop;
        delay_us(6);
        I2C_SCL=0;
}
void iicstop(void)//停止信号
{
  SDA_OUT();
       
        I2C_SCL=0;
        I2C_SDA=0;
       
        I2C_SCL=1;
        delay_us(6);
        I2C_SDA=1;
        delay_us(6);
}


/*void fillone2(uint i)
{
        uint a;
        iicstop();
        iicstart();
        wrdata(0x7c);  //write device address  and write mode
        wrdata(0x40);  //set write data mode
        for(a=0;a<16;a++)
        wrdata(i);
        iicstop();
}
void displayicon()
{       
        iicstart();
        wrdata(0x7c);  //   78
        wrdata(0x39);// FUNCTION SEt
        wrdata(0x40);
        fillone2(0xff);
        delay1(20);
//        while(getkey()==0);
        fillone2(0x15);
        delay1(20);
//        while(getkey()==0);
        fillone2(0x0a);
        delay1(20);
//        while(getkey()==0);
        fillone2(0x19);
        delay1(20);
//        while(getkey()==0);
        iicstop();
        iicstart();
        wrdata(0x7c);  //   78
        wrdata(0x00);
        wrdata(0x39);// FUNCTION SEt
        wrdata(0x78);//Contrast set
        wrdata(0x80);
        iicstop();
}*/   

void wrdata(uint8_t lcddata)
{
        uint8_t i;
        SDA_OUT();
        //csb=0;
   I2C_SCL;
        for(i=0;i<8;i++)
        {
                //nop;
                if((lcddata<<i)&0x80)
                        I2C_SDA=1;
                else
                        I2C_SDA=0;
                        //nop;
                 delay_us(2);
                        I2C_SCL=1;
                        //nop;nop;nop;
                delay_us(5);
                        I2C_SCL=0;
        }
        I2C_SDA=1;
        //nop;nop;nop;
        delay_us(5);
        I2C_SCL=1;
        //nop;
        delay_us(2);
        I2C_SCL=0;
        //csb=1;
}

void fillone(uint8_t i,uint8_t j)
{
        uint8_t a;
        //iicstop();
        iicstart();
        wrdata(0x7c);  //write device address  and write mode
        wrdata(0x40);  //set write data mode
        for(a=0;a<40;a++)
        {
                wrdata(i);
                i++;
        }
        for(a=0;a<40;a++)
        {
                wrdata(j);
                j++;
        }
        iicstop();
}






void intional_st7032i(void)
{
        //St7032i_Port();
        I2C_rest =0;
        delay_us(20);
        I2C_rest =1;
        delay_us(20);
       
        iicstart();
        wrdata(0x7c);     //   78
        wrdata(0x00);
        wrdata(0x39);     //FUNCTION SEt
        wrdata(0x14);     //Bias selection/internal OSC frequency adjust
        wrdata(0x5f);     //power/ICON control/contrast set  C5,C4:1,1
        wrdata(0x6b);     //Follower control  Rab2,Rab1,Rab0:0,1,1   1+Rb/Ra=1.8  V0=(1+Rb/Ra)*[VDD*(a+36)/100]
        wrdata(0x73);     //set vo reference voltage   C3,C2,C1,C0:0,0,1,1   a=51
        wrdata(0x0c);     //DISPLAY ON/OF CONTROL //wrdata(0x01);//clear display
        wrdata(0x80);
        iicstop();
       

}
/*************上面是.C部分
/*****************下面为.H部分
#ifndef __st7032i_H
#define __st7032i_H

#include "stm32f10x.h"
#include "sys.h"




#define I2C_SDA_PORT        GPIOA   //???????
#define I2C_SDA_PIN       (GPIO_Pin_13)  //?????PIN??
#define I2C_SDA_PORT_RCC   RCC_APB2Periph_GPIOA //??????

#define I2C_SCL_PORT        GPIOA   //???????
#define I2C_SCL_PIN       (GPIO_Pin_14)  //?????PIN??
#define I2C_SCL_PORT_RCC   RCC_APB2Periph_GPIOA //??????

#define I2C_rest_PORT        GPIOA   //???????
#define I2C_rest_PIN       (GPIO_Pin_15)  //?????PIN??
#define I2C_rest_PORT_RCC   RCC_APB2Periph_GPIOA //??????


#define  I2C_SDA       PAout(13)
#define  I2C_SCL       PAout(14)
#define  I2C_rest      PAout(15)
\

void iicstop(void);
void displayicon(void);
void iicstart(void);

void fillone(uint8_t i,uint8_t j);
void fillone2(uint16_t i);

void wrdata(uint8_t lcddata);

void intional_st7032i(void);

void St7032i_Port(void);

                 
#endif


/**********************/下面主函数部分
#include "stm32f10x.h"
#include"st7032i.h"
#include "delay.h"
//************************************************/
int main(void)
{       

        St7032i_Port();
         intional_st7032i();
  while(1)
        {
          
                        fillone(0x08,0x30);
                delay_ms(20);
                fillone(0x41,0x51);
                delay_ms(20);
                fillone(0x61,0x71);
                delay_ms(20);
                fillone(0xc0,0xf0);
                delay_ms(20);
        }
}

这部分函数是51移植过来的,51单片机用这个程序可以点亮,但是用STM32单片机不亮,我不知道哪里有问题,求大神指点。




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10568
金钱
10568
注册时间
2017-2-18
在线时间
1913 小时
发表于 2020-1-14 17:00:59 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-19 14:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表