用定时器以间隔0.5秒在8位数码管上依次循环显示0,1,2,3….C,D,E,F
仿真图如下
程序如下,程序必须配合上面的仿真图
#include
#define uchar unsigned char
#define uint unsigned int
uchar code led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//段码
uchar code wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位码
uchar t0n;//T0中断计数
uchar n;//n为第一个显示数
void delay()//延时子程序,写成最简单的
{
uint j;
for(j=300;j>0;j--);
}
void display()
{
uint j;
for(j=0;j<8;j++)
{
P2=wei[j];//送位码
if(j+n>15)
P0=led[j+n-16];//送段码
else
P0=led[j+n];//送段码
delay();
}
}
void main()
{
TMOD=0x01;
TH0 =0x3C;//晶振频率12M
TL0 =0xB0;
IE =0x82;
TR0 =1;
while(1)
{
display();
}
}
//T0中断程序
void T0_int() interrupt 1
{
TH0 =0x3C;
TL0 =0xB0;
t0n++;
if(t0n>=10)//中断10次,0.5秒到
{
t0n=0;
n++;
if(n>15)
n=0;
}
}
什么鸟百度知道,不能粘贴,只好一个个地打出来。
#include unsigned int ms;unsigned char i,NixieCode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};void main(){ EA=1; TMOD=0x02; TH0=TL0=6; ET0=1; TR0=1; while(1);}void t0()interrupt 1{ if(++ms>2000) { ms=0; P1=NixieCode[i]; if(++i>15)i=0; }}
用T0定时器方式1定时50ms,采用中断方式,中断10次为0.5秒,变化一次8位数码管的显示数字。程序如下
仿真结果,开始显示01234567
最后一个数大于0x0F,重新从0开始计数显示
#include<reg51.h> sfr p3=0xb0; sfr p2=0xa0; void delay02s() {unsigned char i,j,k;for(i=20;i>0;i--)for(j=20;j>0;j--)for(k=250;k>0;k--);} main() {int m,n;int a[6]={0x3f,0x06,0x5b,0x4f,0x66,0x6d}; int b[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; while(1) for(m=0;m<6;m++) for(n=0;n<10;n++) {p2=b[n] ;p3=a[m] ;delay02s();} }
移是否有必要
17137567694
51单片机 定时器0中断 输出周期方波
你看下面最左面那个调节钮,此时在0.5ms档位,说明1格为0.5ms,图中显示的就是一个脉冲周期是0.5ms也就是500us。
怎么用一个定时器使3个LED灯闪烁,闪烁时间分别为1s、0.5s、2s且不互相...
1S 0·5S 2s是周期吗?那么它们翻转时间是0·5S 0·25S 1S 最大1S 是0·5和0·25的倍数 我们定时50ms,然后计中断次数 中断10次第1个LED翻转 5次第二个LED翻转 20次第3个LED翻转,并将计中断次数的变量清0 程序如下 sbit led1=P1^0; sbit led2=P1^1;sbit led3=P1^2;uchar a...
空调定时,时间0.5h是多长时间
空调定时,时间0.5h,就是30分钟的时间。时间的单位:时(H),分(M),秒(S),那么定时器上0.5H就是半小时,30分钟(M)。1H就是1个小时,60分钟(M)。定时器是用于控制时间的装置,是控制开关或工作时间的仪器,主要类型有,接通延时型定时器、断开延时型定时器、保持型接通延时定时器和...
实现跑马灯:第一个灯亮,隔0.5s第二个灯亮,依次的每个灯亮下去,时间间隔...
用PLC编程,用个定时器就可以了。
采用PLC设计8个灯,第一个亮间隔0.5秒第二个灯亮,以此类推一直到第八个...
看下图。
如果需要实现0.5ms定时器初值为?
对于定时器T0,工作在方式2下,计算定时器初值需要以下步骤:1、计算定时器计数频率:定时器T0在方式2下,每个计数周期为12个晶振周期,因此计数频率为6MHz \/ 12 = 500 kHz。2、计算定时器初值:要实现0.5ms定时,需要定时器T0计数500次,因此初值为 65536 - 500 = 65036 (0xFC1C)。对于定时器...
用单片机原理,编一个跑马灯,要用到定时器,而且是0.5s闪一下,再3s闪一...
定时器设置的延时时间是0.5s,然后用一个循环语句,就能实现3s的延时了。剩下的就简单啦
LED在定时器的中断控制下不断闪烁(0.5S开关一次),程序怎么编,急!急...
include <REG51.H> define uchar unsigned char sbit LED =P1^1;uchar time;void init_t0int(){ TMOD=0x01;TH0=(65535-50000)\/256;TL0=(65535-50000)%256;EA=1;ET0=1;TR0=1;} void main(){ init_t0int();while(1);} void t0int() interrupt 1 { TH0=(65535-50000)\/...
vb中怎么向左或向右移动一段文字,
需要添加定时器Timer来实现 代码及注释如下:private sub Form_load()timer1.interval=500'窗体出现时,定义定时器的出发间隔为0.5s timer1.enabled=true'定时器启动 end sub private sub timer1_time()label1.left=label1.left+100'label1的左边距离,每0.5s向右移动100,由于文字位于Label上,因此...
...按下启动按钮开始定时0.5h后闹铃响,响铃10s关闭
这个不难,自己先想想。让定时器计时0.5小时也就是30分钟,计时可以用定时器配合计数器增加计时时间,时间到了然后响铃10秒停。
韩良来比: 用定时器,首先要设置定时的工作模式,误差最小的是方式2,8位自动重载模式.12M晶振,初值给55,定时时间就是200us,也就是你程序写的i=1,就是200us,那定时一秒的话就是i=5,再定义一个变量sec,if(i==5)sec++;显示sec就可以了
木里藏族自治县17399639050: 51单片机C语言程序,利用定时器1控制LED灯每隔100ms亮一个,并且数码管上的数每隔200ms加1,加到100清零 - ?
韩良来比: #include<reg51.h> #include<intrins.h> #define uchar unsigned char; uchar distab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; //0到f uchar number,dat,time; void t0isr() interrupt 1 {TH0=(65536-5000...
木里藏族自治县17399639050: 求用定时器实现单片机时钟(时 分 秒)程序.程序简单点的.八位数码管. - ?
韩良来比: 5.2.2 LED数码显示器的连接方法共阴极接法:把发光二极管的阴极连在一起单片机模块中最常见的是数子时钟,数子时钟是一种用数字电路技术实现时、分
木里藏族自治县17399639050: 单片机控制一位数码管显示,数码管从0 - 9依次显示,时间间隔为100ms,循环下去,用定时器编写程序 - ?
韩良来比: 只控制一位数码管没啥意思,如果只是研究一下倒是可以的 给你一份我自己写的,利用四位数码管显示模拟时钟的程序吧,供你研究 另外,再给你一个一位数码管的,是你要求的那种 这两个都是利用单片机的定时器中断来产生秒信号的 下面这...
木里藏族自治县17399639050: 用汇编语言写一程序,利用定时计数器,定时一秒,一个数码管秒个位加1,同时有八个LED灯在循环流动. - ?
韩良来比: ;定时器定时一秒,一个数码管秒个位加1,同时八个LED灯循环流动 很简单的题目,只能写很简单的程序: ORG 0000H JMP START ORG 000BH INC R2 RETI START: SETB TR0 MOV IE, #82H MOV R3, #127 LP: MOV R4, #0 DP: MOV A, R4...
木里藏族自治县17399639050: 51单片机用汇编编程使用定时器0,用定/计数器T0中断的方法定时0.5秒,使8个流水灯依次点亮,每个灯亮0.5秒 - ?
韩良来比: 改动如下:…… INT_SUB:MOV TH0,#3CH;重新给定时/计数器设初值 MOV TL0,#0B0H DJNZ R7,LOOP;判断记时次数是否够,一次50毫秒,共十次 RL A MOV P1,A MOV R7,#10;重新给计时循环次数赋值 LOOP:RETI END 这就可以了.
木里藏族自治县17399639050: 8只LED阴极接至单片机P0口,用定时器T0实现8只LED亮0.5秒的闪烁.T0工作于方式0,设晶振的频率为12MHz - ?
韩良来比: #include void InitTimer0(void) { TMOD = 0x01; TH0 = 0x3C; TL0 = 0x0B0; EA = 1; ET0 = 1; TR0 = 1; } unsigned char cs; void main(void) { P0=0x00; cs=0; InitTimer0(); while(1); } void Timer0Interrupt(void) interrupt 1 { TH0 = 0x3C; TL0 = 0x0B0; cs++; if(cs>=100) { P0=~P0; cs=0; } }
木里藏族自治县17399639050: 已知:P1口接入一个共阴极的八段数码管(简称LED),电路如图所示. - ?
韩良来比: #include unsigned char ledtable[10]= { 0x3F,0x06,0x5B,0x4F,0x66, 0x6D,0x7D,0x07,0x7F,0x6F };//设CPU是时钟12MHz的8051系列 void SetupTimer0() { TMOD &= 0XF0; //仅保留T1信息 TMOD |= 0X02; //设置T0: 定时功能,方式2,自动重...
木里藏族自治县17399639050: 单片机AT89C51芯片完成简易秒表的设计(三个8字数码管从0~999秒)设置一个开始按钮和一个复位按钮,谢了! - ?
韩良来比: #include unsigned char data dis_digit; unsigned char key_s, key_v; unsigned char code dis_code[11]={0xc0,0xf9,0xa4,0xb0, // 0, 1, 2, 3 0x99,0x92,0x82,0xf8,0x80,0x90, 0xff};// 4, 5, 6, 7, 8, 9, off unsigned char dis_buf[8]; // 显示缓冲区 unsigned ...
木里藏族自治县17399639050: 单片机数码管8个的程序用定时器0的形式,显示第一个1,第二个2……第8个8,每显示一个延时1s - ?
韩良来比: 首先,建议你做一个显示缓冲(软件),每个LED一个区域,通过定时器(非T0)中断(50HZ),对LED进行刷新;其次,在主程序中设立1S的软、减计时器,通过定时器T0中断来计时,主程序循环读这个软计时器,当等于0的时候,向显示缓冲写你的目标数字;当然,每一秒结束的时候,软件需要知道该进行哪一步操作,这样,你还要做一个计数器来确定目前的步骤,当然回读显示缓冲也可以进行得知当前状态,从而确定下步工作.明白?