欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
51單片機四位抽獎機制作 帶時鐘功能 附源程序
[打印本頁]
作者:
Longing
時間:
2019-8-1 21:21
標題:
51單片機四位抽獎機制作 帶時鐘功能 附源程序
之前的帖子已經有在開發板上測試了一下,現在補充一個完整版,自己做了一個板,擴展了交流穩壓輸入模塊,可實現的功能有上電初始化顯示,四位同時抽獎,逐位抽獎,以及實時時鐘,程序,原理圖,制作出來的實物圖如下:
1.jpg
(157.27 KB, 下載次數: 75)
下載附件
2019-8-2 04:29 上傳
電路原理圖如下:
原理圖.jpg
(268.24 KB, 下載次數: 65)
下載附件
2019-8-1 21:16 上傳
如有不足的地方可以再交流一下哈,相互學習學習
單片機源程序如下:
#include <reg52.h>
#include <stdio.h>
#include <stdlib.h>
#include <main.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char code table_disp[]={0x05,0xaf,0x46,0x86,0xac,0x94,0x14,0xa7,0x04,0x84};//段碼表
/* 0 1 2 3 4 5 6 7 8 9 */
unsigned char code table_clock[]={0x01,0xab,0x42,0x82,0xa8,0x90,0x10,0xa3,0x00,0x80};//時鐘段碼表
uchar t2; //1s計數
uchar p;
uchar msta; //散轉變量
uchar hour,minute,second;
uchar q,w,e,r,y,u;
/**************函數聲明******************/
void init();
void keyscan();
void disp(uchar x3,uchar x2,uchar x1,uchar x0,bit s,uchar x);
//程序開始部分
void main(){
init();
while(1)
{
while(!TF0);
TH0=0xEC;
TL0=0x78;
TF0=0;
t2++;
keyscan();
disp(q,w,e,r,y,u);
if(t2==200)
{
t2=0;
second++;
if(second==60)
{
second=0;
minute++;
if(minute==60)
{
minute=0;
hour++;
if(hour==24)
hour=0;
}
}
}
switch(msta)
{
case 0:
{
q=0;
w=2;
e=3;
r=4;
if(key1==1)
{ msta=1;
led1=0;
p=0;}
break;}
case 1:
{
if(p==0)
{q=rand()%10;
w=rand()%10;
e=rand()%10;
r=rand()%10;}
if(key1==1)
{ key1=0;
msta=2;
led1=1;
led2=0;
p=0;}
if(key2==1)
p=1;
if(key3==1)
p=0;
break;}
case 2:
{
switch(p)
{
case 0:
r=rand()%10;
case 1:
e=rand()%10;
case 2:
w=rand()%10;
case 3:
q=rand()%10;
break;
}
if(key2==1)
p++;
if(key3==1)
p=0;
if(key1==1)
{ msta=3;
led2=1;
led3=0; }
break;
}
case 3:
{
y=1;
u=1;
q=hour/10;
w=hour%10;
e=minute/10;
r=minute%10;
if(key2==1)
{ hour++;
if(hour==24)
hour=0;}
if(key3==1)
{ minute++;
if(minute==60)
minute=0;}
if(key1==1)
{ msta=0;
y=u=0;
led3=1; }
break;
}
}
}}
/**************************
初始化函數定義
**************************/
void init(){
led0=0;
msta=0;
hour=12;
minute=30;
TMOD=0x01; //選擇定時器0,工作方式1
TH0=0xEC; //5ms計數初值
TL0=0x78;
TR0=1;
}
/**************************
顯示函數定義
**************************/
void disp(uchar x0,uchar x1,uchar x2,uchar x3,bit s,uchar x)
{static uchar dsbit,cut300;bit s300;
cs0=1;cs1=1;cs2=1;cs3=1; //關顯示
switch(dsbit)
{
case 0:
{
if(x==1)
P0=table_clock[x0];
else
P0=table_disp[x0];
cs0=0;
dsbit=1;
break;
}
case 1:
{
if(x==1)
P0=table_clock[x1];
else
P0=table_disp[x1];
cs1=0;
dsbit=2;
break;
}
case 2:
{
P0=table_disp[x2];
cs2=0;
dsbit=3;
break;
}
case 3:
{
P0=table_disp[x3];
cs3=0;
dsbit=0;
break;
}
}
cut300++;
if(cut300==100)
{ s300^=1;
cut300=0;}
if(s&&s300)
{ dot=1;
}
return;
}
復制代碼
以上程序51hei下載地址:
源程序.docx
(15.62 KB, 下載次數: 35)
2019-8-1 21:18 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
大佬教我單片機
時間:
2020-4-17 17:40
樓主好,我也想做一個這個東西,可以詳細介紹一下需要什么零件嗎?AT89S52,還有其他配件是什么型號呢?
作者:
大佬教我單片機
時間:
2020-4-17 19:30
你好,我是剛學單片機的萌新,想學做你的這個東西,可以留個聯系方式嗎?
作者:
Longing
時間:
2021-3-31 22:30
有段時間沒來論壇了,有問題的可以私信我
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1