网站大量收购闲置独家精品文档,联系QQ:2885784924

单片机无汇编.ppt

  1. 1、本文档共53页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机无汇编

第9章 单片机系统配置及接口 目 录 9.1 键盘接口 9.2 LED显示接口 9.3 A/D转换接口 9.4 D/A转换接口 9.5 开关器件接口 9.2 LED显示接口 主要内容 9.2.1 LED显示器结构原理 9.2.2 LED显示器接口及显示方式 9.2.3 LED显示器与89C52接口及显示子程序 9.1.2 LED显示器接口及显示程序 单片机应用系统中使用的显示器主要有: 发光二极管显示器,简称LED(Light Emitting Diode); 液晶显示器,简称LCD(Liquid Crystal Display); 阴极射线管显示器,简称CRT(Cathode Ray Tube) 9.2.1 LED显示器结构原理 共阴极与共阳极7段LED显示数字0~F、“-”符号及“灭”的编码(a段为最低位,dp点为最高位)如表9-1所列。 9.2.2 LED显示器接口及显示方式 LED有静态显示和动态显示两种方式。 1.LED静态显示方式 静态显示就是当显示器显示某个字符时,相应的段(发光二极管)恒定地导通或截止,直到显示另一个字符为止。 共阴极(公共端K0)接地; 共阳极(公共端K0)接+5V电源。 每位的段选线(a~dp)分别与一个8位锁存器的输出口相连,显示器中的各位相互独立。 优点:亮度较高、编程容易、管理简单; 缺点:但占用I/O口线资源较多。 #include reg51.h #include intrins.h unsigned char code table [16]={0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e}; /*字型码常数表,在ROM区,只读不可写*/ void delay( ); /*延时函数,晶振不同,延时时间长短不等*/ void main(void) { unsigned char i; while(1) /*测试条件永远为真*/ { for (i=0; i=15; i++) /*显示字符0~F*/ { P1= table [i]; /*编码送P1口*/ delay( ); /*延时*/ } } } void delay( ) /*延时函数*/ { unsigned int n,i; for (n=0; n30000; n++); for (i=0; i30000; i++); } 2.LED动态显示方式 在多位LED显示时,为了简化电路,降低成本,将所有位的段选线并联在一起,由一个8位I/O口控制。而共阴(或共阳)极公共端K分别由相应的I/O线控制,实现各位的分时选通。图9-8为6位共阴极LED动态显示接口电路。 各位扫描显示:由于6位LED所有段选线皆由P1口控制,要想每位显示不同的字符,就必须采用扫描方法轮流点亮各位LED,在每一瞬间只使某一位显示字符。 段选码、位选码控制:P1口输出相应字符段选码,P2口在该显示位送入选通电平,保证该位显示相应字符,如此轮流。 扫描延时:段选码、位选码每送入一次后延时1ms,保证每位有一定亮度,因人眼的视觉暂留效果,看上去每个数码管总在亮。 9.2.3 显示器与89C52接口及显示子程序 图为89C52 P1口和P2口控制的6位共阴极LED动态显示接口电路。P1口输出段选码,P2口输出位选码,位选码占用输出口的线数决定于显示器位数。 74LS245是双向8位缓冲器,在此分别作为段选和位选驱动器。 C语言程序清单: #includereg52.h unsigned char code LED[ ]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char buf[6]; //定义字型码和显示缓冲区 void disp() { unsigned char i; for(i=0;i6;i++) //6位显示 { P1=LED[buf[i]]; //段码送P1口 P2=~(0x20i); //位码送P2口 delay1ms(); //延时1ms } } 利用硬件译码的动态显示 系统

文档评论(0)

ctuorn0371 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档