单片机排队叫号系统Proteus仿真程序 有取号键和叫号键以及重复叫号键 有注释

目录

1、前言

​ 2、程序

资料下载地址:单片机排队叫号系统Proteus仿真程序 有取号键和叫号键以及重复叫号键 有注释

1、前言

系统组成:STC89C52RC+Lcd1602+蜂鸣器+按键

具体介绍:

Lcd1602排队叫号系统,有取号显示窗和叫号显示窗。有取号键和叫号键以及重复叫号键。可以显示你前面有几人在等候。具体看图片上面。

 2、程序

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;//定时器0	init_lcd2();init_lcd1();		
}void main()
{init();while(1){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);//按键松手检测}					
}void write_order1(uchar order)//写指令函数	 液晶1
{rs1=0;en1=0;P0=order;delay(1);en1=1;delay(1);en1=0;	
}
void write_dat1(uchar dat)//写数据函数	 液晶1
{rs1=1;en1=0;P0=dat;delay(1);en1=1;delay(1);en1=0;	
}void init_lcd1()//液晶1初始化
{write_order1(0x38);write_order1(0x0c);write_order1(0x06);write_order1(0x80+1);
//	write_order1(0x01);//液晶必备的一些初始化for(i=0;i<16;i++)write_dat1(table1_1[i]);write_order1(0x80+0x40); //液晶显示换行for(i=0;i<16;i++)write_dat1(table1_2[i]);	
}void write_add1(uchar address,uchar dat)//指定地址写入数据
{write_order1(0x80+address);write_dat1(dat);
}void display_lcd1(uint num1,uchar windown)//液晶1显示
{uchar a,b,c,d;//用于液晶a=num1/1000;b=num1%1000/100;c=num1%1000%100/10;d=num1%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
{rs2=0;en2=0;P1=order;delay(1);en2=1;delay(1);en2=0;	
}
void write_dat2(uchar dat)//写数据函数	 液晶2
{rs2=1;en2=0;P1=dat;delay(1);en2=1;delay(1);en2=0;	
}void init_lcd2()//液晶2初始化
{write_order2(0x38);write_order2(0x0c);write_order2(0x06);write_order2(0x80);write_order2(0x00);for(i=0;i<12;i++)write_dat2(table2_2[i]);write_order2(0x80+0x40); //液晶显示换行for(i=0;i<12;i++)write_dat2(table2_1[i]);	
}void write_add2(uchar address,uchar dat)//指定地址写入数据
{write_order2(0x80+address);write_dat2(dat);
}
void write_add3(uchar address,uchar dat)//指定地址写入数据
{write_order2(0x80+0x40+address);write_dat2(dat);
}
void display_lcd2(uint num)//液晶2显示
{uchar a,b,c,d;//用于液晶uchar e,f,g,h;//显示等待人数a=num/1000;b=num%1000/100;c=num%1000%100/10;d=num%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(t0>20){TR0=0;t0=0;buzzer=1;}	
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/661529.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024最好用的ai画图工具是什么?

我就一句话&#xff0c;AI画图除了Midjourney和Stable DIffusion&#xff0c;其他都是弟弟。尤其是SD&#xff01;开源&#xff01;免费&#xff01;不用 &#xff01; 我愿称之为AI届的赛博菩萨&#xff01; 而且人都开源了&#xff0c;好不好用我还能不知道嘛&#xff1f; 目…

基于Springboot的在线博客网站

基于SpringbootVue的在线博客网站的设计与实现 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringbootMybatis工具&#xff1a;IDEA、Maven、Navicat 系统展示 用户登录 首页 博客标签 博客分类 博客列表 图库相册 后台登录 后台首页 用户管理 博客标…

深入解析C#特殊字符:概念、分类与使用方法

文章目录 前言一、特殊字符的定义二、特殊字符的分类与作用1.转义字符2. 格式字符3. 逻辑运算符4. 运算符5. 字符串6. 注释 三、$&#xff1a;字符串内插&#xff08;String Interpolation&#xff09;四、&#xff1a;逐字字符串&#xff08;Verbatim Strings&#xff09;五、…

【电子通识】写出优秀文档的8大秘籍

在日常工作中如开会&#xff08;写会议纪要&#xff09;、整理方案&#xff08;写可行性分析报告、方案评审报告&#xff09;、问题复盘&#xff08;写问题分析报告&#xff09;等工作场景&#xff0c;少不了文档做辅助。因此&#xff0c;如何写出优秀的文档、将信息清晰准确地…

牛客网刷题 | BC70 计算单位阶跃函数

目前主要分为三个专栏&#xff0c;后续还会添加&#xff1a; 专栏如下&#xff1a; C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读&#xff01; 初来乍到&#xff0c;如有错误请指出&#xff0c;感谢&#xff01; 描述 KiKi最近学习了信号…

【吊打面试官系列】Java高并发篇 - 为什么 wait 和 notify 方法要在同步块中调用?

大家好&#xff0c;我是锋哥。今天分享关于 【为什么 wait 和 notify 方法要在同步块中调用&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; 为什么 wait 和 notify 方法要在同步块中调用&#xff1f; Java API 强制要求这样做&#xff0c;如果你不这么做&#…

【个人博客搭建】(15)Redis缓存使用

1、下载nuget包&#xff1a;StackExchange.Redis; 并引用 using StackExchange.Redis; 2、配置信息 /* Redis缓存配置 */"Redis": {"Enabled": true,"ConnectionString": "127.0.0.1:6379,password123456"} 3、配置模型 public cla…

小剧场短剧影视小程序源码_后端PHP

项目运行截图 源码贡献 https://githubs.xyz/boot?app42 部署说明 linux/win任选 PHP版本&#xff1a;7.3/7.2&#xff08;测试时我用的7.2要安装sg扩展 &#xff09; 批量替换域名http://video.owoii.com更换为你的 批量替换域名http://120.79.77.163:1更换为你的 这两个…

PotatoPie 4.0 实验教程(34) —— FPGA实现摄像头图像二值化腐蚀效果

链接直达 https://item.taobao.com/item.htm?ftt&id776516984361 图像二值化腐蚀处理有什么作用&#xff1f; 图像二值化腐蚀处理在图像处理中起到了以下作用&#xff1a; 物体分割与提取&#xff1a;在图像二值化之后&#xff0c;通过腐蚀操作可以消除噪声、连接相邻的…

uniapp 对接 Apple 登录

由于苹果要求App使用第三方登录必须要求接入Apple登录 不然审核不过 所以&#xff1a; 一、勾选苹果登录 二、 设置AppId Sign In Apple 设置完成重新生成描述文件 &#xff01;&#xff01;&#xff01;&#xff01;证书没关系 示例代码&#xff1a; async appleLogin…

软件定义汽车落地的五大关键要素

1、架构升级 1.1 软件架构&#xff1a;分层解耦、服务化、API 接口标准化 随着企业向软件定义汽车开发方法的转变&#xff0c;软件架构也需要同步进行升级&#xff0c;引入面向服务的架构&#xff08;Service-Oriented Architecture&#xff0c;简称 SOA&#xff09;方法论。…

数据结构––队列

1.队列的定义 2.队列的分类 2.1循环队 2.2链式队 3.队列的实现 3.1循环队 3.1.1声明 typedef int QDataType; #define MAXSIZE 50 //定义元素的最大个数 /*循环队列的顺序存储结构*/ typedef struct {QDataType *data;int front; //头指针int rear; //尾指针 }Queue;…