51单片机设计跑马灯的程序用(c语言)编写

51单片机设计跑马灯的程序用(c语言)编写,第1张

|P1口接8个发光二极管共阳

#include <AT89X51H>

unsigned char i;

unsigned char temp;

unsigned char a,b;

void delay(void)

{

unsigned char m,n,s;

for(m=20;m>0;m--)

for(n=20;n>0;n--)

for(s=248;s>0;s--);

}

void main(void)

{

while(1)

{

temp=0xfe;

P1=temp;

delay();

for(i=1;i<8;i++)

{

a=temp<<i;

b=temp>>(8-i);

P1=a|b;

delay();

}

for(i=1;i<8;i++)

{

a=temp>>i;

b=temp<<(8-i);

P1=a|b;

delay();

}

}

}

扩展资料:

Proteus 自从有了单片机也就有了开发系统,随着单片机的发展开发系统也在不断发展。 keil是一种先进的单片机集成开发系统。它代表着汇编语言单片机开发系统的最新发展,首创多项便利技术,将开发的编程/仿真/调试/写入/加密等所有过程一气呵成,中间不须任何编译或汇编。

参考资料来源:百度百科-51单片机

下载一个keil软件包,并安装。

打开keil,看到如图界面。

首先新建一个工程,选择project-new project,d出一个对话框,填写工程名,确定。然后选择你所使用的芯片,型号,确定。

然后点击文件File—New,新建一个文件,确定。

5

之后我们就可以在编辑区写程序了,按照51指令集yongc语言比较好写。

舵机是一种位置伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。其工作原理是:控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为15ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。编程的时候也很简单,你将一根管脚初始化为低电平,然后写一个while循环,在循环中将该脚职位高电平,延时,再拉为低电平,如此不停的循环就是PWM波,你需要控制的是高电平产生的时间,根据高电平的时间来控制舵机的角度的,希望能帮的上你

1、首先我们打开Keil μVision编译器,新建一个工程,然后保存在硬盘上的位置,然后选择Atmel-AT89C51单片机为模型,并启动器添加STARTUPA51文件,然后在当前目录下新建一个C文件,并将其添加入工作路径。

2、导入51单片机的头文件以及LCD1602的头文件。

3、创建一个延时函数,可以传入想要具体延时的时长,其内部实现是由一个二重循环,两个循环的次数相乘积。

4、然后创建写命令的函数,指定RS和E同时为0时,才可以写入命令,设定完成后,将com写入输出端口,规定写命令时,E为正脉冲,然后空 *** 作一个机器周期等待机器反应。

5、然后创建写数据的函数,规定写数据时,E为正脉冲,规定当RS=1和RW=0时才可以写入数据,然后将数据从输出端口输出,最后让E产生正跳变。

6、然后创建初始化LCD1602的函数,指定显示模式位两行显示,57,8位数据、整体显示,无光标,无闪烁、写入一个字符后地址指针加1,最后进行清屏 *** 作。

7、最后在主函数中首先执行LCD1602的初始化函数,首先创建一个无限循环,然后添加两个字符串,这里以两行显示百度经验的网址为例,再进行延时以及使用清屏函数进行刷新。

1先安装Keil C51并破解,再安装MDK5并破解。

2分别打开Keil C51和MDK5的安装目录。将Keil C51安装目录下的C51文件夹复制到MDK5的安装目录文件夹下。

3分别打开TOOLSINI文件;将Keil C51下TOOLSINI文件的内容复制,粘贴到MDK5下TOOLSINI文件内容的最低端。

4注意查看并找到粘贴到MDK5下TOOLSINI文件中如下行代码:

[C51]

PATH="D:\Keil\C51\"(Keil C51安装目录下TOOLSINI文件中的内容)

将Keil处的内容改成与MDK5下TOOLSINI文件中如下行代码:

RTEPATH="D:\Keil_v5\ARM\PACK"

Keil_v5处的内容一样。

目的是让软件在MDK5安装目录内找到C51文件。

5完成以上 *** 作,就可以将安装的Keil C51软件卸载,在MDK5软件上就可以编译C51单片机程序了。亲自测试可行。

来自:网页链接

#include<reg52h>

#define uchar unsigned char

#define uint unsigned int

sbit lcden=P3^4;

sbit rs=P3^5;

sbit dula=P2^6;

sbit wela=P2^7;

sbit s1=P3^0;

sbit s2=P3^1;

sbit s3=P3^2;

sbit rd=P3^7;

uchar num,count,s1num;

uchar code table[]=" 2007-7-30 MON";

uchar code table1[]=" 00:00:00 ";

char shi,fen,miao;

void delay(uchar z)

{

uchar x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void write_com(uchar com)

{

lcden=0;

rs=0;

P0=com;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

void write_date(uchar date)

{

lcden=0;

rs=1;

P0=date;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

void init()

{

wela=0;

dula=0;

lcden=0;

write_com(0x38);

write_com(0x0c);

write_com(0x06);

write_com(0x01);

write_com(0x80);

for(num=0;num<13;num++)

{

write_date(table[num]);

delay(5);

}

write_com(0x80+0x40);

for(num=0;num<11;num++)

{

write_date(table1[num]);

delay(5);

}

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TR0=1;

}

void write_sfm(uchar add,uchar date)

{

uchar shi,ge;

shi=date/10;

ge=date%10;

write_com(0X80+0X40+add);

write_date(0x30+shi);

write_date(0x30+ge);

}

void keyscan()

{

rd=0;

if(s1==0)

{

delay(5);

if(s1==0)

{

while(!s1);

s1num++;

if(s1num==1)

{

TR0=0;

write_com(0x80+0x40+10) ;

write_com(0x0f);

}

if(s1num==2)

{

write_com(0x80+0x40+7);

}

if(s1num==3)

{

write_com(0x80+0x40+7);

}

if(s1num==4)

{

s1num=0;

TR0=1;

write_com(0x0c);

}

}

}

if(!s1num)

{

if(s2==0)

{

delay(5);

if(s2==0)

{

while(!s2);

if(s1num==1)

{

miao++;

if(miao==60)

miao=0;

write_sfm(10,miao);

write_com(0x80+0x40+10);

}

if(s1num==2)

{

fen++;

if(fen==60)

fen=0;

write_sfm(7,fen);

write_com(0x80+0x40+7);

}

if(s1num==3)

{

shi++;

if(shi==24)

shi=0;

write_sfm(4,shi);

write_com(0x80+0x40+4);

}

}

}

if(s3==0)

{

delay(5);

if(s3==0)

{

while(!s3);

if(s1num==1)

{

miao--;

if(miao==-1)

miao=59;

write_sfm(10,miao);

write_com(0x80+0x40+10);

}

if(s1num==2)

{

fen--;

if(fen==-1)

fen=59;

write_sfm(7,fen);

write_com(0x80+0x40+7);

}

if(s1num==3)

{

shi--;

if(shi==-1)

shi=23;

write_sfm(4,shi);

write_com(0x80+0x40+4);

}

}

}

}

}

void main()

{

init();

while(1)

{

keyscan();

}

}

void timer0() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

count++;

if(count==18)

{

count=0;

miao++;

if(miao==60)

{

miao=0;

fen++;

if(fen==60)

{

fen=0;

shi++;

if(shi==24)

{

shi=0;

}

write_sfm(4,shi);

}

write_sfm(7,fen);

}

write_sfm(10,miao);

}

}

以上就是关于51单片机设计跑马灯的程序用(c语言)编写全部的内容,包括:51单片机设计跑马灯的程序用(c语言)编写、怎么用keil5编译51的程序、如何用51单片机控制舵机的怎样编写程序啊大哥帮帮忙等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存