基于单片机的交通灯的设计(程序仿真+电路图+任务书+说明书)_第1页
基于单片机的交通灯的设计(程序仿真+电路图+任务书+说明书)_第2页
基于单片机的交通灯的设计(程序仿真+电路图+任务书+说明书)_第3页
基于单片机的交通灯的设计(程序仿真+电路图+任务书+说明书)_第4页
基于单片机的交通灯的设计(程序仿真+电路图+任务书+说明书)_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

第0页共40页摘要交通信号灯常用于交叉路口,用来控制车的流量,提高交叉口车辆的通行能力,减少交通事故。随着近年来科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。交通信号灯控制方式很多。本设计是才用一般自动控制方式结合紧急紧急情况下以及在某特殊情况下控制十字路口的交通单道让车。本设计在采用系统模式为了需要,使用了单片机AT89C52,用给交通灯的相近的发光二级管,在通过系统控制达到预期效果。关键词单片机;交通灯;数码管目录摘要.1第章绪论.2第2章方案比较与系统论证.42.1关于数子电路的方案.42.2关于单片机的方案.42.3系统论证.5第3章硬件设计.63.1单片机AT89C52.63.1.1AT89C52的引脚排列及组成介绍.73.1.2AT89C52单片机的信号流向电路图及工作原理.83.2单片机时钟电路.93.2.1时钟电路工作原理.93.2.2时钟电路工参数及计算.93.3单片机复位电路.103.4交通灯循环显示电路.113.5数码管显示电路.123.5.1数码管显示原理.123.5.2数码管显示电路.123.6中断电路.14第4章软件设计.164.1子程序设计.164.1.1数码管显示.164.1.2子程序.16I4.2交通指示灯点亮.174.2.1子程序.174.3状态显示.194.3.1流程图.194.3.2程序.194.4定时中断.214.4.1中断流程图.214.4.2程序.214.3主程序设计.224.3.1主程序流程图.224.3.2主程序.22第5章系统调试与仿真.265.1仿真软件的介绍.265.2交通灯仿真.26总结.30参考文献.31附录1电路原理图.32附录2元件明细表.33附录3源程序.34第2页共40页第章绪论在现代城市中,人口和汽车日益增长,市区交通也日益拥挤,人们的安全问题也日益重要。因此,红绿交通信号灯成为交管部门管理交通的重要工具之一。交通信号灯常用与交叉路口,用来控制车的流量,提高交叉口车辆的通行能力,减少交通事故。有了交通灯人们的安全出行有了很大的保障。自从交通灯诞生以来,其内部的电路控制系统就不断的被改进,设计方法也开始多种多样,从而使交通灯显得更加智能化、科学化、简便化。尤其是近几年来,随着电子与计算机技术的飞速发展,电子电路分析和设计方法有了很大的改进,电子设计自动化也已经成为现代电子系统中不可缺少的工具和手段,这些为交通灯控制电路的设计提供了一定的技术基础。随着我国社会经济的发展,城市化、城镇化进程的加快,道路交通堵塞问题日趋严重,如何对交通进行合理的管理和调度而尽可能减少堵车现象成为目前我国很多地方尤其是特大城市急需解决的问题,显然交通灯在其中起着不可缺少的作用。当今,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这一技术在19世纪就已出现了。1858年,在英国伦敦主要街头安装了以燃煤气为光源的红、蓝两色的机械扳手式信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两种旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。电气启动的红绿灯出现在美国,这种红绿灯由红绿黄三色圆形的投光器组成,1914年开始安装于纽约市5号大街的一座高塔上。红灯亮表示“停止”,绿灯亮表示“通行”。1918年,又出现了带控制的红绿灯和红外线红绿灯。带控制的红绿灯,一种是把压力探测器安在地下,车辆一接近红灯便变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯时按一下嗽叭,就使红灯变为绿灯。红外线红绿灯当行人踏上对压力敏感第3页共40页的路面时,它就能察觉到有人要过马路。红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。1968年,联合国道路交通和道路标志信号协定对各种信号灯的含义作了规定。绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口,而我们在本设计中按照常规假设一个十字路口为东西南北走向,有南北干道和东西干道的十字路口交通灯系统,每条道路设两组信号灯,每组信号灯由红、黄、绿3个灯组成,绿灯表示允许车辆通行,红灯表示禁止通行,黄灯为过渡灯,表示该车道上已过停车线的车辆继续通行,未过停车线的车辆禁止通行,因此有4种一般状态,分别有:状态1:南北干道红灯亮,东西干道绿灯亮。此时南北干道禁止车辆通行,东西干道允许车辆通行,当东西干道绿灯亮够规定时间后,系统发出状态转换信号,系统进入下一个状态;状态2:南北道红灯持续亮,东西干道黄灯闪亮。此时南北干道禁止车辆通行,东西干道允许超过停车线的车辆通行,而未超过停车线的车辆禁止通行。当东西干道红灯亮够规定的时间后,系统发出状态转换信号,系统进入下一个状态;状态3:南北道绿灯亮,东西干道红灯亮,此时南北干道允许车辆通行,东西干道禁止车辆通行。当南北干道绿灯亮够规定的时间后,系统发出状态转换信号,系统进入下一个状态。状态4:南北干道黄灯闪亮,东西干道红灯持续亮。此时南北干道禁止车辆通行,南北干道允许超过停车线的车辆通行,而未超过停车线的车辆禁止通行。当东西干道红灯亮够规定的时间后,控制器发出状态转换信号,系统进入下一个状态-在不是特殊的情况下循环下去。在除正常情况下还有特殊状态功能:在十字路口交通出现混乱的时候,按下特殊按键1使南北、东西都亮红灯,使各个方向的车辆停下来;在一定的情况下,特使某一干道让另一干道的车辆通过。按下特殊按键2,是某干道亮红灯,另一边亮绿灯。第4页共40页第2章方案比较与系统论证2.1关于数子电路的方案控制器定时器脉冲信号译码器显示交通灯图2-1方案一如图2-1是采用数字电路模式交通灯,系统主要由秒脉冲信号发生器、定时器、控制器、译码器、信号灯显示器组成。其中控制器是核心部分,由它控制定时器和译码器的工作,秒脉冲信号发生器产生定时器和控制器所需的标准时钟信号,译码器输出两路信号灯的控制信号。2.2关于单片机的方案AT89C52单片机时钟电路数码管显示电路中断电路复位电路交通灯循环显示电路图2-2方案二如图2-2电路框图,利用单片机AT89C52为核心元件进行设计在设计中以T0作定时器,需要12个发光二极管分别代表东南西北四个方向的指示。综合上述和结合实际以上两种方案,数字电路方案电路复杂,元器件用量多,参数计算多,采用了数子电路和模拟电路两方面知识,并且采用独立电源,会使系统更复杂,且可能影响电路电平。而单片机方案电路简单明了,元器件用量少,只用到了单片机一方面知识,而设计到其其它的知识相对较少,并且采用单片机控制模块提供第5页共40页电源,更加使系统简明扼要。对于现实而言,节约成本,而在现在集成模块的年代,设计电路应该尽量使用模块化设计。对工程设计人员来说,将来的产品无论从修改还是升级考虑对有好处,因此我觉得应该尽可能的简单化设计,在有可能的条件下将设计模块化,所以本系统采用单片机来设计交通灯控制器。2.3系统论证根据下达的任务书,本设计在不中断的情况下有4种一般状态循环,在中断是有三种状态,用表格的方式表示出来如下表2-1:表2-1交通灯显示状态表状态南北干道东西干道时间(S)状态1红灯亮,禁止通行绿灯亮,允许通行30S状态2红灯亮,禁止通行绿灯灭,黄灯闪亮继续上一次的时间状态3绿灯亮,允许通行红灯亮,禁止通行30S状态4绿灯灭,黄灯闪亮红灯亮,禁止通行继续上一次的时间手控紧急情况红灯亮,禁止通行红灯亮,禁止通行10S手控特殊情况1红灯亮,让道绿灯亮,先行通过时间05S手控特殊情况2绿灯亮,先行通过红灯亮,让道时间05S状态1:南北干道红灯亮30S,东西干道绿灯亮25S。此时南北干道禁止车辆通行,东西干道允许车辆通行,当东西干道绿灯亮够规定时间后,系统发出状态转换信号,系统进入下一个状态;状态2:南北道继续红灯亮,东西干道黄灯闪亮5S。此时南北干道禁止车辆通行,东西干道允许超过停车线的车辆通行,而未超过停车线的车辆禁止通行。当东西干道红灯亮够规定的时间后,系统发出状态转换信号,系统进入下一个状态;状态3:南北道绿灯亮25,东西干道红灯亮30S,此时南北干道允许车辆通行,东西干道禁止车辆通行。当南北干道绿灯亮够规定的时间后,系统发出状态转换信号,系统进入下一个状态。状态4:南北干道黄灯亮5S,东西干道红灯持续亮。此时南北干道禁止车辆通行,南北干道允许超过停车线的车辆通行,而未超过停车线的车辆禁止通行。当东西干道红灯亮够规定的时间后,控制器发出状态转换信号,系统进入下一个状态在不是特殊的情况下循环下去。在除正常情况下还有特殊状态功能:在十字路口交通出现混乱的时候,按下特殊按键1,使南北、东西都亮红灯,使各个方向的车辆停下来,时间设为10S;在一定的情况下,特使某一干道让另一干道的车辆通过。按下特殊按键2,是某干道亮红灯,另一边亮绿灯。第6页共40页第3章硬件设计由第2章的方案比较确定用2方案,现在本章以AT89C52芯片为核心来介绍硬件单元。3.1单片机AT89C52单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。单片机经过1、2、3代的发展,目前单片机正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗。89C52内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。1.程序存储器(ROM):89C52共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。2.定时/计数器(ROM):89C52有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。3.并行输入输出(I/O)口:89C52共有4组8位I/O口(P0、P1、P2或P3),用于对外部数据的传输。4.全双工串行口:89C52内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。5.中断系统:第7页共40页89C52具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。6.时钟电路:89C52内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但89C52单片机需外置振荡电容。单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(Princeton)结构。3.1.1AT89C52的引脚排列及组成介绍AT89C52单片机及引脚如图3-1所示。图3-1AT89C51引脚排列AT89C52引脚排列如图2-1所示,采用标准40引脚双列直插式封装。它的内部有128个8位用户数据存储单元和128个专用寄存器单元起统一编址作用;4096个8位掩膜ROM,用于存放用户程序,原始数据或表格;两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。而它的外部共有4组8位I/O口(P0、P1、P2或P3),用于对外部数据的传输;一个全双工串行通信口,用于与其它设备间的串行数据传送;两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。其外引脚功能见表3-1所示。第8页共40页表3-1AT89C52引脚功能引脚名称引脚功能P0.0-P0.7P0口八位双向端口线P1.0-P1.7P1口八位双向端口线P2.0-P2.7P2口八位双向端口线P3.0-P3.7P3口八位双向端口线ALE地址锁存控制信号psen外部程序存储器读选通信号a访问程序存储控制信号RST复位信号XTAL1和XTAL2外接晶体引线端由于工艺标准化等原因,芯片的引脚数目是有限的。为了满足实际需要部分信号引脚被赋予双重功能,即第一功能和第二功能。最常用是8条P3口所提供的第二功能,在本设计中将也会用到一部分第二功能,如表3-2所示。表3-2P3各引脚的第二功能第一功能第二功能第二功能信号名称P3.0RXD串行数据接收P3.1TXD串行数据发送P3.2int0外部中断0申请P3.31外部中断1申请P3.4T0定时/计数器0外部输入P3.5T1定时/计数器1的外部输入P3.6wr外部RAM或外部I/O写选通P3.7d外部RAM或外部I/0读选通3.1.2AT89C52单片机的信号流向电路图及工作原理通过以单片机AT89C52为核心,用4组TRAFFIC型号的灯代替交通灯,P1端口允许端接低电平,因此使其点亮相应输入端为低电平。4个两位集成数码管的位选端分别接到P2口,段选端分别与P0口相连。当遇到紧急情况时,外部中断0发生响应,两个方向上的红灯都亮,以便处理紧急事件,假设紧急是通过路口的时间为10秒,紧急过后,交通灯恢复中断前的状态,当有特殊车到达时,外部中断1发生响应,某一干第9页共40页道上红灯亮,另一干道上绿灯亮,以便让特殊车通过,假设特殊车通过路口的时间为5秒,特殊车通过后,交通灯恢复中断前的状态。图3-2AT89C52单片机的信号流向电路图如图3-2所示,单片机正常工作情况下,从P1.0到P1.5的6个端口输出的高电平,使交通灯点亮。从P2.0到P2.7的8个端口输出的低电平信号输入数码管使能端和P0.0到P0.1的两个端口输出的高电平输入数码管的选通端共同控制外部数码管电路的正常工作,而从P3.2到P3.3的两个端口输入的低电平信号控制电路的特殊情况和紧急情况。3.2单片机时钟电路单片机时钟电路是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应该在唯一的时钟信号控制下严格地按时序进行工作。时钟电路用于产生单片机工作的时钟信号。3.2.1时钟电路工作原理在MCS-51系列单片机内部有个高增益反相放大器,器输入引脚为XTAL1,其输出端引脚为XTAL2。只要在XTAL1和XTAL2之间跨接晶体振荡器和微调电容,就可以构成一个稳定的自激振荡器,如图3-3所示。3.2.2时钟电路工参数及计算时钟电路一般的,电容C1和C2取30pF左右;晶体振荡器的频率范围是1.2-第10页共40页12MHz。由于晶体振荡频率越高,系统的时钟频率也越高,单片机的运行速度也就越快。因此去振荡频率为12MHz。单片机采用晶振频率为12MHZ的振荡周期(或外部引入的时钟周期)为最小的时序单位,片内的各种微操作都以此周期为时序基准。振荡频率二分频后形成状态周期。图3-3时钟振荡电路或称s周期,所以,1个状态周期包含有2个振荡周期。振荡频率foscl2分频后形成机器周期MC。所以,1个机器周期包含有6个状态周期或12个振荡周期。1个到4个机器周期确定一条指令的执行时间,这个时间就是指令周期。AT89C52单片机指令系统中,各条指令的执行时间都在1个到2个机器周期之间。4种时序单位中,振荡周期和机器周期是单片机内计算其它时间值(例如,波特率、定时器的定时时间等)的基本时序单位。下面是单片机分别外接晶振频率12MHZ时的各种时序单位的大小:振荡周期1/fosc=1/12MHZ=0.0833us状态周期=0.0167usfosc2MHz1机器周期=1usf指令周期=(14)机器周期=14us。时钟电路如图3-4所示。3.3单片机复位电路无论是在单片机刚开始接上电源时还是断电后或者发生故障都要复位。单片机复位是使CPU和系统中的其他功能部件都恢复到一个确定的初始状态,并从这个状态开第11页共40页始工作,例如复位后PC=000H,使单片机从程序储存器的第一个单元取指令执行。单片机的复位的条件是:必须使RST(第9引脚)加上持续周期(即24个脉冲震荡周期)以上的高电平。若时钟频率为12MHz,每个机器周期为1uS,则需要加上持续2uS以上时间周期的高电平。上电复位要求电源接通后,单片机自动复位,其上电位复位电路如图3-5所示。图3-4内部时钟电路图图3-5上电复位电路图3.4交通灯循环显示电路交通灯可以通过电流的不同显示不同的颜色,从而指示系统的状态,让人们对该时刻的情况做出正确的判断以及处理,一般它显示的颜色有红光、绿光,蓝光、黄光第12页共40页等等。而本设计采用的交通灯显示的颜色是红光、黄光、绿光。图3-6发光二极管循环显示电路图根据要求设计的循环显示电路如图3-6所示。12个交通灯其工作过程为,当P1.0的为高电平时,直接从从P1.0端接线端标号P1输入对应的交通灯标号P1出对应的红灯而点亮控制的东西方向红灯,其余端口原理与上述相同。3.5数码管显示电路3.5.1数码管显示原理LED数码管外部结构及管脚图3-7、图3-8所示,而三极管本身可分为共阳极和共阴极两种结构,本设计使用的是共阳极数码管。共阳极数码管内部结构如图3-9所示,8个发光二极管的阳极所示,8个发光二极管的阳极连接在一起,作用为公共控制端(com),接高电平。阴极作为“段”控制端,显示不同的字符。如显示一时,b、c两端接低电平,其它各段接高电平。3.5.2数码管显示电路数码管显示电路如图3-10所示。第13页共40页图3-7LED数码管图3-8数码管引脚图3-9共阳极数码管内部结构如图3-10所示,数码管的显示电路有四个两位的7段数码管组成,从左到右分别表示东南西北四个方向的倒计时显示,并利用P2口同时控制四个数码管内的每段二极管被点亮和利用P0口同时驱动四个数码管的个位或十位被点亮,又因为P0口做输出端,所以必须接上拉电阻才有高电平输出。综合上述,由于采用的是共阳极数码管,所以当P2.0端口为低电平时,对应的四个数码管的“a”段二极管同时被点亮,其余端口指示数码管内的二极管被点亮原理与上述相同。并由于采用的是动态驱动方式,所以当P0.0为高电平时,数码管的十位被驱动,当P0.1为高电平时,数码管的个位被驱动,又因为个位与十位间的延时时间很短,所以从肉眼看数码管的个位和十位可第14页共40页近似为同时被驱动进行倒计时。图3-10数码管显示电路图3.6中断电路中断是通过该改CPU的运行方向。计算机在执行程序的过程中,外部设备向CPU发出中断请求信号,要求CPU暂时中断当前程序的执行而转去执行相应的处理程序,待处理程序执行完毕后,再继续执行原来的被中断的程序。这种程序在执行过程中由于外界原因而被中间打断的情况。在AT89C51中,中断源有5个,分别为外部中断、外部中断1请求、0INTINTT0溢出中断请求TFO、T1溢出中断和串行口中断请求RI或TI。本设计采用中断源和两个。0INT1中断电路如图3-11所示。根据图3-11所示,由P3口的第二功能可知,P3.2和P3.3分别控制交通灯的紧急情况和特殊情况,当按下P3.2端口的按钮,P3.2口被送入低电平信号到单片机,外部中断0发生相应,系统进入紧急情况状态,当中断倒计时时间到时,系统恢复到原有第15页共40页状图3-8中断电路图态;当按下P3.3端口的按钮,P3.3口被送入低电平信号到单片机,外部中断1发生相应,系统进入特殊情况状态,当中断倒计时时间到时,系统恢复到原有状态。第16页共40页第4章软件设计系统的软件设计也是工具系统功能的设计。单片机软件的设计主要包括执行软件的设计和监控软件的设计。单片机的软件设计通常要考虑根据软件功能要求,将系统软件划分为若干个相对独立的部分,设计出合理的总体结构,使软件开发清晰、简洁和流程合理;4.1子程序设计子程序包括显示子程序和状态子程序,分别用于数码管显示和状态转换。4.1.1数码管显示如下图4-1所示。点亮数码管的十位点亮数码管的个位初始化赋值显示数字开始图4-1显示灯流程图4.1.2子程序voiddisplay()/数码管倒计时显示P0=0xfd;P2=ledtemp/10;第17页共40页delay(1);P0=0xfe;P2=ledtemp%10;delay(1);voiddisplay_zd()/数码管中断倒计时显示P0=0xfd;P2=ledtemp1/10;delay(1);P0=0xfe;P2=ledtemp1%10;delay(1);4.2交通指示灯点亮如下图4-2所示。设定时间南北对应交通灯点亮东西对应交通灯点亮开始结束图4-2交通灯点亮流程图4.2.1子程序voidzhishi()/东西方向第18页共40页if(temp!=0)p12=1;p13=1;if(temp2)flag=1;voidt1()interrupt3TH1=(65536-50000)/256;TL1=(65536-50000)%256;shu+;if(shu=200)shu=0;tp=0;/EX1=0;第21页共40页4.4定时中断4.4.1中断流程图中断流程图如图4-4所示。图4-4中断流程图4.4.2程序voidint0()interrupt0if(p32=0)for(temp1=10;temp10;)P1=0x09;temp1-;display_zd();delay(200);第22页共40页delay(200);delay(200);delay(200);delay(200);voidint1()interrupt2if(p33=0)tp=1;flag1+;if(flag12)flag1=1;4.3主

温馨提示

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

最新文档

评论

0/150

提交评论