任务五 时间间隔为1S钟的流水灯控制
定时器,跑马灯间隔一秒闪烁单片机论文
(3)1秒时间到,控制发光二极管点亮
四、应收集的资料及主要参考文献:
1 李建忠,单片机原理及应用.西安电子科技大学出版社,2008年
2启东单片机仿真试验系统使用说明书
3 李珍, 单片机原理与应用技术.清华大学出版社,2003年
五、审核批准意见
教研室主任(签字)
一、设计内容及要求……………………………………4
通过本次课设,我不仅学到了关于单片机技术方面的许多专业知识,同时也让我感觉到团队合作的重要性。其实如何有效和快速的找到资料也是课设给我的启发,利用好图书馆和网络,是资源的到最好的利用。与他人交流思想是取得成功的关键,在交流中,不仅强化了自己原有的知识体系,也扩展了自己的思维。课设是一个通过思考、发问、自己解惑并动手、提高的过程。我会在以后的学习中不断学习,积累经验,完善自己。
灭,1S延时后再置P1.0为低电平,红灯亮,如此循环。
图4-1系统仿真效果图
此次课程设计在实际操作过程中,由于按键及代码执行所需时间的影响,设计后的效果并不精准,还有改进的空间。
五、实验总结与心得体会
这次单片机课程设计不仅巩固了以前所学过的知识,而且学到了很多在书本上没有学到过的知识,掌握了一种系统的研究方法,可以进行一些简单的编程。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。同时在设计的过程中发现了自己的不足之处,例如对以前所学过的知识理解得不够深刻,掌握得不够牢固,并进一步熟悉了汇编语言在单片机中的结构和使用方法,基本达到了能独立阅读、编制和调试一定规模的汇编语言程序的水平,学习在使用子程序时应正确使用调用CALL和返回RET指令,以及合理使用堆栈之灵来达到寄存器的保护和恢复。
实验五 广告流水灯中断控制
实验五广告流水灯中断控制实验五广告流水灯中断控制一、实训目的1、用外部中断源的中断控制方法控制发光二极管亮灭。
2、学习外部中断技术的基本使用方法。
3、学习中断处理程序的编写方法。
二、实训预备知识1、单片机中断系统包括5个中断请求源,4个中断控制寄存器IE、IP、TCON、SCON用来控制中断的请求、中断的开关和各种中断源优先级的确定。
2、编写中断处理程序需要注意的问题是:(1)保护进入中断时的状态,并在退出中断之前恢复进入时的状态。
(2)必须在中断处理程序中设定是否允许中断重入,即设置EX0或EX1位。
一般进入中断处理程序时应保护现场,在退出前恢复现场。
另外中断处理程序中涉及到关键数据的设置时应关闭中断,即设置时不允许中断重入。
三、实训设备:微机一台、实训箱、THKL-C51仿真器、扁平数据线和一条串行数据通信线。
四、实训内容(2)从PROTEUS库中选取元器件单击“P”按钮,在其左上角“Keywords”(关键字)一栏中输入以下元器件的关键字,将以下元器件添加到对象选择器中。
①AT89C51:单片机②RES:电阻③LED-GREEN:绿色发光二极管④CAP、CAP-ELEC:电容、电解电容⑤CRYSTAL:晶振⑥74LS04:反相器⑦BUTTON:按钮⑧SOUNDER:喇叭图4-2 单击“P”按钮(3)放置元器件:按照原理图合理放置元器件。
(4)放置电源和地(终端)单击工具栏中的终端按钮,在对象选择器中选取电源(POWER)、地(GROUND),用上述放置元器件方法分别放置于编辑区中。
(5)电路图连线系统默认自动扑捉和自动布线有效。
只要在两端点相继单击,便可画线。
画折线,在拐弯处单击;若中途想取消,可右双击或按“Esc”;若终点在空白初,左双击即可结束。
(6)设置、修改元器件的属性先右击后左击各器件,在弹出的属性编辑框中设置、修改它的属性。
(7)电气检测选择【Tools】/【Electrical Rule Check】菜单项,出现电气检查报告单,无错误,则用户可执行下一步。
实验五 流水灯与中断控制
一、实验设备(1)PC一台(2)单片机多功能试验板一块(3)KEIL uVision 4.22 集成开发环境、STC-ISP烧录软件、串口调试助手(电子工程基础实验QQ群文件共享)二、实验目的(1)了解单片机的4组I/O端口(2)掌握通过串口通信控制LED灯的方法(3)复习巩固C语言知识三、实验要求与任务使用KEIL uVision 4软件新建一个C51内核工程,步骤如下:(1)在”Soruce Group 1”新建C程序文件,文件名:main.c(2)在工程中新建两个组,名称分别为com和myled.(3)在工程文件对应的目录下,再新建两个目录,com文件夹和myled文件夹。
(4)在工程中新建四个文件,分别名称com.c, com.h, myled.c, myled.h,前两个文件保存在com文件夹中,后两个文件保存在myled文件夹中。
(5)将共享资料的“单片机开发板资料\学习版资料\例程\LED\driver”目录及文件拷贝到工程文件所在的目录中,并在工程中新建driver组,把driver文件夹下的两个文件添加进去。
(提示,我们要使用它提供的延时函数)文件的组织结构如下图:实验任务:通过串口助手输入分别输入字符‘0’,‘1’,‘2’,‘3’,‘4’,‘5’,分别完成以下功能:输入’0’,打开led1到led5共5个灯,它们处于常亮状态。
输入’1’,关闭led1到led5共5个灯。
输入’2’,led1到led5这5个灯间隔0.5秒轮流点亮(流水灯效果)。
输入’3’,led1、led3、led5这3个灯间隔0.5秒轮流点亮(流水灯效果)。
输入’4’,led2、led4这3个灯间隔0.5秒轮流点亮(流水灯效果)。
四、示例代码1. 实例代码.c文件(不需要修改,可参考主程序中如何调用它里面的函数)4. led.c文件5.myled.h 文件五、实验报告要求实验报告文档以word为格式,包含:1.请附上你完成部分的实验代码。
51单片机流水灯程序
1.第一个发光管以间隔200ms闪烁。
2.8个发光管由上至下间隔1s流动,其中每个管亮500ms,灭500ms。
3.8个发光管来回流动,第个管亮100ms。
4。
用8个发光管演示出8位二进制数累加过程。
5。
8个发光管间隔200ms由上至下,再由下至上,再重复一次,然后全部熄灭再以300ms间隔全部闪烁5次。
重复此过程。
6.间隔300ms第一次一个管亮流动一次,第二次两个管亮流动,依次到8个管亮,然后重复整个过程。
7。
间隔300ms先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往中间流动三次;再从中间往两边流动三次;8个全部闪烁3次;关闭发光管,程序停止。
1#include<reg52。
h〉#define uint unsigned intsbit led1=P1^0;void delay();void main(){while(1){led1=0;delay();led1=1;delay();}}void delay(){uint x,y;for(x=200;x>0;x—-)for(y=100;y〉0;y-—);}2#include<reg52。
h>#include〈intrins。
h〉#define uint unsigned intuchar a;void delay();void main(){a=0xfe;P1=a;while(1){a=_crol_(a,1);delay();P1=a;delay();}}void delay(){uint b;for(b=55000;b>0;b—-);}3#include<reg52。
h〉#include <intrins。
h>#define uint unsigned int #define uchar unsigned char void delay(){uint x,y;for(x=100;x〉0;x--)for(y=110;y>0;y—-);}void main(){uchar a,i;while(1){a=0xfe;for(i=0;i〈8;i++){P1=a;delay(100);a=_crol_(a,1);for(i=0;i〈8;i++){P1=a;delay(100);a=_cror_(a,1);}}}4#include<reg52.h>#include 〈intrins。
三菱PLC例题(初级)
例题1.电动机顺序起停控制控制要求:(1)1#电动机可以随时起动;(2)只有1#电动机起动后,2#才能起动;只有2#起动完毕之后,3#才能起动;(3)3#电机可以随时停止;(4)只有3#停止后,2#才允许停止;之后2#停止后,1#才允许停止。
例题2.喷泉控制设计控制要求:有A、B、C三组喷头,要求起动后A组先喷5S,之后B、C同时喷,5S后B停止,再过5S,C停止而AB同时喷,再过2S,C也开始喷;A、B、C同时喷5S后全部停止,再过3S重复前面的过程;当按下停止按钮后,马上停止,试编出PLC程序。
例3.三组抢答器设计控制要求:儿童2人、青年1人和教授2人组成三组抢答。
儿童任一人按钮均可抢得,教授需要2人同时按钮才可抢得,在主持人按钮同时宣布开始后10S内有人抢答则幸运彩球转动表示庆贺。
例题4.五组抢答器控制设计控制要求:五个队参加抢答比赛,比赛规则如下。
设有主持人总台及各个参赛队分台。
有总台灯及总台音像,总台开始及总台复位按钮。
分台设有分台台灯、分台抢答器按钮。
各队抢答必须在主持人给出题目,说出“开始”并同时按下总台开始按钮后的10S进行,如提前抢答,抢答器将报出“违例”信号(违例扣分)。
10S时间已到,还无人抢答,抢答器将给出应答时间到的信号,该题作废。
在有人抢答情况下,抢得的队必须在30S内完成答题。
如果30S内没有完成作答,抢答器将按照答题超时处理。
灯光及音像信号所表示的意义是这样安排的:(1)音像+某台台灯:正常抢答;(2)音像+某台台灯+总台灯:违例;(3)音像+总台灯:无人应答或答题超时;(4)在一个题目回答终了后,主持人按下复位按钮,抢答器回复原始状态,为第二轮抢答做好准备。
例5.三电机循环起停运转设计控制要求:控制三台电动机,要求它们相隔5S起动,各运行10S停止;并按照以上要求进行循环。
例6.十字路口交通灯控制(讲解此题目之前,先讲解定时器构成的振荡电路)控制要求:十字路口南北及东西方向均设有红、黄、绿三只信号灯,六只灯按照一定的时序循环往复工作。
任务五 定时控制流水灯
C1
22pF
X1 R1
1k 12MHz
U1
19 XTAL1 P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17
#include <reg51.h> Void main() { unsigned char i; TMOD=0x10; //设置Timer 1工作在方式1下定时模式 for (i=0; i<50; i++) //重复定时计数器,定时50次 { TH1=(65536-20000)/256; //往TH1中载入计数初值高8位 TL1=(65536-20000)%256; //往TL1中载入计数初值低8位定时20ms TR1=1; //启动Timer 1 while (!TF1) ; //检测Timer1溢出标志,当TF1=1,跳出 TR1=0; //关闭Timer 1 TF1=0; //将TF1清0 } }
//设置Timer 1工作在方式1下定时模式 //重复定时计数器,定时50次 //往TL1和TH1中载入计数的初始值B1E0H //定时20ms //启动Timer 1 //检测Timer1溢出标志,当TF1=1,跳出 //关闭Timer 1 //将TF1清0
0305 定时器控制流水灯程序设计
THANK YOU!
定时器控制流水灯程序设计
PLC执行[>= T0 K20]指令和[< T0 K30] 指令,判断T0的经过值 是否在2~3秒时间段,如果T0的经 过值在此时段内,则PLC执行[MOV K4 K2Y000]指令,Y2线圈得电, 第3盏彩灯点亮。
任务实施
› (2)采用当前值比较方式编写程序
PLC执行[>= T0 K30]指令和[< T0 K40] 指令,判断T0的经过值是否在3~4 秒时间段,如果T0的经过值在此时段内,则PLC执行[MOV K8 K2Y000]指令 ,Y3线圈得电,第4盏彩灯点亮。 PLC执行[>= T0 K40]指令和[< T0 K50] 指令,判断T0的经过值是否在4~5 秒时间段,如果T0的经过值在此时段内,则PLC执行[MOV K16 K2Y000]指令 ,Y4线圈得电,第5盏彩灯点亮。
知识储备
定时器 时钟脉冲周期 编号范围(共256个) 定时范围
通用 定时器
100ms 10ms
T0~T199,共200个 0.1~3276.7s T200~T245,共46个 0.01~327.67s
积算 定时器
1ms 100ms
T246~T249,共4个 0.001~32.767s T250~T255,共6个 0.1~3276.7s
知识储备
› 1)通用定时器
在任意时刻,如果定时 器T0被断电或者是驱 动输入X000被断开, 定时器T0将被立即复 位,累计值清零、输出 触点复位。
当T0累计值等于设 定值K50时,定时 器T0的输出触点动 作,Y000得电。
X000接通,T0开 始对100ms的时钟 脉冲进行累计。
知识储备ቤተ መጻሕፍቲ ባይዱ
《单片机控制系统安装与调试》课程标准
《单片机控制系统安装与调试》课程标准一、课程性质《单片机控制系统安装与调试》是电气类专业的职业技能课程。
通过本课程的学习,学生要了解单片机专业能力的重要系统设计的方法,熟悉汇编语言的应用,培养学生实践能力、创新能力,为将来从事电子产品的检测和维护、单片机产品调试员、单片机产品技术支持等工作奠定坚实的基础,为学生将来在电气类专业领域进一步发展打下良好的基础。
二、参考课时180学时。
三、课程目标(一)总目标通过本课程学习,学生初步掌握单片机系统设计相关的基础知识和基本技能,了解这些知识与技能在生产实践中的应用,关注科学技术的现状及发展趋势。
学习科学探究方法,发展自主学习能力,养成良好的思维习惯和职业规范,能运用相关的专业知识、专业方法和专业技能解决工程中的实际问题。
理解科学技术与社会的相互作用,形成科学的价值观;培养学生的团队合作精神,激发学生的创新潜能,提高学生的实践能力。
(二)知识目标掌握单片机基本结构和原理,掌握MCS-51系列单片机指令系统,学习汇编语言程序设计方法,掌握单片机存储系统、输入输出接口电路,掌握单片机的定时器计数器、外部中断和串行口。
会对所学知识进行整合,能够根据设计要求独立编写程序,并能在实践工作中熟练进行单片机程序和系统电路的调试;掌握各种接口电路的分析方法和理论知识。
(三)技能目标使学生熟悉单片机的原理与结构,通过实验实训和一些简易单片机项目制作,掌握单片机控制的基本原理,掌握单片机简单应用系统开发、设计的基本技能。
通过了解单片机技术在应用电子以及自动控制工程中的应用,具备一定的分析问题、解决问题的能力和动手实践能力。
四、设计思路本课程的项目是构建应用型的单片机系统,每个项目都有可视化的结果,将理论与实践融为一体。
因此,本课程体现了职业教育“以就业为导向,以能力为本位”的培养目标,体现了以职业实践活动为主线的教学过程。
本课程内容的选择上降低理论重心,突出实际应用,强调“呈现项目结果”,注重培养学生的应用能力和解决问题的实际工作能力。
PLC课程设计___ PLC循环控制流水灯
为“OFF”;同时定时器T1开始定时,Y2、Y3为“ON”,1s后定时器 接点T1/断开,Y2、Y3为“OFF”;同时定时器T2开始定时,Y4、Y5 为“ON”,1s后定时器接点T2/断开,Y4、Y5为“OFF”;同时定时器 T3开始定时,Y6、Y7为“ON”,1s后定时器接点T3/断开,Y6、Y7为 “OFF”;
输入 注释
启动、停止按钮
PLC端 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
输出 注释
第一组灯 第二组灯 第三组灯 第四组灯
三 、PLC流水灯循环控制外部连线图 : PLC外部连线图如图1-1所示。
图 1-1:PLC 外部连线图
四 、流水灯的梯形图: 流水灯的梯形图如图 1-2 所示。
图 1-2:流水灯的梯形图
然后重复上述动作,实现流水灯循环。 当X0关断,Y0到Y7全部熄灭。 八、课程实践心得:
通过本次课程实践,既复习和巩固了课本上的学习内容,又极 大地锻炼了我的动手操作能力。在本次课程实践中,用到了PLC的梯 形图、指令表、时序图以及I/O分配表,还有PLC的外部连线图,是我 对PLC一次系统全面地复习和理解,有助于我进一步学习、学好PLC 这门课。
工厂电气及 PLC 技术 课程实践报告
姓 名:
学 号:
专 业:10 电气工程及其自动化
指导பைடு நூலகம்师:
成 绩:
日 期:
2012.6.19
PLC 循环控制流水灯
姓名:王坤杰 学号:101103063 班级:10 自动化 指导老师:辛宇
一、控制要求:
1、闭合 X0(第一次按下 X0),开始流水灯。
流水灯控制实验PLC综合实训报告
摘要PLC的功能强大,在生产生活中的应用广泛,其中西门子S7—200PLC在实际生产中最为常见。
本次专业综合实训主要是针对西门子S7—200PLC挂屏集成模块进行的。
本次专业综合实训主要内容有:PLC挂屏集成模块的插线,电气原理图的绘制,流水灯、交通信号灯、运动小车的多段速控制、A/D数模转换的程序编写与调试、相应的触摸屏程序的编写以及变频器参数的设置等。
实训一流水灯控制实验一、实训目的:设计流水灯控制系统。
二、实训要求:要求实现流水灯的依此循环亮,时间间隔为1s。
能够实现随时启动随时停止。
三、实训内容:利用外部按钮和编辑触摸屏界面,分别实现流水灯的启动和停止。
四、实现方法:根据实训课题要求,编程思路如下:1、首先用触点M1.3和M1.4分别控制中间继电器M0.2的得电和失电,按动M1.3,M0.2和Q0.6得电,触点M0.2和Q0.6动作,第一个灯亮,并将输出Q0.6自锁,同时启动定时器T33;2、1S后触点T33闭合,点亮第二个灯并启动定时器T34,触点Q0.7动作,将输出Q0.7自锁并使Q0.6失电,第一个灯灭,触点Q0.6和T33断开;3、1S后触点T34闭合,点亮第三个灯并启动定时器T35,触点Q1.0动作,将输出Q1.0自锁并使Q0.7失电,第二个灯灭,触点Q0.7和T34断开;4、1S后触点T35闭合,重新点亮第一个灯并启动定时器T33,触点Q0.6动作,将输出Q0.6自锁并使Q1.0失电,第三个灯灭,触点Q1.0和T35断开,如此循环下去;5、当按动M1.4,输出M0.2失电,M0.2断开,输出全部失电,灯熄灭,定时器清零。
I/O表如下:五、实训结果:1)流水灯控制界面:按动启动按钮,三个灯依次循环点亮;按动停止按钮,流水灯熄灭。
2)流水灯控制程序:实训二交通灯控制实验一、实训目的:设计交通灯控制系统。
二、实训要求:1.能够实现总停止和总启动;2.红灯亮灯时间为25s,绿的为20s,黄灯闪烁5s;3.在触摸屏上显示各个灯的倒计时间。
51单片机项目教程项目 4 流水灯实验
4.3 项目实施
4.3.1 流水灯开发实战环节
注意:J1接上才能开始做流水灯模块实验
图4- 6流水灯实物结果
实现延时通常有两种方法:一种是硬件延时,要用到定时器 /计数器,这种方法可以 提高CPU的工作效率,也能做到精确延时;另一种是软件延时,这种方法主要采用 循环体进行。
2、编写精确的延时函数 1)使用定时器/计数器实现精确延时
2)软件延时与时间计算
在很多情况下,定时器/计数器经常被用作其他用途,这时候就只能用软件方法延 时。下面介绍几种软件延时的方法。 2.1 短暂延时 2.2 在C51中嵌套汇编程序段实现延时 2.3 使用示波器确定延时时间 2.4 使用反汇编工具计算延时时间
(216-初值)×振荡周期×12
例如:若晶振频率为12MHz,则最长的定时时间为(2160)×(1/12)×12us=65.536ms
4.2 技术准备
3. 方式2 THx作为常数缓冲器,当TLx计数溢出时,在置“1”溢出标志TFx 的同时,还自动的将THx中的初值送至TLx,使TLx从初值开始重新计 数。 其定时时间为:
例如:机器时钟频率为12MHZ,机器周期为1μs 时,
若工作在模式0,则最大定时值为:213×1μs =8.192ms 若工作在模式1,则最大定时值为: 216×1μs =65.536ms (2)置定时/计数器初值,直接将初值写入寄存器的TH0、TL0或TH1、TL1;
(3)对TCON寄存器中的TR0或TR1置位,启动定时/计数器,置位以后,计数器 即按规定的工作模式和初值进行计数或开始定时。
4.2 技术准备
4.2.7定时器编程步骤 MCS-51单片机的定时器/计数器是可编程的,具体步骤如下: (1)对TMOD赋值,以确定定时器的工作模式; 初值计算: 设计数器的最大值为M,则置入的初值X为: 计数方式:X=M-计数值 定时方式:由(M-X)T=定时值,得X=M-定时值/T T为计数周期,是单片机的机器周期。 (模式0: M为213=8192 ,模式1: M为216=65536,模式2和3: M为28=256)
任务五 时间间隔为1S钟的流水灯控制
机电一体化教研室
3.用T1、工作方式2实现1秒延时函数,晶振频率为12MHz, 请计算其初值,并加载到TH1和TL1。 用T1、工作方式2实现1秒延时函数,晶振频率为12MHz。 方式2采用8位计数器,其最大定时时间为:256×1s = 256us,可选择定时时间为250us,再循环4000次。 定时时间为250ms,则计数值为250us/1s =250,T1的初 值为: X = M 计数值= 256 250 = 6 TH1=6;TH0=6; 4.用T1、工作方式3实现1秒延时函数,晶振频率为12MHz, 请计算其初值,并加载到TH1和TL1。
完成实训报告
机电一体化教研室
精确定时的流水灯电路
机电一体化教研室
相关知识点:
一、定时器/计数器逻辑结构
机电一体化教研室
T0 和 T1 可编程选择为定时 功能与计数功能,二者之间 有什么不同?
机电一体化教研室
二、定时器/计数器初始化
一、步骤 1.确定定时/计数器的工作方式---对TMOD寄存器编程。 2.计算定时/计数器中的计数初值,并装载到TH和TL。 3.定时/计数在中断方式工作时,须开CPU中断和源中断---对 IE寄存器编程。 4.启动定时/计数器---对TCON中的TR0或TR1编程。
D0
GATE C/T
M1
1
M0 GATE C/T
M1
0
M0
1
即控制字为61H,其指令形式为:
MOV TMOD,#61H TMOD=0X61;
机电一体化教研室
思考:
本次任务中,用定时/计数器T1工作在方式1,
定时1S,采用软件启动的方式,请设置TMOD。
D7 GATE 0 D6 C/T 0 D5 M1 0 D4 M0 1 D3 GATE 0 D2 C/T 0 D1 M1 0 D0 M0 0
51流水灯程序,
1.第一个发光管以间隔200ms闪烁2.8个发光管由上至下间隔1s流动,其中每个管亮500ms,灭500ms,亮时蜂鸣器响,灭时关闭蜂鸣器,一直重复下去。
3.8个发光管来回流动,第个管亮100ms,流动时让蜂鸣器发出“滴滴”声。
4.用8个发光管演示出8位二进制数累加过程。
5.8个发光管间隔200ms由上至下,再由下至上,再重复一次,然后全部熄灭再以300ms间隔全部闪烁5次。
重复此过程。
6.间隔300ms第一次一个管亮流动一次,第二次两个管亮流动,依次到8个管亮,然后重复整个过程。
7.间隔300ms先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往中间流动三次;再从中间往两边流动三次;8个全部闪烁3次;关闭发光管,程序停止。
#include<>#include<>#define uchar unsigned char#define uint unsigned intuchar temp,a;uint i,j;sbit beep=P2^3;void delay(int);void main(){while(1){for(i=0;i<10;i++){P1=0xfe;delay(150);P1=0xff;delay(150);}temp=0xfe;for(i=0;i<16;i++){P1=temp;beep=0;delay(380);P1=0xff;temp=_crol_(temp,1);beep=1;delay(380);}for(j=0;j<2;j++){temp=0xfe;for(i=0;i<8;i++){P1=temp;beep=0;delay(80);temp=_crol_(temp,1);P1=0xff;beep=1;delay(80);}temp=0xbf;for(i=0;i<7;i++){P1=temp;beep=0;delay(80);temp=_cror_(temp,1);P1=0xff;beep=1;delay(80);}}a=0x00;for(i=0;i<256;i++){P1=~a;a++;delay(500);}for(i=0;i<2;i++){temp=0xfe;for(i=0;i<8;i++){P1=temp;delay(150);temp=_crol_(temp,1);P1=0xff;delay(150);}temp=0xbf;for(i=0;i<7;i++){P1=temp;delay(150);temp=_cror_(temp,1);P1=0xff;delay(150);}}P1=0xff;for(i=0;i<10;i++){P1=~P1;delay(170);}temp=0xfe;j=0;for(i=0;i<8;i++){j++;P1=temp;delay(150);temp=_crol_(temp,a);P1=0xff;delay(150);}temp=0xfe; //赋初值for(j=0;j<8;j++){for(i=0;i<8-j;i++) //左移{P1=temp; //点亮小灯delay(150); //延时200毫秒temp=_crol_(temp,1); //将a变量循环左移一位}temp=_crol_(temp,j); //补齐,方便下面的左移一位P1=0xff; //全部关闭temp=temp<<1; //左移一位让多一个灯点亮}for(i=0;i<3;i++){P1=0xaa; //delay(150);P1=~P1;delay(150);}for(j=0;j<3;j++){temp=0xfe;for(i=0;i<8;i++){P1=temp;delay(100);temp=_crol_(temp,1);}temp=0xbf;for(i=0;i<7;i++){P1=temp;delay(100);temp=_cror_(temp,1);}}for(j=0;j<3;j++){temp=0xfe;a=0x7f;for(i=0;i<5;i++){P1=temp&a;delay(100);temp=_crol_(temp,1);a=_cror_(a,1);}}for(j=0;j<3;j++){temp=0xef;a=0xf7;for(i=0;i<5;i++){P1=temp&a;delay(100);temp=_crol_(temp,1);a=_cror_(a,1);}}for(j=0;j<3;j++){P1=0x00;delay(380);P1=0xff;delay(380);}}}void delay(int z){int x,y;for(x=100;x>0;x--)for(y=z;y>0;y--);}。
例1用延时函数让流水灯以1S钟的间隔流动
{
numdu=0;
numwe=0;
aa=0;
TMOD=0x01;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
if(aa==1)
{
aa=0;
numdu++;
if(numdu==7)
numdu=1;
{
uint x,y;
Hale Waihona Puke for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
if(aa==40)
{
aa=0;
num++;
if(num==16)
例1用延时函数让流水灯以1S钟的间隔流动,让数码管以2S的间隔静态显示0-F.
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp,aa,num;
uchar code table[]={
P1=table[numdu];
P2=tablewe[numwe];
numwe++;
if(numwe==6)
numwe=0;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
精确定时的流水灯电路
机电一体化教研室
相关知识点:
一、定时器/计数器逻辑结构
机电一体化教研室
T0 和 T1 可 编 程 选 择 为 定 时 功能与计数功能,二者之间 有什么不同?
机电一体化教研室
二、定时器/计数器初始化
一、步骤 1.确定定时/计数器的工作方式---对TMOD寄存器编程。 2.计算定时/计数器中的计数初值,并装载到TH和TL。 3.定时/计数在中断方式工作时,须开CPU中断和源中断---对
0
1
方式1
16位计数器
1
0
方式2
8位计数器
1
1
方式3
T0:分成两个8位计数器
T1:停止计数
机电一体化教研室
GATE:门控位。
0:只要软件控制位TR0或TR1置1即可启动定时器开始工作;
1:只有INT0或INT1引脚为高电平,且TR0或TR1置1时,
才能启动相应的定时器开始工作。
12 分频
OSC
中断 TF0
(1)定时器四种工作方式特点
主要特点:
方式0:13位定时器。
TH0的8位+TL0的低5位
方式1:16位定时器。
TH0的8位+TL0的8位
方式2:能重复置初始值的8位定时器 。 TL0和TH0必须赋
相同的值。
方式3:只适用于定时器0,T0被拆成两个独立的8位定时器
TL0,TH0。
其中:TL0与方式0、1相同,可定时或计数。用定时器T0的 GATE、C/T、TR0、TF0、T0、和INT0控制。
机电一体化教研室
对于不同的工作方式,计数器位数不同,故最大计数值M也不同: 方式0:M=213=8192 方式1:M=216=65536 方式2:M=28=256 方式3:定时器0分为2个8位计数器,每个M均为256。
因为定时/计数器是作加1计数,并在计满溢出时产生中断,因此初值X 的计算如下: X = M – 计数值
TF0 中断 10
定时器的方式2示意图
8位 T溢L出0
控制
TH0 8位
12 分频
OSC
C/T=0 C/T=1
T0(P3.4)
+
TR0 GATE INT0 (P3.2)
机电一体化教研室
(2)定时器的初始值的计算
设置计数初值
T0、T1是16位加法计数器,分别由两个8位专用寄存器组成,T0 由TH0和TL0组成,T1由TH1和TL1组成。TL0、TL1、TH0、TH1的访问 地址依次为8AH8DH,每个寄存器均可被单独访问,因此可以被设 置为8位、13位或16位计数器使用。 在计数器允许的计数范围内,计数器可以从任何值开始计数,对 于加1计数器,当计到最大值时(对于8位计数器,当计数值从255 再加1时,计数值变为0),产生溢出。 定时/计数器允许用户编程设定开始计数的数值,称为赋初值。 初值不同,则计数器产生溢出时,计数个数也不同。例如:对于8 位计数器,当初值设为100时,再加1计数156个,计数器就产生溢 出;当初值设为200时,再加1计数56个,计数器产生溢出。
IE寄存器编程。 4.启动定时/计数器---对TCON中的TR0或TR1编程。
机电一体化教研室
二、过程分析
1.确定定时/计数器的工作方式---对TMOD寄存器编程。 定时器的方式寄存器TMOD
作用:TMOD用来确定两个定时器的工作方式。低半字节设
置定时器T0,高半字节设置定时器T1。
字节地址:89H,不可以位寻址。 格式: D7 D6 D5 D4 D3 D2 D1 D0
高8位 低5位 TH0 TL0
控制
C/T=0 C/T=1
T0(P3.4)
+
TR0 GATE INT0 (P3.2) 机电一体化教研室
例如:设定时器T0为定时工作方式,要求用软件启动 定时器T0工作,按方式1工作;定时器T1为计数 工作方式,要求软件启动,工作方式为方式2。 则根据TMOD各位的定义可知,其控制字为:
任务五 时间间隔为1s的 流水灯控制
机电工程学院 机电一体化教研室
学习目标
通过单片机控制时间间隔为1S的流水灯 系统的制作,了解单片机定时器的结构 及定时器的工作方式设定、初始值设置 等基本技能。
机电一体化教研室
工作任务
正确组装流水灯控制电路 编写1S精确定时流水灯控制电路程序并完成调试 根据要求修改程序并观察运行结果 完成实训报告
GATE C/T M1 M0 GATE C/T M1 M0
定时器T1
定时器T0
机电一体化教研室
各位的含义:
C/T:功能选择位。0为定时器方式;1为计数器方式。 M1,M0:方式选择位。可以选择为四种工作方式0、1、2、3之1。
四种工作方式的区别后面讲解。
M1 M0 工作方式
功能说明
0
0
方式0
13位计数器
D7 D6 D5 D4 D3 D2 D1 D0 GATE C/T M1 M0 GATE C/T M1 M0
0
0
0
1
0
0
0
0
控制字:10H
指令:TMOD=0x10;
机电一体化教研室
注意:TMOD不能进行位寻址,只能用字 节指令设置定时器工作方式。复位时, TMOD所有位均清零。
机电一体化。
TH0只可用作简单的内部定时功能。占用T1的控制位 TF1、TR1和INT1,启动关闭仅受TR1控制。
机电一体化教研室
中断 TF0
定时器的方式0、1示意图
高8位
8位或 低5位
TH0 TL0
控制
12 分频
OSC
C/T=0 C/T=1
T0(P3.4)
+
TR0 GATE INT0 (P3.2)
返回 机电一体化教研室
格式: D7 D6 D5 D4 D3 D2 D1 D0
GATE C/T M1 M0 GATE C/T M1 M0
0 1 10 0
00 1
即控制字为61H,其指令形式为: MOV TMOD,#61H TMOD=0X61;
机电一体化教研室
思考: 本次任务中,用定时/计数器T1工作在方式1,
定时1S,采用软件启动的方式,请设置TMOD。
计算出来的结果X转换为16进制数后分别写入TL0(TL1)、TH0 (TH1)。
注意!方式0时初始值写入时,对于TL不用的高3位应填入0!
机电一体化教研室
思考
1.用T1、工作方式0实现1秒延时函数,晶振频率为12MHz, 请计算其初值,并加载到TH1和TL1。
用T1、工作方式0实现1秒延时函数,晶振频率为12MHz。 方式0采用13位计数器,其最大定时时间为:8192×1s = 8.192ms,可选择定时时间为5ms,再循环200次。 定时时间为5ms,则计数值为5ms/1s =5000,T1的初值为: