按键数码管.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
按键数码管

按键数码管 /******************************************* 文件:SMG.C 环境:编译为ICC AVR6.25A,仿真为AVR Studio4.10 硬件:ATMEGA16芯片 功能:驱动数码管,滚动显示1、2、3、4、5、6 /******************************************/ #include iom16v.h //包含型号头文件 #include macros.h //包含位操作头文件 #include stdio.h //标准输入输出头文件 //#include AVR_PQ1A.h //包含自定义常量头文件 #define BITLK 4 #define SEGLK 3 #define uint unsigned int #define uchar unsigned char #pragma data:code const SEGMENT[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//将BCD码转换成数码管扫描码的数组 void Delayus(uint US) { uint i; US = US*5/4; for(i=0;iUS;i++); } void Delayms(uint MS) { uint i,j; for(i=0;iMS;i++) for(j=0;j1141;j++); } /******************************************* 函数名称: One_smg_display 功 能: 指定的数码管显示指定的内容 参 数: data--显示的内容(0-15) number--指定的数码管(1-6) 返回值 : 无 /********************************************/ void One_smg_display(uchar data,uchar number) { PORTB|=0x3F; //输出位选 PORTA|=BIT(BITLK); //更新位选 Delayus(50); //调整时序 PORTA=~BIT(BITLK); //锁存位选 PORTB=SEGMENT[data]; //输出段选 PORTA|=BIT(SEGLK); //更新段选 Delayus(50); //调整时序 PORTA=~BIT(SEGLK); //锁存段选 number=~BIT(number-1); //调整位选(指定时是1~6,而操作的时候是0~5) PORTB=number; //输出位选 PORTA|=BIT(BITLK); //更新位选 Delayus(50); //调整时序 PORTA=~BIT(BITLK); //锁存位选 } /******************************************* 函数名称: All_smg_display 功 能: 6个数码管显示指定的内容 参 数: *pdata--显示内容数组地址 返回值 : 无 /*******************************************/ void All_smg_display(uchar *pdata) { uchar i; for(i=0;i6;i++) //循环6次,6个数码管各亮一次 { One_smg_display(pdata[i],i+1); Delayms(1); } } /******************************************* 函数名称: Cycle_smg_display 功 能: 6个数码管从右向左循环滚动显示指定的内容(循环一次) 参 数: *pdata--显示内容数组地址 返回值 : 无 /*******************************************/ void Cycle_smg_display(uchar *pdata) { uchar i,j; for(i=0;i240;i++) //共滚动6次,每次内容显示40个循环 { for(j=0;j6;j++) //扫描6个数码管 { One_s

文档评论(0)

f8r9t5c + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档