欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
利用oled顯示的51單片機六人搶答器源代碼
[打印本頁]
作者:
愛學習009
時間:
2019-3-31 21:56
標題:
利用oled顯示的51單片機六人搶答器源代碼
這個是利用iic驅動的oled屏幕顯示,與數碼管顯示會有不同,但主要的程序還是一樣的,希望可以給大家提供一些資料
單片機源程序如下:
#include "reg52.h"
#include "intrins.h"
#include "codetab.h"
#include "LQ12864.h"
#include<stdio.h>
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
sbit beep=P2^3;
uchar key,j,k,temp,wei;
daojishi=5;
bit begin,end,clear;
int a0,b0;c0;d0;e0;f0=5;
unsigned int pp;
uchar diss[20]={0};
void delay1(int i) //延時函數
{
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void keyscan() //按鍵掃描
{
P3=0xfe;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay1(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xee:
key=1;
wei++;
break;
case 0xde:
key=2;
wei++;
break;
case 0xbe:
key=3;
wei++;
break;
case 0x7e:
key=4;
wei++;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
beep=0;
}
beep=1;
}
}
P3=0xfd;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xed:
key=5;
wei++;
break;
case 0xdd:
key=6;
wei++;
break;
case 0xbd:
clear=1;
break;
case 0x7d:
begin=1;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
beep=0;
}
beep=1;
}
}
}
void kaiji(void)
{
OLED_Init(); //OLED初始化
OLED_P16x16Ch(0,0,1); //初始顯示的字符
OLED_P16x16Ch(16,0,2);
OLED_P16x16Ch(33,0,3);
OLED_P16x16Ch(0,3,4);
OLED_P16x16Ch(16,3,5);
OLED_P16x16Ch(32,3,6);
OLED_P16x16Ch(0,6,7);
OLED_P16x16Ch(16,6,8);
OLED_P16x16Ch(32,6,9);
}
void fangui()
{
if(key!=0)
{
switch(wei) //傳遞字符,顯示
{
case 1: a0=key;
sprintf((int*)diss,"%d",a0);
OLED_P6x8Str(40,0,diss);
beep=0;
break;
case 2: b0=key;
sprintf((int*)diss,"%d",b0);
OLED_P6x8Str(40,0,diss);
beep=0;
break;
case 3: c0=key;
sprintf((int*)diss,"%d",c0);
OLED_P6x8Str(40,0,diss);
beep=0;
break;
case 4: d0=key;
sprintf((int*)diss,"%d",d0);
OLED_P6x8Str(40,0,diss);
beep=0;
break;
case 5: e0=key;
sprintf((int*)diss,"%d",e0);
OLED_P6x8Str(40,0,diss);
beep=0;
break;
case 6: f0=key;
sprintf((int*)diss,"%d",f0);
OLED_P6x8Str(40,0,diss);
beep=0;
break;
}
}
}
void main(void)
{
kaiji();
TMOD=0x01;
TH0=(65536-46080)/256;
TL0=(65536-46080)%256;//46080的來歷,為50000*11.0592/12
ET0=1;
EA=1;
while(1)
{
keyscan();
if(begin) //開始計時并搶答
{
if(!end)
{
TR0=1; //中斷開始
if(pp==20) //中斷次數
{
pp=0;
daojishi--;
}
sprintf((int*)diss,"%d",daojishi);
OLED_P6x8Str(40,6,diss);
if(key!=0)
{
a0=key; //倒計時結束
sprintf((int*)diss,"%d",a0);
OLED_P6x8Str(40,3,diss);
}
if(!daojishi|a0)
{
end=1;
TR0=0; //中斷暫停
pp=0;
}
}
}
else
{
fangui();
}
if(clear)
{
a0=0;key=0;begin=0;end=0;beep=1;daojishi=5;f0=5;clear=0; //數據清除
OLED_CLS();//清屏
kaiji();
}
}
}
void time0() interrupt 1 //中斷函數
{ TH0=(65536-46080)/256;
TL0=(65536-46080)%256;
pp++;
}
復制代碼
所有資料51hei提供下載:
單片機課設.zip
(43.62 KB, 下載次數: 7)
2019-3-31 21:53 上傳
點擊文件名下載附件
只有程序
下載積分: 黑幣 -5
作者:
admin
時間:
2019-4-1 05:12
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1