為了大家少走彎路,提供源代碼下載,親自測試過,沒任何問題
單片機源程序如下:
- #include "HT1621B.H"
- #include <STC15F2K60S2.H>
- #include "string.h"
- uchar table[]={
- 0x0f,0x0f,0x0f,0x0f,
- 0x0f,0x0f,0x0f,0x0f,
- 0x0f,0x0f,0x0f,0x0f,
- 0x0f,0x0f,0x0f,0x0f,0x0f,};
- uchar table1[]={
- 0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xf0,};
- uchar table2[]={
- 0xe6,0xf8,0xb0,0xb0,0xbe,};
- uchar table3[]={
- 0x01,0x03,0x07,0x0f,};
- uchar table4[]={
- 0xde,0x22,0xfe,0x22,
- 0x0e,0x22,0xfa,0x22,
- 0xda,0x22,0xc6,0x22,
- 0x5e,0x22,0x7c,0x22,
- 0x06,0x22,0xbe,0x22 ,};
- uchar table5[]={
- 0xbe,0x06,0x7c,0x5e,
- 0xc6,0xda,0xfa,0x0e,
- 0xfe,0xde,};
- //寫數據函數
- void wr_data(uchar da,uchar cnt)
- {
- uchar i;
- for(i=0;i<cnt;i++)
- {
- wr=0;
- delayus(10);
- dat=(bit)(da&0x80);/*if(da>=0x80)
- dat=1;
- else
- dat=0;*/
- delayus(10);
- wr=1;
- delayus(10);
- da<<=1;
- }
- }
- //清屏
- void wr_clearlcd()
- {
- uchar i;
- cs=0;
- delayus(10);
- wr_data(0xa0,3);
- wr_data(0x00<<2,6);
- for(i=0;i<16;i++)
- {
- wr_data(0x00,8);
- }
- cs=1;
- delayus(10);
- }
- //寫命令函數
- void wr_com(uchar com)
- {
- cs=0;
- delayus(10);
- wr_data(0x80,4);
- wr_data(com,8);
- cs=1;
- delayus(10);
- }
- //寫連續地址
- void wr_all_lcd(uchar add,uchar *p,uchar cnt)
- {
- uchar i;
- cs=0;
- delayus(10);
- wr_data(0xa0,3);
- wr_data(add<<2,6);
- for(i=0;i<cnt;i++)
- {
- wr_data(*p,8);
- p++;
- }
- cs=1;
- delayus(10);
- }
- //初始化
- void lcd_init()
- {
- cs=1;
- wr=1;
- dat=1;
- delayms(20);
- wr_com(BIAS);
- wr_com(RC256);
- wr_com(SYSDIS);
- wr_com(WDTDIS);
- wr_com(SYSEN);
- wr_com(LCDON);
- wr_clearlcd();
- }
- char HT1621_CHAR_A(char cha,char d)
- {
- char r_cha=0;
- switch(cha)
- {
- case 0: r_cha=1<<7|1<<6|1<<5|1<<4|1<<3|1<<1;
- break;
- case 1: r_cha=1<<3|1<<1;
- break;
- case 2: r_cha=1<<7|1<<5|1<<4|1<<3|1<<2;
- break;
- case 3: r_cha=1<<7|1<<4|1<<3|1<<2|1<<1;
- break;
- case 4: r_cha=1<<6|1<<3|1<<2|1<<1;
- break;
- case 5: r_cha=1<<7|1<<6|1<<4|1<<2|1<<1;
- break;
- case 6: r_cha=1<<7|1<<6|1<<5|1<<4|1<<2|1<<1;
- break;
- case 7: r_cha=1<<7|1<<3|1<<1;
- break;
- case 8: r_cha=1<<7|1<<6|1<<5|1<<4|1<<3|1<<2|1<<1;
- break;
- case 9: r_cha=1<<7|1<<6|1<<4|1<<3|1<<2|1<<1;
- break;
- case '_': r_cha=0;
- break;
- default:break;
- }
- if(d=='.')r_cha|=1;
- return r_cha;
- }
- char HT1621_CHAR_B(char cha,char d)
- {
- char r_cha=0;
- switch(cha)
- {
- case 0: r_cha=1<<7|1<<5|1<<3|1<<2|1<<1|1;
- break;
- case 1: r_cha=1<<7|1<<5;
- break;
- case 2: r_cha=1<<7|1<<6|1<<3|1<<1|1;
- break;
- case 3: r_cha=1<<7|1<<6|1<<5|1<<3|1;
- break;
- case 4: r_cha=1<<7|1<<6|1<<5|1<<2;
- break;
- case 5: r_cha=1<<6|1<<5|1<<3|1<<2|1;
- break;
- case 6: r_cha=1<<6|1<<5|1<<3|1<<2|1<<1|1;
- break;
- case 7: r_cha=1<<7|1<<5|1<<3;
- break;
- case 8: r_cha=1<<7|1<<6|1<<5|1<<4|1<<3|1<<2|1<<1|1;
- break;
- case 9: r_cha=1<<7|1<<6|1<<5|1<<4|1<<3|1<<2|1;
- break;
- case '_': r_cha=0;
- break;
- default:break;
- }
- if(d=='.')r_cha|=1<<4;
- return r_cha;
- }
- char HT1621_CHAR_C(char cha,char d)
- {
- char r_cha=0;
- unsigned char numtab[16]={0xF5,0x05,0xD3,0x97,0x27,0xB6,0xF6,0x15,0xF7,0xB7,0x77,0xE6,0xF0,0xC7,0xF2,0x72};
- r_cha=numtab[cha];
- if(d=='.')r_cha|=1<<3;
- return r_cha;
- }
- char HT1621_CHAR_D(char cha,char d)
- {
- char r_cha=0;
- unsigned char code numtab[16]={0x5F,0x50,0x3D,0x79,0x72,0x6B,0x6F,0x51,0x7F,0x7B,0x77,0x6E,0x0F,0x7C,0x2F,0x27};
- r_cha=numtab[cha];
- if(d=='.')r_cha|=1<<7;
- return r_cha;
- }
- extern int test,test_cnt;
- void HT1621_DIP(char *d,char *x)
- {
- char HT1621_DIP_TABLE[16];
- HT1621_DIP_TABLE[0]=HT1621_CHAR_A(d[0],x[0]) ;
- HT1621_DIP_TABLE[1]=HT1621_CHAR_B(d[1],x[1]);
- HT1621_DIP_TABLE[2]=HT1621_CHAR_B(d[2],x[2]);
- HT1621_DIP_TABLE[3]=HT1621_CHAR_B(d[3],x[3]);
- HT1621_DIP_TABLE[4]=HT1621_CHAR_C(d[4],x[4]);
- HT1621_DIP_TABLE[5]=HT1621_CHAR_C(d[5],x[5]);
- HT1621_DIP_TABLE[6]=HT1621_CHAR_C(d[6],x[6]);
- HT1621_DIP_TABLE[9]=HT1621_CHAR_D(d[7],x[7]);
- HT1621_DIP_TABLE[8]=HT1621_CHAR_D(d[8],x[8]);
- HT1621_DIP_TABLE[7]=HT1621_CHAR_D(d[9],x[9]);
- HT1621_DIP_TABLE[10]=HT1621_CHAR_C(d[10],x[10]);
- HT1621_DIP_TABLE[11]=HT1621_CHAR_C(d[11],x[11]);
- HT1621_DIP_TABLE[12]=HT1621_CHAR_C(d[12],x[12]);
- HT1621_DIP_TABLE[15]=HT1621_CHAR_D(d[13],x[13]);
- HT1621_DIP_TABLE[14]=HT1621_CHAR_D(d[14],x[14]);
- HT1621_DIP_TABLE[13]=HT1621_CHAR_D(d[15],x[15]);
-
- wr_all_lcd(0,HT1621_DIP_TABLE,16);
- }
- char xdata HT1621_CHAR[16];
- char xdata HT1621_D[16];
- void HT1621_APP(void)
- {
- HT1621_DIP(HT1621_CHAR,HT1621_D);
- memset(HT1621_D,0,16);
- memset(HT1621_CHAR,0,16);
- }
- void HT1621_DOWN(char a,char b,char c,char d,char d1,char d2,char d3,char d4)
- {
- HT1621_CHAR[0]=d;
- HT1621_CHAR[1]=c;
- HT1621_CHAR[2]=b;
- HT1621_CHAR[3]=a;
- HT1621_D[0]=d4;
- HT1621_D[1]=d3;
- HT1621_D[2]=d2;
- HT1621_D[3]=d1;
- }
- void HT1621_MI(char a,char b,char c,char d,char e,char f,char d1,char d2,char d3,char d4,char d5,char d6)
- {
- HT1621_CHAR[9]=f;
- HT1621_CHAR[8]=e;
- HT1621_CHAR[7]=d;
- HT1621_CHAR[6]=c;
- HT1621_CHAR[5]=b;
- HT1621_CHAR[4]=a;
- HT1621_D[9]=d6;
- HT1621_D[8]=d5;
- HT1621_D[7]=d4;
- HT1621_D[6]=d3;
- HT1621_D[5]=d2;
- HT1621_D[4]=d1;
- }
- void HT1621_UP(char a,char b,char c,char d,char e,char f,char d1,char d2,char d3,char d4,char d5,char d6)
- {
- HT1621_CHAR[15]=f;
- HT1621_CHAR[14]=e;
- HT1621_CHAR[13]=d;
- HT1621_CHAR[12]=c;
- HT1621_CHAR[11]=b;
- HT1621_CHAR[10]=a;
- HT1621_D[15]=d6;
- HT1621_D[14]=d5;
- HT1621_D[13]=d4;
- HT1621_D[12]=d3;
- HT1621_D[11]=d2;
- HT1621_D[10]=d1;
- }
復制代碼
51hei.png (2.8 KB, 下載次數: 49)
下載附件
2022-3-23 00:26 上傳
上圖2個文件下載 c代碼(請自行移植到各單片機平臺):
HT1621.zip
(2.11 KB, 下載次數: 67)
2022-3-22 08:42 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|