久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
請各位大佬看一下,我編的lcd屏八路搶答器存在問題,不能正常顯示,請幫忙指出或改正
[打印本頁]
作者:
szrb
時間:
2017-5-28 18:49
標題:
請各位大佬看一下,我編的lcd屏八路搶答器存在問題,不能正常顯示,請幫忙指出或改正
我編這個程序的思路:在按下RESET鍵復位后,在沒按下START鍵時,選手按下鍵不做出響應,按下START鍵后,蜂鳴器發出信號,選手開始搶答,屏幕顯示倒計時,若有人搶答,則屏幕上顯示第一個按下按鍵的標號,蜂鳴器響起一會兒,對應相應的燈亮起,其他人按下無效,若無人搶答,則屏幕顯示倒計時至結束,顯示“Time Up!”。(希望大佬多多指導,多提出建議)
#include<reg52.h>
typedef unsigned char uint8;
typedef unsigned int uint16;
sbit SW1=P1^0;
sbit SW2=P1^1;
sbit SW3=P1^2;
sbit SW4=P1^3;
sbit SW5=P1^4;
sbit SW6=P1^5;
sbit SW7=P1^6;
sbit SW8=P1^7;
sbit START=P2^3;
sbit RESET=P2^4;
sbit ADD=P2^5;
sbit DEC=P2^6;
sbit Beep=P2^7;
sbit rs=P2^6; // 數據命令選擇
sbit rw=P2^5; //讀寫選擇
sbit e=P2^7; //使能
#define led P3
uint8 a[]="Ans successfully"; //要顯示的字符
uint8 num[]=" 12345678";//鍵盤數據
uint8 b[]="number ";
uint8 time[]="0123456789";//顯示倒計時
uint8 c[]="Time Up!";
uint8 d[]="Remaining Time:";
uint8 si[]="s";
uint8 i,t=0,n=0,m=0,s=1;
uint8 input=30; //默認剩余時間30秒
void delay(uint16);
void wrc(uint8); //寫命令
void wrd(uint8); //寫數據
void init();
void time0init();
uint8 keyscan(); //鍵盤掃描
void keypros(); //按鍵處理
void display();
void deng(uchar);
void FUWEI();
void main()
{
init();
time0init();
while(1)
{
display();
}
}
void delay(uint16 i)
{
while(i--);
}
void wrc(uint8 c) //寫命令
{
delay(1000);
rs=0;
rw=0;
e=0;
P0=c;
e=1;
delay(10);
e=0;
}
void wrd(uint8 dat) //寫數據
{
delay(1000);
rs=1;
rw=0;
e=0;
P0=dat;
e=1;
delay(10);
e=0;
rs=0;
}
void init()
{
delay(1000);
wrc(0x38);
wrc(0x38);
wrc(0x38);
wrc(0x06);
wrc(0x0c);
wrc(0x01);
}
void time0init()
{
TMOD=0X01;
TH0=0XFC;
TL0=0X18;
TR0=1;
ET0=1;
EA=1;
}
uint8 keyscan() //鍵盤掃描
{
uint8 value;
if(RESET==0)
{
delay(200);
FUWEI();
s=1; //表示還沒開始搶答
}
if(s)
{
if(START==0) //開始搶答(需要自鎖)
{
TR0=1; //開啟定時器
Beep=1;
delay(500); //報警500ms
Beep=0;
m=1; //開啟選手搶答權限
s=0;//自鎖
}
}
if(s)
{
if(ADD==0)
{
delay(200); //防止按鍵抖動重復加一
input++; //時間加一
}
if(DEC==0)
{
delay(200);
input--; //時間減一
}
}
if(m) //按下開始,檢查按鍵
{
P1=0xff;
if(P1!=0xff) //如果搶答,找出編號
{
value=P1;
return value;
}
}
}
void keypros() //按鍵處理
{
uint8 key=0;
key=keyscan();
switch(key)
{
case 0xfe: n=1;break;//一號選手
case 0xfd: n=2;break;//二號選手
case 0xfb: n=3;break;//三號選手
case 0xf7: n=4;break;//四號選手
case 0xef: n=5;break;//五號選手
case 0xdf: n=6;break;//六號選手
case 0xbf: n=7;break;//七號選手
case 0x7f: n=8;break;//八號選手
default : n=0;break;
}
TR0=0; //關定時器,時間不再減少
}
void display()
{
uint8 i;
if(m)
{
if(n!=0)
{
wrc(0x00+0x80);
for(i=0;i<16;i++)
{
wrd(a[i]);
}
wrc(0x40+0x80);
for(i=0;i<15;i++)
{
wrd(b[i]);
}
wrd(num[n]);
deng(n);
}
if(n=0&&input>0)
{
wrc(0x00+0x80);
for(i=0;i<16;i++)
{
wrd(d[i]);
}
wrc(0x40+0x80);
wrd(time[input/10]);
wrd(time[input%10]);
for(i=0;i<16;i++)
{
wrd(si[i]);
}
}
}
}
void deng(uint8 n)
{
switch(n)
{
case 1:led=0x01;break;
case 2:led=0x02;break;
case 3:led=0x04;break;
case 4:led=0x08;break;
case 5:led=0x10;break;
case 6:led=0x20;break;
case 7:led=0x40;break;
case 8:led=0x80;break;
}
}
void FUWEI()
{
TR0=0; //關定時器
TH0=(65536-50000)/256; //重裝初值
TL0=(65536-50000)%256; //低8位
t=0; //中斷函數計數清零
Beep=1;
delay(500); //報警500ms
Beep=0; //
n=0; //選手編號清零
input=30; //設置剩余時間
led=0x00;
}
void timer0() interrupt 1
{
TH0=0XFC;
TL0=0X18;
keypros();
}
void timer1() interrupt 1
{
TH1=(65536-50000)/256; //重裝初值
TL1=(65536-50000)%256;
t++;
if(t==20)
{
t=0;
input--;
if(input==0) //沒人搶答,自動復位
{
for(i=0;i<16;i++)
{
wrd(c[i]);
}
delay(10000);
FUWEI();
}
}
}
復制代碼
作者:
szrb
時間:
2017-9-10 22:15
/**********************************************
LCD1602 八路搶答器
制作組 : 電子設計王者組
**********************************************/
#include<reg51.h>
#include<lcd1602.h>
sbit time_add=P2^3;
sbit time_dec=P2^2;
sbit START=P2^1;
sbit RESET=P2^0;
sbit beep=P2^4;
unsigned char num[]={'0','1','2','3','4','5','6','7','8','9'},num2;
unsigned char model,time,temp;
void init() //初始化函數
{
TMOD=0x01;
TH0=0x3c;
TL0=0xb0;
ET0=1;
TR0=0;
EA=1;
P2=0x0f;
model=0;
time=30;
}
void delay(unsigned char i) //延時
{
unsigned char j,k;
while(i--)
for(j=100;j>0;j--)
for(k=100;k>0;k--);
}
void star() //啟動
{
lcd_xml(0x80);lcd_xsj(" welcome ");
delay(100);
lcd_xml(0xc0);lcd_xsj("===>> ");
delay(30);
lcd_xml(0xc0);lcd_xsj("=======>> ");
delay(30);
lcd_xml(0xc0);lcd_xsj("=========>> ");
delay(30);
lcd_xml(0xc0);lcd_xsj("===========>> ");
delay(30);
lcd_xml(0xc0);lcd_xsj("==============>>");
delay(30);
lcd_xml(0xc0);lcd_xsj(" Good Luck! ");
lcd_xml(0x80);lcd_xsj(" 8 Way Responder");
delay(80);
}
void led_num() //刷新倒計時
{
lcd_xml(0x80);lcd_xsj(" Countdown : ");
lcd_xml(0x8d);lcd_xsj2(num[time/10]);
lcd_xml(0x8e);lcd_xsj2(num[time%10]);
}
void reset() //復位
{
TR0=0;
P2=0x0f;
P3=0x00;
model=0;
time=30;
led_num();
lcd_xml(0xc0);lcd_xsj(" Not started ");
}
void Not_started()
{
if(time_add==0)
{
delay(10);
if(time_add==0)
{
time++;
if(time==100)
time=0;
led_num();
}
}
if(time_dec==0)
{
delay(10);
if(time_dec==0)
{
time--;
if(time==0)
time=99;
led_num();
}
}
if(START==0)
{
delay(10);
if(START==0)
{
model=1;
lcd_xml(0xc0);
lcd_xsj(" Are you ready! ");
delay(80);
TR0=1;
lcd_xml(0xc0);
lcd_xsj(" Start Responder");
beep=1;delay(20);beep=0;
}
}
}
void anjian()
{
if(P1 != 0xff)
{
delay(5);
if(P1 != 0xff)
{
temp=~P1;
model=3;
beep=1;delay(10);beep=0;
switch(temp)
{
case 0x01:num2=1;break;
case 0x02:num2=2;break;
case 0x04:num2=3;break;
case 0x08:num2=4;break;
case 0x10:num2=5;break;
case 0x20:num2=6;break;
case 0x40:num2=7;break;
case 0x80:num2=8;break;
}
lcd_xml(0xc0);lcd_xsj(" Competitor: ");
lcd_xml(0xce);lcd_xsj2(num[num2]);
lcd_xml(0x80);lcd_xsj("Ans successfully");
time=60;
delay(80);
P3=temp;
}
}
}
void finish()
{
if(!time)
{
lcd_xml(0xc0);
lcd_xsj(" Time Up! ");
}
}
void main()
{
init();
lcd_init();
star();
reset();
while(1)
{
if(RESET==0) //復位鍵檢測
{
delay(1);
if(RESET==0)
reset();
}
switch(model)
{
case 0:Not_started();break;
case 1:anjian();break;
case 2:finish();break;
case 3:break;
default : model=0;break;
}
}
}
void timee() interrupt 1 //1s函數中斷
{
unsigned char a;
TH0=0x3c;
TL0=0xb0;
a++; //是否滿1s
if(a==24)
{
a=0;
if(model==1 || model==3)
{
time--;
led_num();
if(time==0)
{
model=2;
beep=1;delay(20);beep=0;
}
}
}
}
#define lcd_db P0 //數據口定義
sbit lcd_rs=P2^6;
sbit lcd_rw=P2^5;
sbit lcd_e=P2^7;
//延時函數
void lcd_delay()
{
unsigned char i;
for(i=0;i<100;i++);
}
//寫數據串函數
void lcd_xsj(unsigned char dat[])
{
unsigned char a;
for(a=0;a<16;a++)
{
lcd_rs=1;
lcd_rw=0;
lcd_db=dat[a];
lcd_e=0;lcd_delay();
lcd_e=1;lcd_delay();
lcd_e=0;lcd_delay();
}
}
//寫數據函數
void lcd_xsj2(unsigned char dat)
{
lcd_rs=1;
lcd_rw=0;
lcd_db=dat;
lcd_e=0;lcd_delay();
lcd_e=1;lcd_delay();
lcd_e=0;lcd_delay();
}
//寫命令函數
void lcd_xml(unsigned char ml)
{
lcd_rs=0;
lcd_rw=0;
lcd_db=ml;
lcd_e=0;lcd_delay();
lcd_e=1;lcd_delay();
lcd_e=0;lcd_delay();
}
//初始化函數
void lcd_init()
{
lcd_xml(0x38);
lcd_xml(0x0c);
lcd_xml(0x01);
lcd_xml(0x06);
}
作者:
szrb
時間:
2017-9-10 22:24
/**********************************************
LCD1602 八路搶答器
制作組 : 電子設計王者組
**********************************************/
#include<reg51.h>
#include<lcd1602.h>
sbit time_add=P2^3;
sbit time_dec=P2^2;
sbit START=P2^1;
sbit RESET=P2^0;
sbit beep=P2^4;
unsigned char num[]={'0','1','2','3','4','5','6','7','8','9'},num2;
unsigned char model,time,temp;
void init() //初始化函數
{
TMOD=0x01;
TH0=0x3c;
TL0=0xb0;
ET0=1;
TR0=0;
EA=1;
P2=0x0f;
model=0;
time=30;
}
void delay(unsigned char i) //延時
{
unsigned char j,k;
while(i--)
for(j=100;j>0;j--)
for(k=100;k>0;k--);
}
void star() //啟動
{
lcd_xml(0x80);lcd_xsj(" welcome ");
delay(100);
lcd_xml(0xc0);lcd_xsj("===>> ");
delay(30);
lcd_xml(0xc0);lcd_xsj("=======>> ");
delay(30);
lcd_xml(0xc0);lcd_xsj("=========>> ");
delay(30);
lcd_xml(0xc0);lcd_xsj("===========>> ");
delay(30);
lcd_xml(0xc0);lcd_xsj("==============>>");
delay(30);
lcd_xml(0xc0);lcd_xsj(" Good Luck! ");
lcd_xml(0x80);lcd_xsj(" 8 Way Responder");
delay(80);
}
void led_num() //刷新倒計時
{
lcd_xml(0x80);lcd_xsj(" Countdown : ");
lcd_xml(0x8d);lcd_xsj2(num[time/10]);
lcd_xml(0x8e);lcd_xsj2(num[time%10]);
}
void reset() //復位
{
TR0=0;
P2=0x0f;
P3=0x00;
model=0;
time=30;
led_num();
lcd_xml(0xc0);lcd_xsj(" Not started ");
}
void Not_started()
{
if(time_add==0)
{
delay(10);
if(time_add==0)
{
time++;
if(time==100)
time=0;
led_num();
}
}
if(time_dec==0)
{
delay(10);
if(time_dec==0)
{
time--;
if(time==0)
time=99;
led_num();
}
}
if(START==0)
{
delay(10);
if(START==0)
{
model=1;
lcd_xml(0xc0);
lcd_xsj(" Are you ready! ");
delay(80);
TR0=1;
lcd_xml(0xc0);
lcd_xsj(" Start Responder");
beep=1;delay(20);beep=0;
}
}
}
void anjian()
{
if(P1 != 0xff)
{
delay(5);
if(P1 != 0xff)
{
temp=~P1;
model=3;
beep=1;delay(10);beep=0;
switch(temp)
{
case 0x01:num2=1;break;
case 0x02:num2=2;break;
case 0x04:num2=3;break;
case 0x08:num2=4;break;
case 0x10:num2=5;break;
case 0x20:num2=6;break;
case 0x40:num2=7;break;
case 0x80:num2=8;break;
}
lcd_xml(0xc0);lcd_xsj(" Competitor: ");
lcd_xml(0xce);lcd_xsj2(num[num2]);
lcd_xml(0x80);lcd_xsj("Ans successfully");
time=60;
delay(80);
P3=temp;
}
}
}
void finish()
{
if(!time)
{
lcd_xml(0xc0);
lcd_xsj(" Time Up! ");
}
}
void main()
{
init();
lcd_init();
star();
reset();
while(1)
{
if(RESET==0) //復位鍵檢測
{
delay(1);
if(RESET==0)
reset();
}
switch(model)
{
case 0:Not_started();break;
case 1:anjian();break;
case 2:finish();break;
case 3:break;
default : model=0;break;
}
}
}
void timee() interrupt 1 //1s函數中斷
{
unsigned char a;
TH0=0x3c;
TL0=0xb0;
a++; //是否滿1s
if(a==24)
{
a=0;
if(model==1 || model==3)
{
time--;
led_num();
if(time==0)
{
model=2;
beep=1;delay(20);beep=0;
}
}
}
}
#define lcd_db P0 //數據口定義
sbit lcd_rs=P2^6;
sbit lcd_rw=P2^5;
sbit lcd_e=P2^7;
//延時函數
void lcd_delay()
{
unsigned char i;
for(i=0;i<100;i++);
}
//寫數據串函數
void lcd_xsj(unsigned char dat[])
{
unsigned char a;
for(a=0;a<16;a++)
{
lcd_rs=1;
lcd_rw=0;
lcd_db=dat[a];
lcd_e=0;lcd_delay();
lcd_e=1;lcd_delay();
lcd_e=0;lcd_delay();
}
}
//寫數據函數
void lcd_xsj2(unsigned char dat)
{
lcd_rs=1;
lcd_rw=0;
lcd_db=dat;
lcd_e=0;lcd_delay();
lcd_e=1;lcd_delay();
lcd_e=0;lcd_delay();
}
//寫命令函數
void lcd_xml(unsigned char ml)
{
lcd_rs=0;
lcd_rw=0;
lcd_db=ml;
lcd_e=0;lcd_delay();
lcd_e=1;lcd_delay();
lcd_e=0;lcd_delay();
}
//初始化函數
void lcd_init()
{
lcd_xml(0x38);
lcd_xml(0x0c);
lcd_xml(0x01);
lcd_xml(0x06);
}
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
免费看91
|
成人福利网站
|
国产1区2区3区
|
视频一区二区三区中文字幕
|
av天天干
|
国产精品久久久久久久久久妇女
|
www国产亚洲精品久久网站
|
男女一区二区三区
|
国产激情在线观看
|
亚洲欧美中文字幕
|
成人亚洲精品久久久久软件
|
久久精品国产亚洲
|
成人精品一区二区
|
欧美一区二区三区在线
|
精品av天堂毛片久久久借种
|
国产99久久精品一区二区永久免费
|
亚洲一区二区av
|
久久久久国色av免费观看性色
|
一级黄色网页
|
亚洲性视频
|
91精品国产综合久久久久蜜臀
|
久久久久国产一级毛片
|
国产不卡一区
|
久久伊人久久
|
99视频在线
|
国产成人自拍一区
|
久久久精
|
www.操com
|
国产精品久久久久久久久久
|
欧美一区二区三区高清视频
|
在线观看国产精品视频
|
日本 欧美 国产
|
精品日韩欧美一区二区
|
国产高清在线视频
|
欧美精品一区二区三区在线
|
中文字幕av亚洲精品一部二部
|
久久久国产一区二区三区四区小说
|
女女百合av大片一区二区三区九县
|
午夜小视频在线观看
|
久久久国产精品一区
|
精品国产乱码久久久久久影片
|