4.4显示模块4.4.1 7段数码管的结构和工作原理7段数码管一般由8个发光二极管组成,其中7个细长的发光二极管。形成数字显示器。另一个圆形LED显示小数点。发光二极管打开时,相应的点或笔触会发光。通过控制相应的二极管导通,可以显示各种字符。尽管显示的字符的形状有些变形,并且可以显示的数字数量受到限制,但是控制还是简单方便的。发光二极管的阳极连接在一起,称为共阳极数字管,而连接在一起的阴极称为共阴极数字管,如图4.9所示。共阴极7段数码管内部场效应管及引脚分布图4.9 7段数码管共阳极4.4.2 7段数码管驱动方法发光二极管(LED是一种磷化镓(GaP)和其他可以直接将电能转换为发光显示器件的半导体材料,当有电流流过时,它会发光,七段数码管各段的驱动电流其他的单个LED发光二极管一般为5-10mA;正向电压根据发光材料的不同而在1.8〜2.5V之间变化;七段数码管的显示方式可分为静态显示。简介。(1)所谓的静态显示器,是指当显示某个字符时,相应段的LED不断寻找能量并可以将其切断。
此显示方法要求每个控件都有一个8位输出端口控制。对于51个单片机,并行端口可以使用多个锁存器74LS573扩展为静态显示接口。静态显示的优点是显示稳定。当LED打开并且功率恒定时,显示屏的亮度很高。在控制系统运行期间,仅当显示内容需要更新时,CPU才执行显示更新子例程。节省了CPU时间,提高了CPU的工作效率。缺点是当位数很大时,需要太多的I / O端口,并且硬件开销太大,因此经常使用另一种显示方法-动态显示。 ([K10]动态显示所谓的动态显示是一一打开每个显示(扫描)。对于每个显示,它会偶尔点亮一次。尽管同时只有一个显示在工作(点亮)向上),但利用人眼的持久效应和发光二极管熄灭时的余辉效应,您看到的是多个字符的“同时”显示。显示的亮度与传导电流有关。点亮时间与间隔时间的比例有关,调整电流和时间参数可以获得更高的亮度和稳定的显示效果,如果显示位数不超过8位,仅需要8位数字即可控制显示器I / O端口(称为扫描端口或字位端口)的公共电极电位,控制LED显示器显示的字体也需要8位端口(称为数据端口或字体端口)。
动态显示的优点是可以节省硬件资源并降低成本。但是,为了确保在控制系统运行期间显示器的正常显示,CPU必须以固定的间隔执行显示子例程,这会占用大量CPU时间。显示屏亮度低于静态显示屏时,会降低CPU的工作效率。基于以上考虑,由于温度显示精确到两位小数,因此仅需要4个数字管。考虑到CPU和电源的效率,在此毕业设计中采用了静态显示。它是普通的阳极显示器。 4.4.3硬件编码74LS47是将BCD代码转换为7段输出的集成电路芯片,该输出可以直接驱动具有共阳极的7段数码管。其引脚划分和真值表如下图所示。 74LS47引脚定义7段数字管静态显示电路的锁存电路7段数字管静态显示电路的锁存解码电路MCS-51单片机7段数字管静态显示电路的上面的CPU电路在设计中,单片机的工作时钟是由18.432MHZ晶体振荡器产生的。电路中有4个7段共阳极数码管,用于显示数据。 74HC573是一个8位锁存器,用于锁定每个数码管数据的显示; 74HC138是3--8线,它和6反相器74HC04实现每个数字管的锁存器来控制地址解码。
4.4.4软件设计以上设置适用于普通阳极数码管,控制端设置为0以使数码管发光,控制端设置为1以使数码管发光点亮。根据需要点亮哪些发光二极管段以显示数字0-9,可以开发出下表中所示的编码表。字体类型dpgfedcba编码编码通用负号和通用正号0001111113FCC F3293010111105E AD B25010110115B A46011110117B 847000011100E FF8FA0A010011116F90B6C0011001133CCD011111007C 83ECFC软件实现过程如下:/ *********************** ****************************** 7段数码管静态显示程序************** ******* ************************************ / #include #include #include #include #include #include #include #include #include #include / * 4个7段数字管锁存器地址* / #define LED1ADDR 0x8000 #define LED2ADDR 0x8100 #define LED3ADDR 0x8200 #define LED4ADDR 0x8300 // 0,1,2,3,4, 5,6,7,8,9,a,b,c,d,e,f / * 0-9 af 7段显示代码* / unsignedcharledcode [16] = {0xC0,0xF3,0x89,0xA1,0xB2, 0xA4,0x84,0xF1,0x80,0xA0,0x90,0x86,0xCC,0x83,0x8C,0x9C}; / *存储要显示的数字值* / unsigned char val [4]; /// *写锁存子程序* / void wraddr(unsigned int addr,unsigned char d){unsigned char xdata * pa; pa =(unsigned char x数据*)addr; * pa = d;} / * display子例程* / void display(void){unsigned int addr [4] = {LED1ADDR,LED2ADDR,LED3ADDR,LED4ADDR}; int i; for(i = 0; i =0)&&(val [i]
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-343203-1.html
但绝对不能剥夺公民议论社会