标题:
51单片机外部正脉冲宽度测量并显示在LED数码管 仿真程序
[打印本页]
作者:
onlybully
时间:
2023-6-3 23:20
标题:
51单片机外部正脉冲宽度测量并显示在LED数码管 仿真程序
看到这类资料比较少,拿去学习使用
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
运行图.jpg
(1.05 MB, 下载次数: 52)
下载附件
2023-6-3 23:20 上传
单片机源程序如下:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define uLint unsigned long int
void delayMs(uint x);
uchar countInterrupt=0;
sbit P3_3=P3^3;
uchar code seg_table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uint displayTable[]={0,0,0,0,0,0,0,0};
void main(void)
{
uchar cBitCode,i;
uLint count;
ET1=1;
EA=1;
TH1=0;
TL1=0;
TMOD=0x90;//gate=1,method 1
while(P3_3==1);
TR1=1;
while(P3_3==0);
while(P3_3==1);
TR1=0;
count=(uLint)TH1*256+TL1;
count=count*2;
count=(uLint)countInterrupt*65536*2+count;
displayTable[0]=count/10000000;
displayTable[1]=count%10000000/1000000;
displayTable[2]=count%1000000/100000;
displayTable[3]=count%100000/10000;
displayTable[4]=count%10000/1000;
displayTable[5]=count%1000/100;
displayTable[6]=count%100/10;
displayTable[7]=count%10;
while(1)
{
cBitCode=0x01;
for(i=0;i<8;i++)
{
P2= ~ seg_table[displayTable[i]];
P1= ~cBitCode;
delayMs(1);
P1=0xFF;
cBitCode<<=1;
}
}
}
void delayMs(uint x)
{
uchar j;
while(x--)
{
for(j=0;j<125;j++)
;
}
}
void timer1_src(void) interrupt 3
{
countInterrupt++;
}
复制代码
Keil代码与Proteus仿真下载:
仿真程序.7z
(76.68 KB, 下载次数: 27)
2023-6-4 23:20 上传
点击文件名下载附件
原理仿真图
下载积分: 黑币 -5
[attach]315157[/attach]
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1