久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1498|回復: 2
收起左側

單片機ADC程序為啥不工作?

[復制鏈接]
ID:600683 發表于 2019-8-22 12:01 | 顯示全部樓層 |閱讀模式
  1. #include <reg51.h>
  2. #include <intrins.h>
  3. #define U8 unsigned char
  4. #define U16 unsigned int
  5. #define LCD_DATA P0
  6. U8 getdata;
  7. U8 X1,X2,X3,X4;
  8. U8 f;
  9. sbit OE=P3^7;
  10. sbit star=P3^6;
  11. sbit eoc=P3^3;
  12. sbit ALE=P2^6;
  13. sbit stoid=P3^5;
  14. sbit adda=P2^3;
  15. sbit addb=P2^4;
  16. sbit addc=P2^5;
  17. sbit ksad=P3^0;
  18. sbit LCD_RS=P2^0;
  19. sbit LCD_RW=P2^1;
  20. sbit LCD_EN=P2^2;
  21. sfr aaa=0x80;
  22. U8 code tab[] = {0X30,0X31,0X32,0X33,0X34,0X35,0X36,0X37,0X38,0X39};
  23. U8 dispbuf[4]={0,0,0,0};
  24. //void XSQ(void);
  25. void delay(unsigned char t) {
  26.     unsigned char i;
  27.     while(t--)
  28.         for(i = 200; i > 0; i--);
  29. }
  30. void LCD_write_instruction(unsigned char LCD_instruction) { //寫指令到LCD
  31.     LCD_RS = 0;
  32.     LCD_RW = 0;
  33.     LCD_DATA = LCD_instruction;
  34.     LCD_EN = 1;
  35.     _nop_();
  36.     delay(1);
  37.     LCD_EN = 0;
  38.     //delay(10);
  39. }
  40. void LCD_write_data(unsigned char LCD_data) {         //輸出一個字節數據到LCD
  41.     LCD_RS = 1;
  42.     LCD_RW = 0;
  43.     LCD_DATA = LCD_data;
  44.     LCD_EN = 1;
  45.      delay(1);
  46.     _nop_();
  47.     LCD_EN = 0;
  48.     delay(1);
  49. }
  50. void LCD_set_position(unsigned char x) {              //LCD光標定位到x處
  51.     LCD_write_instruction(0x80|x);
  52. }
  53. void LCD_printc(unsigned char lcd_data) {             //輸出一個字符到LCD
  54.     LCD_write_data(lcd_data);
  55.   }
  56. void LCD_prints(unsigned char *lcd_string) {           //輸出一個字符串到 LCD
  57.     unsigned char i = 0;
  58.     while(lcd_string[i] != 0x00) {
  59.         LCD_write_data(lcd_string[i]);
  60.         i++;
  61.     }
  62. }
  63. void LCD_initial(void) {                           //初始化 LCD
  64.     LCD_write_instruction(0x38);
  65.     LCD_write_instruction(0x0c);
  66.     LCD_write_instruction(0x06);
  67.     LCD_write_instruction(0x01);
  68. }
  69. void XSQ(void)
  70. {   
  71.      LCD_set_position(0x80);
  72.                            
  73.    while(1) {   
  74.       U8 temp1,temp2,temp3,temp4;
  75.       LCD_set_position(0x80);
  76.    LCD_prints(" NOW:   OF");
  77.                                LCD_set_position(0xC0); //LCD換行顯示
  78.                               LCD_prints("Number:");   
  79.    
  80.                               // X1=X2=X3=X4=0;
  81.    LCD_initial();  
  82.    temp1=tab[dispbuf[0]];
  83.    temp2=tab[dispbuf[1]];
  84.    temp3=tab[dispbuf[2]];
  85.    temp4=tab[dispbuf[3]];
  86.    LCD_set_position(0xc9); //LCD換行顯示
  87.             LCD_printc(temp1);
  88.    LCD_set_position(0xcA); //LCD換行顯示
  89.             LCD_printc(temp2);
  90.    LCD_set_position(0xCB); //LCD換行顯示
  91.             LCD_printc(temp3);  
  92.             LCD_set_position(0xCC); //LCD換行顯示
  93.             LCD_printc(temp4);
  94.       }  
  95. }
  96. void InitTimer1(void)
  97. {  TMOD = 0x20;
  98.     TH1 = 0xFE;
  99.     TL1 = 0xFE;
  100.     EA = 1;
  101.     ET1 = 1;
  102.    //if(ksad==0){
  103.    // TR1 = 0;// }else{TR1=0;}
  104.   }

  105. void main(void)
  106. {adda=0;addb=1;addc=0;
  107.    InitTimer1();
  108.    LCD_initial();         
  109. TR1=1;   
  110.    while(1){
  111. OE=0;
  112. star=0;
  113.   star=1;
  114.           star=0;
  115. while(eoc==0);
  116.         { OE=1;
  117.   delay(1);
  118. getdata=P1;
  119.           OE=0;
  120.           dispbuf[0]=getdata/1000;
  121. dispbuf[1]=getdata%1000/100;
  122. dispbuf[2]=getdata%1000%100/10;
  123. dispbuf[3]=getdata%1000%100%10;}
  124.           //TR1=0 // aaa=getdata;
  125.          XSQ( );      // f=(5/256)*aaa*1000 ;
  126.                              LCD_set_position(0x80);
  127.    LCD_prints(" NOW:   OF");
  128.                                LCD_set_position(0xC0); //LCD換行顯示
  129.                               LCD_prints("Number:");  }
  130.      }
  131. void Timer1Interrupt(void) interrupt 3
  132. {InitTimer1();  
  133.      ALE=~ALE;//add your code here!
  134.      //OE=~OE;
  135.      //delay(8);
  136.      //eoc=~eoc;
  137. }
復制代碼
回復

使用道具 舉報

ID:155507 發表于 2019-8-22 22:19 | 顯示全部樓層
給你改了,對比一下就知道哪里錯了。

  1. #include <reg51.h>
  2. #include <intrins.h>
  3. #define U8 unsigned char
  4. #define U16 unsigned int
  5. #define LCD_DATA P0
  6. U8 getdata;
  7. U8 X1,X2,X3,X4;
  8. U8 f;
  9. sbit OE=P3^7;
  10. sbit star=P3^6;
  11. sbit eoc=P3^3;
  12. sbit ALE=P2^6;
  13. sbit stoid=P3^5;
  14. sbit adda=P2^3;
  15. sbit addb=P2^4;
  16. sbit addc=P2^5;
  17. sbit ksad=P3^0;
  18. sbit LCD_RS=P2^0;
  19. sbit LCD_RW=P2^1;
  20. sbit LCD_EN=P2^2;
  21. sfr aaa=0x80;
  22. U8 code tab[] = {0X30,0X31,0X32,0X33,0X34,0X35,0X36,0X37,0X38,0X39};
  23. U8 dispbuf[4]={0,0,0,0};
  24. //void XSQ(void);
  25. void delay(unsigned char t) {
  26.         unsigned char i;
  27.         while(t--)
  28.         for(i = 200; i > 0; i--);
  29. }
  30. void LCD_write_instruction(unsigned char LCD_instruction) { //寫指令到LCD
  31.         LCD_RS = 0;
  32.         LCD_RW = 0;
  33.         LCD_DATA = LCD_instruction;
  34.         LCD_EN = 1;
  35.         _nop_();
  36.         delay(1);
  37.         LCD_EN = 0;
  38.         //delay(10);
  39. }
  40. void LCD_write_data(unsigned char LCD_data) {         //輸出一個字節數據到LCD
  41.         LCD_RS = 1;
  42.         LCD_RW = 0;
  43.         LCD_DATA = LCD_data;
  44.         LCD_EN = 1;
  45.         delay(1);
  46.         _nop_();
  47.         LCD_EN = 0;
  48.         delay(1);
  49. }
  50. void LCD_set_position(unsigned char x) {              //LCD光標定位到x處
  51.         LCD_write_instruction(0x80|x);
  52. }
  53. void LCD_printc(unsigned char lcd_data) {             //輸出一個字符到LCD
  54.         LCD_write_data(lcd_data);
  55. }
  56. void LCD_prints(unsigned char *lcd_string) {           //輸出一個字符串到 LCD
  57.         unsigned char i = 0;
  58.         while(lcd_string[i] != 0x00) {
  59.                 LCD_write_data(lcd_string[i]);
  60.                 i++;
  61.         }
  62. }
  63. void LCD_initial(void) {                           //初始化 LCD
  64.         LCD_write_instruction(0x38);
  65.         LCD_write_instruction(0x0c);
  66.         LCD_write_instruction(0x06);
  67.         LCD_write_instruction(0x01);
  68. }
  69. void XSQ(void)
  70. {   
  71.         LCD_set_position(0x80);
  72.        
  73.         //while(1)
  74.                 {   
  75.                 U8 temp1,temp2,temp3,temp4;
  76.                 LCD_set_position(0x80);
  77.                 LCD_prints(" NOW:   OF");
  78.                 LCD_set_position(0xC0); //LCD換行顯示
  79.                 LCD_prints("Number:");   
  80.                
  81.                 // X1=X2=X3=X4=0;
  82.                 //LCD_initial();  
  83.                 temp1=tab[dispbuf[0]];
  84.                 temp2=tab[dispbuf[1]];
  85.                 temp3=tab[dispbuf[2]];
  86.                 temp4=tab[dispbuf[3]];
  87.                 LCD_set_position(0xc9); //LCD換行顯示
  88.                 LCD_printc(temp1);
  89.                 LCD_set_position(0xcA); //LCD換行顯示
  90.                 LCD_printc(temp2);
  91.                 LCD_set_position(0xCB); //LCD換行顯示
  92.                 LCD_printc(temp3);  
  93.                 LCD_set_position(0xCC); //LCD換行顯示
  94.                 LCD_printc(temp4);
  95.         }  
  96. }
  97. void InitTimer1(void)
  98. {
  99.         TMOD = 0x20;
  100.         TH1 = 0xFE;
  101.         TL1 = 0xFE;
  102.         EA = 1;
  103.         ET1 = 1;
  104.         //if(ksad==0){
  105.         // TR1 = 0;// }else{TR1=0;}
  106. }

  107. void main(void)
  108. {
  109.         adda=0;addb=1;addc=0;
  110.         InitTimer1();
  111.         LCD_initial();         
  112.         TR1=1;   
  113.         while(1){
  114.                 OE=0;
  115.                 star=0;
  116.                 star=1;
  117.                 star=0;
  118.                 while(eoc==0);
  119.                 {
  120.                     OE=1;
  121.                         delay(1);
  122.                         getdata=P1;
  123.                         OE=0;
  124.                         dispbuf[0]=getdata/1000;
  125.                         dispbuf[1]=getdata%1000/100;
  126.                         dispbuf[2]=getdata%1000%100/10;
  127.                         dispbuf[3]=getdata%1000%100%10;
  128.                 }
  129.                 //TR1=0 // aaa=getdata;
  130.                 XSQ( );      // f=(5/256)*aaa*1000 ;
  131.                 LCD_set_position(0x80);
  132.                 LCD_prints(" NOW:   OF");
  133.                 LCD_set_position(0xC0); //LCD換行顯示
  134.                 LCD_prints("Number:");  
  135.         }
  136. }
  137. void Timer1Interrupt(void) interrupt 3
  138. {
  139.         //InitTimer1();  
  140.         ALE=~ALE;//add your code here!
  141.         //OE=~OE;
  142.         //delay(8);
  143.         //eoc=~eoc;
  144. }

復制代碼
回復

使用道具 舉報

ID:600683 發表于 2019-8-29 10:21 | 顯示全部樓層
謝謝,多道循環了。ADD還是不工作
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品久| 欧美一区二区在线 | 久久福利网站 | 久久久久久综合 | a欧美| 黄色片在线观看网址 | 亚洲成人精品 | 国产高清在线视频 | 久久综合伊人一区二区三 | 96久久久久久 | 欧美精品一区二区蜜桃 | 999热精品视频 | 久久久久亚洲 | 久久69精品久久久久久国产越南 | 中文字幕免费视频 | 亚洲欧洲精品一区 | 一区二区三区国产在线观看 | 日韩不卡一二区 | 国产精品一区久久久 | 欧美中文在线 | 国产精品久久久久久久久久久久久 | 亚洲午夜精品视频 | 成人久久久 | 欧美精品一区二区三区在线播放 | 欧美国产精品一区二区三区 | 国产日韩一区二区三区 | 青青久草 | 国产精品日韩一区 | 网站国产 | 国产精品一区二区在线观看 | 日本高清中文字幕 | 成人在线观看黄 | 中文字幕一区在线 | 国产三级一区二区三区 | 久久精品欧美一区二区三区麻豆 | www.久久久久久久久久久 | 久久av资源网 | 激情久久网 | 性国产xxxx乳高跟 | 五月婷六月丁香 | 久久毛片 |