单片机课设频率计源程序.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
#includereg52.h #includeabsacc.h #define int8 unsigned char #define int16 unsigned int #define wei XBYTE[0x0FF20]//将82255PA口映射为数码管的位选,与硬件连接相对应 #define duan XBYTE[0x0FF21]//将8255PB口映射为数码管的段选,与硬件连接相对应 #define control XBYTE[0xff23] int8 dis[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//要显示的0-9段码 int16 frequency;//定义计数的频率变量 void time_init() //定时器初始化函数 { TMOD=0x15;//定时器1为16位定时器,定时器0为16为计数器 TH1=0X4C; TL1=0X01; TL0=0; TH0=0;//计数初值0; TR0=1; TR1=1;//启动定时器0和1 EA=1;//打开总中断 ET0=1; ET1=1;//打开定时器0和1中断 } void display()//动态扫描函数 { int8 wan,qian,bai,shi,ge; int16 count; wan=frequency/10000; qian=frequency%10000/1000; bai=frequency%10000%1000/100;//取显示频率的百位 shi=frequency%10000%1000%100/10;//取显示频率的十位 ge=frequency%10000%1000%100%10;//取显示频率的个位 duan=0x01;//关闭数码管显示,防止显示跳变干扰 duan=dis[ge];//要显示的频率个位送8255PB口 wei=0xfe;//8255PA0=0,数码管0显示 for(count=0;count200;count++);//延时,大约200us是数码管保持足够的亮度同时亮灭时不被 duan=0xff; duan=dis[shi];//要显示的频率十位送8255PB口人眼分辨完成动态扫描 wei=0xfd;//8255PA1=0,数码管1显示 for(count=0;count200;count++); duan=0xff; duan=dis[bai];//要显示的频率百位送8255PB口 wei=0xfb;//8255PA2=0,数码管2显示 for(count=0;count200;count++);//延时,大约200us duan=0xff; duan=dis[qian];//要显示的频率 千位送8255PB口 wei=0xf7;//8255PA3=0,数码管3显示 for(count=0;count200;count++);//延时,大约200us duan=0xff; duan=dis[wan];//要显示的频率万位送8255PB口 wei=0xef;//8255PA4=0,数码管4显示 for(count=0;count200;count++);//延时,大约200us } main() { control=0x81;//8255A口和B口为输出 time_init(); while(1)display();//一直显示脉冲的频率 } void TIME() interrupt 3//定时器1中断服务程序 { int16 counter=20; int8 FH,FL; TH1=0X4C; TL1=0X01; counter++; if(counter==20) { counter=0; FL=TL0;//将计数器计到的频率值送入FL,FH。保证任一秒只显示这一秒的频率 FH=TH0; frequency=FH*256+FL;//取计数的频率值,送去数码管显示, TL0=0; TH0=0;//将计数器重新置0,计下一秒的频率 } }

文档评论(0)

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

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

1亿VIP精品文档

相关文档