找回密码
 注册
关于网站域名变更的通知
查看: 109|回复: 2
打印 上一主题 下一主题

AIP650芯片单片机程序 实用电子小模块-4位数码管驱动模块-IIC接口

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-6-23 10:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
L90-01是基于AiP650专用数码管按键驱动芯片的显示模块(以下简称模块),该模块包含一个12脚的4位共阴数码管(0.36英寸)、AiP650专用驱动芯片和三颗6×6×6的轻触按键,只需2根信号线即可使单片机控制该模块。
模块特点:
Ø 四位共阴红字数码管,8级灰度可调;
Ø 三颗6×6轻触按键方便用户人机互动,手柄高度可定制;
Ø 接线端子位置和定位孔共用市面上使用较多的0.96”OLED,方便用户置换;
Ø 驱动采用IIC串行数据总线接口,减少I/O数量;
Ø 可采用3-5.5V供电,适用3.3V5V单片机,无需增加电压转换电路;
应用:
Ø 本模块可应用于制作计数器、频率计、秒表、电压表等等数码管显示的场合;
适用:
Ø 单片机学习、DIY等。
$ s1 q- {3 `( R( q. V
$ C8 k) {  B! S

; ~" g: x4 s7 C, T" C' z$ ^; k8 |& Y  b0 G# l5 u; s
附件包含原理图,51单片机的驱动例程,和芯片的Datasheet。  o& [! q+ c' |) ^1 F  [
- g5 Y" r: z* P
单片机源程序如下:1 |2 H6 S" K/ J& r8 p0 x% S
  • #include "Config.H"
  • //数码管0-9显示代码                    0         1          2           3        4    5    6           7        8    9
  • u8 DISPLAY_CODE[10]         = {        0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f };
  • //数码管位数                                 1         2    3           4
  • u8 DIG_BIT_CODE[4]          = {        0x68,0x6a,0x6c,0x6e };
  • //8段显示亮度等级                           1         2          3           4        5         6    7           8
  • u8 Light_Level_CODE[8]        = {        0x11,0x21,0x31,0x41,0x51,0x61,0x71,0x01 };
  • void I2CStart(void)//开始信号
  • {
  •         CLK_H;
  •         DIO_H;
  •         Delay_us(5);
  •         DIO_L;
  • }
  • void I2Cask(void) //ACK信号
  • {
  •         u8 timeout = 1;
  •         CLK_H;
  •         Delay_us(5);
  •         CLK_L;
  •         while((DIO)&&(timeout<=100))
  •         {
  •                 timeout++;
  •         }
  •         Delay_us(5);
  •         CLK_L;
  • }
  • void I2CStop(void) //停止信号
  • {
  •         CLK_H;
  •         DIO_L;
  •         Delay_us(5);
  •         DIO_H;
  • }
  • void I2CWrByte(u8 oneByte) //写一个字节高位在前,低位在后
  • {
  •         u8 i;
  •         CLK_L;
  •         Delay_us(1);
  •         for(i=0;i<8;i++)
  •         {
  •                 oneByte = oneByte<<1;
  •                 DIO = CY;
  •                 CLK_L;
  •                 Delay_us(5);
  •                 CLK_H;
  •                 Delay_us(5);
  •                 CLK_L;
  •         }
  • }
  • void AiP650_Set(u8 add,u8 dat) //数码管显示
  • {
  •         //写显存必须从高地址开始写
  •         I2CStart();
  •         I2CWrByte(add); //第一个显存地址
  •         I2Cask();
  •         I2CWrByte(dat);
  •         I2Cask();
  •         I2CStop();
  • }
  • void AiP650_DisPlay(u8 DIG_Bit, u8 Display_num)                //显示一位数字
  • {
  •         AiP650_Set(DIG_BIT_CODE[DIG_Bit-1],DISPLAY_CODE[Display_num]);
  • }
  • void AiP650_CLR()                                                                   //清屏
  • {
  •         u8 i;
  •         for(i=0;i<4;i++)
  •         {
  •                 AiP650_Set(DIG_BIT_CODE,0x00);
  •         }
  • }
  • void AiP650_DisPlayFourNum(u16 Display_num)                //显示一个四位数 (0-9999)
  • {
  •         u8 One,Two,Three,Four;
  •         One   = Display_num/1000;
  •         Two   = Display_num%1000/100;
  •         Three = Display_num%100/10;
  •         Four  = Display_num%10;
  •         if(One == 0)
  •         {
  •                 AiP650_Set(DIG_BIT_CODE[0],0x00);
  •                 if(Two == 0)
  •                 {
  •                         AiP650_Set(DIG_BIT_CODE[1],0x00);
  •                         if(Three == 0)
  •                         {
  •                                 AiP650_Set(DIG_BIT_CODE[2],0x00);
  •                         }
  •                         else
  •                         {
  •                                 AiP650_DisPlay(3,Three);
  •                         }
  •                         AiP650_DisPlay(4,Four);
  •                 }
  •                 else
  •                 {
  •                         AiP650_DisPlay(2,Two);
  •                         AiP650_DisPlay(3,Three);
  •                         AiP650_DisPlay(4,Four);
  •                 }
  •         }
  •         else
  •         {
  •                 AiP650_DisPlay(1,One);
  •                 AiP650_DisPlay(2,Two);
  •                 AiP650_DisPlay(3,Three);
  •                 AiP650_DisPlay(4,Four);
  •         }
  • }
  • void Light_Level_Set(u8 Level)                                           //设置亮度等级 1-8级
  • {
  •         AiP650_Set(0x48,Light_Level_CODE[Level-1]);
  • }
  • u8 Scan_Key(void)  // 按键扫描
  • {
  •         u8 i;
  •         u8 rekey;
  • ……………………. Z4 v. _7 D, W0 p

8 v6 V0 V0 Z6 P( c

该用户从未签到

2#
发表于 2022-6-23 11:14 | 只看该作者
谢谢分享资料,学习一下

该用户从未签到

3#
发表于 2022-6-23 13:38 | 只看该作者
谢谢分享资料,学习一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-30 11:40 , Processed in 0.093750 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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