- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
动态扫描显示 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 PD7 PD6 PD5 PD4 ATmega16 如该数码管为共阴数码管,则只要让PD4~PD7轮流输出低电平,就可以使4位数码管一位一位地轮流点亮,显示各自的数码,从而实现动态扫描显示。(具体见P152说明) ledbuff[0]=tabel[X%10]; //显示个位数 ledbuff[1]=tabel[X/10%10]; //显示十位数 ledbuff[2]=tabel[X/100%10]; //显示百位数 ledbuff[3]=tabel[X/1000];//显示千位数 语句1例: X =1234:除10取余等于4。 语句2例: X =1234:除10取商等于123.4, 再除10取余等于3。 其它类推。 显示程序设计 #includeiom16v.h #includedelay.h char z_biao[ ]={0x3f, 0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00} //字形表 char ledbuff[ ]={1,0,1,2,3} //其中第一个数是当前显示位,后面4个数依次显示在4个位上 void display() {if (ledbuff[0]==1){PORTB=z_biao[ledbuff[1]];PORTD=0X7F;} else if (ledbuff[0]==2){PORTB=z_biao[ledbuff[2]];PORTD=0XBF;} else if (ledbuff[0]==3){PORTB=z_biao[ledbuff[3]];PORTD=0XDF;} else if (ledbuff[0]==4){PORTB=z_biao[ledbuff[4]];PORTD=0XEF;} ledbuff[0]++; if(ledbuff[0]4)ledbuff[0]=1; } void main() {int x=7645; DDRB=0XFF; DDRD=0XFF; //显示x的值 ledbuff[0]=1; //无显示 ledbuff[1]=x/1000; ledbuff[2]=x/100%10; ledbuff[3]=x/10%10; ledbuff[4]=x%10; while(i--) { display(); delay_ms(1);} } DDRB; PORTB; MEGA16 PB0 PB1 PB2 PB3 PB4 PB5 PB7 PB6 §4.6 键盘接口技术 a b PB0(入) PB1(出) MEGA16 R1 VCC PB1 PB0 按键 输出低 输出低 不按下 按下 高 低 输出高 输出高 不按下 按下 高 低 应用:用发光管D显示键的状态 PB2 R2 VCC void j_xianshi() { DDRB; PORTB; while(1) { if((PINB0x01)==0) PORTB delay_ms(20); } } D 一般情况下,采用软件方法来消抖,其基本编程思路是:检测出按键闭合后,再执行一个10ms左右的延时程序,以避开按键按下去的抖动时间,待信号稳定后再进行按键查询,如果仍保持闭合状态电平,则确认为真正有按键按下。 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 4 8 12 0 1 2 3 行线输出低电平 列线带内部上拉、输入 MEGA16 vcc R1 R2 R3 R4 PB0 PB1 PB2 PB3 PB4 PB5 PB6 PB7 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 4 8 12 0 1 2 3 列线输出低电平 行线带内部上拉、输入 MEGA16 //行输出低电平,列带上拉电阻输入 DDRB; PORTB; delay_us(5); //检查有无键按下,无键按下返回0XFF If(PINB=) return(0xff); //获取按下键的列编码 if(PINB0x10==0)jianzhi=0; else if(PINB0x20==0)jianzhi=1; else if(PINB0x40==0)jianzhi=2; else if(PINB0
您可能关注的文档
最近下载
- 2025年浙江安防职业技术学院单招职业技能测试题库(名校卷).docx
- 2024年广州中考英语听说考试——“信息询问” 情景训练课件.pptx
- 四年级下册单元作文《热爱生命》.ppt
- 骆驼奶营养价值课件.pptx
- 统编版高中语文教材中杜甫四首诗《登高》《登岳阳楼》《蜀相》《客至》联读.docx
- 附件3-2:12千伏一二次融合环网柜(箱)及配电自动化终端(DTU)标准化设计方案(2021版).pdf VIP
- 第6课 戊戌变法 课件(共34张PPT).pptx
- 2023年上海杉达学院工程管理专业《管理学》科目期末试卷A(有答案).docx VIP
- 分包考核管理办法和考核表.pdf VIP
- 送教上门康复教案.docx
文档评论(0)