第一篇:电压采样电路设计总结报告
电压采样电路设计总结报告
专业班级: 电气工程及其自动化
实习日期:2013年7月22日---7月26日
2013年7月26日
目录
一、设计要求及目的:................................................2
二、所用元件:......................................................2
三、设计思路:......................................................2
1、电源部分电路.................................................3
2、电流-电压转化电路............................................4
3、电压抬升电路:...............................................5
4、二阶滤波电路.................................................6
5、方波转换电路.................................................7
四、课程设计中出现的问题及解决方案..................................9
五、设计总结........................................................9
一、设计要求及目的:
1、设计目标:设计一个电压采样电路,对220v交流信号进行采样,并利用运放对其进行处理,使其成为数模转换器(A/D)能够处理的信号。
2、基本要求:根据元件列表设计采样电路及其工作电源回路,将220v交流输入信号变为0-3v信号,并对其进行二阶有源滤波,滤除高频干扰信号,滤波后的信号平滑无畸变。
3、扩展:设计电路,将交流信号变为方波,过零点处干净无毛刺信号。
4、设计目的:
1)加强自主性学习、研究性学习,加强团队合作,提高创新意识; 2)通过该设计学会并掌握常用电子元器件的选择和使用方法; 3)结合所学的电子电路的理论知识完成电压采样课程设计。
二、所用元件:
变压器
1个、1N4007单向二极管
5个、470uF电解电容
4个 芯片7815和7915、紧密电流型电压互感器
1个、LM324芯片 10K电位器
1个、201pF电容
2个
电阻:110KΩ1个、10KΩ5个、1Ω1个、1KΩ2个、470Ω1个、200Ω1个
三、设计思路:
电压采样电路基础模块的设计思路首先是220v交流电源经过电流型电压互感器使强电转换为弱电,再通过电流/电压变换电路使其输出电压为-1.5v~+1.5v,接着通过一个反相加法运算电路使其输出电压抬升为0~3v,最后经过一个二阶有源低通滤波电路对其进行滤波,滤除高频干扰信号,滤波后的信号平滑无畸变,最后用一迟滞比较器将正弦波变成方波信号。
总电路图为:
1、电源部分电路
电路图为:
分析:通过电路图中三个万用表的示数可知,变压器输出交流电的有效值为15.078V,输出的直流电压为+15.517V和-15.633V,符合要求。
此电压用于给给芯片LM324提供直流电源,以及提升电压用。
1)电源变压器:是降压变压器,它将电网220V交流电压变换成符合需要的交流电压,并送给整流电路,变压器的变比由变压器的副边电压确定。2)整流电路:利用4个单向导电元件,把50Hz的正弦交流电变换成脉动的直流电。
3)滤波电路:由于经过整流的直流脉冲电压还含有较大的纹波,因此需要设计滤波电路将整流电路输出电压中的交流成分大部分加以滤除,从而得到比较平滑的直流电压,用两个470uF的电解电容。
4)稳压电路:稳压电路的功能是使输出的直流电压稳定,不随交流电网电压、负载的变化而变化,用7815和7915芯片。
2、电流-电压转化电路
思路:220V(有效值)交流电源经过110K欧姆的电阻后电流变为2mA(有效值),经过2mA/2mA的精密电流型的电压互感器后电流仍未2mA,根据运放的虚短虚断的原理可知,运放输出的电压峰峰值为-1.5V到+1.5V。
计算过程为:1.8mA*580Ω*√2=1.47V(由于给的功率电阻是121K的,所以电流为1.8mA)电路图为:
输出波形图为:
3、电压抬升电路:
思路:利用反向加法器的原理将正负1.5V的电压提升到0-3V,所用提升电压为直流电源提供的-15.633V电压,通过参数选择可以实现此模块。
电路图为:
计算公式为:U02=-[U01*1KΩ/1KΩ+(-15)*1KΩ/10KΩ],U02为0-3V的正弦波。其中470欧姆的电阻是平衡电阻,其计算过程为1K//1K//10K,三个电阻并联的阻值。
输出波形为:
经测试后在示波器上得到的波形与仿真波形相似,但稍有毛刺。
4、二阶滤波电路
思路:利用所学的二阶低通滤波电路可以设计出符合要求的滤波电路
电路图为:
根据其要求对0-3V电压进行二阶有源滤波,滤除高频干扰信号,滤波后的信号平滑无畸变。
根据二阶低通有源滤波的公式得:
f0=1/(2*3.14*R*C),我们选择电阻值为1MΩ,电容值为201pF,故 f0=1/(2*3.14*1*10*201*10)=792.2Hz,近似为800Hz,符合要求。由“虚短”和“虚断”的特点可得方程:
U+=U-=U03*R8/(R7+R8)=U03/(1+R8/R7)=U03/Aup,应使U+=U-=U03 得Aup =1,则取R7=2MΩ,R8=1Ω,目的是使滤波的低通增益为1,不会改变之前0—3v电压的波形。经滤波后的U03的波形为0-3V正弦波。
输出波形图为: 6
2从示波器上测试的结果稍微有点相位差,两个波形并不是完全的重合,但是误差不大,分析原因为电阻有一定的误差。
5、方波转换电路
思路:利用迟滞比较器,不用过零比较器的原因是,过零比较器是输入信号与零点相比较,但正弦波的零点会有抖动,所以方波会出现脉冲,用迟滞比较器可以将零点越过去。然后后面加一单向导通的二极管,只留下方波的上半部分。
电路图为:
分析过程为:
R11之前接的是第一个运放的输出U01即峰值1.5V的正弦波,设计要求中,需要将输出波形的毛刺去除,所以所用电路为迟滞比较器。为运放的正输入端电压近似为0,有公式得:
U+=U04*R14/(R14+R11),则应使R14远小于R11。经多次的仿真调试,我们选择R14=150Ω,R11=10KΩ.波形图为:
所焊的电路在示波器上检测的波形虽有一定的相位差,但总体上符合要求,分析产生相移的原因为,用的是迟滞比较器,不可能严格过零点只能尽量去接近零点。
四、课程设计中出现的问题及解决方案
1、设计电路首先在电脑上用软件仿真,以此来选取参数,不同的仿真软件可能有不同的结果,运放也会出现问题,不过通过不断的更改参数,不断的理论计算在仿真,最终出现了各部分波形图。
2、这次所用的芯片是LM324,是四个运放集合在一个芯片上,所以布局很重要,通过组内讨论,将绕线最少,电路最简单为目的。
3、刚开始输出的方波和正弦波有一定的相位差,分析其原因是电阻参数选取的不合适,运放是用作电压比较器用,所以输入端电压越接近零越好。通过改变参数,最终在老师那检测的结果基本符合要求。
五、设计总结
1、通过近几天的实习,我们学习了采样电路设计的相关知识,遇到问题互相讨论最终解决;
2、实践出真知,无论课本上讲的内容如何,只有通过实践才能获得真正的真 理,所以在以后的学习生活中要理论联系实际,多动手动脑;
3、团队的力量大于个人,我们三人分工明确并将遇到的各种问题讨论后一一解决,所以只有团队合作,才能把事情做好;
4、这次实习进一步的提高了我们的焊接与整体布局能力,对于电路的焊接在技术上更加熟练,在布局上更加美观,让学长检查电路时,学长建议能走锡的话尽量少走线;
5、我们对于Multism软件有了更深一层次的掌握与运用,在今后的学习中会有很大的帮助。
下面是我们的电路实物图和布局图
第二篇:基于DSP的交流采样电路设计
西安科技大学
综 合 实 验 报 告
学 院: 专业名称: 设计题目: DSP组 员:姓 名:学 号: 0706070111 指导教师: 电气与控制工程学院 测控技术与仪器
交流采集电路设计
侯春慧 张娜 张珍珍 张小红 张珍珍 高 瑜
目录 1.实验目的 2.实验内容 3.实验原理 4.实验步骤 5.实验原理图 6.实验程序 7.实验结果 8.问题解决 9.心得体会
基于DSP的交流采样电路设计
一、实验目的
1、通过此次试验,让同学们能够好好复习以前学过的知识,主要是如何采集交流电量并处理得到我们需要的实测数据,一边与后面的分析预测等内容;
2、通过此次试验,能够让同学们更加熟悉继电保护的原理以及实际中的应用方法和实现手段,更便于大家理解;
3、通过此次试验,让同学们对于DSP了解更加深刻,不知是要在原理上懂得,更要学会应用它,能够利用DSP进行一些简单的编程;
4、通过此次试验,培养大家的实际动手能力以及小组合作能力,为今后的职业发展做一个小小的实践;
二、实验内容
通过电网采集电压信号,根据电压信号变化,控制灯泡的跳闸控制。
三、实验原理
交流采样技术是按一定规律对被测信号的瞬时值进行采样,再按一定算法进行数值处理,从而获得被测量的测量方法。该方法的理论基础是采样定理,即要求采样频率为被测信号频谱中最高频率的2倍以上,这就要求硬件处理电路能提供高的采样速度和数据处理速度。目前,高速单片机、DSP及高速A/D转换器的大量涌现,为交流采样技术提供了强有力的硬件支持。交流采样法包括同步采样法、准同步采样法、非同步采样法等几种。
此次试验是通过互感器来对电压数据进行采集,再进过偏置等的处理,处理到数值范围为0~3V,再输入到DSP通过其内部所含的DA装换,将采样数据进行处理、数值分析、比较,如果处理后的数值大于给定的整定值则通过对GPIO端口的控制实现输出跳闸信号,作用于继电器。
四、实验步骤
1、按要求设计交流采集电路原理图;
2、根据原理图焊接板子;
3、验证硬件的采样输出波形是否满足0~3V要求,跳闸回路是否准确;
4、经老师检查认可后,通电进行系统调试。
5、能够完全准确的模拟继电保护。
五、实验原理图
1、交流采样电路(主回路)
2、采样数据偏置处理
3、DSP接线插座图
六、实验程序
#include “DSP281x_Device.h”
// DSP281x Headerfile Include File #include “DSP281x_Examples.h”
// DSP281x Examples Include File
// Prototype statements for functions found within this file.interrupt void adc_isr(void);
// Global variables used in this example: Uint16 LoopCount;Uint16 ConversionCount;Uint16 Voltage1[24];Uint16 Voltage2[24];
main(){ InitSysCtrl();//初始化cpu
InitGpio();//初始化Gpio
EALLOW;
GpioMuxRegs.GPFMUX.all=0x0000;
GpioMuxRegs.GPFDIR.bit.GPIOF0=1;
EDIS;
GpioDataRegs.GPFDAT.bit.GPIOF0=1;
DINT;//关中断
InitPieCtrl();//初始化pie寄存器
IER = 0x0000;//禁止所有的中断
IFR = 0x0000;
InitPieVectTable();//初始化pie中断向量表
// Interrupts that are used in this example are re-mapped to // ISR functions found within this file.EALLOW;// This is needed to write to EALLOW protected register
PieVectTable.ADCINT = &adc_isr;
EDIS;
// This is needed to disable write to EALLOW protected registers
AdcRegs.ADCTRL1.bit.RESET = 1;asm(“ RPT #10 || NOP”);
// Reset the ADC module
// Must wait 12-cycles(worst-case)for ADC reset to take effect
AdcRegs.ADCTRL3.all = 0x00C8;
AdcRegs.ADCTRL3.bit.ADCBGRFDN = 0x3;//
// first power-up ref and bandgap circuits
Power up bandgap/reference
circuitry
AdcRegs.ADCTRL3.bit.ADCPWDN = 1;
// Enable ADCINT in PIE
PieCtrlRegs.PIEIER1.bit.INTx6 = 1;
IER |= M_INT1;// Enable CPU Interrupt 1
EINT;
// Enable Global interrupt INTM
LoopCount = 0;
// Configure ADC
AdcRegs.ADCMAXCONV.all = 0x0001;
// Setup 2 conv's on SEQ1
AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0;// Setup ADCINA3 as 1st SEQ1 conv.AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x1;// Setup ADCINA2 as 2nd SEQ1 conv.AdcRegs.ADCTRL2.bit.EVA_SOC_SEQ1 = 1;// Enable EVASOC to start SEQ1
AdcRegs.ADCTRL2.bit.INT_ENA_SEQ1 = 1;// Enable SEQ1 interrupt(every EOS)
// Configure EVA // Assumes EVA Clock is already enabled in InitSysCtrl();
EvaRegs.T1CMPR = 0xF2ED;
// Setup T1 compare value
EvaRegs.T1PR = 0x10;
// Setup period register
EvaRegs.GPTCONA.bit.T1TOADC =0x11;
// Enable EVASOC in EVA
EvaRegs.T1CON.all = 0x1042;
// Enable timer 1 compare(upcount mode)
ConversionCount = 0;
GpioDataRegs.GPFDAT.bit.GPIOF0=0;
// Power up rest of ADC
// Wait for ADC interrupt
while(1)
{
LoopCount++;
} }
interrupt void adc_isr(void){
Voltage1[ConversionCount] = AdcRegs.ADCRESULT0 >>4;
Voltage2[ConversionCount] = AdcRegs.ADCRESULT1 >>4;
if(Voltage1[1]>3200)
{GpioDataRegs.GPFDAT.bit.GPIOF0=0;
}
// If 40 conversions have been logged, start over
if(ConversionCount == 23)
{
ConversionCount = 0;
}
else ConversionCount++;
// Reinitialize for next ADC sequence
AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1;
// Reset SEQ1
AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;
// Clear INT SEQ1 bit
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
// Acknowledge interrupt to PIE
return;}
七、实验结果
在硬件检测中,用示波器测的在未加交流电时输出直流电压1.52V,加入最大电压250V后,测得最大输出电压2.72V,最小电压1.2V的正弦交流电。满足0~3V的要求。
八、问题解决
问题1:试验线路板焊制完成后,示波器采集无信号。
解决:经过检测发现,该电路板变压器漏焊输出端口的接地线,将此点接地即可。问题2:在放大器8接口出检测,示波器放大信号微弱。
解决:经检查发现,放大器9接口未与电阻相连,接上检测正确。问题3:用示波器检测硬件时,发现输出波形微弱。解决:经检测发现,未接+5V电源。
问题4:实验程序编写过程基本上是修改自带程序,可是看不懂DSP自带的源程序。解决:通过老师的讲解,再加上大家的不断思考,终于看懂了自带程序,并且理清了编程的大概思路。即加一条比较语句和一条跳闸指令。
九、心得体会
测控0701 张珍珍 0706070111 DSP交流采集电路设计,虽然是这学期最后一个实习,而且去年学过这门课程,做过两次实验,但是当时了解的只是皮毛,并没有深入掌握。但是我知道不管怎么样,这不仅仅是一次学习,更是对我们的一次锻炼,所以并没有因此而放松心态,而在早在实习前我就积极收集资料,了解到:DSP芯片也称数字信号处理器,是一种特别适合于进行数字信号处理运算的微处理器具,其主机应用是实时快速地实现各种数字信号处理算法。根据数字信号处理的要求,DSP芯片的特点:数字信号处理相对于模拟信号处理有很大的优越性,表现在精度高、灵活性大、可靠性好、易于大规模集成等方面。在开始实习的过程中,首先是进行硬件电路图的设计及焊接。紧接着就是硬件、软件调试,最后就是系统联调。可喜的是,我们小组竟是在进行板子焊接到硬件调试一次通过,我就感觉调试硬件没什么特别难 的。可是后来的调试软件出现了一些问题,所幸的是,最后在老师的指导和同学的帮助下,不仅仅节省了时间,还他们那里得到一些经验。通过这次实验,我们熟悉了CCS开发环境以及设计运行调试过程,认识到主回路、AD转换模块的各个工作原理以及两者之间的关系,学会对模块的初始化怎么定义和编写的流程,使我对DSP产生了浓厚的兴趣,激发了我学习DSP的积极性,从这次实验结果上来说,清晰的结果使我对书本上的知识应用到了实验中,很满足。该实验通过电网采集电压信号,根据电压信号变化,控制灯泡的跳闸控制。此外,我还懂得如何更好的完成任务的能力,树立坚强的工作信念。渐渐的找回自信,现在想想课设的每一天都很累。当领悟到这次实习的重要性,我便下定决心:一定要亲自动手操作,不懂就问。虽然自己亲手操作,克服了许多困难,但难免会出现疏忽和漏洞。从始至终,我是抱着这样的心里完成:完美可望不可求,不再同一个地方跌倒两次才是最重要的。最让我高兴的是:我懂得了沟通同学与同学之间的关系是值得我们去深思的,依赖与被依赖对我的触及很大:有人很有责任感,他们会主动承担责任,并付出努力,不断思考所遇到的问题,并实施解决办法。但是这其中也有不少人不以为然,实施“投机取巧”策略,在这里就不多说了。当然这些老师自然是看在眼里,知在心里。相信付出的努力不会白流„„其实生活中许多问题处理的方法不同,其结果也不同,并不是说过去他有多么强,现在就有多么厉害,只要心态正确,目标明确,总会有解决之道。
相信对今后的考核学习和工作会有重大影响,大大提高了我的实际动手能力,使我充分体会到了在创新过程中的艰难与成功的喜悦。口角的斗争是难免的。关键在于怎么处理分歧,怎样消除误会,互相理解,增进了解,并最终谅解„„关键在于心态,毕竟我们每个人的出发点是好的,这次课程设计不仅仅是学习知识的过程,更是不断学习老师同学优点的过程。比如说:张小红同学在遇到问题会仔细斟酌考虑,而我虽然是个女孩子,却自觉不如他有耐心;老师虽身为老师,我却经常看到老师手拿资料书,不断的继续学习,以求完善——老师说的好,别人取得好成绩,并非巧合或侥幸,那是他们付出劳动成果的彰显。在生活和学习上以求完美,培养优秀品质,指引人意气风发。更好的走自己的每一步,在今后的学习中,戒骄戒躁,态度端正,虚心认真——态度决定一切!
总之,不管怎样,万事开头难,从刚开始的不知如何下手,到最终的做完,大家都如释重负,但是我们不会就此松懈。因为我们都知道还有更大的挑战在后面。此外,我还得出一个结论:只是必定要通过应用才有其价值!以为会,但用的时候才发现完全是两回事,所以,我以为只有真正的运用到实践中才有可能真正领悟。最后再次感谢各位老师的悉心教导和同学的热心帮助。
第三篇:数字电子钟逻辑电路设计总结报告
课程设计总结报告
写总结报告是对学生写科学论文和科研总结报告的能力训练。总结报告包括以下内容: 1.报告名称
2.内容摘要(<300字)3.设计内容及要求
4.方案比较,画出系统框图,确定使用的方案。
5.单元电路设计、参数计算和器件的选择(含器件功能表)并说明单元电路工作原理。
6.画出完整的电路图 7.安装调试内容,包括:
(1)使用的主要仪器和仪表;(2)调试电路的方法和技巧;
(3)测试的数据和波形,并与计算结果比较分析;(4)调试中出现的故障、原因及排除方法。
8.总结设计电路的特点和方案的优缺点,提出进一步的改进意见和未来的发展。9.列出所用的元器件 10.列出参考文献
第四篇:交通灯控制逻辑电路设计与总结报告
交通灯控制逻辑电路设计与总结报告
一、设计任务
用CPLD设计路口交通灯控制器
二、设计要求
1、满足一下时序要求:南北方向红灯亮,东西方向绿灯亮;南北方向绿灯亮,东西方向红灯亮;
2、每一方向的红(绿)黄灯总共维持30秒;
3、十字路口要有时间显示,具体为:当某一方向绿灯亮时,置显示器为30秒,然后以每秒减一技术方式工作,直至减到数为4秒时,红绿灯熄灭,黄灯开始间隙闪耀4秒,减到0时,红绿灯交换,一次工作循环结束,进入下一步另一方向的工作循环;
4、红绿灯均采用发光二极管;
5、设计由晶振电路产生1Hz标准秒信号的单元电路(实际秒脉冲由开发箱提供);
6、要求对整体电路进行仿真,观察并记录下仿真波形;
7、选作部分:
a、手动调整和自动控制,夜间为黄灯闪耀;
b、白天黄灯亮时,以2Hz的速度闪烁点亮四秒; c、红绿灯循环点亮时间可以自由修改。
三、设计设备
含有Quartus软件的电脑一台,可下载的试验台;
四、设计方法
使用VHDL语言进行程序的设计运行和仿真,以及波形的运行仿真,最后进行下载仿真;
五、方案论证
方案1:把整个流程分成几个进程来做;
方案2:每个进程都使用if和case语句实现功能的实现; 方案3:使用状态机来实现状态间的转换;
方案论证:
1、要实现整个流程,需要做的输出内容类型不同,如果放在一个进程里面就比较容易混淆,产生混乱。而采用分成几个进程来做的方式就明确了每个模块的内容和分工,使其调理清晰,一目了然;
2、if语句是条件语句,是VHDL语言中常用的基本语句。该流程中的变量比较繁多,而使用case语句分情况列出来,简洁明了。
3、状态机的使用格式简洁,使用简单方便,特别是在进行状态的转换时候。并行的状态转换不易出错,可将状态转换、赋值、计数等多个功能封装在某一个状态中,并且更加便于为系统添加新的状态功能。
方案选定:
通过以上分析,确定用以上方案为本次设计的方案。
六、工作原理
先对所给时钟脉冲进行分频到标准时钟脉冲;设计两个时钟控制倒计时,倒计时的时间可自由修改,由输入决定;设计另一个时钟,用以控制白天与夜间模式的转换;在白天时,根据倒计时的数字进行红绿灯的状态转换;夜间时,红绿灯状态改为夜间模式:黄灯闪烁。
七、程序设计
------交通灯控制系统所使用的库和包
-------------------------library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;
-------------------------------交通灯控制系统的实体
-------------------------entity jt is
port(clk,reset:in std_logic;
------------------时钟脉冲clk由系统直接提供,需要进行分
频;reset是启动键,当reset为1是,系统启动
t0:integer range 0 to30;
------------------红绿灯循环点亮的时间,根据输入的不同
系统运行的不同
r1,y1,g1,r2,y2,g2:out std_logic;
------------------r1为东西方向红灯,y1为东西方
向黄灯,g1为东西方向绿灯;r2为南北方向红灯,y2为南北方向黄灯,g2为南北方向绿灯
ec0,ec1,nc0,nc1:out std_logic_vector(3 downto 0));
------------------ec0,ec1分别为东西方向的倒计时间的个位和十位;
nc0,nc1分别为南北方向的倒计时间的个位和十位
end jt;-------------------------------交通灯控制系统的结构体(5个进程)
-------------------------architecture one of jt is
type state_type is(s0,s1,s2,s3);
------------------定义状态的类型
signal state:state_type;
------------------使用状态机
signal k:std_logic;
------------------分频后的1Hz的标准时钟脉冲
signal c1,c2:integer range 0 to 30;
------------------定义东西、南北方向的两个
倒计时的计数
signal t1:integer range 0 to 3600;
signal t2:integer range 0 to 24;------------------定义一个时钟,用以控制白天与夜间模式 Begin------该进程用以分频
-------------------------q0:process(clk)
variable tt:std_logic_vector(9 downto 0);
------------------中间变量
begin
if clk'event and clk='1' then
if tt=“1111101000” then
----------------------把所给1kHz分频成1Hz的脉冲
k,10000分频,仿真值用“ 0000000100”八分频
tt:=(others=>'0');
k<='1';
else
tt:=tt+1;k<='0';
end if;
end if;end process q0;-------------------------
------该进程用以设计时钟
-------------------------q1:process(k,reset)
begin
if reset='1' then
------------------启动开关为1时,系统开始运行
t1<=0;t2<=0;
------------------从0点开始 elsif k='1' and k'event then if t1=3599 then
------------------一个t1循环是一个秒,仿真值用“35” if t2=23 then
-------------------一个t1循环是一个小时,一天24小时 t2<=0;
else t2<=t2+1;end if;t1<=0;else t1<=t1+1;end if;end if;end process q1;-------------------------------该进程用以控制白天黑天模式和红绿灯状态转换
-------------------------q2:process(k,reset,t2)
begin
if t2>=5 and t2<=22 then
-------------------白天模式5:00到22:00之间
if reset='1' then
-------------------启动开关为1时,系统开始运
行,进行状态转换
r1<='0';y1<='0';g1<='1';-------------------东西方向绿灯亮 r2<='1';y2<='0';g2<='0';-------------------南北方向红灯亮 state<=s0;-------------------红绿灯处于初始状态s0 c1<=t0;
c2<=t0;-------------------倒计时从自由输入值开始递减 elsif k='1' and k'event then
case state is
when s0=>-------------------当处于第1状态时,讨论
if c1=5 then
--------------由于进程内部的并列进
行,当倒计时第4秒时,进入到第2状态s1
state<=s1;
c1<=c1-1;
c2<=c2-1;
--------------倒计时递减
elsif c2=0 then
------------倒计时减到0时,再从
初始值开始
c1<=t0;
c2<=t0;
else
----------------否则继续保持第1状态s0
state<=s0;
c1<=c1-1;
c2<=c2-1;
end if;
when s1=>-------------------当处于第2状态时,讨论
if c1=1 then--------------由于进程内部的并列进行,当
倒计时第t0秒时,进入到第3状态s2
state<=s2;
c1<=c1-1;
c2<=c2-1;
else----------------否则继续保持第2状态
state<=s1;
c1<=c1-1;
c2<=c2-1;
end if;
when s2=>-------------------当处于第3状态时,讨论
if c2=5 then--------------由于进程内部的并列进行,当倒计时第4秒时,进入到第4状态s3
state<=s3;
c1<=c1-1;
c2<=c2-1;
elsif c1=0 then
------------倒计时减到0时,再从初
始值开始
c1<=t0;
c2<=t0;
else
----------------否则继续保持第3状态
state<=s2;
c1<=c1-1;
c2<=c2-1;
end if;
when s3=>-------------------当处于第4状态时,讨论 if c2=1 then--------------由于进程内部的并列进行,当倒
计时第t0秒时,进入到第1状态s0
state<=s0;
c1<=c1-1;
c2<=c2-1;
else----------------否则继续保持第4状态
state<=s3;
c1<=c1-1;
c2<=c2-1;
end if;
when others=> state<=s0;
end case;if state=s0 then
r1<='0';y1<='0';g1<='1';
r2<='1';y2<='0';g2<='0';elsif state=s1 then
r1<='0';g1<='0';
r2<='1';y2<='0';g2<='0';
if c1=4 or c1=2 then y1<='1';
else y1<='0';
end if;elsif state=s2 then
r1<='1';y1<='0';g1<='0';
r2<='0';y2<='0';g2<='1';elsif state=s3 then
r1<='1';y1<='0';g1<='0';
r2<='0';g2<='0';
if c2=4 or c2=2 then y2<='1';
else y2<='0';
end if;end if;
--各个状态的红绿灯变量的赋值,‘1’亮‘0’熄 end if;else-------------------夜间模式22:00到次日5:00之间
c2<=0;c1<=0;r1<='0';r2<='0';g1<='0';g2<='0';y1<=k;y2<=k----------------红绿灯的状态:脉冲k赋给黄灯变量,黄灯闪烁
end if;end process q2;-------------------------------该进程用于东西方向倒计时的译码显示
-------------------------q3:process(c1)
begin case c1 is when 0=>ec0<=“0000”;ec1<=“0000”;when 1=>ec0<=“0001”;ec1<=“0000”;when 2=>ec0<=“0010”;ec1<=“0000”;when 3=>ec0<=“0011”;ec1<=“0000”;when 4=>ec0<=“0100”;ec1<=“0000”;when 5=>ec0<=“0101”;ec1<=“0000”;when 6=>ec0<=“0110”;ec1<=“0000”;when 7=>ec0<=“1000”;ec1<=“0000”;when 9=>ec0<=“1001”;ec1<=“0000”;when 10=>ec0<=“0000”;ec1<=“0001”;when 11=>ec0<=“0001”;ec1<=“0001”;when 12=>ec0<=“0010”;ec1<=“0001”;when 13=>ec0<=“0011”;ec1<=“0001”;when 14=>ec0<=“0100”;ec1<=“0001”;when 15=>ec0<=“0101”;ec1<=“0001”;when 16=>ec0<=“0110”;ec1<=“0001”;when 17=>ec0<=“0111”;ec1<=“0001”;when 18=>ec0<=“1000”;ec1<=“0001”;when 19=>ec0<=“1001”;ec1<=“0001”;when 20=>ec0<=“0000”;ec1<=“0010”;when 21=>ec0<=“0001”;ec1<=“0010”;when 22=>ec0<=“0010”;ec1<=“0010”;when 23=>ec0<=“0011”;ec1<=“0010”;when 24=>ec0<=“0100”;ec1<=“0010”;when 25=>ec0<=“0101”;ec1<=“0010”;when 26=>ec0<=“0110”;ec1<=“0010”;when 27=>ec0<=“0111”;ec1<=“0010”;when 28=>ec0<=“1000”;ec1<=“0010”;when 29=>ec0<=“1001”;ec1<=“0010”;when 30=>ec0<=“0000”;ec1<=“0011”;----------------------------当在设定范围内时,分别为个位十位译码并显示
when others=>ec0<=“0000”;ec1<=“0000”;
-------------------------否则,LED灯显示0
end case;
end process q3;-------------------------------该进程用于南北方向倒计时的译码显示
-------------------------q4:process(c2)
begin
case c2 is when 0=>nc0<=“0000”;nc1<=“0000”;when 1=>nc0<=“0001”;nc1<=“0000”;when 2=>nc0<=“0010”;nc1<=“0000”;when 3=>nc0<=“0011”;nc1<=“0000”;when 4=>nc0<=“0100”;nc1<=“0000”;when 5=>nc0<=“0101”;nc1<=“0000”;when 6=>nc0<=“0110”;nc1<=“0000”;when 7=>nc0<=“0111”;nc1<=“0000”;when 8=>nc0<=“1000”;nc1<=“0000”;when 9=>nc0<=“1001”;nc1<=“0000”;when 10=>nc0<=“0000”;nc1<=“0001”;when 11=>nc0<=“0001”;nc1<=“0001”;when 12=>nc0<=“0010”;nc1<=“0001”;when 13=>nc0<=“0011”;nc1<=“0001”;when 14=>nc0<=“0100”;nc1<=“0001”;when 15=>nc0<=“0101”;nc1<=“0001”;when 16=>nc0<=“0110”;nc1<=“0001”;when 17=>nc0<=“0111”;nc1<=“0001”;when 18=>nc0<=“1000”;nc1<=“0001”;when 19=>nc0<=“1001”;nc1<=“0001”;when 20=>nc0<=“0000”;nc1<=“0010”;when 21=>nc0<=“0001”;nc1<=“0010”;when 22=>nc0<=“0010”;nc1<=“0010”;when 23=>nc0<=“0011”;nc1<=“0010”;when 24=>nc0<=“0100”;nc1<=“0010”;when 25=>nc0<=“0101”;nc1<=“0010”;when 26=>nc0<=“0110”;nc1<=“0010”;when 27=>nc0<=“0111”;nc1<=“0010”;when 28=>nc0<=“1000”;nc1<=“0010”;when 29=>nc0<=“1001”;nc1<=“0010”;when 30=>nc0<=“0000”;nc1<=“0011”;---------------------------当在设定范围内时,分别为个位十位译码并显示
when others=>nc0<=“0000”;nc1<=“0000”;
end process q4;-------------------------end architecture one;
----所有进程结束-------------------------
八、仿真结果
1、clk为输入脉冲;开始令reset为’1’,启动系统,系统正常工作后值为’0; t0为红绿灯循环时间,可自由修改,如果输入值为’0010000’,则为16秒倒计时。如下图:系统从0点开始运行,处于夜间模式时,倒计时都为“00”,两个方向都为黄灯闪烁,红绿灯都熄灭。
---------------------------否则,LED灯显示0
end case;2、5:00之后,进入到白天模式:从第1状态(东西方向绿灯亮、南北方向红灯)开始,倒计时从16秒开始递减。倒计时第4秒后进入第2 状态(东西方向黄灯闪烁,南北方向红灯亮)。
3、倒计时第0秒后进入第3 状态(东西方向红灯亮,南北方向绿灯亮),倒计时再从16秒开始递减;倒计时第4秒后进入第4 状态(东西方向红灯亮,南北方向黄灯闪烁);倒计时第0秒后进入第1 状态(东西方向绿灯亮,南北方向红灯亮),倒计时再从16秒开始递减
。如此循环。
4、当计时器到22:00时,再次进入夜间模式:东西南北方向黄灯闪烁;到次日5:00时又回到白天模式。如此循环。
九、讨论与改进
特点:
1、在整个设计过程中,分进程实现整个功能,简单明了;
2、状态机的功能和优点得到了较为完整的体现;
3、分夜间和白天模式不同,系统自动调节;
4、黄灯以闪烁的形式亮;系统运行后红绿灯循环点亮的时间也可自由修改。不足:
1、整个系统启动后从夜间0点开始运行,而不能随意调为哪个时间的交通灯状态,只能从程序中改,不能手动调节;
2、整个功能还是比较简单,未能分左右转和直行的情况;
3、紧急情况处理时也无特殊处理的设置。
改进:
1、在进程中可增加一个输入量,用以控制系统的时钟时间,方便调节模式和交通灯状态;
2、在进程中可加入几个红绿灯状态来分别控制东西方向和南北方向的左转、右转和直行的红绿灯状态;
3、在原有程序的基础上,可通过增加一个输入量来控制一种特殊状态,用以控制特殊情况的处理,视该特殊情况而定。
二○一○年九月三日
第五篇:电路设计自荐书
我是四川职业技术学院、即将毕业于2009年6月的学生。所学的专业是;应用电子技术。我仰慕贵单位重知识,重视 人才 之名,希望能成为贵单位的一员,为单位的事业发展尽我全力。
本人在校学习刻苦,成绩优秀,通过在校学习,掌握了良好的专业知识,和理论基础,系统的学习了各项知识技能。
我有一定的工作经验,在校外,我经常参加学校的三下乡活动,上门免费维修家电,在校内,组织电子协会成员进行电子设计比赛,活动也是搞得有声有色。
我的性格开朗、热情诚实、能够吃苦耐劳、有责任感、有团结精神,人际关系好。
我的酷好是;电路设计,我能独立完成从:电路原理图设计 pCB布线电路设计 制作电路版的全过程 安装电路版 调试电路等全过程。我在校期间,我还设计了一些电子成品如:150W三分频功放、无线话筒、人体红外感应灯等。效果很好。
我初涉世事,某些方面还不成熟,但我正视自己的不足,我将在今后实践中虚心学习,不断专研,积累工作经验,提高工作能力,完善充实自己,我期望能有一片扬我所长的天地,我将奉献我的智慧和汗水。