设计单片机控制电路,并编写程序使单片机P1口第1,3个引脚的发光二极管同时以100ms闪烁

设计单片机控制电路,并编写程序使单片机P1口第1,3个引脚的发光二极管同时以100ms闪烁,第1张

#include<reg51h>

bit flag=0;

unsigned char num=0,led[2]={0xfa,0xff};

void t0isr() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

flag=~flag;

if(flag==0)

{

P1=led[num];

num++;

num%=2;

}

}

main()

{

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

TR0=1;

ET0=1;

EA=1;

while(1);

}

1直接按键盘的F4键,单击“变换”菜单栏,然后单击第一个“变换”项,单击工具栏上的“程序变更”按钮,根据自己的习惯选择合适的变换方法。

2程序更改后,有必要检查程序是否有语法错误。这种检查只能自我诊断语法,与设计内容无关。程序检查需要单击工具菜单栏中的“程序检查”。

3建议有双线圈输出,因为一些“手动/自动”双线圈输出也正常。

4检查正确后,您可以将程序写入PLC:单击菜单栏中的在线写入。

5直接单击工具栏中的“写入”按钮。

6单击并写入后,系统将提示您编写内容。您可以选择仅编写程序而不编写注释,也可以选择全部。建议在PLC存储器允许时写入所有程序,参数和注释,这将有助于您稍后进行调试。

7单击“执行”后,将出现多个提示窗口。选择提示内容后,选择“是”直到编写程序。

//对51不是很熟悉了,抄来的,自己修改了下。仿真了,没有问题

#include <reg51h>

#include <stdioh>

void timer0_ISR(void) interrupt 1 using 3

{

P1 = ~P1;

TL0 = 0XFF;

TH0 = 0XFF;

TF0 = 0;

}

void timer_init(void)

{

IE=0x82; //寮€镐讳腑鏂璄A锛屽厑璁稿畾镞跺櫒0涓柇ET0

TCON=0x00; //锅沧瀹氭椂鍣紝娓呴櫎镙囧织

TMOD=0x02; //宸ヤ綔鍦ㄥ畾镞跺櫒0镄勬ā寮涓

TH0=0x38; //璁剧疆阅嶈浇鍊

TL0=0x38; //璁剧疆瀹氭椂鍣ㄥ垵鍊

TR0=1; //鍚姩瀹氭椂鍣

}

void main(void)

{ //P1 = 0XFF;

timer_init();

while (1)

;

}

请设计一个2位静态数码管从00到59显示的程序

#include <reg51h>

unsigned char show[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

int n, j;

qc()interrupt 1 using 3

{TH0=(65336-10000)/256;

TL0=(65336-10000)%256;

n++;

if (n>=100)

{n=0;

j++;

if (j>=60)

j=0;

}

}

main ()

{int gw,sw ;

ET0=1;

EA =1;

TMOD =0x01;

TH0=(65536-10000)/256;

TL0=(65336-10000)%256;

TR0=1;

while (1)

{ gw =j/10;

sw =j%10;

P0=show[gw];

P1=show[sw];

}

}

#include<reg52h> // 包含51单片机寄存器定义的头文件

void delay(void) //延时函数,延时约1毫秒

{

unsigned char i;

for(i=0;i<275;i++)

;

}

void main(void)

{

while(1) //无限循环

{

P2=0xfe; //P20引脚输出低电平,DS0点亮

P0=0xf9; //数字1的段码

delay();

P2=0xfd ; //P21引脚输出低电平,DS1点亮

P0=0xa4; //数字2的段码

delay();

P2=0xfb; //P22引脚输出低电平,DS2点亮

P0=0xb0; //数字3的段码

delay();

P2=0xf7; //P23引脚输出低电平,DS3点亮

P0=0x99; //数字4的段码

delay();

P2=0xff;

}

}

我这是根据我的电路图写的程序,这个可以实现交替出现1234, void delay()为1毫秒的延时基准程序,不太准,可以通过i的值来控制延时时间,具体可通过keil软仿看看到底延时多长时间。我的程序是低电平有效,我只给出了1234的循环显示,剩下的你自己再写就好了,毕设的话自己写很重要。谢谢,本人水平不高,有错误还需指正!

在开头加上这句:

parameter s0=3'b001,s1=3'b010,s2=3'b100;

(即定义三个常量)

把这句:

reg[2:0] Q = 3'b001;

改成这样:

reg[2:0] Q = s0;

再把这句:

Shift = {Shift[1:0], Shift[2]};

改成这样:

case (Q)

s0: Q <= s1;

s1: Q <= s2;

s2: Q <= s0;

default: Q <= s0;

endcase

这段程序的意思就是根据当前Q(也就是我的Shift)的状态(s0,s1,s2之一)决定下一时刻的状态。default的意思是如果当前处于非法状态,那么把Q置为合法状态之一s0。

事实上这样写远不如我那样写简练。

以上就是关于设计单片机控制电路,并编写程序使单片机P1口第1,3个引脚的发光二极管同时以100ms闪烁全部的内容,包括:设计单片机控制电路,并编写程序使单片机P1口第1,3个引脚的发光二极管同时以100ms闪烁、怎样给电路板上的芯片写入程序、51单片机,电路图如下,要求8个LED同时亮,或者同时灭,每中断一次变反一次,编写程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10115466.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存