|
TM系列品種較多,只要超過8段3位的芯片都可以用來驅(qū)動8段3位,多余位閑置即可。曾經(jīng)用TM1640驅(qū)動8段8位共陰數(shù)碼管,相關(guān)函數(shù)如下:
- sbit SCK_Pin = P3^3; //TM1640時鐘端口
- sbit DOUT_Pin= P3^6; //TM1640數(shù)據(jù)端口
- uchar data dis_buf[8]; //顯示緩存
- /************TM1640開始函數(shù)*************/
- void TM1640_Start()
- {
- TM1640_SCK_HIGH;
- TM1640_DOUT_HIGH;
- TM1640_DOUT_LOW;
- TM1640_SCK_LOW;
- }
- /************TM1640停止函數(shù)*************/
- void TM1640_Stop()
- {
- TM1640_DOUT_LOW;
- TM1640_SCK_HIGH;
- TM1640_DOUT_HIGH;
- }
- /************TM1640寫字節(jié)*************/
- void TM1640_Write_Byte(uchar date)
- {
- uchar i;
- TM1640_SCK_LOW;
- TM1640_DOUT_LOW;
- for(i=0;i<8;i++)
- {
- TM1640_SCK_LOW;
- if(date&0x01)
- TM1640_DOUT_HIGH;
- else
- TM1640_DOUT_LOW;
- TM1640_SCK_HIGH;
- date>>=1;
- }
- TM1640_SCK_LOW;
- TM1640_DOUT_LOW;
- }
- /****************TM1640發(fā)送命令字*******************/
- void TM1640_Write_Com(uchar date)
- {
- TM1640_Start(); //TM1640開始
- TM1640_Write_Byte(date); //TM1640寫字節(jié)
- TM1640_Stop(); //TM1640停止
- }
- /************TM1640清屏函數(shù)*************/
- void TM1640_Cls()
- {
- uchar i;
- TM1640_Write_Com(0x40); //地址自動加1模式
- TM1640_Start(); //TM1640開始
- TM1640_Write_Byte(0xc0); //從第一個地址開始連續(xù)寫字節(jié)命令
- for(i=0;i<16;i++)
- TM1640_Write_Byte(0x00); //清空寄存器
- TM1640_Stop(); //TM1640停止
- }
- /************TM1640初始化函數(shù)*************/
- void TM1640_Init()
- {
- TM1640_Cls(); //TM1640清屏
- TM1640_Write_Com(0x8c); //亮度控制范圍0x88~0x8F
- }
- /************TM1640指定地址連續(xù)寫入數(shù)據(jù)*************/
- void TM1640_Write_DATA()
- {
- uchar i;
- TM1640_Write_Com(0x40); //44固定地址命令 40連續(xù)地址命令
- TM1640_Start(); //TM1640開始
- TM1640_Write_Byte(0xc0); //從第一個地址開始連續(xù)寫字節(jié)
- for(i=0;i<8;i++)
- TM1640_Write_Byte(dis_buf[i]);//寫最多16字節(jié)數(shù)據(jù)
- TM1640_Stop(); //TM1640停止
- }
復(fù)制代碼 |
|