IT学习联盟

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
IT学习联盟 门户 文章 嵌入式/单片机 查看内容

数字逻辑电路教学中的C语言描述和应用

2012-8-18 06:06| 发布者: admin| 查看: 710| 评论: 0

摘要:为了改进数字逻辑电路教学方法以适应电子技术迅猛发展的需要,我们探索和实践了数字逻辑电路教学的新方法,这就是基于计算机高级语言(C语言)的数字逻辑电路课堂教学和实验教学方法,本文重点介绍了本教学方法的特点以及实现方法。
关键词:教学改革;数字逻辑电路;C语言
中图分类号:G642 文献标识码:B
文章编号:1672-5913(2007)10-0090-03
  
  引言
  
  数字逻辑电路课是高等学校计算机科学技术专业的一门必修基础课。在计算机专业基础课程中,它是微机原理与应用、微机接口技术、计算机组成与系统结构等课程的前导课程,有着承上启下的重要地位。该课程从电子计算机的基本硬件组成及数字电子技术着手,对计算机的组成部件的基本电路工作原理展开讨论,使学生掌握有关计算机硬件方面的基础知识,尤其是各数字逻辑电路的基本功能,构成整机数字系统的技术,为培养学生对硬件系统的分析、设计、开发和使用能力打下最基本的基础知识。

  数字逻辑电路这门课程学习结果的好坏将对计算机专业的后续课程的学习产生很大的影响。数字逻辑电路是学好计算机专业基础课的必要途径,因此应该重视这门课程教学方法的改进。为了改革目前的数字逻辑电路课教学方法,我们探索了新的数字逻辑电路教学方法,即基于计算机高级语言的数字逻辑电路教学方法。本数字逻辑电路教学方法的特点是用计算机高级语言C语言对数字逻辑电路的基本功能进行描述和实验,也就是用计算机高级语言对我们在数字逻辑电路课程中讲解的全部基本数字逻辑电路进行表示。本方法特别适合与计算机专业的学生,因为计算机专业的学生在学习数字逻辑电路课程之前都学习过了计算机高级语言C语言。这使得他们能够较好的理解数字逻辑电路的这种表示方式,同时也能够使他们在学习数字逻辑电路的这种表示方式中复习计算机的高级语言,并且可以扩展学生的知识面,培养和训练学生的创新能力。它不但能够进行数字逻辑电路的基本教学,还可以用于数字逻辑电路的实验教学和课程设计。
  
1 数字逻辑电路的C语言描述
  
  C语言功能丰富,表达能力强,使用灵活方便,目标程序效率高,可移植性好,适合编写各种软件,尤其是系统软件,所以C语言已在诸多领域得到广泛的应用。目前许多高等院校,都在计算机专业开设了C语言课程。利用C语言可以编写出简洁、紧凑、高效的程序。C51是在完全支持标准C全部指令的基础上添加了许多用来优化8051指令结构的C的扩展指令而形成的,其程序结构也类似于标准C程序的编写。随着嵌入式技术的不断发展以及C语言在嵌入式应用中的不断普及,C程序设计技术在嵌入式系统中将得到广泛的应用。
  数字逻辑电路通常分为组合数字逻辑电路和时序数字逻辑电路两大类,组合数字逻辑电路常用的描述方法是逻辑图、逻辑代数式、真值表和卡诺图,它们均可对同一个组合逻辑问题进行描述,知道其中的任何一个,就可以推出其余的三个。随着EDA技术的发展,目前又出现了硬件描述语言的数字逻辑电路描述法。与用硬件描述语言类似的方法,本文探索了在微控制器中的C51程序描述法。例如对一个三变量的一致电路的描述:
  三变量的一致电路就是当A、B、C三个变量一致时,电路输出高电平;当三个变量不一致时,电路输出低电平。
用逻辑代数式表示为:F=ABC+  

用C51语言描述为:
  Main()
  { sbit a=P1.0; // 定义布尔输入变量a是微控制器的P1.0口
  sbit b=P1.1; // 定义布尔输入变量b是微控制器的P1.1口
  sbit c=P1.2; // 定义布尔输入变量c是微控制器的P1.2口
  sbit f=P2.0; // 定义布尔输出变量f是微控制器的P2.0口
  while(1){ // 无限循环
  P1=0xff;
  if (a==b==c)
  f==1;
  elsl f==0;
  }
  } // P1为输入口,P2为输出口
  从以上的C51程序可以看出,这样的数字逻辑电路描述方法,对于计算机专业的学生,只要学习过C语言是非常容易理解的,而且用该方法描述的数字逻辑电路也容易用下面介绍的实验方法中得到验证。

2 在教学中的应用原则
  
  2.1教学重点
  笔者认为对于计算机专业的数字逻辑电路课,教学重点在于让学生能够很好地理解常用数字逻辑电路的逻辑功能,至于这些数字逻辑电路的实现方法有一些概念就可以了,没有必要掌握数字逻辑电路的中小规模集成电路实现方法。而这些中小规模集成电路实现的数字逻辑电路在我们目前所用的教材中往往是重点讲解的,这点对于计算机专业的学生就不是很合适。事实上,本文探索的用C51程序描述数字逻辑电路,就是基于微控制器的用软件实现的数字逻辑电路。这就是说数字逻辑电路课程的重点内容是理解数字逻辑电路的逻辑功能。而具体用什么方法实现这个逻辑功能就不是太重要了。用中小规模集成电路、可编程逻辑电路和软件来实现都是可以的。2.2应用实例
  根据笔者的多年教学实践经验,在计算机专业的数字逻辑电路课程教学中,灵活运用本文论述的C51程序描述法,结合传统的数字逻辑电路的描述方法,取得到了较好的教学效果。
  如:对于在计算机专业中用到的较多的逻辑电路“译码器”。用逻辑代数描述为:
  
  用C51程序可以描述为:
  main()
  { sbit a=P1.0; // 定义布尔输入变量a,b,c为微控制器的P1口
  sbit b=P1.1;
  sbit c=P1.2;
  sbit y0=P2.0; // 定义布尔输出变量y0~y7是微控制器的P2口
  sbit y1=P2.1;
  sbit y2=P2.2;
  sbit y3=P2.3;
  sbit y4=P2.4;
  sbit y5=P2.5;
  sbit y6=P2.6;
  sbit y7=P2.7;
  while(1){ // 无限循环
  P1=0xff;
  y0=y1=y2=y3=y4=y5=y6=y7=0;
  if (a==0&&b==0&&c==0) y0=1;
  if (a==0&&b==0&&c==1) y1=1;
  if (a==0&&b==1&&c==0) y2=1;
  if (a==0&&b==1&&c==1) y3=1;
  if (a==1&&b==0&&c==0) y4=1;
  if (a==1&&b==0&&c==1) y5=1;
  if (a==1&&b==1&&c==0) y6=1;
  if (a==1&&b==1&&c==1) y7=1;
  }
  }
  因此,在数字逻辑电路课程中,让学生懂得作为计算机专业的学生,单单学会数字逻辑电路的硬件实现方法是不够的,还应当让学生从一开始就重视学习计算机软硬件的相互关系。如果教师在数字逻辑电路课程的教学中运用本文论述的方法,引导学生从计算机软件和硬件层次上去认识数字逻辑电路知识,对学生学好后续专业课程有着积极的促进意义。
  
3 实验教学方法
  
  3.1硬件结构
  本实验方法的硬件部分主要由PC机以及微控制器电路和多个LED电路组成。微控制器选用Philips公司生产的P89C51RD2BN。该芯片内部集成了多种功能部件,如四个8位的数字I/O口,8路A/D转换接口、UART、定时器、看门狗定时器和FLASH存储器等。微控制器的主要功能是:用户输入输出端口状态扫描输入,用户输入输出端口信号输入和数字信号显示等。实验硬件组成框图如图1所示。
  
  图1 实验硬件组成框图
  
  3.2ISP实现原理
  本实验方法的关键是ISP技术。P89C51RD2BN的系统编程是通过标准RS232串口来完成的,它是一种内嵌的在线可编程。内部有一系列的硬件资源,当微控制器对自身的Flash存储器进行编程时,所有底层操作都由这些内部资源来完成。ISP编程不需要将微控制器从系统中取出,只要用一个开关将PSEN强行拉低,ALE管脚悬空,系统便在上电复位后进入ISP状态。通过免费的编程软件Flashmagic下载二进制文件到微控制器,就可以运行程序了。
  3.3实验方法
  如图1所示,实验时先把ISP控制开关放置在ISP位置上,在PC机上输入需要实现的数字逻辑电路的C51程序,然后经过C51编译器编译,生成二进制文件形式的目标程序文件,然后使用Flashmagic软件把目标程序下载到微控制器中,再把ISP控制开关放置到微控制器的正常工作状态,按动复位按钮,微控制器中的程序就可以正常运行了。这时可以在输入拨位开关上输入数字信号,在LED上可以观察到这个实验数字逻辑电路的逻辑功能的实现结果。改变输入拨位开关上输入的数字信号,可以得到不同的数字信号输入,在LED中可以观察分析实验数字逻辑电路的全部逻辑功能。
  运用本实验方法进行的数字逻辑电路实验,由于实验所用到的硬件设备,除PC机以外的成本是极低的,可以实现把实验带回家的实验理念。在家里进行各种有创造性的实验。让学生真正成为实验学习的主人。
  
4 结束语
  
  本文论述的数字逻辑电路C语言描述方法具有易懂、直观、有创新性的特点。用该教学方法的实验装置结构简单、成本较低、维护方便、性能可靠。可以进行简单的组合数字逻辑电路实验,也可以进行时序逻辑电路的实验,能够搭建多种趣味电路。能满足基本教学的需要,也可以进行综合性、设计性实验。

Archiver|IT学习联盟| 网站地图

Powered by Discuz! X2.5© 2001-2010 世界学习室 大伟制作

GMT+8, 2018-8-16 17:47 , Processed in 0.061514 second(s), 12 queries .