网站织梦,企业网站系统源码,谷歌seo博客,做网站的一年能挣多少钱目录
1、前言
2、程序
资料下载地址#xff1a;单片机排队叫号系统Proteus仿真程序 有取号键和叫号键以及重复叫号键 有注释
1、前言
系统组成#xff1a;STC89C52RCLcd1602蜂鸣器按键 具体介绍#xff1a; Lcd1602排队叫号系统#xff0c;有取号显示窗和叫号显示窗…目录
1、前言
2、程序
资料下载地址单片机排队叫号系统Proteus仿真程序 有取号键和叫号键以及重复叫号键 有注释
1、前言
系统组成STC89C52RCLcd1602蜂鸣器按键 具体介绍 Lcd1602排队叫号系统有取号显示窗和叫号显示窗。有取号键和叫号键以及重复叫号键。可以显示你前面有几人在等候。具体看图片上面。 2、程序
void init()//初始化
{t00;windown0;num0;buzzer1;TMOD0x01;TH0(65536-50000)/256;TL0(65536-50000)%256;EA1;ET01;TR00;//定时器0 init_lcd2();init_lcd1();
}void main()
{init();while(1){display_lcd2(num);}
}
void keyscan()//按键检测
{if(k00)//患者叫号按键检测{delay(10);//延时消抖if(k00)num;//号码数加1while(!k0);delay(10);//延时消抖while(!k0);//按键松手检测}if(k10)//一号诊室呼叫{delay(10);if(k10){if(num1num){windown1;num1;TR01;num2_1num1;display_lcd1(num1,windown);//液晶一显示当前呼叫的号码} }while(!k1);delay(10);//延时消抖while(!k1);//按键松手检测}if(k20)//二号诊室呼叫{delay(10);if(k20){if(num1num){windown2;num1;TR01;num2_2num1;display_lcd1(num1,windown);//液晶一显示当前呼叫的号码} }while(!k2);delay(10);//延时消抖while(!k2);//按键松手检测}if(k30)//三号诊室呼叫{delay(10);if(k30){if(num1num){windown3;num1;TR01;num2_3num1;display_lcd1(num1,windown);//液晶一显示当前呼叫的号码} }while(!k3);delay(10);//延时消抖while(!k3);//按键松手检测}if(k40)//四号诊室呼叫{delay(10);if(k40){if(num1num){windown4;num1;TR01;num2_4num1;display_lcd1(num1,windown);//液晶一显示当前呼叫的号码} }while(!k4);delay(10);//延时消抖while(!k4);//按键松手检测}if(p10)//一号诊室重新呼叫{delay(10);if(p10){TR01;display_lcd1(num2_1,1); }while(!p1);delay(10);//延时消抖while(!p1);//按键松手检测}if(p20)//二号诊室重新呼叫{delay(10);if(p20){TR01;display_lcd1(num2_2,2); }while(!p2);delay(10);//延时消抖while(!p2);//按键松手检测}if(p30)//三号诊室重新呼叫{delay(10);if(p30){TR01;display_lcd1(num2_3,3); }while(!p3);delay(10);//延时消抖while(!p3);//按键松手检测}if(p40)//四号诊室重新呼叫{delay(10);if(p40){TR01;display_lcd1(num2_4,4); }while(!p4);delay(10);//延时消抖while(!p4);//按键松手检测}
}void write_order1(uchar order)//写指令函数 液晶1
{rs10;en10;P0order;delay(1);en11;delay(1);en10;
}
void write_dat1(uchar dat)//写数据函数 液晶1
{rs11;en10;P0dat;delay(1);en11;delay(1);en10;
}void init_lcd1()//液晶1初始化
{write_order1(0x38);write_order1(0x0c);write_order1(0x06);write_order1(0x801);
// write_order1(0x01);//液晶必备的一些初始化for(i0;i16;i)write_dat1(table1_1[i]);write_order1(0x800x40); //液晶显示换行for(i0;i16;i)write_dat1(table1_2[i]);
}void write_add1(uchar address,uchar dat)//指定地址写入数据
{write_order1(0x80address);write_dat1(dat);
}void display_lcd1(uint num1,uchar windown)//液晶1显示
{uchar a,b,c,d;//用于液晶anum1/1000;bnum1%1000/100;cnum1%1000%100/10;dnum1%10;write_add1(4,table2[a]);write_add1(5,table2[b]);write_add1(6,table2[c]);write_add1(7,table2[d]);write_add1(0x40,table2[windown]);
}
void write_order2(uchar order)//写指令函数 液晶2
{rs20;en20;P1order;delay(1);en21;delay(1);en20;
}
void write_dat2(uchar dat)//写数据函数 液晶2
{rs21;en20;P1dat;delay(1);en21;delay(1);en20;
}void init_lcd2()//液晶2初始化
{write_order2(0x38);write_order2(0x0c);write_order2(0x06);write_order2(0x80);write_order2(0x00);for(i0;i12;i)write_dat2(table2_2[i]);write_order2(0x800x40); //液晶显示换行for(i0;i12;i)write_dat2(table2_1[i]);
}void write_add2(uchar address,uchar dat)//指定地址写入数据
{write_order2(0x80address);write_dat2(dat);
}
void write_add3(uchar address,uchar dat)//指定地址写入数据
{write_order2(0x800x40address);write_dat2(dat);
}
void display_lcd2(uint num)//液晶2显示
{uchar a,b,c,d;//用于液晶uchar e,f,g,h;//显示等待人数anum/1000;bnum%1000/100;cnum%1000%100/10;dnum%10;write_add2(12,table2[a]);write_add2(13,table2[b]);write_add2(14,table2[c]);write_add2(15,table2[d]);if(num!num1) //显示前面等待的人数{e(num-num1-1)/1000;f(num-num1-1)%1000/100;g(num-num1-1)%1000%100/10;h(num-num1-1)%10;}else{e(num-num1)/1000;f(num-num1)%1000/100;g(num-num1)%1000%100/10;h(num-num1)%10; }write_add3(12,table2[e]);write_add3(13,table2[f]);write_add3(14,table2[g]);write_add3(15,table2[h]);
}void timer0() interrupt 1
{TH0(65536-50000)/256;TL0(65536-50000)%256;t0;bi(100);if(t020){TR00;t00;buzzer1;}
}