c#實現(xiàn)51單片機(jī)頻率計的代碼分享(數(shù)字頻率計設(shè)計)
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
//按鍵
sbit button=P1^7;
//LED
sbit led2=P3^5;
sbit led3=P3^7;
//數(shù)碼管位選
sbit c0 = P3^0;
sbit c1 = P3^1;
sbit c2 = P3^2;
sbit c3 = P3^3;
//數(shù)碼管段碼
uchar code dm[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
uchar wm[]={0,0,0,0};
ulong pl;
uchar mode;
void delay3ms(void) //誤差 0us
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=176;b>0;b--)
for(a=7;a>0;a--);
}
void smg()
{
static uchar i=0;
c0=1;c1=1;c2=1;c3=1;
P1 = 0XFF;
switch(i)
{
case 0: c0=0;
break;
case 1: c1=0;
break;
case 2: c2=0;
break;
case 3: c3=0;
break;
}
P1 = dm[wm[i]];
i++;
if(i>3)
{
i=0;
}
}
void ledmode()
{
switch(mode)
{
case 0:led2=led3=0;
break;
case 1:led2=1;led3=0;
break;
case 2:led2=0;led3=1;
break;
case 3:led2=led3=1;
break;
}
}
void key()
{
static uchar num;
delay3ms();
button=1;
switch(num)
{
case 0: if(!button)
{
num=1;
}
break;
case 1: if(!button)
{
if(mode<3)
{
mode++;
}
else
{
mode=0;
}
num=2;
}
else
{
num=0;
}
break;
case 2: if(button)num=3;
break;
case 3: if(button)num=0;
break;
}
}
void timeinit()
{
TMOD=0x15; //設(shè)置T0T1控制字
TH0=0x00;
TL0=0x00;
TH1=0xfC;
TL1=0x18;
ET0=1; //定時器0中斷允許
ET1=1;
TR0=1; //啟動T0計數(shù)
TR1=1; //并啟動T1計數(shù)
EA=1; //CPU開中斷
}
void main()
{
timeinit();
while(1)
{
smg();
ledmode();
key();
}
}
void t1()interrupt 3
{
static uint time;
TR0=0;
TH1=(65536-10000)/256;
TL1=(65536-10000)%256;
time++;
if(time>99)
{
time=0;
pl=TH0*256+TL0;
wm[0]=(pl/1000)%10;
wm[1]=(pl/100)%10;
wm[2]=(pl/10)%10;
wm[3]=pl%10;
TH0=TL0=0;
}
TR0=1;
}
相關(guān)文章
C#調(diào)用WinAPI部分命令的方法實現(xiàn)
本文主要介紹了C#調(diào)用WinAPI部分命令的方法實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-01-01C# 基于udp廣播收集局域網(wǎng)類所有設(shè)備信息
這篇文章主要介紹了C# 基于udp廣播收集局域網(wǎng)類所有設(shè)備信息的方法,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下2020-12-12如何在UpdatePanel中調(diào)用JS客戶端腳本
本文將介紹如何在UpdatePanel中調(diào)用JS客戶端腳本,需要了解的朋友可以參考下2012-12-12Visual Studio 未能加載各種Package包的解決方案
打開Visual Studio 的時候,總提示未能加載相應(yīng)的Package包,有時候還無法打開項目,各種錯誤提示,怎么解決呢?下面小編給大家?guī)砹薞isual Studio 未能加載各種Package包的解決方案,一起看看吧2016-10-10C#探秘系列(一)——ToDictionary,ToLookup
這個系列我們看看C#中有哪些我們知道,但是又不知道怎么用,又或者懶得去了解的東西,比如這篇我們要介紹的toDictionary和ToLookup。2014-05-05C# datagridview、datagrid、GridControl增加行號代碼解析
今天這篇文章小編就來給大家分享關(guān)于C# datagridview、datagrid、GridControl增加行號的介紹,主要包括WinForm中datagridview增加行號、WPF中datagrid增加行號、WPF dev控件GridControl增加行號三個內(nèi)容,感興趣等我小伙伴可以參考一下2021-10-10C#如何使用DateTime.Now.AddDays方法獲取任一天的信息
使用DateTime.Now屬性可以得到當(dāng)前的日期信息,此時調(diào)用ToString方法,并在該方法中添加指定的格式化字符串,可以按照要求輸出當(dāng)前日期的信息,本文介紹C#使用DateTime.Now.AddDays方法獲取任一天的信息,感興趣的朋友一起看看吧2024-01-01