200 likes | 367 Views
《 单片机应用技术 》. 电气自动化技术专业. 项目二 数码管并行显示实训. 项目功能 项目知识点与技能点 项目知识准备 项目实施. 【 项目功能 】. 用单片机并行点亮 LED 数码管 控制数码管不同的显示内容 进一步掌握 AVR 单片机的 C 语言编程与调试. 【 项目知识点与技能点 】. 8 段 LED 数码管的显示原理与内部连接 LED 的字形编码、译码的原理 多个数码管动态显示的原理与实现方法. 共阳极. 共阴极. 1 、 LED 数码管的结构和分类. 【 项目知识准备 】. 一、 LED 数码管. 2 、数码管字形编码.
E N D
《单片机应用技术》 电气自动化技术专业
项目二 数码管并行显示实训 • 项目功能 • 项目知识点与技能点 • 项目知识准备 • 项目实施
【项目功能】 • 用单片机并行点亮LED数码管 • 控制数码管不同的显示内容 • 进一步掌握AVR单片机的C语言编程与调试
【项目知识点与技能点】 • 8段LED数码管的显示原理与内部连接 • LED的字形编码、译码的原理 • 多个数码管动态显示的原理与实现方法
共阳极 共阴极 1、LED数码管的结构和分类 【项目知识准备】 一、LED数码管
2、数码管字形编码 阳1100 0000 1010 0100 阴 0011 1111 0101 1011
二、LED数码管显示方式 • 静态显示,就是指在显示某一个字符时,相应的发光二极管恒定导通或截至。 段选线 位选线
二、LED数码管显示方式 • 动态显示,是一位一位的地轮流点亮各位数码管,只要轮流速度足够快(每秒轮流50次以上),由于人眼的“视觉暂留”的物性,感觉不到显示器的闪动,所看到的是连续显示一组数字。 并行字型码输入 位选 数码管1亮 数码管2亮 数码管3亮
LED数码管显示方式比较: a.静态显示LED接口 连接方法: 各数码管的公共极(位选线)固定接有效电平,各数码管的字形控制端(段选线)分别由各自的控制信号控制。 优点:LED显示数据稳定,亮度高,程序设计简单,MCU负担小。 缺点 :硬件资源多,耗电量大。 一般仅适用于 显示位数较少的应用场合。 b.动态显示LED接口 连接方法 :各位数码管的字形控制端对应地并在一起,由一组I/O端口进行控制,各位的公共极相互独 立,分别由不同的I/O控制信号控制。 优点: 占用硬件资源少,耗电量小。 缺点: 显示亮度不够稳定,影响因素较多;编程较复杂,MCU负担重。
三、单个数码管静态显示 • 用AVR的一个I/O口控制共阳极数码管的八个段码。 位选线 段选线 若要显示字码‘1’,PB口则应输出0xF9;PB口则应输出0xFE。
开始 初始化 送字码‘0’的字型码 延时500ms 送字码‘1’的字型码 延时500ms 流程图:
参考程序: #include <iom16v.h> #include <macros.h> #include <delay.h> constunsigned char SEG_7[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; //共阳极数码管字型码码数组 main() { unsigned char i=0; DDRB = 0xFF; PORTB = 0xFF; while(1) { for(i=0;i<16;i++) //循环16次数码管显示0~F { PORTB = SEG_7[i]; //送字型码到PB口 delay_nms(500); //延时大概500毫秒 } } } 定义在Flash中
四、数码管并行显示电路原理图 ATmega16单片机的PB口接74HC573的数据输入端,74HC573的数据如输出端接数码管的8位数据端,74HC573的锁存使能接PD4,四位共阳极数码管的选择端分别接PD1、PD0、PC1和PC0。
流程图: 注意:同一时刻只能有一个数码管被选通,否则多个 数码管将显示同样的内容。
参考程序: 位选 显示字符 void bx_display(unsigned char bit, unsigned char data) { PORTB=SMG_Conver[data]; // 段码 PORTD|=BIT(4); PORTD&=~BIT(4); switch(bit) //位选 { case 4:PORTD|=BIT(1);delay_nms(1);PORTD&=~BIT(1);break; case 3:PORTD|=BIT(0);delay_nms(1);PORTD&=~BIT(0);break; case 2:PORTC|=BIT(1);delay_nms(1);PORTC&=~BIT(1);break; case 1:PORTC|=BIT(0);delay_nms(1);PORTC&=~BIT(0);break; } }
参考程序: void main() { DDRB=0xff; //段码并行输出 DDRC=0xff; //位选输出 DDRD=0xff; //位选输出 PORTC=0x03; //位选1、2位 PORTD=0x13; //74HC573使能,位选3、4位 while(1) { bx_display(1,0); //1位显示0 bx_display(2,1); //2位显示1 bx_display(3,0); //3位显示0 bx_display(4,2); //4位显示2 } }
【举例】 • 利用74LS573 实现数码管的四位显示功能,各小组可在基本功能的基础上,可适当根据兴趣爱好,最终设计出一个完美的项目成果。例如利用有限资源(四位数码管),显示当前年月日。(前移)
【项目实施】 1、各小组内部进行分工,确定项目内容和实施计划,项目的内容要有创新点。 2、打开AVR Stdio软件建立AVR-ICC项目,编写程序,进行编译(显示内容和形式各小组自行确定)。 3、编译无误,在线调试。使实训箱电源按钮处于关闭状态,IC锁紧座中放入ATmega16单片机,将DC9V/1A电源插头插入电源孔,将USB延长线接头与JTAG硬件仿真器相连接,同时将JTAG仿真器连在实训箱的JTAG接口。 4、接通74LS573芯片锁存使能端PD4,拨码开关在其右侧;接通LED数码管对应的数据端口PB,拨码开关在四位数码管的左侧,作为输出;LED数码管为共阳极,低电平点亮;数码管四个位驱动引脚分别是PC0,PC1,PD0,PD1,拨码开关。 5、按下实训箱电源开关,打开AVRstudio 4与实训箱单片机进行通信,将编译后的文件下载到实训箱单片机中,观察运行结果,运行结果达到实训要求实训完成。 6、实训完成后,切断实训箱电源,将拨动过的拔码开关拨回到原位置,将实训用到的跳线帽拔下,将实训用到的外部接线撤下,将实训用到的器件及连线完好的放回到实训箱储物阁中。 7、完成项目报告,就本组的项目进行总结。