wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

標(biāo)題: 定位顯示系統(tǒng)msp430程序 [打印本頁(yè)]

作者: 491182291    時(shí)間: 2016-7-19 15:49
標(biāo)題: 定位顯示系統(tǒng)msp430程序
定位顯示系統(tǒng)msp430程序

  1. #include "msp430g2553.h"
  2. #include "math.h"
  3. #define SENDCOMM 0XF8     //0XF1000
  4. #define READCOMM 0XFC     //0XF1100
  5. #define SENDDATA 0XFA     //0XF1010
  6. #define READDATA 0XFE     //0XF1110
  7. /*-----12864串行定義--------*/
  8. #define E_CLK_0  P1OUT &= ~BIT7         //時(shí)鐘信號(hào)為0
  9. #define E_CLK_1  P1OUT |= BIT7                //時(shí)鐘信號(hào)為1
  10. #define RW_SID_0  P1OUT &= ~BIT6        //數(shù)據(jù)信號(hào)為0
  11. #define RW_SID_1  P1OUT |= BIT6                //數(shù)據(jù)信號(hào)為1
  12. /*-----12864工作方式定義-------*/
  13. #define EXTEND_SET 0x34//擴(kuò)展指令集,繪圖顯示關(guān)
  14. #define DRAW_ON 0x36 //繪圖顯示開(kāi)
  15. #define DRAW_OFF 0x34 //繪圖顯示關(guān)
  16. #define BASIC_SET 0x30//基本指令集

  17. #define FOSC 16000000
  18. #define Machine_cycle 1.0/FOSC
  19. #define Sound 340
  20. /*------LCD12864基本函數(shù)-------*/
  21. void LCD_send_byte(unsigned char a);
  22. unsigned char LCD_read_byte();
  23. void LCD_write_com(unsigned char comm);
  24. void LCD_write_data(unsigned char lcd_data);
  25. void LCD_set_addr(unsigned char x, unsigned char y);
  26. void LCD_write_string(unsigned char addr_x, unsigned char addr_y, char* str);
  27. void LCD_list_num(unsigned char x,unsigned char y,long number);
  28. void LCD_list_Decimal(unsigned char x,unsigned char y,double Decimal);
  29. void LCD_init(void);
  30. void LCD_write_char(unsigned char x, unsigned char y,unsigned char flag, char data);
  31. void LCD_clear(void);
  32. unsigned char LCD_read_data();
  33. void check_busy();
  34. /*-----LCD12864繪圖函數(shù)-------*/
  35. void GUI_clear();  //繪圖清屏函數(shù) (清屏指令在畫(huà)圖時(shí)不能使用)
  36. void GUI_draw_full_picture(const unsigned char *dat);//畫(huà)滿屏圖片,橫向取模
  37. //void LCD_set_dot(unsigned char x,unsigned char y);//打點(diǎn)程序
  38. //void GUI_hline(unsigned char x0,unsigned char x1,unsigned char y);//畫(huà)水平線函數(shù),x0,x1為起始點(diǎn)和終點(diǎn)的水平坐標(biāo),y為垂直坐標(biāo)
  39. /*---------鍵盤(pán)函數(shù)---------*/
  40. unsigned char getkey(void);
  41. void GPIO_init();
  42. void TIMER0_init();
  43. void TIMER1_init();
  44. void Calculation();

  45. unsigned char num[] = {"0123456789ABCDEF"};
  46. unsigned char key_t,key,t;
  47. unsigned char odd;
  48. unsigned long cap1_2=0;
  49. unsigned long cap2_0=0;
  50. unsigned long cap2_1=0;
  51. unsigned long cap2_4=0;
  52. unsigned int flag=0;
  53. double x=0,y=0;
  54. double X[20];
  55. double Y[20];

  56. void main(void) {
  57.         WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
  58.         DCOCTL=CALDCO_16MHZ;
  59.         BCSCTL1=CALBC1_16MHZ;
  60.         IFG1 &= ~OFIFG; // Clear OSCFault flag
  61.         LCD_init();
  62.         LCD_clear();
  63.         GPIO_init();
  64.         TIMER0_init();
  65.         TIMER1_init();
  66.         LCD_write_string(1,8,"坐標(biāo)");
  67.         _EINT();//開(kāi)全局中斷
  68.         while(1)
  69.         {
  70.                 if(cap1_2!=0)
  71.                         if(cap2_0!=0)
  72.                                 if(cap2_1!=0)
  73.                                         if(cap2_4!=0)
  74.                                         {
  75.                                                 _DINT();
  76.                                                 TA0CTL&=~MC_2;
  77.                                                 TA1CTL&=~MC_2;
  78.                                                 Calculation();
  79.                                                 cap1_2=0;
  80.                                                 cap2_0=0;
  81.                                                 cap2_1=0;
  82.                                                 cap2_4=0;
  83.                                                 TA0CCR1=0x0000;
  84.                                                 TA1CCR0=0x0000;
  85.                                                 TA1CCR1=0x0000;
  86.                                                 TA1CCR2=0x0000;
  87.                                                 P1SEL&=~BIT2;
  88.                                                 P1OUT&=~BIT2;
  89.                                                 _delay_cycles(10);
  90.                                                 P1IE|=BIT2;
  91.                                                 _EINT();
  92.                                         }
  93.         }
  94. }
  95. //P1口外部中斷
  96. #pragma vector=PORT1_VECTOR
  97. __interrupt void Port_1(void)
  98. {
  99.         if(P1IFG&BIT2)
  100.         {
  101.                 P1OUT^=BIT0;
  102.                 P1IE&=~BIT2;  //1.2禁止中斷
  103.                 P1OUT|=BIT2; //1.2輸出
  104.                 P1SEL|=BIT2; //p1.2外圍模塊功能
  105.                 _delay_cycles(10);
  106.                 TA0CTL|=MC_2+TACLR; //MC2連續(xù)計(jì)數(shù)   TACLR清除
  107.                 TA1CTL|=MC_2+TACLR;
  108.                 TA0CCTL1|=CM_2+CCIE;//CM選擇捕獲  CCIE中斷允許
  109.                 TA1CCTL0|=CM_2+CCIE;
  110.                 TA1CCTL1|=CM_2+CCIE;
  111.                 TA1CCTL2|=CM_2+CCIE;
  112.                 P1IFG&=~BIT2;        //P1.2無(wú)中斷請(qǐng)求
  113.         }
  114. }

  115. // Timer A0 interrupt service routine
  116. #pragma vector=TIMER0_A1_VECTOR                           //A1定時(shí)  R0計(jì)數(shù)
  117. __interrupt void Timer0_A1(void)
  118. {
  119.         TA0CCTL1&=~CM_2;
  120.         TA0CCTL1&=~CCIE;
  121.         P1OUT^=BIT0;
  122.         cap1_2=TA0CCR1;
  123.         TA0CCTL1&=~CCIFG;
  124. }

  125. // Timer A1 interrupt service routine
  126. #pragma vector=TIMER1_A0_VECTOR       
  127. __interrupt void Timer1_A0(void)                                //A0定時(shí)  R1計(jì)數(shù)
  128. {
  129.         TA1CCTL0&=~CM_2;
  130.         TA1CCTL0&=~CCIE;
  131.         P1OUT^=BIT0;
  132.         cap2_0=TA1CCR0;
  133.         TA1CCTL0&=~CCIFG;
  134. }

  135. #pragma vector=TIMER1_A1_VECTOR                                //A1定時(shí)  R1計(jì)數(shù)
  136. __interrupt void Timer1_A1(void)
  137. {
  138.         switch(TA1IV)
  139.         {
  140.         case TA1IV_TACCR1:
  141.                 {
  142.                         TA1CCTL1&=~CM_2;
  143.                         TA1CCTL1&=~CCIE;
  144.                         P1OUT^=BIT0;
  145.                         cap2_1=TA1CCR1;
  146.                         TA1CCTL1&=~CCIFG;
  147.                         break;
  148.                 }
  149.         case TA1IV_TACCR2:
  150.                 {
  151.                         TA1CCTL2&=~CM_2;
  152.                         TA1CCTL2&=~CCIE;
  153.                         P1OUT^=BIT0;
  154.                         cap2_4=TA1CCR2;
  155.                         TA1CCTL2&=~CCIFG;
  156.                         break;
  157.                 }
  158.         default:break;
  159.         }
  160. }

  161. void GPIO_init()
  162. {
  163.         //標(biāo)志口
  164.         P1DIR|=BIT0;
  165.         P1OUT&=~BIT0;
  166.         _delay_cycles(20);
  167.         //p1.2外部中斷設(shè)置
  168.         P1DIR&=~BIT2;//輸入,上升沿觸發(fā),開(kāi)中斷
  169.         P1REN|=BIT2;
  170.         P1OUT&=~BIT2;
  171.         P1IES&=~BIT2;
  172.         P1IE|=BIT2;
  173.         P1IFG&=~BIT2;
  174.         _delay_cycles(20);
  175.         //p2.0 p2.1 p2.4捕獲設(shè)置
  176.         P2DIR&=~BIT0+BIT1+BIT4;//設(shè)置P2.0,2.1,2.4為輸入
  177.         P2REN|=BIT0+BIT1+BIT4;
  178.         P2OUT|=BIT0+BIT1+BIT4;
  179.         P2SEL|=BIT0+BIT1+BIT4;
  180.         _delay_cycles(20);
  181. }

  182. void TIMER0_init()
  183. {
  184.         TA0CTL |= TASSEL_2+MC_0+TACLR;
  185.         TA0CCTL1|=CCIS_0+SCS+CAP+CM_0;
  186. }

  187. void TIMER1_init()
  188. {
  189.         TA1CTL |= TASSEL_2+MC_0+TACLR;
  190.         TA1CCTL0|=CCIS_0+SCS+CAP+CM_0;
  191.         TA1CCTL1|=CCIS_0+SCS+CAP+CM_0;
  192.         TA1CCTL2|=CCIS_0+SCS+CAP+CM_0;
  193. }

  194. void Calculation()
  195. {
  196.         long a,b,c,d;
  197.         double DA,DB,DC,DD;
  198.         double x1,x2,y1,y2;
  199.         DA=Sound*cap1_2*Machine_cycle*100.0;
  200.         DB=Sound*cap2_0*Machine_cycle*100.0;
  201.         DC=Sound*cap2_1*Machine_cycle*100.0;
  202.         DD=Sound*cap2_4*Machine_cycle*100.0;
  203.         x1=(DD*DD-DC*DC+250000*1.0)/(1000*1.0);
  204.         x2=(DA*DA-DB*DB+250000*1.0)/(1000*1.0);
  205.         y1=(DB*DB-DC*DC+122500*1.0)/(700*1.0);
  206.         y2=(DA*DA-DD*DD+122500*1.0)/(700*1.0);
  207.         if(flag<20)
  208.         {
  209.                 X[flag]=(x1+x2)*1.0/2.0;
  210.                 Y[flag]=(y1+y2)*1.0/2.0;
  211.                 flag++;
  212.         }
  213.         else
  214.         {
  215.                 for(flag=0;flag<20;flag++)
  216.                 {
  217.                         x=x+X[flag];
  218.                         y=y+Y[flag];
  219.                 }
  220.                 x=x*1.0/20.0;
  221.                 y=y*1.0/20.0;
  222.                 LCD_list_Decimal(2,4,x);
  223.                 LCD_list_Decimal(3,4,y);
  224.                 flag=0;
  225.         }
  226. //        a=cap1_2-cap1_2;
  227. //        b=cap2_0-cap1_2;
  228. //        c=cap2_1-cap1_2;
  229. //        d=cap2_4-cap1_2;
  230. //        LCD_list_num(1,1,a);
  231. //        LCD_list_num(2,1,b);
  232. //        LCD_list_num(3,1,c);
  233. //        LCD_list_num(4,1,d);
  234.         LCD_list_num(1,1,cap1_2);
  235.         LCD_list_num(2,1,cap2_0);
  236.         LCD_list_num(3,1,cap2_1);
  237.         LCD_list_num(4,1,cap2_4);
  238. }
  239. /*---------鍵盤(pán)函數(shù)---------*/
  240. unsigned char getkey(void) //獲得鍵盤(pán)的值
  241. {
  242.         P1REN |= BIT3 + BIT4 + BIT5;
  243.         P1DIR &= ~(BIT3 + BIT4 + BIT5);
  244.         P1OUT |= BIT3 + BIT4 + BIT5; //00111000
  245.         t = (P1IN & 0x38)/8;
  246.         if (t == 0x07) {
  247.                 P1REN |= BIT4 + BIT5;
  248.                 P1REN &= ~BIT3;
  249.                 P1DIR |= BIT3 + BIT4 + BIT5;
  250.                 P1OUT |= BIT4 + BIT5; //00110000
  251.                 P1OUT &= ~BIT3;
  252.                 P1DIR &= ~(BIT4 + BIT5);
  253.                 t = P1IN & 0x038;
  254.                 t = (t/8) / 2 + 7;
  255.                 if (t == 0x0a) {
  256.                         P1REN |= BIT5 + BIT3;
  257.                         P1REN &= ~BIT4;
  258.                         P1DIR |= BIT3 + BIT4 + BIT5;
  259.                         P1OUT |= BIT3+BIT5; //00101000
  260.                         P1OUT &= ~BIT4;
  261.                         P1DIR &= ~(BIT3 + BIT5);
  262.                         t = P1IN & 0x38;
  263.                         t = ((t/8) + 1) / 2 + 10;
  264.                         if (t == 0x0d) {
  265.                                 P1REN |= BIT3 + BIT4;
  266.                                 P1REN &= ~BIT5;
  267.                                 P1DIR |= BIT3 + BIT4 + BIT5;
  268.                                 P1OUT |= BIT3+BIT4; //00011000
  269.                                 P1OUT &= ~BIT5;
  270.                                 P1DIR &= ~(BIT3 + BIT4);
  271.                                 t = P1IN & 0x38;
  272.                                 t =(t/8)+13;
  273.                         }
  274.                 }
  275.         }
  276.         return (t);
  277. }

  278. void show_key()//顯示鍵盤(pán)的值
  279. {
  280.         key_t=getkey();
  281.         if(key_t!=16)
  282.         {
  283.                 _delay_cycles(20000);
  284.                 key=getkey();
  285.                 if(key==key_t)
  286.                 {
  287.                         while(1)
  288.                         {
  289.                                 key_t=getkey();
  290.                                 if(key_t==16)
  291.                                         break;
  292.                         }
  293.                 }
  294.                 else
  295.                 {
  296.                         key=16;
  297.                 }
  298.                 if(key==15)
  299.                         LCD_clear();
  300.                 else
  301.                         LCD_write_char(1, 2,0,num[key]);
  302.                 _delay_cycles(200000);
  303.         }
  304. }

  305. /*------LCD12864基本函數(shù)-------*/
  306. void check_busy()
  307. {
  308.         do
  309.         {
  310.                 LCD_send_byte(READCOMM);
  311.         }
  312.         while(LCD_read_byte()&0x80);
  313. }

  314. void LCD_send_byte(unsigned char a) {
  315.         unsigned char i=0;
  316.         for (i = 8; i > 0; i--) {
  317.                 if (a & (0x01 << (i - 1)))
  318.                         RW_SID_1;
  319.                 else
  320.                         RW_SID_0;
  321.                 _delay_cycles(100);
  322.                 E_CLK_1;
  323.                 _delay_cycles(100);
  324.                 E_CLK_0;
  325.                 _delay_cycles(100);
  326.         }
  327. }

  328. unsigned char LCD_read_byte()
  329. {
  330.         unsigned char i,j,temp1=0;
  331.         _delay_cycles(100);
  332.         P1DIR&=~BIT6;
  333.         RW_SID_1;
  334.         for(j=0;j<2;j++)
  335.         {
  336.                 for(i=0;i<4;i++)
  337.                 {
  338.                         if(P1IN&BIT6) temp1|=0x01;
  339.                         else temp1&=~0x01;
  340.                         temp1<<=1;
  341.                         E_CLK_0;
  342.                         _delay_cycles(100);
  343.                         E_CLK_1;
  344.                         _delay_cycles(100);
  345.                         E_CLK_0;
  346.                         _delay_cycles(100);
  347.                 }
  348.                 for(i=0;i<4;i++)
  349.                 {
  350.                         E_CLK_0;
  351.                         _delay_cycles(100);
  352.                         E_CLK_1;
  353.                         _delay_cycles(100);
  354.                         E_CLK_0;
  355.                         _delay_cycles(100);
  356.                 }
  357.         }
  358.         P1DIR|=BIT6;
  359.         return temp1;
  360. }

  361. unsigned char LCD_read_data()
  362. {
  363.         unsigned char temp;
  364.         LCD_send_byte(READDATA);
  365.         _delay_cycles(1000);
  366.         temp=LCD_read_byte();
  367.         return temp;
  368. }

  369. void LCD_write_com(unsigned char comm) {
  370.         unsigned char temp;
  371.         check_busy();
  372.         _delay_cycles(100);

  373.         LCD_send_byte(SENDCOMM); //MCU to LCD, command

  374.         temp = comm & 0XF0;
  375.         LCD_send_byte(temp); //send high 4 bits

  376.         temp = ((comm & 0X0F) << 4) & 0XF0;
  377.         LCD_send_byte(temp); //send low 4 bits

  378.         _delay_cycles(100);

  379. }

  380. void LCD_write_data(unsigned char lcd_data) //寫(xiě)數(shù)據(jù)
  381. {
  382.         unsigned char temp;
  383.         check_busy();
  384.         _delay_cycles(100);
  385.         LCD_send_byte(SENDDATA);

  386.         temp = lcd_data & 0xf0;
  387.         LCD_send_byte(temp);

  388.         temp = (lcd_data & 0X0F) << 4;
  389.         LCD_send_byte(temp);

  390.         _delay_cycles(100);

  391. }

  392. void LCD_set_addr(unsigned char x, unsigned char y) //設(shè)置顯示位置
  393. {
  394.         if(y%2==0) odd=0;
  395.         else odd=1;
  396.         y=(y+1)/2;
  397.         switch (x) {
  398.         case 1:
  399.                 LCD_write_com(0X7F + y);
  400.                 break;
  401.         case 2:
  402.                 LCD_write_com(0X8F + y);
  403.                 break;
  404.         case 3:
  405.                 LCD_write_com(0X87 + y);
  406.                 break;
  407.         case 4:
  408.                 LCD_write_com(0X97 + y);
  409.                 break;
  410.         default:
  411.                 break;
  412.         }
  413. }

  414. void LCD_write_char(unsigned char x, unsigned char y,unsigned char flag, char data)
  415. {
  416.         LCD_set_addr(x, y);
  417.         if(odd==0)
  418.         {
  419.                 if(flag==1)
  420.                 {
  421.                         LCD_read_data();
  422.                         LCD_set_addr(x,y);
  423.                         LCD_write_data(data);
  424.                 }
  425.         }
  426.         LCD_write_data(data);
  427. }

  428. void LCD_write_string(unsigned char addr_x, unsigned char addr_y, char* str) {
  429.         unsigned char LCD_temp;
  430.         LCD_set_addr(addr_x, addr_y);
  431.         if(odd==0)
  432.         {
  433.                 LCD_read_data();
  434.                 LCD_set_addr(addr_x,addr_y);
  435.                 LCD_write_data(*str++);
  436.         }
  437.         LCD_temp = *str;
  438.         while (LCD_temp != 0x00) {
  439.                 LCD_write_data(LCD_temp);
  440.                 LCD_temp = *(++str);
  441.         }
  442. }

  443. void LCD_list_num(unsigned char x,unsigned char y,long number)
  444. {
  445.         unsigned char pos;
  446.         switch (x)
  447.         {
  448.                 case 1:
  449.                         x=0x7F;
  450.                         break;

  451.                 case 2:
  452.                         x=0x8F;
  453.                         break;

  454.                 case 3:
  455.                         x=0x87;
  456.                         break;

  457.                 case 4:
  458.                         x=0x97;
  459.                         break;
  460.         }
  461.         pos=x+y;
  462.         LCD_write_com(pos);
  463.         if(number<=-100000&&number>-1000000)
  464.         {
  465.                 LCD_write_data(0x30+(-number)/100000);
  466.                 LCD_write_data(0x30+((-number)/10000)%10);
  467.                 LCD_write_data(0x30+((-number)/1000)%10);
  468.                 LCD_write_data(0x30+((-number)/100)%10);
  469.                 LCD_write_data(0x30+((-number)/10)%10);
  470.                 LCD_write_data(0x30+(-number)%10);
  471.         }
  472.         if(number<=-10000&&number>-100000)
  473.         {
  474.                 LCD_write_data(0x30+(-number)/10000);
  475.                 LCD_write_data(0x30+((-number)/1000)%10);
  476.                 LCD_write_data(0x30+((-number)%1000)/100);
  477.                 LCD_write_data(0x30+((-number)%100)/10);
  478.                 LCD_write_data(0x30+(-number)%10);
  479.         }
  480.         if(number<=-1000&&number>-10000)
  481.         {
  482.                 LCD_write_data('-');
  483.                 LCD_write_data(0x30+(-number)/1000);
  484.                 LCD_write_data(0x30+((-number)/100)%10);
  485.                 LCD_write_data(0x30+((-number)%100)/10);
  486.                 LCD_write_data(0x30+(-number)%10);
  487.         }
  488.         if(number<=-100&&number>-1000)
  489.         {
  490.                 LCD_write_data('-');
  491.                 LCD_write_data(0x30+(-number)/100);
  492.                 LCD_write_data(0x30+((-number)/10)%10);
  493.                 LCD_write_data(0x30+(-number)%10);
  494.         }
  495.         if(number<=-10&&number>-100)
  496.         {
  497.                 LCD_write_data('-');
  498.                 LCD_write_data(0x30+(-number)/10);
  499.                 LCD_write_data(0x30+(-number)%10);
  500.         }
  501.         if(number<0&&number>-10)
  502.         {
  503.                 LCD_write_data('-');
  504.                 LCD_write_data(0x30+(-number)%10);
  505.         }
  506.         if(number>=0&&number<10)
  507.         {
  508.                 LCD_write_data(0x30+number%10);
  509.         }
  510.         if(number>=10&&number<100)
  511.         {
  512.                 LCD_write_data(0x30+number/10);
  513.                 LCD_write_data(0x30+number%10);
  514.         }
  515.         if(number>=100&&number<1000)
  516.         {
  517.                 LCD_write_data(0x30+number/100);
  518.                 LCD_write_data(0x30+(number/10)%10);
  519.                 LCD_write_data(0x30+number%10);
  520.         }
  521.         if(number>=1000&&number<10000)
  522.         {
  523.                 LCD_write_data(0x30+number/1000);
  524.                 LCD_write_data(0x30+(number/100)%10);
  525.                 LCD_write_data(0x30+(number%100)/10);
  526.                 LCD_write_data(0x30+number%10);
  527.         }
  528.         if(number>=10000&&number<100000)
  529.         {
  530.                 LCD_write_data(0x30+number/10000);
  531.                 LCD_write_data(0x30+(number/1000)%10);
  532.                 LCD_write_data(0x30+(number%1000)/100);
  533.                 LCD_write_data(0x30+(number%100)/10);
  534.                 LCD_write_data(0x30+number%10);
  535.         }
  536.         if(number>=100000&&number<1000000)
  537.         {
  538.                 LCD_write_data(0x30+number/100000);
  539.                 LCD_write_data(0x30+(number/10000)%10);
  540.                 LCD_write_data(0x30+(number/1000)%10);
  541.                 LCD_write_data(0x30+(number/100)%10);
  542.                 LCD_write_data(0x30+(number/10)%10);
  543.                 LCD_write_data(0x30+number%10);
  544.         }
  545.         if(number>=1000000&&number<10000000)
  546.         {
  547.                 LCD_write_data(0x30+number/1000000);
  548.                 LCD_write_data(0x30+(number/100000)%10);
  549.                 LCD_write_data(0x30+(number/10000)%10);
  550.                 LCD_write_data(0x30+(number/1000)%10);
  551.                 LCD_write_data(0x30+(number/100)%10);
  552.                 LCD_write_data(0x30+(number/10)%10);
  553.                 LCD_write_data(0x30+number%10);
  554.         }
  555. }

  556. void LCD_list_Decimal(unsigned char x,unsigned char y,double Decimal)
  557. {
  558.         unsigned char pos;
  559.         double Deci;
  560.         unsigned long num;
  561.         num=(unsigned long)Decimal;
  562.         Deci=Decimal-num;
  563.         switch (x)
  564.         {
  565.                 case 1:
  566.                         x=0x7F;
  567.                         break;

  568.                 case 2:
  569.                         x=0x8F;
  570.                         break;

  571.                 case 3:
  572.                         x=0x87;
  573.                         break;

  574.                 case 4:
  575.                         x=0x97;
  576.                         break;
  577.         }
  578.         pos=x+y;
  579.         LCD_write_com(pos);
  580.         if(Decimal>=0 && Decimal<1)
  581.         {
  582.                 LCD_write_data(0x30+0);
  583.                 LCD_write_data('.');
  584.                 LCD_write_data(0x30+(int)(Deci*10)%10);
  585.                 LCD_write_data(0x30+(int)(Deci*100)%10);
  586.                 LCD_write_data(0x30+(int)(Deci*1000)%10);
  587.                 LCD_write_data(0x30+(int)(Deci*10000)%10);
  588.                 LCD_write_data(0x30+(int)(Deci*100000)%10);
  589.         }
  590.         if(Decimal>=1 && Decimal<10)
  591.         {
  592.                 LCD_write_data(0x30+num%10);
  593.                 LCD_write_data('.');
  594.                 LCD_write_data(0x30+(int)(Deci*10)%10);
  595.                 LCD_write_data(0x30+(int)(Deci*100)%10);
  596.                 LCD_write_data(0x30+(int)(Deci*1000)%10);
  597.                 LCD_write_data(0x30+(int)(Deci*10000)%10);
  598.                 LCD_write_data(0x30+(int)(Deci*100000)%10);
  599.         }
  600.         if(Decimal>=10 && Decimal<100)
  601.         {
  602.                 LCD_write_data(0x30+num/10);
  603.                 LCD_write_data(0x30+num%10);
  604.                 LCD_write_data('.');
  605.                 LCD_write_data(0x30+(int)(Deci*10)%10);
  606.                 LCD_write_data(0x30+(int)(Deci*100)%10);
  607.                 LCD_write_data(0x30+(int)(Deci*1000)%10);
  608.                 LCD_write_data(0x30+(int)(Deci*10000)%10);
  609.                 LCD_write_data(0x30+(int)(Deci*100000)%10);
  610.         }
  611.         if(Decimal>=100 && Decimal<1000)
  612.         {
  613.                 LCD_write_data(0x30+num/100);
  614.                 LCD_write_data(0x30+num/10%10);
  615.                 LCD_write_data(0x30+num%10);
  616.                 LCD_write_data('.');
  617.                 LCD_write_data(0x30+(int)(Deci*10)%10);
  618.                 LCD_write_data(0x30+(int)(Deci*100)%10);
  619.                 LCD_write_data(0x30+(int)(Deci*1000)%10);
  620.                 LCD_write_data(0x30+(int)(Deci*10000)%10);
  621.                 LCD_write_data(0x30+(int)(Deci*100000)%10);
  622.         }
  623.         if(Decimal>=1000 && Decimal<10000)
  624.         {
  625.                 LCD_write_data(0x30+num/1000);
  626.                 LCD_write_data(0x30+num/100%10);
  627.                 LCD_write_data(0x30+num/10%10);
  628.                 LCD_write_data(0x30+num%10);
  629.                 LCD_write_data('.');
  630.                 LCD_write_data(0x30+(int)(Deci*10)%10);
  631.                 LCD_write_data(0x30+(int)(Deci*100)%10);
  632.                 LCD_write_data(0x30+(int)(Deci*1000)%10);
  633.                 LCD_write_data(0x30+(int)(Deci*10000)%10);
  634.                 LCD_write_data(0x30+(int)(Deci*100000)%10);
  635.         }
  636. }

  637. void LCD_init(void) {
  638.         P1DIR |= BIT6 + BIT7;
  639.         _delay_cycles(2000);
  640.         LCD_write_com(0x30); //一次送8位數(shù)據(jù)
  641.         LCD_write_com(0x0C); //整體顯示,游標(biāo)off,游標(biāo)位置off
  642.         LCD_write_com(0x01); //清DDRAM
  643.         LCD_write_com(0x02); //DDRAM地址歸位
  644.         LCD_write_com(0x80); //設(shè)定DDRAM 7位地址000,0000到地址計(jì)數(shù)器AC
  645. }

  646. void LCD_clear(void){
  647.         LCD_write_com(0x01);
  648. }

  649. /*-----LCD12864繪圖函數(shù)-------*/
  650. void GUI_clear()  //繪圖清屏函數(shù) (清屏指令在畫(huà)圖時(shí)不能使用)
  651. {
  652.         unsigned char i,j,k;
  653.         LCD_write_com(EXTEND_SET);//擴(kuò)展指令集,8位數(shù)據(jù)傳輸,繪圖開(kāi)
  654.         LCD_write_com(DRAW_OFF);        //關(guān)閉繪圖顯示
  655.         for(i=0;i<2;i++)  //分上下兩屏寫(xiě)
  656.         {
  657.                 for(j=0;j<32;j++)
  658.                 {
  659.                         LCD_write_com(0x80+j);        //寫(xiě)y坐標(biāo)
  660.                         _delay_cycles(10);
  661.                         if(i==0)//寫(xiě)x坐標(biāo)
  662.                         {
  663.                                 LCD_write_com(0x80);
  664.                                 _delay_cycles(100);
  665.                         }
  666.                         else
  667.                         {
  668.                                 LCD_write_com(0x88);
  669.                                 _delay_cycles(100);
  670.                         }
  671.                         for(k=0;k<16;k++)  //寫(xiě)一整行數(shù)據(jù)
  672.                         {
  673.                                 LCD_write_data(0x00);  //寫(xiě)高字節(jié)
  674.                                 LCD_write_data(0x00);  //寫(xiě)低字節(jié)
  675.                                 _delay_cycles(100);
  676.                         }
  677.                 }
  678.         }
  679.         LCD_write_com(DRAW_ON);        //打開(kāi)繪圖顯示
  680.         LCD_write_com(BASIC_SET);//打開(kāi)基本指令集
  681. }

  682. void GUI_draw_full_picture(const unsigned char *dat)//畫(huà)滿屏圖片,橫向取模
  683. {
  684.            unsigned char i,j,k;
  685.            unsigned char GDRAMAddrX=0x80;
  686.            unsigned char GDRAMAddrY=0x80;
  687.            for(i=0;i<2;i++)
  688.            {
  689.                            for(j=0;j<32;j++)
  690.                         {
  691.                                 for(k=0;k<8;k++)
  692.                                 {
  693.                                         LCD_write_com(DRAW_OFF);
  694.                                         LCD_write_com(GDRAMAddrY+j);
  695.                                         LCD_write_com(GDRAMAddrX+k);
  696.                                         LCD_write_data(*dat++);
  697.                                         LCD_write_data(*dat++);
  698.                                 }
  699.                         }
  700.                         GDRAMAddrX=0x88;
  701.            }
  702.            LCD_write_com(DRAW_ON);
  703.            LCD_write_com(BASIC_SET);
  704. }

  705. /*
  706. void LCD_set_dot(unsigned char x,unsigned char y)//打點(diǎn)程序
  707. {
  708.          unsigned char x_byte,x_bit;  //確定在坐標(biāo)的那一字節(jié)哪一位
  709.          unsigned char y_byte,y_bit;  //確定在坐標(biāo)的哪一屏哪一行
  710.          unsigned char temph,templ;         //定義兩個(gè)臨時(shí)變量,用于存放讀出來(lái)的數(shù)據(jù)
  711.          LCD_write_com(EXTEND_SET);        //擴(kuò)展指令集
  712.          LCD_write_com(DRAW_OFF);//繪圖顯示關(guān)閉
  713.          x_byte=x/16;
  714.          x_bit=x%16;
  715.          y_byte=y/32;
  716.          y_bit=y%32;
  717.          LCD_write_com(EXTEND_SET);
  718.          LCD_write_com(0x80+y_bit);
  719.          LCD_write_com(0x80+x_byte+8*y_byte);
  720.          LCD_read_byte();
  721.          temph=LCD_read_byte();
  722.          templ=LCD_read_byte();
  723.          _delay_cycles(10);
  724.          LCD_write_com(0x80+y_bit);
  725.          LCD_write_com(0x80+x_byte+8*y_byte);
  726.          _delay_cycles(10);
  727.          if(x_bit<8)
  728.          {
  729.                  LCD_write_data(temph|(0x01<<(7-x_bit)));
  730.                 LCD_write_data(templ);
  731.          }
  732.          else
  733.          {
  734.                  LCD_write_data(temph);
  735.                 LCD_write_data(templ|(0x01<<(15-x_bit)));
  736.          }
  737.          LCD_write_com(DRAW_ON);
  738.          LCD_write_com(BASIC_SET);
  739. }
  740. */
復(fù)制代碼


Sound_positioning_system1_0.rar

39.16 KB, 下載次數(shù): 10, 下載積分: 黑幣 -5






歡迎光臨 (http://www.izizhuan.cn/bbs/) Powered by Discuz! X3.1
国产精品成人a在线观看| 亚洲欧美日本一区二区| 中文字幕资源在线观看| 国产av无码专区亚洲av毛网站| 91精品国自产| 很黄很黄的网站免费的| 免费大片黄在线| 精品日产乱码久久久久久仙踪林| 影视一区二区| 久久先锋影音av鲁色资源网| 欧美福利视频导航| 性视频1819p久久| 中文字幕人成一区| 亚洲精品国产一区黑色丝袜| 亚洲精品911| 影院免费视频| 成人在线视频www| 久久人人97超碰国产公开结果| 亚洲视频精选在线| 在线午夜精品自拍| 欧美日韩在线观看一区二区三区| 日本美女久久久| 一本色道久久综合熟妇| 国产精品三级a三级三级午夜| 亚洲淫成人影院| 狠狠88综合久久久久综合网| 中文字幕欧美激情一区| 日韩黄在线观看| 国产亚洲情侣一区二区无| 下面一进一出好爽视频| 88av在线视频| 2020中文字幕在线播放| 日韩三级久久| 久久成人麻豆午夜电影| 亚洲一级二级在线| 欧美国产在线视频| 男人添女人下部视频免费| 啪啪一区二区三区| 精品一区二区三区在线成人| 日本a在线播放| 成人中文视频| 中文字幕av免费专区久久| 亚洲精品一区二区在线| 久久精品99久久| 亚洲综合伊人久久| 中文字幕91爱爱| 亚州福利视频| 97色婷婷成人综合在线观看| 麻豆成人91精品二区三区| 在线视频你懂得一区| 日本道色综合久久影院| 黄色片视频在线播放| 亚洲精品午夜国产va久久成人| 黄视频在线免费| 电影亚洲精品噜噜在线观看| 美腿丝袜亚洲一区| 欧美视频一区在线观看| 51色欧美片视频在线观看| 免费一级特黄特色毛片久久看| 久久精品亚洲无码| 免费黄色网网址| 久久久免费人体| 国内精品国产三级国产a久久| 日韩视频在线永久播放| 牛人盗摄一区二区三区视频| 这里只有久久精品| 99在线精品视频免费观看20| 日中文字幕在线| 亚洲精品电影| 一本大道久久a久久综合| 日韩美女视频免费看| 超碰97人人射妻| 亚洲午夜激情视频| 国产免费av高清在线| 欧美高清不卡| 色天天综合色天天久久| 91成人免费观看| 国产色视频一区二区三区qq号| 中文字幕专区| 黄色软件视频在线观看| 理论片日本一区| 欧美日韩日日摸| 精品久久蜜桃| 人妻少妇一区二区| 成品网站w灬+源码1| www一区二区三区| 99视频在线观看一区三区| 尤物精品国产第一福利三区| 日韩a级黄色片| 成人免费一区二区三区| 九九热视频在线观看| 国产精品99久久| 一本色道久久加勒比精品| 高清不卡日本v二区在线| 色屁屁草草影院ccyy.com| 毛片免费视频| 香蕉久久精品日日躁夜夜躁| 亚洲欧美日本在线| 国产精品va在线播放我和闺蜜| 久久久高清视频| 91视频论坛| 国产一区调教| 亚洲色图欧美偷拍| 亚洲片av在线| 国模无码视频一区二区三区| 成人小说亚洲一区二区三区| 成人免费看黄| 久久理论电影网| 国语自产在线不卡| av网页在线观看| 成人免费网址在线| 久久91精品| 欧美性色19p| 日本一区二区三区视频在线观看| 国产极品美女高潮无套嗷嗷叫酒店| eeuss一区| 校园春色另类视频| 亚洲一二三专区| 极品校花啪啪激情久久| 国产午夜精品久久久久| jizz性欧美10| 不卡在线观看av| 欧美日韩国产第一页| 极品白嫩少妇无套内谢| 麻豆视频官网| 激情综合网址| 中文字幕亚洲自拍| 久久久久久久久久久久91| 国产精品视频流白浆免费视频 | 日韩欧美成人一区二区| 激情图片qvod| 天天综合网在线| 免费毛片在线播放免费 | 欧美日韩国产专区| 狠狠操一区二区三区| 国产在线日韩| 亚洲精品一区二区久| 佐山爱在线视频| 成人免费一区二区三区| 欧美伦理91| 亚洲免费在线视频一区 二区| 国产精品国内视频| 日本系列第一页| 一区二区乱码| 久久久久国产成人精品亚洲午夜| 国产视频一区二区三区四区| 日韩精品国产一区二区| 自拍偷拍欧美视频| а天堂中文最新一区二区三区| 一级特黄大欧美久久久| 一区二区三区视频在线播放| 中文字幕在线观看国产| 亚洲91网站| 亚洲国产精品久久久久秋霞影院| 天天干天天色天天爽| 人人妻人人爽人人澡人人精品| 四虎精品在线观看| 中国av一区二区三区| 天堂一区二区三区| 一二区在线观看| 99re8这里有精品热视频8在线| 91蜜桃在线免费视频| 狠狠色综合欧美激情| 国产成人精品片| 欧美成人家庭影院| 中文字幕欧美国产| 欧美黄色www| 国产精品第100页| 亚洲欧美综合另类| 久久精品嫩草影院| 日韩欧美国产成人| 99视频在线视频| 免费吸乳羞羞网站视频| 老司机精品视频网站| 日韩亚洲第一页| 国产传媒免费在线观看| av男人的天堂在线| 成人免费一区二区三区在线观看| 精品国产日本| 最新版天堂资源中文官网| 国产一区二区精品久| 久久电影一区二区| 欧美一区二区三区粗大| 亚洲一级少妇| 一区二区三区在线视频播放| 波多野结衣家庭教师在线| 久久国产综合视频| 日韩高清在线电影| 久久免费国产视频| 亚洲字幕av一区二区三区四区| 电影在线观看一区二区| 日韩视频中午一区| 伊人成人免费视频| av片在线观看免费| 成人欧美一区二区三区黑人麻豆| 久久这里只有精品23| 夜夜未满十八勿进的爽爽影视| 看电视剧不卡顿的网站| 国产精品男人爽免费视频1| a天堂中文在线观看| 黑色丝袜福利片av久久| 久久久精品免费视频| 精品在线观看一区| 国产免费区一区二区三视频免费 | 男插女视频网站| 能在线观看av网站| 国产精品色在线观看| 午夜精品电影在线观看| 女人18毛片毛片毛片毛片区二| av资源在线观看免费高清| 粉嫩av一区二区三区免费野| 青青青免费在线| 亚洲精品男人| 久久先锋影音av鲁色资源网| 欧美视频在线观看视频| 伊人久久青青草| 国产亚洲综合av| 六月丁香婷婷激情| 色婷婷av金发美女在线播放| 国产精品青草久久| 国产在线拍揄自揄拍无码| 日本电影中文字幕| 国产视频一区在线观看一区免费| 精品一区二区免费| 亚洲一区二区三区精品动漫| 少妇人妻一区二区| 日韩电影在线免费观看| 日本国产一区二区三区| 天堂网在线资源| 欧美色图五月天| 91精品国产91久久久久久久久| www成人啪啪18软件| 欧美成人一级| 91超碰这里只有精品国产| 国产xxxxxxxxx| 国产精品久久久久久吹潮| 日韩一区二区免费在线观看| 亚洲色图14p| 精品视频二区三区| 久久精品国产精品亚洲红杏| 日韩精品最新在线观看| 免费大片黄在线观看| 中文字幕成人网| 午夜精品区一区二区三| 人人超碰在线| 在线视频亚洲欧美中文| 久久久精品国产网站| 亚洲美女福利视频| 欧美日本一区| 欧美日韩亚洲综合一区二区三区激情在线| 欧美另类色图| 久久久久久久免费视频了| 国产亚洲情侣一区二区无| 黄色三级电影网站| 欧美久久一区二区三区| 欧美成人免费一级人片100| 午夜精品小视频| 中文字幕午夜精品一区二区三区 | 一二三四中文字幕| 在线播放三级网站| 99re热这里只有精品免费视频| 成人午夜视频免费在线观看| 青青操视频在线| 婷婷久久综合九色综合绿巨人 | 欧美日韩黄色| 97免费在线视频| 亚洲国产精品一| 亚洲人成高清| 99一区二区三区| 少妇av一区二区| 丁香亚洲综合激情啪啪综合| 亚洲自拍的二区三区| 国产va在线观看| 国产精品私人影院| 男人添女荫道口图片| 黄色在线观看视频网站| 欧美一区二区三区啪啪| 亚洲熟女毛茸茸| 波多野结衣一区二区三区免费视频| 亚洲欧美日韩精品久久亚洲区| 国产视频www| 国产农村妇女精品一二区| 精品久久久久久综合日本| 美乳美女在线观看香蕉| 高潮精品一区videoshd| 中文字幕一区久久| 美足av综合网| 亚洲第一国产精品| 国产成人无码一区二区三区在线| 成人自拍视频| 国产一区二区丝袜| 一个人看的www视频免费观看 | www.香蕉视频| 亚洲美女黄网| 久久99蜜桃综合影院免费观看| 色视频免费版高清在线观看| 91美女蜜桃在线| av在线无限看| 国产一二在线播放| 亚洲视频一区二区三区| jizz欧美性20| 亚洲成人日韩| 精品在线视频一区二区三区| 涩涩漫画在线观看| 亚洲资源中文字幕| 久草视频在线资源站| 久久在线视频免费观看| 91久色国产| 免费男女羞羞的视频网站中文版 | 亚洲欧洲在线观看av| 国产一级免费大片| 国产伦子伦对白在线播放观看| 亚洲性69xxxbbb| 精品人妻aV中文字幕乱码色欲| 日韩电影在线一区二区三区| 超级碰在线观看| 羞羞的网站在线观看| 亚洲视频在线观看| 亚洲精品一区二区三区不卡| 精品在线你懂的| 黑人糟蹋人妻hd中文字幕| 高清一区二区三区av| 91精品国产99| 五十路亲子中出在线观看| 亚洲欧美在线另类| 色91精品久久久久久久久| 欧美91在线| 成人xxxxx| 韩国版免费三体| 欧美视频在线不卡| 四虎成人精品永久免费av| 欧美精品激情| 中文字幕av日韩精品| 日本中文字幕在线播放| 亚洲精品视频免费| 国产视频你懂的| 亚洲免费三区一区二区| 秋霞网一区二区三区| 成人a'v在线播放| 91福利入口| 久操视频在线| 国产亚洲xxx| 中文字幕42页丝袜| 国产精品美女久久久久aⅴ国产馆| 久久久久久久黄色| 国产尤物久久久| 乱一区二区三区在线播放| youjizz在线播放| 亚洲午夜精品视频| 亚洲国产精品久久卡一| 亚洲婷婷国产精品电影人久久| 国产精品无码一区二区三区| 日韩国产一区二区| 亚洲精品中字| 日韩一级特黄| 亚洲xxxx做受欧美| 午夜影院观看视频免费| 欧美一级免费观看| 肥臀熟女一区二区三区| 91网站在线观看视频| 成人久久久久久久久| 国产精品一区二区免费福利视频| 国产精品老女人精品视频| 日本二区视频| 九九热这里只有精品免费看| 免费吸乳羞羞网站视频| 欧美亚洲图片小说| 国产男男gay体育生白袜| 亚洲欧美成aⅴ人在线观看 | 成人欧美亚洲| 欧美精品免费视频| 国产精品自偷自拍| 久久久亚洲高清| 国产人妖在线观看| 婷婷亚洲最大| 少妇高潮毛片色欲ava片| www.久久久.com| 在线看成人av电影| 视频在线日韩| 999热视频在线观看| 国产裸舞福利在线视频合集| 在线观看欧美www| 78国产伦精品一区二区三区| 色一区在线观看| 99riav国产| 国产美女在线观看一区| 国产精品 欧美激情| 奇米综合一区二区三区精品视频| 91香蕉国产线在线观看| 日产午夜精品一线二线三线| 日本不卡一区二区在线观看| 欧美激情极品| 在线视频不卡一区二区| 色老头在线一区二区三区| 99国产视频在线| 99久久精品免费观看国产| 欧美在线观看网站| 中文字幕视频在线| 国产成人精品日本亚洲专区61| 午夜视频在线观看韩国|