快3怎么买才能赢钱_STM8S TM1650芯片控制程序

2019-11-08来源: 51hei关键字:STM8S  TM1650芯片  控制程序

以下为.h文件:


 

#ifndef __TM1650_I2C_H

#define __TM1650_I2C_H

#include "stm8s.h"

#include "stm8s_gpio.h"

#include "tim1.h"

#include "usart2.h"

#include

#include

 

 

/**********************************

TM1650芯片控制20路灯函数

PB7为SCL口

PB6为SDA口

**********************************/

 

#define SCL_TM1650              PC_ODR_ODR7

#define SDA_TM1650               PC_ODR_ODR6

#define SDAM_TM1650              PC_IDR_IDR6

#define SET_SCL_OUT_TM1650()    {PC_DDR_DDR7=1; PC_CR1_C17 = 1; PC_CR2_C27 = 0;}

#define SET_SDA_OUT_TM1650()    {PC_DDR_DDR6=1; PC_CR1_C16 = 1; PC_CR2_C26 = 0;}

#define SET_SDA_IN_TM1650()     {PC_DDR_DDR6=0; PC_CR1_C16 = 0; PC_CR2_C26 = 0;}

 

 

void IIC_Init_TM1650(void);

void TDelay_us(u8 z);

void I2C_Start_TM1650(void);

void I2C_Stop_TM1650(void);

void IIC_Ack_TM1650(void);

void IIC_NAck_TM1650(void);

uint8_t IIC_Wait_Ack_TM1650(void);

void IIC_WrByte_TM1650(uint8_t txd);

 

//u8 Scan_Key(void);

void TM1650_Set(u8 add,u8 dat);

void Init_Tm1650(void);

 

#endif

 


以下为.c文件:


#include "TM1650_I2C.h"

 

//--------------------------------------------------------------

// Prototype      : void IIC_Init_TM1650(void)

// Calls          : 

// Description    : 

//--------------------------------------------------------------

void IIC_Init_TM1650(void)

{

   SET_SCL_OUT_TM1650();

   SET_SDA_OUT_TM1650(); 

   SCL_TM1650  = 1;

   SDA_TM1650  = 1;

}

//--------------------------------------------------------------

// Prototype      : void Delay_us(void)

// Description    : 大约延时 z us

//--------------------------------------------------------------

void TDelay_us(u8 z)

{

   //u8 i;                   //fcpu 8MHz 时

   //for (i=50; i>0; i--);

while(z--)

  {

    nop();nop();nop();nop();

  }

}

//--------------------------------------------------------------

// Prototype      : void I2C_Start(void)

// Calls          : Delay_5us()

// Description    : Start Singnal

//--------------------------------------------------------------

void I2C_Start_TM1650(void)

{

    // SDA 1->0 while SCL High

  //SCL高上海快三app赚钱—主页-彩经_彩喜欢平期间,SDA出现一个下降沿表示起始信号

  SET_SDA_OUT_TM1650();

    SDA_TM1650 = 1;     //数据线先保持为高,起始信号要该口的下降沿 

TDelay_us(4);

    SCL_TM1650 = 1;        //时钟线保持为高            

    TDelay_us(40);    //有一个大概5us的延时具体以器件而定            

    SDA_TM1650 = 0;        //数据线拉低出现下降沿           

    TDelay_us(4);    //延时 一小会,保证可靠的下降沿            

    SCL_TM1650 = 0;        //拉低时钟线,保证接下来数据线允许改变            

}

 

 

//--------------------------------------------------------------

// Prototype      : void I2C_Stop(void)

// Calls          : Delay_5us()

// Description    : Stop Singnal

//-------------------------------------------------------------- 

void I2C_Stop_TM1650(void)

{

    // SDA 0->1 while SCL High

    //SCL高上海快三app赚钱—主页-彩经_彩喜欢平期间,SDA产生一个上升沿 表示停止

  SET_SDA_OUT_TM1650();

SCL_TM1650 = 0;

TDelay_us(2);

SDA_TM1650 = 0; //保证数据线为低上海快三app赚钱—主页-彩经_彩喜欢平

TDelay_us(40);

    SCL_TM1650 = 1; //先保证时钟线为高上海快三app赚钱—主页-彩经_彩喜欢平

    TDelay_us(10);    //延时 以得到一个可靠的上海快三app赚钱—主页-彩经_彩喜欢平信号            

    SDA_TM1650 = 1;        //数据线出现上升沿           

    TDelay_us(40);    //延时 保证一个可靠的高上海快三app赚钱—主页-彩经_彩喜欢平           

}

 

 

//应答函数

void IIC_Ack_TM1650(void)

{

    //数据线一直保持为低上海快三app赚钱—主页-彩经_彩喜欢平,时钟线出现上升沿即为应答

 

SET_SDA_OUT_TM1650();

TDelay_us(10);

    SDA_TM1650 = 0;

    TDelay_us(10);

    SCL_TM1650 = 0;

    TDelay_us(40);

SCL_TM1650 = 1;

TDelay_us(40);

    //应答完成后 将时钟线拉低 允许数据修改

    SCL_TM1650 = 0;

}

//非应答

void IIC_NAck_TM1650(void)

{

    //非应答即相反 与应答区别即为数据线保持高上海快三app赚钱—主页-彩经_彩喜欢平即可

SET_SDA_OUT_TM1650();

TDelay_us(10);

    SDA_TM1650 = 1;

    TDelay_us(10);

SCL_TM1650 = 0;

TDelay_us(40);

    SCL_TM1650 = 1;

    TDelay_us(40);

    //最后要将时钟线拉低 允许数据变化

    SCL_TM1650 = 0;

}

//等待应答

uint8_t IIC_Wait_Ack_TM1650(void)//0为有应答,1为无应答

{

    //应答等待计数

    uint8_t ackTime = 0;

    //先将数据线要设置成输入模式本程序未体现,有应答则会出现下降沿

SCL_TM1650 = 0;

SET_SDA_OUT_TM1650();

    TDelay_us(10);

SDA_TM1650 = 1;//

TDelay_us(30);

SET_SDA_IN_TM1650();//切换为输入模式

    //时钟线拉高

    SCL_TM1650 = 1;

    TDelay_us(30);

    //等待数据线拉低应答

    while(SDAM_TM1650){

        //如果在该时间内仍未拉低

        ackTime ++;

        if(ackTime > 250)

        {

            //认为非应答 停止信号

            I2C_Stop_TM1650();

            return 1;

        }

    }

    SCL_TM1650 = 0;

    return 0 ;

}

 

void IIC_WrByte_TM1650(uint8_t txd)

{

    //定义一个计数变量

    uint8_t i;

SET_SDA_OUT_TM1650();

    //将时钟线拉低允许数据改变

//    SCL = 0;

    //按位发送数据

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

    {

  TDelay_us(2);

        if((txd&0x80)>>7) //0x80  1000 0000

SDA_TM1650=1;

else

SDA_TM1650=0;

        txd<<=1;  

TDelay_us(20);   

SCL_TM1650=1;

TDelay_us(20);  

SCL_TM1650=0;

TDelay_us(20); 

    }

}

 

/***************************

u8 Scan_Key(void)  //按键扫描

{

u8 i;

u8 rekey;

I2C_Start_TM1650();

IIC_WrByte_TM1650(0x49);//读按键命令

IIC_Ack_TM1650();

//DIO_H;

SET_SDA_IN_TM1650();//切换为输入模式

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

{

  SCL_TM1650=1;

  rekey = rekey<<1;

  

  if(SDAM_TM1650)

  {

  rekey++;

  } 

  TDelay_us(5);

  SCL_TM1650=0;

}

IIC_Ack_TM1650();

I2C_Stop_TM1650();

return(rekey);

}

****************************/

 

void TM1650_Set(u8 add,u8 dat) //数码管显示

{

//写显存必须从高地址开始写

I2C_Start_TM1650();

IIC_WrByte_TM1650(add); //第一个显存地址

IIC_Ack_TM1650();

IIC_WrByte_TM1650(dat);

IIC_Ack_TM1650();

I2C_Stop_TM1650();

}

void Init_Tm1650(void)

{

IIC_Init_TM1650();

delay_ms(50); //需要延时一小段时间,否则开显示会无响应

TM1650_Set(0x48,0x31);//初始化为5级灰度,开显示

}


注意:TM1650芯片启动可能需要一点时间,故发送开显示前应延时一小段时间,否则会收不到。

关键字:STM8S  TM1650芯片  控制程序 编辑:什么鱼 引用地址:http://news.socialskive.com/mcu/ic479401.html 快3怎么买才能赢钱本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过上海快三app赚钱—主页-彩经_彩喜欢子邮件或上海快三app赚钱—主页-彩经_彩喜欢话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM8S103K3 I2C
下一篇:快3怎么买才能赢钱_STM8S MAX7219点阵模块驱动芯片程序

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

stm8s 低功耗模式
因为用干上海快三app赚钱—主页-彩经_彩喜欢池供上海快三app赚钱—主页-彩经_彩喜欢,又需要超长待机了,成本又限制不能使用stm8l,所以开启低功耗之旅1.元器件选型挑选低功耗的元器件,一定要关注工作上海快三app赚钱—主页-彩经_彩喜欢流led 一定要高上海快三app赚钱—主页-彩经_彩喜欢平导通,不然的话,默认状态拉高很费上海快三app赚钱—主页-彩经_彩喜欢元器件尽量选择共阴解法,更省上海快三app赚钱—主页-彩经_彩喜欢2.主时钟频率频率和功耗是成正比的,选择试用的最低晶振能不开的功能尽量不开下面是对应的功耗表ADC最费上海快三app赚钱—主页-彩经_彩喜欢3.合理使用低功耗模式主要有一下几种等待模式活跃停机模式停机模式下面是对比等待模式使用asm(“WFI”)进入会被各种中断激活活跃停机模式AWU是用来当MCU进入低功耗的活跃停机(Active Halt)模式时提供一个内部的唤醒时间基准。该时间基准的时钟是由内部的低速RC振荡器时钟(LSI)或者通过预分频的HSE
发表于 2019-11-20
stm8s 低功耗模式
简单介绍下关于STM8S的几种低功耗模式
快3怎么买才能赢钱STM8S105的低功耗模式总的来说有四种:分别是等待模式,停机模式,快速活跃停机模式和慢速活跃停机模式1、等待模式:可执行指令wif()进入等待模式,该模式下主CPU停止工作,但其外设不停,严格来说只能算是降低功耗而不能算低功耗,该模式可由AMU或外部中断唤醒2、停机模式:可执行指令half()进入停机模式,该模式下主cpu和外设全部停止,达到最低功耗,只能由外部中断进行唤醒。3、快速活跃停机模式:在执行指令half()之前,如果你使能了AMU功能,则进入快速活跃停机模式,该模式下由于主上海快三app赚钱—主页-彩经_彩喜欢压调节器打开,在受到AMU或外部中断触发时,可快速唤醒。4、慢速活跃停机模式:在快速活跃停机模式下,如果设置内部时钟寄存器CLK_ICKR
发表于 2019-11-20
简单介绍下关于STM8S的几种低功耗模式
Atomthreads关于STM8S低功耗的思考
快3怎么买才能赢钱;              idle_thread_stack_top,                 idle_thread_stack_size);     /* Return status */    return (status); }针对STM8我们最自然想到的是在其中加一个wfi,STM8进入wfi模式几乎不会影响任何外设的运行。以STM8S105K4为例,其进入该模式的典型上海快三app赚钱—主页-彩经_彩喜欢流是1.8mA。这个上海快三app赚钱—主页-彩经_彩喜欢流,用一节
发表于 2019-11-20
Atomthreads关于STM8S低功耗的思考
快3怎么买才能赢钱_STM8S 自动唤醒AWU配置
(AWU_TIMEBASE_12S);//12s后唤醒}主函数void main(void){ CLK_Config(); AWU_Config(); enableInterrupts(); halt(); //运行到此语句后会自动唤醒AWU,唤醒后不会复位, 而是进入了中断, 如果没有写复位语句, 那么就一直在中断了,不会唤醒系统 while(1);中断函数:INTERRUPT_HANDLER(AWU_IRQHandler, 1){  /*Clear AWU peripheral pending bit */ AWU_GetFlagStatus();//复位函数(用以跳出中断,很重要!!!)}
发表于 2019-11-20
快3怎么买才能赢钱_STM8S EEPROM 操作
快3怎么买才能赢钱_STM8S 内置EEPROM,对于很大需要带记忆的产品来说,是个很好的资源,以下是我个人摸索出来的,并且验证OK,大家如需要可放心使用。 #define EEPROMADDR0X000  ((u32)(FLASH_DATA_START_PHYSICAL_ADDRESS)) #define EEPROMADDR0X001  ((u32)(FLASH_DATA_START_PHYSICAL_ADDRESS+1)) #define EEPROMADDR0X002  ((u32)(FLASH_DATA_START_PHYSICAL_ADDRESS+2)) #define
发表于 2019-11-19
stm8s eeprom读写
stm8s有自带的eeprom,起始地址是0x4000,终止到哪看手册,因为我用的时候只写一个4字节数据,配置如下:入参:eeprom偏移地址,写入的数据   void eeprom_write(const unsigned char addr,unsigned long date){   asm("sim");   FLASH_CR1_FIX = 1;//编程时间固定为标准编程时间   FLASH_CR2_WPRG = 1;//使能字编程   FLASH_NCR2_NWPRG = 0;/使能字编程 
发表于 2019-11-19
小广播
何立民专栏 单片机及嵌入式宝典

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

上海快三app赚钱—主页-彩经_彩喜欢子工程世界版权所有 京ICP证060456号 京ICP备10001474号 上海快三app赚钱—主页-彩经_彩喜欢信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 socialskive.com, Inc. All rights reserved