#include #include sbit lcd_sclk=P5^0; /*接口定義:lcd_sclk就是CLK*/ sbit lcd_sid=P5^1; /*接口定義:lcd_sid就是MOSI*/ sbit lcd_rs=P5^2; /*接口定義:lcd_rs就是DC*/ sbit lcd_cs1=P5^3; /*接口定義:lcd_cs1就是OLED的片選CS1*/ sbit Rom_OUT=P5^4; /*字庫IC接口定義:Rom_OUT就是FSO*/ sbit Rom_CS=P5^5; /*字庫IC接口定義Rom_CS就是字庫IC的CS2*/ unsigned char code ASCII[] = {'0','1','2','3','4','5','6','7','8','9'}; #define uchar unsigned char #define uint unsigned int #define ulong unsigned long uchar code bmp1[]; /*寫指令到LCD模塊*/ void transfer_command_lcd(int data1) { char i; lcd_rs=0; lcd_sclk=0; for(i=0;i<8;i++) { if(data1&0x80) lcd_sid=1; else lcd_sid=0; lcd_sclk=1; _nop_(); lcd_sclk=0; data1<<=1; } } /*寫數據到LCD模塊*/ void transfer_data_lcd(int data1) { char i; lcd_rs=1; lcd_sclk=0; for(i=0;i<8;i++) { if(data1&0x80) lcd_sid=1; else lcd_sid=0; lcd_sclk=1; _nop_(); lcd_sclk=0; data1<<=1; } } /*延時*/ void delay(int n_ms) { int j,k; for(j=0;j } /*等待一個按鍵,我的主板是用P2.0與GND之間接一個按鍵*/ //void waitkey() //{ // repeat: // if (P2&0x01) goto repeat; // else delay(6); // if (P2&0x01) goto repeat; // else // delay(40);; //} /*LCD模塊初始化*/ void initial_lcd() { lcd_cs1=0; Rom_CS = 1; // lcd_reset=0; /*低電平復位*/ delay(20); //lcd_reset=1; /*復位完畢*/ delay(20); transfer_command_lcd(0xAE); //display off transfer_command_lcd(0x20); //Set Memory Addressing Mode transfer_command_lcd(0x10); //00,Horizontal Addressing Mode;01,Vertical Addressing Mode;10,Page Addressing Mode (RESET);11,Invalid transfer_command_lcd(0xb0); //Set Page Start Address for Page Addressing Mode,0-7 transfer_command_lcd(0xc8); //Set COM Output Scan Direction transfer_command_lcd(0x00);//---set low column address transfer_command_lcd(0x10);//---set high column address transfer_command_lcd(0x40);//--set start line address transfer_command_lcd(0x81);//--set contrast control register transfer_command_lcd(0x7f); transfer_command_lcd(0xa1);//--set segment re-map 0 to 127 transfer_command_lcd(0xa6);//--set normal display transfer_command_lcd(0xa8);//--set multiplex ratio(1 to 64) transfer_command_lcd(0x3F);// transfer_command_lcd(0xa4);//0xa4,Output follows RAM content;0xa5,Output ignores RAM content transfer_command_lcd(0xd3);//-set display offset transfer_command_lcd(0x00);//-not offset transfer_command_lcd(0xd5);//--set display clock divide ratio/oscillator frequency transfer_command_lcd(0xf0);//--set divide ratio transfer_command_lcd(0xd9);//--set pre-charge period transfer_command_lcd(0x22); // transfer_command_lcd(0xda);//--set com pins hardware configuration transfer_command_lcd(0x12); transfer_command_lcd(0xdb);//--set vcomh transfer_command_lcd(0x20);//0x20,0.77xVcc transfer_command_lcd(0x8d);//--set DC-DC enable transfer_command_lcd(0x14);// transfer_command_lcd(0xaf);//--turn on oled panel lcd_cs1=1; } void lcd_address(uchar page,uchar column) { transfer_command_lcd(0xb0 + column); /*設置頁地址*/ transfer_command_lcd(((page & 0xf0) >> 4) | 0x10); /*設置列地址的高4位*/ transfer_command_lcd((page & 0x0f) | 0x00); /*設置列地址的低4位*/ } /*全屏清屏*/ void clear_screen() { unsigned char i,j; lcd_cs1=0; Rom_CS = 1; for(i=0;i<8;i++) { transfer_command_lcd(0xb0+i); transfer_command_lcd(0x00); transfer_command_lcd(0x10); for(j=0;j<128;j++) { transfer_data_lcd(0x00); } } lcd_cs1=1; } /*顯示128x64點陣圖像*/ //void display_128x64(uchar *dp) //{ // uint i,j; // lcd_cs1=0; // for(j=0;j<8;j++) // { // lcd_address(0,j); // for (i=0;i<128;i++) // { // transfer_data_lcd(*dp); /*寫數據到LCD,每寫完一個8位的數據后列地址自動加1*/ // dp++; // } // } // lcd_cs1=1; //} /*顯示16x16點陣圖像、漢字、生僻字或16x16點陣的其他圖標*/ void display_graphic_16x16(uint page,uint column,uchar *dp) { uint i,j; lcd_cs1=0; Rom_CS = 1; for(j=2;j>0;j--) { lcd_address(column,page); for (i=0;i<16;i++) { transfer_data_lcd(*dp); /*寫數據到LCD,每寫完一個8位的數據后列地址自動加1*/ dp++; } page++; } lcd_cs1=1; } /*顯示8x16點陣圖像、ASCII, 或8x16點陣的自造字符、其他圖標*/ void display_graphic_8x16(uint page,uchar column,uchar *dp) { uint i,j; lcd_cs1=0; for(j=2;j>0;j--) { lcd_address(column,page); for (i=0;i<8;i++) { transfer_data_lcd(*dp); /*寫數據到LCD,每寫完一個8位的數據后列地址自動加1*/ dp++; } page++; } lcd_cs1=1; } /*顯示5*7點陣圖像、ASCII, 或5x7點陣的自造字符、其他圖標*/ //void display_graphic_5x7(uint page,uchar column,uchar *dp)
上一篇:stm8s003k3加數碼管做的定時小板,繼電器以及MOS管輸出
下一篇:單片機C語言 串口傳輸 結構體
推薦閱讀最新更新時間:2025-04-26 23:11




設計資源 培訓 開發板 精華推薦
- MC33074ADTBR2G 高順從電壓至灌電流轉換器的典型應用
- LT1307BCS8 單節電池供電恒流 LED 驅動器的典型應用電路
- 微型收發器STKNX評估和開發套件
- 用于簡單 400 mW 唱機放大器的 TL431A 可編程精密基準的典型應用
- LT6654BHLS8-4.096 擴展電源范圍電壓基準的典型應用
- LT1506IR-3.3 SYNC 雙路輸出 SEPIC 轉換器的典型應用電路
- EV-ADF4116SD1Z,用于評估 ADF4116 單整數 N 550MHz PLL 頻率合成器的評估板
- 使用 Microchip Technology 的 LM385BCOA-2.5 的參考設計
- 基于梁山派的廚房環境檢測系統
- 用于便攜式的 1.2V DC 到 DC 單路輸出電源