新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)制作媚眼激活儀的c代碼

單片機(jī)制作媚眼激活儀的c代碼

作者: 時(shí)間:2012-11-24 來源:網(wǎng)絡(luò) 收藏

這是一個(gè)完整的用51系列做的的代碼,有這方面需要的朋友可以看看,代碼已經(jīng)測試成功。
/*
項(xiàng)目名稱:
相關(guān)知識點(diǎn):驅(qū)動(dòng)發(fā)熱器件,數(shù)碼管顯示,按鍵操作等。
程序開發(fā):http://www.51hei.com單片機(jī)教程網(wǎng)。
*/
#include reg51.H>
#define uint unsigned int
#define uchar unsigned char
#define duan P0 //將P1口段顯示定義為duan標(biāo)號
#define keyio P3 //將P3口設(shè)為按鍵檢測的端口

uchar time,guannum,guantime1,guantime2;//time為分鐘值,光顯示時(shí)間值
uint b; //50MS為1次,則1分鐘為1200次即可
bit xsd,onandoff; //小數(shù)點(diǎn)閃爍位變量,開關(guān)機(jī)變量標(biāo)志位

sbit xuanled=P2^3;
sbit guanled=P2^5;
sbit rfled=P2^7;//三個(gè)指示燈位控制
sbit xsdbit=P0^6;// 小數(shù)點(diǎn)實(shí)際硬件輸出引腳定義
sbit gewela=P2^0;//個(gè)位數(shù)碼管位控制
sbit shiwela=P2^1;//十位數(shù)碼管鎖定位控制
sbit guanout=P1^0;//光譜輸出
sbit rfout=P1^1; //RF發(fā)熱頭輸驅(qū)動(dòng)
sbit xuanout=P1^2; //旋磁輸出
sbit fmqout=P1^3;


uchar code tab[]={0x48,0xee,0x54,0x64,0xe2,0x61,0x41,0xec,0x40,0x60,0xf7};//數(shù)碼管段顯示編碼0~9,待編寫
void chushi(void); //進(jìn)入主函數(shù)時(shí)初始化
void key(void); //按鍵檢測
void display(uchar time);//數(shù)碼管顯示處理程序
void chushi1(void); //進(jìn)行大循環(huán)函數(shù)初始化處理

void delay(uchar num)//延時(shí)模塊程序
{
uchar c,d;
for(c=num;c>0;c--)
for(d=40;d>0;d--);
}


void main() //主函數(shù)程序體
{
uchar a;
chushi();

while(1)
{
chushi1();
key(); //按鍵檢測
if(keyio!=0xff)
fmqout=0;
else fmqout=1;
if(onandoff!=0)
{
for(a=100;a>0;a--)
{
duan=tab[10]; //開段顯示,顯示中間筆段
gewela=0;
shiwela=0;
delay(10);
gewela=1;
shiwela=1;
}

while(onandoff!=0)
{
display(time);
key();
if(time==0b>=1000)
fmqout=xsd;
else if(keyio==0xff)
fmqout=1;
else fmqout=0;

}
for(a=200;a>0;a--)
display(time);
}
}

}

void time0() interrupt 1
{
TH0=0x3c;
TL0=0xb0;
b++;
if(b==1200)
{
b=0;
if(time!=0)
time--;
else onandoff=0; //置零標(biāo)志位
}

if(b%10==0)
xsd=~xsd; //小數(shù)點(diǎn)的位變量按1S的周期進(jìn)行變化
if(guannum==2||guannum==3)
{
guantime2--;
if(guantime2==0)
{
guantime2=guantime1;
guanout=~guanout;
}
}
}


上一頁 1 2 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉