欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3255|回復: 2
打印 上一主題 下一主題
收起左側

單片機數字電壓表用adc0804及l(fā)cd1602顯示程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:780666 發(fā)表于 2020-6-23 16:14 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式


單片機源程序如下:
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. #define lcd_data P2
  6. #define ad  P0
  7. int ad_data;
  8. sbit rd=P3^7;
  9. sbit wr=P3^6;
  10. sbit cs=P1^3;
  11. sbit tr=P3^2;

  12. sbit lcd_RS=P1^0;
  13. sbit lcd_RW=P1^1;
  14. sbit lcd_EN=P1^2;

  15. uchar sys_time1[]="voltage";          //顯示voltage
  16. uchar sys_time2[]="       ";
  17. uchar sys_dianya[]="0123456789";
  18. void Delay(unsigned int Delay)
  19. {
  20.         unsigned int i;
  21.         for(;Delay>0;Delay--)
  22.         {
  23.                 for(i=0;i<114;i++)
  24.                 {
  25.                         ;
  26.                 }
  27.         }
  28. }
  29. void delay_20ms(void)
  30. {
  31.         uchar i,temp;
  32.         for(i=20;i>0;i--)
  33.         {
  34.                 temp=248;
  35.                 while(--temp);
  36.                 temp=248;
  37.                 while(--temp);
  38.         }
  39. }
  40. void delay_38us(void)
  41. {
  42.         uchar temp;
  43.         temp=18;
  44.         while(--temp);
  45. }
  46. void delay_1520us(void)
  47. {
  48.         uchar i,temp;
  49.         for(i=3;i>0;i--)
  50.         {
  51.                 temp=252;
  52.                 while(--temp);
  53.         }
  54. }
  55. void delay_50us(uint i)
  56. {
  57.         uchar j;
  58.         for(;i>0;i--)
  59.         for(j=19;j>0;j--);
  60. }
  61. uchar lcd_rd_status()                         //讀取lcd1602狀態(tài),判斷忙
  62. {
  63.         uchar tmp_sts;
  64.           lcd_data=0xff;
  65.           lcd_RW=1;
  66.           lcd_RS=0;
  67.           lcd_EN=1;

  68.           tmp_sts=lcd_data;
  69.           lcd_EN=0;
  70.           lcd_RW=0;
  71.           return tmp_sts;
  72. }
  73. void lcd_wr_com(uint command)           //寫一個命令到lcd1602
  74. {
  75.         while(0x80&lcd_rd_status());   //寫之前判斷l(xiāng)cd1602是否忙
  76.           lcd_RW=0;                                          
  77.           lcd_RS=0;                                            //寫命令
  78.           lcd_data=command;                           //把命令寫到數據線上
  79.           lcd_EN=1;
  80.           lcd_EN=0;                                           //命令寫入
  81. }
  82. void lcd_wr_data(uint sjdata)           //寫一個顯示數據到lcd1602
  83. {
  84.         while(0x80&lcd_rd_status());   //判斷忙
  85.           lcd_RW=0;
  86.           lcd_RS=1;                                           //寫顯示數據
  87.           lcd_data=sjdata;                           //把要寫的顯示數據寫到數據線上
  88.           lcd_EN=1;
  89.           lcd_EN=0;
  90.           lcd_RS=0;                                           //命令寫入
  91. }
  92. void Init_lcd(void)                                   //初始化
  93. {
  94.         uchar i;
  95.         delay_20ms();
  96.           lcd_wr_com(0x38);                           //設置16*2格式,5*8點陣,8位數據接口
  97.           delay_38us();
  98.           lcd_wr_com(0x0c);                           //開顯示,不顯示光標
  99.           delay_38us();
  100.           lcd_wr_com(0x01);                           //清屏
  101.           delay_1520us();
  102.           lcd_wr_com(0x06);                           //顯示一個數據后光標自動加1
  103.         
  104.         for(i=0;i<16;i++)
  105.         {
  106.                 lcd_wr_com(0x80+i);
  107.                 if( sys_time1[i]==0x00)
  108.                 break;
  109.                 lcd_wr_data( sys_time1[i]);
  110.         }
  111.         for(i=0;i<16;i++)
  112.         {
  113.                 lcd_wr_com(0xC4+i);
  114.                 if( sys_time2[i]==0x00)
  115.                 break;
  116.                 lcd_wr_data( sys_time2[i]);
  117.         }
  118. }
  119. void start_adc0804(void)                        //啟動ad轉換子程序
  120. {
  121.         cs=0;
  122.         wr=0;
  123.         delay_50us(10);
  124.     while(tr==0);
  125.         tr=1;
  126.         wr=1;
  127.         cs=1;         
  128. }
  129. uint  read_ad()                                                                                //0804讀操作
  130. {
  131.         uchar ad_data;
  132.         P0=0XFF;
  133.         cs=0;
  134.         rd=0;
  135.         delay_50us(10);
  136.         ad_data=P0;
  137.         cs=1;
  138.         rd=1;
  139.         return(ad_data);
  140. }
  141. void display(uint ge,uint houyi,uint houer)                        //顯示電壓數
  142. {
  143.         
  144.         lcd_wr_com(0x80+0x40+5);
  145.         lcd_wr_data(sys_dianya[ge]);

  146.         lcd_wr_com(0x80+0x40+6);
  147.         lcd_wr_data('.');

  148.         lcd_wr_com(0x80+0x40+7);
  149.         lcd_wr_data(sys_dianya[houyi]);

  150.         lcd_wr_com(0x80+0x40+8);
  151.         lcd_wr_data(sys_dianya[houer]);

  152.         lcd_wr_data('v');
  153. }
  154. void main()
  155. {
  156.         uint a,i;
  157.         
  158.         uint ge,houyi,houer;
  159.         Init_lcd();
  160.         while(1)
  161.         {
  162.                 lcd_wr_com(0x80);
  163.                  start_adc0804();
  164.                 Delay(10);
  165.                 a=read_ad();
  166.                
  167.                 a=(uint)((a*5.0*100)/255);                   //計算
  168.         
  169.                 ge=(a/100);
  170.                 houyi=((a/10)%10);                                   //小數點后一位
  171.                 houer=((a/1)%10);                                   //小數點后二位
  172.         
  173.                 for(i=0;i<10;i++)
  174.                 {
  175.                         display(ge,houyi,houer);
  176.                 }
  177.         }
  178. }
復制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:791076 發(fā)表于 2021-5-16 17:24 來自觸屏版 | 只看該作者
真的太難了,淚目!
回復

使用道具 舉報

板凳
ID:791076 發(fā)表于 2021-5-17 16:32 來自觸屏版 | 只看該作者
魚擺擺是魚 發(fā)表于 2021-5-16 17:24
真的太難了,淚目!

可以向樓主請教些問題嗎
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表