设计程序要求:单片机的P1.0,使LED按固定的时间间隔进行闪烁

作者&投稿:宗圣戚 (若有异议请与网页底部的电邮联系)
单片机做功能要求:单片机的p1.0引脚连接一LED,程序按照设定的时间间隔取反P1.0,使LED按固定的时间间隔...~

电路: 最小系统接法就不讲了。。。随便一本书上就能抄到。。。P1.0 接 1K 电阻 接 三极管 NPN PNP都行。。NPN : VCC(5V)接510电阻 接LED接三极管集电极,三极管发射极接地。或者VCC接三极管集电极,发射极接510电阻接LED接地。 PNP:将NPN三级管反过来接就行了(例如NPN发射极接地的话 PNP就集电极接地)。
程序:
头文件略
sbit P1.0=D1; //位声明
void delay(int x)
main{
while(1)
{
D1=1; //NPN 1亮 PNP 0亮;
delay(500); //延时500ms
D1=0; //关掉LED
delay(500); //延时500ms
}
}
void delay (int x)
{
while(x--)
{
int y,z;
if(y=110;y>0;y--) //这没有分号
if(z=100;z>0;z--) ;
}
}

设置定时器0定时时间1ms,在定时中断函数里设置一个静态局部变量记录定时器溢出次数n,当n=1000时,定时1s时间到,P1.1口取非,在主函数里设置检测P1.0状态条件,当开关按下时,判断定时器T0状态,处于打开状态就关闭它,处于关闭状态就打开。。程序思想的简单说明,代码自己想办法

以一秒为例,给你写了一个程序,自己看吧,修改TH0、TL0和count就可以设定任意时间间隔闪烁了

#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit LED=P1^0;
bit flag;
uchar count=0;
void delay(uchar c)
{
uchar a, b;
for (; c>0;c--)
for (b=142;b>0;b--)
for (a=2; a>0; a--);
}
void main(void)
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
if(flag==1)
{
LED=0;
delay(100);
LED=1;
flag=0;
}
}
}

void time0(void) interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++;
if (count>=20)
{
count=0;
flag=1;
}

没必要做用中断定时,看他这问法,越简单他越好!!
#include <reg51.h>
#define uint unsigned int
sbit LED=P1^0;
main()
{
uint a=0;
while(1)
{
for(a=0;a<65535;a++);
LED=~LED;

}

}

这个程序最简单:
ORG 0000H
SETB TR0
LOOP:
MOV R2, #61
REPEAT:
JNB TF0, $
CLR TF0
CPL P1.0
DJNZ R2, REPEAT
JMP LOOP

END

steb p1.0
lcall delay500ms
clr p1.0
lcall delay500ms


求用单片机写个篮球计分器的程序
此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。RST——复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。ALE\/PROG——当访问外部程存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1\/6输出固定的...

倾家荡产求单片机C语言程序:0~99秒计数器;三个独立按键控制,P1.1开始...
以前回答过这样的问题。和本次稍有区别是:以前是用“两个独立按键控制”,启动和暂停,用一个按键控制。现在,按照楼主的要求,进行了改动,程序如下。\/\/下面是00-99秒计数的语言C程序。include<reg52.h> include<intrins.h> unsigned char i, j;unsigned char code table[] = { 0xc0, 0xf9,...

51单片机数码管倒计时程序,从999999开始倒计时,用定时器T1的中断完成...
include<reg51.h> define uchar unsigned char uchar code ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};\/\/0-9 uchar sec=0,min=0,hour;uchar time;uchar disdat[6];void delay(unsigned int x){ unsigned int i,j;for(i=0;i<x;i++)for(j=0;j<...

用C语言编写AT89C51单片机程序,设计一个智能数字钟。
这是我的课程设计,6个数码管,显示时分秒,三个按钮P0.0、P0.1、P0.2可以调时,有8个彩灯(可以不要),没闹钟、倒计时之类的。呵呵。include<AT89X52.H> define uchar unsigned char int i;\/\/***时钟的 uchar one[10]={0xbf,0xb0,0xdb,0xcf,0xe6,0xed,0xfd,0x07,0xff,0xef}...

以51单片机为基体,设计59计数器 要程序
EX1=1;EA=1;IT0=1;} void wbzd0() interrupt 0 \/\/外部中断0 { a++;if (a==60){ a=0;b++;} } void wbzd1() interrupt 2 \/\/外部中断1 { a=0;b=0;} void main (){ cs();while (1){ xs();} } 注:前面两位是计有多少个60,后面两个就是计数 ...

单片机程序设计
lcall delay dec 21h dec 30h ; mov a, 30h ;主黄灯参数 ;就是这行,a改成下面的r0,就行了。mov r0, 30h ;主黄灯参数 cjne r0, #0, zhuhuang setb p2.2 setb p2.5 Ljmp M_LOOP ;===移位后显示计数值=== xs1:...

求一个51单片机控制的温度计显示程序
这个程序完全没问题的,我做过实验。希望对你有帮助,,,\/\/DS18B20的读写程序,数据脚P3.3 \/\/ \/\/温度传感器18B20汇编程序,采用器件默认的12位转化 \/\/ \/\/最大转化时间750微秒,显示温度-55到+125度,显示精度 \/\/ \/\/为0.1度,显示采用4位LED共阳显示测温值 \/\/ \/\/P0口为段码输入,P24...

基于单片机AT89C52频率计,求程序,求助
\/\/中断10次后(即0.5s)读计数器0的数据乘2即为所得频率值,适于频率变化较慢的场所 \/\/先进行50ms预判断,若TH0计数值大于12,说明1S内计数值将超过65535(虽0.5S内远不超65535)\/\/变量ee是无符号整数不能超过65535,为防止出错,则报警 \/\/最大可测频率约65535hz,实际上STC12C系列是1T单片机,11...

求一份关于篮球计分器的51单片机C语言程序
这是一个数码管显示的篮球计分程序,你可以参考一下:#include"reg52.h"#define u8 unsigned char#define u16 unsigned intsbit UP_1 = P1^1; \/\/第一队加分键sbit DOWN_1 = P1^2; \/\/第一队减分键sbit UP_2 = P1^3; \/\/第二队加分键sbit DOWN_2 = P1^4; \/\/第二队减分...

单片机控制一个4位的共阴数码管通电的状态下显示时间的程序
include <reg52.h> define uint unsigned int define uchar unsigned char sbit PRESS1=P1^0;sbit PRESS2=P1^1;sbit PRESS3=P1^2;uint a[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};\/\/0到9 uint b[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};int miao=...

印江土家族苗族自治县17818058157: 我要用单片机的P1.0管脚去控制直流电动机的启动与停止 -
绽宜肝速: 首先你要将P1.0管脚受控于单片机内的程序,然后将P1.0管脚的电压作为一个开关信号使三极管导通继电器吸起,用继电器吸作为一个开关,接通直流电动机的电路即可.

印江土家族苗族自治县17818058157: 51单片机中断编程 -
绽宜肝速: 外部中断信号接到P3.3口,为INT0中断,程序如下#include<reg51.h> sbit X0=P1^0; //用X0表示P1.0 sbit X1=P1^1; //用X0表示P1.1 sbit X2=P1^2; //用X0表示P1.2 void main(void) { P1=0x00; //将P1口初始化位高电平,如果没有这句,初始...

印江土家族苗族自治县17818058157: 若51单片机的P1.0口接了一个独立按键,编写程序完成按键检测程序要求每按下一次P1. -
绽宜肝速: sbit button P1^0; if(button == 0) //一旦检测到键值 { Delay(); //延时20ms,有效滤除按键的抖动 if(button == 0) //再次确定键值是否有效 { //Do somethinghere! } }

印江土家族苗族自治县17818058157: 单片机时钟为12MHz 利用定时器T1 使P1.0引脚输出3ms 的矩形波,要求占空比例1:2 试编 -
绽宜肝速: START: MOV TMOD,#10H;设置T1为模式1,定时器方式 PT2: SETB P1.0CLR TR1MOV TH1,#0F4H;赋初值;62536MOV TL1,#48HSETB TR1 LOOP1:JBC TF1,PT1SJMP LOOP1 PT1: CLR P1,0CLR TR1MOV TH1,#0F4H;赋初值,62536MOV TL1,#48HSETB TR1 LOOP2:JBC TF1,PT2SJMP LOOP2 END

印江土家族苗族自治县17818058157: 要求在P1.0引脚输出周期为400us脉冲方波,已知fosc=12MHZ.试用T1模式2设计程序 -
绽宜肝速: ORG 0000H LJMP MAIN ORG 001BH LJMP TIME1 MAIN:MOV TMOD,#20H ;设置T1为工作模式2 MOV IE,#82H ;开CPU中断,开T1定时器中zd断MOV TH0,#38H ;赋初值,定时200us MOV TL0,#38HSETB TR0 ;启动T1SJMP $ ;等待时版间到;定时器中断程序TIME1:CPL P1.0 ;每0.2msP1.0取反输出权RETI ;中断返回END

印江土家族苗族自治县17818058157: 51单片机12展流水灯的程序怎么设计? -
绽宜肝速: 我就写个顺时针亮的程序(详细解释,其它的你就自己写),全手打的哦,用的是汇编,我水平也不怎么高,但是你的问题也是入门级的,还有我假设是高电位亮,一共12灯从P0.0开始到P1.4(P1.4和P0.0相接).ORG 4000HSTART:CLR P0...

印江土家族苗族自治县17818058157: 单片机汇编程序:p1.0口接1盏灯,再把p1.0接p3.5(t1)p1.1接另一盏灯 -
绽宜肝速: T0MS EQU NOT 25000 ; 定义 50 mS 12M晶振 ORG 0000H JMP MAIN ORG 0003H JMP INT00 ORG 000BH MOV TL0, #LOW T0MS ; TO 50MS 中断 计时 0 MOV TH0, #HIGH T0MSCPL P1.0 ; P1.0接P3.2 RETI INT00: DJNZ R1, INT02 ; INT0 ...

印江土家族苗族自治县17818058157: 单片机:为什么灯一直亮?程序要求是控制P1.0,使输出高低电平,使灯亮一会暗一会 -
绽宜肝速: #include#define uint unsigned int#define uchar unsigned char unsigned int a,time,t; sbit d1=P1^0; void main() {time=0; a=1; TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; d1=0; time=0; while(1) { if(time=...

印江土家族苗族自治县17818058157: 用C语言编程 利用单片机的P1.0 -- P1.3接四个发光二极管L -
绽宜肝速: 主程序如下: sbit key=P3.7; uchar a=0; void main (void) { a=P1>>4; P1=a; while(1) {if key==0){delay_ms(20);if key==0){a--;while(key==0);P1=a;}}} } 延时函数略,不过用4个发光二极管指示数值很不直观

印江土家族苗族自治县17818058157: 单片机C语言程序设计(开关控制二极管) -
绽宜肝速: int0_init(); //外部中断初始化,设置成上升沿中断或下降沿中断 int0() interrupt X //中断函数,中断号我忘记了 {P1|=0X01;delay();P1|=0X02;delay();P1|=0X04;delay();P1|=0X08;delay();P1|=0X10;delay();P1|=0X20;delay();P1|=0X40;delay();P1=0X00;delay();P1=0, }

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