资源描述:
《动态显示与按键消抖》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、三、IO应用---LED数码管X位X段数码管dpgfedcbaD7D6D5D4D3D2D1D08段LED,段码是按格式:如下图显示位段码位dpgfedcbaD7D6D5D4D3D2D1D0显示位段码位11000000即为:0xC0LED数码管显示“0”编码dpgfedcbaD7D6D5D4D3D2D1D0显示位段码位11111001即为:0xF9LED数码管显示“1”编码七段共阳数码管显示数据表LED数码管显示器的显示方法有两种:静态显示和动态扫描显示。(一)LED数码管的显示方法LED静态显示例:利用2位LED静态显示“12”#includeunsignedchard1
2、[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};voidmain(){P0=0xff;P2=0Xff;while(1){P0=d1[1];//笔段码P2=d1[2];//笔段码}}思考:如是实现显示完“12”延时一会儿有显示“34”呢?#includeunsignedchard1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};voiddelay(intm){unsignedinti,j;for(i=0;i3、+);}voidmain(){P0=0xff;P2=0Xff;while(1){P0=d1[1];//笔段码”1”P2=d1[2];//笔段码”2”delay(100);P0=d1[3];//笔段码”3”P2=d1[4];//笔段码”4”delay(100);}}静态显示:就是每一个LED数码管都单独和一个I/O接口相连,CPU只要把欲显示的字型代码送到某个I/O口上,就可以使对应的LED数码管显示所需的数字或符号,此后,即使CPU不再向它输出其它字型码,显示的内容也不会消失。优点:显示程序十分简单,显示亮度大,节约CPU的工作时间缺点:占用的I/O口线较多,硬件成本较高。LED动态显示例
4、2:2位LED动态扫描显示(显示:12)笔段位选三极管“放大”和“开关”作用显示“1”显示“2”‘0’导通‘1’关闭#includeunsignedchard1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};voiddelay(intm){unsignedinti,j;for(i=0;i5、//笔段码P2_1=0;P2_0=1;//位选码delay(1);//延时P2=0XFF;//消隐}}显示十位数1显示个位数2动态扫描显示是指采用分时的方法,轮流控制各个显示器的公共端,使各个显示器轮流点亮。虽然每个时刻只有一个数码管有效,但只要延时适当,由于人眼的“视觉暂留效应”(约20ms左右),看起来则是同时显示的。其接口电路是把所有显示器的8个笔划段a~dp同名端并联接到I/O口上,而每一个显示器的公共极COM是各自独立地受I/O线控制。在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),但由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮
6、,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。思考:如何利用下面硬件电路显示:123456?#includeunsignedchard1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};unsignedchard2[]={0xdf,0xef,0xf7,0xfb,0xfd,0xfe};voiddelay(intm);voidmain(){unsignedchari;P0=0XFF;P2=0XFF;while(1){for(i=0;i<6;i++){P0=d1[i+1];//送笔段码P2=
7、d2[i];//送位选码delay(1);//延时5msP0=0XFF;//消隐}}}6位LED动态扫描电路----共阳电路连接笔段码位选码‘0’导通‘1’关闭6位LED动态扫描电路----共阴电路连接笔段码位选码‘1’导通‘0’关闭四、IO应用-点阵(了解:自学)有兴趣了解一下点阵显示器—做广告用一个好的单片机应用系统,通常要有优秀的人机交互接口。键盘是与单片机进行人机交互的最基本的途径,其以按键的形式来设置控制功能或