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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 5088|回復(fù): 8
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)雙路壓力監(jiān)測(cè)報(bào)警系統(tǒng)設(shè)計(jì)(仿真與源程序)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
這個(gè)基于C51單片機(jī)的雙路壓力監(jiān)測(cè)報(bào)警系統(tǒng)是本人所做課程設(shè)計(jì),已通過(guò)驗(yàn)收,沒(méi)有bug,功能更完善,所附包含proteus仿真文件,源代碼,使用說(shuō)明,可以做一個(gè)不錯(cuò)的參考。
所完成功能為模擬電路輸入測(cè)量?jī)陕穳毫χ,量程范?~100MPa,帶有LED報(bào)警功能,可以自行設(shè)置上限,壓力測(cè)量值分時(shí)顯示。

使用說(shuō)明:
1.開(kāi)始仿真,壓力上限初始值為99MPa;
2.點(diǎn)擊按鈕button(要使數(shù)碼管全部清零),在鍵盤處輸入上限值;
3.上限值修改成功,重新開(kāi)始顯示,顯示第一路時(shí)左側(cè)帶有上限值標(biāo)識(shí),顯示第二路時(shí)左側(cè)沒(méi)有標(biāo)識(shí);
4.當(dāng)測(cè)量數(shù)值超過(guò)了所設(shè)定上限,二極管閃爍報(bào)警;
5.結(jié)束仿真。


單片機(jī)源程序如下:
  1. #include<reg51.h>
  2. #include<absacc.h>
  3. #include<intrins.h>          
  4. #define uchar unsigned char
  5. #define uint unsigned int
  6. #define a DWORD [0x40]
  7. #define b DWORD [0x50]
  8.                                                  
  9. /**************函數(shù)聲明部分*************/
  10. void jianpan1(void);                         
  11. void jianpan2(void);
  12. void DelayMS(uint x);
  13. void int_CHANGE(uint y);
  14. void Display1(void);
  15. void Display2(void);
  16. void beep(void);

  17. uchar code ledtab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};    //0~9共陰字型碼
  18. uchar data ledbuf[8]={0x6f,0x6f,0x73,0x48,0x00,0x00,0x00,0x00};    //初始顯示P=(數(shù)據(jù)緩沖區(qū))
  19. sbit OE=P2^0;                               
  20. sbit EOC=P2^1;               
  21. sbit ST=P2^2;
  22. sbit CLK=P2^3;               
  23. sbit LE1=P2^4;
  24. sbit LE2=P2^5;
  25. sbit BUTTON=P2^6;  
  26. sbit BEEP=P2^7;
  27. sbit r4=P1^7;
  28. uchar Pre_KeyNo,KeyNo;          //存儲(chǔ)鍵值
  29. uchar num1,num2,num;          //存儲(chǔ)報(bào)警上限值

  30. void main()                                  //主函數(shù)
  31. {
  32.         uint i;
  33.         TMOD=0x02;                  //方式2,8位自動(dòng)重裝初值定時(shí)方式
  34.         TH0=0x14;                  //計(jì)數(shù)初值寄存器
  35.         TL0=0x00;                  //8位計(jì)數(shù)器
  36.         IE=0x82;                  //開(kāi)總中斷,并允許T0中斷
  37.         TR0=1;                           //啟動(dòng)計(jì)數(shù)
  38.     P2=0x4f;                  //端口初始化
  39.         num1=9;                          //報(bào)警上限值初始化
  40.         num2=9;
  41.         num=100;
  42.         r4=0;
  43.         while(1)
  44.         {          
  45.             if(BUTTON==0)           //按鍵按下則進(jìn)行鍵掃
  46.             jianpan1();
  47.                         r4=0;
  48.                         i=0;
  49.                 ST=0;ST=1;ST=0;           //啟動(dòng)A/D       
  50.                 while(EOC==0);       
  51.                 OE=1;
  52.                 a=P3*100/255;           //電壓的實(shí)際值
  53.                 a=a*10;
  54.                 int_CHANGE(a);       
  55.                 Display1();
  56.                 Display2();
  57.                 OE=0;
  58.                 if(a>=(num*10))
  59.                         beep();
  60.                 while(i<100)
  61.                 {
  62.                         Display1();
  63.                   Display2();
  64.                         i++;
  65.                 }
  66.                 DelayMS(20);
  67.                 r4=1;
  68.                 i=0;
  69.                 ST=0;ST=1;ST=0;           //啟動(dòng)A/D       
  70.                 while(EOC==0);       
  71.                 OE=1;
  72.                 b=P3*100/255;           //電壓的實(shí)際值
  73.                 b=b*10;
  74.                 int_CHANGE(b);       
  75.                 Display1();
  76.                 Display2();
  77.                 OE=0;
  78.                 if(b>=(num*10))
  79.                         beep();
  80.                         while(i<100)
  81.                 {
  82.                         Display1();
  83.                   Display2();
  84.                         i++;
  85.                 }
  86.                
  87.                 DelayMS(20);
  88.         }
  89.        
  90. }

  91. void jianpan1()                //鍵盤輸入存儲(chǔ)函數(shù)
  92. {
  93.         uchar i=2,j=0;   
  94.     P0=0x00;
  95.         while(i)
  96.         {
  97.                 P1=0xf0;                          //準(zhǔn)備鍵掃
  98.         Pre_KeyNo=16,KeyNo=16;
  99.                 if(P1!=0xf0)
  100.         jianpan2();                   //鍵盤掃描
  101.                 if(Pre_KeyNo!=KeyNo)
  102.                 {        if(j==1)
  103.                                 num2=KeyNo;      
  104.             if(j==0)
  105.                         {        num1=KeyNo;      
  106.                                 j=1;
  107.                         }
  108.                         while(P1!=0xf0)
  109.             P1=0xf0;
  110.                         i--;
  111.                 }
  112.                 DelayMS(100);
  113.         }
  114.         num=10*num1+num2;
  115. }

  116. void jianpan2()                //鍵盤掃描函數(shù)   
  117. {
  118.         uchar Tmp;
  119.         P1=0x0f;       
  120.         DelayMS(1);
  121.         Tmp=P1^0x0f;
  122.         switch(Tmp)       
  123.         {
  124.                 case 1:        KeyNo=0;break;        //第一列按下
  125.                 case 2:        KeyNo=1;break;        //第二列按下
  126.                 case 4: KeyNo=2;break;        //第三列按下
  127.                 case 8:        KeyNo=3;break;        //第四列按下
  128.                 default:KeyNo=16;               
  129.         }
  130.         P1=0xf0;   
  131.         DelayMS(1);
  132.         Tmp=P1>>4^0x0f;
  133.         switch(Tmp)       
  134.         {
  135.                 case 1:        KeyNo+=0;break;
  136.                 case 2:        KeyNo+=4;break;
  137.                 case 4:        KeyNo+=8;break;
  138.                 case 8:        KeyNo+=12;
  139.         }
  140. }


  141. void int_CHANGE(uint y)
  142. {
  143. if(y==1000)                                //滿量程輸入時(shí)顯示100MPa
  144. {  
  145.     ledbuf[4]=0x06;
  146.         ledbuf[5]=0x3f;
  147.         ledbuf[6]=0xbf;
  148.         ledbuf[7]=0x3f;
  149. }
  150. else {
  151. ledbuf[4]=0x00;
  152. ledbuf[5]=y/100;             //得到十位
  153. ledbuf[5]=ledtab[ledbuf[5]]; //十位轉(zhuǎn)換為字型碼

  154. ledbuf[7]=y%100;
  155. ledbuf[6]=ledbuf[7]/10;          //得到個(gè)位
  156. ledbuf[6]=ledtab[ledbuf[6]]; //得到十分位字型碼                          
  157. ledbuf[7]=ledbuf[7]%10;          //得到十分位
  158. ledbuf[7]=ledtab[ledbuf[7]]; //得到個(gè)位字型碼

  159. ledbuf[6]=ledbuf[6]|0x80;    //個(gè)位加固定小數(shù)點(diǎn)
  160.   
  161.   /*前導(dǎo)0的不顯示處理*/
  162.   if(ledbuf[5]==0x3f)         //如果十位為0,則十位的0不顯示,顯示格式為x.x
  163.    ledbuf[5]=0x00;  
  164.   }

  165. }


  166. void Display1()       //顯示函數(shù)  
  167. {       
  168.     P0=~0x80;               
  169.         LE2=1;  
  170.         LE2=0;
  171.         P0=ledbuf[7];
  172.         LE1=1;  
  173.         LE1=0;
  174.         DelayMS(2);
  175.         P0=0x00;
  176.         LE1=1;  
  177.         LE1=0;

  178.         P0=~0x40;               
  179.         LE2=1;
  180.         LE2=0;
  181.         P0=ledbuf[6];
  182.         LE1=1;
  183.         LE1=0;
  184.         DelayMS(2);
  185.         P0=0x00;
  186.         LE1=1;  
  187.         LE1=0;

  188.         P0=~0x20;               
  189.         LE2=1;
  190.         LE2=0;
  191.         P0=ledbuf[5];
  192.         LE1=1;
  193.         LE1=0;
  194.     DelayMS(2);
  195.         P0=0x00;
  196.         LE1=1;  
  197.         LE1=0;

  198.         P0=~0x10;               
  199.         LE2=1;
  200.         LE2=0;
  201.         P0=ledbuf[4];
  202.         LE1=1;
  203.         LE1=0;
  204.     DelayMS(2);
  205.         P0=0x00;
  206.         LE1=1;  
  207.         LE1=0;

  208.         P0=~0x08;               
  209.         LE2=1;
  210.         LE2=0;
  211.         P0=ledbuf[3];
  212.         LE1=1;
  213.         LE1=0;
  214.     DelayMS(2);
  215.         P0=0x00;
  216.         LE1=1;  
  217.         LE1=0;

  218.         P0=~0x04;               
  219.         LE2=1;
  220.         LE2=0;
  221.         P0=ledbuf[2];
  222.         LE1=1;
  223.         LE1=0;
  224.     DelayMS(2);
  225.         P0=0x00;
  226.         LE1=1;  
  227.         LE1=0;
  228. }

  229. void Display2()                         //顯示上限值
  230. {                                                               

  231.     P0=~0x02;               
  232.         LE2=1;  
  233.         LE2=0;
  234.         P0=ledtab[num2];
  235.         LE1=1;  
  236.         LE1=0;
  237.         DelayMS(5);
  238.         P0=0x00;
  239.         LE1=1;  
  240.         LE1=0;

  241.         P0=~0x01;               
  242.         LE2=1;
  243.         LE2=0;
  244.         P0=ledtab[num1];
  245.         LE1=1;
  246.         LE1=0;
  247.         DelayMS(5);
  248.         P0=0x00;
  249.         LE1=1;  
  250.         LE1=0;
  251. ……………………

  252. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
雙路壓力監(jiān)測(cè)報(bào)警系統(tǒng).zip (35.88 KB, 下載次數(shù): 83)



評(píng)分

參與人數(shù) 2黑幣 +110 收起 理由
mini@ + 10
admin + 100 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:61206 發(fā)表于 2018-1-18 19:16 | 只看該作者
非常不錯(cuò)的,下載下來(lái)慢慢學(xué)習(xí)。
回復(fù)

使用道具 舉報(bào)

板凳
ID:271596 發(fā)表于 2018-3-7 14:44 | 只看該作者
非常不錯(cuò)的
回復(fù)

使用道具 舉報(bào)

地板
ID:289218 發(fā)表于 2018-3-8 15:29 | 只看該作者
感謝分享,學(xué)習(xí)了~
回復(fù)

使用道具 舉報(bào)

5#
ID:392535 發(fā)表于 2019-3-4 14:28 | 只看該作者
有相關(guān)論文嗎
回復(fù)

使用道具 舉報(bào)

6#
ID:484675 發(fā)表于 2019-3-5 11:15 | 只看該作者
為什么我在仿真的時(shí)候不能設(shè)置壓力數(shù)值啊  
回復(fù)

使用道具 舉報(bào)

7#
ID:484675 發(fā)表于 2019-3-5 11:26 | 只看該作者
為什么我下載之后仿真不好用啊,我就把源程序重新生成了一下導(dǎo)到c51里啊,別的都沒(méi)動(dòng)
回復(fù)

使用道具 舉報(bào)

8#
ID:392535 發(fā)表于 2019-3-6 22:55 | 只看該作者
有ACD0808芯片接口程序的編寫解釋嗎
回復(fù)

使用道具 舉報(bào)

9#
ID:538050 發(fā)表于 2019-5-19 15:41 | 只看該作者
想問(wèn)下樓主,怎么調(diào)整壓力上限值,可以加我教一下嘛 ?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲高清av在线 | 综合久久综合久久 | 国产精品成人一区二区三区夜夜夜 | 亚洲一区二区三区在线播放 | 国产精品久久久久久久一区二区 | 这里精品 | 精品国产乱码一区二区三区 | 亚洲高清在线 | 国产色婷婷久久99精品91 | 欧美三级在线 | 久久久999国产精品 中文字幕在线精品 | 欧美久久久久久久久中文字幕 | 久久狠狠| 日本a视频 | 婷婷综合网 | 狠狠干美女 | 日韩一二区 | 91九色porny首页最多播放 | 国产精品一区二区三区在线 | 日韩中文字幕一区二区三区 | 日韩欧美高清 | 狠狠干狠狠操 | 久久91精品国产一区二区三区 | 国产乱码精品1区2区3区 | 欧美在线观看网站 | 福利视频1000 | 91精品国产综合久久久久久漫画 | 欧美5区| 麻豆精品国产免费 | 欧美一区二区三区免费在线观看 | 亚洲精品一区二区三区免 | 日韩精品一区二区三区在线播放 | 精品国产一区二区三区久久 | 天堂资源视频 | 国产一区二区免费在线 | 高清一区二区视频 | 欧美激情第一区 | 成人毛片一区二区三区 | 久久成人综合 | 国内精品久久久久久 | 欧美黄色一区 |