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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機液體流量計仿真與源碼 LCD1602顯示

  [復制鏈接]
跳轉到指定樓層
樓主
測水流量的~
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #include<REG52.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. uchar temp_1[]={"00.00M3/H 000.0L"};        //顯示第一行       
  6. uchar temp_2[]={"SI:0.0L         "};        //顯示第2行
  7.                                                                                                                                                                                                                                                                                                          
  8. sbit k1=P2^0;//按鍵定義 分別4個開關
  9. sbit k2=P2^1;
  10. sbit k3=P2^2;

  11. uint liuliang; //變量定義
  12. uint shudu;
  13. uint M1;
  14. uint M2;
  15. uchar TEMP=01;




  16. //Port Definitions**********************************************************
  17. sbit LcdRs                = P1^0;
  18. sbit LcdRw                = P1^1;
  19. sbit LcdEn          = P1^2;
  20. sfr  DBPort         = 0x80;                //P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.數據端口


  21. void delay(uint z)
  22. {
  23.    uint a,b;
  24.    for(a=z;a>0;a--)
  25.      for(b=120;b>0;b--);
  26. }


  27. //內部等待函數**************************************************************************
  28. unsigned char LCD_Wait(void)
  29. {
  30.         LcdRs=0;
  31.         LcdRw=1;        _nop_();
  32.         LcdEn=1;        _nop_();                                         
  33.         LcdEn=0;
  34.         return DBPort;               
  35. }
  36. //向LCD寫入命令或數據************************************************************
  37. #define LCD_COMMAND                        0      // Command
  38. #define LCD_DATA                        1      // Data
  39. #define LCD_CLEAR_SCREEN        0x01      // 清屏
  40. #define LCD_HOMING                  0x02      // 光標返回原點
  41. void LCD_Write(bit style, unsigned char input)
  42. {
  43.         LcdEn=0;
  44.         LcdRs=style;
  45.         LcdRw=0;                _nop_();
  46.         DBPort=input;        _nop_();//注意順序
  47.         LcdEn=1;                _nop_();//注意順序
  48.         LcdEn=0;                _nop_();
  49.         LCD_Wait();       
  50. }

  51. //設置顯示模式************************************************************
  52. #define LCD_SHOW                        0x04    //顯示開
  53. #define LCD_HIDE                        0x00    //顯示關          

  54. #define LCD_CURSOR                        0x02         //顯示光標
  55. #define LCD_NO_CURSOR                0x00    //無光標                     

  56. #define LCD_FLASH                        0x01    //光標閃動
  57. #define LCD_NO_FLASH                0x00    //光標不閃動

  58. void LCD_SetDisplay(unsigned char DisplayMode)
  59. {
  60.         LCD_Write(LCD_COMMAND, 0x08|DisplayMode);       
  61. }

  62. //設置輸入模式************************************************************
  63. #define LCD_AC_UP                        0x02
  64. #define LCD_AC_DOWN                        0x00      // default

  65. #define LCD_MOVE                        0x01      // 畫面可平移
  66. #define LCD_NO_MOVE                        0x00      //default

  67. void LCD_SetInput(unsigned char InputMode)
  68. {
  69.         LCD_Write(LCD_COMMAND, 0x04|InputMode);
  70. }

  71. //初始化LCD************************************************************
  72. void LCD_Initial()
  73. {
  74.         LcdEn=0;
  75.         LCD_Write(LCD_COMMAND,0x38);           //8位數據端口,2行顯示,5*7點陣
  76.         delay(5);
  77.         LCD_Write(LCD_COMMAND,0x38);
  78.         delay(5);
  79.         LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);    //開啟顯示, 無光標
  80.         delay(5);
  81.         LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);   //清屏
  82.         delay(5);
  83.         LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);       //AC遞增, 畫面不動
  84.         delay(5);
  85. }

  86. //液晶字符輸入的位置************************
  87. void GotoXY(unsigned char x, unsigned char y)
  88. {
  89.         if(y==0)
  90.                 LCD_Write(LCD_COMMAND,0x80|x);
  91.         if(y==1)
  92.                 LCD_Write(LCD_COMMAND,0x80|(x-0x40));
  93. }

  94. //將字符輸出到液晶顯示
  95. void Print(unsigned char *str)
  96. {
  97.         while(*str!='\0')
  98.         {
  99.                 LCD_Write(LCD_DATA,*str);
  100.                 str++;
  101.                 delay(1);
  102.         }
  103. }


  104. void key()// 按鍵檢測
  105. {

  106.          if(k1==0)//設置預置數加
  107.   {
  108.    delay(5);
  109.    if(k1==0)//清零
  110.    {
  111.                                 M2=0;
  112.                                
  113.    while(k1==0);
  114.    }
  115.   }
  116.                
  117.                
  118.   if(k2==0)//設置預置數加
  119.   {
  120.    delay(5);
  121.    if(k2==0)
  122.    {
  123.    TEMP+=1;
  124.    if(TEMP>=99)
  125.    TEMP=99;
  126.    while(k2==0);
  127.    }
  128.   }
  129.    if(k3==0)//設置預置數減
  130.   {
  131.    delay(5);
  132.    if(k3==0)
  133.    {
  134.    if(TEMP>=1)
  135.    TEMP-=1;
  136.    else
  137.    TEMP=0;
  138.   while(k3==0);
  139.    }
  140.   }
  141.   

  142. }


  143. main()
  144. {

  145. EX0=1;//開外部中斷0
  146. PX0=1;// 外部中斷0高優先級
  147. IT0=1;//觸發模式0= 電平 1=邊沿觸發
  148.         TMOD = 0x11;
  149. ET1=1;
  150.         TR1=1;

  151.         TH1 = (65535-50000)/256;
  152.         TL1 = (65535-50000)%256;
  153.         EA=1;                                                                               

  154. LCD_Initial();    //液晶初始化
  155. while(1)
  156. {
  157.    key();// 按鍵檢測
  158.                        

  159.                         liuliang=M2*TEMP;

  160.    temp_1[0]=shudu/1000+0x30;//轉換成液晶字符下同
  161.    temp_1[1]=shudu/100%10+0x30;
  162.    temp_1[3]=shudu/10%10+0x30;
  163.                  temp_1[4]=shudu%10+0x30;
  164.   
  165.    temp_1[10]=liuliang/1000+0x30;
  166.    temp_1[11]=liuliang/100%10+0x30;
  167.    temp_1[12]=liuliang/10%10+0x30;
  168.    temp_1[14]=liuliang%10+0x30;
  169.                
  170.    temp_2[3]=TEMP/10+0x30;
  171.    temp_2[5]=TEMP%10+0x30;

  172.        
  173.                
  174.    GotoXY(0,0);//顯示起始位置   Y=0,第一行,Y=1 第二行//顯示第一行
  175.    Print(temp_1);// 內容
  176.    GotoXY(0,1);//顯示起始位置   Y=0,第一行,Y=1 第二行//顯示第一行
  177.    Print(temp_2);// 內容

  178. }

  179. }
  180.        


  181. void my_INT0(void) interrupt 0
  182. {
  183.         M1++;
  184.         M2++;
  185. ……………………

  186. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
LCD液體流量計.zip (104.7 KB, 下載次數: 303)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:91580 發表于 2018-5-30 16:14 | 只看該作者
這種應用我也想做一個,凈水器出水流量控制器。
回復

使用道具 舉報

板凳
ID:343842 發表于 2018-6-10 16:15 | 只看該作者
請問SI代表什么,求回復
回復

使用道具 舉報

地板
ID:343842 發表于 2018-6-10 16:15 | 只看該作者
請問SI代表什么,求回復
回復

使用道具 舉報

5#
ID:387950 發表于 2018-9-9 19:39 | 只看該作者
多謝了..
回復

使用道具 舉報

6#
ID:429356 發表于 2019-2-22 15:41 | 只看該作者
信號空接了那個呢?能說一下嗎?
回復

使用道具 舉報

7#
ID:601329 發表于 2019-10-26 11:31 | 只看該作者
你用的流量傳感器是什么型號的
回復

使用道具 舉報

8#
ID:947182 發表于 2021-7-25 11:11 | 只看該作者
代碼中si代表著什么意思
回復

使用道具 舉報

9#
ID:627828 發表于 2023-9-28 10:06 | 只看該作者

代碼中si代表著什么意思
回復

使用道具 舉報

10#
ID:1111058 發表于 2024-2-17 18:44 | 只看該作者
xiaoguaishouya 發表于 2018-6-10 16:15
請問SI代表什么,求回復

信號完整性
回復

使用道具 舉報

11#
ID:1111058 發表于 2024-2-17 18:45 | 只看該作者
jack丶 發表于 2023-9-28 10:06
代碼中si代表著什么意思

信號完整系性
回復

使用道具 舉報

12#
ID:1064915 發表于 2024-2-18 08:40 | 只看該作者
shudu=TEMP*M1*12*0.06*100/10;
沒有說明
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜精品视频在线观看 | 成人欧美一区二区三区在线播放 | 国产福利资源在线 | 久久精品久久久久久 | 97色综合 | 日韩一区二区三区精品 | 一区二区视频在线 | 婷婷久久综合 | 91国内精品久久 | 犬夜叉在线观看 | 黄色毛片视频 | 欧美日韩国产精品一区 | 免费一级片 | 国产一区久久久 | 天天综合91 | 色综合国产 | 最新黄色在线观看 | 黄色亚洲网站 | 天天综合干 | 久久黄色精品视频 | 韩日中文字幕 | 久久不卡视频 | 亚洲精品大片 | 国产精品久久久久久一级毛片 | 天天操天天干天天爽 | 国产成人免费在线 | 成人福利在线 | 久久99精品久久久久 | 老子午夜影院 | 亚洲国产精品一区二区三区 | 久久久久中文字幕 | 日韩资源 | 福利在线看| 久久久久久久国产 | 精品视频一区在线 | 亚洲视频一区在线观看 | 久久国产精品精品 | 国产精品视频网 | 99精品电影| 欧美日韩不卡合集视频 | 国产精品999 |