11位数码管显示—定时器中断应用戴仔龙电气工程系【课题】1位数码管显示控制【课时】1课时【班级】13机电1【教材分析】本次教学内容选自上海交通大学出版社、中等职业教育规划新教材配套教学用书,黄汉平、余国主编的《单片机控制项目实训》项目5、1位数码管显示控制,此项目作为单片机外围输出设备之一,是学习其他项目的基础,故必须让学生掌握好数码管静态和动态显示驱动代码的编写方法。【学情分析】本次授课班级为13机电1班,该班的学生是机电技术应用专业三年级的学生,在学习本课之前,有过电工电子技术基础和数字电路的教学,学生初步掌握了数字电路的特点。学生虽然基础参差不齐,但对单片机具有较强的学习兴趣,学习态度较为端正,但对于单片机的学习方法还没有找到切入点,故这些将是我们接下来奋斗和努力的方向。【教学目标】1.知识目标:1)掌握单片机与数码管的接口技术。2)掌握LED数码管的结构、工作原理和显示方式。3)掌握数码管静态显示的原理、电路设计及程序设计。4)掌握数组的使用5)掌握定时器和定时器中断初始化的方法2.能力目标:1)培养学生分析和解决问题的能力。2)充分发挥学生的学习兴趣,培养学生严谨治学的态度。【教学重点】1.数码管的工作原理和定时器中断控制方式。2.数码管的驱动编写方法及C51编写定时器中断的方法。【教学难点】1、如何根据硬件数码管电路设计定时器中断控制程序。2、如何使用C51描述数码管每隔1秒减1,范围9~0。【教学思路】1)本节课首先演示一个多功能电子万年历的工作过程,激发学生学习的兴趣,引入本节课的知识点—定时器中断的应用。22)介绍共阳和共阴数码管的显示驱动原理,根据驱动原理进行手工编码,然后在手工编码的基础上使用第3方LED代码查询.exe小软件自动生成C51编程需要的数码管常用字符驱动代码。3)根据我们1位数码管显示的单片机硬件电路和软件提供的数码管字符编码编写C51驱动代码实现数码管每隔1秒减1的显示,范围:9~0。【教学过程】一、课程引入根据市场上多功能电子万年历的显示效果,引入定时器及定时器中断的作用和使用方法。二、新课讲授:工作任务:利用51单片机的P2口的P2.0~P2.7七个引脚,依次连接到一个共阴极LED数码管的a~h七个位段控制引脚上,数码管的公共端接地,编写程序使数码管上每隔一秒减1,循环显示9~0十个数字。任务实施:1.认识数码管LED数码管(LEDSegmentDisplays)是由8个发光二极管构成。按照一定的图形及排列封转在一起的显示器件。其中7个LED构成7笔字形,1个LED构成小数点(固有时成为八段数码管)LED数码管有两大类,一类是共阴极接法,另一类是共阳极接法。数码管位数有1,2,3,4,5,6,8,10位等等(及数码管的位数),了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。图2是共阴和共阳极数码管的内部电路,它们的发光原理是一样的,只是它们的电源极性不同而已。颜色有红,绿,蓝,黄等几种。LED数码管广泛用于仪表,时钟,车站,家电等场合。选用时要注意产品尺寸颜色,功耗,亮度,波长等。图1图2要使共阳数码管显示数字,有两个条件:1、是要在VT端(3/8脚)加高电平;2、要使(a,b,c,d,e,f,g,dp)端接低电平。这样才能显示的。共阳共阴LED数码3管的内部结构原理图如图3和图4所示。图3共阳极LED数码管的内部结构原理图图4共阴极LED数码管的内部结构原理图表1.1显示数字对应的二进制电平信号LED数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字。2.数码管循环显示0~9电路设计按照工作任务要求,数码管显示电路是由单片机最小系统、共阴数码管、排阻构成。排阻的左边的1~7号脚接P2.0~P2.6,右边的10~16号脚接数码管的a~g七个位段,如图5所示。XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C52C130PFC230PFX1CRYSTALR110kC310uF12345678161514131211109RN1330图51位数码管显示电路43.数码管显示程序设计数码管显示电路设计完成以后,我们还不能看到数码管上显示数字,还需要编写程序控制单片机引脚电平的高低变化,来控制数码管,使其内部的不同位段点亮,以显示出需要的字符。(1)数码管显示功能实现分析电路图中采用共阴结构的数码管,其公共端接地,这样我们可以通过控制每一只发光二极管的阳极电平来使其发光或熄灭,阳极为高电平则发光,为低电平则熄灭。把每个数字的字型码按顺序排好,建立的表格如表1.1。编程思路:首先初始化定时器和定时器中断,然后在定时器中断服务函数中编写实现1秒钟的算法,然后将秒值限制在0-9范围内;而我们的主函数只需要调用sec变量即可在数码管上显示秒钟减1,范围9-0;#includereg52.htypedefunsignedcharuint8;typedefunsignedintuint16;uint8counter=0,sec=9;uint8number[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};voidtimer0_init(void){TMOD=0x01;TH0=(65536-20000)/256;TL0=(65536-20000)%256;TR0=1;}voidtimer0_int_init(){EA=1;ET0=1;}voidmain(){timer0_init();5timer0_int_init();while(1){P2=number[sec];}}voidtimer0_int()interrupt1{TH0=(65536-20000)/256;TL0=(65536-20000)%256;counter++;//对20ms进行计数if(counter==50)//1秒钟时间到{counter=0;sec--;if(sec==255){sec=9;}}}【小结】通过定时器和定时器中断驱动代码的编写让广大同学了解定时器和定时器中断在数码管显示字符中的应用,为进一步学习其他电路功能打下扎实的基础,同时也培养了同学们学习的兴趣和对知识的探究能力。【教学反思】通过定时器和定时器中断驱动代码的编写,让广大同学先照葫芦画瓢,然后结合数码管的显示原理体会每一条语句的作用,从而达到举一反三的目的,为进一步学习多位数码管的动态扫描驱动打下扎实的基础。