完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
一、功能介绍
此程序是基于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文件的相关参数。 |
|
|
|
只有小组成员才能发言,加入小组>>
2562 浏览 0 评论
1159浏览 2评论
762浏览 1评论
515浏览 0评论
272浏览 0评论
453浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 10:01 , Processed in 1.422665 second(s), Total 78, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号