晶体管特性测试_第1页
晶体管特性测试_第2页
晶体管特性测试_第3页
晶体管特性测试_第4页
晶体管特性测试_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

简易数控晶体管特性测试 仪设计 摘要 设计用示波器的 X Y 方式显示扫描晶体管的特性曲线 MCP41010 构成 D A 转换器 通过对 PIC16F73 单片机的编程来实现输出电压的步进变化 同相放大 器组成恒流源 D A 转换输出接到恒流源电路 两者构成数控步进恒流电源 为基极提供步进可调的基极电流 通过电容的恒流充放电电路形成输出锯齿波 为扫描晶体管的特性曲线提供集射极电压 集电极电流通过采样集电极的电阻 电压获得 把示波器接成 X Y 显示扫描模式 然后可以在示波器上显示晶体管的 特性曲线 可通过键盘调整基极电流的步进 步进的进制有 10uA 20uA 30uA 40uA 50uA 60uA 70uA 80uA 90uA 100 uA 基极电 流的步进可达 10 步 并能通过数码管显示步进的大小 及在不同步进时电流达 到的最大值 并可通过单片机控制继电器工作来选择测试 NPN 型的或 PNP 型的 晶体管特性曲线 关键字 晶体管特性测试仪 锯齿波 恒流电源 D A 转换 数字电位器 目录目录 1 系统设计 5 1 1 设计要求 5 1 1 1 设计任务 5 1 1 2 设计要求 5 1 2 总体设计方案 6 1 2 1 系统设计思路 6 1 2 2 各模块方案选择与论证 6 2 单元电路设计 7 2 1 锯齿波电路 7 2 1 1 工作原理分析 7 2 1 2 参数选择 8 2 2 D A 模块 8 2 2 1 工作原理分析 8 2 3 恒流电源模块 9 2 3 1 工作原理分析 9 2 3 2 参数选择 9 3 软件设计 10 3 1 软件平台 开发工具 10 3 2 软件实现的功能 10 3 3 软件设计思想 10 3 4 软件总系统的设计 10 3 4 1 软件的功能及算法 10 3 4 2 总程序流程图 11 3 4 3 子程序流程图 11 4 系统测试 13 4 1 锯齿波电路模块 13 4 1 1 波形的测试 13 4 2 步进恒流电源模块 13 4 2 1 波形测试 13 4 3 晶体管特性曲线的测试 13 4 3 1 特性曲线的测试 13 5 结论 14 5 1 本设计实现功能 14 6 参考文献 14 7 附录 15 附录 1 元器件明细表 15 附录 2 仪器设备清单 15 附录 3 原理图 16 附录 4 PCB 版图 17 附录 5 程序清单 17 1 系统设计 1 11 1 设计要求设计要求 1 1 1 设计任务 设计出能借助示波器显示三极管特性曲线的数控步进恒流电源和同步锯齿波扫描电压 并与示波器结合测三极管 NPN 型和 PNP 型 的特性曲线 其原理方框如图 所示 1 1 2 设计要求 1 基本要求 1 数控步进恒流源 500 S 步进一阶 每阶电流增量 100 A 从 0 至 900 A 共 10 阶 2 扫描锯齿波 周期 500 S 幅度 12V 负载能力大于 250mA 3 数控步进恒流源与扫描锯齿波用单片机 1 个 IO 口同步 同步周期 500 S 各信号如图 1 所示 2 发挥部分 数控恒流电源每步进阶电流增量可预设 共有 10 20 100 A 十个值 步进数控 恒流源 X 输入 示波器 X Y 工作模式 Y 输入 图 1 晶体管特性图示仪工作原理 1 21 2 总体设计方案总体设计方案 1 2 1 系统设计思路系统设计思路 本次设计借助示波器的 X Y 扫描模式 X 轴为晶体管的集射极电压 Y 轴接晶体管的 集电极采样电阻 通过示波器扫描显示 NPN 型和 PNP 型三极管的特性曲线 基极电流由 数控步进恒流电源提供 能够对基极的电流步进进行调整 同步锯齿波为集射极的扫描电 压 并与示波器结合测三极管特性曲线 数控步进恒流电源由 MCP41010 数字电位器构成 D A 转换器 通过 PIC16F73 单片机的编程来实现控制其电压的步进 然后在接到恒流电 路 从而达到基极电流的步进 锯齿波由电容的充放电构成 放电采用快速放电 充电采 用恒流充电 1 2 2 各模块方案选择与论证各模块方案选择与论证 1 1 控制系统方案的选择与论证控制系统方案的选择与论证 根据题目设计要求可知要求扫描显示三极管的特性曲线 需要控制不同的电流步进与 电流的最大值 这样的系统采用单片机实现比较合适 以下有两种方案 市场上常见的单 片机有 51 系列和 PIC 系列 以下有两种方案 方案一 采用 ATMEL 公司的 AT89C51 单片机作为系统的的控制器 89 系列单片机算术运算 功能强 软件编写灵活 自由度大 可用软件编程实现各种算法和逻辑控制 并有功耗低 体积小 技术成熟和成本低等优点 但 89C51 单片机外围资源少 指令多为双周期 抗干 扰能力不强 方案二 采用 PIC16F73 单片机作为系统控制器 PIC 单片机具有 89C51 单片机的上述优 点 而且内部自带资源丰富 可以大大减少系统的外围扩展电路 系统更加简洁 PIC 单 片机抗干扰能力强 系统具有更高的性价比 基于以上分析拟订方案二 2 2 步进电流产生方案的选择与论证步进电流产生方案的选择与论证 本设计要求基极电流每步的步进电流可调 步进有 10uA 20 uA 30 uA 40 uA 100uA 且步进的阶数可达 10 阶 电流的步进本次采用转化为电压的步进 然后 接到恒流电源电路输出 即可得到电流的步进 故我们采用 D A 转换 通过单片机控制其 实现电压的步进 只要能产生一 10 个阶进的 D A 就能满足要求 方案一 采用 MCP41010 它是 8 位电流型串行数字电位器 可产生 256 个步进 可 用 SPI 方式控制 给其加上一 5V 的参考电压既可完全满足设计的需要 且具有产生纹波 小 可软件控制 编程简单 使用方便的优点 方案二 采用 DAC0832 它是 8 位并行的 D A 转换器 可同时输出 8 位数据 具有 输出速度快 产生纹波小 编程简单的特点 但其 I O 口开销较大 虽然在设计中用到 了 PIC16F73 作为控制单片机 I O 口资源较为丰富 但考虑到硬件的可扩展性 故不把其 列入考虑 方案三 采用 PIC16F73 内部的 PWM 同样我们只需用到 8 位即可满足设计要求 外 围电路只需用到一由电阻和电容构成的低通滤波器 具有外围电路最简单的优点 但产生 的纹波大 对设计所要求的纹波影响较大 综上所述 本设计最后采用方案一 3 3 锯齿波电路锯齿波电路 首先由单片机产生一个 500us 的同步脉冲 控制一个三极管瞬间导通 电容快速放电 采用恒流充电 则可得到线性较好的锯齿波 然后通过 TIP122 射极跟随放大 提高带载能 力 只要设计电容的充电时间约为 500us 即可满足要求 所以可采用此方案 4 4 显示模块显示模块 在系统运行过程中 需要显示基极电流的步进及各种步进电流的最高电流 方案一 采用字符型 LCD 显示 可以显示英文及数字 设计简单 且界面美观舒适 耗电小 但由于只需显示电流步进值及其最高的步进电流的最高值 这样的简单数字 信 息量小 且由于液晶是以点阵的模式显示各种符号 需要用控制芯片创建字符库 编程量 大 控制器的资源占用较多 其成本也偏高 在使用时 不能有净电干扰 否则易烧坏液 晶的显示芯片 不易于维护 方案二 采用 LED 数码管显示 使用多个数码管动态显示 数码管具有 低能耗 低 压 寿命长 耐老化 防晒 防潮 防火 防高 低 温 对外界环境要求低 易于维护 同时其精度比较高 称量快 精确可靠 操作简单 数码管采用 BCD 编码显示数字 程 序编译容易 资源占用少 综上所述 选择方案二 在本系统中 我们采用了数码管的动态显示 节省单片机的 内部资源 综上得此次的方案 采用 PIC16F73 单片机控制 步进恒流电源采用 D A 转换器 2 单元电路设计单元电路设计 2 1 锯齿波电路锯齿波电路 2 1 1 工作原理分析工作原理分析 采用电容的充放电原理 当同步脉冲来一个小脉冲时 晶体管 T1 导通 电容 C4 经晶 体管 T2 快速放电 当小脉冲过后 T2 管截止 由 IN4148 和三极管 2N5401 构成的恒流源 对电容 C4 充电 由于是恒流充电 输出的波形成线性 然后生成的锯齿波经晶体管 TIP122 放大 输出作为晶体管的集电极的扫描电压 恒流充电是由于二极管的钳位作用使 2N5401 的集电极的电阻压降为 0 7V 固定值 故可实现恒流充电 原理图如图 3 2 1 2 参数选择参数选择 恒流充电电路 使得 2N5401 的集电极上的电阻压降为 0 7V 则有 RIC11 7 0 且电容的充电满足 恒流充电则电流 T 500 us Uc 50V 则有 Uus c idt c u 500 0 1T c IuCc 1 R11C 7 10 6 由于电容要能实现快速放电 所以电容不能选的太大 则先选电容 C4 0 1 uF 则可选电阻 R11 100 欧姆 为了调节充电电流 得到一个理想的锯齿波 可用一个 1K 欧 姆的电位器与 R11相串联 在下图中 2N5401 的基极与地之间接两个 5K 的电阻代替一个 10K 电阻 主要是为了转移耗散功率 R13 10K C4 0 1 uf T2 2N 5551 T3 2N 5401 D2 1N 4148 D5 1N 4148 R19 5K R11 1 8 K T4 TIP122 12 V RB 3 12 V R20 5K 产产产产产 图 3 锯齿波电路原理图 2 22 2 D AD A 模块模块 2 2 1 工作原理分析工作原理分析 由于 MCP41010 的三引脚 PA0 PB0 PW0 内部等效与可调电阻 且芯片可以通过 控制其数字信号的输入控制改变电阻器的中间滑片的位置 电路把 PA0 接到参考电压 2 5V PB0 接地 则可把电阻值的变化变为电压的变化 PW0 的输出为对地的电压 原 理图如图 4 CS 1 SCK 2 SI 3 VS S 4 PA 0 5 PW 0 6 PB 0 7 VD D 8 D1 MC P41X XX RB 0 RB 1 RB 2 C3 0 1uf 5 Vref 5 0V R28 10K D A 图 4 D A 转换电路原理图 则输出电压为 步进电压变化为 5 0 255 0 01961V 255 0 5 D UDA 2 32 3 恒流电源模块恒流电源模块 2 3 1 工作原理分析工作原理分析 本电路用同相放大管和电压跟随器构成恒流源电路 19 1615 15 1615 16 IR RR R RR R UUU oi U RR R U O 1817 17 取 R15 R16 R17 R18 10K 根据放大管的虚断虚短特性 得 从而得 UU 因此当电阻 R19 恒定时 即可输出恒定的电流 即为恒流电源 RUi I 19 2 3 2 参数选择参数选择 为了能得到输出电流从 100uA 900uA 且取基准电压为 5 0V 则有 0 5 0V 所 Ui 以取电阻为 1 961K 且由于 DA 输出的电压为 步进电压变化为255 0 5 D UDA 5 0 255 0 01961V 所以当步进电流为 100uA 步进电压为 0 1961V 所以取 D 的步进为 0 1961 0 01961 10 要有 10 个阶进 共需要有 100 步进 以上的 D A 转换器采用的是 8 位 步进 256 可得到输出电流在要求范围内进阶变化 满足要求 原理图如图 5 3 2 1 411 U2 A LM 324 5 6 7 U2 B LM 324 10 9 8 U2 C LM 324 R15 10K R16 10K R17 10K R18 10K 5 5 R19 2K UB Uo Ui 图 5 恒流源电路原理图 3 软件设计软件设计 3 1 软件平台 开发工具软件平台 开发工具 软件部分 PIC 单片机的汇编语言编写 同时我们还利用 TOP2000 单片机编程器 把 程序下载到 PIC16F73 芯片中 使得软件与硬件结合起来 使用方便 调试容易 本设计采用的时钟晶振为 4MHZ 故每条指令周期为 1uS PIC16F73 采用哈佛结构设 计 两级流水线取指令方式 具有开发容易 周期短 高速 低功耗 且功能强等特点 给阅读和使用都带来了极大的方便 3 2 软件实现的功能软件实现的功能 系统的软件设计采用 PIC 的汇编语言进行编写 对单片机进行编程实现各项功能 软 件实现的功能是 1 控制步进电流的步进 500us 增加一次步进 2 可以通过按键控制步进的大小 分别有 10uA 20 uA 30 uA 40 uA 100 uA 3 驱动数码管显示步进的大小和各种不同进阶所对应的电流最大值 4 实现同步脉冲 实现电容的瞬间放电 5 实现了测试晶体管的选择 并且可对各步进电流的校验 3 3 软件设计思想软件设计思想 该软件系统采用 PIC 单片机汇编语言编写 根据设计任务要求 采用 2 5mS 程序扫描 主程序里进行按键扫描 显示扫描等 并根据功能要求进入各个功能模块 各个功能模块 分别为进阶电流设定模块 显示进阶电流和最大的电流采样模块 用定时器 2 自身带有的 周期寄存器可实现自动重装载 设置周期寄存器初值为 249 后分频为 1 2 根据公式 T P1 P2 PR2 1 可实现 500us 定时中断 每 500us 中断一次刷新一次输出电压值 3 4 软件总系统的设计软件总系统的设计 3 4 1 软件的功能及算法软件的功能及算法 总流程图采用模块化结构 复位分为两部分 在 RAM 建立各控制量的映射 方便各功 能模块的编程 方便修改 分块功能模块结构 可实现无扰动重入 软件模块按功能划分 是以子程序的形式设计的 程序分别对各个功能进行调用 各 个模块功能清晰明了 3 4 2 总程序流程图总程序流程图 上电 复位入口 上电复位初始化 所有复位初始化 2 5ms定时设置 清看门狗定时器 特殊功能寄存器重 设 按键扫描 显示扫描 键滤波 键 后处理 依进阶电流值取MCP41010步进 值MCP41TEMP 2 5ms 关键数据3比2表决 根据状态 值转相应模块 进阶电流和最大电流 显示模块 进阶电流设定模块 电流验证模块 保存新状态值 Y N Y N 状态0 状态1 状态2 图 6 总程序流程图 3 4 3 子程序流程图子程序流程图 进阶电流设定 判断DSBUF4寄存器的值 该值为1清K5键该值为10清K4键 有K4键 有K5键 DSBUF4值加1 DSBUF4值减1 有K3键 清闪烁标志位 转实时进阶电流和 最大电流显示模块 保持进阶电流设定 模块 有K1键吗 转电流验证模块 Y N Y N Y N Y N 图 7 进阶电流显示模块程序框图 中断入口 中断保护 清 TMR2IF 加进阶到输 出缓存 输出缓存大 于上限值 赋进阶值 MCP41TEMP到输 出缓存 数据输出 同步信号置1 中断出栈 同步信号清零 中断退出 验证标志 1 N Y MCP41010数据输 出函数 开片选 输出时钟置0 数据左移依据 高位输出 输出时钟置1 计数器减1位0 关片选 返回 Y 图 8 中断服务程序框图 图 9 数据输出子程序框 显示子程序 清显示 要闪烁FLON 暗时段DSBUF0 7 当前位闪DSFL 送显示数据 段码转换 段数据输出 由DSBUF0确定位 选输出 DSBUF0自加1 RET N N Y Y Y N 图 10 显示扫描子程序框图 4 系统测试系统测试 4 14 1 锯齿波电路模块锯齿波电路模块 4 1 1 波形的测试波形的测试 用双踪示波器观测 一个通道观测电容 C4 上端的输出电压 另一个通道观测同步脉 冲 可得 C4 端的波形是一个锯齿波 周期为 500us 且与同步脉冲的保持同步 同步脉冲 的上升沿时锯齿波放电 波形图如图 11 图 11 锯齿波形与同步脉冲 4 24 2 步进恒流电源模块步进恒流电源模块 4 2 1 波形测试波形测试 用单踪示波器观测 D A 转换输出的电压可得是一个阶梯波 能够实现 10 个阶梯 每 阶的变化均匀 且周期为 500us 波形图如图 12 图 12 阶梯波形 4 3 晶体管特性曲线的测试晶体管特性曲线的测试 4 3 1 特性曲线的测试特性曲线的测试 采用 X Y 模式的波形扫描显示 X 的正极接电源地 Y 的正极接锯齿波输出端 X Y 的公共端接晶体管的集电极 即 X 轴接 Y 轴接 即可扫描出三极管的特 UCEIC 性曲线 改变电流的步进可以观察到特性曲线有变化 当步进为 10uA 时 显示的特性曲 线最为好 可达到 10 阶进 随着步进电流的增大 电流也在不断的增大 当电流大于 410uA 左右时 三极管进入饱和导通区 所以可看到的特性扫描的曲线数也在不断的减小 而且随着电流的变大 扫描的特性线的右边没掉 因为进入了过损耗区 当阶进改为 20 时 显示扫描会出现波动的现象 那是因为显示扫描的速度变慢了一倍 波形图如图 13 图 13 三极管特性输出波形特例 5 结论结论 5 15 1 本设计实现功能本设计实现功能 1 能够通过数码管显示电流的步进 通过按键调整其步进 步进有 10 20 30 40 100 2 数控步进恒流源 500 S 步进一阶 每阶电流增量 100 A 从 0 至 900 A 共 10 阶 3 扫描锯齿波 周期 500 S 幅度 50V 负载能力大于 250mA 4 同步脉冲 5 测试晶体管的极性选择 以及步进电流的校验 6 参考文献参考文献 1 张华林 周小方编著 电子设计竞赛实训教程 M 北京 北京航空航天大学出版社 2007 7 P10 12 2 杨素行主编 清华大学电子学教研组编 模拟电子技术基础简明教程 M 高等教育出版 社 3 徐孟尝主编 清华大学电子学教研组编 数字电子技术基础简明教程 M 高等教育出版社 4 李荣正 刘启中 陈学军编 PIC单片机原理及应用第2版 M 北京 北京航空航天大学 出版社 5 李学海主编 PIC单片机实用教程 M 提高篇 北京 北京航空航天大学出版社 7 附录附录 附录附录 1 1 元器件明细表元器件明细表 序号名称 型号及规格数量备注 1 电阻 10K 5 2 电阻 1 8K 1 3 电阻 10 1 4 功率电阻 100 2W 1 5 电容 0 1uF 1 6CS90131 72N54011 82N55511 9TIP1221 101N41488 11 变阻器 300 1 12 变阻器 1K 1 13 复铜板 115 15 14PIC16f731 15MCP410101 16LM3241 17 继电器 1 18 共阴数码管 4 19 小复位开关 6 20LM3581 21 4M 晶振 1 22 发光 LED 红 2 2378121 24 电阻 200 欧 10 附录附录 2 2 仪器设备清单仪器设备清单 序号名称 型号及规格主要技术指标数量备注 1 台式万用表 1 2 直流稳压电源 1 3 双踪数字示波器 1 附录附录 3 3 原理图原理图 B1 B2 B3 B4 B5 B6 B0 X1 4M C815p C715p B7A0 A1 A2 A3 A4 RA 5 C6 104 R21 1K MC LR a 7 b 6 c 4 d 2 e 1 f 9 g 10 h 5 com 3 com 8 a b c d e f g h LE D7 a 7 b 6 c 4 d 2 e 1 f 9 g 10 h 5 com 3 com 8 a b c d e f g h LE D6 a 7 b 6 c 4 d 2 e 1 f 9 g 10 h 5 com 3 com 8 a b c d e f g h LE D5 a 7 b 6 c 4 d 2 e 1 f 9 g 10 h 5 com 3 com 8 a b c d e f g h LE D4 a b c d e f g h a b c d e f g a b c d e f g a b c d e f g h h h B4B5B6B7 SW 1SW 2SW 0 KA0 KA1 KA2 KS 0 R1200 R2 200 R3 200 R4 200 R5 200 R6 200 R7 200 R8 200 a b c d e f g h C0 C1 C2 C3 C4 C5 C6 C7 R91K R101K R111K R131K R141K KA 0 KA 1 KA 2 KS 0 KS 1 A0 A1 A2 A3 A4 SW 4SW 5SW 3 KA0 KA1 KA2 KS 1 R17 10K R18 10K R19 10K KA0 KA1 KA2 5 AN 0 2 AN 1 3 AN 2 4 AN 3 VR EF 5 RA 4 TO CKI 6 RA 5 AN 4 7 RB 0 INT 21 RB 1 22 RB 2 23 RB 3 24 RB 4 25 RB 5 26 RB 6 27 RB 7 28 RC 0 T1C KI 11 RC 1 CCP2 12 RC 2 CCP1 13 RC 3 SCK SCL 14 RC 4 SDI SDA 15 RC 5 SDO 16 RC 6 TX 17 RC 7 RX 18 OS C2 CK O 10 OS C1 CK I 9 VS S 19 VS S 8 VD D 20 MC LR 1 PIC 16F873 R221KR2310K C5 224 12 Vref 12 IC7 LM 336 T1 9013 2 1 5 6 7 IC6B LM 358 产产产产产产 100mA C4 1u CN 1 1 CN 1 2 T1 220V 15V 150mA D1 4007 D2 4007 D3 4007 D4 4007 C1 1000 25V 13 2 IC1 7812 C2 104 C3 104 C4 100 16V 12V R13 10K C4 0 1uf T2 2N5551 T3 2N5401 D2 1N4148 D5 1N4148 R19 5K R11 1 8K T4 TIP122 12V 3 2 1 411 U2A LM 324 5 6 7 U2B LM 324 10 9 8 U2C LM 324 R15 10K R16 10K R17 10K R18 10K R2310K T1 NPN 5 5 R14 10 2 5W RB 3 CS 1 SCK 2 SI 3 VS S 4 PA0 5 PW 0 6 PB 0 7 VDD 8 D1 MC P41XXX RB 0 RB 1 RB 2 C3 0 1uf 5 Vref 12V 100K R21 R20 5K T2 PNP 1 OPEN 4 CLOSE 5 2 MOVE 3 J1 12V NPN RA5 R26 10 2 5W LED 1N4007 3 3K R22 1 OPEN 4 CLOSE 5 2 MOVE 3 J2 R121K 5K R24 12V NPN RA5 LED 1N4007 3 3K R25 T3 CS9013 R28 10K 附录 4 PCB 版图 附录 5 程序清单 系统程序设计 几个重要子程序及主子程序之间的关系 以下为特殊功能存储器的定义 INCLUDE PIC16F73 INC 以下为 I O 口定义 DEFINE SCK RC 1 SPI 串口时钟线 DEFINE SDI RC 0 SPI 串口数据输入 DEFINE CSF RC 2 MCP41010 片选 DEFINE MAIC RA 5 同步脉冲输出 DEFINE PNP RC 3 继电器 以下为内部 RAM 的定义 WBUFEQU 20H W 保护单元 含 0A0H 单元 STBUFEQU 21H STATUS 保护单元 FSBUFEQU 22H FSR 保护单元 PCBUFEQU 23H PCLATH 保护单元 R0EQU 24H R0 7 工作寄存器 R1EQU 25H R0 7 循环变量或中间结果 R2EQU 26H R3EQU 27H R4EQU 28H R5EQU 29H R6EQU 2AH R7EQU 2BH DSBUF0EQU 2CH 显示位选 0 7 LED7 LED0 DSBUF1EQU 2DH 显缓 高 低半字 LED7 6 DSBUF2EQU 2EH 显缓 高 低半字 LED5 4 DSBUF3EQU 2FH 显缓 高 低半字 LED3 2 DSBUF4EQU 30H 显缓 高 低半字 LED1 0 DSBUF5EQU 31H 小数点位 DSBUF6EQU 38H DEFINE DOT7 DSBUF5 7 LED7 小数点位 DEFINE DOT6 DSBUF5 6 LED6 小数点位 DEFINE DOT5 DSBUF5 5 LED5 小数点位 DEFINE DOT4 DSBUF5 4 LED4 小数点位 DEFINE DOT3 DSBUF5 3 LED3 小数点位 DEFINE DOT2 DSBUF5 2 LED2 小数点位 DEFINE DOT1 DSBUF5 1 LED1 小数点位 DEFINE DOT0 DSBUF5 0 LED0 小数点位 DSFLEQU 32H 显示位闪烁控制 DEFINE FLON DSFL 3 闪烁总控位 1 闪 KEY1EQU 33H 键值 1 触发型 KEY2EQU 34H 键值 2 触发型 DEFINE K0 KEY1 0 DEFINE K1 KEY1 1 DEFINE K2 KEY1 2 DEFINE K3 KEY1 3 DEFINE K4 KEY1 4 DEFINE K5 KEY1 5 DEFINE K6 KEY1 6 DEFINE K7 KEY1 7 DEFINE K8 KEY2 0 DEFINE K9 KEY2 1 DEFINE K10 KEY2 2 DEFINE K11 KEY2 3 LASTK1EQU 35H 旧键值 1 控制型 LASTK2EQU 36H 旧键值 2 控制型 DEFINE LK0 LASTK1 0 DEFINE LK1 LASTK1 1 DEFINE LK2 LASTK1 2 DEFINE LK3 LASTK1 3 DEFINE LK4 LASTK1 4 DEFINE LK5 LASTK1 5 DEFINE LK6 LASTK1 6 DEFINE LK7 LASTK1 7 DEFINE LK8 LASTK2 0 DEFINE LK9 LASTK2 1 DEFINE LK10 LASTK2 2 DEFINE LK11 LASTK2 3 KCAPEQU 37H 键值滤波单元 TIMEREQU 49H 半秒定时器 基准 2 5mS SECEQU 4AH 秒单元 2 进制 STAEQU 4DH 偶工作状态寄存器 STA1EQU 4EH STA2EQU 4FH R8EQU 53H R9EQU 5BH R10EQU 5CH R11EQU 5DH R12EQU 5EH CURTEMP EQU 5FH 进介电流 MCP41OUT EQU 60H MCP41010 输出 MCP41TEMP EQU 61H MCP41010 输出 增加步进 MCPUP EQU 62H 中断用寄存器定义 INTR0EQU 62H INTR1EQU 63H INTR2EQU 64H INTR3EQU 65H 宏定义 W STATUS FSR PCLATH 进栈 PUSHMACRO MOVWF WBUF SWAPF WBUF 1 SWAPF STATUS W BCF RP0 BCF RP1 MOVWF STBUF SWAPF FSR W MOVWF FSBUF SWAPF PCLATH W MOVWF PCBUF ENDM 宏定义 W STATUS FSR PCLATH 出栈 POPMACRO BCF RP0 BCF RP1 SWAPF PCBUF W MOVWF PCLATH SWAPF FSBUF W MOVWF FSR SWAPF STBUF W MOVWF STATUS SWAPF WBUF W ENDM 宏定义 RAM 体选择 BANK0MACRO BCF RP1 BCF RP0 ENDM BANK1 MACRO BCF RP1 BSF RP0 ENDM BANK2 MACRO BSF RP1 BCF RP0 ENDM BANK3MACRO BSF RP1 BSF RP0 ENDM 主程序入口向量 RESET VECTORORG 0 x000 CLRF PCLATH GOTO MAIN GOTO MAIN GOTO MAIN 中断入口向量 INTERRUPT VECTORSORG 0 x004 PUSH 进栈 BANK0 CLRF PCLATH GOTO INTSEV ORG 0 x0020 INCLUDE ZICHENGXU INC 中断服务子程序 INTSEVBCF TMR2IF BTFSC DSBUF5 0 GOTO 6 INCFSEC F MOVLW D 9 XORWFSEC W BTFSS Z GOTO 3 CLRF SEC CLRFMCP41OUT MOVFMCP41TEMP W ADDWFMCP41OUT F MOVFMCP41OUT W MOVWFINTR0 CALL MCP41010WRITE 送出数据 BSF MAIC 输出大于最大值 时候输出一个脉冲 DECFTIMER F 主程序扫描频率控制计数器 POP GOTO 1 GOTO 1 GOTO 1 GOTO 1 GOTO 1 BCF MAIC RETFIE MAINBANK1 上电复位判断 MOVF PCON W BSF POR BTFSS POR GOTO 2 BANK0 ANDLW 02H BTFSS Z GOTO RSTELSE MOVLW 2CH 上电复位初始化 MOVWF FSR CLRF F0 INCF FSR 1 BTFSS FSR 7 GOTO 3 以上清 RAM2C 7FH CLRF RB MOVLW 07H MOVWF RA CLRF RC 以上 IO 口初始设置 RSTELSE CLRWDT 特殊功能寄存器初始 化 BANK1 MOVLW06H MOVWF ADCON1 MOVLW B 00000111 MOVWF TRISA MOVLW B 00000000 MOVWF TRISB CLRF TRISC CLRF PIE1 BSF TMR2IE MOVLW D 249 MOVWFPR2 TMR2 重装载初值 BANK0 CLRF PORTA CLRFPORTB CLRFPORTC CLRF INTCON CLRF PIR1 CLRF PCLATH MOVLW 0CH 后分频 1 2 启动 TMR2 定时 MOVWFT2CON BSF PEIE BSF GIE MOVLW 05H MOVWF TIMER MOVLW 01H MOVWF CURTEMP 主程序 MAIN1 BANK0 MOVF TIMER W BTFSS Z GOTO 2 CLRWDT MOVLW 05H MOVWF TIMER 以下为重要功能寄存器冗余设置 应视具体应用情况作相应调整 BANK1 MOVLW B 00000111 MOVWF TRISA MOVLW B 00000000 MOVWF TRISB CLRFTRISC CLRF PIE1 BSF TMR2IE 冗余设置 MOVLW D 249 要使能哪个中断在 这里设置 包括字程序的 MOVWF PR2 BANK0 CLRF PIR1 CLRF PCLATH BSF PEIE BSF GIE DSBUF0 偶数分支 CALL SCANKEY 2 5mS 偶次键扫 描 CALL SCANLED 显示扫描 CALL KRCW 键滤波 去抖动 CALL KPREC 键后处理 BTFSS K0 GOTO LD MOVF RC W XORLW B 00001000 MOVWF RC 依进阶级电流取对应 MCP41010 步进值 LDMOVLW 10H XORWF CURTEMP W MOVLW 0AH BTFSS Z MOVF CURTEMP W MOVWFR0 CALL MCPTAB MOVWF MCP41TEMP MAIN2MOVF STA W 状态字 3 比 2 表决 XORWF STA1 W BTFSS Z GOTO MAIN2 1 MOVF STA W MOVWF STA2 GOTO MAIN2 4 MAIN2 1 MOVF STA W XORWF STA2 W BTFSS Z GOTO MAIN2 2 MOVF STA W MOVWF STA1 GOTO MAIN2 4 MAIN2 2 MOVF STA1 W XORWF STA2 W BTFSS Z GOTO MAIN2 3 MOVF STA1 W MOVWF STA GOTO MAIN2 4 MAIN2 3 CLRF STA CLRF STA1 CLRF STA2 MAIN2 4 MOVLW HIGH MAIN3 MOVWF PCLATH MOVF STA W ANDLW 03H ADDLW LOW MAIN3 BTFSC C INCF PCLATH F MOVWF PCL MAIN3GOTO WORK0 GOTO WORK1 GOTO WORK2 GOTO WORK0 WORKMOVWF STA 存储最新状态值 MOVWF STA1 每个模块都到这里汇 合 MOVWF STA2 GOTO MAIN1 实时基极进阶电流显示模块显示模块 WORK0 BCF DSBUF5 0 BTFSS K2 GOTO WORK0 1 MOVF DSBUF3 W XORLW B 00000001 MOVWF DSBUF3 WORK0 1 BTFSC DSBUF3 0 GOTO WORK0 3 MOVF CURTEMP W MOVWF DSBUF1 MOVLW 10H XORWF CURTEMP W BTFSS Z GOTO WORK0 2 SWAPF CURTEMP W MOVWF DSBUF1 MOVLW 0A0H IORWF DSBUF1 1 MOVLW 00H MOVWF DSBUF2 GOTO WORK0 4 WORK0 2 SWAPF CURTEMP W MOVWF DSBUF2 MOVLW 0A0H MOVWF DSBUF1 GOTO WORK0 4 WORK0 3 MOVLW 10H XORWF CURTEMP W MOVLW 0AH BTFSS Z MOVF CURTEMP W MOVWF R0 BCF C RLF R0 F BCF C RLF R0 F BCF C RLF R0 F ADDWF R0 F CALL DBCD SWAPF R6 W MOVWF DSBUF6 MOVLW 0F0H ANDWF DSBUF6 W MOVWF DSBUF2 MOVLW 0FH ANDWF DSBUF6 1 MOVLW 0B0H IORWF DSBUF6 W MOVWF DSBUF1 GOTO WORK0 4 WORK0 4 MOVLW 00H BTFSS K3 GOTO WORK0 5 MOVLW 08H MOVWF DSFL MOVLW 01H GOTO WORK WORK0 5 BTFSS K1 GOTO WORK CLRF DSFL MOVLW 02H GOTO WORK 基极进介电流调整模块 WORK1 BCF DSBUF5 0 MOVF CURTEMP W MOVWF DSBUF4 MOVLW 10H XORWF DSBUF4 W BTFSC Z BCF K4 为 10H 清增加键 MOVF DSBUF4 W XORLW 01H BTFSC Z BCF K5 为 00H 清减少键 判断增加键 BTFSS K4 GOTO WORK1 1 转判断减少键 MOVLW 01H ADDWF DSBUF4 W MOVWF DSBUF4 MOVLW 0AH XORWF DSBUF4 W BTFSS Z GOTO WORK1 1 转判断减少键 MOVLW 10H MOVWF DSBUF4 WORK1 1 BTFSS K5 GOTO WORK1 2 MOVLW 10H XORWF DSBUF4 W BTFSS Z GOTO 4 MOVLW 09H MOVWF DSBUF4 GOTO WORK1 2 MOVLW 01H SUBWF DSBUF4 F WORK1 2 MOVF DSBUF4 W MOVWF CURTEMP 送回电流进 阶缓存 MOVLW 10H 送最大电流显示 XORWF CURTEMP W MOVLW 0AH BTFSS Z MOVF CURTEMP W MOVWF R0 BCF C RLF R0 F BCF C RLF R0 F BCF C RLF R0 F ADDWF R0 F CALL DBCD SWAPF R6 W MOVWF DSBUF6 MOVLW 0F0H ANDWF DSBUF6 W MOVWF DSBUF2 MOVLW 0FH ANDWF DSBUF6 1 MOVLW 0B0H IORWF DSBUF6 W MOVWF DSBUF1 MOVF DSBUF4 W MOVWF CURTEMP 送回电流进 阶缓存 MOVLW 01H BTFSS K3 判断状态切换 GOTO WORK1 3 CLRF DSFL MOVLW 00H GOTO WORK WORK1 3 BTFSS K1 GOTO WORK CLRF DSFL MOVLW 02H GOTO WORK 验证模块 WORK2 BSF DSBUF5 0 MOVF CURTEMP W MOVWF DSBUF4 MOVLW 10H XORWF DSBUF4 W BTFSC Z BCF K4 为 10H 清增加键 MOVF DSBUF4 W XORLW 01H BTFSC Z BCF K5 为 00H 清减少键 判断增加键 BTFSS K4 GOTO WORK2 1 转判断减少键 MOVLW 01H ADDWF DSBUF4 W MOVWF DSBUF4 MOVLW 0AH XORWF DSBUF4 W BTFSS Z GOTO WORK2 1 转判断减少键 MOVLW 10H MOVWF DSBUF4 WORK2 1 BTFSS K5 GOTO WORK2 2 MOVLW 10H XORWF DSBUF4 W BTFSS Z GOTO 4 MOVLW 09H MOVWF DSBUF4 GOTO WORK2 2 MOVLW 01H SUBWF DSBUF4 F WORK2 2 MOVF DSBUF4 W MOVWF CURTEMP 送回电流进 阶缓存 MOVF CURTEMP W MOVWF DSBUF1 MOVLW 10H XORWF CURTEMP W BTFSS Z GOTO WORK2 3 SWAPF CURTEMP W MOVWF DSBUF1 MOVLW 0C0H IORWF DSBUF1 F MOVLW 00H MOVWF DSBUF2 GOTO 5 WORK2 3 SWAPF CURTEMP W MOVWF DSBUF2 MOVLW 0C0H MOVWF DSBUF1 MOVF DSBUF4 W MOVWF CURTEMP 送回电流进 阶缓存 MOVLW 02H BTFSS K1 判断状态切换 GOTO WORK MOVLW 00H CLRF DSFL BTFSS K5 GOTO WORK MOVLW 0AH MOVWF DSFL MOVLW 01H GOTO WORK MCPTAB MOVLW HIGH MCPTAB1 MOVWFPCLATH MOVFR0 W ADDLWLOW MCPTAB1 BTFSCC INCFPCLATH F MOVWF PCL MCPTAB1RETLW D 0 RETLW D 2 RETLW D 4 RETLW D 6 RETLW D 8 RETLW D 10 RETLW D 12 RETLW D 14 RETLW D 16 RETLW D 18 RETLW D 20 END 七段码转换子程序 代码段地址在 00FFH 以内 LED7CLRF PCLATH ADDWF PCL 1 RETLW B 11100111 0 RETLW B 10000001 1 RETLW B 11010110 2 RETLW B 11010011 3 RETLW B 10110001 4 RETLW B 01110011 5 RETLW B 01110111 6 RETLW B 11000001 7 RETLW B 11110111 8 RETLW B 11110011 9 RETLW B 11110101 A RETLW B 00110111 B RETLW B 01100110 C RETLW B 00000000 D RETLW B 00000000 E RETLW B 00000000 F RETURN 显示器扫描子程 SCANLEDCLRF RB BCF RC 7 关显示 BCF RC 6 BCF RC 5 BCF RC 4 BANK1 CLRF TRISB BANK0 BTFSS FLON 要闪烁 GOTO SCANL1 BTFSS DSBUF0 7 暗时段 0 32S 交替 GOTO SCANL1 MOVF DSFL W 当前位为闪烁位 XORWF DSBUF0 W ANDLW 03H BTFSC Z GOT

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论