在《单片机原理》精品课程培训中,张教授与杨教授的学识,理论与实践教学的独特见解与认识给我留下很深的印象。在单片机课程的建设思路、教学理念方面,对于本人冲击很大。以下就单片机课程建设,谈谈本人的心得体会:
本人所在的黄山学院是一所省属地方院校,培养电子学科本科人才的目标是:学生具备必要的电子信息专业相关理论知识,具备较强的实践动手能力,成为能够解决实践工程问题的现场工程师,为地方经济建设服务。
《单片机原理》是一门硬件与软件相结合的实践应用性极强的综合性课程。设置的主要目的是培养、提高学生的工程应用能力和创新实践能力,在课程体系中占有非常重要的地位。
张教授在培训中提出单片机课程教学以芯片为基础、以接口为主线、以系统设计为目的。该理念非常符合应用型人才培养的目标与单片机课程的特点。
《单片机原理》是常规电子技术和计算机技术结合的典型应用,要让学生很好掌握该课程,所需要的基础知识有电子技术知识(电路分析基础、模拟电路、数字电路、高频电路)、微处理器结构与原理、测控技术、通信技术与数据处理等知识。
在我校的电子专业课程设置中,以上所提课程都已经包含在培养方案中,课程体系的科学优化显得很重要。这里就对微机原理课程与单片机课程的衔接安排提一些看法。目前,我校是先上《微机原理及接口技术》,后上《单片机原理及应用》。学生在接触单片机课程时,基本上感觉两门课程比较相似。有的老师也提出在课程体系中删除《微机原理》,本人觉得不能进行简单的删除,而是要科学合理对《微机原理》与《单片机原理》衔接处理。微机原理课程的开设,主要是帮助学生理解计算机基础原理及结构,熟悉8086/8088CPU原理、熟悉汇编编程及应用。微机原理课程的价值在于深入了解微处理器结构与原理,接口技术、汇编程序编程。这些对于学生学习单片机课程非常有效。也因此《单片机原理》的授课应强调单片机的结构,尤其是接口的结构与应用、内部模块资源的应用,要强化应用。两门课程改革兼顾压缩学时,保证51单片机的熟练应用,了解8086计算机体系结构,学习微机接口技术的目的,改革解决存在的理论教学与实验脱节、实际应用及技术发展脱节的问题。
在培训中,杨教授多次提出单片机程序设计言语的汇编与C言语的处理问题。单片机的编程与其他软件程序最大的不同是要求对单片机硬件很熟,用软件编程实现对硬件的控制。汇编言语是直接面对硬件的,目标代码质量高,执行效率高。如编写延时程序,使用汇编程序实现更精确。而C言语更加简洁,有助于学生编程思维的培养。毕业生从事单片机工作,主要编程也以C言语编程较多,当然汇编言语也常常用到。本人的教学与单片机应用中的体会是,汇编言语与C言语两者都要在课堂上讲授,由于《微机原理》已经有汇编程序编程章节,所以在单片机课程中可以压缩汇编程序部分,重点讲授单片机留出时间讲授C程序设计部分。两者的教学时间安排要与各个学校的课程教学学时相协调。
由于《单片机原理》的实践应用强的特点,实践教学就显得更加重要,目前单片机课程实践教学大都包含课程配套实验与课程设计环节。我校目前单片机课程配套实验是在周立功试验箱上做的,主要是基础实验与综合实验,从教学效果来看,不够理想:在有限的实验时间内,学生往往就是做些验证性的重复工作。因此,除了保证正常的实验教学外,实验室还应该在业余时间开放,给有兴趣的学生提供实验场所和必要的设备及材料。通过开放实验室的做法可以使学生在验证性实验的基础上进行设计性、综合性的实验,使得自主性的实验变成可能。
单片机课程设计在黄山学院已经开展了三年,由于师资力量以及硬件等原因,存在的问题是设计题目不够丰富;指导的力量不足;软件仿真还不够普及。通过这次培训,从张教授与杨教授的授课以及与参加培训的同行交流,获得了不少宝贵意见。
培训中张教授积极推荐应用proteus仿真软件,在单片机中,所有的硬件电路设计、对应软件其实都可以在keil及proteus平台上进行。keil完成单片机软件设计调试, proteus完成硬件设计及系统运行结果查看。用它来做单片机的仿真分析、设计无疑是很方便的。它极大地开拓了单片机学习的空间,降低了单片机的学习成本,提高了学习效果。
作为一所地方本科院校,黄山学院着力培养实用型人才,培养学生的动手操作能力和创新能力。目前各高校积极参与的大学生科技创新活动,黄山学院也已经参与进来,参加大学生电子设计大赛、单片机设计大赛、飞思卡尔智能小车大赛,机器人比赛以及校级的学生科研立项。以这些比赛都与单片机课程紧密相关,在各项竞赛引导下,单片机课程加快引进新技术,进行相关理论教学与实践教学的教学改革,完善开放实验室、虚拟实验室以及学生创新实验室建设,加强工程实践能力培养,重视创新教育的探索和实践。
以上是本人对于《单片机原理》课程建设的一些看法以及教学实践体会,以后还要在教学中加强自身学习与交流,不断更新充实教学内容,改进教学手段,积极引入EDA技术,使单片机课程教学跟上电子信息学科的发展。
孙剑
1、引言
随着人们生活环境的不断改善和美化,在许多场合可以看到彩色霓虹灯。LED彩灯由于其丰 富的灯光色彩,低廉的造价以及控制简单等特点而得到了广泛的应用,用彩灯来装饰街道和城市建筑物已经成为一种时尚。但目前市场上各式样的LED彩灯控制器大多数用全硬件电路实现,电路结构复杂、功能单一,这样一旦制作成品只能按照固定的模式闪亮,不能根据不同场合、不同时间段的需要来调节亮灯时间、模式、闪烁频率等动态 参数。这种彩灯控制器结构往往有芯片过多、电路复杂、功率损耗大等缺点。此外从功能效果上看,亮灯模式少而且样式单调,缺乏用户可操作性,影响亮灯效果。因此有必要对现有的彩灯控制器进行改进。
本文提出了一种基于AT89C51单片机的彩灯控制方案,实现对LED彩灯的控制。本方案以AT89C51单片机作为主控核心,与键盘、显示、驱动等模块组成核心主控制模块。在主控模块上设有8个按键和5位七段码LED显示器,根据用户需要可以编写若干种亮灯模式,利用其内部定时器T0实现一个基本单位时间为5 ms的定时中断,根据各种亮灯时间的不同需要,在不同时刻输出灯亮或灯灭的控制信号,然后驱动各种颜色的灯亮或灭。该新型LED彩灯及其控制器是上海某公司委托开发产品,产品实际应用效果较好,亮灯模式多,用户可以根据不同场合和时间来调节亮灯频率和亮灯时间。与普通LED彩灯相比,具有体积小、价格低、低能耗等优点。?
摘要:介绍了一种新型的LED彩灯控制系统的设计方法,以AT-89C51单片机作为主控核心,与按键、显示器等较少的辅助硬件电路相结合,利用软件实现对LED彩灯进行控制。本系统具有体积小、硬件少、电路结构简单及容易操作等优点。
关键词:LED彩灯;AT89C51单片机;彩灯控制器;模块设计
2、系统功能
新型LED彩灯分为2部分,即彩灯控制器(主控模块)和管内LED板模块(受控模块)。彩灯控制器可直接与220 V交流市电相连接,经过开关电源变换,输出直流工作电压,一方面为管内LED模块提供12 V工作电源,另一方面为主控模块单片机系统(彩灯控制器)提供5 V工作电源。整个系统工作由软件程序控制运行,根据需要,用户可以在LED彩灯工作时通过主控模块上的按键来设定亮灯时间和灯光闪动频率。
上电后系统经过初始化,查询是否有功能切换键按下:有,则进入用户设定模式状态;无,则进入默认缺省工作状态。在用户设定模式状态下,用户可以根据个人爱好及不同场合的需要来指定调用哪些模式,并且可以改变每种模式的时间Ti、频率Fi参数,如果用户想进入缺省状态模式,只需按一下功能切换键即可跳入缺省模式,程序会自动顺序调用亮灯模式;在缺省工作状态下,LED彩灯控制器按照程序设定好的若干亮灯花样模式程序Model_i顺序调用往下走,从第Model_1模式开始工作,自Model_1到Model_2……到Mod el_n为一个亮灯周期,然后再回到Model_1循环继续工作,同样如果想进入用户设定模式状态,只需按下功能切换键即可。整个n种亮灯模式时间可以看作一个大周期T,其中的每一种花样工作模式Model_i(i=1,2,…,n)时间为小周期Ti,对于每一个模式编写一个独立工作子程序Model_i,其中设定了LED三色灯(红、绿、蓝)的点亮时刻(RED_on,GREEN_on,BLUE_on)和熄灭时刻(RED_off,GREEN_off,BLU E_off),以及模式工作时间Ti以及该模式LED闪烁频率Fi。5位七段码显示器的前2位(L1,L2)显示当前工作模式的序号Model_i;后3位(L3,L4,L5)七段码 显示三色LED的工作状态,若该颜色灯点亮则对应七段码显示位为“1”,反之熄灭时则显示位为“灭”即不显示,对系统工作状态起到了很好的实时监控作用。
因此在LED彩灯上电工作后,用户可以方便地通过主控模块上的显示器知道LED彩灯当前工作模式Model_i,工作时间Ti,频率Fi等实时参数。若实际应用需要根据不同场合和时间来改变彩灯闪亮效果,用户可以通过主控模块上的按键来设定LED不同的闪烁频率Fi和亮灯时间Ti,以便符合实际需要。此外如果用户对某一种模式感兴趣需要仔细观看该种亮灯模式,可以通过键盘选定任意第Model_i模式使系统循环重复工作在该花样模式下。?
3、硬件设计
新型LED彩灯系统包括2大部分,即LED彩灯控制器(89C51主控模块)和LED彩灯管(管内LED板模块)。前者是主控模块,具有按键、显示等功能,并利用89C51的P口输出控制信号;后者是受控模块,上面焊有三色LED彩灯和信号驱动芯片,模块置于LED的透明灯管内。
3.1、主控模块电路设计
主控模块电路如图1所示。主控模块主要设计器件有89C51,5个七段码LED显示器,8个按键,2个稳压器(提供12 V,5 V电压),1个信号输出驱动模块芯片(MC4049)等。通过软件设计,使单片机P0口作为三色LED驱动信号输出口及移位时钟CLOCK信号,P3口为按键输入口,P2口、P1口与5位七段码LED相接作为显示器的输出口。
3.2、管内LED板模块设计
管内LED板模块电路见图2。管内LED板模块设计主要器件有LED彩灯(红、绿、蓝)、移位触发模块芯片CD4076等。根据实际应用彩灯长度需要,可将不同数量的该管内LED模块实现级连,组成一个完整的LED彩灯。考虑到功率损耗,LED板模块之间接口处用信号正向驱动模块芯片MC4049连接。每个LED板模块上均匀分布3种颜色 LED灯,在实际制作PCB时采用红、绿、蓝3色互隔焊接方式,在电路板上把LED发光管按顺序L1(红)、L2(绿)、L3(蓝)、L4(红)、L5(绿)、L6(蓝)……依次均匀焊在板上成一条直线。为了得到更多的花样模式效果,可以使红绿2种灯从前往后驱动点亮闪烁,蓝灯从后往前驱动点亮闪烁,这样具有很好的动感视觉效果。
4、软件设计
新型LED彩灯控制器最大特点在于所有亮灯模式均由软件控制完成。系统中软件可以分为主程序和中断服务子程序。上电后在缺省状态以顺序调用Model_i花样亮灯模式流程为主程序,以一个单位时间5 ms的T0定时为中断服务子程序。在这个5 ms的T0定时基础上,可以根据需要来确定各种模式工作时间Ti,以及确定在各种亮灯模式Mode l_i内点亮和熄灭各种颜色LED灯的时刻:Red_on,Red_off,Green_on,Green_off,Blue_on,blue_off以及Clock(移位翻转脉冲)等。整个系统软件由主程序( Main)、各个模式子程序(Model_i)、5 ms中断服务子程序(T0 Interrupt)、键盘扫描处理子程序(Key Board)、显示子程序(Display)等程序组成。利用T0定时器作为定时基本单位,根据模式需要计算好各控制信号的发生时刻,根据不同的模式Mo del_i可以设定不同的工作时间Ti和脉冲翻转频率Fi通过P0口输出,使各色L ED灯的驱动时刻与移位触发的翻转时刻步调一致,使LED彩灯按照设计的模式工作。
除了T0定时中断之外,程序的大部份时间是在处理按键的查询和LED显示的延时。8个按键分别为:4个参数按键(Fi增、减按键,Ti增、减按键),3个模式改变按键(模式上翻UP、模式下翻DOWN、模式保持KEEP),1个功能切换按键。在每次的T0定时中断服务子程序里,需要对各个时间寄存器和模式寄存器进行加1或者清,为主程序查询作准备,同时查询是否已中断6次(30 ms),若30 ms到了,则对参数按键查询一次,是否有时间Ti频率Fi增减键按下并进行相应子程序处理。
主程序除了调用各种子模式子程序(Model_i),调用LED显示子程序(Display)和延时子程序(Delay)之外,还一直保持查询是否有功能切键按下以及是否有模式改变按键按下,一旦有功能切换键和模式改变键按下,就会进入相应的按键处理。? 主程序流程如图3所示。亮灯模式子程序Model_i可以编写若干(n种),只要控制好各色灯触发和熄灭时刻就可以组合成各种亮灯效果。
结束了两周的电视机实习,我们又迎来了单片机课程设计实习,真是让我们受益匪浅啊?学到了很多东西,不管怎么样,先感谢学校给我的这么多机会。真正的学到了东西。为期一周的单片机课程设计让我们受益匪浅。此次课程设计软件与硬件相结合,考察了我们的焊接水平与编程能力。对于我们应用电子技术的学生而言焊接是不成问题,也很顺利;可到了编程时就出现了很大的障碍,先开始的显示时钟还算顺利,下面的报警部分就花费了相当长的时间,还有加上报警时的音乐也是我们到图书馆里查阅资料由汇编转化成C语言得来的。本来还以为编程会很简单的,等到实际操作起来才知道它的复杂性,没有想像中的那么得心应手,理解流程是有思维的前提。单片机是我们上学期开设的课程,所以很多专业知识也都忘记了。不过经过我们一步步的努力,花费的时间与精力终于没有白费,效果渐渐地出现了。其实本身程序的思维是正确的,只是步骤中有点小错误,所以导致整个程序的结果很乱,在仔细修改程序之后,终于一步步地达到效果了。
我们将各个部分的程序编好后怎么都连不起来,出不了预期的效果。对于硬件在编程过程中PCB板的接触又是一个头疼的问题,在进行编译的时候,数码显示管上什么都没有,按一下旁边与之相连的元器件时就有显示了,所以也花费了好多时间在PCB板的重新焊接上。对于软件我们在时钟完成后就对其加入了报警系统,可加了之后发现程序乱了,以前的时钟也不可以控制了。经过反复研究,发现接地接错了位置,导致了用来报警的红灯跟绿灯根本不亮,然后就将接地线重新焊接了一下,功夫不负有心人,红灯亮了,配合编好的程序,用纸板挡住了发射管与接收管之间的信号传输,数码显示管出现闪烁的效果,并且没信号的时候绿灯亮,有信号的时候红灯就亮了,这个现象让我们喜出望外。经过修改时钟程序和报警系统都被使用上了,可更大的难题就是如何让它报警?这困扰了我们,数码显示管上终于有了闪烁的效果,可报警声还没加的上去。老师的要求是除了蜂鸣器上的报警声再加一段音乐。翻阅了图书馆里的书籍,查出来的音乐程序都是用汇编编的,要将此程序放到主程序中就必须将汇编程序改编成C语言程序。这再次困扰了我们,虽然以前也学过汇编跟C之间的.互换,可都是简单的,从没涉及到这么复杂的程序过,改编很是有压力,经过研究,我们将汇编程序舍弃了,到网上下载了一段音乐程序,是C语言编的。要让音乐在我们的红外报警系统中唱出来可不是什么简单的事情,虽然找到了音乐程序,但要让音乐程序跟我们的主程序融合在一起得花费点心思了。
最后在全组人竭尽全力,老师的精心指导下,程序基本编写成功,这是我们共同努力的结果,在享受我们成果之时,不得不感慨单片机的重要性与高难度性,所以为期一周的单片机课程设计没有浪费,我们从中学到了很多知识。,也让我们对单片机有了更深一步的了解。虽然最后结果是出来了,可这与老师的精心指导是分不开的,她引导我们的思路,本来一窍不通的我们经过老师的点拨基本上通了,所以说老师是功不可抹的。