1、第 9章 运用单片机的内部资源,本章内容,项目引导1 每隔0.5秒移位一次的流水灯控制,项目实施,相关知识,项目引导2 把流水灯变为实用的交通灯控制,项目分析1,如何实现0.5秒的定时? 软件定时和硬件定时两种方案对比 选用8051的内部资源定时/计数器来实现精确的定时控制?,TCON(88H),TMOD(89H),内部总线,知识1:了解定时/计数器的功能,1.什么是单片机的定时和计数功能,定时(Timer):是对机器周期计数,每到一个机器周期,计数器加1,直至计满并产生溢出信号。 计数器(Counter):是对外部信号计数,计数脉冲来自外部引脚T0, (P3.4)、T1(P3.5),并采用其
2、下降沿触发计数。 共同:计数; 不同:计数对象不同。,2.有关的寄存器TMOD和TCON,T0由两个8位专用寄存器TH0、TL0构成,T1由8位的TH1、TL1构成。 TMOD用于确定定时器的功能(定时或计数)和工作方式(方式0、1、2、3的选择等)。 TCON是用于控制定时器的启动与停止,标志定时器的溢出和中断情况。,D7 D6 D5 D4 D3 D2 D1 D0 GATE C/T M1 M0 GATE C/T M1 M0定时器1 定时器0,TMOD:,D7 D6 D5 D4 D3 D2 D1 D0 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0,TCON:,3.四种工作方式
3、,知识2:使用定时/计数器的方法,1)初始化配置 确定工作方式配置TMOD寄存器 预置计数初值配置TH0、TL0或TH1、TL1计数寄存器 根据需要开启定时器中断配置IE寄存器 2)启动定时 启动定时器工作配置TCON寄存器 3)完成定时 查询是否完成定时判断定时器TF0或TF1,项目实施1,要求:使霓虹灯能够每隔0.5秒左移一次,移到最右端再开始每隔0.5秒右移一次,完成周而复始循环点灯的显示模式。 电路:与第3章的项目相同,P1口通过反相器连接8个发光二极管。,初始化配置 确定工作方式MOV TMOD,#10H 预置计数初值 (50ms循环10次构成0.5s) X65536-50000=1
4、5536 = 3CB0H;MOV TH1,#3CHMOV TL1,#0B0H 启动定时器工作 SETB TR1 完成定时器LP1: JBC TF1,LP2SJMP LP1 LP2: MOV TH1,#3CHMOV TL1,#0B0H ,项目实施1编写程序,ORG 0000H CONT: MOV R2,#07HMOV A,#0FEH NEXT: MOV P1,AACALL DELAYRL ADJNZ R2,NEXTMOV R2,#07H NEXT1: MOV P1,ARR AACALL DELAYDJNZ R2,NEXT1SJMP CONT DELAY: MOV R3,#0AH ;设置0.5s延
5、时的循环次数MOV TMOD,#10H ;设定时器1为方式1MOV TH1,#3CH ;置定时器初值MOV TL1,#0B0H ;置50ms计数循环初值SETB TR1 ;启动T1 LP1: JBC TF1,LP2 ;查询计数溢出SJMP LP1 ;未到50ms继续计数 LP2: MOV TH1,#3CH ;重新置定时器初值MOV TL1,#0B0HDJNZ R3,LP1 ;未到0.5s继续循环RET ;返回主程序END,音调与音拍 通过连续不断周期性地改变端口的高、低电平,就会产生一定频率的矩形波,蜂鸣器就能发出一定频率的声音,知识3:单片机演奏悦耳的音乐,单片机演奏音调实例,要求:设计一个
6、简易发声器,能够发出低音LA的音调。 电路:由P1.0口控制一个LM386功率放大器,经功率放大器控制发声器件蜂鸣器。,程序提示:1)低音LA频率为440HZ,周期为1/440s,即2.28ms ;2)每隔1.14ms即产生一次P1.0端口电平的翻转。 思考:1)如何发出中音DO的声音呢?2)如何演奏一段音乐呢?完成任务实例演奏八月桂花遍地开的程序设计。,项目分析2,如何用定时器实现红、绿、黄三种颜色的信号灯按照特定时间和规律进行显示的功能? 如何区分正常情况和紧急情况,在紧急情况下及时响应并将信号灯都置为红灯? 中断系统,知识4:单片机的中断系统,日常生活的中断 你正在专心看书,突然电话铃响
7、,于是你记下正在看的书的页数,去接电话,接完电话后再回来接着看书。 单片机的中断由于某种随机事件的发生,计算机暂停现行程序的运行,转去执行另一程序,以处理发生的事件,处理完毕后又自动返回原来的程序继续运行。分时操作;实时处理;故障处理,1.为什么使用中断,中断源,2.中断源及其控制寄存器,中断控制寄存器中断标志和外部中断方式设置寄存器,2.中断源及其控制寄存器,SCON,TCON,中断优先级寄存器中断允许寄存器,IP,IE,3.中断处理过程,中断处理过程分为三个阶段:中断响应中断处理(又称中断服务)中断返回中断嵌套,项目实施2,要求: 正常情况下A、B道轮流放行,A道放行1分钟(其中5秒用于警
8、告),B道放行30秒(其中5秒用于警告); 有紧急车辆通过(用按键开关S1模拟)时,A、B道均为红灯。 电路: 用P1口控制12个LED发光二极管模拟红、黄、绿交通灯; 用按键S1连接外部中断0信号引脚,模拟进入紧急状态的触发信号。,项目实施2流程图,请参照流程图,完成程序代码编写,其中延时可以调用任务12完成的0.5s延时子程序实现,知识5:中断源的应用及扩展,中断和查询相结合,1.外部中断源的扩展,交通灯特殊情况处理实例,要求: 一道有车而另一道无车(用按键开关K1、K2模拟)时,使有车车道放行5秒钟,然后恢复正常情况控制。 电路: 按键K1、K2模拟A、B道的车辆检测信号分别连接P3.4和P3.5进行查询; 用74LS266 实现K1、K2的异或并产生外部中断1。 程序: 在任务13的编码基础上,增加特殊情况的外部中断1的处理代码。,定时/计数器中断源的应用实例,要求: 用中断方式实现每隔0.5秒移位一次的流水灯控制。 电路: 同任务12电路设计。 程序: 用定时器做为中断源,每0.5秒定时时间到时实现信号灯的一次移位操作。,