① 51单片机 水滴实验(LED小灯水滴变大下落,带拖尾效果)程序看不太懂,能解释下具体的实现过程吗
单片机学了一圈,回过头来才看明白这个东西
水滴变大,就是用了pwm波的占空比,亮的次数一次比一次多的话,那么就会变的越来越亮的,,因为在252除4的63次循环中,每次都会k++,那么下次的时候执行db0=1的时间就会比上一次的时间短,那么就会变大了,不过这个程序这么写看着很复杂,你实现一个灯的亮度变化和,8个灯依次的亮度从大到小就能看懂这个了,等到水滴下落的时候,在254次的循环中,每次遇到加速的时间数组的时候就要变化各个灯的亮度,来模拟下落,然后后面的64的循环就是在64次中,用占空比实现到底是哪个灯最亮,哪个比前个暗一点,然后k的15次循环就是碰到该改变P0的值的一次了,这样就会按照a的数字改变值
② 51单片机流水灯安装与调试的过程
利用实验室提供的单片机实验开发板的最小系统电路模块、流水灯电路模块,以及Protues仿真软件搭建电路,实现I/O口循环流水灯演示效果。
LED流水灯控制电路如图2-1所示,八个LED灯D0-D7(可选择LED-RED)阳极接到+5V,阴极通过300欧姆电阻分别接到单片机的P1.0-P1.7八个IO口上。I/O口循环流水灯效果实现流程如图2-2所示,依次从第一盏灯开始,分别点亮每一盏灯,中间调用延时子函数便可使得流水灯的效果清晰可见。点亮LED灯的具体实现方法与上节相同,只需让相应的IO口输出低电平即可,程序实现代码已给出。按照上节给出的项目开发流程,从仿真电路搭建到程序编写,再到仿真调试以及最后的实物调试完成循环流水灯的实现。
③ 怎样学习51单片机
单片机学习如何入门LUOKUI很多搞电子类行业的朋友都梦想自己成为搞硬件的高手,然而搞硬件难就难在没有头绪,学习硬件技术找到一个合适的入手点是最重要的。比较流行的硬件技术有数字系统设计、模拟电路系统设计、射频电路系统设计以及以上三类的混合。模拟与射频的设计入门门槛比较高而且市场份额比较小,因此学习硬件技术从数字电路入手是最容易而且是最具基础性的,而数字电路的设计又以单片机的学习为基础,学习单片机不仅仅是学习一项技术,更重要的是建立起一种数字系统设计的概念,为以后学习其他高档数字器件以及模拟、射频电路打下基础。现在单片机的主流仍然是8位单片机(例如MCS51、AVR、PIC、NEC、瑞萨系列)以及少数16位单片机(例如MSP430、凌阳系列)。在学校的单片机教学中,几乎都是以MCS51为主。但实际应用中却不是这样,在国外的DIY爱好者中,PIC单片机是最流行的;在国内,AVR单片机非常火。所以我要先谈谈单片机学习的两种路子。其一是传统的稳扎稳打型:从MCS51的汇编语言设计以及硬件电路设计开始入手,汇编语言程序设计熟悉了之后(这大概需要半年至一年的时间),对MCS51的内部硬件构成也有了很深的理解,这时再学习51单片机C语言设计(因为实际的大工程不可能用汇编完成),51的资源很有可能不够用,就要换用其他型号的单片机(例如AVR、430)。这种路子的优点在于基础厚实,MCS51的汇编语言运用熟练之后,学习其他单片机会很容易上手。但从汇编向C语言的思维转变是一个比较痛苦的过程。其二是自顶向下型:选定一种实际工程中比较实用的单片机,直接学习怎样使用C语言来开发它,在较短的时间内掌握对其IO口、定时器、中断的操作,然后再慢慢了解芯片内部的硬件构成细节。这种路子的优点有很多:初入门时不需要花比较长的时间去学习单片机内部硬件构成结构之类很枯燥的东西,只要明白C语言的变量与单片机的IO口等模块的寄存器、一个函数与单片机的一项功能、顺序语句与单片机的顺序输出、条件语句与单片机的输入输出间条件关系、循环语句与单片机的反复型输出是怎样映射的就可以完成很多范例项目的开发,可以保持住学习的兴趣;可以直接学习实际工程中用得到的东西,不必完成从MCS51向其他单片机的转变。我推荐大多数的,尤其是已经参加工作的初学者朋友,走第二种路子,而且推荐大家采用AVR系列单片机中的ATmega16来入门。因为AVR相比51和其他单片机有诸多优点。首先是最小系统设计容易,只需要连接电源、焊接晶振就可以工作,尤其是对时钟精度要求不太高的话晶振都可以省去,因为AVR带有内部RC振荡器,相比之下51单片机需要外接上电复位电路(AVR内部自带这个电路而且性能比51的RC复位要好)、EA/VPP引脚要上拉、P0口要上拉等等,光建立最小系统就是很麻烦的一件事。其次很多概念初学者理解起来更容易,AVR的时钟源(晶振、内部RC等)不经过分频直接提供给CPU使用,例如AVR外接10MHz的晶振其CPU的时钟周期就是1/10MHz=0.1uS,而51的时钟源要12分频后提供给CPU,12MHz的晶振对应的CPU时钟频率是1MHz,这一点尤其是在计算定时器相关的设置时AVR非常方便。第三,相比例如PIC、430等其他单片机,AVR既具有简单的、可以自制的ISP下载线和Jtag仿真器,又有DIP直插的封装形式,而且网络上AVR有关的中文资料非常多,尤其是有Atmel公司官方翻译的中文技术文档,大大方便初学者的入门。.第四,AVR的C语言编程与教科书上学习的C语言语法是几乎一样的,不像51的C语言,一些bit、srf之类的变量定义在教科书中是找不到的,在更高层次的ARM、DSP的C语言中也是没有那样用的,仅仅是51独有的用法,尤其是bit变量的用法很“汇编化”,会给后续的嵌入式系统的程序设计形成不好的思维模式。而AVR的设计很入嵌入式系统设计的主流,有利于后续的发展。说了这么多“空洞”的东西,我们说点比较实在的吧,我也是初学者过来的,比较了解初学者的心理,恨不得你给他制定出第一步、第二步、第三步该干什么,那我就按照这个模式讲一下:Step1,准备万用板三块,查找Jtag、ISP的电路,焊接,用掉两块板;剩下的一块用来焊接AVR的最小系统。Step2,在ATmega16的一个8位IO口上焊接8个LED(注意要串接220欧姆限流电阻哦)。Step3,写一个流水灯的小程序。
④ 51单片机汇编语言编写一个跑马灯的程序,初学者做实验用,具体要求如下,好了可以加分
程序1:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV SP,#5FH
LOOP:
MOV A,P2
MOV B,A
MOV P0,A
MOV P1,#0FFH
LOOP1:
LCALL DELAY
MOV C,P1.7
MOV A,P0
RLC A
MOV P0,A
MOV A,P1
RLC A
MOV P1,A
MOV A,P2
CJNE A,B,LOOP
SJMP LOOP1
DELAY:
MOV R2,#60
DELAY1:
MOV R3,#250
DJNZ R3,$
DJNZ R2,DELAY1
RET
END
程序2:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV SP,#5FH
JNB P2.0,LOOP1 ;
JNB P2.1,LOOP2 ;
SJMP MAIN
LOOP1:
MOV P0,#0FEH
MOV P1,#0FFH
LOOP11:
MOV C,P1.7
MOV A,P0
RLC A
MOV P0,A
MOV A,P1
RLC A
MOV P1,A
JNB P2.1,LOOP2
SJMP LOOP11
LOOP2:
MOV P0,#0FCH
MOV P1,#0FFH
LOOP21:
MOV C,P1.7
MOV A,P0
RLC A
MOV P0,A
MOV A,P1
RLC A
MOV P1,A
JNB P2.0,LOOP1
SJMP LOOP21
DELAY:
MOV R2,#60
DELAY1:
MOV R3,#250
DJNZ R3,$
DJNZ R2,DELAY1
RET
END
⑤ 51单片机流水灯实验(我用的是手把手教你学单片机的教程)
呵呵,这个延时有点长哦,有10S,你耐心再看看,有没有变化,如果再没变化,你可以软件仿真一下那个i变量。看他是不是能加到10000,。还有,学51单片机的话建议你去学 郭天祥十天学会51单片机 那个很不错。希望采纳
⑥ 51单片机实验程序
#include "REG52.H"
unsigned char Extep_Time ;
/*
* T0定时器初始化 //
*/
void SystemInit(void)
{
TMOD = 0x01;
TH0 = (65536 - 50000) / 256;
TL0 = (65536 - 50000) % 256;
ET0 = 1;
TR0 = 1;
EA = 1;
}
int main(void)
{
// IO初始化
P0 = 0xFF;
P1 = 0xFF;
P0 = 0xFF;
P1 = 0xFF;
// T0定时器初始化
SystemInit();
while(1);
}
/*
* T0定时器中断服务程序
*/
void Timero_IRQ(void) interrupt 1
{
Extep_Time++;
if(Extep_Time == 20)
{
Extep_Time = 0;
P0 = ~P0;
}
}
⑦ 51单片机实验(关于定时器计数器)
6mz的晶振 可算出一个时钟周期为2微秒,200毫秒去除一下2微秒就是10000,然后吧10000取16进制为 27A0 ,用 FFFF减27A0再加1 得 C860,用定时方式一,TL0 ,#60H
TH0, #C8H
⑧ 51单片机应该做哪些实验
如果是刚开始学习的话,那就买一块开发板,比如笃行之家的,一般的开发板都会配套好多实验,你可以先学习基本的实验,如流水灯,数码管,点阵,lcd显示,红外,AD/DA,继电器,蜂鸣器等,学完了之后就可以拔高练习。