手上有一臺報廢機頂盒,拆下顯示及控制電路板,研究其電路原理。顯示部分是三位共陰數碼管,由CT1642驅動。經查閱CT1642數據手冊,其內部集成18Bit移位寄存器、恒流驅動,采用CMOS工藝制作,可滿足5V和3.3V供電要求。廣泛應用于各種家用電器(如機頂盒、DVD播放機)等各種設備的數碼顯示驅動電路。
CT1642采用串行(CLK、DATA)通信,驅動方式與74HC164芯片相似,不同之處是74HC164為8位數據傳送,可聯級,CT1642是18位數據傳送,可同時傳送段碼和位碼。
CT1642功能圖如下:其中Q2-Q9為段碼數據,C1-C4為位碼數據。
51hei_1760789366960.png (175.31 KB, 下載次數: 0)
下載附件
2025-10-18 21:07 上傳
CT1642時序:CLK上升沿依次傳送DATA數據,在CLK第18個脈沖后,通過DATA的兩個上升沿將數據輸出。
51hei_1760789623048.png (257.1 KB, 下載次數: 0)
下載附件
2025-10-18 20:14 上傳
研究任務:顯示“315”。焊接上Vcc、CLK、DATA、GND四根線,開始編程。
IMG_20251018_190002.jpg (2.96 MB, 下載次數: 0)
下載附件
2025-10-18 20:19 上傳
參考程序:
#include <reg52.h>
sbit CLK=P1^1; //時鐘
sbit DIO=P1^0; //數據
unsigned char code SEG[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //0-9共陰代碼
unsigned char code COM[]={0xfe,0xfd,0xfb}; //位代碼,對應CT1642的C1-C3,本例只驅動3位數碼管,C4未用到
/**************************************************************************
CT1642寫數據函數 [數據結構:段碼8位+空碼2位+位碼8位(共18位)]
**************************************************************************/
void wr_1642(unsigned char seg_dat, unsigned char seg_com)
{
unsigned char i;
unsigned long dat;
dat=(unsigned long)seg_dat<<10 | COM[seg_com]; //整合數據,使之為18位
for(i=0;i<18;i++) //發送18位數據
{
CLK=0 ;
DIO=(dat>>i)&0x01; //右移方式,先發送低位數據
CLK=1; //上升沿移入1位,循環18次
}
CLK=1; //CLK置1
DIO=0; DIO=1; //模擬第1個上升沿
CLK=0; //CLK置0
DIO=0; DIO=1; //模擬第2個上升沿,輸出數據
}
/**************************************************************************
主程序
**************************************************************************/
void main()
{
while(1)
{
wr_1642(SEG[3],0); //c1位
wr_1642(SEG[1],1); //c2位
wr_1642(SEG[5],2); //c3位
}
}
|