今天測試一個中六九的面板顯示板,IC是ct1642
51hei圖片20200121165747.jpg (58.08 KB, 下載次數: 41)
下載附件
2020-1-21 17:07 上傳
IMG20200121165659.jpg (1.08 MB, 下載次數: 32)
下載附件
2020-1-21 17:07 上傳
代碼從網上stm8移植過來.
好像不能一次鎖存多位并顯示多位,就是鎖存新的,忘記舊的.
請指正.
- #include <STC89C5xRC.H>
- #include "intrins.h"
- sbit CT_CLK=P1^1;
- sbit CT_DATA=P1^0;
- code char Lcd_tab[17]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6,0xEE,0x3E,0x9C,0x7A,0x9E,0x8E};//共陰極
- static void ct1642_send_data(unsigned char ct_dis_data, unsigned char ct_com)
- {
- unsigned char ct_addr; //存儲數碼管位置
- unsigned char i;
- switch(ct_com)
- {
- case 0: {ct_addr=0xef; ;break;}
- //顯示C1位數據 數碼管為共陰極,將要點亮的COM置0以顯示該COM
-
- case 1: {ct_addr=0xdf; break;} //顯示C2位數據
-
- case 2: {ct_addr=0xbf; break;} //顯示C3位數據
- case 3: {ct_addr=0x7f; break;} //顯示C4位數據
- case 4: {ct_addr=0xff; break;} //掃描鍵盤,關閉COM1
- default:{ct_addr=0xff; ct_dis_data=0x00;break;}
- }
-
- for(i=0;i<8;i++) //發送8位地址
- {
- CT_CLK=0 ;
- if( (ct_addr<<i)&0x80)
- {
- CT_DATA=1;
- }
- else
- {
- CT_DATA=0;
- }
- CT_CLK=1;//上升沿輸出一位
- }
-
- CT_DATA=0; //發送兩個空位,補足要發送的18位
- CT_CLK=0 ;
- _nop_();//此處根據單片機的指令周期而定
- CT_CLK=1;
-
- CT_DATA=0;
- CT_CLK=0 ;
- _nop_();
- CT_CLK=1;
- for(i=0;i<8;i++) //發送8位數據
- {
- CT_CLK=0 ;
- if( (ct_dis_data<<i)&0x80)
- {
- CT_DATA=1;
- }
- else
- {
- CT_DATA=0;
- }
- CT_CLK=1;
- }
- CT_CLK=1; //輸出數據
-
- CT_DATA=0;
- _nop_();
- CT_DATA=1;
-
-
- CT_CLK=0 ;
- CT_DATA=0;
- _nop_();
- CT_DATA=1;
- CT_CLK=0;
- return;
- }
- void delay(unsigned char tme)
- { unsigned char i;
- i=tme;
- while(tme--)while(i--);
- }
- void main(void)
- {
- CT_DATA=1;
- CT_CLK=0;
-
- do
- {ct1642_send_data(Lcd_tab[6],0);
- //delay(100);
- ct1642_send_data(Lcd_tab[5],1);
- //delay(100);
- ct1642_send_data(Lcd_tab[4],2);
- //delay(100);
- // while(1);
- }while(1);
-
- }
復制代碼
|