找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3798|回復(fù): 0
收起左側(cè)

51單片機(jī)轉(zhuǎn)速表程序源碼

[復(fù)制鏈接]
ID:82781 發(fā)表于 2015-6-13 19:58 | 顯示全部樓層 |閱讀模式
#include<reg52.h>//51單片機(jī)頭文件

#define uchar unsigned char//宏定義
#define uint unsigned int
sbit ceshu=P3^2;
uchar code smg_du[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//數(shù)碼管段碼
uchar code smg_we[]={0x00,0x04,0x08,0x0c,0x10,0x14,0x18,0x1f};//數(shù)碼管位碼
uchar disp[8];//存儲拆開的數(shù)
uint cnt,cnt1,zs,k;//cnt溢出的數(shù)
uchar flag;
/////////
void delay_50us(uint t)//50us延時函數(shù)
{
uchar j;
for(;t>0;t--)
    for(j=19;j>0;j--);
}
/////////////
void dispose()//
{
disp[0]=zs/1000;
disp[1]=(zs%1000)/100;
disp[2]=(zs/100)/10;
disp[3]=zs%10;
}
/////////////
void display(void)
{
uchar i;
for(i=0;i<8;i++)
{
  P0=smg_du[disp[i]];
  P2=smg_we[i];
  delay_50us(2);
}
}   
////////
void initial()//初始化
{
TMOD=0x51; //定時器T1工作與計數(shù)器模式1,定時器T0工作于計時模式1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
///////
void main()
{
initial();
cnt=0;
while(1)
{
TR1=1;
TH1=0;
TL1=0;
flag=0;        // 時間還未滿1分鐘
while(flag==0);        // 時間未滿等待
zs=(TH1*256+TL1)*60/20;        // 計算速度,每周產(chǎn)生20個脈沖
dispose();
//display();
}
}
//////
void time0() interrupt 1//定時器T0中斷服務(wù)程序
{
uchar i;
for(i=0;i<8;i++)
{
  P0=smg_du[disp[i]];
  P2=smg_we[i];
  delay_50us(2);
}
cnt++;
if(cnt==20)
{
flag=1;
cnt=0;
}
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}



回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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