键盘控制的多种波形发生器要点
波形发生器——按键控制波形课程设计
波形发生器—按键控制波形课程设计(一)设计任务和要求-------------------------------------------2(二)系统方案(设计思路,用到的芯片及作用),画出系统框图及说明-------------------------------------------------------------2(三)设计方法——硬件设计,画出电路原理图及说明-3(四)设计方法——软件设计,画出程序流程图及说明,源程序清单和注释---------------------------------------------------------------4(五)系统调试----------------------------------------------------51.使用的主要仪器和仪表2.实验步骤3.整理性能测试数据和波形,并与设计要求比较分析4调试中出现的故障、原因及排除方法(六)设计结论----------------------------------------------------11(七)收获和体会-------------------------------------------------13(一)设计任务和要求利用DAC0832产生锯齿波、三角波和方波。
按“1”键产生锯齿波;按“2”键产生三角波;按“3”键产生方波。
(二)系统方案1.DAC0832的内部结构和外部引脚DAC0832的作用是将从CPU发来的数字信号转化为模拟信号2.8086CPU8086CPU主要用于产生数字信号。
设计思路:通过DAC0832的数模转化功能实现将离散信号转化为模拟信号,然后利用扫描法实现按键控制。
(三)设计方法——硬件设计,画出电路原理图及说明DAC08328086开关各个模块及其连接说明:主要分成两部分,输入部分和输出部分。
输入部分由8255和8个常开型开关来完成。
通过键盘输入数字赋给8086,然后根据8086的程序,调用不同的波形发生函数,输出离散信号给DAC0832进行数模转换。
单片机课程设计波形发生器之按键控制频率
(1)编写波形图——锯齿波程序代码;
(2)编写3个不同频率的延时子函数代码控制编写不同锯齿波输出。
(3)编写主程序main()函数的不同频率相对应的3个按键控制。
3.硬件设计: 连接线路于XL2000MCU单片机实验箱,本实验连线过程: (1)CS-片选位连接P2.7 (2) WR-写入位连接P3.4 (3) DAC0832数模转换器连接输出 (4)按键J37连接89C51 \P1端口 (5)连接于电脑
设计方法——硬件设计
1.电路原理图 2.电路原理图说明
电路原理图
电路原理图说明
连线过程: 1.CS-片选位连接 P2.7 2.WR-写入位连接 P3.4 3.DAC0832数模转 换器连接输出 4.按键J37连接 89C51 \P1端口 5.连接于电脑
设计方法——软件设计
1.程序流程图 2.源程序
本次对于课题:波形发生器设计——按键控制频率的课 程设计,在设计软件时,需要注意:只有当锯齿波形图在keil 软件以及示波器中正确显示后,通过调节程序代码中的不同 延时子程序来控制延时的长短,从而达到调整实验中锯齿波 形相对应“100Hz”、“150Hz”和“200Hz”的频率输出结 果。而程序中必须设置3个不同延时子程序来控制延时的长短, 每个子程序对应于不同频率的锯齿波形图。
附录1:锯齿波
#include<reg51.h> #define uchar unsigned char #define uint unsigned int #define DATA P0 sbit _WR=P3^6; sbit CS=P2^7; void delay_run() { uchar jj;
for(jj=0;jj<2;jj++); } main() { uchar i=0; DATA=0;
波形发生器使用说明书
波形发生器使用说明书1. 引言波形发生器是一种电子设备,用于产生各种不同频率和特征的电压波形。
它在科研、教学和工程领域中发挥着重要作用。
本使用说明书将详细介绍波形发生器的使用方法和相关注意事项,以帮助用户正确高效地操作设备。
2. 设备概述波形发生器由以下几部分组成:- 控制面板:包含各种按钮、旋钮和显示屏,用于控制波形发生器的参数设置和实时监测。
- 输出接口:提供输出信号的连接接口,通常为BNC接口。
- 电源接口:用于连接电源适配器或电池,以为设备供电。
3. 参数设置在使用波形发生器之前,需要进行以下参数设置:- 波形类型:选择所需的波形类型,如正弦波、方波、三角波等。
- 频率设置:设置所需的频率范围和步进值,确保输出信号的准确性和稳定性。
- 幅度控制:调整输出信号的峰值电压,以适应不同应用需求。
- 相位调节:可以对波形的相位进行微调,实现不同波形之间的相位差。
4. 操作步骤以下是使用波形发生器的基本操作步骤:- 第一步:连接电源适配器或安装电池,确保设备正常供电。
- 第二步:连接输出信号,将波形发生器的输出接口与外部设备进行连接,如示波器或实验电路。
- 第三步:按照设备要求进行参数设置,通过控制面板上的按钮和旋钮进行相关设置。
- 第四步:启动波形发生器,开始产生输出信号。
可以通过示波器或其他测试设备来验证输出信号的准确性和稳定性。
- 第五步:根据实际需求,对波形的频率、幅度和相位等参数进行调整,优化输出信号的特性。
5. 注意事项在使用波形发生器时,需要注意以下事项:- 避免超出设备的电压和电流限制范围,以防止设备损坏或影响实验结果。
- 在设置频率时,应根据实验要求选择适当的范围和步进值,确保信号的稳定性和可靠性。
- 使用过程中应注意不要将波形发生器暴露在潮湿或有腐蚀性气体的环境中,以免损坏设备。
- 当设备长时间不使用时,应将其断电并妥善保存,避免长时间处于高温或高湿度环境中。
6. 故障排除如果在使用波形发生器时出现故障或异常情况,可以按照以下步骤进行排除:- 首先检查电源供应是否正常,确保设备处于正常工作状态。
基于51单片机的波形发生器的设计讲解
目录1 引言 (1)1.1 题目要求及分析 (1)1.1.1 示意图 (1)1.2 设计要求 (1)2 波形发生器系统设计方案 (2)2.1 方案的设计思路 (2)2.2 设计框图及系统介绍 (2)2.3 选择合适的设计方案 (2)3 主要硬件电路及器件介绍 (4)3.1 80C51单片机 (4)3.2 DAC0832 (5)3.3 数码显示管 (6)4 系统的硬件设计 (8)4.1 硬件原理框图 (8)4.2 89C51系统设计 (8)4.3 时钟电路 (9)4.4 复位电路 (9)4.5 键盘接口电路 (10)4.7 数模转换器 (11)5 系统软件设计 (12)5.1 流程图: (12)5.2 产生波形图 (12)5.2.1 正弦波 (12)5.2.2 三角波 (13)5.2.3 方波 (14)6 结论 (16)主要参考文献 (17)致谢....................................................... 错误!未定义书签。
1引言1.1题目要求及分析题目:基于51单片机的波形发生器设计,即由51单片机控制产生正弦波、方波、三角波等的多种波形。
1.1.1示意图图1:系统流程示意图1.2设计要求(1) 系统具有产生正弦波、三角波、方波三种周期性波形的功能。
(2) 用键盘控制上述三种波形(同周期)的生成,以及由基波和它的谐波(5次以下)线性组合的波形。
(3) 系统具有存储波形功能。
(4) 系统输出波形的频率范围为1Hz~1MHz,重复频率可调,频率步进间隔≤100Hz,非正弦波的频率按照10次谐波来计算。
(5) 系统输出波形幅度范围0~5V。
(6) 系统具有显示输出波形的类型、重复频率和幅度的功能。
2波形发生器系统设计方案设计并制作一个波形信号发生器,能够产生正弦波、方波、三角波的波形,其中不使用DDS和一些专用的波形产生芯片。
并让系统的频率范围在1Hz~1MHZ可调节,在频率范围在1HZ~10KHz时,步进小于或等于10Hz,在频率范围在10KHz~1MHz时,步进小于或等于100Hz,并且电压在0~5V范围,能够实时的显示波形的类型、频率和幅值。
多种波形发生器实验分析报告
多种波形发生器实验分析报告目录一、实验概述 (2)1. 实验目的 (2)2. 实验设备与材料 (3)3. 实验原理 (4)二、实验内容与步骤 (5)1. 波形发生器设计与搭建 (6)1.1 设计要求与方案选择 (7)1.2 波形发生器硬件搭建 (9)1.3 波形发生器软件编程 (10)2. 多种波形合成与输出 (12)2.1 合成波形的设计与实现 (12)2.2 波形输出设置与调整 (13)2.3 实时监控与数据分析 (15)3. 实验测试与结果分析 (16)3.1 测试环境搭建与准备 (17)3.2 实验数据采集与处理 (18)3.3 结果分析与讨论 (19)三、实验结果与讨论 (20)1. 实验结果展示 (21)2. 结果分析 (22)2.1 各波形参数对比分析 (23)2.2 性能评估与优化建议 (24)3. 问题与改进措施 (25)四、实验总结与展望 (26)1. 实验成果总结 (27)2. 存在问题与不足 (28)3. 后续研究方向与展望 (29)一、实验概述本次实验旨在研究和分析多种波形发生器的性能特点,包括产生信号的频率、幅度、波形稳定性等方面。
实验中采用了多种类型的波形发生器,如正弦波、方波、三角波、梯形波等,并对其输出波形进行了详细的测量和分析。
实验过程中,我们首先对各种波形发生器的基本功能进行了测试,确保其能够正常工作。
我们对不同波形发生器产生的波形进行了对比分析,重点关注了波形的频率、幅度和波形稳定性等关键指标。
我们还对波形发生器的输出信号进行了频谱分析和噪声测试,以评估其性能表现。
通过本次实验,我们获得了丰富的实验数据和经验,为进一步优化波形发生器的设计提供了有力支持。
实验结果也为我们了解各种波形发生器在实际应用中的性能表现提供了重要参考。
1. 实验目的本次实验的主要目的是深入研究和理解多种波形发生器的原理及其在实际应用中的表现。
通过搭建实验平台,我们能够模拟和观察不同波形(如正弦波、方波、三角波等)的产生与特性,进而探究其各自的优缺点以及在不同场景下的适用性。
Keysight 33210A 10 MHz 函数 任意波形发生器说明书
1图形模式键8波形选择键2打开/关闭开关9手动触发键(仅限于扫描和猝发)3调制/扫描/猝发键10输出启用/禁用键4状态存储菜单键11旋钮5实用程序菜单键12光标键6帮助菜单键13同步连接器7菜单操作软键14输出连接器发亮键 表示活动的键和功能(例如上面的 )。
例如,按住 前面板的主要功能:调整把手。
然后将把手调整到所需位置:Keysight 33210A10 MHz 函数/任意波形发生器只需要八个简单步骤即可掌握基本操作!发亮键表示活动的键和功能,如当前活动的波形(例如,)。
大部分键都可打开(发亮)或关闭。
除非键发亮, 否则没有任何信号输出。
要从前面板选择直流电压,请按 ,然后选择使用 键可在“图形模式”(发亮)和“菜单模式”之间切换。
可显示扫描的方波。
这两个键都发亮,同时,最后按的那个键可确定显示哪个菜单。
马来西亚印刷 2014 年 10 月 E0814*33210-90428*33210-90428快速入门教程© Keysight Technologies 2008, 2014Keysight 33210A关闭开关:自检需要几秒钟时间,自检完成后,仪器的菜(发亮),否则,不会输出任何信号。
要选择波形,请按对应的键。
例如,按( )如果连接了示波器,您可以在任何时间在此示波器上查看波形。
按(前面板左侧)以选择图形模该模式将显示波形:单模式”之间切换。
在“图形模式”中,此键““相关帮助。
可显示帮助菜单。
可激活输出连接器。
DG1022双通道函数(任意波形)发生器
主要功能
➢输出各种调制波形:调幅(AM)、调频 (FM)、调相(PM)、二进制频移键控 (FSK)、线性和对数扫描(Sweep)及 脉冲串(Burst)模式;
➢测量功能:频率、周期、占空比、正/负脉 冲宽度。 测量频率范围:100mHz ~ 200MHz
➢支持即插即用 USB 存储设备,并可通过 USB 存储设备存储、读取波形配置参数及 用户自定义任意波形。l
➢5.设置相位 (1) 按 相位 软键使其反色显示。 (2) 使用数字键盘输入“45”,选择单位 “°”,设置初始相位为 45°。
使用实例二:输出方波
➢上述设置完成后,按 View 键切换为图形显 示模式,信号发生器输出如下图所示方波
十二、使用实例三:输出脉冲波
• 输出一个频率为 5kHz,幅值为 50mVPP, 偏移量为 5mVDC,脉宽为 20 μs(占空比 为 10%),延时为 200μs 的脉冲波形。
用于调制、 外调制、深度、频 扫描及脉冲 率、调制波等参数
串的设置。 对正弦波、方波、
这三个功能 锯齿波或任意波形
只适用于通
产生扫频信号
道1
产生正弦波、方波、锯齿波、脉冲波
或任意波形的脉冲串波形输出
八、数字输入的使用
• 前面板上有 两组按键, 分别是左右 方向键和旋 钮、数字键 盘
左右方向键,用于数值不同数位 的切换;旋钮,用于改变波形参 数的某一数位数值的大小,旋钮 的输入范围是 0~9,旋钮顺时针 旋一格,数值增 1。
操作步骤: ➢1.设置频率值
(1) 按 Pulse → 按 频率/周期 软键切换, 软键菜单 频率 反色显示;
(2) 使用数字键盘输入“5”,选择单位 “kHz”,设置频率为 5kHz。
多种波形发生器课程设计
多种波形发生器课程设计一、课程目标知识目标:1. 学生能够理解并掌握多种波形发生器的原理及其功能。
2. 学生能够识别并描述方波、三角波、正弦波等基本波形的特点。
3. 学生能够解释波形发生器在电子技术中的应用。
技能目标:1. 学生能够运用所学知识,设计简单的波形发生器电路图。
2. 学生能够操作示波器等实验设备,观察并分析不同波形的特点。
3. 学生能够通过小组合作,完成波形发生器的搭建和调试。
情感态度价值观目标:1. 学生能够认识到波形发生器在科技发展中的重要性,增强对电子技术的兴趣。
2. 学生在学习过程中,培养合作精神、探究精神和创新意识。
3. 学生能够遵循实验操作规范,树立安全意识,养成严谨的科学态度。
课程性质:本课程为电子技术课程的一部分,旨在帮助学生了解并掌握波形发生器的原理和应用。
学生特点:学生为高中年级,具备一定的电子基础知识和实验操作能力。
教学要求:结合学生特点和课程性质,通过理论讲解、实验演示和小组合作,使学生能够达到上述课程目标。
在教学过程中,注重培养学生的动手能力、思考能力和创新能力,将知识目标、技能目标和情感态度价值观目标分解为具体的学习成果,以便后续的教学设计和评估。
二、教学内容1. 理论知识:- 波形发生器的原理及其分类- 方波、三角波、正弦波等基本波形的数学表达式和特点- 波形发生器在电子电路中的应用实例2. 实践操作:- 示波器的使用方法- 波形发生器电路图设计- 波形发生器电路的搭建与调试3. 教学大纲:- 第一课时:波形发生器原理及分类介绍,示波器使用方法讲解- 第二课时:方波、三角波、正弦波等基本波形特点及数学表达式分析- 第三课时:波形发生器应用实例分析,电路图设计方法讲解- 第四课时:小组合作,进行波形发生器电路搭建与调试4. 教材章节:- 教材第四章:波形发生器- 教材第五章:示波器及其应用教学内容根据课程目标进行选择和组织,确保科学性和系统性。
在教学过程中,教师需按照教学大纲安排教学内容和进度,结合教材章节,使学生在掌握理论知识的同时,能够进行实践操作,提高学生的综合能力。
键盘控制的多种波形发生器要点
课程设计量化评分标准设计题目:键盘控制的多种波形发生器摘要本文以STC89C52单片机为核心设计了一个低频函数信号发生器。
信号发生器采用数字波形合成技术,通过硬件电路和软件程序相结合,可输出自定义波形,如正弦波、三角波、三角波、方波和其他任意波形。
本系统以单片机AT89S51为系统的控制核心,结合D/A转换芯片DAC0832设计一个简易低频信号源的设计,通过CH451外接键盘控制选择多种波形发生,用示波器观察输出波形。
关键词:信号源STC89C52 DAC0832 CH451一、要求1、单片机产生多种波形2、键盘控制选择波形发生(三角波、锯齿波、正弦波、方波)二、设计分析2.1 设计思路波形发生器设计思路框图如下所示。
波形的产生是通过AT89S51 执行某一波形发生程序,向D/A转换器的输入端按一定的规律发生数据,从而在D/A转换电路的输出端得到相应的电压波形。
图1 设计思路框图(1)主控模块采用ATMEL公司生产的STC89C52单片机作为系统的控制器。
51系列的单片机的使用简单,软件编程灵活。
自由度大,可用软件编程实现各种算法和逻辑控制,并且功耗低、体积小、技术成熟和成本低。
(3) 波形产生模块DAC0832芯片是8位并行、中速(建立时间1us)、CMOS工艺制造的8位单片D/A 转,DAC0832换器转换控制容易等优点,在单片机应用系统中得到了广泛的应用。
由于DAC0832输出为电流量,而波形最终需要转换为电压量来显示波形幅度,所以在DAC0832电路后接I/V转换电路,在这里采用LM324集成运放来实现电流/电压的转换。
(4) 按键控制模块可使用矩阵键盘来控制单片机,使用矩阵键盘可使电路的功能大大的提高,同时在单片机编程设计上也会相应困难,可以使用专用芯片CH451通过串口与单片机相连,只需占用单片机少量引脚,这样设计变的更合理。
在一些简单的控制上,就不用使用矩阵键盘的控制了。
2.3 设计流程图主程序设计流程图如图2所示:图2 设计流程框图子程序设计流程如图3所示:图3 子程序设计流程框图三、设计思路和模块3、1 控制芯片设计中主要采用STC89C52型单片机,它具有如下优点:(1)拥有完善的外部扩展总线,通过这些总线可方便地扩展外围单元、外围接口等。
波形发生器设计——按键控制频率
波形发生器设计——按键控制频率课程设计报告课题名称波形发生器设计——按键控制频率学院 ________ 专业 ________班级学号 __________姓名 _________指导教师__________定稿日期: 2014 年 6月20日目录一.内容摘要 (2)二.设计目的和要求 (2)2.1 设计目的 (2)2.2 设计要求 (2)三.系统方案 (2)3.1 设计思路 (2)3.2 DAC0832芯片 (3)3.2.1 DAC0832主要特性 (3)3.2.2 DAC0832引脚 (4)3.2.3 DAC0832内部框图 (5)3.3 系统框图 (6)四.系统调试 (6)4.1使用的主要仪器 (6)4.2 实验步骤 (6)4.2.1 设计方法——硬件设计 (6)4.2.2 设计方法——软件设计 (7)4.3 测试数据及波形分析 (8)4.3.1 实验步骤 (8)4.3.2 实验结果 (9)4.4 故障分析 (10)五.答辩题目及回答 (10)六.课程设计体会 (10)参考文献 (11)一.内容摘要单片机(Single chip microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O 口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。
从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
单片机(Single chip microcomputer)微型计算机简称单片机,是典型的嵌入式微控制器(Microcontroller Unit),常用英文字母的缩写MCU表示单片机,单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
基于51系列单片机的多功能波形发生器及特定波形幅值调节
基于51系列单片机的多功能波形发生器及特定波形幅值调节概述:随着科技的不断进步,波形发生器在各种测量、调试和实验中发挥着重要的作用。
本文将介绍一种基于51系列单片机的多功能波形发生器,并且可以对特定波形的幅值进行调节。
设计原理:本波形发生器采用51系列单片机作为核心控制器,并通过DAC芯片将数字信号转换为模拟信号输出。
通过LCD显示模块显示当前所选的波形类型和幅值,并通过按键来切换和调节相应的参数。
主要功能:1.多波形输出:本波形发生器可以输出多种波形,如正弦波、方波、三角波、锯齿波等。
用户可以通过按键选择所需的波形类型。
2.幅值调节:本波形发生器还可以根据用户的需求,对特定波形的幅值进行调节。
3.频率调节:用户可以通过按键来调节波形的频率,以满足不同的实验需求。
4.输出控制:用户可以通过按键选择启用或停用输出信号。
硬件设计:1.单片机控制电路:使用51系列单片机作为核心控制器,通过控制IO口的状态来实现波形选择和参数调节。
2.DAC芯片:将单片机输出的数字信号转换为模拟信号,实现波形的输出。
3.LCD显示模块:用于显示当前所选的波形类型和幅值。
4.按键模块:用于选择波形类型、调节幅值和频率等参数。
5.输出控制电路:通过控制开关,使得输出信号可以被启用或停用。
软件设计:1.系统初始化:包括设置IO口的状态、初始化LCD显示模块、初始化按键模块等。
2.波形选择:通过按键选择所需的波形类型,并将相应的参数传递给DAC芯片。
3.幅值调节:根据用户的需求,通过按键调节特定波形的幅值,并通过DAC芯片实现相应的调节。
4.频率调节:通过按键调节波形的频率,并通过定时器来实现相应的调节。
5.输出控制:根据用户选择的开关状态,控制输出信号的启用或停用。
总结:基于51系列单片机的多功能波形发生器及特定波形幅值调节是一种灵活、实用的设计方案。
它可以满足各种不同波形的输出需求,并且可以根据用户的需求对波形的幅值进行调节。
多种波形发生器课程设计按键电路
多种波形发生器课程设计按键电路一、引言波形发生器是电子工程中常用的一种电路,它可以产生多种不同的波形信号,如正弦波、方波、三角波等。
在电子设计和测试中,波形发生器通常被用来产生标准信号或者测试信号。
本文将介绍多种波形发生器的课程设计,并着重介绍按键电路的设计。
二、多种波形发生器课程设计1. 正弦波发生器正弦波发生器是最基本的波形发生器之一,它可以产生一个连续变化的正弦信号。
在实际应用中,正弦波信号通常被用来作为参考信号或者测试信号。
正弦波发生器的基本原理是利用RC振荡电路来产生一个稳定的振荡频率,并且通过运算放大器对其进行放大。
具体实现方式可以采用集成电路或者离散元件进行搭建。
2. 方波发生器方波发生器可以产生一个由高低两个电平构成的方形脉冲信号。
在数字系统中,方波信号通常被用来表示“0”和“1”两个状态。
方波发生器的基本原理是利用开关电路来控制电路的通断,从而实现高低电平的切换。
具体实现方式可以采用集成电路或者离散元件进行搭建。
3. 三角波发生器三角波发生器可以产生一个由上升和下降两个斜率构成的三角形信号。
在音频系统中,三角波信号通常被用来作为音乐合成的基础信号。
三角波发生器的基本原理是利用积分电路来对方波信号进行积分,从而得到一个连续变化的三角形信号。
具体实现方式可以采用集成电路或者离散元件进行搭建。
4. 锯齿波发生器锯齿波发生器可以产生一个由上升和下降两个斜率构成的锯齿形信号。
在测试系统中,锯齿波信号通常被用来作为测试信号。
锯齿波发生器的基本原理是利用反向比例积分电路来对方波信号进行积分和反向放大,从而得到一个连续变化的锯齿形信号。
具体实现方式可以采用集成电路或者离散元件进行搭建。
三、按键电路设计在波形发生器的实际应用中,通常需要对波形信号进行调节和控制。
按键电路可以实现对波形发生器的控制和调节,使其更加灵活和方便。
按键电路的基本原理是利用开关电路来控制电路的通断,从而实现对波形发生器的控制。
中断控制的多种波形发生器
设计使用的AT89S51 单片机构成的发生器可产生锯齿波、三角波、正弦波等多种波形,波形的周期可以用程序改变,并可根据需要选择单极性输出或双极性输出,具有线路简单、结构紧凑等优点。
在本设计的基础上,加上按钮控制和LED显示器,则可通过按钮设定所需要的波形频率,并在LED上显示频率、幅值电压,波形可用示波器显示。
二、系统设计波形的产生是通过AT89S51 执行某一波形发生程序,向D/A转换器的输入端按一定的规律发生数据,从而在D/A转换电路的输出端得到相应的电压波形。
在AT89S51的P2口接5个按扭,通过软件编程来选择各种波形、幅值电压和频率,另有3个P2口管脚接TEC6122芯片,以驱动数码管显示电压幅值和频率,每种波形对应一个按钮。
此方案的有点是电路原理比较简单,实现起来比较容易。
缺点是,采样频率由单片机内部产生故使整个系统的频率降低。
1、波形发生器技术指标1)波形:方波、正弦波、锯齿波;2)幅值电压:1V、2V、3V、4V、5V;3)频率:10HZ、20HZ、50HZ、100HZ、200HZ、500HZ、1KHZ;2、操作设计1)上电后,系统初始化,数码显示6个…-‟,等待输入设置命令。
2)按钮分别控制“幅值”、“频率”、“方波”、“正弦波”、“锯齿波”。
3)“幅值“键初始值是1V,随后再次按下依次增长1V,到达5V后在按就回到1V。
4)“频率“键初始值是10HZ,随后在按下依次为20HZ、50HZ、100HZ、200HZ、500HZ、1000HZ循环。
三、硬件设计本系统由单片机、显示接口电路,波形转换(D/A)电路和电源等四部分构成。
电路图2附在后1、单片机电路功能:形成扫描码,键值识别、键处理、参数设置;形成显示段码;产生定时中断;形成波形的数字编码,并输出到D/A接口电路和显示驱动电路。
AT89S51外接12M晶振作为时钟频率。
并采用电源复位设计。
复位电路采用上电复位,它的工作原理是,通电时,电容两端相当于短路,于是RST引脚上为高电平,然后电源通过对电容充电。
波形发生器(实验重点)
充电过程发生在恒定电流下,而放电 过程发生在恒定电压下,从而形成锯 齿波。
03
波形发生器的实验重点
波形发生器的调整与校准
调整信号源
校准频率
根据实验需求,选择合 适的信号源,如正弦波、
方波、三角波等。
确保波形发生器的输出 频率准确,以满足实验
要求。
调整幅度和偏置
根据实验需要,调整输 出信号的幅度和偏置参
在实验过程中,应注意观察和记录波 形的变化,如波形失真、噪声等。
将波形发生器的输出信号连接到示波 器上,调整示波器的垂直灵敏度和扫 描速度,以便观察和记录波形。
在操作过程中,应避免随意更改实验 参数或断开连接线,以免对实验结果 造成影响或损坏设备。
实验结果分析与总结
01
根据实验记录的数据和波形,分 析不同波形在不同频率和幅度下 的变化规律和特点。
数。
校准相位
确保输出信号的相位准 确,以满足实验要求。
波形发生器的输出信号质量分析
01
02
03
04
信号稳定性
分析输出信号的稳定性,确保 信号在长时间内保持稳定。
信号失真度
测量输出信号的失真度,以确 保信号质量符合实验要求。
信号噪声水平
评估输出信号的噪声水平,以 确保信号纯净度。
信号线性度
分析输出信号的线性度,以确 保信号在幅度变化时保持线性
方波发生器的工作原理
方波发生器利用比较器或门电 路产生方波信号,其输出信号 的占空比为50%。
当输入信号在阈值上下波动时, 比较器会输出高电平或低电平 信号,从而形成方波。
方波发生器的输出频率取决于 电路的反馈系数和阈值电压。
三角波发生器的工作原理
三角波发生器通常由RC电路和 比较器组成,其输出信号是介于
多功能波形发生器
具有稳幅功能,当负载变化时,输 出电压幅值变化不大于1% (负载 电阻50Ω);
具有AM、FM、ASK、FSK、PSK 功能
系统架构 DDS模块 NiosII处理器 外围电路 软件设计
按键
LCD
NIOS
DDS及调 制电路
FPGA
DA LPF PA 输出
DA精度:10位 输出模拟信号幅值:-2.5V~+2.5V
OUT_DAC900 6 T U 8 O 74 -+ VCC-5V VCC+5V 3 U OPA690 23 4 55 D RR16 22 11 N G FF A pp 36 88 1C1C K R18 1 5 R17 4.3K 8 0.1uFC 72 0.1uFC0.1uFC D N VCC+5V G A 67891235 11112222 C A W S N B F BYP REFinIOUTIOUT D N GA AV 04 22 INT/EXT D DAC900 N G D N GD DV DVCC 67 D22 K CCCCC L DB1DB2DB3DB4DB5DB6DB7DB8DB9DB10NNNNNC 1 U 1234567890123458 1111112 33333333333 33333333333 1235678 RRRRRRRR12R13R14R15 DB1DB2DB3DB4DB5DB6DB7DB8DB9DB10 K L C
DE2开发板
LCD
PCB制版
按键
DA
NIOS
DDS及调 制电路
LPF
FPGA
PA 输出
DDS原理图
时钟
频率控制字 相位控制字
波形数据输出
重点讲解波形发生器全知晓 形形色色的波形发生器
波形发生器全知晓形形色色的波形发生器波形发生器在生活中属于常见器件,许多朋友对于波形发生器也甚是熟悉。
尽管如此,本文还是要向大家介绍几款不同类型的波形发生器,以帮助大家拓展关于波形发生器的知识。
废话少说,往下看吧。
波形发生器在生活中属于常见器件,许多朋友对于波形发生器也甚是熟悉。
尽管如此,本文还是要向大家介绍几款不同类型的波形发生器,以帮助大家拓展关于波形发生器的知识。
废话少说,往下看吧。
一、施密特波形发生器简单的波形发生器可以使用基本的施密特触发器动作逆变器构建,例如TTL 74LS14。
到目前为止,这种方法是制作基本的非稳态波形发生器的最简单方法。
当用于产生时钟或定时信号时,非稳态多谐振荡器必须产生稳定的波形,在“高”和“低”状态之间快速切换,没有任何失真或噪声,施密特反相器就是这样做的。
我们知道施密特反相器的输出状态与其输入状态(非门原理)的输出状态相反或相反,并且它可以在不同的电压电平下改变状态,从而使其具有“滞后”。
施密特反相器使用施密特触发器动作,当输入电压信号在输入端子周围增加和减小时,该操作在上阈值电平和下阈值电平之间改变状态。
该上阈值电平“设置”输出,下阈值电平“复位”输出,其分别等于逆变器的逻辑“0”和逻辑“1”。
考虑下面的电路。
二、施密特反相器波形发生器这个简单的波形发生器电路由一个TTL 74LS14施密特反相器逻辑门组成,其一个电容器,C 连接在其输入端和地之间,(0v)和电路振荡所需的正反馈由反馈电阻提供,R 。
那么它是如何运作的?假设电容器板上的电荷低于施密特的0.8伏特下限阈值(数据表值)。
因此,这使得逆变器的输入处于逻辑“0”电平,从而产生逻辑“1”输出电平(逆变器原理)。
电阻器R 的一侧是现在连接到逻辑“1”电平(+ 5V)输出,而电阻器的另一端连接到电容器,C 处于逻辑“0”电平(0.8v 或更低) 。
电容器现在开始通过电阻器以正方向充电,其速率由组合的RC 时间常数决定。
多功能波形发生器讲解
考试序列号____通识教育课程论文课程设计名称多功能波形发生器课程名称 EDA技术课程设计学院物理学院专业班级学号姓名20 15 年1月17日概述函数信号发生器是一种能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波等波形的电路。
函数信号发生器在电路实验和设备检测中具有十分广泛的用途。
现在我们通过对函数信号发生器的原理以及构成设计一个能变换出三角波、正弦波、方波的简易发生器。
本设计采用FPGA来设计制作多功能信号发生器。
在实验室用EDA完成设计并进行引脚锁定下载连接用SignalTap II Logic Analyer调试。
一、设计原理本设计由信号产生,信号选择,信号控制输出三大模块组合而成。
其中信号产生模块有:三角波模块、方波模块、正弦波模块。
本设计采用K0~K2这三个按键为信号选择开关,选择信号产生模块输出的信号。
其控制模块(SIG_CONTROL)是由数据选择器实现对以上三种信号的选择,并产生相应波形。
其结构框图如下:图1.信号发生器结构框图二、设计原理概述(1) 函数信号发生器的结构:三角波信号、方波信号、正弦信号的发生器各一个,数据选择器。
(2) VHDL 顶层设计。
(3)SignalTap II Logic Analyer的仿真分析。
(4) 顶层文件在FPGA中实现,通过外加按键控制波形输出,三个波形数据由三个信号发生模块(delta—三角波、square—方波、sin—正弦波)提供,信号发生器时钟由实验箱提供。
三、设计步骤(1)三角波、方波和正弦波源文件的编写并把VHDL程序转换成原理图。
(2) 数据选择器的源文件编写,并把VHDL程序转换成原理图。
(3) 用原理图完成函数发生器的设计。
(4) 编译完成后,建立 SingnalTap‖的工程文件。
(5) 锁定引脚,下载连接。
(6) 运行程序并观察结果。
(7)记录数据完成报告。
四、软件设计流程及源程序代码4.1 软件设计流程:1.设计原理图。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计量化评分标准指指导导老老师师评评语语::设计题目:键盘控制的多种波形发生器摘要本文以STC89C52单片机为核心设计了一个低频函数信号发生器。
信号发生器采用数字波形合成技术,通过硬件电路和软件程序相结合,可输出自定义波形,如正弦波、三角波、三角波、方波及其他任意波形。
本系统以单片机AT89S51为系统的控制核心,结合D/A转换芯片DAC0832设计一个简易低频信号源的设计,通过CH451外接键盘控制选择多种波形发生,用示波器观察输出波形。
关键词:信号源STC89C52 DAC0832 CH451一、要求1、单片机产生多种波形2、键盘控制选择波形发生(三角波、锯齿波、正弦波、方波)二、设计分析2.1 设计思路波形发生器设计思路框图如下所示。
波形的产生是通过AT89S51 执行某一波形发生程序,向D/A转换器的输入端按一定的规律发生数据,从而在D/A转换电路的输出端得到相应的电压波形。
图1 设计思路框图(1)主控模块采用ATMEL公司生产的STC89C52单片机作为系统的控制器。
51系列的单片机的使用简单,软件编程灵活。
自由度大,可用软件编程实现各种算法和逻辑控制,并且功耗低、体积小、技术成熟和成本低。
(3) 波形产生模块DAC0832芯片是8位并行、中速(建立时间1us)、CMOS工艺制造的8位单片D/A 转,DAC0832换器转换控制容易等优点,在单片机应用系统中得到了广泛的应用。
由于DAC0832输出为电流量,而波形最终需要转换为电压量来显示波形幅度,所以在DAC0832电路后接I/V转换电路,在这里采用LM324集成运放来实现电流/电压的转换。
(4) 按键控制模块可使用矩阵键盘来控制单片机,使用矩阵键盘可使电路的功能大大的提高,同时在单片机编程设计上也会相应困难,可以使用专用芯片CH451通过串口与单片机相连,只需占用单片机少量引脚,这样设计变的更合理。
在一些简单的控制上,就不用使用矩阵键盘的控制了。
2.3 设计流程图主程序设计流程图如图2所示:图2 设计流程框图子程序设计流程如图3所示:图3 子程序设计流程框图三、设计思路及模块3、1 控制芯片设计中主要采用STC89C52型单片机,它具有如下优点:(1)拥有完善的外部扩展总线,通过这些总线可方便地扩展外围单元、外围接口等。
(2)该单片机内部拥有4K字节的FLASH ROM程序存储器空间和256字节的RAM数据存储空间,完全可以满足程序的要求。
由于该芯片可电擦写,故可重复使用。
如果更改程序内容,可将芯片拿下重新烧写。
(3)该单片机与工业标准的MCS-51型机的指令集和输出引脚兼容。
中断系统是使处理器具有对外界异步事件的处理能力而设置的。
当中央处理器CPU正在处理某件事的时候外界发生了紧急事件,要求CPU暂停当前的工作,转而去处理这个紧急事件。
时钟电路。
由于频率较大时,三角波、正弦波、方波等波中每一点延时时间为几微秒,故延时时间还要加上指令时间即可得到指定频率的波形,该电路用11.0592MHz晶振。
图1.1 STC89C52的内部结构图3、2 数/模转换电路由于单片机产生的是数字信号,要想得到所需要的波形,就要把数字信号转换成模拟信号,所以该文选用价格低廉、接口简单、转换控制容易并具有8位分辨率的数模转换器DAC0832。
DAC0832主要由8位输入寄存器、8位DAC寄存器、8位D/A转换器以及输入控制电路四部分组成。
但实际上,DAC0832输出的电量也不是真正能连续可调,而是以其绝对分辨率为单位增减,是准模拟量的具有BCD译码或不译码功能,可实现数据的左移、右移、左循环、右循环、各数字独立闪烁等控制功能。
CH451内置大电流驱动级,段电流不小于30mA,字电流不小于160mA,并有16级亮度控制功能;在键盘控制方面,该器件内置64键键盘控制器,可实现8×8矩阵键盘扫描,并内置去抖动电路,可提供按键中断与按键释放标志位等功能;在外部接口方面,CH451可选择简洁的1线串行接口或高速4线串行接口,且内置上电复位,可提供高电平有效复位和低电平有效复位两种输出,同时内置看门狗电路Watch-Dog。
CH451提供有28引脚的DIP28与SOP28封装以及DIP24封装形式,28脚与24脚在功能上稍有差别,24的引脚定义如表表3、1所列。
表3、1 CH451的DIP24封装形式的引脚定义表3、2 CH451外接矩阵键盘的按键代码表3、4调试说明STC89C52试验箱板图以及区域划分如图3、1所示。
主要由复位、晶振电路、蜂鸣器、开关、16个发光二极管LED 、脉冲发生电路、8155扩展(包括七段LED 显示和4*4键盘等)、A/D 扩展、D/A 扩展、温度传感器、日时钟、16*16的LED 点阵、CH451键盘和七段LED 扩展、字符LCD 、点阵LCD 、RS232/485串口等组成,用户可以单独使用每个部分,也可根据实际需要进行不同的组合,以实现功能复杂的系统,本次课程设计还要外加示波器观察波形:图3、1 STC89C52实验箱的俯视图3、5 设计结果及错误分析3、5、1 可以通过键盘控制选择三角波、方波、锯齿波、矩形波的输出,用示波器观察。
3、5、2 程序运行没错,但是下载之后没效果,检查之后发现是实验箱上的入口地址没定义。
3、5、3 键盘控制不能实现,仔细检查之后发现键盘编码没有对应相应按键,修改之后可以实现。
3、5、4 输出波形有点失真,三角波顶部出现一小部分平的失真,检查之后是送入数组有问题,通过送入的数据连续递增和连续递减之后数组有问题,不能用一个数组通过递增递减来实现,之后生成了其他几种波形数组送入DA0832,能产生连续波形。
电源开关 电源指示灯 复位开关蜂鸣器RS232串口 485串口 16*16LED 点阵时钟CH451键盘及LED 控制区按键区A/D 转换区D/A 转换区8155扩展时钟源区发光二极管区点阵、字符LCD 区 STC89c52四、总结基于单片机的信号发生器设计,这个信号发生器的设计中涉及到一个典型的控制过程。
通过单片机控制一个模数转换器DAC0832产生所需要的电流,然后使用运算放大器LM741可以将其电流输出线性地转换成电压输出。
通过程序的控制,可以产生一系列有规律的波形。
这样一个信号发生装置在控制领域有相当广泛的应用范围。
最终做出来的信号发生器满足了题目中的所有要求:1.产生四种波形。
正弦波、三角波、矩形波、锯齿波。
2.幅度可调,峰峰值在0——5V之间变化。
信号发生器可以生成更多的波形,只需要再加些波形表即可。
在这里得感谢学校为我们提供个这样一个实践的机会,当然还得感谢实验室指导老师们的细心指导。
附录一原理图1、1 单片机最小系统原理图1、4 实验箱总体原理图实物图附录二程序清单//**************头文件包含模块**************** #include <reg51.h> #include<intrins.h> #include<absacc.h>#define uchar unsigned char #define uint unsigned int//*************CH451键盘头文件定义模块******* #define ch451_rest 0x0201 //复位#define ch451_leftmov 0x0300 //设置移位方式-左移 #define ch451_leftcyc 0x0301 //设置移位方式-左循 #define ch451_rightmov 0x0302 //设置移位方式-右移 #define ch451_rightcyc 0x0303 //设置移位方式-右循#define ch451_dispkeydog_off 0x0400 //关显示、键盘、看门狗 #define ch451_disp_on 0x0401 //开显示#define ch451_dispkey_on 0x0403 //开显示、键盘#define ch451_dispkey_dog 0x0407 //开显示、键盘、看门狗功能电源开关 电源指示灯 复位开关蜂鸣器RS232串口 485串口 16*16LED 点阵时钟CH451键盘及LED 控制区按键区A/D 转换区D/A 转换区8155扩展时钟源区发光二极管区点阵、字符LCD 区 STC89c52#define ch451_dispmode_16 0x0500 //设置默认显示方式:16进制#define ch451_dispmode_bcd 0x0580 //设置BCD译码方式#define ch451_twinkle 0x0600//设置闪烁控制、低8位分别对应8个LCD,高电平闪烁,低电平不闪烁#define ch451_dig0 0x0800 // 数码管0显示#define ch451_dig1 0x0900 // 数码管1显示#define ch451_dig2 0x0a00 // 数码管2显示#define ch451_dig3 0x0b00 // 数码管3显示#define ch451_dig4 0x0c00 // 数码管4显示#define ch451_dig5 0x0d00 // 数码管5显示#define ch451_dig6 0x0e00 // 数码管6显示#define ch451_dig7 0x0f00 // 数码管7显示#define nop 0x000 //空操作sbit ch451_dclk=P1^0; // 串行数据上升延激活sbit ch451_din=P1^1; //串行数据输出、接451的数据输入sbit ch451_load=P1^2; //串行数据加载、上升延激活sbit ch451_dout=P1^3; //串行数据输入、接451的数据输出unsigned char ch451_key;//存放键盘中断读取的键值unsigned char Disp_buff[]={0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10};//全部灭void ch451_init(void);void ch451_write(unsigned int data0); //写命令和数据void ch451_Enable(void); //使能451void ch451_Dispkey_enable(void); //显示451显示和按键功能void Delay_ms(unsigned char n);unsigned char ch451_key_read(void);void ch451_led_write(unsigned char *p);uchar tabArry[4]; //保存显示数据char flag=1; //按键标志,当flag=1时表示没有按下,当flag=0时表示有按键按下int keycount=0; //按键计数uchar waveth,wavetl; //用于对定时器付值uint frecount=100; //频率计数uint mbjs; //码表计数,共采32个点sbit W=P3^6;//*************程序模块**********************//=============正弦波数据====================uchar code sin_tab[256]={0x80, 0x83, 0x86, 0x89, 0x8c, 0x8f, 0x92, 0x95, 0x98, 0x9c, 0x9f, 0xa2, 0xa5, 0xa8, 0xab, 0xae,0xb0, 0xb3, 0xb6, 0xb9, 0xbc, 0xbf, 0xc1, 0xc4, 0xc7, 0xc9, 0xcc, 0xce, 0xd1, 0xd3, 0xd5, 0xd8,0xda, 0xdc, 0xde, 0xe0, 0xe2, 0xe4, 0xe6, 0xe8, 0xea, 0xec, 0xed, 0xef, 0xf0, 0xf2, 0xf3, 0xf4,0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfc, 0xfd, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe, 0xfd, 0xfc, 0xfc, 0xfb, 0xfa, 0xf9, 0xf8, 0xf7,0xf6, 0xf5, 0xf3, 0xf2, 0xf0, 0xef, 0xed, 0xec, 0xea, 0xe8, 0xe6, 0xe4, 0xe3, 0xe1, 0xde, 0xdc,0xda, 0xd8, 0xd6, 0xd3, 0xd1, 0xce, 0xcc, 0xc9, 0xc7, 0xc4, 0xc1, 0xbf, 0xbc, 0xb9, 0xb6, 0xb4,0xb1, 0xae, 0xab, 0xa8, 0xa5, 0xa2, 0x9f, 0x9c, 0x99, 0x96, 0x92, 0x8f, 0x8c, 0x89, 0x86, 0x83,0x80, 0x7d, 0x79, 0x76, 0x73, 0x70, 0x6d, 0x6a, 0x67, 0x64, 0x61, 0x5e, 0x5b, 0x58, 0x55, 0x52,0x4f, 0x4c, 0x49, 0x46, 0x43, 0x41, 0x3e, 0x3b, 0x39, 0x36, 0x33, 0x31, 0x2e, 0x2c, 0x2a, 0x27,0x25, 0x23, 0x21, 0x1f, 0x1d, 0x1b, 0x19, 0x17, 0x15, 0x14, 0x12, 0x10, 0xf, 0xd, 0xc, 0xb ,0x9, 0x8, 0x7, 0x6, 0x5, 0x4, 0x3, 0x3, 0x2, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0 ,0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0x1, 0x2, 0x3, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8 ,0x9, 0xa, 0xc, 0xd, 0xe, 0x10, 0x12, 0x13, 0x15, 0x17, 0x18, 0x1a, 0x1c, 0x1e, 0x20, 0x23,0x25, 0x27, 0x29, 0x2c, 0x2e, 0x30, 0x33, 0x35, 0x38, 0x3b, 0x3d, 0x40, 0x43, 0x46, 0x48, 0x4b,0x4e, 0x51, 0x54, 0x57, 0x5a, 0x5d, 0x60, 0x63, 0x66, 0x69, 0x6c, 0x6f, 0x73, 0x76, 0x79, 0x7c, };//===========三角波信号数据表================uchar code thr_tab[32]={0x00,0x0f,0x1f,0x2f,0x3f,0x4f,0x5f,0x6f,0x7f,0x8f,0x9f,0xaf,0xbf,0xcf,0xdf,0xef,0xff,0xef,0xdf,0xcf,0xbf,0xaf,0x9f,0x8f,0x7f,0x6f,0x5f,0x4f,0x3f,0x2f,0x1f,0x0f };//===========锯齿波信号数据表================uchar code jc_tab[33]={0x00,0x08,0x0f,0x18,0x1f,0x28,0x2f,0x38,0x3f,0x48,0x4f,0x58,0x5f,0x68,0x6f,0x78 ,0x7f,0x88,0x8f,0x98,0x9f,0xa8,0xaf,0xb8,0xbf,0xc8,0xcf,0xd8,0xdf,0xe8,0xef,0xf8, 0xff};//**********毫秒延时程序********************void delayms(int ms){uchar i;while(ms--){for(i=250;i>0;i--);}}//********定时器函数*********************void Timerinit(){TMOD=0x01; //定时器0方式1//定时器初值计算公式:X=65536-(T/T0)=65536-(f0/f/32)TH0=waveth=(65536-57603/frecount)/256; //定时器初值22.1184MHzTL0=wavetl=(65536-57603/frecount)%256;EA=1; //开总中断ET0=1; //开定时器0中断TR0=1; //定时器0开始计数}//**********主函数************************void main(){unsigned char i;Timerinit(); //定时器初始化W=0;while(1){if(ch451_dout) //如果没有按键、out有效是一短暂脉冲{ch451_led_write(Disp_buff);} // 如果没有按键else{ch451_key=ch451_key_read(); //读取按键代码for(i=7;i>0;i--){Disp_buff[i]=Disp_buff[i-1];}Disp_buff[0]=ch451_key;ch451_key=ch451_key_read(); //读取按键代码//===========波形选择==================switch (ch451_key){case 71: P1 = jc_tab[mbjs]; //输出锯齿波mbjs++;if(mbjs>=32){mbjs=0;}case 70: P1 = sin_tab[mbjs]; //输出正弦波mbjs+=8; //256点,每隔8点输出一个数据if(mbjs>=256){mbjs=0;}case 69: P1 = thr_tab[mbjs]; //输出三角波mbjs++;if(mbjs>=32){mbjs=0;}case 68: //输出方波mbjs++;if(mbjs>=32){mbjs=0;}else if(mbjs<16)P1=0xff;else P1=0x00;}}}}//*************CH451键盘控制模块函数***************** void ch451_init(void){ch451_write(ch451_rest);ch451_Enable();ch451_Dispkey_enable();ch451_dout=1;}//*******输出命令程序*********void ch451_write(unsigned int command){unsigned char i;ch451_load=0; //命令开始for(i=0;i<12;i++) //送入12为数据、低位在前{ch451_din=command&1;ch451_dclk=0;command>>=1;ch451_dclk=1; //上升沿有效}ch451_load=1;}//****通知451使能4线串口接口*********void ch451_Enable(void){ch451_din=0;ch451_din=0;}//*****开BCD译码方式显示,键盘驱动使能********* void ch451_Dispkey_enable(void){ch451_write(ch451_dispkey_on);ch451_write(ch451_dispmode_bcd);}//*******n毫秒延时函数******void Delay_ms(unsigned char n){unsigned char i;while(n--){for(i=0;i<125;i--);}}//*****输入命令子程序、MCU从451读一字节******** unsigned char ch451_key_read(void){unsigned char i;unsigned char command, keycode;//定义命令字、数据存储器command=0x70; //输入度451命令字ch451_load=0;for(i=0;i<4;i++){ch451_din=command&1; //输入最低位ch451_dclk=0;command>>=1; //右移一位ch451_dclk=1 ; //产生时钟上升沿通知451处理命令数据}ch451_load=1; //产生加载上升沿通知451处理命令数据keycode=0; //清楚keycodefor(i=0;i<7;i++){keycode<<=1; //数据移入keycode、高位在前、低位在后ch451_dclk=1;keycode|=ch451_dout; //从高位到低位读入451数据ch451_dclk=0; //产生时钟下降沿通知451输出下一位}return (keycode);}//*********451显示LED*****void ch451_led_write(unsigned char *p){unsigned char i;for(i=0;i<8;i++)//循环往451写数据、驱动八位数码管显示数据{ch451_write((ch451_dig7-i*0x100)|p[i]);Delay_ms(1); //显示延时}}。