173 2438 5004
KEROS加密芯片——品牌直销 | 免费样品 | 技术支持
当前位置:网站首页 > 资讯中心 正文 资讯中心

52号单片机程序

htxw 2023-03-15 资讯中心 36 ℃

用C语言编写C52单片机的流水灯程序

附上流水灯程序

#includereg52.h

#includeintrins.h

unsigned char temp;

void delay(unsigned int x);

void main()

{

temp=0xfe; /*16进制的表示法,不能用:0eH这种形式了*/

while(1)

{

P1=temp;

delay(1000);

temp=_crol_(temp,1);

}

}

void delay(unsigned int x)

{

unsigned char j;

while(x--)

{

for(j=200;j0;j--)

{

;

}

}

}

52单片机直流电机正反转程序

52单片机如51单片机的指令集是一样的,写电机的正反转程序,就是用一个电桥啊,就是4个三极管组成桥B,然后对应的墙壁打通就可以让电系症状,另外的对对比对面的桥臂导通可以用电机反转,所以直接用单片机的io口引脚输出高低电平就可以控制电机的症状和反转的。

求52单片机流水灯程序

//单片机流水灯程序,是学习单片机的最简单的程序。

//流水灯

#include REG51.h  //51头文件

#define DY_PORT P1 //设置LED连接的I/O组

#define DY_SPEED  100 //设置每一个明亮级的停留时间(值域:0~65535)

void delay (unsigned int a){ // 1ms延时程序

unsigned int i;

while( --a != 0){

for(i = 0; i 600; i++);

}    

}

void main(void){

unsigned int i;

unsigned int temp;

while(1){

temp=0x01;

for(i=0;i8;i++){ //8个流水灯逐个闪动

DY_PORT=~temp;

delay(DY_SPEED);   //调用延时函数

temp=1;

}

temp=0x80;

for(i=0;i8;i++){ //8个流水灯反向逐个闪动

DY_PORT=~temp;

delay(DY_SPEED);   //调用延时函数

temp=1;

}

temp=0xFE;

for(i=0;i8;i++){ //8个流水灯依次全部点亮

DY_PORT=temp;

delay(DY_SPEED);   //调用延时函数

temp=1;

}

temp=0x7F;

for(i=0;i8;i++){ //8个流水灯依次反向全部点亮

DY_PORT=temp;

delay(DY_SPEED);   //调用延时函数

temp=1;

}

}

}

52单片机接口与舵机控制程序

可以用任意一个IO引脚和舵机连接,程序上,用两个定时器,定时器1定时20ms,中断时让IO管脚输出高电平,并启动定时器2,定时器2定时1.5至2.5ms,对应舵机的角度,中断时让该管脚输出低电平,并关闭自身。改变定时器2的定时时间,即改变了舵机的转角。

用52单片机C语言编写程序,实现00~59计时。要求用T0,工作方式1。

#include reg52.h

#define uint unsigned int

#define uchar unsigned char

sbit dula=P2^6; //段选

sbit wela=P2^7; //位选

uchar shi,ge,num1,num2; //变量

uchar code table[]={0x3f,0x06,0x5b,0x4f, //共阴极字型码

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};

void delay(uint x) //延时子程序

{

uint i,j;

for(i=0;ix;i++)

for(j=0;j120;j++);

}

void init()

{

TMOD=0x01; //设置定时器0的工作方式

TH0=(65536-50000)/256; //装初值

TL0=(65536-50000)%256;

EA=1; //开总中断

ET0=1; //开定时器0中断

TR0=1; //启动定时器0

}

void display() //显示子程序

{

dula=1;

P0=table[ge]; //送段选数据

dula=0;

P0=0xff; //送位选数据前关闭所有显示

wela=1;

P0=0xfe; //送位选数据

wela=0;

delay(5); //延时

dula=1;

P0=table[shi];

dula=0;

P0=0xff;

wela=1;

P0=0xfd;

wela=0;

delay(5);

}

void main()

{

init();

while(1)

{

display();

}

}

void timer() interrupt 1

{

TH0=(65536-50000)/256; //重装初值

TL0=(65536-50000)%256;

num1++;

if(num1==20) //到了20次,1秒时间到

{

num1=0; //清0重新计数

num2++;

if(num2==60)

num2=0;

P1=0x00;

delay(500);

P1=0xff;

shi=num2/10; //把一个2位数分离后分别送数码管显示

ge=num2%10; //十位和个位

}

}

试了的,可以放心,采纳吧!

52号单片机程序的介绍到此就结束了,感谢您耐心阅读,谢谢。

本文标签:52号单片机程序

<