AIP1668芯片数码管和LED驱动

原理图
在这里插入图片描述
一个芯片实现四位数码管显示以及LED指示灯驱动
代码如下:源文件aip1668.c

 /******************************************************************************
* File Name:aip1668.c
* Author:pandy
* Date:2021-4-17
*
* Copyright (C) 2021,pandy All rights reserved.
*
* This software is owned and published by: pandy .

******************************************************************************/
#include "aip1668.h"
/*---------------------------------------段码数据表----------------------------------------------------------*/
//数码管:正向位置;共阴极;正向连接
//const volatile uint8_t SMG_Code[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};//0-9,A-F

const volatile uint8_t SMG_Code[16]={
   0xF4,0x44,0x72,0x56,0xC6,0x96,0xB6,0x44,0xF6,0xD6,0xE6,0xB6,0xB0,0x76,0xB2,0xA2};//0-9,A-F
const volatile uint8_t SMG_A[16]={
   0x01,0x00,0x01,0x01,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x01,0x00,0x01,0x01};//数码管A段 0-9,A-F

const volatile uint8_t LED_K1[2]={
   0x00, 0x01};//数码管A段作为LED1,0为关,1位开,
const volatile uint8_t LED_K2[2]={
   0x00, 0x02};//数码管A段作为LED2 ,0为关,2位开

void  Delay_us(unsigned int us)//微秒偏差2us,延时低于20us时偏差更大
{
   
    for(;us>0;us--)	
    {
   
        NOP();NOP();NOP();NOP();
        NOP();NOP();NOP();NOP();
        NOP();NOP();NOP();NOP();

        //时钟由原来的20MH变成现在40MH
        NOP();NOP();NOP();NOP();
        NOP();NOP();NOP();NOP();
        NOP();NOP();NOP();NOP();

        NOP();NOP();NOP();NOP();
        NOP();NOP();NOP();NOP();
        NOP();NOP();NOP();NOP();
    }
}

void Delay_ms(unsigned int t_ms)
{
   
    uint16_t i,j;
    for(i=0;i<t_ms;i++)
    {
   
        for(j=0;j<3290;j++);  //时钟由原来的20MH变成现在40MH
    }
}

/*-----------------------------------------------------------------
  功能:开始传输数据
  返回:无
------------------------------------------------------------------*/
void AiP1668_Start(void)
{
   
	Aip1688_CLK_HIGH;
	Aip1688_DIO_HIGH;
	Aip1688_STB_LOW;
  Delay_us(2);
}

/*-----------------------------------------------------------------
 功能:结束传输数据
 返回:无
------------------------------------------------------------------*/
void AiP1668_End(void)
{
   
	Aip1688_CLK_HIGH;
	Aip1688_DIO_HIGH;
	Aip1688_STB_HIGH;	
	Delay_us(2);
}

/*----------------------------------------------------------------------------------
  功能: 向1688写入一个数据。(写一个bit时需要在时钟的上升沿操作)
  返回:无
------------------------------------------------------------------------------------*/
void AiP1668_WriteByte(unsigned char byte)
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值