1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 基于51单片机的医院银行排队叫号系统proteus仿真程序原理图设计

基于51单片机的医院银行排队叫号系统proteus仿真程序原理图设计

时间:2022-01-09 23:00:54

相关推荐

基于51单片机的医院银行排队叫号系统proteus仿真程序原理图设计

硬件设计

(末尾附文件)

仿真图:

程序设计

#include<reg52.h>#define uchar unsigned char //宏定义#define uint unsigned int //宏定义#define ulong unsigned longsbit k0=P3^5; //取号用的按键sbit k1=P2^4; //呼叫患者的按键1sbit k2=P2^5; //呼叫患者的按键2sbit k3=P2^6; //呼叫患者的按键3sbit k4=P2^7; //呼叫患者的按键4sbit buzzer=P2^2; //蜂鸣器接口sbit rs1=P2^0;sbit en1=P2^1;sbit rs2=P3^0;sbit en2=P3^1;sbit p1=P3^2;sbit p2=P3^3;sbit p3=P3^6;sbit p4=P3^7;//重新呼叫按键uint num;//患者所领取的号码uint num1;//医生所呼叫的号码uint num2_1,num2_2,num2_3,num2_4;//为重新呼叫保留号码uchar windown;//诊室号uchar i,t0;uchar code table2[]="0123456789";uchar code table1_1[]="NO.0000 come to";uchar code table1_2[]="0.window,please!";//用于液晶1初始化显示uchar code table2_1[]="Now waiting:";uchar code table2_2[]="Your number:";//用于液晶2初始化显示void keyscan();//按键检测void write_order1(uchar order);//写指令函数 液晶1void write_dat1(uchar dat);//写数据函数 液晶1void init_lcd1();//液晶1初始化void write_add1(uchar address,uchar dat);//指定地址写入数据void display_lcd1(uint num,uchar );//液晶1显示void write_order2(uchar order);//写指令函数 液晶2void write_dat2(uchar dat);//写数据函数 液晶2void init_lcd2();//液晶2初始化void write_add2(uchar address,uchar dat);//指定地址写入数据void display_lcd2(uint num);//液晶2显示void delay(uchar z) //延时函数{uchar i,j;for(i=z;i>0;i--)for(j=110;j>0;j--);}bi(ulong t){ulong c;uint n;for(c=0;c<t;c++){for(n=0;n<50;n++);//延时buzzer=~buzzer; //取反输出到喇叭的信号}}void init()//初始化{t0=0;windown=0;num=0;buzzer=1;TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=0;//定时器0init_lcd2();init_lcd1();}void main(){init();while(1){keyscan();display_lcd2(num);}}void keyscan()//按键检测{if(k0==0)//患者叫号按键检测{delay(10);//延时消抖if(k0==0)num++;//号码数加1while(!k0);delay(10);//延时消抖while(!k0);//按键松手检测}if(k1==0)//一号诊室呼叫{delay(10);if(k1==0){if(num1<num){windown=1;num1++;TR0=1;num2_1=num1;display_lcd1(num1,windown);//液晶一显示当前呼叫的号码}}while(!k1);delay(10);//延时消抖while(!k1);//按键松手检测}if(k2==0)//二号诊室呼叫{delay(10);if(k2==0){if(num1<num){windown=2;num1++;TR0=1;num2_2=num1;display_lcd1(num1,windown);//液晶一显示当前呼叫的号码}}while(!k2);delay(10);//延时消抖while(!k2);//按键松手检测}if(k3==0)//三号诊室呼叫{delay(10);if(k3==0){if(num1<num){windown=3;num1++;TR0=1;num2_3=num1;display_lcd1(num1,windown);//液晶一显示当前呼叫的号码}}while(!k3);delay(10);//延时消抖while(!k3);//按键松手检测}if(k4==0)//四号诊室呼叫{delay(10);if(k4==0){if(num1<num){windown=4;num1++;TR0=1;num2_4=num1;display_lcd1(num1,windown);//液晶一显示当前呼叫的号码}}while(!k4);delay(10);//延时消抖while(!k4);//按键松手检测}if(p1==0)//一号诊室重新呼叫{delay(10);if(p1==0){TR0=1;display_lcd1(num2_1,1);}while(!p1);delay(10);//延时消抖while(!p1);//按键松手检测}if(p2==0)//二号诊室重新呼叫{delay(10);if(p2==0){TR0=1;display_lcd1(num2_2,2);}while(!p2);delay(10);//延时消抖while(!p2);//按键松手检测}if(p3==0)//三号诊室重新呼叫{delay(10);if(p3==0){TR0=1;display_lcd1(num2_3,3);}while(!p3);delay(10);//延时消抖while(!p3);//按键松手检测}if(p4==0)//四号诊室重新呼叫{delay(10);if(p4==0){TR0=1;display_lcd1(num2_4,4);}while(!p4);delay(10);//延时消抖while(!p4);//按键松手检测}}

.

文件仅供参考:

链接:/s/1nTCDdH67uMQRDR771aX7ig

提取码:9qlg

.

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。