源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

c#实现51单片机频率计的代码分享(数字频率计设计)

  • 时间:2020-01-28 15:35 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:c#实现51单片机频率计的代码分享(数字频率计设计)
[u]复制代码[/u] 代码如下:
#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; //数码管位选 sbit c0 = P3^0; sbit c1 = P3^1; sbit c2 = P3^2; sbit c3 = P3^3; //数码管段码 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;  //设置T0T1控制字  TH0=0x00;  TL0=0x00;  TH1=0xfC;  TL1=0x18;  ET0=1;  //定时器0中断允许  ET1=1;  TR0=1;  //启动T0计数  TR1=1;  //并启动T1计数  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);   wm[1]=(pl/100);   wm[2]=(pl/10);   wm[3]=pl;   TH0=TL0=0;  }  TR0=1; }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部