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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2922|回復: 0
收起左側

51單片機病房呼叫系統代碼與Proteus仿真圖

[復制鏈接]
ID:1036972 發表于 2022-6-26 20:18 | 顯示全部樓層 |閱讀模式
1,上電lcd1602顯示Qingqiushu:0
2,1~8按鍵代表病人編號,9號按鍵代表應答(每次只能應答一個請求)
3,第二行顯示當前請求病人編號,最先請求的編號在左中間空格,有按鍵按下后刷新顯示,先按下的請求鍵優先級高優先被應答。

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
(FM17J{K$O52HA$HD5GHLW2.png 51hei.png

單片機源程序如下:
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uchar code table[]="Qing qiu shu:";
  5. uchar code table1[]="012345678";//鍵盤
  6. uchar  table2[8];
  7. uint code table3[]={0,1,2,3,4,5,6,7,8};//鍵盤
  8. uint table4[]={0,0,0,0,0,0,0,0};
  9. uint table5[8];
  10. sbit lcden=P3^4;
  11. sbit lcdrs=P3^5;
  12. sbit dula=P2^6;
  13. sbit wela=P2^7;
  14. uchar num,key,N,s;
  15. uint i,w;
  16. void delay(uint z)
  17. {
  18.         uint x,y;
  19.         for(x=z;x>0;x--)
  20.         for(y=110;y>0;y--);
  21. }
  22. void write_com(uchar com)
  23. {
  24.         lcdrs=0;
  25.         P0=com;
  26.         delay(5);
  27.         lcden=1;
  28.         delay(5);
  29.         lcden=0;
  30. }
  31. void write_data(uchar date)
  32. {
  33.         lcdrs=1;
  34.         P0=date;
  35.         delay(5);
  36.         lcden=1;
  37.         delay(5);
  38.         lcden=0;
  39. }
  40. void init()
  41. {
  42.         dula=0;
  43.         wela=0;
  44.         lcden=0;
  45.         write_com(0x38);
  46.         write_com(0x0c);
  47.         write_com(0x06);
  48.         write_com(0x01);
  49. }
  50. void matrixkeyscan()
  51. {
  52.   
  53.   uchar temp,key;
  54.   if(N>=0||N<=8)
  55.   {
  56.   P1=0xfe;
  57.   temp=P1;
  58.   temp=temp&0xf0;
  59.   if(temp != 0xf0)
  60.   {
  61.     delay(10);
  62.         temp=P1;
  63.         temp=temp & 0xf0;
  64.         if(temp != 0xf0)
  65.         {
  66.           temp=P1;
  67.           switch(temp)
  68.           {  
  69.             case 0xee:key=1;table4[0]+=1;break;
  70.                 case 0xde:key=2;table4[1]+=1;break;
  71.                 case 0xbe:key=3;table4[2]+=1;break;
  72.                 case 0x7e:key=4;table4[3]+=1;break;
  73.            }
  74.            while(temp != 0xf0)
  75.            {
  76.              temp=P1;
  77.                  temp=temp & 0xf0;
  78.                 }
  79.            if(table4[key-1]==1)
  80.            {table5[N]=table3[key];
  81.           table2[N]=table1[key];N++;
  82.           }
  83.         }
  84.    }




  85.    P1=0xfd;
  86.   temp=P1;
  87.   temp=temp&0xf0;
  88.   if(temp != 0xf0)
  89.   {
  90.     delay(10);
  91.         temp=P1;
  92.         temp=temp & 0xf0;
  93.         if(temp != 0xf0)
  94.         {
  95.           temp=P1;
  96.           switch(temp)
  97.           {  
  98.             case 0xed:key=5;table4[4]+=1;break;
  99.                 case 0xdd:key=6;table4[5]+=1;break;
  100.                 case 0xbd:key=7;table4[6]+=1;break;
  101.                 case 0x7d:key=8;table4[7]+=1;break;
  102.            }
  103.            while(temp != 0xf0)
  104.            {
  105.              temp=P1;
  106.                  temp=temp & 0xf0;
  107.                 }
  108.                 if(table4[key-1]==1)
  109.            { table5[N]=table3[key];
  110.           table2[N]=table1[key];N++;
  111.           }
  112.         }
  113.    }




  114.    P1=0xfb;
  115.   temp=P1;
  116.   temp=temp&0xf0;
  117.   if(temp != 0xf0)
  118.   {
  119.     delay(10);
  120.         temp=P1;
  121.         temp=temp & 0xf0;
  122.         if(temp != 0xf0)
  123.         {
  124.           temp=P1;
  125.           switch(temp)
  126.           {  
  127.             case 0xeb:key=9;break;
  128.            }
  129.            while(temp != 0xf0)
  130.            {
  131.              temp=P1;
  132.                  temp=temp & 0xf0;
  133.                 }
  134.                 if(N>0)
  135.                 {
  136.            if(key=9)
  137.            {        
  138.                 w=table5[0];
  139.                         table4[w-1]=table3[0];
  140.                         delay(10);                           
  141.                    for(i=0;i<N;i++)
  142.                         {        table5[ i]=table5[i+1];[ i]
  143.                                 table2[ i]=table2[i+1];[ i]
  144.                         }table2[N]='\0';table5[N]='\0';
  145.                            N--;
  146.            
  147.            }
  148.            }
  149.         }
  150.    }
  151. }
  152. }


  153. void main()
  154. {
  155.         init();
  156.         write_com(0x80);
  157.     ……………………
  158. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

Keil代碼與Proteus8.8仿真下載: 仿真程序.7z (56.44 KB, 下載次數: 53)

評分

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

查看全部評分

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩毛片免费视频 | 欧美又大粗又爽又黄大片视频 | 不卡视频在线 | 日韩三级电影一区二区 | 国产精品小视频在线观看 | 日本又色又爽又黄的大片 | 91精品一区| 中国黄色毛片视频 | 久久精品亚洲精品国产欧美kt∨ | 天天操人人干 | 日韩三级一区 | 色婷婷综合久久久中文字幕 | 色综合色综合色综合 | 免费观看一级特黄欧美大片 | 久久欧美高清二区三区 | 国产精品a久久久久 | 国产精品99久久久久久久vr | 欧美激情一区二区三区 | 日韩精品中文字幕一区二区三区 | 手机三级电影 | 中国美女av | 亚洲最大福利网 | 狠狠婷婷综合久久久久久妖精 | 六月成人网 | 91麻豆精品国产91久久久久久久久 | 欧美一级片久久 | 精品亚洲一区二区三区 | 欧美电影一区 | 免费中文字幕日韩欧美 | 91原创视频在线观看 | 成人免费小视频 | 欧美视频在线一区 | 欧美一级二级三级视频 | 欧美久久久网站 | 亚洲第一成人av | 国产91一区 | 综合久久av | 亚洲网站在线观看 | 久久鲁视频 | 精品视频在线观看 | 欧美日韩黄色一级片 |