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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機病床呼叫裝置仿真原理圖與源碼

[復制鏈接]
跳轉到指定樓層
樓主
單片機病床呼叫裝置仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #include<reg52.h>
  2. #define uc unsigned char
  3. #define ui unsigned int
  4. sbit RS=P1^4;
  5. sbit RW=P1^5;
  6. sbit E=P1^6;
  7. sbit D0=P1^3;
  8. sbit D1=P1^2;
  9. sbit D2=P1^1;
  10. sbit D3=P1^0;
  11. sbit bg_1602=P2^6;
  12. sbit key=P3^3;
  13. sbit Beep=P3^4;
  14. uc code tab0[]=" 123456789#";
  15. uc code tab1[]="Calling!!!";
  16. uc code tab2[]="I Know!";
  17. uc code tab3[]="Happy Every Day!";
  18. uc num_D0=0,num_D1=0,num_D2=0,num_D3=0;
  19.         bit bdata fu_D0=0;
  20.         fu_D1=0,fu_D2=0,fu_D3=0,flag;
  21. void delay(ui x)
  22. {
  23.         ui i,j;
  24.         for(i=0;i<x;i++)
  25.         for(j=0;j<121;j++);
  26. }
  27. void init()
  28. {
  29.         bg_1602=0;
  30.         TMOD=0x01;
  31.         TH0=0xff;
  32.         EA=1;
  33.         ET0=1;
  34.         TR0=1;
  35.         D0=0;
  36.         D1=0;
  37.         D2=0;
  38.         D3=0;
  39. }
  40. void com_1602(uc com)
  41. {
  42.         RS=0;
  43.         P0=com;
  44.         delay(1);
  45.         E=1;
  46.         delay(1);
  47.         E=0;
  48.         RS=1;
  49. }
  50. void data_1602(uc date)
  51. {
  52.         RS=1;
  53.         P0=date;
  54.         delay(1);
  55.         E=1;
  56.         delay(1);
  57.         E=0;
  58.         RS=0;
  59. }
  60. void dis_1602(uc word_num,uc hang,uc lie,uc tab_num,uc num)
  61. {
  62.         uc n;
  63.         for(n=0;n<word_num;n++)
  64.         {
  65.                 com_1602(0x80+hang*0x40+lie);
  66.                 if(tab_num==0)
  67.                         data_1602(tab0[num+n]);
  68.                 else if(tab_num==1)
  69.                         data_1602(tab1[num+n]);
  70.                 else if(tab_num==2)
  71.                         data_1602(tab2[num+n]);
  72.                 else if(tab_num==3)
  73.                         data_1602(tab3[num+n]);
  74.                 delay(5);
  75.                 lie++;
  76.         }
  77. }
  78. void init_1602()
  79. {
  80.         RW=0;
  81.         com_1602(0x38);
  82.         com_1602(0x0c);
  83.         com_1602(0x06);
  84.         com_1602(0x01);
  85. }
  86. void know()
  87. {
  88.         if(D0!=fu_D0)
  89.         num_D0=1;
  90.         if(D1!=fu_D1)
  91.         num_D1=2;
  92.         if(D2!=fu_D2)
  93.                 num_D2=3;
  94.         if(D3!=fu_D3)
  95.                 num_D3=4;
  96.         if(key==0)
  97.         {
  98.                 delay(5);
  99.                 if(key==0)
  100.                 {
  101.                         if((num_D0!=0)||(num_D1!=0)||(num_D2!=0)||(num_D3!=0))
  102.                         {
  103.                                 bg_1602=0;
  104.                                 Beep=1;
  105.                                 flag=0;
  106.                                 num_D0=0;num_D1=0;num_D2=0;num_D3=0;
  107.                                 fu_D0=D0;fu_D1=D1;fu_D2=D2;fu_D3=D3;
  108.                                 com_1602(0x01);
  109.                                 dis_1602(7,1,4,2,0);
  110.                         }
  111.                         else
  112.                         bg_1602=0;
  113.                 }
  114.                 while(!key);
  115.                 delay(2000);
  116.                 com_1602(0x01);
  117.         }
  118. }
  119. void display()
  120. {
  121.         if((num_D0==0)&&(num_D1==0)&&(num_D2=0)&&(num_D3==0))
  122.                 dis_1602(16,0,0,3,0);
  123.         else
  124.         {
  125.                 if(flag==0)
  126.                 {flag=1;
  127.                              com_1602(0x01);
  128. }
  129. if(num_D0==1)
  130. {
  131.    dis_1602(1,0,2,0,num_D0);
  132.    dis_1602(1,0,3,0,10);
  133.   }
  134.   if(num_D1==2);
  135.   {
  136.    dis_1602(1,0,5,0,num_D1);
  137.    dis_1602(1,0,6,0,10);
  138.    }
  139.    if(num_D2==3);
  140.   {
  141.    dis_1602(1,0,8,0,num_D2);
  142.    dis_1602(1,0,9,0,10);
  143.    }
  144.    if(num_D3==4);
  145.   {
  146.    dis_1602(1,0,11,0,num_D3);
  147.    dis_1602(1,0,12,0,10);
  148.    }
  149.    dis_1602(10,1,3,1,0);
  150. }
  151. }
  152. void LED()
  153. {
  154. if((D0!=fu_D0)||(D1!=fu_D1)||(D2!=fu_D2)||(D3!=fu_D3))
  155. bg_1602=0;
  156. }
  157. void main()
  158. {
  159. init();
  160. init_1602();
  161. while(1)
  162. {
  163. display();
  164. know();
  165. LED();
  166. }
  167. }
  168. void T0_time() interrupt 1
  169. {
  170.   ui m,n;
  171.   TH0=0x4b;
  172.   TL0=0xff;
  173.   m++;
  174.   if(m==10)
  175.   {
  176.   m=0;
  177.   
  178.   if((num_D0!=0)||(num_D1!=0)||(num_D2!=0)||(num_D3!=0))
  179.   Beep=~Beep;
  180.   }
  181.   if((bg_1602==0)&&(D0==fu_D0)&&(D1==fu_D1)&&(D2==fu_D2)&&(D3==fu_D3))
  182.   {
  183.     n++;
  184.         if(n==300)
  185.         {
  186.         n=0;
  187.         bg_1602=1;
  188.         }
  189. }
  190. }
復制代碼

所有資料51hei提供下載:
病床呼叫裝置.rar (91.96 KB, 下載次數: 75)


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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人在线电影在线观看 | 国产精品久久国产精品 | 国产成人综合av | 欧美日韩亚洲在线 | 一区二区三区四区在线视频 | 欧美11一13sex性hd | 欧美在线一级 | 欧美不卡视频一区发布 | 国产精品国产精品国产专区不片 | 亚洲精品国产一区 | 99亚洲精品视频 | 亚洲一区二区三区在线播放 | 国内精品一区二区 | 成人免费视屏 | www.亚洲 | 成人在线视频免费观看 | 在线成人 | 中文字幕一区在线观看视频 | 国产成人在线播放 | 精品欧美乱码久久久久久 | 亚洲欧美国产毛片在线 | 久久久久久亚洲精品 | 夜色www国产精品资源站 | 6996成人影院网在线播放 | 一区二区三区视频在线观看 | 日本激情视频中文字幕 | 国产午夜一级 | 成人影院在线 | 欧美lesbianxxxxhd视频社区 | 亚洲九九 | 黑人精品欧美一区二区蜜桃 | 伊人网综合在线 | av网站免费观看 | 国产在线播 | 精品一二三 | 午夜欧美日韩 | 自拍偷拍av | 欧美高清视频一区 | 成人精品一区二区 | 美女福利视频 | 欧洲一区二区视频 |