- 1、本文档共25页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
3、数码管的动态扫描显示 ⑴接口电路 由P1、P2口控制的8位数码管的动态显示接口电路如下图,图中7407起端口驱动作用。 电路的连接方法: 每位数码管的段选脚(a~dp脚)并接在一起,然后与一个带有输出锁存功能的8位输出口相接,各位数码管的位选脚(com脚)接至其它带有锁存功能的输出口上。在这种电路中,单片机分时地对各数码管进行扫描输出,ti时间对i号数码管进行显示输出。 3、数码管的动态扫描显示 ⑵显示程序 动态扫描显示程序的设计方法: ①建立显示笔型码表ledcode和位选控制码表disctrl。 显示笔型码表ledcode的建立方法是,在code区中定义一个无符号字符型数组ledcode[],将字符0~字符9的笔型码依次作为元素ledcode[0]~ledcode[9]的值。 位选码表的建立方法是,在code区中定义一个无符号字符型数组disctrl[],点亮0号数码管的位选控制码作为元素disctrl[0]的值,点亮1号数码管的位选控制码作为元素disctrl[1]的值 ②在data区或者idata区中定义一个无符号字符型数组disdat,用来存入待显示的数据。 ③用全局变量WCnt作显示位置计数器,保存当前点亮数码管的编号,其初值为0,即上电后点亮0号数码管。 3、数码管的动态扫描显示 ④进行扫描显示时,根据位置计数器WCnt的值查位选控制码表(读取数组disctrl中第WCnt元素的值),获取点亮WCnt号数码管的位选控制码,然后送位选口点亮WCnt号数码管。 ⑵显示程序 ⑤根据位置计数器WCnt的值从显示数据数组disdat中读取WCnt号数码管显示数据,然后根据此数据查显示笔型码表(ledcode数组),从中获取WCnt号数码管的显示字符的笔型码,并送段选口显示。这样WCnt号数码管就显示出了对应的字符。 ⑥调整显示位置计数器WCnt的值,使其为下一个要点亮数码管的编号,为下一个数码管的显示作好准备。 ⑦延时t时间后,重复4~7步进行下一个数码管的显示控制。这里的t时间为当前数码管的显示时间。 3、数码管的动态扫描显示 动态扫描显示程序的流程图: 流程图中,在进行位选控制输出之前加了段选熄灭处理。其原因是,从位选控制输出到段选控制输出存在一定时间的延迟,在这段时间内当前数码管已被选择,但段选口输出的是前一个数码管的显示数据,当前数码管会显示前一个数码管显示的内容。从而会出现显示“拖尾”的现象,加上此框后,当前数码管被选择后,段选口输出的是数码管熄灭码,可以消除显示“拖尾”现象。 3、数码管的动态扫描显示 用8个数码扫描显示数字1~8的程序 #include reg51.h #define uchar unsigned char #define port_S P1 //1 段选口 #define port_B P2 //2 位选口 uchar data disdat[8]={1,2,3,4,5,6,7,8}; //3 待显示的数据 uchar code distrl[]={0xfe,0xfd,0xfb,0xf7, 0xef,0xdf,0xbf,0x7f}; //4 位选控制码表 uchar code ledcode[]={0x3f,0x06,0x5b, 0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //5字符笔型码表 uchar data WCnt; //6 显示位置计数器 void main(void) //7 { WCnt=0; //8 显示位置计数器赋初值0 while(1) //9 3、数码管的动态扫描显示 { port_S=0x00; //10段选口输出熄灭数码管的笔型码 port_B=distrl[WCnt]; //11 位选口输出位选控制码 port_S=ledcode[disdat[WCnt]]; //段选口输出字符笔型码 WCnt++; //13 位置计数值加1 WCnt=WCnt%8; //14 超界处理 delay(); //15 延时t时间 //其他事务处理 16 } //17 } //18 3、数码管的动态扫描显示 ⑶数码管点亮时间的计算 设有n个数码管扫描显示,在一轮扫描显示中,各个数码管点亮时间均为t,则每个数码管熄灭时间为(n-1)t,数码管闪烁频率为 人眼要感觉到数码管“稳定”显示,则f≥48Hz。所以,t= 举例 用单片机控制6位数码管扫描显示时,在一轮扫描显示中,每位数码管点亮的时间t≤1/(48×6)=3.47ms,可取数码管点亮时间t=3m
文档评论(0)