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; } } 展开
全部评论(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; } } 展开
- 51单片机开发板做频率计 ,测峰峰值和频率
- 用郭天祥的TX-1c开发板要做一个频率计,我写了一段代码,能实现测频率,但1602液晶上满屏雪花,峰峰值不知道怎么从一系列AD转换过来的值提取,同时这两种功能的定时器会重复,希望有知道的人为我解答一下。
- 用51单片机做的简易频率计为什么在高频段数码管就开始闪了
- 采用测频法测外部信号的频率,T1,定时一秒,方式2;T0,计数,方式1,低频段的时候显示正常,高频段数码管就闪,为什么呢 #include
#define uchar unsigned char #define uint unsigned int uchar code t[]={0x3f,0x06,0x5b,0x4f,0x66,0x6...
- 请教51单片机做频率计的问题
- 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或汇编) 展开
- 单片机做频率计数码管的显示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...
- 怎样用单片机做频率计
- 用51单片机做频率计实物时那个测量脉冲怎么弄
- 单片机为什么无法实现等精度频率法
- 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。请问这样可以吗?对于定时器计时器还有中断的使用不大明白,可否简略写下程序。谢谢 展开
- 基于51单片机用LCD1602液晶显示的频率计程序
- 求程序——————
- 怎样用51单片机采集555计时器的频率?
- 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; 展开
- 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); } 展开
- 单片机频率计
- 求课程设计--单片机频率计
- 单片机频率计
- 一、基本原理 使用555产生矩形波信号,输入到单片机进行测量频率。 测频的方案有多种: 1、测周法:通过测量被测信号的周期的倒数得到频率,选用适当的时基,以被测信号作为计数的闸门进行测量,得到闸门内的计数值,与时基相乘即为被测信号的周期,周期... 一、基本原理 使用555产生矩形波信号,输入到单片机进行测量频率。 测频的方案有多种: 1、测周法:通过测量被测信号的周期的倒数得到频率,选用适当的时基,以被测信号作为计数的闸门进行测量,得到闸门内的计数值,与时基相乘即为被测信号的周期,周期的倒数即为频率。该法适合测量频率低的信号。 2、测频法:通过频率的定义即单位时间的脉冲数,得到被测信号的频率。选用适当的时基,如1秒,以此作为计数闸门,得到闸门内的计数值即为信号的频率。该法适合测量频率高的信号。 二、参考电路框图 三、参考程序流程图 展开
- 超声波测距时51单片机控制八段数码管时,用2个4位的74LS244咋连数码管?
- 帮我联系啊吧,论文很急!!
- 威刚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新版! 展开
5月突出贡献榜
推荐主页
最新话题
-
- #DeepSeek如何看待仪器#
- 干体炉技术发展与应用研究
- 从-70℃到150℃:一台试验箱如何终结智能...从-70℃到150℃:一台试验箱如何终结智能调光膜失效风险?解决方案:SMC-210PF-FPC温湿度折弯试验箱的五大核心价值1. 多维度环境模拟,覆盖全生命周期测试需求超宽温域:支持-70℃至+150℃的极限温度模拟(可选配),复现材料在极寒、高温、冷热冲击下的性能表现;控湿:湿度范围20%~98%RH(精度±3%RH),模拟热带雨林、沙漠干燥等复杂工况,暴露材料吸湿膨胀、分层缺陷;动态折弯:0°~180°连续可调折弯角度,支持R1~R20弯曲半径设定,模拟实际装配中的微小应力,提前预警裂纹、断裂风险。
参与评论
登录后参与评论