久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
基于89C51單片機8位搶答器/帶蜂鳴器提示/lcd1602/proteus
[打印本頁]
作者:
了解@
時間:
2020-12-9 00:18
標題:
基于89C51單片機8位搶答器/帶蜂鳴器提示/lcd1602/proteus
主要功能:
key9:主持人鍵 黃燈
key1~8:搶答人鍵 紅燈
只有主持人按下后,搶答才有效,都有聲音提示
主持人按下前:lcd顯示 SUSPEND 暫停
主持人按下,搶答人按下前://lcd顯示 START 開始 // D9亮//時間開始倒計時
搶答人按下:lcd顯示 AND 結束 相應燈亮//時間停止
搶答結束所有按鍵不再起作用
Proteus仿真原理圖:
搶答器1602.PNG
(125.44 KB, 下載次數: 107)
下載附件
2020-12-9 00:11 上傳
C程序代碼:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit rs=P3^5;
sbit rw=P3^6;
sbit lcden=P3^7;
sbit button=P3^0;
sbit D9=P3^1;
sbit beep=P3^2;
uchar table1[]="SUSPEND";//暫停 //要顯示的字表
uchar table2[]="START ";//開始
uchar table3[]="AND ";//結束
uchar table4[]=" 00:03:00";//搶答時間
uchar fen,miao,sfmshi,sfmge,count,temp,flag,num,aa,bb,cc;
/*************************************************************
延時函數 ms
*************************************************************/
void delay(uint t)
{
uint x,y;
for(x=t;x>0;x--)
for(y=110;y>0;y--);
}
/*************************************************************
lcd1602指令寫入函數
*************************************************************/
void write_com(uchar com)
{
P0=com;
rs=0;//rs低,指令
rw=0;//低,寫
lcden=0;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
/*************************************************************
lcd1602數據寫入函數
*************************************************************/
void write_date(uchar date)
{
P0=date;
rs=1;//rs高,數據
rw=0;//低,寫
lcden=0;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
/*************************************************************
lcd1602初始化函數
*************************************************************/
void init()
{
fen=3;
miao=0;
write_com(0x38);//選擇16x2顯示,5x7點陣
delay(5);
write_com(0x0f);//開顯示,開光標,光標閃爍
delay(5);
write_com(0x06);//讀或寫后,指針加一,光標加一
delay(5);
write_com(0x01);//清屏
delay(5);
/***********************************
中斷初始化
************************************/
TMOD=0x01;//定時器T0,方式1
TH0=(65536-50000)/256;//裝高8位初值
TL0=(65536-50000)%256;//裝低8位初值
EA=1;//總中斷開
ET0=1;
TR0=0;//定時器T0關閉,待主持按下
}
/*************************************************************
顯示狀態函數
*************************************************************/
void display1()
{
uchar i;
write_com(0x80);//lcd1602第一行第一位 指令
delay(5);
for(i=0;i<7;i++)
{
if(flag==0)
write_date(table1[i]);
if(flag==1)
write_date(table2[i]);
if(flag==2)
write_date(table3[i]);
delay(5);
}
}
/*************************************************************
初始化時間函數
*************************************************************/
void display2()
{
uchar i;
write_com(0x80+0x40);//lcd1602第二行第一位 指令
delay(5);
for(i=0;i<12;i++)
{
write_date(table4[i]);
delay(5);
}
}
/*************************************************************
顯示時間函數
*************************************************************/
void sfm(uchar com,uchar date)
{
sfmshi=date/10;
sfmge=date%10;
write_com(0xc0+com);
delay(5);
write_date(0x30+sfmshi);
delay(5);
write_date(0x30+sfmge);
delay(5);
write_com(0x80+17);
}
/*************************************************************
按鍵檢測并時實還回按鍵號數
*************************************************************/
uchar keyscan()
{
if(P2!=0xff)
{
delay(5);//消抖
if(P2!=0xff)
switch(P2)
{
case 0xfe:num=1;break;
case 0xfd:num=2;break;
case 0xfb:num=3;break;
case 0xf7:num=4;break;
case 0xef:num=5;break;
case 0xdf:num=6;break;
case 0xbf:num=7;break;
case 0x7f:num=8;break;
default:break;
}
while(P2!=0xff);//松手檢測
}
if(button==0)
{
delay(5);
if(button==0&&cc==0)
{
while(button==0);
num=9;
TR0=1;
cc=1;
beep=0;
delay(500);
beep=1;
}
}
return num;
}
/*************************************************************
main函數
*************************************************************/
void main()
{
init();
display1();
display2();
write_com(0x0c);//開顯示,關閉光標,不閃爍
delay(5);
while(1)
{
keyscan();
if(num==9&&TR0!=0)
{display1();aa=1;}
if(aa==1)
{
D9=0;
flag=1;
switch(num)
{
case 1:
{P1=0xfe;TR0=0;flag=2;display1();aa=0;break;}
case 2:
{P1=0xfd;TR0=0;flag=2;display1();aa=0;break;}
case 3:
{P1=0xfb;TR0=0;flag=2;display1();aa=0;break;}
case 4:
{P1=0xf7;TR0=0;flag=2;display1();aa=0;break;}
case 5:
{P1=0xef;TR0=0;flag=2;display1();aa=0;break;}
case 6:
{P1=0xdf;TR0=0;flag=2;display1();aa=0;break;}
case 7:
{P1=0xbf;TR0=0;flag=2;display1();aa=0;break;}
case 8:
{P1=0x7f;TR0=0;flag=2;display1();aa=0;break;}
default:break;
}
}
if(flag==2&&bb==0)
{
write_com(0x80+12);
write_date(0x30+num);
write_date(0x50+7);
write_date(0x40+9);
write_date(0x40+14);
bb=1;
beep=0;
delay(500);
beep=1;
}
}
復制代碼
因文章限制,全部資料在下面壓縮包中........
多路搶答器.zip
(94.28 KB, 下載次數: 64)
2020-12-9 00:18 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
wuwenyu
時間:
2020-12-17 12:32
為什么這個代碼我復制了,但是創建不了,麻煩大神求救!
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
精品国产一区二区三区性色av
|
黄网免费
|
日韩欧美精品一区
|
国产精品亚洲一区
|
黄频视频
|
国产精品久久久久久久久久久久
|
亚洲影视在线
|
日韩精品中文字幕一区二区三区
|
日韩成人在线看
|
国产精品国产精品国产专区不蜜
|
伦理二区
|
久久av在线播放
|
中文日韩字幕
|
а√中文在线8
|
成人免费久久
|
日韩中文字幕视频在线观看
|
久久久久久久久国产成人免费
|
毛片久久久
|
2019中文字幕视频
|
色呦呦网站
|
精品福利一区
|
在线视频 欧美日韩
|
国产精品不卡一区二区三区
|
国产成人精品一区二区
|
国产高清视频在线观看
|
亚洲精品99
|
国产综合精品
|
91精品国产综合久久精品图片
|
草b视频
|
免费看91
|
久久99这里只有精品
|
欧美成人一区二区
|
色本道
|
伦理二区
|
欧美精品一区二区三区在线播放
|
在线观看中文字幕亚洲
|
久久久久久黄
|
秋霞a级毛片在线看
|
在线一区
|
91资源在线
|
日韩中文字幕一区二区三区
|