![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Embed:
(wiki syntax)
Show/hide line numbers
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
![doxygen](doxygen.png)