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

標題: 液晶顯示的單片機ADC0832數字電壓表 [打印本頁]

作者: 718973898    時間: 2020-12-13 23:26
標題: 液晶顯示的單片機ADC0832數字電壓表
一、實驗要求
利用51單片機設計一個數字電壓表,實現從模擬信號輸入到數字信號輸出的基本功能,具體要求如下:
1)通過滑動變阻器改變輸入電壓;
2)利用AD轉換器ADC0832將輸入電壓轉換為數字信號送到單片機;
3)在LCD上顯示輸入電壓值,保留三位小數;
4)在電壓測量值后面顯示單位“V”

Using C51 MCU to design a digital voltmeter achieve from the analog signal input to the basic functions of digital signal output.
(1) Change the input voltage by sliding the rheostat;
(2) Using the AD converter ADC0832 to convert the input voltage to a digital signal to the MCU;
(3) The input voltage value is displayed on the LCD, leaving three decimal places;
(4) After the voltage measurement value shows the unit "V".



二、實驗任務
本系統(tǒng)以51單片機作為控制核心,實現LCD顯示的控制、AD轉換器的啟動與數據讀入,并協(xié)調和控制各個模塊的工作。


The system uses C51 MCU as the control core, to achieve LCD display control, AD converter start and data read, and coordinate and control the work of each module


四、硬件電路


五、實驗程序
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #include<string.h>

  4. typedef unsigned char u8;
  5. typedef unsigned int u16;

  6. sbit CS=P1^0; //片選線
  7. sbit CLK=P1^1; //時鐘線
  8. sbit DIO=P1^2; //數據線


  9. sbit RS = P2^0; //寄存器選擇
  10. sbit RW = P2^1; //讀寫控制
  11. sbit E = P2^2; //使能控制

  12. #define LCD P0

  13. u8 BUFF[] = " VOLTAGE:
  14. 0.00V";


  15. void delay_4us();
  16. void delay_ms(u16 i);
  17. bit Read_LCD_Busy_Flag();
  18. void Write_LCD_Command(u8
  19. cmd);
  20. void Write_LCD_Data(u8 dat);
  21. void LCD_Show_String(u8 r,u8
  22. c,char *s);
  23. void LCD_Init();
  24. u8 Get_AD_Result1();

  25. void delay_4us()
  26. {
  27.         _nop_();
  28.         _nop_();
  29.         _nop_();
  30.         _nop_();
  31. }


  32. void delay_ms(u16 i)
  33. {
  34.         u16 t;
  35.         while(i--)
  36.         {
  37.                 for(t=0;t<120;t++)
  38.                 {
  39.                         ;
  40.                 }
  41.         }
  42. }
  43. //讀液晶屏是否繁忙
  44. bit Read_LCD_Busy_Flag()
  45. {
  46.         u8 result;
  47.         LCD = 0xFF;
  48.         RS = 0;
  49.         RW = 1;
  50.         E = 1;
  51.         delay_4us();
  52.         result = P0;
  53.         E = 0;
  54.         return(result & 0x80)?1:0;
  55. }
  56. //寫液晶屏命令
  57. void Write_LCD_Command(u8
  58. cmd)
  59. {
  60.         while(Read_LCD_Busy_Flag());
  61.         RS = 0;
  62.         RW = 0;
  63.         E = 0;
  64.         _nop_();
  65.         _nop_();
  66.         LCD = cmd;
  67.         delay_4us();
  68.         E = 1;
  69.         delay_4us();
  70.         E = 0;
  71. }
  72. //寫液晶屏數據
  73. void Write_LCD_Data(u8 dat)
  74. {
  75.         while(Read_LCD_Busy_Flag());
  76.         RS = 1;
  77.         RW = 0;
  78.         E = 0;
  79.         LCD = dat;
  80.         delay_4us();
  81.         E = 1;
  82.         delay_4us();
  83.         E = 0;
  84. }
  85. //液晶屏顯示函數
  86. void LCD_Show_String(u8 r,u8
  87. c,char *s)
  88. {
  89.         u8 i=0;
  90.         u8 code DDRAM[] =
  91. {0x80,0xC0};
  92.         Write_LCD_Command(DDRA
  93. M[r] | c);
  94.         while(s[ i] && i < 16)
  95.         {
  96.                 Write_LCD_Data(s[i++]);
  97.         }
  98. }
  99. //液晶屏初始化
  100. void LCD_Init()
  101. {
  102.         Write_LCD_Command(0x38);
  103.         delay_ms(1);
  104.         Write_LCD_Command(0x0C);
  105.         delay_ms(1);
  106.         Write_LCD_Command(0x06);
  107.         delay_ms(1);
  108.         Write_LCD_Command(0x01);
  109.         delay_ms(1);
  110. }
  111. //獲取AD轉換結果
  112. u8 Get_AD_Result1()
  113. {
  114.         u8 i,dat1=0,dat2=0;
  115.         CS=0;
  116.         CLK=0;
  117.         DIO=1;
  118.         _nop_();
  119.         _nop_();
  120.         CLK=1;
  121.         _nop_();
  122.         _nop_();
  123.         CLK=0;
  124.         DIO=1;
  125.         _nop_();
  126.         _nop_();
  127.         CLK=1;
  128.         _nop_();
  129.         _nop_();
  130.         CLK=0;
  131.         DIO=0;
  132.         _nop_();
  133.         _nop_();
  134.         CLK=1;
  135.         _nop_();
  136.         _nop_();
  137.         CLK=0;
  138.         DIO=1;
  139.         _nop_();
  140.         _nop_();
  141.         for(i=0;i<8;i++)
  142.         {
  143.                 CLK=1;
  144.                 _nop_();
  145.                 _nop_();
  146.                 CLK=0;
  147.                 _nop_();
  148.                 _nop_();
  149.                 dat1=(dat1<<1)|DIO;
  150.         }
  151.         for(i=0;i<8;i++)
  152.         {
  153.                 dat2=dat2|((u8)DIO<<i);
  154.                 CLK=1;
  155.                 _nop_();
  156.                 _nop_();
  157.                 CLK=0;
  158.                 _nop_();
  159.                 _nop_();
  160.         }
  161.         CS=1;
  162.         return(dat1==dat2)?dat1:0x00;
  163. }



  164. void main()
  165. {
  166.         u8 AD;
  167.         u16 d;
  168.         LCD_Init();

  169.         while(1)
  170.         {
  171.                 AD=Get_AD_Result1();//獲取AD轉換值
  172.                 d=AD*500.0*2/511;
  173.                 BUFF[11]=(d/100) + '0';
  174.                 BUFF[13]=((d/10)%10) +
  175. '0';
  176.                 BUFF[14]=(d%10) + '0';

  177.                 LCD_Show_String(1,0,BUFF);//在第1行顯示
  178.         }
  179. }
復制代碼


六、思考題回答
1A/DD/A中的DA是什么意思,A/DD/A分別有什么作用?
What is the meaning of D and A in A/D or D/Awhat are the functions of A/D and D/A

Answer:A is analog , D is digital . A/D can change analog signals into digital signals . D/A can change digital signals into analog signals.


2C51程序中為什么要包含頭文件reg51.h
Why does the C51 program include the header file reg51.h

Answer:Because reg51.h has function declarations , variable declarations , if you want to use these functions or variables you have to include them.


51hei圖片20201213232517.jpg (4.98 MB, 下載次數: 79)

51hei圖片20201213232517.jpg





歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 怡红院成人在线视频 | 国产一区久久久 | 色橹橹欧美在线观看视频高清 | 日韩成人在线播放 | 丝袜 亚洲 欧美 日韩 综合 | 91精品国产91久久久久久最新 | 久久精品一| 久久激情视频 | 日本久久久影视 | 精品久久久久久久久久 | 蜜桃五月天| 麻豆国产一区二区三区四区 | 99re国产| 日韩免费视频 | 精品国产一区二区在线 | 性色av一区二区三区 | 欧美日韩亚洲国产 | 日韩精品视频在线播放 | 看一级毛片视频 | 日韩欧美久久 | 国产精品一区二区在线 | 色视频www在线播放国产人成 | 国产精品爱久久久久久久 | 99久久精品一区二区成人 | 97久久久久久 | av性色全交蜜桃成熟时 | 亚洲区中文字幕 | 亚洲综合在线视频 | 亚洲免费一| 欧美日韩不卡 | 九九热精品在线视频 | 久久久久国产一区二区三区 | 91麻豆精品国产91久久久久久 | 亚洲黄色一级 | 在线观看免费福利 | 久久久成人免费一区二区 | 一级毛片观看 | 亚洲成人高清 | 毛片视频观看 | 国产精品99久久久久久动医院 | 黄色国产视频 |