找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 8475|回復(fù): 1
收起左側(cè)

驅(qū)動單片機數(shù)碼管程序改如何寫

[復(fù)制鏈接]
ID:2356 發(fā)表于 2008-8-30 09:15 | 顯示全部樓層 |閱讀模式
我想驅(qū)動單片機數(shù)碼管,我的 程序不曉得如何才能寫對/-------------------------------
// MCS51-Study.C
//------------------------------
// [文件包含] 程序中用到哪些C51標(biāo)準(zhǔn)函數(shù),就需要把該函數(shù)對應(yīng)的頭文件包含進來
//-----#include
#include
#include
//-----------------------------------
// 為提高書寫效率做以下宏定義
//-------------------------------
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long

#define CLOSE 1//為了邏輯清晰
#define OPEN 0



sbit SECOND_L =P2^0;//數(shù)碼管公共端控制位管腳
sbit SECOND_H =P2^1;


//=============================================
//======================全局變量=============
uchar timer_50ms;
uchar hour;
uchar minute;
uchar second;

uchar leddata[]={0xC7, //"0"
0xFA, //"1"
0xAB, //"2"
0xB7, //"3"
0x9A, //"4"
0x98, //"5"
0x88, //"6"
0xF9, //"7"
0x87, //"8"
0x97, //"9"
};
//------------------------------------------
// 鍵盤掃描相關(guān)的全局變量
//-----------------------------------------
uchar key_value_previous;
uchar key_press_counter;
uchar key_value_main;
//-------------------------------------
// 函數(shù)聲明
//------------------------------------------
void init_cpu(void);
void show_time(uchar hour_data,uchar minute_data,uchar second_data);
uchar key_scan(void);
//===============================
//===================== ======
//===================== 主程序==
//===================== =======
//========================================
void main (void)
{
init_cpu();
second = 0;

wqyloop:
show_time(hour,minute,second);
goto wqyloop;
}
//########################## 主程序結(jié)束 ########
//########################## 子程序開始 ########
// 函數(shù)功能:CPU初始化函數(shù)
// 串口波特率可以由T1或T2產(chǎn)生,本例中用T1產(chǎn)生波特率
// T1用于50毫秒精確定時

//=================================================
void init_cpu(void)
{
TMOD=0x10;//T1為16位計數(shù)器

TH1=0x4c;//11.0592M晶振時T1定時時間長度為50毫秒
TL1=0x00;
TR1=1;//T1開始定時

ET1=1;
EA=1;//CPU中斷開放
}
//=======================================
void show_time(uchar hour_data,uchar minute_data,uchar second_data)
{ uchar hour_data_h;
uchar hour_data_l;
uchar minute_data_h;
uchar minute_data_l;
uchar second_data_h;
uchar second_data_l;

hour_data_h = hour_data/10;
hour_data_l = hour_data%10;
minute_data_h = minute_data/10;
minute_data_l = minute_data%10;
second_data_h = second_data/10;
second_data_l = second_data%10;

//掃描顯示

P0 = leddata[second_data_h];
SECOND_H=OPEN;
SECOND_L=CLOSE;

P0 = leddata[second_data_l];
SECOND_H=CLOSE;
SECOND_L=OPEN;
}
//=====================================中斷=====
// T1中斷服務(wù)程序
//============================================
void T1_interrupt(void) interrupt 3
{ TH1=0x4c;//11.0592M晶振時T1定時時間長度為50毫秒
TL1=0x00;
timer_50ms++;//50毫秒中斷一次
if(timer_50ms==20)
{second = second+1;
if(second==60)
{second=0;
}
}
}
//======================================
回復(fù)

使用道具 舉報

ID:66501 發(fā)表于 2014-11-13 15:43 | 顯示全部樓層
掘墓高手,專挖古墓,一挖一個坑,坑坑見墓。。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表