久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

Proteus 240 128液晶屏驅動

作者:佚名   來源:本站原創   點擊數:  更新時間:2013年01月18日   【字體:

  搞了一個晚上終于搞出來了。AT89C52單片機,LM4229液晶屏分辨率240x128,沒行可顯示16x16漢字15個,共8行。大家可以試著改改程序,做個圖片顯示來,愿意可以分享給大家。有意見盡管提。頭文件和Proteus的接線就不不放了,有需要的到論壇上去下載文件。里面有Proteus 文件和所有.c .h文件。


頭文件和Proteus的接線就不掛了,有需要的到論壇上去下載文件。里面有Proteus文件和所有.c .h文件


主函數
#include<reg52.h>
#include<lm4229.h>
//============================================
//             主函數
//============================================
void main()
{
unsigned char i;
lcd_init();
   for(i=0;i<8;i++)
{
LCD_Cursor(i,2);
Show_String("★歡迎訪問單片機技術論壇★"); 
i++; 
LCD_Cursor(i,0);
Show_String("bbs.c51mcu.cn   www.c51mcu.com"); 
}
while(1)
{
 
}

驅動程序
很簡單,用的時候像主函數里一樣,先設置行列,然后輸入字符串就行。字庫里沒有的不顯示。
#include<reg52.h>
#include"io.h"
#include"zimo.h"
unsigned char LCD_lin,LCD_column;
//===========================================
//              函數聲明
//-------------------------------------------
void delay_lcd(unsigned char);
void write_data(unsigned char);
void write_com(unsigned char);
//--------------------------------------------
//              延時函數
//--------------------------------------------
void delay_lcd(unsigned char t)
{
for(;t!=0; t--);
}
//--------------------------------------------
//              寫數據函數
//--------------------------------------------
void write_data(unsigned char dat)
{
CD=0;          //數據
CE=0;          //LCD使能
WRIT=0;        //寫
DATA_PORT=dat; //把數據送到P口
delay_lcd(1);      //當晶振較高時加延時
WRIT=1;        //關寫
CE=1;          //關使能
}
 
//--------------------------------------------
//              寫命令函數
//--------------------------------------------
void write_com(unsigned char com)
{
CD=1;    //命令
CE=0;
WRIT=0;
DATA_PORT=com;
delay_lcd(1);    //當晶振較高時加延時
WRIT=1;
CE=1;
}
 
//--------------------------------------------
//          清屏
//--------------------------------------------
void clear_lcd(void)
{
unsigned int i,place;
unsigned int length=3840;
place=0;
for(i=0;i<length;i++)
{
write_data(place&0xff);   //寫入地址高位
write_data(place/256);    //寫入地址低位
write_com(0x24);          //地址設置
write_com(0xb0);          //設置數據自動寫
write_data(0x00); 
write_com(0xb2);          //自動復位
place++;
}
}
void LCD_Cursor(unsigned char lin,unsigned char column)
{
  LCD_lin=lin;
LCD_column=column;
}
bit Attrib_Fg=0;
void Show8_16(unsigned char code *address,unsigned int place)
unsigned char i;
for(i=0;i<16;i++)
{
write_data(place&0xff);   //寫入地址高位
write_data(place/256);    //寫入地址低位
write_com(0x24);          //地址設置
write_com(0xb0);          //設置數據自動寫
if(Attrib_Fg)
  write_data(~*(address+i));
else
  write_data(*(address+i));
//   write_data(0xff);
write_com(0xb2);          //自動復位
place+=30;
}
}
 
//--------------------------------------------
//顯示8*16字符
//旋轉90度:字模被豎著切分
//lin:行(0-3), column: 列(0-15)
//character:字符代碼(標準ASCII碼)
//--------------------------------------------
void ShowChar16(unsigned char character)
{
  unsigned char i;
unsigned char code *pc;   
    unsigned int place; 
for(i=0;i<Char16_Num;i++)
{
if(zimoc16[i].Gb_Code==character)
{
pc=zimoc16[i].Gb_Data;
break;
}
}
if (i==Char16_Num)return;
place=LCD_lin*30*16+LCD_column;
Show8_16(pc,place);
}
 
//顯示一個漢字
//旋轉90度:字模被豎著切分
 
//hzcode: 漢字代碼(自定義的)
//unsigned char code HZtable
void ShowHZ(unsigned char code *hzcode)
{
unsigned char i,j;
unsigned char code *pc,*pc_A;     
    unsigned int place; 
for(i=0;i<Hz_Num;i++)
{
for(j=0,pc_A=hzcode;j<2;j++,pc_A++)
{
if(zimow[i].Hz_Code[j]!=*pc_A)break;
  
}
if(j==2)
  {
pc=zimow[i].Hz_Data;
break;
  }
}
if (i==Hz_Num)return;
place=LCD_lin*30*16+LCD_column;
Show8_16(pc,place);  
Show8_16(pc+16,place+1);
}
 
//顯示一個串 包含漢字和16*8字符
//旋轉90度:字模被豎著切分
void Show_String(unsigned char code *String)
{
unsigned char code *pc_A;
pc_A=String;
while(*pc_A!=0)
{
 
if(*pc_A>=0xa0)
{
 ShowHZ(pc_A);
 pc_A+=2; 
 LCD_column+=2;
}
else
{
   
ShowChar16(*pc_A);
pc_A++;
   LCD_column++;
}
}
}
//--------------------------------------------
//         LM4229初始化函數
//--------------------------------------------
void lcd_init()
{
FS1 = 0;//fs1管腳高電平時表示字體為8*6;
           //低電平時為8*8
MD2 = 0;
HALT = 0;
write_data(0); 
write_data(0);        //圖形首地址
write_com(0x42);     //圖形首地址設置 
write_data(30);
write_data(0);
write_com(0x43);     //圖形區域設置
write_com(0x80);     //設置為OR模式
write_com(0x9a);    //關閉文本顯示,開圖形顯示
clear_lcd();
}

字模文件
橫向取模
struct
{
unsigned char Gb_Code;
unsigned char Gb_Data[16];
}code zimoc16[]=
{
'.',0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // -.-
0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x00,
 
'0',0x00,0x00,0x7C,0xC6,0xC6,0xCE,0xD6,0xD6,  // -0-
0xE6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00,
 
'1',0x00,0x00,0x18,0x38,0x78,0x18,0x18,0x18,  // -1-
0x18,0x18,0x18,0x7E,0x00,0x00,0x00,0x00,
 
'5',0x00,0x00,0xFE,0xC0,0xC0,0xC0,0xFC,0x0E,  // -5-
0x06,0x06,0xC6,0x7C,0x00,0x00,0x00,0x00,
 
'B',0x00,0x00,0xFC,0x66,0x66,0x66,0x7C,0x66,  // -B-
0x66,0x66,0x66,0xFC,0x00,0x00,0x00,0x00,
 
'C',0x00,0x00,0x3C,0x66,0xC2,0xC0,0xC0,0xC0,  // -C-
0xC0,0xC2,0x66,0x3C,0x00,0x00,0x00,0x00,
 
'M',0x00,0x00,0xC6,0xEE,0xFE,0xFE,0xD6,0xC6,  // -M-
0xC6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00,
 
'N',0x00,0x00,0xC6,0xE6,0xF6,0xFE,0xDE,0xCE,  // -N-
0xC6,0xC6,0xC6,0xC6,0x00,0x00,0x00,0x00,
 
'O',0x00,0x00,0x38,0x6C,0xC6,0xC6,0xC6,0xC6,  // -O-
0xC6,0xC6,0x6C,0x38,0x00,0x00,0x00,0x00,  
 
'S',0x00,0x00,0x7C,0xC6,0xC6,0x60,0x38,0x0C,  // -S-
0x06,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00,
 
'U',0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xC6,  // -U-
0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00,
 
'W',0x00,0x00,0xC6,0xC6,0xC6,0xC6,0xC6,0xD6,  // -W-
0xD6,0xFE,0x6C,0x6C,0x00,0x00,0x00,0x00, 
 
'b',0x00,0x00,0xE0,0x60,0x60,0x78,0x6C,0x66,  // -b-
0x66,0x66,0x66,0xDC,0x00,0x00,0x00,0x00,
 
'c',0x00,0x00,0x00,0x00,0x00,0x7C,0xC6,0xC0,  // -c-
0xC0,0xC0,0xC6,0x7C,0x00,0x00,0x00,0x00,
 
'm',0x00,0x00,0x00,0x00,0x00,0xEC,0xFE,0xD6,  // -m-
0xD6,0xD6,0xD6,0xD6,0x00,0x00,0x00,0x00,
 
'n',0x00,0x00,0x00,0x00,0x00,0xDC,0x66,0x66,  // -n-
0x66,0x66,0x66,0x66,0x00,0x00,0x00,0x00,
 
'o',0x00,0x00,0x00,0x00,0x00,0x7C,0xC6,0xC6,  // -o-
0xC6,0xC6,0xC6,0x7C,0x00,0x00,0x00,0x00,
 
's',0x00,0x00,0x00,0x00,0x00,0x7C,0xC6,0x60,  // -s-
0x38,0x0C,0xC6,0x7C,0x00,0x00,0x00,0x00,
 
'u',0x00,0x00,0x00,0x00,0x00,0xCC,0xCC,0xCC,  // -u-
0xCC,0xCC,0xCC,0x76,0x00,0x00,0x00,0x00,
 
'w',0x00,0x00,0x00,0x00,0x00,0xC6,0xC6,0xC6,  // -w-
0xD6,0xD6,0xFE,0x6C,0x00,0x00,0x00,0x00,
};
 
 
 
struct
{
unsigned char Hz_Code[2];
unsigned char Hz_Data[32];
}code zimow[]=
{
"歡", 0x00,0x00,0xFC,0x04,0x45,0x46,0x28,0x28,0x10,0x28,0x24,0x44,0x81,0x01,0x02,0x0C,
      0x80,0x80,0x80,0xFC,0x04,0x48,0x40,0x40,0x40,0x40,0xA0,0xA0,0x10,0x08,0x0E,0x04,
 
"迎", 0x00,0x41,0x26,0x14,0x04,0x04,0xF4,0x14,0x15,0x16,0x14,0x10,0x10,0x28,0x47,0x00,
      0x00,0x84,0x7E,0x44,0x44,0x44,0x44,0xC4,0x44,0x54,0x48,0x40,0x40,0x46,0xFC,0x00,
 
"訪", 0x00,0x20,0x10,0x10,0x07,0x00,0xF0,0x10,0x10,0x10,0x10,0x10,0x15,0x19,0x12,0x04,
      0x80,0x40,0x40,0x04,0xFE,0x80,0x88,0xFC,0x88,0x88,0x88,0x88,0x08,0x08,0x50,0x20,
 
"問", 0x20,0x1B,0x08,0x40,0x40,0x4F,0x48,0x48,0x48,0x48,0x48,0x4F,0x48,0x40,0x40,0x40,
      0x04,0xFE,0x04,0x04,0x24,0xF4,0x24,0x24,0x24,0x24,0x24,0xE4,0x24,0x04,0x14,0x08,
 
"單", 0x10,0x08,0x04,0x3F,0x21,0x21,0x3F,0x21,0x21,0x3F,0x21,0x01,0xFF,0x01,0x01,0x01,
      0x10,0x20,0x48,0xFC,0x08,0x08,0xF8,0x08,0x08,0xF8,0x00,0x04,0xFE,0x00,0x00,0x00,
 
"片", 0x00,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x40,0x80,
      0x80,0x80,0x80,0x80,0x84,0xFE,0x00,0x00,0xC0,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
 
"機", 0x10,0x10,0x11,0x11,0xFD,0x11,0x31,0x39,0x55,0x51,0x91,0x11,0x11,0x12,0x14,0x18,
      0x00,0x10,0xF8,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x12,0x12,0x0E,0x00,
 
"技", 0x10,0x10,0x10,0x13,0xFC,0x10,0x10,0x13,0x1A,0x31,0xD1,0x10,0x10,0x10,0x51,0x26,
      0x40,0x40,0x48,0xFC,0x40,0x40,0x40,0xF8,0x08,0x10,0x10,0xA0,0x40,0xB0,0x0E,0x04,
 
"術", 0x01,0x01,0x01,0x01,0x01,0xFF,0x01,0x03,0x05,0x09,0x11,0x21,0xC1,0x01,0x01,0x01,
      0x00,0x40,0x30,0x10,0x04,0xFE,0x00,0x80,0x40,0x20,0x10,0x0E,0x04,0x00,0x00,0x00,
 
"論", 0x00,0x40,0x30,0x10,0x01,0x02,0xF4,0x11,0x11,0x11,0x11,0x11,0x15,0x19,0x10,0x00,
      0x40,0x40,0xA0,0xA0,0x10,0x0E,0x04,0x00,0x10,0x30,0xC0,0x00,0x04,0x04,0xFC,0x00,
 
"壇", 0x10,0x10,0x13,0x10,0x10,0xFC,0x17,0x10,0x10,0x10,0x10,0x1D,0xF1,0x43,0x00,0x00,
      0x00,0x08,0xFC,0x00,0x00,0x04,0xFE,0x40,0x40,0x80,0x90,0x08,0x04,0xFC,0x04,0x00,
  
"★", 0x00,0x00,0x01,0x01,0x03,0x7F,0x3F,0x1F,0x0F,0x07,0x0F,0x0F,0x1E,0x18,0x20,0x00,
      0x80,0x80,0xC0,0xC0,0xE0,0xFF,0xFE,0xFC,0xF8,0xF0,0xF8,0x78,0x3C,0x0C,0x02,0x00,
 
};
unsigned char code Char16_Num=sizeof(zimoc16)/sizeof(zimoc16[0]);
unsigned char code Hz_Num=sizeof(zimow)/sizeof(zimow[0]);
 
關閉窗口

相關文章

主站蜘蛛池模板: 日韩av一区二区在线观看 | 日韩电影在线一区 | www国产成人免费观看视频,深夜成人网 | 免费黄色的网站 | 成人国产午夜在线观看 | 亚洲国产aⅴ精品一区二区 免费观看av | 精品一区二区三区四区 | 亚洲成人中文字幕 | 在线视频a | 国产精品综合视频 | 男女免费网站 | 日本字幕在线观看 | 色综合久| 欧美精品久久久 | 性欧美hd| 欧美九九 | 精品久久久久久久久久久久久 | 亚洲精品一区二区三区中文字幕 | 成在线人视频免费视频 | 成人在线观看欧美 | 日韩成人精品在线 | 成人欧美一区二区 | 国产精品视频免费观看 | 亚洲国产午夜 | 亚洲精品亚洲人成人网 | 国产资源在线观看 | 亚洲国产精品一区二区久久 | 在线免费观看黄a | 亚洲综合中文字幕在线观看 | 中文字幕国产高清 | 日韩伦理电影免费在线观看 | 精品国产一区二区三区久久久久久 | 国产精品自拍视频 | 国产欧美日韩一区二区三区在线 | 国产高清久久 | 中文字幕视频在线观看 | 九九热在线免费观看 | 国产重口老太伦 | 2023亚洲天堂 | 日韩日韩日韩日韩日韩日韩日韩 | 欧美激情久久久 |