用两种方法来实现对89C52单片机P1口8位进行流水灯的控制(灯亮0.8秒灭0.8秒。,注明芯片时钟频率)

作者&投稿:微索 (若有异议请与网页底部的电邮联系)
AT89C51单片机的P1口控制8盏LED流水灯~


# include "reg51.h" // 包含头文件
#define uchar unsigned char
void delay02s(void) // 延时0.2s子程序
{
unsigned char i,j,k;
for ( i=2;i>0;i-- )
for (j=200;j>0;j-- )
for (k=250;k>0;k-- );
}

void main (void) // 主函数
{
uchar i,j;
while (1) // 死循环
{
j=0x01; // j初始化为0x01,左移初始值
for(i=0;i<8;i++) // for循环语句,完成8个循环
{
P1= ~ j; // 对变量j 中的值按位取反后,从P1口输出
delay02s( ); // 延时0.2s
j= j<<1; // 左移1位
}
j=0x80; // 设置右移初始值j为0x80
for (i=0;i<8;i++)
{
P1= ~ j;
delay02s( );
j= j>>1; // 右移1位
}
}
}
这只是延时的方法实现的。

上位机程序还是单片机程序?我整过,上位机通过串口发指令

#include <reg51.h>
#include<intrins.h>
#define uchar unsigned char
uchar j,temp;

void delay(unsigned int ms)
{
uchar t;
while(ms--)
for(t=0;t<123;t++);
}
void main()
{
P1=0xff;
delay(500);
temp=0xfe; //有点怪,led接在P2.3~P2.6
for(j=0;j<4;j++)
{
P1=temp;
delay(500);
temp=_crol_(temp,1);
}
P1=0xff;
while(1);
}
在这个基础上逐渐更改,几个参数就可以了。主要是delayms的函数值。一、时钟周期

时钟周期也称为振荡周期,定义为时钟脉冲的倒数(时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),是计算机中最基本的、最小的时间单位。

在一个时钟周期内,CPU仅完成一个最基本的动作。对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1us;若采用4MHZ的时钟频率,则时钟周期为250us。由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统一到它的步调上来)。显然,对同一种机型的计算机,时钟频率越高,计算机的工作速度就越快。但是,由于不同的计算机硬件电路和器件的不完全相同,所以其所需要的时钟周频率范围也不一定相同。常用的8051单片机的时钟范围是1.2MHz-12MHz。

在8051单片机中把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。

二、机器周期

在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如:取指令、读存储器、写存储器等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周期(状态周期)组成。8051系列单片机的一个机器周期同6个S周期(状态周期)组成。前面已经说过一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示),8051单片机的机器周期由6个状态周期组成,也就是说一个机器周期=6个状态周期=12个时钟周期。

三、指令周期

指令周期是执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期数也不同。对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如:转移指令、乘法指令,则需要两个或者两个以上的机器周期。
通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。

所以如果你的晶振频率为f,那么一个时钟周期为1/f,机器周期为12*1/f。将你的频率带入公式即可算出……

用延时和定时器两种来实现


8.您认为今后可以采用哪些校核方法提高数据准确性?
crc检验主要有计算法和查表法两种方法,网上很多实现代码。适用范围:CRC-12码通常用来传送6-bit字符串;CRC-16及CRC-CCITT码则用是来传送8-bit字符。CRC-32:硬盘数据,网络传输等。应用例子:rar,以太网卡芯片、MPEG解码芯片中 实现方法:主要有md5和des算法。适用范围:数据比较大或要求比较高的场合...

用两种方法计算8分之1 乘以4 第( )种方法比较简便,是根据()进行计算_百...
以下是我个人观点,不一定是对的:一:直接算:1\/8*4=1\/2 二:间接算:1\/8*8\/2=1\/2(先乘以8,然后再除以2,其实是一样的)

十进制转为八进制怎么算
二进制是由0和1组成的进制,它是计算机内部处理数据的主要形式。二进制在计算机科学中具有特殊的意义,因为它具有简单的运算规则和易于实现的特点。在二进制中,每一位数字代表了不同的权值,例如在4位二进制数中,第一位代表2的0次方,第二位代表2的1次方,以此类推。八进制是由0到7的数字组成的...

五年级信息技术理论操作考查题
一、填空:(每空2分,共30分)1、电脑至少由四部分组成,分别是键盘、鼠标、 显示器 和 主机 。2、要对文字进行美化时,必须先将这些文字 选定 才能完成。3、在Word中,移动光标一般可以通过鼠标 和 特殊用键盘方向键控制 两种方法来实现。4、我校校园网的网址是 我哪知道啊 ...

南瓜育苗移栽与种子点播,两种方法哪一种更容易实现高产?
当南瓜种子出苗了以后,如果有的“带帽”出苗的,那就要在早上露水还没干之前,就把子叶上的种壳轻轻摘掉哦,不然会妨碍子叶的展开,对于南瓜苗的生长是不利的。在南瓜的苗期目前南瓜主要有两种方式种植,一种就是直接将南瓜种子播到土里,这种叫做直播法,简单方便。可以将南瓜的种子浸泡一夜之后放到土...

浙江省08计算机三级网络技术题型!
5.网络中数据通信方式按同步方式分为同步和异步传输方式,同步传输方式传送速率高。( 5)6.网络安全管理同时负责被管理网络对象和网络管理自身的安全。 ( 6)7.计算机网络按照网络的覆盖范围可分为局域网、城域网和互联网。 ( 7)8.中继器用于在同种网络的物理层上,对接收信号进行放大和发送。 ( 8)9.双绞线...

win8开机如何进入安全模式
而在Win8中,WinRE和Windows安装分区默认处于两个独立的环境中,这使得WinRE恢复环境变得更加可靠。其实从Vista开始我就习惯了保留这个隐藏分区的习惯,因为我实在找不到一个必须把它干掉的理由。而且,对于喜欢折腾多个系统的初级用户来说,保留这个分区也是有好处的。一是这个分区备份、恢复起来方便快捷,...

电化学在金属腐蚀与防护的应用
阴极保护又可用两种方法来实现。(1)称为牺牲阳极保护法:它是在腐蚀金属系统上联结电势更负的金属,即更容易进行阳极溶解的金属(例如在铁容器外加一锌块)作为更有效的阳极,称为保护器。这时,保护器的溶解基本上代替了原来腐蚀系统中阳极的溶解,从而保护了原有的金属。此法的缺点是用作保护器的阳极消耗较多。

高分请教!存储器方面
后者允许有一定程度的失真,可用于对图像、声音、数字视频等数据的压缩。其中用这种方法压缩数据时,数字视频图像的压缩比可达到100:1~200:1。数据压缩可以由特殊的计算机硬件实现或完全由软件来实现,也可以软、硬件相结合的方法来实现 。常用的压缩软件由Winzip等。2.2.1文本文件压缩 自适应式替换压缩技术扫描整个文本...

微机题,编制完成EAX*5\/8的程序段。要求:1.用乘法指令实现。2.用...
是否正确?如果不正确,应该用什么方法实现?解: 不正确。正确的方法是:MOV AL, [300OH]MOV [2000H], AL3.7 假如想从200中减去AL中的内容,用SUB 200,AL是否正确?如果不正确,应该用什么方法?解:不正确。正确的方法是:MOV BL, 200SUB BL, AL3.8 试用两种方法写出从8OH端口读入信息的指令。再用两种方法写出...

汉寿县17291354707: 用两种方法来实现对89C52单片机P1口8位进行流水灯的控制(灯亮0.8秒灭0.8秒.,注明芯片时钟频率) -
钊翟复方: 怎么说呢? 方法多的是 一个是写出每步的状态 然后循环 还有可以用系统函数 还可以用程序状态字 亮灭控制可以用定时器 也可以软件延时

汉寿县17291354707: 89c52单片机怎么用4个针脚控制几个4相5线步进电机 -
钊翟复方: 89c52单片机用4个针脚控制几个4相5线步进电机的方法:1、用两片74HC595,串转并,扩展出16个端口,可以控制4个步进电机;2、可以给同时几个驱动模块发电平,可以驱动无数个电机的,输出4路PWM,然后再用一片89C52.因为即使用专用的步进电机驱动芯片,也至少得2个IO控制一个电机.89C52是INTEL公司MCS-51系列单片机中基本的产品,它采用ATMEL公司CMOS工艺技术制造的高性能8位单片机,属于标准的MCS-51的HCMOS产品.它结合了CMOS的高速和高密度技术及CMOS的低功耗特征,它基于标准的MCS-51单片机体系结构和指令系统.

汉寿县17291354707: 求助:请问单片机89c52如何用keil软件烧录,知道的请附详细操作,感谢至致!
钊翟复方: 有两种方法: 1,用keil生成.hex文件,在isis中右击at89c51,再左击,出现相应元件的属性对话框“Program File”一项中选择要加入的.hex文件. 2,联调.联调设置步骤如下: (1)把安装目录Proteus\MODELS下的VDM51.dll文件复制到Keil...

汉寿县17291354707: 89c52单片机怎么实现与PC机之间通信?(详细点) -
钊翟复方: 有两种方法与PC通信:1,同1楼观点.加接一个USB转串口的硬件设备(网上很容易买到),这样既解决了数据线的连接又解决了单片机供电问题,但PC端可能需要安装USB驱动,而且要碰运气,往往因USB驱动问题无法一次成功;2,通过...

汉寿县17291354707: 单片机89c52如何控制多个数码管? -
钊翟复方: 只想用P3口的话,必须另加控制元件. 1一种方法是用两个锁存器来锁存数码管的段码和位码,进行动态扫描显示. 2另一方法是,用P3口的4位接一个BCD译码器控制数码管的段码,再P3口的3位接一个3-8译码器来控制数码管的位进行动态扫描. 3再就是可以用P3口的两根串行线接串并转换IC,来驱动数码管.

汉寿县17291354707: stc89c52单片机怎么实现用两个串口控制两个模块? -
钊翟复方: stc89c52单片机的确就有一个串口,当然可以在外部加一个模拟开关来扩展两个串口,但是两个串口是分时工作的,就是不能同时收发.其实,选择STC12C5A60S2,就完全解决了这个问题吗,它就有两个独立串口,价格上不比stc89c52高多少,还有STC现在推出了最新的STC15系列的单片机,都是有两个独立串口的,价格更低了,还完全可以省掉外部复位电路和时钟电路的晶振,非常方便,为什么不选择这款昵?何苦还用stc89c52,还不能解决两个串口的问题,换个思路问题就全解决了.

汉寿县17291354707: 89c52单片机求编程 -
钊翟复方: #include<reg51.h> #define uchar unsigned char uchar num=0; sbit pulse=P1^0; void t0isr() interrupt 1{ num++; if(num<6)pulse=1; else pulse=0; if(num>80)num=0; } main() { TMOD=0x02; TH0=6; TL0=6; ET0=1; TR0=1; EA=1; while(1); }

汉寿县17291354707: 如何用单片机控制一个以9.6V为电源的电路的通断? -
钊翟复方: 用单片机的IO接光藕,由光藕驱动继电器,通过继电器开关的通断来控制9.6V电源的通断.不知道你的9.6V的电路功率有多大,如果功率小的话,继电器可选线圈工作电压5V,触点容量1A的小型继电器,图中对应的器件为光藕TLP621-2,继电器G5V-1(OMRON);如果9.5V电路功率较大,则光藕可选达林顿光藕,继电器要选功率大一点的继电器.图中单片机为89C52 ,你也可选择其他任意一款单片机.

汉寿县17291354707: 用两个89C52在A上有5个按钮,B上有一个数码管显示.如何编写C程序实现按如何一个按钮在数码管都可以显示 -
钊翟复方: 如果真要这样做,51单片机的话,可以采用串口将两个单片机连起来...通过自定义的数据格式,将按钮信息传送过去,收到后再进行处理,进而显示..这样应该算是比较简单的方法..其实,最简单的,为什么不做到一起呢.5个按钮,一个显示,51单片机完全足够了啊..呵呵 祝你好运!^_^

汉寿县17291354707: 请问如果想实现两个单片机级联怎么办,89C52的 -
钊翟复方: 想要怎样级联?是完成两个单片机通讯吗.这样的话,把两个单片机的串口检查连在一起,把地连在一起就可以了.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网