标题:
医院叫号系统单片机程序设计
[打印本页]
作者:
wkings
时间:
2019-6-25 14:39
标题:
医院叫号系统单片机程序设计
主机通过按键完成叫号,数码管显示被叫的号,提醒顾客接受服务;
从机通过串行通信方式完成排队取号功能;
从机显示队列中排在其前面的顾客数;
单片机源程序如下:
#include <reg52.h>
#define LED P2
#define KEY P1
#define DIG P0
unsigned char GetKey(void);
void delay10ms(void);
unsigned char val[16] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void initSer (void); //串口初始化
unsigned char sendFlag = 0; //未发送数据时
unsigned char receFlag =0; //未接受到数据时
unsigned char key=0;
void sendChar(unsigned char sendValue); //发送一字节数据
void main(void)
{
initSer();
LED=val[key];
while(1)
{
key = GetKey();
while(key) //单片机串口收到任意数据后,开始向PC发送数据
{
LED=val[key];
sendChar(key); //发送数据
key=0; //发完了清标志
}
}
}
void serInt() interrupt 4 //中断函数
{
if(RI) //如果收到任意数据
{
RI = 0;
P1=SBUF; //数据的变化让led灯直观反应出来
receFlag=1; //修改接受标志,便于主函数进入while中发数据
}
if(TI)
{
TI = 0; //发送完一个数据
sendFlag = 0; //清标志位
}
}
void sendChar(unsigned char Value) //发送一个字节数据
{
SBUF = Value;
sendFlag = 1; //设置发送标志位,发一字节就置位
while(sendFlag); //直到发完数据,将sendFlag清零后,才退出sendChar函数
}
void initSer() //初始化
{
//注意:刚上电时,SCON是为0的
TMOD=TMOD|0x20; //T1定时器模式,工作方式2
TH1=0Xfd; // 256-(11059200/(32*12*9600))
TL1=0xfd;
SM0=0; //属于SCON寄存器
SM1=1; //串口工作方式1,10位异步,波特率可改
REN=1; //允许串口接收
ES=1; //开串口中断
EA=1; //开总中断
TR1=1; //启动定时器
}
unsigned char GetKey(void)
{
unsigned char hang = 0, lie = 0;
unsigned char keyvalue = 0;
// 第1回合第1步
KEY = 0x0f; // 从IO口输出,写IO口
if (KEY != 0x0f)// 从IO口输入,读IO口
{
// 读出的不是0x0f说明有按键被按下
// 第1回合第2步:读出端口从读出值来判断是哪一行
delay10ms();
// 第一回合中算出行号
switch (KEY)
{
case 0x0e:hang = 1; break;
case 0x0d: hang = 2; break;
case 0x0b: hang = 3; break;
case 0x07: hang = 4; break;
default: break;
}
// 第2回合第1步
KEY = 0xf0;
if (KEY != 0xf0)
{
switch (KEY)
{
case 0xe0:lie = 1; break;
case 0xd0: lie = 2; break;
case 0xb0: lie = 3; break;
case 0x70: lie = 4; break;
default: break;
}
// 经过2个回合后hang和lie都知道了,然后根据hang和lie去计算键值即可
keyvalue = (hang - 1) * 4 + lie;
return keyvalue;
}
}
return 0;
}
void delay10ms(void) //误差 0us
{
unsigned char a,b,c;
for(c=5;c>0;c--)
for(b=4;b>0;b--)
for(a=248;a>0;a--);
}
复制代码
所有程序51hei提供下载:
kunkun.zip
(58.49 KB, 下载次数: 27)
2019-6-25 14:38 上传
点击文件名下载附件
仿真和程序
下载积分: 黑币 -5
作者:
yilinghai
时间:
2019-7-1 16:29
里面只有程序吗?还是仿真加程序的
作者:
wkings
时间:
2021-12-15 08:24
yilinghai 发表于 2019-7-1 16:29
里面只有程序吗?还是仿真加程序的
程序仿真都有
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1