1,单片机延时时间计算

这个很简单那:f=1MHz/4=250KHz,内部振荡模式 ;T=4uS 这样是什么意思? 如果采用的是1mhz的情况下4分频率得到 t表示单个周期的时间DLY80M MOV A,@220 2 MOV T3,A 2 MOV A,@16 2 MOV T4,A 2 DLY2 NOP 1 WDTC 2 ;防止程序跑飞,喂狗 DJZ T3 ;2 不是0 循环 220*2 JMP DLY2 ;2 NOP 1 MOV A,@250 2 MOV T3,A ;2 这个语句放在这因为第一次算出的时间和后面的组合刚好合适 DJZ T4 ; 2 外循环再延时间 大约时间应该是 [15*250*8+220*8+10]*4=12。7 JMP DLY2 2 NOP RET

单片机延时时间计算

2,单片机中数码管动态显示扫描时间问题

我也遇到过同样的问题,仿真时显示刷新有问题,但下载到单片机系统中确实能正常显示。解决Proteus仿真的办法: 用于进行位驱动的三极管不要选择某种实际的三极管,而是用理想三极管,这样数码管显示不正常的问题就解决了。

单片机中数码管动态显示扫描时间问题

3,关于单片机数码管延时

见 http://zhidao.baidu.com/question/1431182950511217219在那里你虽然选择了错误的回答,但那个display函数配合delay是对的。你现在把显示函数中的每位设定后的延时delay(1)给去掉了,百位十位的通电时间太短了,只有个位设好后跑了一遍main里面的while(1)主循环有点时间,所以看起来只是个位亮。
delay(1)延时,应该是6us吧,调用2us,djnz rn,$占用2us ,RET占用2us,消隐就是将数码管前一刻显示内容消除,wela先送1再送0是为了锁存数据用的,锁存器需要一个下降沿来锁存。
为了提高数码管亮度,除了用三极管,还可以加上拉电阻,电路如图所示。数码管可以是共阴的也可以是共阳的,在编程时注意点亮方法不同就是了。 另外,数码管动态显示时,显示亮度也和点亮的延时有关

关于单片机数码管延时

4,为什么单片机 在 PROTEUS里 仿真多位数码管 数字会出现 闪烁 是延时

这个产生的原因是:可能是你的电脑的速度不够快;你的仿真图有点复杂,如还有高频信号、示波器、各种仿真终端等;你的单片机的工作频率太高;这些都会使你的仿真结果的速度变慢,因此你看到的闪烁,时间延长没有太大的作用。知道是这么回事,就不用太纠结这个闪烁的问题了,因为实际运行时不会有这个事(前提是你的硬件和程序都对)。

5,单片机延迟多少时间12M

MOV R7,#10;1微妙MOV R6,#50;R7*1=微妙DJNZ R6,$;R7*R6*2=微妙MOV R6,#100;R7*1=微妙DJNZ R6,$;R7*R6*2=微妙DJNZ R7,DELAY_DISP_LOOP;R7*2=微妙RET ;2微妙再加调用子程序的ACALL=2微妙所以1+10+1000+10+2000+20+2+2=3045微妙
假设MOV、DJNZ指令周期为2个,10×(54+154)+ 10×2 +2= 2100个指令周期;每个指令周期1us,则共有2.1ms。
这部分包含了硬件及软件上的变化因素.软件上, 建议输出汇编, 依照datasheet确认指令所用周期. (可能会有: a=i; inc a; i=a;....)硬件上, 依照硬件规格书, 可以知道晶振与单片机运行周期时间的关系. 标准应该是/12, 也有不同的.

6,单片机四个数码管动态显示的延时时间约为多少

#include <reg52.h>#include <stdlib.h>#define uint unsigned long#define uchar unsigned char sbit N1 = P1^0; sbit N2 = P1^1;sbit N3 = P1^2;sbit N4 = P1^3;uchar code table[]=uint num;int a,t1=0;void delayms(uint xms) //延时函数 uint i,j; for(i=xms;i>0;i--) for(j=10;j>0;j--);}void display(uint num) N1=0; P0=table[(num/1000)]; delayms(1); P0=0XFF; N1=1; N2=0; P0=table[(num%1000)/100]; delayms(1); P0=0XFF; N2=1; N3=0; P0=table[(num%100)/10]; delayms(1); P0=0XFF; N3=1; N4=0; P0=table[(num%10)]; delayms(1); P0=0XFF; N4=1;}void TimeAdd() interrupt 1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; t1++; if(t1==10) //20*50==1秒10*50=0.5秒 t1=0; num++; }}void main() TMOD=0X01; // 定时器 初始化 TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; //中断总开关 ET0=1; //开定时器0 中断 TR0=1; //启动定时器0 num=6000; //初始值 while(1) display(num); }}

7,新手51单片机数码管延时问题请教

delay的参数是 uchar 型的,最大只有255,5000溢出了。写5000,实际并不是以5000计数。想要5000,把参数改为 int 型,函数内部了 变量 i也改为 int 型
采用这种方式一般都是所谓的动态扫描显示,往往不止一个数码管。一个数码管8段加一个公共端需要9根口线才能完全显示任意数字,为了节省io口线,就利用了人眼视觉驻留的原理(就像电影胶片每秒24帧,连续起来播放你觉得没有任何间断),每一位数码管显示一会儿,然后关掉它,再去显示下一个数码管。只要保证在1秒内每个数码管能扫上个十几次二十几次,视觉上就好像同时点亮了所有数码管了。 你这段程序就是这种方式:shuma=a[d1]; //送第d1位数码管的段码,d1范围是0~3共4位led_1=0; //打开d1位数码管显示允许,数码管被点亮delay_ms(1); //保持显示1ms led_1=1; //关闭d1位数码管显示,准备显示下一位

8,关于单片机数码管延迟问题

你的程序在段选之后马上消隐,显示的时间可能只有几个微秒,显然很不合理。如何让每位数码管亮度保持均匀,delay(500)放在程序的位置还是很重要的,程序修改如下,但愿对你有帮助:Void main() while(1) dula=1;打开段选 P0=table[1]; wela=1;打开位选 P0=0xfe; delay(250); dula=0; P0=0xff; 消影 wela=0; delay(250);//如果亮度不够高,可以减少此延时
看你的数码 管是共阳还是共阴。共阳的话,用单片机的io口(不是段控那个口)轮流接高电平到每只管的共阳极。亮1ms,熄灭再下一位管。共阴同样方法,不过是接低电平。

文章TAG:单片机数码管一般延时多少单片机  数码  数码管  
下一篇