Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 0:ded1a1350d0d, committed 2014-10-04
- Comitter:
- zhimagod
- Date:
- Sat Oct 04 04:00:38 2014 +0000
- Commit message:
- First Try
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LCD.h Sat Oct 04 04:00:38 2014 +0000 @@ -0,0 +1,52 @@ +#ifndef _LCD_H +#define _LCD_H +//------------------------------LCD RAM Set----------------- +//Function Set (H=0/1) +#define Function 0x20//设置 +#define PowerDown 0x04 +#define PowerUp 0x00 +#define EntryHor 0x00//水平寻址模式 +#define EntryVer 0x02//垂直寻址模式 +#define InstrucExtern 0x01//扩展指令 +#define InstrucBasic 0x00//基本指令 +//Display Contorl (H=0) +#define DispCtrl 0x08//显示设置 +#define Blank 0x00//全空 +#define Normal 0x04//正常显示 +#define Black 0x01//全黑显示 +#define Inv 0x05//反显 +//x position (H=0) +#define AddressX(x) (0x80 | x)//X地址 +//y position (H=0) +#define AddressY(y) (0x40 | y)//Y地址 +//Temperature (H=1) +#define Temper 0x04//温度系数(一般设为0,低温时需要修改) +//Bias System +#define Bias 0x10//偏压或混合率(影响对比度) +//Set Vop +#define Vop 0x80//操作电压(影响亮度) + +#define Ver_Basic Function|EntryVer|InstrucBasic +#define Ver_Extern Function|EntryVer|InstrucExtern +#define Hor_Basic Function|EntryHor|InstrucBasic +#define Hor_Extern Function|EntryHor|InstrucExtern +//----------------------------------the end-------------------------------- + +//---------------------------------sys clock set--------------------------- +#define SYSTEM_CLK_FREQ_16MHz 0xF<<3 +#define SYSTEM_CLK_FREQ_8MHz 0xE<<3 +#define SYSTEM_CLK_FREQ_4MHz 0xD<<3 +#define SYSTEM_CLK_FREQ_2MHz 0xC<<3 +#define SYSTEM_CLK_FREQ_1MHz 0xB<<3 +#define SYSTEM_CLK_FREQ_500kHz 0x7<<3 +#define SYSTEM_CLK_FREQ_250kHz 0x6<<3 +#define SYSTEM_CLK_FREQ_125kHz 0x5<<3 +#define SYSTEM_CLK_FREQ_62kHz 0x4<<3 +#define SYSTEM_CLK_FREQ_32kHz 0x3<<3 + +#define SYSTEM_CLK_SCS_INTOSC 0x02 +#define SYSTEM_CLK_SCS_EXTOSC 0x02 + + +#endif +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Sat Oct 04 04:00:38 2014 +0000
@@ -0,0 +1,272 @@
+#include "mbed.h"
+#include "LCD.h"
+
+typedef unsigned char byte;
+
+DigitalOut LCD_DC(D10);
+DigitalOut LCD_CS(D9);
+DigitalOut LCD_RES(D8);
+
+SPI Lcd_5110(SPI_MOSI, SPI_MISO, SPI_SCK);
+
+const byte CharTable[][14]=
+{
+ {0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x30,0x33,0x00,0x00,0x00},/*"!",0*/
+ {0x00,0x10,0x0C,0x16,0x0C,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*""",1*/
+ {0x40,0x40,0xF8,0x40,0xF8,0x40,0x00,0x04,0x3E,0x05,0x3F,0x05,0x04,0x00},/*"#",2*/
+ {0x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00,0x18,0x20,0xFF,0x21,0x1E,0x00},/*"$",3*/
+ {0xF0,0x08,0xF0,0x80,0x70,0x08,0x00,0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E},/*"%",4*/
+ {0x00,0xF0,0x88,0x70,0x00,0x00,0x00,0x1F,0x20,0x27,0x28,0x1F,0x21,0x10},/*"&",5*/
+ {0x10,0x16,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"'",6*/
+ {0x00,0x00,0x00,0xF0,0x0C,0x02,0x00,0x00,0x00,0x00,0x0F,0x30,0x40,0x00},/*"(",7*/
+ {0x00,0x06,0x18,0xE0,0x00,0x00,0x00,0x00,0x60,0x18,0x07,0x00,0x00,0x00},/*")",8*/
+ {0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x02,0x02,0x01,0x0F,0x01,0x02,0x02},/*"*",9*/
+ {0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x01,0x01,0x01,0x1F,0x01,0x01,0x01},/*"+",10*/
+ {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xB0,0x70,0x00,0x00,0x00,0x00},/*",",11*/
+ {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00},/*"-",12*/
+ {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00},/*".",13*/
+ {0x00,0x00,0x00,0x00,0xC0,0x38,0x0C,0x00,0x60,0x38,0x07,0x01,0x00,0x00},/*"/",14*/
+ {0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00},/*"0",15*/
+ {0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00},/*"1",16*/
+ {0x00,0x70,0x08,0x08,0x08,0xF0,0x00,0x00,0x30,0x2C,0x22,0x21,0x30,0x00},/*"2",17*/
+ {0x00,0x30,0x08,0x88,0x88,0x70,0x00,0x00,0x18,0x20,0x20,0x31,0x1E,0x00},/*"3",18*/
+ {0x00,0x80,0x40,0x20,0xF8,0x00,0x00,0x06,0x05,0x04,0x24,0x3F,0x24,0x04},/*"4",19*/
+ {0x00,0xF8,0x08,0x88,0x88,0x08,0x00,0x00,0x19,0x21,0x20,0x31,0x1F,0x00},/*"5",20*/
+ {0xE0,0x10,0x88,0x88,0x88,0x18,0x00,0x0F,0x11,0x20,0x20,0x31,0x1F,0x00},/*"6",21*/
+ {0x00,0x38,0x08,0x08,0xE8,0x18,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00},/*"7",22*/
+ {0x70,0x98,0x88,0x08,0x98,0x70,0x00,0x1E,0x21,0x21,0x21,0x31,0x1E,0x00},/*"8",23*/
+ {0xF0,0x08,0x08,0x08,0x18,0xE0,0x00,0x31,0x22,0x22,0x32,0x19,0x07,0x00},/*"9",24*/
+ {0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00},/*":",25*/
+ {0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x00,0x00,0x00},/*";",26*/
+ {0x00,0x00,0x80,0x60,0x10,0x08,0x00,0x00,0x01,0x02,0x0C,0x10,0x20,0x00},/*"<",27*/
+ {0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x00},/*"=",28*/
+ {0x00,0x08,0x30,0x40,0x80,0x00,0x00,0x00,0x20,0x18,0x04,0x02,0x01,0x00},/*">",29*/
+ {0x70,0x08,0x08,0x08,0x18,0xF0,0x00,0x00,0x00,0x30,0x37,0x01,0x00,0x00},/*"?",30*/
+ {0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x07,0x18,0x27,0x24,0x23,0x14,0x0B},/*"@",31*/
+ {0x00,0x00,0xE0,0x18,0xE0,0x00,0x00,0x20,0x3C,0x23,0x02,0x23,0x3C,0x20},/*"A",32*/
+ {0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x20,0x31,0x1E,0x00},/*"B",33*/
+ {0xE0,0x30,0x08,0x08,0x08,0x38,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x00},/*"C",34*/
+ {0x08,0xF8,0x08,0x08,0x10,0xE0,0x00,0x20,0x3F,0x20,0x20,0x10,0x0F,0x00},/*"D",35*/
+ {0x08,0xF8,0x88,0x88,0xE8,0x18,0x00,0x20,0x3F,0x20,0x20,0x23,0x30,0x00},/*"E",36*/
+ {0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x20,0x3F,0x20,0x00,0x03,0x00,0x00},/*"F",37*/
+ {0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x07,0x18,0x20,0x20,0x22,0x1E,0x02},/*"G",38*/
+ {0x08,0xF8,0x08,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x21,0x3F,0x20},/*"H",39*/
+ {0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00},/*"I",40*/
+ {0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0xC0,0x80,0x80,0x7F,0x00,0x00,0x00},/*"J",41*/
+ {0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x20,0x3F,0x20,0x01,0x26,0x38,0x20},/*"K",42*/
+ {0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x30,0x00},/*"L",43*/
+ {0x08,0xF8,0xF8,0x80,0xF8,0xF8,0x08,0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20},/*"M",44*/
+ {0x08,0xF8,0x38,0xC0,0x08,0xF8,0x08,0x20,0x3F,0x20,0x03,0x1C,0x3F,0x00},/*"N",45*/
+ {0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00},/*"O",46*/
+ {0x08,0xF8,0x08,0x08,0x08,0xF0,0x00,0x20,0x3F,0x21,0x01,0x01,0x00,0x00},/*"P",47*/
+ {0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x78,0x4F,0x00},/*"Q",48*/
+ {0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x20,0x3F,0x20,0x01,0x06,0x38,0x20},/*"R",49*/
+ {0x00,0x70,0x88,0x08,0x08,0x18,0x00,0x00,0x30,0x20,0x21,0x23,0x1E,0x00},/*"S",50*/
+ {0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x20,0x3F,0x20,0x00,0x00},/*"T",51*/
+ {0x08,0xF8,0x08,0x00,0x08,0xF8,0x08,0x00,0x1F,0x20,0x20,0x20,0x1F,0x00},/*"U",52*/
+ {0x08,0x78,0x88,0x00,0x88,0x78,0x08,0x00,0x00,0x0F,0x38,0x0F,0x00,0x00},/*"V",53*/
+ {0x08,0xF8,0xC4,0xF8,0x00,0xF8,0x08,0x00,0x07,0x3F,0x01,0x3E,0x07,0x00},/*"W",54*/
+ {0x08,0x38,0xE8,0x80,0xE8,0x18,0x08,0x20,0x30,0x2C,0x03,0x2E,0x38,0x20},/*"X",55*/
+ {0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,0x00,0x20,0x3F,0x20,0x00,0x00},/*"Y",56*/
+ {0x10,0x08,0x08,0xC8,0x38,0x08,0x00,0x30,0x2C,0x23,0x20,0x20,0x10,0x00},/*"Z",57*/
+ {0x00,0x00,0x00,0xFE,0x02,0x02,0x00,0x00,0x00,0x00,0x7F,0x40,0x40,0x00},/*"[",58*/
+ {0x00,0x1C,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x1C,0x60,0x00},/*"\",59*/
+ {0x00,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x40,0x40,0x7F,0x00,0x00,0x00},/*"]",60*/
+ {0x00,0x00,0x04,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"^",61*/
+ {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80},/*"_",62*/
+ {0x00,0x02,0x02,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"`",63*/
+ {0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x1D,0x24,0x22,0x22,0x3F,0x20},/*"a",64*/
+ {0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,0x3F,0x21,0x20,0x20,0x1F,0x00},/*"b",65*/
+ {0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x1F,0x31,0x20,0x20,0x11,0x00},/*"c",66*/
+ {0x00,0x00,0x80,0x80,0x88,0xF8,0x00,0x00,0x1F,0x21,0x20,0x20,0x3F,0x20},/*"d",67*/
+ {0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x22,0x22,0x22,0x13,0x00},/*"e",68*/
+ {0x80,0x80,0xF0,0x88,0x88,0x18,0x00,0x00,0x20,0x3F,0x20,0x20,0x00,0x00},/*"f",69*/
+ {0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x6B,0x94,0x94,0x93,0x60,0x00},/*"g",70*/
+ {0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x21,0x00,0x20,0x3F,0x20},/*"h",71*/
+ {0x00,0x80,0x80,0x98,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00},/*"i",72*/
+ {0x00,0x00,0x80,0x80,0x98,0x00,0x00,0x00,0xC0,0x80,0x80,0x7F,0x00,0x00},/*"j",73*/
+ {0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x24,0x06,0x39,0x20,0x00},/*"k",74*/
+ {0x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00},/*"l",75*/
+ {0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20},/*"m",76*/
+ {0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x3F,0x21,0x00,0x20,0x3F,0x20},/*"n",77*/
+ {0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x1F,0x31,0x20,0x21,0x1F,0x00},/*"o",78*/
+ {0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x80,0xFF,0xA1,0x20,0x30,0x1F,0x00},/*"p",79*/
+ {0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x1F,0x21,0x20,0xA0,0xFF,0x80},/*"q",80*/
+ {0x80,0x80,0x80,0x00,0x80,0x80,0x00,0x20,0x20,0x3F,0x21,0x20,0x01,0x00},/*"r",81*/
+ {0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x33,0x24,0x24,0x24,0x19,0x00},/*"s",82*/
+ {0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,0x00,0x00,0x1F,0x20,0x20,0x00},/*"t",83*/
+ {0x80,0x80,0x00,0x00,0x80,0x80,0x00,0x00,0x3F,0x20,0x20,0x20,0x3F,0x20},/*"u",84*/
+ {0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x03,0x1C,0x30,0x1C,0x03,0x00},/*"v",85*/
+ {0x80,0x80,0xC0,0x80,0x00,0x80,0x80,0x00,0x0F,0x3F,0x07,0x38,0x0F,0x00},/*"w",86*/
+ {0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00},/*"x",87*/
+ {0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x80,0x83,0x4E,0x30,0x0E,0x01,0x00},/*"y",88*/
+ {0x00,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x21,0x38,0x24,0x23,0x30,0x00},/*"z",89*/
+ {0x00,0x00,0x00,0x80,0x7E,0x02,0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x00},/*"{",90*/
+ {0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00},/*"|",91*/
+ {0x00,0x02,0x7E,0x80,0x00,0x00,0x00,0x00,0x40,0x3F,0x00,0x00,0x00,0x00},/*"}",92*/
+ {0x00,0x06,0x01,0x01,0x02,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"~",93*/
+};
+
+byte StringTable[12];
+byte const String_1[]={"bbs.eeworld"};
+byte const String_2[]={"ID:zhimagod"};
+
+const byte S1_Long = sizeof(String_1)/sizeof(String_1[0])-1;
+const byte S2_Long = sizeof(String_2)/sizeof(String_2[0])-1;
+
+
+//LCD Initials Values Array
+const byte LCD_Init_Array[8]=
+{
+ Function|PowerUp|EntryVer|InstrucExtern,
+ Vop|55,
+ Temper|0,
+ Bias|3,
+ Function|PowerUp|EntryHor|InstrucBasic,
+ DispCtrl|Normal,
+ AddressX(0),
+ AddressY(0),
+};
+//LCD write function
+//just add the cs signal for SPI operation
+void LCD_Write(unsigned char data)
+{
+ LCD_CS=0;
+ Lcd_5110.write(data);
+ LCD_CS=1;
+ return;
+}
+//LCD Initials Function
+//Initials the LCD use the Initials values
+void LCD_Init(void)
+{
+ unsigned int i;
+ Lcd_5110.frequency(10000000);
+ LCD_RES=0;
+ wait_us(10);
+ LCD_DC=0; //command
+ LCD_RES=1;
+ for(i=0;i<8;i++)
+ {
+ LCD_Write(LCD_Init_Array[i]);
+ }
+ LCD_DC=1; //Data
+ for(i=0;i<504;i++)
+ {
+ LCD_Write(0x00);//clear DDR
+ }
+}
+
+//Locate the pointer to x,y on the screen
+void LCD_XY(unsigned char x,unsigned char y)
+{
+ LCD_DC=0;
+ LCD_Write(Hor_Basic); //basic activ
+ LCD_Write(AddressX(x)); //set x
+ LCD_Write(AddressY(y)); //set y
+ LCD_DC=1;
+}
+
+//Display one char at position x,y with 16*7 or 16*14 pix
+//x :x address
+//y :y address
+//Invert:Invert Display this char
+//Index :the Char Index in the CharTable
+void LCD_Disp_Char(byte x,byte y,byte Invert,byte Index)
+{
+ byte i,mask;
+ const byte *p;
+ //adjust the Index's vvalue
+ if(Index<33)
+ Index=33;
+ else if(Index>126)
+ Index=125;
+
+ p=&CharTable[Index-33][0];
+ LCD_DC=1;
+ //adjust if Invert
+ if(Invert!=0)
+ mask=0xFF;
+ else
+ mask=0x00;
+ //upper half of a letter
+ LCD_XY(x,y);
+ for(i=0;i<7;i++)
+ {
+ LCD_Write((*p)^mask);
+ p++;
+ }
+ y++;
+ //down half of a letter
+ LCD_XY(x,y);
+ for(i=0;i<7;i++)
+ {
+ LCD_Write((*p)^mask);
+ p++;
+ }
+}
+//display string
+//ROM source
+void LCD_Disp_String_Rom(byte Line,byte row,byte Number,const byte *String)
+{
+ byte x,y;
+ byte i;
+ if(Line>2){
+ return;
+ }
+ y=Line*2;
+ x=row;
+ for(i=0;i<Number;i++)
+ {
+ LCD_Disp_Char(x,y,0,*String);
+ x+=7;
+ if(x>84){
+ return;
+ }
+ String++;
+ }
+}
+//display string
+//RAM source
+void LCD_Disp_String_Ram(byte Line,byte row,byte Number,byte *String)
+{
+ byte x,y;
+ byte i;
+ if(Line>2){
+ return;
+ }
+ y=Line*2;
+ x=row;
+ for(i=0;i<Number;i++)
+ {
+ LCD_Disp_Char(x,y,1,*String);
+ x+=7;
+ if(x>84){
+ return;
+ }
+ String++;
+ }
+}
+
+int main() {
+ int i = 0;
+ LCD_CS=1;
+ LCD_RES=1;
+ LCD_Init();
+ for(i=0;i<12;i++){
+ StringTable[i]=(i+48);
+ }
+ while(1)
+ {
+ LCD_Init();
+ wait(0.2);
+ LCD_Disp_String_Ram(0,0,12,&StringTable[0]);
+ wait(0.2);
+ LCD_Disp_String_Rom(1,0,S1_Long,&String_1[0]);
+ wait(0.2);
+ LCD_Disp_String_Rom(2,0,S2_Long,&String_2[0]);
+ wait(1);
+
+ }
+}
+
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Sat Oct 04 04:00:38 2014 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/552587b429a1 \ No newline at end of file