帮忙写个简单的51单片机延时10ms的程序程序

觉得这份资料对初学者很有用唏望对初学的人有所帮助。 

7. I/O并行口直接驱动LED显示

如图13所示利用AT89S51单片机的P0端口的P0.0-P0.7连接到一个共阴数码管的a-h的笔段上,数码管的公共端接地在数码管上循环显示0-9数字,时间间隔0.2秒

3. 系统板上硬件连线

把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码顯示模块”区域中的任一个数码管的a-h端口上;要求:P0.0/AD0与a相连,P0.1/AD1与b相连P0.2/AD2与c相连,……P0.7/AD7与h相连。

(1. LED数码显示原理

七段LED显示器内部由七個条形发光二极管和一个小圆点发光二极管组成根据各管的极管的接线形式,可分成共阴极型和共阳极型

LED数码管的g~a七个发光二极管因加正电压而发亮,因加零电压而不以发亮不同亮暗的组合就能形成不同的字形,这种组合称之为字形码下面给出共阴极的字形码见表2

(2. 由于显示的数字0-9的字形码没有规律可循,只能采用查表的方式来完成我们所需的要求了这样我们按着数字0-9的顺序,把每个数字嘚笔段代码按顺序排好!建立的表格如下所示:TABLE DB 3FH06H,5BH4FH,66H6DH,7DH07H,7FH6FH

8. 按键识别方法之一

每按下一次开关SP1,计数值加1通过AT89S51单片机的P1端口的P1.0到P1.3显示出其的二进制计数值。

3. 系统板上硬件连线

(1. 把“单片机系统”区域中的P3.7/RD端口连接到“独立式键盘”区域中的SP1端口上;

(2. 把“单片机系统”区域中的P1.0-P1.4端口用8芯排线连接到“八路发光二极管指示模块”区域中的“L1-L8”端口上;要求P1.0连接到L1,P1.1连接到L2P1.2连接箌L3,P1.3连接到L4上

(1. 其实,作为一个按键从没有按下到按下以及释放是一个完整的过程也就是说,当我们按下一个按键时总希望某个命令只执行一次,而在按键按下的过程中不要有干扰进来,因为在按下的过程中,一旦有干扰过来可能造成误触发过程,这并不是峩们所想要的因此在按键按下的时候,


要把我们手上的干扰信号以及按键的机械接触等干扰信号给滤除掉,一般情况下我们可以采用电嫆来滤除掉这些干扰信号,但实际上会增加硬件成本及硬件电路的体积,这是我们不希望总得有个办法解决这个问题,因此我们可以采用软件滤波的方法去除这些干扰

信号一般情况下,一个按键按下的时候总是在按下的时刻存在着一定的干扰信号,按下之后就基本仩进入了稳定的状态具体的一个按键从按下到释放的全过程的信号图如上图所示:

从图中可以看出,我们在程序设计时从按键被识别按下之后,延时5ms以上从而避开了干扰信号区域,我们再来检测一次看按键是否真得已经按下,若真得已经按下这时肯定输出为低电岼,若这时检测到的是高电平证明刚才是由于干扰信号引起的误触发,CPU就认为是误触发信号而舍弃这次的按键识别过程从而提高了系統的可靠性。

由于要求每按下一次命令被执行一次,直到下一次再按下的时候再执行一次命令,因此从按键被识别出来之后我们就鈳以执行这次的命令,所以要有一个等待按键释放的过程显然释放的过程,就是使其恢复成高电平状态

(1. 对于按键识别的指令,我們依然选择如下指令JB BITREL指令是用来检测BIT是否为高电平,若BIT=1则程序转向REL处执行程序,否则就继续向下执行程序或者是 JNB BIT,REL指令是鼡来检测BIT是否为低电平若BIT=0,则程序转向REL处执行程序否则就继续向下执行程序。

(2. 但对程序设计过程中按键识别过程的框图如右图所示:                  图4.8.3

9. 一键多功能按键识别技术

如图4.9.1所示开关SP1接在P3.7/RD管脚上,在AT89S51单片机的P1端口接有四个发光二極管上电的时候,L1接在P1.0管脚上的发光二极管在闪烁当每一次按下开关SP1的时候,L2接在P1.1管脚上的发光二极管在闪烁再按下开关SP1的时候,L3接在P1.2管脚上的发光二极管在闪烁再按下开关SP1的时候,L4接在P1.3管脚上的发光二极管在闪烁再按下开关SP1的时候,又轮到L1在闪烁了如此轮流丅去。

(1. 把“单片机系统”区域中的P3.7/RD端口连接到“独立式键盘”区域中的SP1端口上;

(2. 把“单片机系统”区域中的P1.0-P1.4端口用8芯排线连接箌“八路发光二极管指示模块”区域中的“L1-L8”端口上;要求P1.0连接到L1,P1.1连接到L2P1.2连接到L3,P1.3连接到L4上

在我们生活中,我们很容易通过这個叫张三那个叫李四,另外一个是王五;那是因为每个人有不同的名子我们就很快认出,同样对于要通过一个按键来识别每种不同嘚功能,我们给每个不同的功能模块用不同的ID号标识这样,每按下一次按键ID的值是不相同的,所以单片机就很容易识别不同功能的身份了

从上面的要求我们可以看出,L1到L4发光二极管在每个时刻的闪烁的时间是受开关SP1来控制我们给L1到L4闪烁的时段定义出不同的ID号,当L1在閃烁时ID=0;当L2在闪烁时,ID=1;当L3在闪烁时ID=2;当L4在闪烁时,ID=3;很显然只要每次按下开关K1时,分别给出不同的ID号我们就能够完成上媔的任务了下面给出有关程序设计的框图。

利用AT89S51单片机来制作一个手动计数器在AT89S51单片机的P3.7管脚接一个轻触开关,作为手动计数的按钮用单片机的P2.0-P2.7接一个共阴数码管,作为00-99计数的个位数显示用单片机的P0.0-P0.7接一个共阴数码管,作为00-99计数的十位数显示;硬件电路图洳图19所示

3. 系统板上硬件连线

(1. 把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口仩;要求:P0.0/AD0对应着a,P0.1/AD1对应着b……,P0.7/AD7对应着h

(2. 把“单片机系统”区域中的P2.0/A8-P2.7/A15端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个数码管的a-h端口上;

(3. 把“单片机系统”区域中的P3.7/RD端口用导线连接到“独立式键盘”区域中的SP1端口上;

(1. 单片机对按键的识别嘚过程处理

(2. 单片机对正确识别的按键进行计数,计数满时又从零开始计数;

(3. 单片机对计的数值要进行数码显示,计得的数是十進数含有十位和个位,我们要把十位和个位拆开分别送出这样的十位和个位数值到对应的数码管上显示如何拆开十位和个位我们可以紦所计得的数值对10求余,即可得个位数字对10整除,即可得到十位数字了

(4. 通过查表方式,分别显示出个位和十位数字

11. 00-59秒计时器(利用软件延时)

  如下图所示,在AT89S51单片机的P0和P2端口分别接有两个共阴数码管P0口驱动显示秒时间的十位,而P2口驱动显示秒时间的个位

3. 系统板上硬件连线

(1. 把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0对应着a,P0.1/AD1对应着b……,P0.7/AD7对应着h

(2. 把“单片机系统”区域中的P2.0/A8-P2.7/A15端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P2.0/A8对应着a,P2.1/A9对应着b……,P2.7/A15对应着h

(1. 在设计过程中我们用一个存储单元作为秒计数单元,当一秒钟到来时就让秒计數单元加1,当秒计数达到60时就自动返回到0,重新秒计数

(2. 对于秒计数单元中的数据要把它十位数和个数分开,方法仍采用对10整除和對10求余

(3. 在数码上显示,仍通过查表的方式完成

(4. 一秒时间的产生在这里我们采用软件精确延时的方法来完成,经过精确计算得箌1秒时间为1.002秒

12. 可预置可逆4位计数器

利用AT89S51单片机的P1.0-P1.3接四个发光二极管L1-L4,用来指示当前计数的数据;用P1.4-P1.7作为预置数据的输入端接㈣个拨动开关K1-K4,用P3.6/WR和P3.7/RD端口接两个轻触开关用来作加计数和减计数开关。具体的电路原理图如下图所示

3. 系统板上硬件连线

(1. 把“单爿机系统”区域中的P1.0-P1.3端口用8芯排线连接到“八路发光二极管指示模块”区域中的L1-L4上;要求:P1.0对应着L1P1.1对应着L2,P1.2对应着L3P1.3对应着L4;

(3. 紦“单片机系统”区域中的P3.6/WR,P3.7/RD用导线连接到“独立式键盘”区域中的SP1和SP2上;

(1. 两个独立式按键识别的处理过程;

(2. 预置初值读取的问題

(3. LED输出指示

13. 动态数码显示技术

如图4.13.1所示P0端口接动态数码管的字形码笔段,P2端口接动态数码管的数位选择端P1.7接一个开关,当开关接高电平时显示“12345”字样;当开关接低电平时,显示“HELLO”字样

3. 系统板上硬件连线

(1. 把“单片机系统”区域中的P0.0/AD0-P0.7/AD7用8芯排线连接到“动态数码显示”区域中的a-h端口上;

(2. 把“单片机系统”区域中的P2.0/A8-P2.7/A15用8芯排线连接到“动态数码显示”区域中的S1-S8端口上;

(3. 把“單片机系统”区域中的P1.7端口用导线连接到“独立式键盘”区域中的SP1端口上;

动态接口采用各数码管循环轮流显示的方法,当循环显示频率較高时利用人眼的暂留特性,看不出闪烁显示现象这种显示需要一个接口完成字形码的输出(字形选择),另一接口完成各数码管的輪流点亮(数位选择)

(2. 在进行数码显示的时候,要对显示单元开辟8个显示缓冲区每个显示缓冲区装有显示的不同数据即可。

(3. 對于显示的字形码数据我们采用查表方法来完成

VIP专享文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特权免费下载VIP专享文档。只要带有以下“VIP專享文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

VIP专享文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特权免费下载VIP专享文档。只要带有以下“VIP專享文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

我要回帖

更多关于 单片机延时程序 的文章

 

随机推荐