3.7风扇档位控制单元
单片机控制风扇档位电路如图3-8所示。3个继电器分别接至单片机的P1.2、P1.3、P1.4引脚,当环境温度需要风扇调为一档时,单片机的P1.2引脚输出高电平,此时三极管Q1导通,则继电器K1导通,风扇调为一档。二档与三档的工作控制原理与一档同理。
图3-8风扇档位控制电路
4系统软件设计
4.1软件的设计的架构
4.1.1程序设计应用环境
本设计软件的设计是在KeilC51的环境下编译的。KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。C51允许用户使用C语言编写中断服务程序,快速进、出代码和寄存器区的转换功能使C语言中断功能更加高效。可再入功能是用关键字来定义的。多任务,中断或非中断的代码要求必须具备可再入功能。C51提供了灵活高效的指针。通用指针用3个字节
17
来存储存储器类型及目标地址,可以在8051的任意存储区内存取任何变量。特殊指针在声明的同时已指定了存储器类型,指向某一特定的存储区域。由于地址的存储只需1-2字节,因此,指针存取非常迅速。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。C语言有以下特点:
1、语言简洁、紧凑、使用方便、灵活。C语言一共只有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示,压缩了一切不必要的成分。
2、运算符丰富。C的运算符包含的范围很广泛,共有34种运算符,使得C的运算类型极其丰富,表达式类型多样化,灵活使用各种运算符可以实现在其他高级语言中难以实现的运算。
3、数据结构丰富,具有现代化语言的各种数据结构,能用来实现各种复杂的数据结构的运算。
4、具有结构化的控制语句,用函数作为程序的模块单位,便于实现程序的模块化。
5、语法限制不太严格,程序设计自由度大。
6、C语言能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。因此,C既具有高级语言的功能,又具有低级语言的许多功能,可用来写系统软件。C语言的这种双重性,使它既是成功的系统描述语言,又是通用的程序设计语言。
7、生成目标代码质量高,程序执行效率高。
8、用C语言写的程序可移植性好。基本上不用修改就能用于各种型号的计算机和各种操作系统。
4.1.2软件设计流程图
本系统软件设计流程图如图4-1所示。
18
图4-1系统软件设计流程图
4.2主控程序的设计
定时器/计数器是单片机内的重要部件,其作用主要包括产生各种时标间隔、记录外部事件的数量等。AT89S51单片机有2个16位的定时器/计数器:定时器/计数器0(T0)和定时器/计数器1(T1)。
定时器/计数器的核心是一个16位的加1计数器:做定时器时,其计数脉冲来源于时钟振荡器(经12分频后提供),这个脉冲的周期称为单片机的机器周期,每一个机器周期定时寄存器自动加1,所以定时器也可看做是计算机器周期的计数器,由于每一个机器周期为12个时钟振荡周期,所以定时器的分辨率是时钟振荡频率的1/12,一旦振荡频率选定,则机器周期也确定;作计数器时,其计数脉冲来源于单片机外部引脚T0(或T1)的脉冲。即TX端口有从“1”到“0”的负跳变,计数器就自动加1,计算机是在每个机器周期采样为0时,计数器即加一计数,计算机需用两个机器周期来识别1次计数,因而最大计数速率为振荡频率的1/24。
AT89S51单片机的定时器/计数器T0由TH0、TL0构成,T1由TH1、TL1构成。TMOD用于控制和确定各定时器/计数器的功能和工作模式。TCON用于控制定时器/计数器T0、T1的启动和停止计数,同时包含定时/计数器的状态。
T0、T1的方式寄存器TMOD:
方式寄存器TMOD是一个逐位定义的8位寄存器,是只能字节寻址的寄存器,
19
字节地址为89H,其格式如表4-2所示。
表4-2TMOD寄存器格式
其中低4位定义定时器/计数器T0,高4位定义定时器/计数器T1,各位的意义如下:
GATE——门控位。GATE=1时,由外部中断/INT0、/INT1和TR0、TR1来启动定时器。当/INT0引脚为高电平时,TR0置位,启动定时器T0;当/INT1引脚为高电平时,TR1置位,启动定时器T1。GATE=0时,仅由TR0和TR1置位来启动定时器T0、T1。
C/\\T——功能选择位。C/\\T=1时,选择计数功能;C/\\T=0时,选择定时功能。
M0、M1——方式选择位。由于M1和M0两位,可以有4种工作方式,如表4-3所示。
表4-3T0、T14种工作方式
M1 0 0 1 1
M0 0 1 0 1 工作方式 方式0 方式1 方式2 方式3 计数器配置 13位计数器 16位计数器 自动再装入的8位计数器 T0分为两个8位计数器、T1停止计数 T0、T1控制寄存器TCON:
TCON是一个逐位定义的8位寄存器,既可字节寻址也可位寻址,字节地址为88H,为寻址的地址为88H~8FH。与中断源有关的位如表4-4所示。
表4-4TCON寄存器位说明
各位的意义如下:
TF0:T0溢出中断标志。T0被允许计数后,从初值开始加1计数。当产生溢出时硬件置“1”TF0,向CPU请求中断,一直保持到CPU响应中断时,才由硬件
20
相关推荐: