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.
main.cpp
00001 #include "mbed.h" 00002 #include "TextLCD.h" 00003 00004 #define High 1 00005 #define Low 0 00006 00007 DigitalInOut D(p15); 00008 DigitalOut Csb(p16); 00009 DigitalOut Clk(p17); 00010 00011 DigitalOut myled1(LED1); 00012 DigitalOut myled4(LED4); 00013 00014 TextLCD lcd(p24, p26, p27, p28, p29, p30); // rs, e, d4-d7 00015 00016 int flag; //1100 flag data 00017 int i; //counter 00018 00019 int x; //X 00020 int y; //Y 00021 00022 //clock out 00023 void CLK (char a) 00024 { 00025 Clk=a; 00026 myled1=a; 00027 wait_ms(1); 00028 } 00029 //4bit flag reaD.intput()g 00030 int READ_FLAG () 00031 { 00032 flag=0; 00033 D.input(); 00034 for(i=0;i<4;i++){ 00035 CLK(High);CLK(Low); //clock down edge 00036 flag=flag*10; 00037 flag=flag+D; //1100 flag reaD.intput()g 00038 } 00039 return flag; 00040 } 00041 //22bit data reaD.intput()g 00042 void XY_DATA () 00043 { 00044 x=0; 00045 D.input(); 00046 for(i=0;i<11;i++){ 00047 CLK(High);CLK(Low); //clock down edge 00048 x=x<<1; 00049 x=x | D; //X data reaD.intput()g 00050 } 00051 y=0; 00052 for(i=0;i<11;i++){ 00053 CLK(High);CLK(Low); //clock down edge 00054 y=y<<1; 00055 y=y | D; //Y data reaD.intput()g 00056 } 00057 } 00058 // reset sign out 00059 void RESET(void) 00060 { 00061 D.output(); 00062 CLK(High);D=0;CLK(Low); 00063 CLK(High);D=0;CLK(Low); 00064 CLK(High);D=0;CLK(Low); 00065 CLK(High);D=0;CLK(Low); 00066 } 00067 //start sign out 00068 void START(void) 00069 { 00070 D.output(); 00071 CLK(High);D=1;CLK(Low); 00072 CLK(High);D=0;CLK(Low); 00073 CLK(High);D=0;CLK(Low); 00074 CLK(High);D=0;CLK(Low); 00075 } 00076 00077 int READ_END_FLAG(void) 00078 { 00079 //int d[4]; 00080 flag=0; 00081 D.output(); 00082 CLK(High);D=1;CLK(Low); 00083 CLK(High);D=1;CLK(Low); 00084 CLK(High);D=0;CLK(Low); 00085 CLK(High);D=0;CLK(Low); 00086 D.input(); 00087 for(i=0;i<4;i++){ 00088 CLK(High); 00089 CLK(Low); //clock down edge 00090 //d[i]=D; //1100 flag reaD 00091 flag=flag<<1; 00092 flag=flag+D; 00093 myled4=D ; 00094 } 00095 //flag=d[0]*1000+d[1]*100+d[2]*10+d[3]; 00096 return flag; 00097 } 00098 00099 int main() { 00100 int cmd=0; 00101 int dx=0;char *ax; 00102 int dy=0;char *ay; 00103 float atn; 00104 00105 while(1){ 00106 //lcd.cls(); 00107 Csb=1; 00108 //wait_ms(1); 00109 Csb=0; 00110 RESET(); 00111 Csb=1; 00112 //wait_ms(1); 00113 Csb=0; 00114 START(); 00115 Csb=1; 00116 wait_ms(30); //scanning 00117 Csb=0; 00118 cmd=READ_END_FLAG(); 00119 XY_DATA(); 00120 00121 if(x>1024){ dx=x-2048;ax="-S";} 00122 else{ dx=x;ax="+N";} 00123 if(y>1024){ dy=y-2048;ay="-E";} 00124 else{ dy=y;ay="+W";} 00125 atn=(float)dy/(float)dx; 00126 Csb=1; 00127 lcd.locate(0,0);lcd.printf(" X Y ATN"); 00128 lcd.locate(0,1);lcd.printf(" %2s %2s %4.2f",ax,ay,atn); 00129 wait_ms(40); //LCD dispaying 00130 } 00131 }
Generated on Fri Jul 15 2022 20:57:43 by
1.7.2