完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
一、功能介绍
此程序是基于C51的程序编写,利用C语言进行编写,区别于汇编语言。 在进行单片机学习时,流水灯是基础的练习,了解单片机程序编程的基本语句。本文章的流水灯仅仅实现简单的单个LED依次亮灭。在后续文章会给出多种流水灯的实现方式。 二、代码展示 #include《reg51.h》#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文件的相关参数。 |
|
|
|
只有小组成员才能发言,加入小组>>
2545 浏览 0 评论
1143浏览 2评论
743浏览 1评论
496浏览 0评论
257浏览 0评论
419浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 11:56 , Processed in 1.242225 second(s), Total 80, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号