电子称毕业设计指导书Word文档格式.docx

上传人:b****6 文档编号:16934771 上传时间:2022-11-27 格式:DOCX 页数:28 大小:541.38KB
下载 相关 举报
电子称毕业设计指导书Word文档格式.docx_第1页
第1页 / 共28页
电子称毕业设计指导书Word文档格式.docx_第2页
第2页 / 共28页
电子称毕业设计指导书Word文档格式.docx_第3页
第3页 / 共28页
电子称毕业设计指导书Word文档格式.docx_第4页
第4页 / 共28页
电子称毕业设计指导书Word文档格式.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

电子称毕业设计指导书Word文档格式.docx

《电子称毕业设计指导书Word文档格式.docx》由会员分享,可在线阅读,更多相关《电子称毕业设计指导书Word文档格式.docx(28页珍藏版)》请在冰豆网上搜索。

电子称毕业设计指导书Word文档格式.docx

在称量的过程中,一旦物体自身的重量超出电子秤的称量范围,蜂鸣器立即会发出“滴滴·

”警报声告诉工作人员,所称量物品超重。

框架图:

3.3硬件电路的设计

数字电子秤采用AT89C51单片机作为微处理器,接口电路由晶振、LM4229显示电路、4*4按键电路、ADC0832电路、报警电路、存储器等组成。

控制器系统的硬件电路原理图如图4.1所示。

控制器系统硬件电路的工作过程是:

打开电源时,MCU及各个部分电路开始工作,MCU调用内部存储数据对各部分接口电路初始化。

200ms后LM4229进入欢迎界面,ADC0832不断对外部数据进行采样交给MCU进行处理,一旦有物品放入载物台,ADC0832立即发送中断请求,并将本次采集数据交给MCU处理,之后LM4229显示相应数据量。

在此过程中,键盘也在不断进行扫描,一旦有键按下,单片机也会对其数据进行相应处理,然后将对LM4229进行写操作。

图4.1数字电子秤硬件电路图

3.4软件设计

本设计中的程序由主控制程序、LM4229液晶显示驱动程序、ADC0832采样程序和4*4键盘程序组成。

3.4.1主程序设计

整个设计中采用由下向上的设计思路。

主程序中主要完成对LCM4229、ADC0832、及键盘扫描程序的调用。

在编写程序的过程中,各变量统一采用全局变量方式命名,同时考虑到电子秤对精度的要求,本设计中的价格及总量相关的变量全部采用浮点数。

主程序流程图如图5.1所示。

图5.1主程序流程图

3.4.2LM4229液晶显示驱动程序

图5.2LM4229液晶显示驱动程序流程图

LM4229液晶能够显示比较复杂的汉字和图形,首先必须对其写入控制操作字,包括图形的显示方式,字体的模式。

然后写入初始行地址,指针自动左移,直到写完全部数据为止。

write_data(place&

0xff);

//写入地址高位

write_data(place/256);

//写入地址低位

write_com(0x24);

//地址设置

write_com(0xb0);

//设置数据自动写

write_data(ASC_MSK[(c1-0x20)*16+k]);

/*---例如:

0的ASCII码为0x30,

在ASC_MSK中的位置为0x10*16---16字节字码依次写入LCD---*/

write_com(0xb2);

//自动复位

place=place+30;

3.4.3ADC0832采样程序

图5.3ADC0832采样程序程序流程图

MCU通过拉低CS、拉高CLK来启动ADC0832进行外部压力传感转换后的电压信号进行采样,每产生8个CLK脉冲,DATA获得一位完整的8bit数据,此时MCU发送中断请求,拉高CS,拉低CLK,并将数据DAT返回。

3..4.44*4键盘程序

 

图5.44*4键盘程序

本设计中采用了4*4矩阵式键盘,单片机定时进行查询。

首先单片机发送行扫描代码,然后进行列扫描,当发现某一列出现了低电平时,即返回相应的键盘值。

若没有发现则说明当前行没有键按下,行扫描右移一位,继续执行列扫描。

MCU根据相应的键值,即可确定被按下的键。

四、设计总结

通过本次电子技能课程数字电子秤的设计,让我更加熟悉了单片机的整个设计流程。

在设计过程中,我也意识到好的编程书写习惯对软件设计的重要性。

刚刚开始由于自己变量大部分采用的是局部变量,导致程序仿真出错,给自己的修改创造不小的麻烦。

经过一天的努力,统一采用全局变量终于实现最终的仿真结果和设计的全部任务和要求。

当然本数字电子秤还有很多可以改进的地方,例如可以改进按键功能方便工作人员随时对各数据进行修改等等。

由于设计时间有限,只能在以后的学习过程中做更进一步的改进。

实验二二极管花样显示电路

1、异步时序逻辑电路的设计方法

2、学会不同器件的联合使用来实现二极管的花样显示

总体说明

分别设计出变速双向二极管、异步联合锁、汽车尾灯、乒乓球球迹模拟四个不同的异步时序逻辑电路,并下载到FPGA上来验证和测试其功能。

(任选两个组合)

详细说明

变速双向二极管

该模块中包含一个两分频的分频器,一个4路选择器,一个三位计数器,一个3-8译码器。

分频器的作用是用来产生四种不同的频率,来改变二极管显示的速率;

4路选择器的作用是用来选择从四种不同频率中选取一种,来作为二极管的显示速度;

三位计数器的作用为产生连续变换(可递增或递减计数)的数据作为3-8译码器的输入(输出为高有效),这样在译码器的8个输出端就会看到好像有个1在不停的由高位到低位或是由低位到高位传递,这样就实现了8个二极管的可变速率或可变方向(由计数器的计数方式来控制从左至右或从右至左来显示)的显示。

当然还可用一个分频器和一个双向循环移位寄存器来实现变数双向二极管的功能,在此不再详细说明。

当FG=1,FCLK为连续的上升沿脉冲时,若脉冲的频率为1KHZ,则生成的四种频率为:

1/2KHZ、1/4KHZ、1/8KHZ、1/16KHZ;

若SEL[1..0]=0,则选择1/2KHZ频率来作为三位计数器CLK的时钟频率;

若SEL[1..0]=1,则选择1/4KHZ频率来作为三位计数器CLK的时钟频率;

若SEL[1..0]=2,则选择1/8KHZ频率来作为三位计数器CLK的时钟频率;

若SEL[1..0]=3,则选择1/16KHZ频率来作为三位计数器CLK的时钟频率;

当EN=1,UNDW=1,CLK端的上升沿时钟脉冲来到时,计数器开始从0到7计数,来个时钟脉冲,计数器加1,为7时,又重新开始递增计数;

UNDW=0时,是递减计数;

计数器的输出端Q[2..0]=0时,3-8译码器的输出Q[7..0]为:

00000001;

Q[2..0]=1时,3-8译码器的输出Q[7..0]为:

00000010;

Q[2..0]=2时,3-8译码器的输出Q[7..0]为:

00000100;

Q[2..0]=3时,3-8译码器的输出Q[7..0]为:

00001000;

Q[2..0]=4时,3-8译码器的输出Q[7..0]为:

00010000;

Q[2..0]=5时,3-8译码器的输出Q[7..0]为:

00100000;

Q[2..0]=6时,3-8译码器的输出Q[7..0]为:

01000000;

Q[2..0]=7时,3-8译码器的输出Q[7..0]为:

10000000;

异步联合锁

这是一个具有两个输入变量,一个输出的序列检测器,在这里我们假设当输入为00、01、11序列时,输出为“1”,否则为“0”。

这样就可用四个变量(S0,S1,S2,S3)来表示四种不同的状态,若初始态为S0,输入为00时,状态由S0变为S1,输出Z为0,否则状态仍为S0,输出Z为0;

在S1状态时,输入为01时,状态由S1变为S2,输出Z为0,否则,状态由S1变为S0,输出Z为0;

在状态S2时,输入为11,状态由S2变为S3,输出Z为1,否则状态由S2变为S0,输出Z为0;

在状态S3时,输入为四种组合的任一种,状态都会回到初始态S0,输出Z为0;

可用两个变量对四种状态进行编码,S0,S1,S2,S3编码分别为00,01,11,10;

这样对一定的联合输入,在用户看来只产生一个结果,但在其内部确产生了有且仅有一个变量发生变化的一系列序列信号;

RESET是用来使状态重置为初始态。

汽车尾灯

用6个二极管来模拟6个汽车尾灯,左侧3个(LA,LB,LC),右侧3个(LA1,LB1,LC1)。

用4个控制端A、D、B、C来分别模拟制动功能(A控制),紧急情况(D控制),左转弯(B控制),右转弯(C控制)。

在此模块中,有一个3位的同步计数器,还有一些与非门电路;

同步计数器的作用是使车在转弯时,尾灯能产生周期性的变化,与非门组成控制和显示电路;

在制动时(A=1),若其它的控制端都有效(D=1,B=1,C=1)或是都无效(D=0,B=0,C=0),6个二极管均亮;

在无制动时(A=0),若B=1,C=1,则两侧的尾灯作相同的周期性变化,变化的规律为3位计数器的递增的计时规律:

000,000;

100,100;

010,010;

110,110;

001,001;

101,101;

011,011;

111,111;

在A=1,B=1,C=0时,左侧的3个二极管作周期性变化,右侧的3个二极管则一直亮;

在A=1,B=0,C=1时,右侧的3个二极管作周期性变化,左侧的3个二极管则一直亮;

在A=0,B=1,C=0时,左侧的3个二极管作周期性变化,右侧的3个二极管均不亮;

在A=0,B=0,C=1时,右侧的3个二极管作周期性变化,左侧的3个二极管均不亮;

在D=1,B=0,C=0时,6个二极管按CLK时钟脉冲的频率闪亮;

乒乓球球迹模拟

用8个二极管移位发光来模拟乒乓球的运动轨迹,球台的左侧有4个(L1,L2,L3,L4),球台的右侧由4个(L5,L6,L7,L8)。

用4个控制端A、B、C、D分别模拟A发球(A控制),B发球(B控制),A击球(C控制),B击球(D控制)。

在此模块中,有一个双D触发器,两个4位的双向移位寄存器,还有一些门电路。

双D触发器的作用为用来决定谁发球,若发球端A为0,则球员A拥有发球权;

若发球端B为0,则球员B拥有发球权;

两个4位寄存器的作用是为了扩展成8位双向移位器存器,再用它来模拟乒乓球的运动轨迹,若击球端C为0,则球员A击球;

若击球端D为0,则球员B击球;

当球由A端发到B端时,球员B必须在适当的时间内将球击过去,也就是使D变为0,否则球员B传球失败,必须重新发球。

三、实验报告要求

实验的目的,实验内容的详细说明及变速双向二极管、异步联合锁、汽车尾灯、乒乓球球迹模拟这四个模块分别的设计思想,以及这四个模块的原理图、VHDL源程序和分别的波形仿真,四个模块的引脚分配说明,实验报告总结。

实验三简易频率计

1.掌握较复杂逻辑的设计、调试。

2.掌握用AHDL或VHDL语言设计数字逻辑电路。

3.熟悉MAXPLUSII软件的使用方法。

4.熟悉FPGA器件的使用。

5.了解频率计的初步知识。

二、实验内容

设计一个简易频率计。

用于测量1MHz以下数字脉冲信号的频率,闸门只有1S一档,测量结果在数码管上显示出来,不测信号脉宽。

用一片FPGA芯片实现此设计,并在试验台上完成调试。

三、实验提示

1.频率计的基本工作原理如下:

首先产生一系列准确的闸门信号,例如lms、0.1s、1s等,然后用这些闸门信号控制一个计数器对被测脉冲信号进行计数,最后将结果显示出来。

如果闸门信号是1s,那末1s内计数的结果就足被测信号的频率。

如果闸门信号是1ms,那末计数结果是被测信号频率的千分之一,或者说结果是以KHz为单位的频率值。

2.频率计中,最原始的时基信号准确度一定要高,建议用实验台上的时钟信号做原始时基信号。

3.由原始时基信号经分频产生占空比为50%的1s闸门信号。

在2秒的时间内,1秒用于计数,1s用于显示结果。

4.用于被测信号计数的计数器应采用十进制。

测得的结果可直接送实验台上的数码管进行显示。

每次对被测信号计数前,计数器应被清零。

四、实验报告

1.用AHDL或VHDL语言写出频率计设计方案,注释要详细。

2.写出调试过程中发生的问题和解决办法。

3.简要写出测量数字信号脉宽的方法。

实验四交通灯

1.掌握状态机的设计与调试方法。

2.掌握用AHDL或VHDL语言设计状态机。

3.熟悉MAXPLUSII的使用方法。

4.熟悉FPGA器件的使用。

5.了解交通灯的初步知识。

以实验台上的发光二极管分别表示4个红色、4个绿色和4个黄色指示灯模仿路口的东、西、南、北4个方向的红、绿、黄交通灯。

控制这些指示灯,使它们按下列规律亮、灭:

1.初始状态为4个方向的红灯全亮,时间1秒。

2.东、西方向绿灯亮,南、北方向红灯亮。

东、西方向通车,时间30秒。

3.东、西方向黄灯闪烁,南、北方向红灯亮。

时间2秒。

4.东、西方向红灯亮,南、北方向绿灯亮。

南、北方向通车,时间15秒。

5.东、西方向红灯亮,南、北方向黄灯闪烁。

6.返回2,继续运行。

7.如果发生紧急事件,例如救护车、警车通过,则按下单脉冲按钮,使得东、西、南、北四个方向红灯亮。

紧急事件结束后,松开单脉冲按钮,恢复到被打断的状态继续运行。

1.这是一个典型的时序状态机,一共有6个大的状态。

2.黄灯闪烁可通过连续亮0.2秒、灭0.2秒实现。

3.将实验台上的时基信号分频后作为设计中的初始时钟。

4.紧急事件发生时,要注意保存必要的信息,以备紧急事件结束后,恢复到原状态继续运行。

1.用AHDL或VHDL语言写出交通灯设计方案,注释要详细。

3.简要叙述状态机设计的特点。

实验五电子钟(不做)

2.学习数字电路模块层次设计方法。

1.设计一个数字电子钟。

电子钟具有下述功能:

(1)以实验台上的数码管显示时、分、秒。

(2)能使电了钟复位(清零)。

(3)能启动或者停止电子钟运行。

(4)在电子钟停止运行的状态下,能够修改时、分的值。

(5)设有报时功能,整点时喇叭呜叫。

2.要求整个设计分为若干模块。

顶层模块用原理图设计,低层模块用AHDL或VHDL语言设计。

3.实验台上调试并通过设计。

1.数字钟由晶体振荡器、分频器、计秒电路、计分电路和计时电路等组成。

计时电路有24小时和12小时两种计时方式。

当接通电源或数字钟走时出现误差时,都需要对数字钟作手动时、分、秒时间校正。

2.用分频器对实验台上的时基脉冲分频而产生一个周期为1s的时基信号。

3.手动校时,只要按下相应位的开关,该位数字就能以每秒计l的速度循环计数,到达所需数字时,放开开关,校正结束(在每位校时过程中,应使秒计数器为“0”)。

4.报时需要对整点时间进行译码。

1.用原理图和AHDL或VHDL语言描述整个设计。

2.写出调试中出现的问题及解决办法。

3.写出模块层次化设计的体会。

4.比较原理图设计和语言设计的特点。

实验六洗衣机控制平台

1、学会时序电路的设计方法及熟练掌握其设计步骤

2、学会用分级结构的思想来设计电路图

3、学会用一个FPGA实验系统来验证时序电路功能

设计、实现和验证一个简易的洗衣机控制台电路,此电路具有的功能是能够手动的控制洗衣机的四种独立的过程及手动的设置四种过程的时间周期:

四种过程分别是洗涤(WASH),甩干(SPIN_W),漂洗(RINSE),再次甩干(SPIN_R);

一共设置五个按键,一个按键能启动洗衣机的电源开关,一个按键能使洗衣机由空闲状态进入洗涤状态(注热水到洗衣机),一个按键用来使洗衣机进入搅洗状态,一个按键使洗衣机进入甩干状态;

另外一个按键用来手动给四种过程的时间周期赋值。

洗衣机的控制单元的功能定义如下:

洗衣机的控制单元共有5个外部输入端:

START_B,RESET_B,FULL,EMPTY及DIAL。

DIAL的字长有4位,DIAL3,DIAL2,DIAL1及DIAL0。

每一个输入端的0或者1信号的持续时间比一个时钟周期(大约为1.0秒)要长。

START_B(=1)信号用于启动洗衣机(一个完整的洗涤周期结束后,用此信号又可重新开始新的一轮洗涤周期)。

RESET_B(=1)信号用于初始化和终止洗衣机的工作(相当于洗衣机的电源开关)。

FULL(=1)及EMPTY(=1)都是传感器信号,分别说明洗衣机滚筒中的水已满或清空。

洗衣机的控制单元共有4个外部输出端:

HOT,COLD,DRAIN以及TURN。

HOT(=1)和COLD(=1)分别用于打开热水和冷水阀门。

DRAIN(=1)信号用于打开排水管阀门。

TURN(=1)信号使洗衣机在洗涤过程中旋转滚筒来洗涤,漂洗以及甩干。

在CONTROL和TIMER之间共有6个内部信号。

CONTROL发给TIMER的信号有五个,分别为DEC,LDDIAL,LOAD7,LOAD10,LOAD8。

TIMER是一个4位并行输入的同步计数器,它是从高到低计数的,并有一个使能输入端。

从外部引脚并行输入4位二进制赋给DIAL的各位,当LDDIAL(=1)时,允许赋值;

当LOAD7(=1),LOAD10(=1)或者LOAD8(=1)时,DIAL被分别赋予0111,1010,1000的值。

DEC(=1)信号表示允许计数。

TIMER发给CONTROL的信号仅有一个ZERO。

计数器值为零时,ZERO值为1。

CONTROL中包含4个独立的过程,分别是洗涤(WASH),甩干(SPIN_W),漂洗(RINSE),再次甩干(SPIN_R)。

详细说明如下:

洗涤(WASH)

假定当电源接通后,RESET自动被激活或者洗衣机至少已经使用过一次。

这时候CONTROL处于空闲(IDLE)状态(第一个时钟周期)直到START被置为1。

当START转换为1时,洗涤周期(整个洗衣过程)将在下一个时钟初始化(第二个时钟周期)。

HOT变为1,并一直会持续到下一个时钟周期(第三个时钟周期)FULL置1后,这期间,热水被注入。

当FULL=1,LOAD10、LDDIAL信号将在这个时钟周期的剩余时间里也变为1,并使计数器中的DIAL被赋值10,来确定洗涤周期的时间长短。

下一个时钟周期里DEC和TURN变为1(第四个时钟周期),洗涤开始了。

当ZERO=1时,洗涤完毕,并在下一个时钟周期里DEC和TURN变为(第五个时钟周期)。

甩干(SPIN_W)

在同样的下一个时钟周期里(第五个时钟周期),DRAIN变为1,并一直会持续到下一个时钟周期EMPTY置1后,这期间,水被排出。

当EMPTY=1,LOAD7信号将在这个时钟周期(第六个时钟周期)的剩余时间里也变为1,并将7赋予计数器中DIAL。

而后DEC,TURN和DRAIN在下一个时钟周期里变为1(第七个时钟周期),使洗衣机中剩余的水被甩出。

当ZERO=1,DRAIN时,DEC和TURN在下一个时钟周期里变为0(第八个时钟周期)。

漂洗(RINSE)

在同样的下一个时钟周期里(第八个时钟周期),COLD变为1并一直会持续到下一个时钟周期FULL置1后,这期间,用来漂洗的冷水被注入。

当FULL=1,LOAD10信号将在这个时钟周期(第九个时钟周期)的剩余时间里也变为1,并将10赋予计数器中DIAL。

而后DEC,TURN在下一个时钟周期里变为1(第十个时钟周期),洗衣机漂洗衣物。

当ZERO=1,DEC和TURN在下一个时钟周期里变为0(第十一个时钟周期)。

再次甩干(SPIN_R)

在同样的下一个时钟周期里(第十一个时钟周期),DRAIN变为1并一直会持续到下一个时钟周期EMPTY置1后,这期间,水被排出。

当EMPTY=1,LOAD8信号将在这个时钟周期(第十二个时钟周期)的剩余时间里也变为1,并将8赋予计数器中DIAL。

而后DEC,TURN和DRAIN在下一个时钟周期里变为1(第十三个时钟周期),使洗衣机中剩余的水被甩出。

当ZERO=1,DRAIN时,DEC和TURN在下一个时钟周期里变为0(第十四个时钟周期)。

当状态变为IDLE(空闲)时(第十四个时钟周期),整个洗涤周期结束了。

三、设计方法的参考

看CONTROL的局部状态图,与我们比较熟悉的状态图相比较,存在着一些不同。

首先,我们不是标出所有状态的输入,而是仅有那些影响下一个状态与/或输出值的输入端才被标出。

其次,如果一个输出既没有在状态中被标出,也没有在状态出来的箭头上标出,它就被默认为0。

根据实验所给出的CONTROL的局部状态图及详细说明,可作出完整的CONTROL的状态转换图。

CONTROL的局部状态图

对CONTROL的状态图进行审视,会发现,图中所有状态流的结构是相同的!

这种相同的状态图结构,见图所示,也被称作“等待循环”。

从前一个状态电路会进入一个等待状态,电路在这个状态不断循环直到输入变为1,这时,电路会离开这个状态在下一个时钟提前进入下一个状态。

因此,这类输入由于引起了状态提前被称为“预输入”(ADVIN)。

在这次实验里,ADVIN信号用一些适当的信号所代替(如EMPTY、FULL、ZERO)。

等待循环图

当电路处于STATE状态时,如果CONTROL有一个输出信号为1,则STOUT信号(=1)可以被用来作为实现这种输出的逻辑的输入信号。

在输入变量ADVIN变为1后,如果有一个输出变量在剩余的时钟周期里变为1,则NEXTST信号(=1)可以被用来作为实现这种输出的逻辑的输入。

在某个特定状态下,当信号STOUT没有作为实现输出的逻辑的输入时,输出不会变为1。

同样的,在某个特定状态下,ADVIN=1,当信号NEXTST没有作为实现输出的逻辑的输入时,输出不会也变为1。

使用在逻辑设计课程中所学到的传统的技术,要实现我们的状态图,处理起来很复杂。

电路中共有9个状态(需要4个变量

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 政史地

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1