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.
digitLCD.cpp
00001 //HT1621 9 DIGIT 16SEG LCD 00002 00003 #include "digitLCD.h" 00004 00005 00006 digitLCD::digitLCD(PinName Rw, PinName CS, PinName Data) : _Rw(Rw),_CS(CS),_DATA(Data){ 00007 init(); 00008 } 00009 00010 // Initialize display 00011 void digitLCD::init(){ 00012 wait_ms(10); 00013 SendCmd(Sys_en); 00014 SendCmd(RCosc); 00015 SendCmd(ComMode); 00016 SendCmd(LCD_on); 00017 allsegson(); 00018 wait_ms(100); 00019 clear(); 00020 } 00021 00022 // Clear Display 00023 void digitLCD::clear(){ 00024 char i; 00025 char addr=0; 00026 for(i=0;i<10;i++) 00027 { 00028 Write(addr,0x00); 00029 addr+=1; 00030 } 00031 } 00032 00033 // All segments lit 00034 void digitLCD::allsegson(){ 00035 char addr=0; 00036 char i; 00037 for(i=0;i<10;i++) 00038 { 00039 Write(addr,0xffff); 00040 addr+=1; 00041 } 00042 } 00043 00044 // LCDoff 00045 void digitLCD::LCDoff(){ 00046 SendCmd(LCD_off); 00047 } 00048 00049 // LCDon 00050 void digitLCD::LCDon(){ 00051 SendCmd(LCD_on); 00052 } 00053 00054 // Hz symbol on 00055 void digitLCD::HZon(){ 00056 Write(9,0xFF); 00057 } 00058 00059 // Hz symbol off 00060 void digitLCD::HZoff(){ 00061 Write(9,0x00); 00062 } 00063 00064 // SendBit(send data) High bit first 00065 void digitLCD::SendBit(char sdata,char count){ 00066 char i; 00067 for(i=0;i<count;i++) 00068 { 00069 _Rw=0; 00070 wait_us(10); 00071 if(sdata&0x80) {_DATA=1;} 00072 else {_DATA=0;} 00073 wait_us(10); 00074 _Rw=1; 00075 wait_us(10); 00076 sdata<<=1; 00077 } 00078 //wait_us(20); 00079 } 00080 00081 // SendCmd(send cmd)Write MODE“100†AND 9 bits command 00082 void digitLCD::SendCmd(int command){ 00083 _CS=0; 00084 SendBit(0x80,4); 00085 SendBit(command,8); 00086 _CS=1; 00087 } 00088 00089 // Write(send data and cmd) 00090 void digitLCD::Write(char addr,int sdata){ 00091 char addr_r; 00092 //addr Decoding 00093 switch(addr) 00094 { 00095 case 0 : addr_r = 0<<4; break; 00096 case 1 : addr_r = 5<<4; break; 00097 case 2 : addr_r = 1<<4; break; 00098 case 3 : addr_r = 6<<4; break; 00099 case 4 : addr_r = 2<<4; break; 00100 case 5 : addr_r = 7<<4; break; 00101 case 6 : addr_r = 3<<4; break; 00102 case 7 : addr_r = (8<<4)+0x08; break; 00103 case 8 : addr_r = 4<<4; break; 00104 default : addr_r = (9<<4)+0x08; sdata = sdata & 2; break; 00105 } 00106 00107 _CS=0; 00108 SendBit(0xa0,3); //Write MODE“101†00109 SendBit(addr_r,6); //Write addr high 6 bits 00110 SendBit(sdata,8); //Write data low 8 bits 00111 SendBit(((sdata>>8)&0xff),8); //Write data high 8 bits 00112 _CS=1; 00113 }
Generated on Mon Jul 18 2022 17:33:51 by
1.7.2