找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5762|回复: 4
收起左侧

单片机病床呼叫系统仿真原理图+程序

[复制链接]
ID:312526 发表于 2018-6-5 22:31 | 显示全部楼层 |阅读模式
病床呼叫系统设计仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png

单片机源程序如下:
  1. #include<reg51.h>
  2. #define uchar unsigned char
  3. #define uint insigned int
  4. uchar code LED[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
  5. uchar Buffer[]={0x3F,0x3F};
  6. sbit CLAER=P3^1;
  7. sbit BUZZ=P3^0;
  8. uchar key_scan();
  9. void key_count(uchar num);
  10. void disp();
  11. void delay(uchar s);
  12. void buzz_on();
  13. void main()
  14. {
  15. uchar temp;
  16. while(1)
  17.         {
  18. disp();
  19. temp=key_scan();
  20.         if(temp!=0xFF)
  21.           {
  22.                   key_count(temp+1);
  23.                         while(CLAER==1)
  24.                         {
  25.                         buzz_on();
  26.                         disp( );
  27.                         }
  28.                 Buffer[0]=0x3F;
  29.                 Buffer[1]=0x3F;
  30.                 BUZZ=1;
  31.                 }
  32.         }
  33. }
  34. void disp()
  35. {
  36.         uchar i,w;
  37.         w=0x01;
  38.   for(i=0;i<2;i++)
  39.     {
  40.     P2=~w;
  41.     w<<=1;
  42.     P0=Buffer[i];
  43.     delay(10);
  44.     P2=0xFF;
  45.     }
  46. }               
  47. uchar key_scan(void)
  48. {
  49.         uchar key=0xFF,cord_h,cord_1;
  50.         P1=0x0F;
  51.         cord_h=P1&0x0F;
  52.         if(cord_h!=0x0F)
  53.         {
  54.         delay(10);
  55.         if(cord_h!=0x0F)
  56.           {
  57.                 cord_h=P1&0x0F;
  58.                 P1=0xF0;
  59.                 cord_1=P1&0xF0;
  60.                 while((P1&0xF0)!=0xF0);
  61.                 switch(cord_h+cord_1)
  62.                         {
  63.                         case 0xEE:key=0;break;//S1
  64.                         case 0xED:key=1;break;//S2
  65.                         case 0xEB:key=2;break;//S3
  66.                         case 0xE7:key=3;break;//S4
  67.                         case 0xDE:key=4;break;//S5
  68.                         case 0xDD:key=5;break;//S6
  69.                         case 0xDB:key=6;break;//S7
  70.                         case 0xD7:key=7;break;//S8
  71.                         case 0xBE:key=8;break;//S9
  72.                         case 0xBD:key=9;break;//S10
  73.                         case 0xBB:key=10;break;//S11
  74.                         case 0xB7:key=11;break;//S12
  75.                         case 0x7E:key=12;break;//S13
  76.                         case 0x7D:key=13;break;//S14
  77.                         case 0x7B:key=14;break;//S15
  78.                         case 0x77:key=15;break;//S16
  79.                         default: key=0xFF;break;
  80.                         }
  81.                 }
  82.         }
  83.           return(key);
  84.   }
  85. void key_count(uchar num)
  86. {
  87.         Buffer[0]=LED[num/10];
  88.         Buffer[1]=LED[num%10];
  89.   }
  90. void buzz_on()
  91. {
  92. BUZZ=0;
  93. delay(1);
  94. BUZZ=1;
  95. delay(1);
  96. }
  97. void delay(uchar s)
  98. {
  99.         int j;
  100. while(s--)
  101.         for(j=0;j<20;j++);
  102.   }
复制代码
0.png
所有资料51hei提供下载:
病床呼叫系统.zip (18.59 KB, 下载次数: 123)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:433124 发表于 2018-11-25 23:11 | 显示全部楼层
请问您这个源代码是完整的吗,我用Isis仿真之后,数码管没有显示
回复

使用道具 举报

ID:302325 发表于 2018-11-26 08:38 | 显示全部楼层
感谢分享   赚钱下载              
回复

使用道具 举报

ID:492152 发表于 2019-6-8 13:56 | 显示全部楼层
很不错
回复

使用道具 举报

ID:1064114 发表于 2023-2-27 08:45 | 显示全部楼层
白衣 发表于 2018-11-25 23:11
请问您这个源代码是完整的吗,我用Isis仿真之后,数码管没有显示

我用proteus仿真数码管只亮,按键也没有显示
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表