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.3V和5V单片机,无需增加电压转换电路; 应用: Ø 本模块可应用于制作计数器、频率计、秒表、电压表等等数码管显示的场合; 适用: Ø 单片机学习、DIY等。 ' B$ q8 S/ i. {9 k0 |" O
![]() : k0 ?1 J+ z) b4 n) C
3 p. |1 @6 H3 l+ c. I+ X9 y h
* v! m! D. L2 f" K附件包含原理图,51单片机的驱动例程,和芯片的Datasheet。
- c& K: ~( x7 p: I& l1 E3 o
4 A2 a$ J' ?! m" L单片机源程序如下:
4 g8 k4 l3 @7 }, {# J- ]' [- #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;
- ……………………- H% v5 a6 s! I7 ~ q
0 _2 M1 I. c. V) O2 u5 v- h |