用定时器以间隔0.5秒在8位数码管上依次循环显示0、1、2、3….C、D、E、F。实验设

作者&投稿:移黎 (若有异议请与网页底部的电邮联系)
51单片机,用定时器以间隔0.5秒在8位数码管上依次循环显示0.1.2.3.....C.D.E.F。怎么用C语言编写这个程序~

什么鸟百度知道,不能粘贴,只好一个个地打出来。

#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>

#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;

}

}



需要写定时,循环,点亮和点灭灯。

刚刚回来

2310fe

‘合理民工你了啦啦啦啦可啦啦啦了了了啦啦啦啦了了了乐扣乐扣哦你哦(⊙o⊙)哦(⊙o⊙)哦(⊙o⊙)哦(⊙o⊙)哦(⊙o⊙)哦(⊙o⊙)哦(⊙o⊙)哦(⊙o⊙)哦(⊙o⊙)哦(⊙o⊙)哦(⊙o⊙)哦(




用555定时器加CD4017实现流水灯(Multisim仿真)
迈向自动化:555定时器的加入 手动操作繁琐,555定时器的介入让整个过程自动化。它作为一个方波信号发生器,通过电容充放电产生稳定的上升沿信号,调节电容C1和电位器R12,控制LED灯的亮灭间隔。精确调整周期 为了达到0.5秒的间隔,我们必须精确调整555定时器的周期。通过示波器的波形分析,我们调整参数以...

定时器T1每0.05秒中断一次,单片机P1口接8个发光二极管LED0~LED7...
FLAG BIT 20H.0 ORG 0000H AJMP MAIN ORG 001BH AJMP INT ORG 0030H MAIN:MOV TMOD,#01H;方式0 MOV TH1,#15H;设置计数初值 MOV TL1,#0A0H SETB EA;总中断开 SETB ET1;定时器中断开 SETB TR1;开始计时 MOV R7,#50 MOV A,#0FAH LOOP:MOV P1,A AJMP LOOP INT:MOV TH1,#0CH;重新...

51单片机定时器0.5秒延时问题,程序仿真是led不会动.
ORG 0000HAJMP MAINORG 000BHAJMP QDORG 0030HMAIN:MOV SP,#60HMOV A,#55HMOV R0,#0AHMOV TMOD,01H ;这里错了,应该是 MOV TMOD,#01HMOV TH0,#3CHMOV TL0,#0B0HSETB EASETB ET0MOV P0,ASETB TR0NOPSJMP ;这里也有问题,应该加上面一条语句,主程序和中断分开QD:MOV TH0,#3CH...

空调定时,时间0.5h是多长时间
1、“H”表示小时,是因为单词“hour”的首字母。2、空调定时一般以0.5H为单位,显示ON为定时开,OFF为定时关闭。空调使用注意事项:1、空调太长时间没有清洁,内部灰尘太多会影响空调的出风;2、空调中的氟利昂不足会影响制冷,氟利昂也叫做制冷剂,可联系售后人员进行补充;3、电压不稳定,一般在...

单片机8个流水灯程序 要求:间隔0.5秒流水灯一次(01234567) 两盏流水...
include<reg51> define uchar unsigned char define uint unsigned int void delay(uchar t){ uchar x;for(x=0;x<t;x++){ TH0=0x3c;TL0=0xb0;TR0=1;while(!TF0);TF0=0;} } uchar code display[]={0x03,0x06,0x60};uchar k,m;void main(){ while(1){ TMOD=0x01;for(m=0;...

电风扇的电子定时器上0.5H、1H各表示多少时常?
时间的单位:时(H),分(M),秒(S),那么定时器上0.5H就是半小时,30分钟(M)。1H就是1个小时,60分钟(M)。定时器,是一种用于控制时间的装置,是控制开关或工作时间的仪器。主要类型有,接通延时型定时器、断开延时型定时器、保持型接通延时定时器和脉冲型定时器等。

51单片机 定时器中断延时0.5秒 汇编
告诉你原理,因为我现在用C了。弄一个全局变量COUNT,然后控制好你的定时器中断时间,比如10MS,那么你每次中断COUNT++ 判断当COUNT=50,(50*10ms=500ms=0.5s)就是0.5s了。此时清count,同时处理你要做的事情。

如果要定时0.5秒,能否用一个定时器完成?应该如何实现?
可以,如果需要定时,做3个函数,定时器设置函数、定时器中断函数、定时到处理函数,在定时中断函数里面调用定时到处理函数,进行定时到处理就可以了。如果需要精确延时,设置好定时器后,循环查询定时器状态就可以了。如果在程序主循环里,有很多事务要处理,也就是很多函数要调用,那么判断全局变量决定是否...

51单片机程序问题 灯亮一会 0.5的间隔闪烁 为什么我的灯就一直亮着了...
没有闪烁,说明你程序处理有问题,比如要闪烁,那么亮和灭都要延时。while(1){ P0=0x00;delay(1000);P0=0xff;delay(1000);} 这样就会闪烁了。

空调定时,时间0.5h是多长时间
在时间的单位表述中,0.5H代表半小时,即30分钟。与之相对,1H等于1小时,即60分钟。定时器能够根据用户的设置,精确控制空调的操作时间。定时器有多种类型,包括接通延时型、断开延时型、保持型接通延时以及脉冲型定时器。这些不同的定时器类型,提供了各种灵活的控制选项,以适应不同的使用场景和需求...

细河区15342615684: 单片机AT89S52 如何用定时器0控制数码管从0变到9 每秒变一次 (C语言) -
绪卢伊达: 用定时器,首先要设置定时的工作模式,误差最小的是方式2,8位自动重载模式.12M晶振,初值给55,定时时间就是200us,也就是你程序写的i=1,就是200us,那定时一秒的话就是i=5,再定义一个变量sec,if(i==5)sec++;显示sec就可以了

细河区15342615684: 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...

细河区15342615684: 求用定时器实现单片机时钟(时 分 秒)程序.程序简单点的.八位数码管. -
绪卢伊达: 5.2.2 LED数码显示器的连接方法共阴极接法:把发光二极管的阴极连在一起单片机模块中最常见的是数子时钟,数子时钟是一种用数字电路技术实现时、分

细河区15342615684: 单片机控制一位数码管显示,数码管从0 - 9依次显示,时间间隔为100ms,循环下去,用定时器编写程序 -
绪卢伊达: 只控制一位数码管没啥意思,如果只是研究一下倒是可以的 给你一份我自己写的,利用四位数码管显示模拟时钟的程序吧,供你研究 另外,再给你一个一位数码管的,是你要求的那种 这两个都是利用单片机的定时器中断来产生秒信号的 下面这...

细河区15342615684: 用汇编语言写一程序,利用定时计数器,定时一秒,一个数码管秒个位加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...

细河区15342615684: 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 这就可以了.

细河区15342615684: 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; } }

细河区15342615684: 已知: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,自动重...

细河区15342615684: 单片机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 ...

细河区15342615684: 单片机数码管8个的程序用定时器0的形式,显示第一个1,第二个2……第8个8,每显示一个延时1s -
绪卢伊达: 首先,建议你做一个显示缓冲(软件),每个LED一个区域,通过定时器(非T0)中断(50HZ),对LED进行刷新;其次,在主程序中设立1S的软、减计时器,通过定时器T0中断来计时,主程序循环读这个软计时器,当等于0的时候,向显示缓冲写你的目标数字;当然,每一秒结束的时候,软件需要知道该进行哪一步操作,这样,你还要做一个计数器来确定目前的步骤,当然回读显示缓冲也可以进行得知当前状态,从而确定下步工作.明白?

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网