(stc15f2k60s2)玩了兩個月才出來的LCD12232(附原理圖 程序)
電路原理圖如下:
2.gif (87.64 KB, 下載次數: 25)
下載附件
2018-11-8 17:16 上傳
TIM圖片20181108171343.png (89.15 KB, 下載次數: 15)
下載附件
2018-11-8 17:14 上傳
單片機源程序如下:
- #include"LCD12232.H"
- unsigned char code wo[]=
- {0x20,0x24,0x24,0x24,0xFE,0x23,0x22,0x20,0xFF,0x20,0x22,0xAC,0x20,0x30,0x20,0x00,
- 0x00,0x08,0x48,0x84,0x7F,0x02,0x21,0x10,0x09,0x06,0x1A,0x61,0x80,0xE0,0x00,0x00};//我 字模
- unsigned char code yeah[4][16]=
- {
- {/* ASCII 8x16點陣字庫*/
- /* Y[0x0059] 8x16 */
- 0x00,0x3C,0x7C,0xC0,0xC0,0x7C,0x3C,0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,},
- {/* ASCII 8x16點陣字庫*/
- /* e[0x0065] 8x16 */
- 0xC0,0xE0,0xA0,0xA0,0xA0,0xE0,0xC0,0x00,0x07,0x0F,0x08,0x08,0x08,0x0C,0x04,0x00,},
- {/* ASCII 8x16點陣字庫*/
- /* a[0x0061] 8x16 */
- 0x00,0xA0,0xA0,0xA0,0xE0,0xC0,0x00,0x00,0x07,0x0F,0x08,0x08,0x07,0x0F,0x08,0x00,},
- {/* ASCII 8x16點陣字庫*/
- /* h[0x0068] 8x16 */
- 0x04,0xFC,0xFC,0x40,0x20,0xE0,0xC0,0x00,0x08,0x0F,0x0F,0x00,0x00,0x0F,0x0F,0x00,},
- } ;
- unsigned char code gantan[7][32]=
- {
- {/* GB2312 16x16點陣字庫*/
- /* 終[0xD6D5] 16x16 */
- 0x20,0x30,0xAC,0x63,0x20,0x10,0x20,0x18,0x17,0xA4,0x44,0xB4,0x0C,0x04,0x00,0x00,
- 0x22,0x63,0x22,0x12,0x12,0x12,0x04,0x02,0x21,0x24,0x44,0x48,0x93,0x06,0x02,0x00,
- /* GB2312 16x16點陣字庫*/},
- /* 于[0xD3DA] 16x16 */
- {0x40,0x40,0x42,0x42,0x42,0x42,0x42,0xFE,0x42,0x42,0x42,0x43,0x42,0x60,0x40,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- /* GB2312 16x16點陣字庫*/},
- {/* GB2312 16x16點陣字庫*/
- /* 把[0xB0D1] 16x16 */
- 0x10,0x10,0x10,0xFF,0x90,0x50,0x00,0xFC,0x84,0x84,0xFC,0x84,0x84,0xFE,0x04,0x00,
- 0x02,0x42,0x81,0x7F,0x00,0x00,0x00,0x3F,0x40,0x40,0x40,0x40,0x40,0x41,0x70,0x00,},
- {/* GB2312 16x16點陣字庫*/
- /* 你[0xC4E3] 16x16 */
- 0x40,0x20,0xF8,0x07,0x40,0x20,0x18,0x0F,0x08,0xC8,0x08,0x08,0x28,0x18,0x00,0x00,
- 0x00,0x00,0xFF,0x00,0x00,0x08,0x04,0x43,0x80,0x7F,0x00,0x01,0x06,0x0C,0x00,0x00,},
- {/* 點[0xB5E3] 16x16 */
- 0x00,0x00,0xC0,0x40,0x40,0x40,0x7F,0x48,0x48,0x48,0x48,0xE8,0x4C,0x08,0x00,0x00,
- 0x80,0x40,0x37,0x04,0x14,0x64,0x04,0x14,0x24,0x64,0x04,0x17,0x20,0xC0,0x00,0x00,},
- {/* GB2312 16x16點陣字庫*/
- /* 亮[0xC1C1] 16x16 */
- 0x00,0x02,0x02,0x7A,0x4A,0x4A,0x4A,0x4B,0x4A,0x4A,0x4A,0x7E,0x0B,0x02,0x00,0x00,
- 0x04,0x83,0x81,0x41,0x3D,0x05,0x05,0x05,0x05,0x05,0x7F,0x85,0x81,0x85,0xE3,0x00,
- /* GB2312 16x16點陣字庫*/},
- {/* GB2312 16x16點陣字庫*/
- /* 了[0xC1CB] 16x16 */
- 0x00,0x02,0x02,0x02,0x02,0x02,0x02,0xE2,0x22,0x12,0x0A,0x06,0x02,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},
- } ;
- unsigned char code by[2][16]=
- {
- {/* ASCII 8x16點陣字庫*/
- /* B[0x0042] 8x16 */
- 0x04,0xFC,0xFC,0x44,0x44,0xFC,0xB8,0x00,0x08,0x0F,0x0F,0x08,0x08,0x0F,0x07,0x00,},
- {/* y[0x0079] 8x16 */
- 0xE0,0xE0,0x00,0x00,0x00,0xE0,0xE0,0x00,0x47,0x4F,0x48,0x48,0x68,0x3F,0x1F,0x00,}
- };
- sbit a0=P3^4;
- sbit e1=P5^4;
- sbit e2=P5^5;
- //*****************************************************************
- //轉換P4口與data的不一致問題
- //*****************************************************************
- unsigned char zhuan_huan(unsigned char dat)
- {
- unsigned char a=0x00;
- a=a|((dat&0x10)>>4);//P40送出dat[4] 也就是a[0]=dat[4]
- a=a|((dat&0x04)>>1);//a[1]=dat[2]
- a=a|((dat&0x20)>>3);//a[2]=dat[5]
- a=a|((dat&0x80)>>4);//a[3]=dat[7]
- a=a|((dat&0x40)>>2);//a[4]=dat[6]
- a=a|((dat&0x01)<<5);//a[5]=dat[0]
- a=a|((dat&0x02)<<5);//a[6]=dat[1]
- a=a|((dat&0x08)<<4);//a[7]=dat[3]
- return a;
- }
- //*****************************************************************
- //延時函數1ms stc15單片機
- //*****************************************************************
- void delay(unsigned int t)
- {
- unsigned char i, j,k;
- for(k=0;k<t;k++)
- {
- _nop_();
- _nop_();
- _nop_();
- i = 11;
- j = 190;
- do
- {
- while (--j);
- } while (--i);
- }
- }
- //*****************************************************************
- //寫命令
- //*****************************************************************
- void write_command(unsigned char com,unsigned char flag)
- {
- if (flag==0) //對左屏操作
- {
- a0=0;
- data_port=zhuan_huan(com);
- e1=1;
- e2=0;
- delay(2);
- e1=0;
- }
- else if(flag==1) //右屏操作
- {
- a0=0;
- data_port=zhuan_huan(com);
- e2=1;
- e1=0;
- delay(2);
- e2=0;
- }
- else if(flag==2) //both
- {
- a0=0;
- data_port=zhuan_huan(com);
- e2=1;
- e1=1;
- delay(2);
- e1=0;
- e2=0;
- }
- }
- //*****************************************************************
- //寫數據
- //*****************************************************************
- void write_data(unsigned char dat,unsigned char flag)
- {
- if (flag==0) //對左屏操作
- {
- a0=1;
- data_port=zhuan_huan(dat);
- e1=1;
- e2=0;
- delay(2);
- e1=0;
- }
- else if(flag==1)
- {
- a0=1;
- data_port=zhuan_huan(dat);
- e2=1 ;
- e1=0;
- delay(2);
- e2=0;
- }
- else if(flag==2)
- {
- a0=1;
- data_port=zhuan_huan(dat);
- e2=1;
- e1=1 ;
- delay(2);
- e1=0;
- e2=0;
- }
- }
- //*****************************************************************
- //在某行某列寫字符
- //*****************************************************************
- void write_zifu(unsigned char flag,unsigned char x,unsigned char y, unsigned char code *zf)
- {
- unsigned char i;
- unsigned char j;
- if(x==2)
- x=0;
- for(i=0;i<2;i++)
- {
- write_command(page_add+2*x+i,flag);
- write_command(col_add+8*y,flag);
- for(j=0;j<8;j++)
- {
- // write_command(col_add+16*y+j,flag);
- write_data(zf[8*i+j],flag);
- }
- }
- }
- //*****************************************************************
- //寫字符 行范圍1-2,列范圍0-7
- //*****************************************************************
- void write_hanzi(unsigned char flag,unsigned char x,unsigned char y, unsigned char code *hz)
- //flag顯示在哪個屏幕上 x為行0 1;y為列:0 1 2
- {
- unsigned char i;
- unsigned char j;
- if(x==2)
- x=0;
- for(i=0;i<2;i++)
- {
- write_command(page_add+2*x+i,flag);
- write_command(col_add+16*y,flag);
- for(j=0;j<16;j++)
- {
- // write_command(col_add+16*y+j,flag);
- write_data(hz[16*i+j],flag);
- }
- }
- }
-
- //*****************************************************************
- //清屏函數
- //*****************************************************************
- void lcd_clc(void) //清屏
- {
- unsigned char i,j;
- for(j=0;j<4;j++) //四頁
- {
- write_command(page_add+j,2);
- for(i=0;i<80;i++)
- {
- write_command(col_add+i,2);
- write_data(0x00,2);
- }
- }
- }
- //*****************************************************************
- //初始化函數
- //*****************************************************************
- void lcd_initial(void)
- {
- P5M0=0Xff;
- P5M1=0X00;
- P3M0=0Xff;
- P3M1=0X00;
- P4M0=0Xff;
- P4M1=0X00; //全部為推挽輸出
- write_command(0xa4,2);//正常驅動
- write_command(0xa9,2);//1/32duty 每個com的占空比
- write_command(0xa0,2);//顯示方向為a1正向a0反向
- write_command(start_line,2);//設置顯示行
- write_command(page_add,2);
- write_command(col_add,2);
- write_command(0xaf,2); //開顯示
- write_command(0xee,2);
- lcd_clc();
- }
復制代碼
word格式的原理圖與Keil代碼下載:
LCD12232_stc15.rar
(78.69 KB, 下載次數: 71)
2018-11-8 17:12 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|