课程设计-基于单片机的数字频率计.doc_第1页
课程设计-基于单片机的数字频率计.doc_第2页
课程设计-基于单片机的数字频率计.doc_第3页
课程设计-基于单片机的数字频率计.doc_第4页
课程设计-基于单片机的数字频率计.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

行知学院工学单片机原理及应用课程设计基于单片机的数字频率计目 录第1节 引 言31.1 数字频率计系统概述 3 1.2 本设计任务和主要内容 3第2节 系统主要硬件电路设计 42.1 单片机控制系统原理42.1.1 对使用的单片机原理的介绍42.1.2 使用主要部分的中断系统功能72.1.3 使用主要部分的定时/计数器介绍 82.1.3.1 定时器/计数器的结构及工作原理 82.1.3.2工作方式的选择112.1.3.3使用的at89c52芯片图 112.2 模块电路设计与比较 122.3 各功能模块设计及实现12 2.3.1 单片机控制系统 12 2.3.2 555电路模块14 2.3.3 高速a/d转换电路模块 15 2.3.4 键盘模块15 2.3.7 led显示模块16 2.3.8 频率测量原理模块16第3节 系统软件设计 173.1 系统主程序流程图设计173.2 相关程序内容18第4节 结束语19参考文献 20基于单片机的数字频率计第1节 引 言近年来,随着我国科技的不断发展,我国经济发展的支柱产业电子产业获得长足发展,近年来各种电子产品琳琅满目,随处可见,随着电子产品的更新速度的加快,各种功能强大,款式新颖的电子产品不断问世。数字频率计便是这一发展趋势中的代表,各种功能的数字频率计应有尽有,且功能不断更新。数字频率计的研究也成为大多数相关专业的学生以及研究人员争先研究的对象,本人根据长时间对市场的关注和对同行对数字频率的研究,总结前人以有经验特提出此项目设计,此项目结合了前人对数字频率计的研究成果,具有功能强大,设计人性化的特点。此项目的制作,对提高在校大学生的科研能力以及丰富大学生课外生活具有重要意义。1.1 数字频率计系统概述本设计以单片机at89c52为控制核心,由电压检测模块、人机接口模块、555电路构成的多振弦震荡器等部分组成。人机接口模块由44键盘和led数码管组成,可实现对555电路产生的频率的测试并显示等功能。传统数字频率计的测频误差主要包含两项:a=a1+a2。a1闸门时间的相对误差,在数字上等于频标信号的准确度,a1=-fs/fs,fs为频标信号频率;a2为对被测频率计数的相对量化误差,a2=+ n/n=+1/n=+tx/t,tx为被测信号周期,t为闸门时间。a1与所用石英晶振的频率稳定度有关,为减少a1,常采用高精度的石英晶振;a2是一变量,在同一闸门内,在低频端和高频端相差几个数量级,它对测频精度的影响最为严重。为减少a2,常采用下列方法:频率较低时,改用测周期;多周期平均测量法;模拟内插法;频率倍增法等。1.2本设计任务和主要内容设计要求:设计一个数字频率计,要求通过改变555电路所接的滑动变阻器改变555电路的频率输出频率,将频率在led上显示出来。通过定时1秒对555电路的输入脉冲计数获得频率值。本设计是用单片机设计一个简易的数字频率计。以单片机为控制核心单片机作为整个硬件系统的核心,它既是协调整机工作的控制器,又是数据处理器。它由单片机、时钟电路、复位电路等组成。1、 电网电压检测电路采用有效值转换芯片 ad536和高速a/d芯片icl7135测量市电有效值,将从变压器引入的交流信号通过ad536转换成直流信号后接入icl7135,利用单片机读取数据后进行相应的幅值变换得到电压有效值。利用集成电路芯片测量精度高,误差小、稳定性好,硬件电路实现简单,可减小硬件体积。2、 人机接口模块采用7279控制键盘,采用数码管显示。数码管亮度高、体积小、重量轻,显示信息简单。3、 频率测量方案采用测量周期法。将被测量信号经过过零检测后转换成方波信号,利用单片机查询两个上升沿,在此期间根据晶体振荡器产生的周期为 tc的脉冲送计数器进行计数,设计数值为n,则得被测量信号的周期值 tx,然后取其倒数即为被测量信号的频率。 第2节 系统主要硬件电路设计2.1 单片机控制系统原理方案一:采用 cpld作为主控制器控制外围电路进行电压、频率测量、键盘。此方案逻辑电路复杂,且灵活性较低,不利于各种功能的扩展,在测电压时将通过a/d测得的数值转化为电压有效值时有一定的困难。 方案二:采用 89c51单片机来实现系统的控制。键盘用芯片7289控制,时钟芯片采用555电路构成的多振弦震荡器。市电信号电压可通过更高精度的ad536a、icl7135等测得,频率可采用测周期法间接测得。此系统硬件简洁,将复杂的硬件功能用软件实现,因此系统控制灵活,能很好地满足本题的基本要求和扩展要求。此方案基本原理框图如下图所示。 比较以上两种方案的优缺点,方案二简洁、灵活、可扩展性好,能完全达到设计要求,故采用第二种方案。2.1.1对使用的单片机的原理介绍mcs-51系列单片机主要包括8031、8051和8751等通用产品,其主要功能及特点如下:(1)、8位cpu。(2)、4kb 程序存储器(rom)。(3)、128b的数据存储器(ram)。(4)、32条i/o口线。(5)、111条指令,大部分为单字节指令。(6)、21个专用寄存器。(7)、2个可编程定时/计数器。(8)、5个中断源,2个优先级。(9)、一个全双工串行通信口。(10)、外部数据存储器寻址空间为64kb。(11)、外部程序存储器寻址空间为64kb。(12)、逻辑操作位寻址功能。(13)、双列直插40pindip封装。(14)、单一+5v电源供电。mcs-51系列单片机的内部结构示意图mcs-51单片机包含中央处理器、程序存储器(rom)、数据存储器(ram)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线三大总线。它的主要部件如下。(1)、中央处理器(cpu) 中央处理器是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,cpu负责控制、指挥和调度整个单元系统协调地工作,完成运算和控制输入/输出功能等操作。(2)、数据存储器(ram) 8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据。所以,用户能使用的的ram只有128个,可存放读写的数据、运算的中间结果或用户定义的字型表。(3)、程序存储器(rom) 8051共有4096个(4kb)8位掩膜rom,用于存放用户程序、原始数据或表格。(4)、定时/计数器(t/c) 8051有两个16位的可编程定时/计数器,以实现定时或计数,产生中断用于控制程序转向。(5)、并行输入输出口(i/o) 8051共有4组8位i/o口(p0、 p1、p2或p3),用于对外部数据的传输。(6)、全双工串行口(uart) 8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。(7)、中断系统 8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。(8)、时钟电路 8051内置最高频率达12mhz的时钟电路,用于产生整个单片机运行的脉冲时序,但8051单片机需外置振荡电容。 单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(harvard)结构;另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(princeton)结构。mcs-51系列单片机采用的是哈佛结构的形式,而后续产品16位的mcs-96系列单片机则采用普林斯顿结构。图2-1给出了mcs-51系列单片机的内部结构示意图。 引脚介绍pin20 接地脚gnd。pin40 正电源脚vcc。正常工作或对片内eprom烧写程序时,接+5v电源。pin19 时钟xtal1脚,片内振荡电路的输入端。pin18 时钟xtal2脚,片内振荡电路的输出端。8051的时钟有两种方式,一种是片内时钟振荡方式,但需在18和19脚外接石英晶体(212mhz)和振荡电容,振荡电容的值一般取1030pf;另外一种是外部时钟方式,即将xtal1接地,外部时钟信号从xtal2脚输入。 输入输出(i/o)引脚 pin39pin32为p00p07输入输出脚,pin1pin8为p10p17输入输出脚,pin21pin28为p20p27输入输出脚,pin10pin17为p30p37输入输出脚 pin9 reset复位信号复用脚。当8051通电,时钟电路开始工作,在reset引脚上出现24个时钟周期以上的高电平,系统初始复位。初始化后,程序计数器pc指向0000h,p0p3输出口全部为高电平,堆栈指针写入07h,其他专用寄存器被清0。reset由高电平下降为低电平后,系统即从0000h地址开始执行程序。8051的复位方式既可以是自动复位,也可以是手动复位,应根据不同的应用场合进行选择设计。pin30 ale(地址锁存),当访问外部程序器时,ale脚的输出用于锁存地址的低位字节。而访问内部程序存储器时,ale脚将输出一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。pin29 当访问外部程序存储器时,此脚输出负脉冲选通信号,pc的16位地址数据将出现在p0和p2口上,外部程序存储器则把指令数据放到p0口上,由cpu读入并执行。pin31 程序存储器的内外部选通脚,8051和8751单片机,内置有4kb的程序存储器,当ea为高电平并且程序地址小于4kb时,读取内部程序存储器指令数据;而超过4kb地址则读取外部指令数据。如ea为低电平,则不管地址大小,一律读取外部程序存储器指令数据。显然,对内部无程序存储器的8031,ea脚必须接地。2.1.2使用主要部分的中断系统功能 中断系统一般要完成以下功能。中断响应与执行: 中断源向计算机发出中断请求,cpu响应该中断请求,断开主程序,转向中断服务程序,完成中断服务后再返回到原来的主程序。主程序被断开的位置称为断点,为了cpu完成中断服务后能够返回到原主程序的位置,就要保护断点处的现场状态,即将断点处的pc值、相关寄存器的内容、标志位等状态压入堆栈保存,该操作被称为断点和现场保护。 中断服务结束后,在返回主程序前,要将被保护的断点和现场恢复,即弹出堆栈中被保存的内容至各相关寄存器,该操作被称为现场恢复。汇编语言程序员在使用中断时,需要仔细考虑现场的保护和恢复,高级程序员无需关心该问题,c编译器会自动完成现场保护和恢复。具体地说,单片机中断响应可以分为以下几个步骤:停止主程序运行。当前指令执行完后立即终止现行程序的运行。保护断点。把程序计数器pc 的当前值压入堆栈,保存终止的地址(即断点地址),以便从中断服务程序返回时能继续执行该程序。寻找中断入口。根据5 个不同的中断源所产生的中断,查找5 个不同的入口地址。执行中断处理程序。中断返回。执行完中断处理程序后,就从中断处返回到主程序,继续往下执行。 下图给出了mcs-51单片机中断响应与执行的详细流程。mcs-51单片机中断响应与执行流程2.1.3使用主要部分的定时/计数器介绍定时器方式寄存器:tmod。定时器控制寄存器:tcon。计数寄存器:th0、tl0、th1、tl1,可用于设定计数初值。2.1.3.1定时器/计数器的结构及工作原理 mcs-51系列单片机内有两个16位可编程的定时/计数器,它们具有四种工作方式,其控制字和状态均在相应的特殊功能寄存器中,通过对控制寄存器的编程,就可方便地选择适当的工作方式。 mcs-51单片机内部的定时器t0由特殊功能寄存器tl0(低8位)和th0(高8位)构成,定时器t1由特殊功能寄存器tl1(低8位)和th1(高8位)构成。 特殊功能寄存器tmod控制定时寄存器的工作方式,tcon则用于控制定时器t0和t1的启动和停止计数,同时管理定时器t0和t1的溢出标志等。程序开始时需对tl0、th0、tl1和th1进行初始化编程,以定义它们的工作方式和控制t0和t1的计数。工作方式0定时/计数器t0的工作方式0的电路逻辑结构见图3-3(定时/计数器t1与其完全一致),工作方式0是13位计数结构的工作方式,其计数器由th的全部8位和tl的低5位构成,tl的高3位没有使用。当c/ =0时,多路开关接通振荡脉冲的12分频输出,13位计数器以次进行计数,这就是定时工作方式。当c/ =1时,多路开关接通计数引脚t0,外部计数脉冲由引脚t0输入。当计数脉冲发生负跳变时,计数器加1,这就是计数工作方式。 不管是哪种工作方式,当tl的低5位溢出时,都会向th进位,而全部13位计数器溢出时,则会向计数器溢出标志位tf0进位。工作方式1 定时/计数器工作方式0和工作方式1的区别仅在于计数器的位数不同,工作方式0为13位,而工作方式1则为16位,由th0作为高8位,tl0为低8位,有关控制状态字(gata、tf0、tr0)和方式0相同。 在工作方式1下,计数器的计数值范围是165536(216),当为定时工作方式时,定时时间的计算公式为(216计数初值)晶振周期12 或 (216计数初值)机器周期工作方式2定时/计数器处于工作方式2的电路逻辑结构如下图所示。工作方式0和工作方式1的最大特点就是计数溢出后,计数器为全0,因而循环定时或循环计数应用时就存在反复设置初值的问题,这给程序设计带来许多不便,同时也会影响计时精度,工作方式2就是针对这个问题而设置的。它具有自动加载计数初值的重装载功能,被称为自动重加载工作方式。 在这种工作方式中,16位计数器分为两部分,即以tl0为计数器,以th0作为预置寄存器,初始化时把计数初值分别加载至tl0和th0中。当计数溢出时,不再像工作方式0和工作方式1那样需要“人工干预”用软件重新赋值,而是由预置寄存器th以硬件方法自动给计数器tl0重新加载。程序初始化时,给tl0和th0同时赋以初值,当tl0计数溢出时,置位tf0的同时把预置寄存器th0中的初值加载给tl0,tl0重新计数。如此反复,这样省去了程序不断给计数器赋值的麻烦,而且计数准确度也提高了。 但这种方式也有其不利的一面,就是这种工作方式的计数结构只有8位,计数值有限,最大只能到255。所以,只适合于重复计数的应用场合,如可以通过这样的计数方式产生中断,从而产生一个固定频率的脉冲;也可以当作串行数据通信的波特率发送器使用。工作方式3定时/计数器t0的工作方式3的电路逻辑结构图如下图所示。在工作方式3的模式下,定时/计数器t1的工作方式与之不同,下面分别进行讨论。 在工作方式3的模式下,定时/计数器t0被拆成两个独立的8位计数器tl0和th0。其中,tl0既可以作计数器使用,也可以作为定时器使用,定时/计数器t0的各控制位和引脚信号全归它使用。其功能和操作与工作方式0或工作方式1完全相同。这样,th0就没有那么多“资源”可利用了,只能作为简单的定时器使用,而且由于定时/计数器t0的控制位已被tl0占用,因此只能借用定时/计数器t1的控制位tr1和tf1,也就是以计数溢出去置位tf1,tr1则负责控制th0定时的启动和停止。 由于th0借用t1的标志,t1就无标志、控制可用了,因此只有在t1 以工作方式2 运行时,才使t0工作于工作方式3。2.1.3.2工作方式的选择上述4种工作方式的选择是用特殊功能寄存器tmod 的m1、m0 位来控制的,这两位有4种不同组合,参照对tmod结构的定义。在下表中对m1、m0的组合给出了具体的解释。m1m0工作方式注释00013位定时/计数器01113位定时/计数器102具有自动重装载功能的8位定时/计数器113定时器t0分为2个8位定时器,定时器t1无此功能2.1.3.3使用的at89c52芯片图使用的52芯片2.2 模块电路设计与比较频率测量方案选择: 方案一:直接测频法。把被测频率信号经过脉冲形成电路后加到闸门的一个输入端,只有在闸门开通时间 t(以秒计)内,被计数的脉冲被送到计数器进行计数。设计数器的值为n,由频率定义式计算得到被测信号频率为发fn/t。 方案二:测量周期法。将被测量信号经过过零检测后转换成方波信号,利用单片机查询两个上升沿,在此期间根据晶体振荡器产生的周期为 tc的脉冲送计数器进行计数,设计数值为n,则得被测量信号的周期值tx,然后取其倒数即为被测量信号的频率。 经分析,采用直接测频法在测量低频段信号时的相对测量误差较大,但在高频段测量信号的频率有较高的精度。如果采用测频法测量低频段50hz频率信号,要想提高精确度,势必会大幅度增加闸门开通时间t,时效性较差。相反,采用测量信号周期然后取其倒数的方法在低频段测量时精度很高。因此,本题在测量50hz左右的市电信号频率时采用方案二。方案二:软件设定比较值。采用软件判断电压过、欠压,省掉了硬件搭接,节省成本。故采用方案二。显示模块的选择:方案一:采用液晶显示。液晶显示功耗低,轻便防震。采用液晶显示界面友好清晰,操作方便,显示信息丰富。方案二:采用数码管显示。数码管亮度高、体积小、重量轻,但其显示信息简单、有限,由于在本题目中只要求显示频率值,所以应用数码管。 其他设计的考虑: 由于单片机接口线有限,我们采用一片 8255扩展口线,做相应的控制。 2.3 各功能模块硬件设计及实现本设计以单片机at89c51为控制核心,由实时时钟模块、电压检测模块、人机接口模块、等部分组成。电网电压、电网频率显示等功能。键盘用芯片7279控制,时钟芯片采用ds12887,温度传感器采用ds18b20。市电信号电压可通过更高精度的ad536a、icl7135等测得,频率可采用测周期法间接测得。此系统硬件简洁,将复杂的硬件功能用软件实现,因此系统控制灵活,能很好地满足本设计的基本要求和扩展要求。硬件设计是整个系统的基础,要考虑的方方面面很多,除了实现此设计基本功能以外,主要还要考虑如下几个因素:系统稳定度;器件的通用性或易选购性; 软件编程的易实现性;系统其它功能及性能指标;因此硬件设计至关重要。现从各功能模块的实现逐个进行分析探讨。2.3.1单片机控制系统单片机作为整个硬件系统的核心,它既是协调整机工作的控制器,又是数据处理器。它由单片机、时钟电路、复位电路等组成。为了简化电路、降低成本、提高可靠性,本系统采用at89c52作为主控制器,它是一款与mcs51完全兼容且内部自带有4kb的flash存储器及256kb ram单元的芯片,因此可以不需另外扩展eeprom及静态ram就可以实现所需功能。单片机最小系统是软硬件系统连接的桥梁。它包括: 1、 单片机89c512、 键盘管理芯片7289 3、 可编程外围并行接口芯片82554、 4*4键盘5、 led模块 6、 555电路模块其中单片机最小系统的电路图如图2-2所示。图2-2 单片机最小系统单片机的时钟信号用来提供单片机片内各种微操作的时间基准,时钟信号通常用两种电路形式得到:内部振荡和外部振荡。mcs-51单片机内部有一个用于构成振荡器的高增益反向放大器,引脚xtall和xtal2分别是此放大电器的输入端和输出端,由于采用内部方式时,电路简单,所得的时钟信号比较稳定,实际使用中常采用这种方式,如图2-2所示在其外接晶体振荡器(简称晶振)或陶瓷谐振器就构成了内部振荡方式,片内高增益反向放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起可构成一个自激振荡器并产生振荡时钟脉冲。图2-2中外接晶体以及电容c2和c1构成并联谐振电路,它们起稳定振荡频率、快速起振的作用,其值均为30p左右,晶振频率选6mhz。为了初始化单片机内部的某些特殊功能寄存器,必须采用复位的方式,复位后可使cpu及系统各部件处于确定的初始状态,并从初始状态开始正常工作。单片机的复位是靠外电路来实现的,在正常运行情况下,只要rst引脚上出现两个机器周期时间以上的高电平,即可引起系统复位,但如果rst引脚上持续为高电平,单片机就处于循环复位状态。复位后系统将输入/输出(1/0)端口寄存器置为ffh,堆栈指针sp置为07h, sbuf内置为不定值,其余的寄存器全部清0,内部ram的状态不受复位的影响,在系统上电时ram的内容是不定的。复位操作有两种情况,即上电复位和手动(开关)复位。本系统采用上电复位方式。图2-2中r9和cl组成上电复位电路,其值r取为1k, c取为22f.2.3.2 555电路模块555电路构成多谐振荡器555电路又称集成定时器,是一种数字、模拟混合型的中规模集成电路。它是一种产生时间延迟和多种脉冲信号的电路,由于内部使用了三个5ko电阻,故取名555电路。555电路含有两个电压比较器,一个基本rs触发器,一个放开关t,比较器的参考电压由3只5ko的电阻器构成的分压器提供。它们分别使高电平比较器a1和低电平比较器a2的反向输入端的参考电平为2/3vcc和1/3vcc。a1与a2的输出端控制rs触发器状态和放电管开关状态。当输入信号自6脚输入,即高电平触发输入并超过参考电平2/3vcc时,触发器复位,555的输出端3脚输出地电平,同时放电开关管导通;当输入信号自2脚输入并低于1/3vcc时,触发器置位,555的3脚输出高电平,同时放电开关管截止。2.3.3 高速a/d转换电路模块我们采用芯片icl7135作为高速a/d转换芯片为转换核心 ,该芯片为 位bcd码输出的的cmos集成电路,具有精度高,抗干扰能力强,分辨率能达到二万分之一,对电源变化稳定性高、高输入阻抗、自动调零、自动判别极性,性能价格比高。其输出为4位bcd码,5根扫描线,1根符号位以及“忙”、“运行/保持”、“过量程”、“欠量程”等辅助信号。完全能满足设计要求的精度指标。图 2-5 icl7135 高速 a/d 转换原理图 2.3.4 键盘模块 图2-8 键盘显示电路图2.3.5 led显示模块由于本次设计的数字频率计只需要显示测试出的频率值,显示内容简单,所以只需使用数码管显示即可。2.3.6 频率测量原理模块本系统测量市电信号的频率,即 50hz左右的频率信号,属于低频段信号频率测量,基于此实际,我们采用测量输入信号周期然后取倒数的方法测量信号的频率,即测周法,这样能提高测量的精度,测量信号周期的原理框图图 2-9所示,波形示意图如图2-10所示。 图2-9 信号周期测量原理图 图 2-10 频率测量计数波形示意图 第3节 系统软件设计硬件平台结构一旦确定,大的功能框架即形成。软件在硬件平台上构筑,完成各部分硬件的控制和协调。系统功能是由软硬件共同实现的,由于软件的可伸缩性,最终实现的系统功能可强可弱,差别可能很大。因此,软件是本系统的灵魂。软件采用模块化设计方法,不仅易于编程和调试,也可减小软件故障率和提高软件的可靠性。同时,对软件进行全面测试也是检验错误排除故障的重要手段。由于编程多涉及到数值运算,比较复杂,用我们平时常用的汇编语言编程是很难实现的,这里我们选用了移值性好、结构清晰、能进行复杂运算的c语言来实现编程。3.1系统主程序流程图设计开 始初始化led获取频率值设定t0计数,t1定时启动t0,t1设定计时1s=1s?是?y nled显示获取的频率值打开中断t0清零,t1恢复初值为了保证

温馨提示

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

评论

0/150

提交评论