跑马灯C语言实验报告,51单片机跑马灯实验报告 分析与小结,思考题源码下载
一、实验目的与要求
1.熟悉 Keil C51 集成环境软件的使用方法。
2.熟悉 MCS51 汇编指令,能自己编写简单的程序,控制硬件。
3.熟悉畅学开发平台,掌握单片机最小系统及 IO 口的简单控制及不同组 IO 口的特点。二、实验内容
1、熟悉Keil C51集成环境软件的安装和使用方法。
2、照接线图编写程序,完善给出程序,实现以下功能。
要求LED灯实现从上到下依次点亮,再从下到上依次点亮。完成后实现从两侧向中间循环点亮,再从中间往外循环点亮。功能完成后循环上述过程。
3、观察实验结果,验证程序是否正确。2.1 实验完成内容
1、延时实现LED流水灯效果,p1端口的八个灯作跑马灯。在本实验中,p1作为输出口,接8只发光二极管,编写程序,使发光二极管循环点亮。
本例实验主要用到了延时子程序,CLR、AJMP、RRC、RLC、CALL等指令,通过轮流点亮p0.0,….p0.7实现效果。
2、照接线图编写程序,完善给出程序,实现功能:LED灯实现从上往下依次点亮,在从下往上依次点亮。完成后实现从两侧到中间循环点亮,在从中间向外循环点亮。功能完成后循环上述过程。
2.2 芯片选型
STC12C5A60S22.3 电路原理图
2.4 关键资源说明(所应用单片机内部资源及外围接口芯片的核心说明)
畅学系列开发平台一套;
PC 机一台;
内部:累加器A,寄存器R4和进位标志位C以及外部外部I/O接口与P1口。2.5 设计分析
为了实现跑马灯的效果,即:LED依次点亮(循环),就是要求从P1口: P1.0至P1.7依次输出低电平,当某引脚为低电平时,其余引脚都输出高电平。
从输出的数据分析:
第一个LED点亮时,对应的是P1.0的位为0,其余位为1,组合为一个二进制位从高到低为:1111 1110,即十六 进制数0xFE;同理,第二个LED点亮对应的数为:1111 1101,化为十六进制数为0xFD。 依次类推,逐次点亮LED所对应的数据为:1111 1110、1111 1101、1111 1011、1111 0111、 1110 1111、1101 1111、1011 1111、0111 1111。
规律:数据中的二进制数0的位置依次往左移动了一位。
2.6程序流程图
四、实验运行效果及说明
LED灯实现从上往下依次点亮,再从下往上依次点亮。完成后实现从两侧到中间循环点亮,在从中间向外循环点亮。
五、思考题1、循环间隔时间通过延时怎么控制?
答:通过延时程序可以控制循环间隔的时间,无论是C语言还是汇编,延时起到的作用都是不可或缺的。
Delay:
MOV R0,#10 ;(1)
Delay1:
MOV R1,#100 ;(1*10)
DJNZ R1,$ ;(2*100*10)
DJNZ R0,Delay1 ;(2*10)
ret ;(2)
total=1+1*10+2*100*10+2*10+2=2033
time=total*1/(focse/12)
void Delay(unsigned int uiCount)
{
unsigned char j = 244;
for(;uiCount > 0;uiCount--) while(--j);
}
2、跑马灯模式如何实现间隔亮、多位同时亮等其他效果?
答:间隔亮可以利用子函数DELAY三重循环控制,多位同时亮可以给多位赋初值来体现。
ORG 0000H
LJMP MAIN
ORG 0020H
MAIN:
MOV R6,#07H
MOV R7,#FEH ;1111 1110
LOOP1:
MOV P1,R7
LCALL DELAY
MOV A,R7
RLC A
MOV R7,A
DJNZ R6,LOP1
MOV R6,#07H
MOV R7,#7FH ;0111 1111
LOOP2:
MOV P1,R7
LCALL DELAY
MOV A,R7
RRC A
MOV R7,A
DJNZ R6,LOP2
LJMP MAIN
DELAY:
MOV R3,#0FFH
LOOP3:
MOV R4,#0FFH
LOOP4:
NOP
DJNZ R4,LOP4
DJNZ R3,LOP3
RET
END
六、实验分析与小结
通过汇编语言和C语言程序分别实现使八个跑马灯从上往下,在从下往上的循环亮灯,以及实现从中间到两边,在从两边到中间的循环亮灯。此次实验中,从开始的蜂窝鸣叫测试,到后续自己编写,烧录跑马灯程序,虽然过程因为开始的不懂原理有点绕路,到后来循序渐进,还是一个比较有趣的过程。将想法变为现实,与以往的设计软件不同,此次通过程序指令使得硬件实现自己想要的功能。让自己实打实的,眼看手做去实现,挺好的。
三、实验程序
汇编:
ORG 0000H
LJMP START
ORG 0100H
START:
MOV A , #0FFH
CLR C
MOV R4 , #08H
LOOP1:
RRC A
MOV P1 , A
LCALL DELAY
DJNZ R4 ,LOOP1
MOV A , #0FFH
CLR C
MOV R4 , #08H
LOOP2:
RLC A
MOV P1 , A
LCALL DELAY
DJNZ R4 ,LOOP2
JMP START
DELAY:
MOV R1 , #20H
D0:
MOV R2 , #00H
D1:
MOV R3 , #00H
DJNZ R3 , $
DJNZ R2 , D1
DJNZ R1 , D0
RET
END
从中间往两边依次点亮,再从两边往中间依次点亮
ORG 0000H
LJMP START
ORG 0100H
START:
MOV A,#0EFH
MOV P1,A
MOV R2,#08H
LOOP1:
MOV R6,A
RRC A
MOV P1,A
LCALL DELAY
MOV A,R6
RLC R6
MOV P1,A
LCALL DELAY
DJNZ R4,LOOP1
MOV R4,#08H
MOV A,#0EFH
MOV P1,A
MOV R4,#08H
LOOP2:
MOV A,#FEH
MOV P1,A
LCALL DELAY
MOV R7,A
MOV A,#07H
MOV P1,A
LCALL DELAY
MOV A,R7
RLC A
MOV P1,A
LCALL DELAY
DJNZ R4,LOOP2
CLR C
JMP START
DELAY:
MOV R1,#20H
D0:
MOV R2,#00H
D1:
MOV R3,#00H
DJNZ R3,$
DJNZ R2,D1
DJNZ R1,D0
RET
END
C语言:
#include
//延时函数,uiCount-延时参数,每加1增加0.5ms
void Delay(unsigned int uiCount)
{
unsigned char j = 244;
for(;uiCount > 0;uiCount--) while(--j);
}
unsigned char code table[]={ 0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff,
};
void Delay(unsigned int); //延时函数
//主函数,控制LED
void main(void)
{
unsigned char i;
while(1)
{
for(i=0;i<16;i++) //依次点亮和熄灭8个LED
{
P1=table[i];
Delay(1000);
}
P1=0x7f; //赋初始值
for(i=0;i<8;i++) //循环右移点亮LED
{
Delay(500);
P1>>=1;
P1=P1|0x80; //右移后,最左端自动赋值0,把第7位置1
}
}
}复制代码
完整的Word格式文档51黑下载地址:
跑马灯.docx
(332.88 KB, 下载次数: 10)
2018-12-1 16:22 上传
点击文件名下载附件
下载积分: 黑币 -5
跑马灯C语言实验报告,51单片机跑马灯实验报告 分析与小结,思考题源码下载相关推荐
- 基于51单片机的室内温度可燃气体检测报警系统Proteus仿真(源码+仿真+全套资料)
资料编号:133 讲解视频: 133-基于51单片机的室内温度可燃气体检测报警系统Proteus仿真(源码+仿真+全套资料) 功能介绍: 采用51单片机作为主控,LCD1602显示当前温度和可燃气体浓 ...
- 基于51单片机的舞蹈机器人四路步进电机控制仿真(源码+仿真+全套资料)
资料编号:091 通过51单片机控制4个步进电机旋转,模拟出机器人的四肢动作,全套资料齐全:具体功能请下方看演示视频 91-基于51单片机的舞蹈机器人四路步进电机控制仿真(源码+仿真+全套资料) 单片 ...
- 基于51单片机的人体红外探测防盗报警(仿真+源码+全套资料)
资料编号:128 功能说明: 1.按下紧急报警按键,紧急报警灯闪烁,蜂鸣器报警 2.按下布防按键,布防指示灯开始闪烁,闪烁大约30秒,保持亮的状态,进入布防模式 3.按下取消报警/布防按键,取消布防 ...
- 模块称重51单片机电子秤称重压力检测阈值报警仪系统 源码+原理图仿
HX711模块称重51单片机电子秤称重压力检测阈值报警仪系统 源码+原理图仿真(文件,文件,文件) 本系统由STC89C52单片机.LCD1602液晶显示.HX711称重传感器. 蜂鸣器报警.按键及电 ...
- 实验四51单片机并口实验
一.实验目的: 1. 了解51单片机I/O口的电气特性和驱动能力. 2. 了解LED电路中加入限流电阻的原因. 3. 掌握定时器原理及编程. 4. 掌握并口程序的编辑.编译.调试和运行. 二.实验设备 ...
- 实验六 51单片机定时/计数器实验
熟悉唐都51单片机实验箱及综合实验调试平台,深入理解和掌握单片机内部定时/计数器各种工作方式的不同.掌握C51的编程方法以及头文件的使用,学会使用Keil软件. 实验内容: 1. 搭建51单片机对外部 ...
- hx711c语言程序,51单片机HX711传感器电子秤设计(原理图、程序源码、BOM等)
#include //调用单片机头文件 #define uchar unsigned char //无符号字符型 宏定义 变量范围0~255 #def ...
- 基于51单片机智能家居监控系统设计仿真(proteus仿真+源码+报告)
本设计: 仿真版本:proteus 8.9 程序编译器:keil 4 设计编号:C0040 功能介绍: 以提高家居生活的安全性.舒适度.人性化为目的,设计智能家居监控系统. (1)设计必须实现家居温度 ...
- LCD1602液晶显示屏用51单片机怎么驱动?(详细笔记附设计源码)
LCD1602液晶显示 (一)LCD1602简介 1602液晶也叫1602字符型液晶,它是一种专门用来显示字母.数字.符号的点阵型液晶模块.它是由若干个5x7或者5x10的点阵字符位组成,每个点阵字符 ...
最新文章
- 庄导就业指导2020.4.6
- python高斯求和_二、算法分析
- CANopen | 对象字典OD 01 - canfestival对象字典编辑软件安装与使用
- 从搭建大数据环境说起,到执行WordCount所遇到的坑
- python如何表示坐标_python – 如何制作x坐标字母?
- python调用simulink_[Python-MATLAB] 在Python中调用MATLAB的API
- 大数据分析是如何工作
- java异常的捕获和处理
- android多屏互动方案,基于Android的DLNA多屏互动系统的设计与开发
- Java--第2天--Html(二)
- HTML5 CSS3学习
- 树莓派CM4六路串口设置及使用
- 云和人工智烈日当头,华为HPC解决方案如何应对?
- 首先提出电子计算机存储程序的科学家,1、世界上首先实现存储程序的电子数字计算机是___C_。.doc...
- 蛙蛙推荐:一个程序员2012年技术学习总结 - 蛙蛙王子 - 博客园
- Python—遇到的问题,使用PyPDF2转化pdf时候遇到的各种问题。
- SpringAMQP-Basic Queue、Work Queue、Fanout、Direct、Topic
- 计算机系统时间的修复,电脑时间总是不对,小编教你如何恢复正常
- windbg 命令 - !list
- HR常问面试题总结(1)
热门文章
- Laya 将传统的bitmap字体 转换成 Laya可以识别的字体
- linux maven yum安装,linux下yum安装maven
- C++的STL库常见函数
- 别忽悠我,征信真的有黑名单吗?
- python下载博文中微博图床图片
- [原创]安全系列之端口敲门服务(Port Knocking for Ubuntu 14.04 Server)
- Mysql主从同步报错解决:Fatal error: The slave I/O thread stops because master and slave have equal..
- Vuepress Reco主题备忘
- 2013中国企业500强榜单出炉
- 显卡的性能看哪些参数?