AT89C51
回帖(1)
2021-11-2 11:30:22
一、功能介绍
此程序是基于C51的程序编写,利用C语言进行编写,区别于汇编语言。
在进行单片机学习时,流水灯是基础的练习,了解单片机程序编程的基本语句。本文章的流水灯仅仅实现简单的单个LED依次亮灭。在后续文章会给出多种流水灯的实现方式。
二、代码展示
#include
#include "intrins.h"//库文件名
#define uchar unsigned char
#define uint unsigned int//定义uchar和uint分别来代替无符号的字符型和整型变量
uchar p1_data[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//段码值,这里根据芯片与LED的连接次序来确定段码值
void DelayMs(uint n)//延时秒函数定义,这里使用的是晶振频率为12MHz,若为11.0592MHz,则j<113
{
uchar j;
while(n--)
{for(j=0;j<123;j++);
}
}
void main(void)//主函数编写
{ uchar i;
while(1)//循环体
{
for(i=0;i<8;i++)
{P1=p1_data;
DelayMs(1000);
}
}
}
三、仿真
四、总结
(一)思考题
①如何改变延时时间常数,使发光二极管闪亮时间改变?
void main(void)
{ uchar i;
while(1)
{
for(i=0;i<8;i++)
{P1=p1_data;
DelayMs(400);
}
}
}
在这个void main(void)函数中,将最后一个DelayMs(400)中的400进行改变,比如在实验中将400改为1000使得发光二极管闪亮时间明显减慢。
②如何修改程序,使发光二极管移动方向改变?
将uchar p1_data[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};这串代码中的0xfe-0x7f改变顺序就会使发光二极管的移动方向发生改变,比如改成uchar p1_data[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};发光二极管就会与原来发光二极管的移动方向正好相反。 (二)注意的问题
①在控制灯亮灭的时候要注意码值对应;
②仿真时注意设置生成hex文件的相关参数。
一、功能介绍
此程序是基于C51的程序编写,利用C语言进行编写,区别于汇编语言。
在进行单片机学习时,流水灯是基础的练习,了解单片机程序编程的基本语句。本文章的流水灯仅仅实现简单的单个LED依次亮灭。在后续文章会给出多种流水灯的实现方式。
二、代码展示
#include
#include "intrins.h"//库文件名
#define uchar unsigned char
#define uint unsigned int//定义uchar和uint分别来代替无符号的字符型和整型变量
uchar p1_data[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//段码值,这里根据芯片与LED的连接次序来确定段码值
void DelayMs(uint n)//延时秒函数定义,这里使用的是晶振频率为12MHz,若为11.0592MHz,则j<113
{
uchar j;
while(n--)
{for(j=0;j<123;j++);
}
}
void main(void)//主函数编写
{ uchar i;
while(1)//循环体
{
for(i=0;i<8;i++)
{P1=p1_data;
DelayMs(1000);
}
}
}
三、仿真
四、总结
(一)思考题
①如何改变延时时间常数,使发光二极管闪亮时间改变?
void main(void)
{ uchar i;
while(1)
{
for(i=0;i<8;i++)
{P1=p1_data;
DelayMs(400);
}
}
}
在这个void main(void)函数中,将最后一个DelayMs(400)中的400进行改变,比如在实验中将400改为1000使得发光二极管闪亮时间明显减慢。
②如何修改程序,使发光二极管移动方向改变?
将uchar p1_data[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};这串代码中的0xfe-0x7f改变顺序就会使发光二极管的移动方向发生改变,比如改成uchar p1_data[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};发光二极管就会与原来发光二极管的移动方向正好相反。 (二)注意的问题
①在控制灯亮灭的时候要注意码值对应;
②仿真时注意设置生成hex文件的相关参数。
举报
更多回帖