春节闲来无事,翻出来两块数码管的板子,大尺寸的数码管。看了看手工描绘了实物图出来,比较简单一个CD4094输出8BIT分成两个4BIT驱动两个CD4511。
电路原理图如下:
上图
很简单然后写了几行代码测试显示数字00-99循环加
测试程序附上
- /***************
- 测试CD4094+CD4511驱动共阴数码管显示数字
- 一个4094带两个CD4511驱动两个数码管
- 然后输出级连口
- ********************/
- #include <reg51.h>
- #include <intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- #define nop(); _nop_();
- sbit D4094=P1^0; //串行数据输出端,H 使能
- sbit STR4094=P1^1; //锁存器移位使能端,H 使能
- sbit CLK4094=P1^2; //串行时钟输出端,H 使能输出状态使能端,H 使能
- void delayms(unsigned short ms)
- {
- unsigned short i;
- uchar j;
- for(i=0;i<ms;i++)
- {
- for(j=0;j<200;j++);
- for(j=0;j<102;j++);
- } //for(i=0;i<ms;i++)
- }
- void Out4094(uchar dat0)
- {
- uchar a,b;
- b=dat0;//读入待发送的数据
- STR4094=0;
- for(a=0;a<8;a++)
- {
- if(b&0x80)
- D4094=1;
- else D4094=0;
- CLK4094=0;
- nop();
- CLK4094=1;
- b<<=1;//向左移一位
- }
- STR4094=1;
- }
- void main()
- {
- uchar a=0,b,c,d;
- while(1)
- {
- if(a>=100) a=0;
- b=a/10;//取十位
- c=a%10;//取个位
- d=c<<4|b&0x0f;//然后高低交换
- Out4094(d);//发送移位输出至CD4094
- delayms(500);
- a++;
- }
- }
复制代码
全部资料51hei下载地址:
4094v2.rar
(688 Bytes, 下载次数: 31)
|