第三章 硬件电路
3.1硬件设计思想
由于只要求四种不同频率方波输出档位,只需要四个开关的状态信息的采集,考虑到系统结构的成本,采用四个开关直接51单片机的P2.0—P2.3口相连的硬件设计,这样的系统结构简单,稳定,易于实现。
本系统总共有开关信号采集,复位电路,晶振单路,方波输出模块。
其中单片机VCC接+5V电源 3.2开关信号采集
采用四个单刀单掷开关和51单片机直接相连
3.3复位电路及晶振电路
C1:30pF的无极性电容 C2:30pF的无极性电容 C3:1uF的电解电容 R1:10KΩ的电阻 3.4方波输出
第四章 软件系统
4.1软件系统概述 4.1.1如何输出方波
由于只是要求频率可调,不要求电平,并且在P1.0口输出,可以用P1.0口的高地电平输出方波的上下限电平。
4.1.2如何采集开关状态
因为只要求四档不同频率的方波,只有四个开关状态要采集,所以可以直接把四个开关连接到P2.0到P2.3口上,可以采用对四个口的遍历的方法查询状态。 4.1.3程序总述
主程序先对中断定时器T0进行相关设置,并对开关第一次信息采集,根据开关信息的不同状态对定时器T0进行赋值,然后开启定时,等待中断。因为题目要求频率最低为1Hz,定时器T0选择方式一,TMOD控制字设置为#01H。 S1按下时:要求频率1Hz,周期为1s,定时器要求500ms,采用方式一,最大定时时间为:
=×1us=65.536ms,
这里采用定时50ms,溢出10次改变一次电平重 装值的计算公式为:TC=-50ms1us=3CB0H
S2按下时:要求频率10Hz,周期50ms,采用方式一 装值的计算公式为:TC=-50ms1us=3CB0H
S3按下时:要求频率1KHz,周期500us,采用方式一 装值的计算公式为:TC=-500us1u=FEFBH
S3按下时:要求频率10KHz,周期50us,采用方式一 装值的计算公式为:TC=-50us1us=FFCDH
程序流程图
4.2各部分程序 4.2.1主程序
主要进行T0中断设置,对开关状态的初次响应,并根据不同的开关状态进行不同的赋值给T0,然后等待中断。 ORG 0000H LJMP 0A00H ORG 0A00H SETB EA SETB ET0 SETB PT0
MOV TMOD,#01H LOOP:MOV P2,#0FFH CLR TR0
JNB P2.0,SS1
JNB P2.1,SS2 JNB P2.2,SS3 JNB P2.3,SS4
SJMP LOOP SS1:MOV TH0,#3CH MOV TL0,#0B0H SETB TR0 MOV R0,#10 SJMP $
SS2:MOV TH0,#3CH MOV TL0,#0B0H SETB TR0 SJMP $
SS3:MOV TH0,#0FEH MOV TL0,#0FBH SETB TR0 SJMP $
SS4:MOV TH0,#0FFH MOV TL0,#0CDH SETB TR0 SJMP $
主程序流程图
4.2.2中断程序
在T0溢出是进入本程序,本程序初始地址为000BH,本程序开始就进行了一次扫描,来确定是哪一个开关按下,然后跳转到相应的程序。
ORG 000BH LJMP NEXT ORG 0100H NEXT:JNB P2.0,S1 JNB P2.1,S2 JNB P2.2,S3 JNB P2.3,S4 SJMP NEXT S1:DJNZ R0,NS1 CPL P1.0 MOV R0,#10 NS1:MOV TH0,#3CH MOV TL0,#0B0H RETI
S2:CPL P1.0