A. 帮我解释下单片机c语言程序
#include"reg51.h" //51系列单片机头文件
sbit LED0=P0^0; //声明单片机P0口的第一位
void set_start() //初始化函数
{
TMOD=0X01; //设置定时器0为工作方式1
TL0=0X65; //装初值
TH0=0XFC;
TR0=1; //启动定时器0
ET0=1; //开定时器0中断
EA=1; //开总中断
}
void Time() interrupt 1 //中断函数
{
static unsigned int uiTount=0;
TL0=0X65; //重装初值
TH0=0XFC;
uiTount++; //uiTount自加
if(uiTount<1000)P2=0X06; //如果uiTount小于1000,则给P2口赋值0X06
else if(uiTount>=1000&&uiTount<2000)P2=0; //否则,如果uiTount大于等于1000 ,小于2000,则P2口置低电平
else uiTount=0; //否则uiTount=0
}
main() //主函数
{
set_start(); //初始化函数
P0=0; //P0口置低电平
LED0=1; //LED0置高电平
while(1) //死循环,程序执行到此
{
;
}
}
B. 想在单片机上接一个工作指示灯,高手来告诉我怎么做啊
根据指示什么,你接的位置不一样
如果指示单片机的工作电源是否正常,你直接把灯和一5K电阻串起来,一端接单片机的VCC,另一端接地
如果你想指示单片机是不是在运行,你把灯和电阻接到空闲的IO管脚上(比如P1.0),然后在程序中在这个管脚上产生低频的脉冲(1Hz左右,方便观察,太快了闪得看不清),那么,只要灯在闪,说明单片机在运行
当然还有其他办法
C. 8个LED指示灯循环闪烁的程序(单片机)
1:设置一个变量i,它可以从0循环到3
2:检测一个已取消缓冲的键。按“+1”
3:当I值为每个值时,执行相应的模式。
水量灯参考程序
#include
#include
#定义uchar无符号字符
Ucharj,温度;
无效延迟(无符号整型ms)
{
Uchart;
(女士)
对于(t = 0;T < 123;T + +);
}
Voidmain()
{
P1=0XFF;
延迟(500);
Temp=0xfe;//奇怪,led连接在P2.3~P2.6
对于(j = 0;J < 4;J + +)
{
P1=temp;
延迟(500);
Temp=_crol_(Temp,1);
}
P1=0XFF;
(1);
}
(3)程序指示单片机扩展阅读:
注意事项:
#include“reg52。这个文件为单片机定义了一些特殊的功能寄存器
Typedef无符号int在16以下;//以声明的方式定义数据类型
无符号charu8;
//LED灯
Sbitleda=P0;
Sbitled1=P0^0;
Sbitled2=P0^1;
Sbitled3=P0^2;
Sbitled4=P0^3;
Sbitled5=P0^4;
Sbitled6=P0^5;
Sbitled7=P0^6;
Sbitled8=P0^7;
无效延迟(16岁以下)
{
,(我);
}
Voidmain()
{
而(1)
{
勒达=1;//所有的灯都亮着
//从左到右熄灭
Led1=0;
延迟(50000);//延迟时间约为450毫秒
Led2=0;
延迟(50000);//延迟时间约为450毫秒
Led3=0;
延迟(50000);//延迟时间约为450毫秒
Led4=0;
延迟(50000);//延迟时间约为450毫秒
Led5=0;
延迟(50000);//延迟时间约为450毫秒
Led6=0;
延迟(50000);//延迟时间约为450毫秒
Led7=0;
延迟(50000);//延迟时间约为450毫秒
Led8=0;
延迟(100000);//延迟大约900毫秒
//从右到左照明
Led8=1;
延迟(50000);//延迟时间约为450毫秒
Led7=1;
延迟(50000);//延迟时间约为450毫秒
Led6=1;
延迟(50000);//延迟时间约为450毫秒
Led5=1;
延迟(50000);//延迟时间约为450毫秒
Led4=1;
延迟(50000);//延迟时间约为450毫秒
Led3=1;
延迟(50000);//延迟时间约为450毫秒
Led2=1;
延迟(50000);//延迟时间约为450毫秒
Led1=1;
延迟(50000);//延迟时间约为450毫秒
勒达=1;//所有的灯都亮着
}
}
D. 单片机程序设计 很简单的 高分悬赏
每个灯亮1秒,每个灯闪亮频率为5次/秒。
下列程序,在PROTEUS中仿真通过.
;-------------------------------------
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0_INT
ORG 0030H
MAIN:
MOV SP, #7FH
MOV TMOD,#01H
MOV TL0, #LOW(65536-50000)
MOV TH0, #HIGH(65536-50000)
SETB TR0
MOV IE, #82H
MOV R2, #2
MOV R3, #10
MOV R4, #0
M_LOOP:
LJMP M_LOOP ;等待中断,一切闪动、移位,都在中断里面解决
;----------------------------------------------------------------
T0_INT:
MOV TL0, #LOW(65536-50000)
MOV TH0, #HIGH(65536-50000)
DJNZ R2, T0_END
MOV R2, #2 ;加大此数字,如改为8,可降低速度,便于观察.
INC R4
DJNZ R3, FLASH ;100ms减一次一.
MOV R3, #10
INC R6 ;1s加一次一
FLASH:
MOV A, R6
ANL A, #7
MOV R5, A ;0~7, 1s换一次位.
INC R5
MOV A, R4
MOV C, ACC.0
MOV A, #255
MOV P1, A ;关显示
T0_LOOP:
RLC A
DJNZ R5, T0_LOOP
MOV P1, A
T0_END:
RETI
;------------------------------------------------------------
END
E. 怎用51单片机做一个程序运行指示LED
你好,很高兴为你解答,这个程序最好用定时器实现,单片机定时500m闪烁一次,如果不用定时器,放在主程序里面的话,主程序里面如果有很多子程序执行的话,那么就会出现闪烁时间不一样,希望我的回答对你有帮助!
F. 单片机的程序写法
P1.6的灯亮,是输出低电平亮灯吗?还是高电平亮灯?
最关键:
1.电池电压到12.6V,必须要用电阻分压,不能直接到,超过5V了。
2.单片机的电源由什么供电?要求电源5V要稳定,能否保证?否则影响A/D转精度。
G. 单片机 P1口高四位控制低四位的指示灯 程序解析
MAIN: MOV A,#0FH ;0fH到累加器
ORL P1,A ;P1与0fH或运算,P1的低4位置1,高4位不变
MOV A,P1 ;P1的状态值到累加器
SWAP A ;交换累加器的高低4位,即高4位变低4位,低4位变高4位。
MOV P1,A ;累加器A到P1
LJMP MAIN ;循环
这个程序有问题吧?P1会不停的变化的。
MAIN:MOV A,P1
ORL A,#0FH
SWAP A
MOV P1,A
LJMP MAIN
这样才不会变。
H. 用C51单片机设计一个指示灯闪烁程序,要求:亮1秒钟,灭2秒钟
#include <reg51.h>
sbit led=P1^0;
unsigned char a;
void init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void main()
{
init();
while(1)
{
if(a==60)
{
a=0;
if(a<=20)
led=0; //LED亮
else
led=1; //LED灭
}
}
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
}
I. 单片机工作状态LED指示灯
我最近做了个测温电路,通过串口传到上位机
led不亮表示温度过低,
长灭短亮表示偏低
常亮表示正常
长亮短灭表示偏高
用定时器计数实现闪烁。一般不用延时,尽量用定时中断。