1位数码管控制显示
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1位数码管显示—定时器中断应用
戴仔龙电气工程系
【课题】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)本节课首先演示一个多功能电子万年历的工作过程,激发学生学习的兴趣,引入本节课的知识点—定时器中断的应用。
2)介绍共阳和共阴数码管的显示驱动原理,根据驱动原理进行手工编码,然后在手工编码的基础上使用第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数码管(LED Segment Displays)是由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和图4所示。
图3 共阳极LED 数码管的内部结构原理图
图4 共阴极LED 数码管的内部结构原理图
表1.1 显示数字对应的二进制电平信号
LED 数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字。
2.数码管循环显示0~9电路设计
按照工作任务要求,数码管显示电路是由单片机最小系统、共阴数码管、排阻构成。排阻的左边的1~7号脚接P2.0~P2.6,右边的10~16号脚接数码管的a ~g 七个位段,如图5所示。
XTAL2
18
XTAL1
19
ALE 30EA
31
PSEN 29RST
9
P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX 2P1.23P1.34P1.45P1.56P1.67P1.78
P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD
17
P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1
AT89C52
C1
30PF
C2
30PF
X1
CRYSTAL
R1
10k
C3
10uF
12345678
161514131211109
RN1
330
图5 1位数码管显示电路
3.数码管显示程序设计
数码管显示电路设计完成以后,我们还不能看到数码管上显示数字,还需要编写程序控制单片机引脚电平的高低变化,来控制数码管,使其内部的不同位段点亮,以显示出需要的字符。
(1)数码管显示功能实现分析
电路图中采用共阴结构的数码管,其公共端接地,这样我们可以通过控制每一只发光二极管的阳极电平来使其发光或熄灭,阳极为高电平则发光,为低电平则熄灭。把每个数字的字型码按顺序排好,建立的表格如表1.1。编程思路:首先初始化定时器和定时器中断,然后在定时器中断服务函数中编写实现1秒钟的算法,然后将秒值限制在0-9范围内;而我们的主函数只需要调用sec变量即可在数码管上显示秒钟减1,范围9-0;
#include
typedef unsigned char uint8;
typedef unsigned int uint16;
uint8 counter=0,sec=9;
uint8 number[]={0x3F,0x06,0x5B,0x4F,
0x66,0x6D,0x7D,0x07,
0x7F,0x6F};
void timer0_init(void)
{
TMOD=0x01;
TH0=(65536-20000)/256;
TL0=(65536-20000)%256;
TR0=1;
}
void timer0_int_init()
{
EA=1;
ET0=1;
}
void main()
{
timer0_init();