#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同时亮,或者同时灭,每中断一次变反一次,编写程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)