1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉
標題:
單片機頻率計源碼
[打印本頁]
作者:
lgjdqm
時間:
2018-8-21 16:37
標題:
單片機頻率計源碼
#include<reg51.h>
#include <stdio.h>
#define uchar unsigned char
uchar display_code[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};
//定義數組存放顯示數據的編碼
uchar display_data[8]={0,0,0,0,0,0,0,0}; //定義數組存放顯示數據的各位
uchar c1,b1;
sbit P1_1=P1^1;
void delay(void) //延時
{
uchar i;
for(i=500;i>0;i--);
}
void display() //顯示程序
{
uchar i,k;
k=0x01;
for(i=0;i<8;i++)
{
P2=0;
P0=display_code[display_data[i]];
P2=k;
k=k<<1;
delay();
}
P2=0;
}
void convert() //轉換程序
{
uchar i,f2;
long f,f1,k;
f=c1*65536+TH1*256+TL1 ;
f1=f-f%10; //此變量是為了讓八位LED的高位為0時不顯示而設置
for(i=7;i>0;i--) //此循環將計數值轉換為顯示數組,從高位到低位依次存放在
//display_data[0]至display_data[7]
{display_data[i]=f%10;
f=f/10;
}
display_data[0]=f;
k=1e7; //從這開始到本子程序結束的語句完成讓八位LED的高位為0時不顯示
for(i=0;i<7;i++)
{f2=f1/k;
if(f2==0)
{
display_data[i]=10;
k=k/10;
}
}
}
void timer1(void) interrupt 3 //定時器1中斷服務程序
{
c1++;
}
void timer0(void) interrupt 1 //定時器0中斷服務程序
{
TH0=0xb1; //裝入時間常數
TL0=0xe0;
P1_1=!P1_1; //P1.1取反,從P1.1引腳輸出25Hz的方波信號,通過導線連接
//到P3.5引腳輸入,以方便調試程序。若使用其它信號源,則去掉即可。
if (b1==49)
{
convert();
c1=0; //將計數值清零
b1=0;
TH1=0;
TL1=0;
}
else b1++;
}
void main(void) //主函數
{
P1_1=0;
c1=0;
b1=0;
TH1=0;
TL1=0;
TMOD=0x51;
TH0=0Xb1;
TL0=0Xe0;
IE=0x8a;
TCON=0x50;
while(1)
{
display();
}
復制代碼
作者:
admin
時間:
2018-8-21 17:23
補全原理圖與介紹后即可獲得100+黑幣,,不然此貼是無意義的
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1