A. 单片机程序,设计一个倒计时程序,每八个小时响一次,持续时间五秒,求大神帮忙。
#include <reg52.h>
#include <math.h>
#define uint unsigned int
#define uchar unsigned char
sbit fm=P1^7;//蜂鸣器
uint aa=0,c;
void Delay1ms(unsigned int i) //1ms延时程序
{
unsigned int j;
for(;i>0;i--)
{
for(j=0;j<125;j++)
{;}
}
}
void init()//初始化设置
{
TMOD=0x01;//定时器0作为定时器用
TH0=965536-5000)/256;//定时50ms
TL0=965536-5000)%256;
EA=1;//开总中断
ET0=1;//允许定时器1中断
TR0=1;//启动定时器
}
void main()//主程序很简单
{
init();//初始化
c=3600*8;
while(1)//循环程序
{
while(c!=0);
c=3600*8;
fm=1;//报警
Delay1ms(5000) ;
fm=0;//报警停止
}
}
void timer0()interrupt 1//定时器0的中断序号为1
{
aa++;
TH0=965536-5000)/256;//定时50ms
TL0=965536-5000)%256;
if(aa==20)//中断10次,共1S
{
aa=0;
c--;
}
}
B. 用单片机实现5秒定时,期间每隔1秒引发一次中断服务程序
不能,
因为TH0和TLO都是8位的,两个加起来才16位,也就是说最大只能加到65535。
固最多可以达65毫秒。
如果想设置大于定时65毫秒的定时,你竖慎可以把它分成几次。比如:把1秒分成20次中断进行。每次中断的时间为50毫秒。
也就是相当在中断函数中加入
if(i==20)//定时1s时间到
{
.. //标语句
}
这时,粗颂就是产生20次中断才做一起操作.就相当于1秒做一次操作(或可以认为是1秒一次真余凳敬正的中断)
C. 高手帮忙.用51单片机控制一个灯.要求按下启动按钮后以亮5秒,灭3秒为周期运行.关键是要有掉电保持功能!!
关键丛巧和的掉电保护可以像1L那样说用内部EEPROM实渗盯现,或者用24C02(外置宽孙的EEPROM)来做,然后灯亮灭那些就容易搞了。具体思路还是自己动手才懂的
D. 单片机实训总结范文5篇
单片机实训课程,是农业工程类专业非常重要的专业技术课,是后续专业实践课的基础,大家做好实训 总结 ,总结更多的 经验 。下面是我给大家带来的单片机实训总结 范文 _单片机实训 工作总结 ,以供大家参考,我们一起来看看吧!
↓ ↓ 更多关于 “ 实 训总 结 ” 内容推荐 ↓ ↓
★ 单 片机实 训报 告 ★
★ 单 片 机实 训心得 体 会 ★
★ 实 训总 结报 告范 文 ★
★ 实 训总 结与心 得 体 会 ★
★ 实 习实训总 结报 告 ★
▼ 单片机实训总结范文篇一:
通过今次单片机实训,使我对单片机的认识有了更深刻的理解。系统以51单片机为核心部件,利用汇编软件编程,通过键盘控制和数码管显示实现了基本时钟显示功能、时间调节功能,能实现本设计题目的基本要求和发挥部分。
由于时间有限和本身知识水平的限制,本系统还存在一些不够完善的地方,要作为实际应用还有一些具体细节问题需要解决。例如:不能实现只用两个按键来控制时钟时间,还不能实现闹钟等扩展功能。
踉踉跄跄地忙碌了两周,我的时钟程序终于编译成功。当看着自己的程序,自己成天相伴的系统能够健康的运行,真是莫大的幸福和欣慰。我相信其中的酸甜苦辣最终都会化为甜美的甘泉。
但在这次实训中同时使我对汇编语言有了更深的认识。当我第一次接触汇编语言就感觉很难,特别是今次实训要用到汇编语言,尽管困难重重,可我们还是克服了。这次的实训使培养了我们严肃认真的做事作风,增强了我们之间的团队合作能力,使我们认识到了团队合作精神的重要性。
这次实训的经历也会使我终身受益,我感受到这次实训是要真真正正用心去做的一件事情,是真正的自己学习的过程和研究的过程,没有学习就不可能有研究的能力,没有自己的研究,就不会有所突破。希望这次的经历能让我在以后学习中激励我继续进步。
▼ 单片机实训总结范文篇二:
通过这一个学期的单片机学习,我收获了很多关于单片机的知识,并且这些知识和日常的生活息息相关。了解了一些简单程序的录入,LED 显示器 、键盘、和显示器的应用和原理。
LED显示器:LED显示器是由发光二管组成显示字段的器件。通常的8段LED显示器是由8个发光二极管组成,LED显示器分共阳极和共阴极两种。有段选码和和位选码。当LED显示器每段的平均电流位5MA时,就有较满意的亮度,一般选择断码5-10MA电流;位线的电流应选择40-80MA。LED显示器的显示方式有动态和静态两种。7289A芯片是具有SPI串行接口功能的显示键盘控制芯片,它可同时取得8位共阴极数码管和64个键的键盘矩阵。7289A的控制指令分为两类:8位宽度的单字节指令和16位宽度双字节指令;还有闪烁指令和消隐指令。7289A采用串行方式SPI总线与微处理器通信;7289A与AT89C52接口电路,在实际电路中无论接不接键盘,电路中连接到其各段上的8个 100千欧的下拉电阻均不可以省去,如果不接键盘而只接显示器可以省去8个10千欧电阻,若仅接键盘而不接显示器,可省去串入DP及SA-SG连线的8个220欧电阻,7289A还需要外接晶体振荡电路。液晶显示器简称LCD,其显示原理是用经过处后的液晶具有能改变光线传输方向的特性,达到显示字符和图形的目的。最简单的笔段式液晶显示器类似于LCD显示器,可以显示简单的字符和数字,而目前大量使用的是点阵式LCD显示器,既可以显示字符和数字也可以显示汉字和图形。如果把LCD显示屏、背光可变电源、接口控制逻辑、驱动集成芯片等部件构成一个整体,是的与CPU接口十分方便。
键盘:键盘是最常见的计算机输入设备,它广泛应用于微型计算机和各种终端设备上。计算机操作者通过键盘向计算机输入各种指令、数据,指挥计算机的工作。按照键盘的工作原理和按键方式的不同,可以划分为四种:机械式键盘采用类似金属接触式开关,工作原理是使触点导通或断开,具有工艺简单、噪音大、易维护的特点。 塑料薄膜式键盘键盘内部共分四层,实现了无机械磨损。其特点是低价格、低噪音和低成本,已占领市场绝大部分份额。 导电橡胶式键盘触点的结构是通过导电橡胶相连。键盘内部有一层凸起带电的导电橡胶,每个按键都对应一个凸起,按下时把下面的触点接通。这种类型键盘是市场由机械键盘向薄膜键盘的过渡产品。 无接点静电电容式键盘使用类似电容式开关的原理,通过按键时改变电极间的距离引起电容容量改变从而驱动编码器。特点是无磨损且密封性较好。
按照按键方式的不同键盘可分为接触式和无触点式两类。接触式键盘就是我们通常所说的机械式键盘,它又分为普通触点式和干簧式。普通触点式的两个触点直接接触,从而使电路闭合,产生信号;而干簧式键盘则是在触点间加装磁铁,当键按下时,依靠磁力使触点接触,电路闭合。与普通触点式键盘相比,干簧式键盘具有响应速度快、使用寿命长、触点不易氧化等优点。无触点式键盘又分为电容式、霍尔式和触摸式三种。其中电容式是我们最常用到的键盘类型,它的触点之间并非直接接触,而是当按键按下时,在触点之间形成两个串联的平板电容,从而使脉冲信号通过,其效果与接触式是等同的。电容式键盘击键时无噪声,响应速度快,但是价格很高一些。
显示器:按照显示器的显示管分类CRT、LCD。按显示色彩分类单色显示器、彩色显示器。按大小分类通常有14寸、15寸、17寸和19寸,或者更大。显示管的屏幕上涂有一层荧光粉,电子枪发射出的电子击打在屏幕上,使被击打位置的荧光粉发光,从而产生了图像,每一个发光点又由“红”“绿”“蓝”三个小的发光点组成,这个发光点也就是一个象素。由于电子束是分为三条的,它们分别射向屏幕上的这三种不同的发光小点,从而在屏幕上出现绚丽多彩的画面。显示器显示画面是由显示卡来控制的。若仔细观察显示器上的文本或图像是由点组成的,屏幕上点越多越密,则分辨率越高。
屏幕上相邻两个同色点的距离称为点距,常见点距规格有0.31mm、0.28mm、0.25mm等。显示器点距越小,在高分辨率下越容易取得清晰的显示效果。电子束采用光栅扫描方式,从屏幕左上角一点开始,向右逐点进行扫描,形成一条水平线;到达最右端后,又回到下一条水平线的左端,重复上面的过程;当电子束完成右下角一点的扫描后,形成一帧。此后,电子束又回到左上方起点,开始下一帧的扫描。这种 方法 也就是常说的逐行扫描显示。而隔行扫描指电子束在扫描时每隔一行扫一线,完成一屏后再返回来扫描剩下的线,这与电视机的原理一样。隔行扫描的显示器比逐行扫描闪烁得更厉害,也会让使用者的眼睛更疲劳。完成一帧所花时间的倒数叫垂直扫描频率,也叫刷新频率,比如60Hz、75Hz等。
通过这几天的单片机的实训,我在理论的基础上更深刻的掌握了单片机的深层内容及实际生活中的应用,实训锻炼了自己动手能力和思维能力,还有在软件方面的编程能力,让我受益匪浅,同时也暴露出一些平时学习上的问题,让我深刻 反思 。这些问题的发现将为我以后的学习和工作找明道路,查漏补缺为进一步学习作好准备。通过实训,让我懂得了如何编写一些简单的程序,学会了如何制作单片机应用程序,并且可以在今后的日常生活中灵活运用。
▼ 单片机实训总结范文篇三:
一 实习目的
1. 通过对单片机小系统的设计、焊接、装配,掌握电路原理图及电子线路的基本焊接装配工艺、规范及注意事项;
2. 通过对系统板的测试,了解系统板的工作原理及性能,掌握元器件及系统故障的排除方法;
3. 掌握程序编制及调试方法,完成系统初始化、存储器操作、端口操作、键盘显示等程序的编制及调试(汇编语言、C语言均可);
4. 通过单片机系统的组装,调试以及程序编制、调试及运行,与理论及实验的有机结合和指导教师的补充介绍,使学生掌握控制系统的工作原理、开发方法和操作方法。
5. 培养学生解决实际问题的能力,提高对理论知识的感性认识。
二 实习意义
通过本实习不但可以掌握单片机软、硬件的综合调试方法,而且可以熟练掌握电路原理图,激发对单片机智能性的探索精神,提高学生的综合素质,培养学生应用单片机实现对工业控制系统的设计、开发与调试的能力。在制作学习过程中,不但可以掌握软、硬件的综合调试方法,而且可以使学生对单片机智能性产生强烈的欲望。达到最大限度地掌握微机应用技术,软件及接口设计和数据采集与处理的技能,培养电综合实践素质的目的。
三 系统基本组成及工作原理
1 系统基本组成
系统以单片机STC89C52作为控制核心,各部分基本组成框图如图1所示。
流水灯部分由单片机、键盘模块等组成;
四位数码显示,编程实现30秒倒计时部分由单片机、键盘模块、液晶显示模块等组成;
按键功能部分通过按键控制流水灯部分、四位数码显示部分;
电子钟部分由单片机、键盘模块、液晶显示模块等组成;
使用功能键实现相应的功能组合部分通过流水灯部分、30秒倒计时部分实现;
模数转换部分由单片机、ADC0809转换模块、键盘模块、液晶显示模块等组成。
2 系统工作原理
本设计采用STC89C52RC单片机作为本系统的控制模块。单片机可把由ADC0809及单片机中的数据利用软件来进行处理,从而把数据传输到显示模块,实现阻值大小的显示。以数码管显示为显示模块,把单片机传来的数据显示出来。在显示电路中,主要靠按键来实现各种显示要求的选择与切换。
对于模数转换部分,单片机89C51通过P0口的I/O线向ADC0809发送锁存地址以及复位、启动转换等信号,并查询转换状态。 ADC0809启动转换后,将0-8个通道一次输入的电压信号转换成相应的数字量,供89c51读取使用,并且将EOC置1供单片机查询转换状态。而滑动变阻器负责将阻值信号转换成电压信号,再送到ADC0809的八个通道。当单片机查询到转换结束后依次读取数据并按照现实的需要进行二进制转BCD码等处理最后控制显示电路显示出数字。 其实现方式是:ADC0809转换来自3通道的阻值变化信号。80c51的P2口与ADC0809的输出相连用于读取转换结果,同时P0.0-P0.6作控制总线,向ADC0809发送锁存、启动等控制信息,并查询EOC状态。ALE经分频后给ADC0809提供时钟信号。P3.0和P3.1口用于向显示电路输出段码,P3.2-P3.7用于数码管的位选。
四 系统硬件设计
结合本设计的要求和技术指标,通过对系统大致程序量的估计和系统工作的估计,考虑价格因素。选定AT89C51单片机作为系统的主要控制芯片,8位模拟转换器ADC0809进行阻值转换。 逐次比较法A/D转换器是目前种类最多、应用最广的A/D转换器,其原理即“逐位比较”,其过程类似于用砝码在天平上称物体重量。它由N位寄存器、A/D转换器、比较器和控制逻辑等部分组成,N位寄存器代表N位二进制码。目前应用最广的逐次比较法A/D转换器有ADC0809。它是一种8路模拟输入8位数字输出的逐次比较法A/D转换器件。其主要性能指标和特性如下:
分表率:8位
转换时间:取决于芯片时钟频率,转换一次时间位64个时钟周期
单一电源:+5v
模拟输入电压范围:单极性0-+5v;双极性-5v-+5v
具有可控三态输出锁存器
启动转换控制位脉冲式,上升沿使内部所有寄存器清零,下降沿使A/D转换开始。
通过以上性能比较,我们不难看出ADC0809满足本设计的要求,所以本设计采用ADC0809作为A/D转换器
1 按键电路设计
利用单片机的P1口扩展一个8位键盘。
2 晶振与复位电路设计
本设计采用的是上电复位的形式,如图3.3所示,上电顺进RST获得高电平,随着电容器C的充电,RST引脚上的高电平将逐渐下降,只要高电平能保持复位所需要的两个机器周期以上时间,单片机就能实现复位操作。 晶振电路为单片机提供工作所需要的时钟信号。震荡频率越高,系统时钟频率也越高,单片机运行的速度就越快。其电路如图3.4所示。89C51的_TAL1和_TAL2两个引脚跨接晶体振荡器和微调电容C1、C2形成反馈电路,就构成了稳定的自激振荡器,本设计的震荡器频率为12MHZ。
3 下载电路设计
4 流水灯模块设计
5 模数转换模块设计
6 显示电路设计
本设计采用六位数码管。本系统采用共阳极动态扫描的方式连接。数码管的段码数据由89C51的P3.0-P3.1口送出,89C51的P3.2-P3.7输出位选通信号,只有被选中的那位数码管才会显示段码
7 整体电路设计
五 系统软件设计
1主程序设计
主程序采用分支结构,以状态号标识系统所处的状态。在上电初始化后即进入状态号的轮询扫描,状态号的值决定了分支程序的入口。其中分支程序分别为:AD转换模块(状态号为0),数字模块状态号为1),倒计时模块(状态号为2),电子钟模块(状态号为3),功能组合模块(状态号为4),流水灯模块(状态号为5)。
2 功能子程序设计
2.1 流水灯模块
流水灯模块利用单片机的P3口,通过给P3口的各位送低电平,相应的实现流水灯有规律的点亮。
2.2 30秒倒计时模块
30秒倒计时模块利用单片机的P3.0与P3.1口送相应的段控数据,P3.2-P3.7口送相应的位控数据。通过程序实现30秒倒计时。
2.3 数字加减模块
利用数码管实现数字显示,通过加一键或者是减一键实现数字变量的加一或者减一,进而实现利用数码管显示加一键、减一键功能。
2.4 电子钟模块
利用数码管实现时间显示,通过加一键或者是减一键实现小时变量或者是分钟变量的加一,从而实现调时功能。
2.5 模数转换模块
对于模数转换部分,单片机89C51通过P0口的I/O线向ADC0809发送锁存地址以及复位、启动转换等信号,并查询转换状态。 ADC0809启动转换后,将0-8个通道一次输入的电压信号转换成相应的数字量,供89c51读取使用,并且将EOC置1供单片机查询转换状态。而滑动变阻器负责将阻值信号转换成电压信号,再送到ADC0809的八个通道。当单片机查询到转换结束后依次读取数据并按照现实的需要进行二进制转BCD码等处理最后控制显示电路显示出数字。 其实现方式是:ADC0809转换来自3通道的阻值变化信号。80c51的P2口与ADC0809的输出相连用于读取转换结果,同时P0.0-P0.6作控制总线,向ADC0809发送锁存、启动等控制信息,并查询EOC状态。ALE经分频后给ADC0809提供时钟信号。P3.0和P3.1口用于向显示电路输出段码,P3.2-P3.7用于数码管的位选。
六 实习总结 、体会
本次单片机实习我们一共完成了个模块的程序设计,包括:led显示模块、数码管显示模块和键盘模块。分别实现了流水灯的循环点亮控制、数码管的静态和动态计数显示,还有矩阵键盘按键控制数码管显示的程序设计。然后我们分别用protues系统仿真软件对各个模块进行了模拟仿真,用keil软件编制了汇编语言程序,验证了我们所设计的程序。 这次实习还使我理解了编写程序的一些技巧。单片机应用系统一般由包含多个模块的主程序和由各种子程序组成。每一模块都要完成一个明确的任务,实现某个具体的功能,如计算、接受、发送、延时、显示等。采用模块化程序设计方法,就是将这些具体功能程序进行独立设计和分别调试,最后将这些模块程序装配成整体程序并进行联合调试。模块化程序设计方法的优点:一个模块可以为多个程序所共享;单个功能明确的程序模块的设计和调试比较方便,容易完成;利用已经编好的成熟模块,将大大缩短开发程序的时间,降低开发成本。采用循环结构和子程序结构可以使程序的容量大大减少,提高程序的效率,节省内存。对于多重循环,要注意各重循环的初值和循环结束的条件,避免出现程序无休止循环的“死循环”现象; 通过这次的实习我发现,只有理论水平提高了,才能够将课本知识与实践相结合,理论知识服务于教学实践,以增强自己的动手能力。这次实习十分有意义,这次实习我们知道了理论和实践的距离,也知道了理论和实践相结合的重要性。 回顾起此次课程设计,感觉受益匪浅,从拿到题目到完成整个编程,从理论到实践,学到很多很多的课堂理论中没学到过的东西,不仅对键盘的识别技术这一章节的知识点有了深刻的认识,而且对这学期开设的单片机这门课程有了更全面的了解,尤其是在学习使用proteus软件片编程和仿真时收获良多。通过这次单片机课程设计,还使我懂得了实践的重要性。同时在程序调试的过程中提高自己的发现问题、解决问题、实际动手和独立思考的能力。 这次课程设计能顺利的完成,除了我们的努力外,当然也离不开指导老师申老师的辛勤指导,致使我在设计的过程中学到了很多实用性的知识。同时,对给过我帮助的所有同学和各位指导老师表示忠心的感谢!
▼ 单片机实训总结范文篇四:
通过为期一周的单片机实训,是我们对这门课有了许多新的了解,弥补了在课堂上学习的不足。相信这对我们以后的学习和工作都会有很大的帮助。我们一定要在最短的时间里对这些不足加以改正!
首先,在这次试训中我被单片机强大的功能所震撼,以前在课堂上完全没有能理解可编程单片机的优越性。这次通过实体仿真软件等辅助软件的共同效果,是这次试训有了鲜明的活力。换是我们认识到这次试训不仅仅是一个软件的应用,更多的是使我们认识到学习到很多在课堂上无法得到的东西。特别是protues软件的功能是我们了解了当今开发系统的新方向,简直太不可思议啦!
单片机作为一种最简单的软件,与我们的日常生活息息相关,了解一些单片机程序的简单录入是非常必要的。如:LED显示器、键盘和显示器的应用和原理。
在被刺实训中我们每个人通过一个八位流水灯的制作,使我们深深地体会到了单片机在现实生活中的小小应用,既增强了我们的好奇心,又巩固了我们的理论知识。更让我们体会到了单片机手动的开始平台的完善与成熟。只要你有想法,单片机就有可能让他成为现实。这里我学习完protues软件后的第一感觉是,虽然这软件工作不稳定,但是会有相当不错的效果出来。这对我以后的工作一定会有帮助的。在这次试训中不仅只对单片机编程有了新的认识,还对整个单片机的开发平台都有了一厅的了解,这是一笔不错的收获。
通过这几天的试训,使我的感触很深,真实“条条大路通罗马”,要达到目的,不同的人就有不同的方法。只要你的方法不错!五花八门都可以,而且是各有特色。走出来的结果都有各自的独到之处。在编程中“简”字贯穿于整个程序设计中,越简单越好,毕竟单片机留给用户的资源是有限的,所以我们要充分利用这些资源,达到更好的效果,这些是我们在以后的学习生活中应值得注意的地方。
在试训中有苦有甜,当我们为一个很难攻破的程序找出路时,心情烦躁,感觉自己很不可理喻,当程序一点一点编好后,自己从心底感觉到一点小小的安慰,看着自己的成果。感觉很欣慰,有一丝丝的甜意,几天的实训使自己的思维逻辑也有了小小的进步。
▼ 单片机实训总结范文篇五:
这是我第一次做单片机实验,说起来有一些紧张和新奇。在此之前我并没有接触过单片机,我本以为与之前的光学实验及 其它 实验差不多,可我进到实验室之后,我就改变了这个看法。
单片机实验要求的是一种思维的创新,而不是简单的重复老师所说的实验步骤。因此第一次实验,实验老师向我们讲解了CVAVR编译器的大体情况及使用方法和技巧,并简单的向我们示例——如何在CVAVR中编写一段程序。编完程序之后,知道我们如何使用AVRStudio达到将编好的程序输入到单片机中来使其运行。
之后老师让我们以组为单位合作编写一段程序,并使其运行。我们组想要编写一个跑马灯的程序。在第一次运行CVAVR时,我们组就遇到了一个麻烦,我们在建立一个新project文件那里出现了错误。在保存这个新project文件的时候,我们单击了Save,而不是Generate,SaveandE_it.因此它弹不出我们我们所需要的源程序。之后我们通过询问其他人解决了这个问题。在编程中,我们开始做的是两盏灯的交替闪烁,间隔时间是1000ms。在运用AVRStudio的时候,我们又犯了一个错误。在我们打开编译好的工程文件时,开始调试,在最后一步点击Finish时,弹出一对话框,问我们是否更新,然后我们单击了Yes。这导致了仿真器无法下次使用。这是由于实验室中的仿真器是盗版的,无法进行更新。
经过我们的不断努力,我们终于实现了简单的跑马灯的运行,便是两个灯地交替闪烁。我们感到兴奋极了。但是我们并没有满足于当前,我们又编写了三个灯地交替闪烁,四个及多个。当我们一步步实现我们的目的时,我得到莫大成就感和自信。
在这次实验中,我体会到了合作的重要性。一个人也可能实现这一系列的过程,但是要花费很多精力和时间。群策群力,分工明确,可以使我们更好、更快地完成我们的工作。在此期间,你可以更好知道自己的不足和缺陷,来得到改正。还可以知道自己的优势所在,把握好自己的优势。
单片机实训总结相关 文章 :
★ 单片机实训报告范文精选5篇
★ 单片机实训总结范文3篇
★ 单片机实验心得体会范文
★ 单片机实训报告范文
★ 单片机实训工作报告范文精选
★ 单片机实习报告范文
★ 单片机实验的心得体会
★ 单片机课程设计心得体会3篇
★ 实验总结5篇精选
★ 单片机设计的心得体会
var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm..com/hm.js?"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })();E. 设计一个由51单片机控制的0到五秒的程序延时程序!再加个数码管显示延时的秒数。可以循环的。
开始按下时,显示零秒,渣尘p1.0一直输出高。再按一下。显示1,.p1.0灯亮一秒,友团
----好梁橘
应该从没有按,就开始显示零秒。
;使用 11.0592MHz,程序如下。
LED BIT P1.0
KEY BIT P1.7
ORG 0000H
SJMP START
ORG 000BH
MOV TH0, #4CH
SETB F0
RETI
;--------------------------------------
START:
MOV TMOD, #01H
MOV TH0, #4CH
MOV TL0, #00H ;[email protected]
SETB TR0
MOV IE, #82H
;--------------------------------------
M_LOOP:
MOV R2, #0
LP0:MOV A, R2
ADD A, #(TAB - $ - 3)
MOVC A, @A + PC
MOV P2, A
MOV P0, A
MOV A, R2
MOV B, #20
MUL AB
LP1:MOV R3, A
LP2:CJNE R2, #0, LP3
SETB LED ;LED 在P1.0
JZ K_I
LP3:JNB F0, K_I
CLR F0
DJNZ R3, LP2
CPL LED ;LED 在P1.0
SJMP LP1
K_I:JB KEY, LP2 ;按键在P1.7
MOV R6, #10
DJNZ R7, $
DJNZ R6, $ - 2
JB KEY, LP2
JNB KEY, $
INC R2
CJNE R2, #6, LP0
SJMP M_LOOP
;--------------------------------------
TAB:
;共阳段码
DB 0C0H,0F9H,0A4H,0B0H, 99H, 92H, 82H,0F8H
DB 080H, 90H, 88H, 83H,0C6H,0A1H, 86H, 8EH
END
F. 单片机怎么实现5秒的定时
定时之前、定时完毕,都干什么呀?
下面就是定时 5 秒(fosc = 6MHz)的闹巧完整程尺腔序。
DL5S()
{
unsigned char t = 0;
TMOD = 0X01;
TR0 = 1;
while(t < 200) {
TH0 = (65535 - 50000) / 256;
TL0 = (65535 - 50000) % 256;
while(TF0 == 0);
TF0 = 0;
t++;
}
}
-----
用汇编语言,就很简单了。
下面就是定时 5 秒(fosc = 6MHz)的完整陵弯衫程序。
DL5S:
MOV TMOD, #01H
SETB TR0
MOV R2, #200
D_LOOP:
MOV TH0, #HIGH(65536 - 50000)
MOV TL0, #LOW(65536 - 50000)
JNB TF0, $
CLR TF0
DJNZ R2, D_LOOP
RET
END
G. 单片机高电平持续五秒,然后低电平的程序,p1.0输出
你的5秒延时是要精确,还是一般的。如果不要求精度,用个延贺码尘时函禅禅数就能实现,如果要求精确一点就要用定时器写模迹。
H. 求一单片机程序 点亮二极管并轮流发光 延时5秒 语句注中文解释
#include <reg52.h>
#include <intrins.h>
#define ulong unsigned long
#define uchar unsigned char
uchar temp;
void delay(uint);
void main()
{
temp=0xfe; //初始状态,点亮第一祥禅段个LED
P1=temp;
while(1)
{
temp=_crol_(temp,1); //库函数_crol_用来控制左移
delay(1100); //调用演示程序,设置延时时间
P1=temp;
}
}
void delay(ulong z) //延谨誉时函数
{
ulong x,y;
for(x=100;x>袭中0;x--)
for(y=z;y>0;y--);
}
I. 用单片机来写5S 延时程序.怎么做
LOOP3:MOV R6,#4:
LOOP2:MOV R5,#250:
LOOP1:MOV R4,#250:
DJNZ R4,LOOP1
DJNZ R5,LOOP2
DJNZ R6,LOOP3
RET
这是皮斗族1S的延燃弊时程序
调用1S的:MOV R0,#05H
LOOP1:LCALL DELAY
DJNZ R0,LOOP1
.
.
这就销梁是5S 延时程序
J. 设计一个由51单片机控制的一到五秒的程序延时程序!再加个数码管显示延时的秒数。
#include <reg51.h> //调用51单片机的头文件
#define uchar unsigned char
#define uint unsigned int
unsigned char code LED[]=
{ //定义表格一定要使用code,这样会做到程序存储区中
0x3F, //"0"的字形表,0B00111111
0x06, //"1"的字形表,0B00000110
0x5B, //"2"的字形表,0B01011011
0x4F, //"3"的字形表,0B01001111
0x66, //"4"的字形表,0B01100110
0x6D, //"5"的字形表,0B01101101
0x7D, //"6"的字形表,桐族0B01111101
0x07, //"7"的字形表,0B00000111
0x7F, //"8"的激轮桐字形表,0B01111111
0x6F, //"9"的字形表,0B01101111
0x00,
};
uchar num;
uint fz1,fz2,xs1,xs2;
uint ms,fz,xs,kg;
sbit led1=P1^0;
sbit led2=P1^1;
sbit led3=P1^2;
sbit led4=P1^3;
sbit led5=P1^4;
sbit key1=P2^0;
sbit key2=P2^1;
sbit key3=P2^2;
sbit key4=P2^3;
void delayms(uint xms) // 延时函数
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void sjcl() // 时钟函数
{
if(num==20)
{ num=0;
led5=0;
ms++;
if(ms>=60)
{
ms=0;
fz++;
}
if(fz>=60)
{
fz=0;
xs++;
}
if(xs>=12)
{
xs=0;
}
}
if(num==10)
{ led5=1;
}
}
void smgxs() // 显示函数
{
if(kg==0)
{
fz1=xs/明坦10;
fz2=xs%10;
xs1=fz/10;
xs2=fz%10;
}
else if(kg==1)
{
fz1=11;
fz2=11;
xs1=fz/10;
xs2=fz%10;
}
else if(kg==2)
{
fz1=xs/10;
fz2=xs%10;
xs1=11;
xs2=11;
}
led1=0;
P0=LED[fz1];
delayms(5);
led1=1;
led2=0;
P0=LED[fz2];
delayms(5);
led2=1;
led3=0;
P0=LED[xs1];
delayms(5);
led3=1;
led4=0;
P0=LED[xs2];
delayms(5);
led4=1;
}
void ajcl()
{
if(key1==0)
{
delayms(10);
if(key1==0)
{
TR0=0;
kg++;
while(!key1);
}
if(kg==3)
{
kg=0;
TR0=1;
}
}
if(kg!=0)
if(kg==1)
{
smgxs();
if(key2==0)
delayms(10);
if(key2==0)
{
fz=fz+1;
while(!key2);
smgxs();
}
if(key3==0)
delayms(10);
if(key3==0)
{
fz=fz-1;
while(!key3);
smgxs();
}
}
if(kg==2)
{
smgxs();
if(key2==0)
delayms(10);
if(key2==0)
{
xs=xs+1;
while(!key2);
smgxs();
}
if(key3==0)
delayms(10);
if(key3==0)
{
xs=xs-1;
while(!key3);
smgxs();
}
}
}
void main() // 主函数
{ TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
sjcl();
smgxs();
ajcl();
}
}
void T0time()interrupt 1 //中断函数
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num++;
}
改一下就ok