標(biāo)題:
51單片機(jī)60秒顯示程序
[打印本頁(yè)]
作者:
ww51
時(shí)間:
2018-12-6 00:19
標(biāo)題:
51單片機(jī)60秒顯示程序
此程序通過(guò)定時(shí)器0計(jì)時(shí),然后每計(jì)時(shí)一秒顯示在數(shù)碼管上,總共計(jì)時(shí)60秒,每過(guò)60秒led狀態(tài)反轉(zhuǎn)一次,數(shù)碼管位選信號(hào)引腳為P2口,并且是通過(guò)138譯碼器來(lái)控制的,即3位控制8位,138譯碼器輸入信號(hào)引腳為P2^2,P2^3,P2^4;斷選信號(hào)引腳為P0口,此程序采用的是共陰極數(shù)碼管,com口為低電平,給高電平亮。led小燈控制引腳為P2^7口。
#include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
#define SEG P0
//#define SCANP P2
sbit LED=P2^7;
#define count_M1 50000
#define TH_M1 (65536-count_M1)/256
#define TL_M1 (65536-count_M1)%256
int count_T0=0;
#define count_M2 250
#define TH_M2 (256-count_M2)
#define TL_M2 (256-count_M2)
u8 count_T1=0;
u8 code TAB[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
u8 disp[2]={0x3f,0x3f};
u8 wei [2]={0x80,0x84};
u8 seconds=0;
//u8 scan=0x1c;
void delay(u16 i)
{
while(i--);
}
main()
{
IE=0x82;
TMOD=0x01;
TH0=TH_M1;TL0=TL_M1;
TR0=1;
while(1)
{
u8 i;
for(i=0;i<=1;i++)
{
// count_T1=0;
SEG=0x00;
delay(10);
// SCANP=~scan;
SEG=disp[i];
P2=wei[i];
delay(100);
}
// TH1=TH_M2;TL1=TL_M2;
// TR1=1;
// LED=1;
}
}
void T0_1s(void) interrupt 1
{
TH0=TH_M1;TL0=TL_M1;
if(++count_T0==20)
{
count_T0=0;
seconds++;
if(seconds==60)
{
seconds=0;
LED=~LED;
delay(10000);
}
}
disp[1]=TAB[seconds/10];
disp[0]=TAB[seconds%10];
}
復(fù)制代碼
作者:
admin
時(shí)間:
2018-12-6 04:26
補(bǔ)全原理圖或者詳細(xì)說(shuō)明一下電路連接即可獲得100+黑幣
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1