仪器网(yiqi.com)欢迎您!

| 注册 登录
网站首页-资讯-专题- 微头条-话题-产品- 品牌库-搜索-供应商- 展会-招标-采购- 社区-知识-技术-资料库-方案-产品库- 视频

问答社区

51单片机做频率计,为什么两个数码管一直是00无法检测到频率

夏773636711 2018-11-19 21:55:11 381  浏览
  • #include #define uchar unsigned char #define uint unsigned int uchar f,num,shi,ge; bit flag; sbit dula=P2^6; sbit wela=P2^7; uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c... #include #define uchar unsigned char #define uint unsigned int uchar f,num,shi,ge; bit flag; sbit dula=P2^6; sbit wela=P2^7; uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; void delay(uint z)//延时函数 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void display(uchar shi,uchar ge) { dula=1; P0=table[shi]; dula=0; P0=0xff; wela=1; P0=0xfe; wela=0; delay(5); dula=1; P0=table[ge]; dula=0; P0=0xff; wela=1; P0=0xfd; wela=0; delay(5); } void main() {f=0;num=0;
    IP=0x02; //T0优先级高
    TMOD=0x15; //TI定时。T0计数
    TH0=0; //T0初值
    TL0=0;
    TH1=(65535-45872)/256; //T1初值50ms
    TL1=(65535-45872)%256;
    EA=1; // 开总中断
    ET0=1; // 开定时器T0中断
    TR0=1; // 开T0自启动方式开关
    ET1=1; // 开定时器T0中断
    TR1=1;
    while(1)
    {if(flag==1)
    {shi=f/10;
    ge=f%10;
    flag=0;
    f=0;
    TH0=0;
    TL0=0;
    TR1=1;
    } display(shi,ge); } } void T0time() interrupt 1 using 0 //T0计数 { f++; } void T1time() interrupt 3 using 1//定时器 { TH1=(65535-45872)/256; // 重装初值 TL1=(65535-45872)%256; num++; //自加一次 50ms if(num==20) // 判断是否为一秒 { num=0; TR1=0; flag=1; } } 展开

参与评论

全部评论(0条)

获取验证码
我已经阅读并接受《仪器网服务协议》

热门问答

51单片机做频率计,为什么两个数码管一直是00无法检测到频率
#include #define uchar unsigned char #define uint unsigned int uchar f,num,shi,ge; bit flag; sbit dula=P2^6; sbit wela=P2^7; uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c... #include #define uchar unsigned char #define uint unsigned int uchar f,num,shi,ge; bit flag; sbit dula=P2^6; sbit wela=P2^7; uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; void delay(uint z)//延时函数 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void display(uchar shi,uchar ge) { dula=1; P0=table[shi]; dula=0; P0=0xff; wela=1; P0=0xfe; wela=0; delay(5); dula=1; P0=table[ge]; dula=0; P0=0xff; wela=1; P0=0xfd; wela=0; delay(5); } void main() {f=0;num=0;
IP=0x02; //T0优先级高
TMOD=0x15; //TI定时。T0计数
TH0=0; //T0初值
TL0=0;
TH1=(65535-45872)/256; //T1初值50ms
TL1=(65535-45872)%256;
EA=1; // 开总中断
ET0=1; // 开定时器T0中断
TR0=1; // 开T0自启动方式开关
ET1=1; // 开定时器T0中断
TR1=1;
while(1)
{if(flag==1)
{shi=f/10;
ge=f%10;
flag=0;
f=0;
TH0=0;
TL0=0;
TR1=1;
} display(shi,ge); } } void T0time() interrupt 1 using 0 //T0计数 { f++; } void T1time() interrupt 3 using 1//定时器 { TH1=(65535-45872)/256; // 重装初值 TL1=(65535-45872)%256; num++; //自加一次 50ms if(num==20) // 判断是否为一秒 { num=0; TR1=0; flag=1; } } 展开
2018-11-19 21:55:11 381 0
51单片机开发板做频率计 ,测峰峰值和频率
用郭天祥的TX-1c开发板要做一个频率计,我写了一段代码,能实现测频率,但1602液晶上满屏雪花,峰峰值不知道怎么从一系列AD转换过来的值提取,同时这两种功能的定时器会重复,希望有知道的人为我解答一下。
2018-11-11 06:55:51 322 0
用51单片机做的简易频率计为什么在高频段数码管就开始闪了
采用测频法测外部信号的频率,T1,定时一秒,方式2;T0,计数,方式1,低频段的时候显示正常,高频段数码管就闪,为什么呢 #include #define uchar unsigned char #define uint unsigned int uchar code t[]={0x3f,0x06,0x5b,0x4f,0x66,0x6...
2013-06-12 00:16:56 435 2
请教51单片机做频率计的问题
 
2018-05-19 07:18:06 311 1
51单片机电子频率计
电子频率计 (一)功能简述 数字频率计在计算机、通讯等科研领域是不可缺少的测量仪器。电子专业人才考试专用板板载NE555芯片,通过电位器Rb3可调节方波的参数。 (二)设计要求 1. 通过导线将硬件资源板上的Signal与单片机的P3.4口(定时/计数... 电子频率计 (一)功能简述 数字频率计在计算机、通讯等科研领域是不可缺少的测量仪器。电子专业人才考试专用板板载NE555芯片,通过电位器Rb3可调节方波的参数。 (二)设计要求 1. 通过导线将硬件资源板上的Signal与单片机的P3.4口(定时/计数器T0)相连接。 2. 使用四位八段共阳数码管显示信号频率。 3. 当信号频率在低于10Khz时,所有LED灯处于熄灭状态,数码管显示的频率单位为Hz。 4. 当频率超过10Khz时,与P1.0端口相连接的LED灯点亮,数码管显示的频率单位调整为Khz。 5. 要求可对0-250Khz的方波信号进行测量,要求误差不超过1%。 6. 考试过程中,应使用硬件平台指定的资源进行设计。 (三)设计文档 1. 系统示意图和程序流程图(提交WORD文档) 2. 电路原理图(Protel或Proteus文档) 3. 源程序(C或汇编) 展开
2014-08-02 01:25:22 350 2
单片机做频率计数码管的显示C语言程序
#include float time=0; float freq=0; unsigned char dsh=0; unsigned char dsz=0; unsigned char dsl=0; main() {EA=1; ET0=1; ET1=1; TMOD=0x061; TH0=-1000/256; TL0=-1000%256; TH1=0xfb; TL1=0xfb; TR0=1; TR1=1; while...
2010-06-19 23:43:52 484 2
怎样用单片机做频率计
 
2011-10-09 00:21:18 309 4
用51单片机做频率计实物时那个测量脉冲怎么弄
 
2018-12-02 00:12:27 311 0
单片机为什么无法实现等精度频率法
 
2016-12-19 11:03:23 237 1
51单片机频率计的中断程序怎么设计
有一个信号由200hz的NRZ码控制输出两个频率不同的方波(1600,800)。现在要还原,如果检测到1600则p3.5输出高电平,800则输出低电平。我的设想是定时一个5ms的中断,对输入的方波电平0→1进行计数。计数值大于(8+4)/2=6的话输出1,小于输出0。请问这样可以... 有一个信号由200hz的NRZ码控制输出两个频率不同的方波(1600,800)。现在要还原,如果检测到1600则p3.5输出高电平,800则输出低电平。我的设想是定时一个5ms的中断,对输入的方波电平0→1进行计数。计数值大于(8+4)/2=6的话输出1,小于输出0。请问这样可以吗?对于定时器计时器还有中断的使用不大明白,可否简略写下程序。谢谢 展开
2015-05-26 01:56:14 446 1
基于51单片机用LCD1602液晶显示的频率计程序
求程序——————
2013-04-23 19:11:42 321 1
怎样用51单片机采集555计时器的频率?
 
2012-12-02 03:49:38 351 3
FPGA,频率计,数码管显示问题!
做频率计,到数码管显示,烧入板中,显示乱码,不知道什么问题,也不知道扫描时钟怎么设置,下面程序的CLK,指的是什么??求大神解答! LIBRARY IEEE; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity display is port(in7,in... 做频率计,到数码管显示,烧入板中,显示乱码,不知道什么问题,也不知道扫描时钟怎么设置,下面程序的CLK,指的是什么??求大神解答! LIBRARY IEEE; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity display is port(in7,in6,in5,in4,in3,in2,in1,in0:in std_logic_vector(3 downto 0); lout7:out std_logic_vector(7 downto 0); SEL:OUT STD_LOGIC_VECTOR(2 DOWNTO 0); clk:in std_logic ); end display; architecture phtao of display is signal s:std_logic_vector(2 downto 0); signal lout4:std_logic_vector(3 downto 0); begin process (clk) begin if (clk'event and clk='1')then if (s="111") then s<="000"; else s<=s+1; end if; end if; sel<=s; end process; process (s) begin case s is when "000"=>lout4<=in6; when "001"=>lout4<=in5; when "010"=>lout4<=in4; when "011"=>lout4<="0000"; when "100"=>lout4<=in3; when "101"=>lout4<=in2; when "110"=>lout4<=in1; when "111"=>lout4<="0000"; when others=>lout4<="XXXX"; end case; case lout4 is when "0000"=>lout7<="00111111"; when "0001"=>lout7<="00000110"; when "0010"=>lout7<="01011011"; when "0011"=>lout7<="01001111"; when "0100"=>lout7<="01100110"; when "0101"=>lout7<="01101101"; when "0110"=>lout7<="01111101"; when "0111"=>lout7<="00000111"; when "1000"=>lout7<="01111111"; when "1001"=>lout7<="01100111"; when "1010"=>lout7<="00111111"; when "1111"=>lout7<="01000000"; when others=>lout7<="XXXXXXXX"; end case; end process; end phtao; 展开
2015-07-04 01:06:37 628 2
51单片机同时使用两个计时器的问题
遇到的问题是两个内部计时器同时使用会造成数码管无法正常扫描。 以下面程序为例,下面程序结果数码管(从0开始自加,8位数码管显示后4位)无法正常扫描,请问该如何修改? #include #define uchar unsigned char #define uint unsigned int ... 遇到的问题是两个内部计时器同时使用会造成数码管无法正常扫描。 以下面程序为例,下面程序结果数码管(从0开始自加,8位数码管显示后4位)无法正常扫描,请问该如何修改? #include #define uchar unsigned char #define uint unsigned int #define DATAPORT P0 uchar code NUMBER[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar code POSITION[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; uchar TEMP[4]; uint num; sbit duanma=P2^2; sbit weima=P2^3; void display(uchar first,uchar total) { static uchar i; DATAPORT=0xff; weima=1; weima=0; DATAPORT=TEMP[i]; duanma=1; duanma=0; DATAPORT=POSITION[i+first]; weima=1; weima=0; i++; if(i==total) i=0; } void TIMER_ini() { TMOD |=0x11; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TH1=(65536-2100)/256; TL1=(65536-2100)%256; EA=1; ET0=1; ET1=1; TR0=1; TR1=1; } void main() { TIMER_ini(); while(1) { TEMP[0]=NUMBER[num/1000]; TEMP[1]=NUMBER[num/10]; TEMP[2]=NUMBER[num/10%10]; TEMP[3]=NUMBER[num%10]; } } void TIMER0() interrupt 1 { TH1=(65536-50000)/256; TL1=(65536-50000)%256; num++; if(num>9999) num=0; } void TIMER1() interrupt 3 { TH1=(65536-2100)/256; TL1=(65536-2100)%256; display(4,4); } 展开
2015-08-06 01:21:00 681 3
单片机频率计
求课程设计--单片机频率计
2018-11-10 22:45:41 210 0
单片机频率计
一、基本原理 使用555产生矩形波信号,输入到单片机进行测量频率。 测频的方案有多种: 1、测周法:通过测量被测信号的周期的倒数得到频率,选用适当的时基,以被测信号作为计数的闸门进行测量,得到闸门内的计数值,与时基相乘即为被测信号的周期,周期... 一、基本原理 使用555产生矩形波信号,输入到单片机进行测量频率。 测频的方案有多种: 1、测周法:通过测量被测信号的周期的倒数得到频率,选用适当的时基,以被测信号作为计数的闸门进行测量,得到闸门内的计数值,与时基相乘即为被测信号的周期,周期的倒数即为频率。该法适合测量频率低的信号。 2、测频法:通过频率的定义即单位时间的脉冲数,得到被测信号的频率。选用适当的时基,如1秒,以此作为计数闸门,得到闸门内的计数值即为信号的频率。该法适合测量频率高的信号。 二、参考电路框图 三、参考程序流程图 展开
2011-09-19 20:15:31 453 1
超声波测距时51单片机控制八段数码管时,用2个4位的74LS244咋连数码管?
帮我联系啊吧,论文很急!!
2018-11-19 06:44:05 283 0
威刚s102,电脑无法检测到,如何修复?
威刚s102买来用了1个多月,就坏了。插入电脑后,xp的系统显示0kb。win7就不显示可移动磁盘。用遍了银灿的低格工具,都无法检测到u盘。下面是用芯片无忧检测出来的数据逻辑盘符:I:\此分... 威刚s102 买来用了1个多月,就坏了。插入电脑后,xp的系统显示0kb。win7就不显示可移动磁盘。用遍了银灿的低格工具,都无法检测到u盘。下面是用芯片无忧检测出来的数据 逻辑盘符 : I:\ 此分区容量: 0.0G 设备ID : VID = 125F PID = 312B 设备序列号: 000000000000000022 设备版本 : 1.00 设备制造商: ADATA 设备型号 : NAND Flash 当前协议 : USB2.0(连接到USB3端口可以获得更高性能) 输入电流 : 200mA 分区系统 : 是否激活 : 是否对齐 : 未对齐,为提升性能建议你对齐扇区 芯片制造商: 银灿(Innostor) 芯片型号 : IS916-D0 闪存颗粒 : 英特尔(Intel) 闪存类型: MLC 通道: 单通道 闪存总量: 32G 闪存识别码: 8988244B Flash型号: JS29F32B08JAME1(此值仅供参考) U盘得分 : 56 分 (参考分值 >= 30 ,分值越大性能越好!) 固件版本 : 0.00.00.00 工具下载 : http://www.upan.cc/tools/mass/Innostor/ 系统版本 : Windows 7 Professional Service Pack 1 更新状态 : 当前版本为Z新版! 展开
2013-03-09 20:38:12 391 3

5月突出贡献榜

推荐主页

最新话题