欢迎来到天天文库
浏览记录
ID:53879080
大小:71.85 KB
页数:3页
时间:2020-04-10
《单片机课设频率计源程序.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、#include#include#defineint8unsignedchar#defineint16unsignedint#defineweiXBYTE[0x0FF20]//将82255PA口映射为数码管的位选,与硬件连接相对应#defineduanXBYTE[0x0FF21]//将8255PB口映射为数码管的段选,与硬件连接相对应#definecontrolXBYTE[0xff23]int8dis[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0
2、x80,0x90};//要显示的0-9段码int16frequency;//定义计数的频率变量voidtime_init()//定时器初始化函数{TMOD=0x15;//定时器1为16位定时器,定时器0为16为计数器TH1=0X4C;TL1=0X01;TL0=0;TH0=0;//计数初值0;TR0=1;TR1=1;//启动定时器0和1EA=1;//打开总中断ET0=1;ET1=1;//打开定时器0和1中断}voiddisplay()//动态扫描函数{int8wan,qian,bai,shi,ge;int16count;wan=
3、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;coun
4、t<200;count++);//延时,大约200us是数码管保持足够的亮度同时亮灭时不被duan=0xff;duan=dis[shi];//要显示的频率十位送8255PB口人眼分辨完成动态扫描wei=0xfd;//8255PA1=0,数码管1显示for(count=0;count<200;count++);duan=0xff;duan=dis[bai];//要显示的频率百位送8255PB口wei=0xfb;//8255PA2=0,数码管2显示for(count=0;count<200;count++);//延时,大约200u
5、sduan=0xff;duan=dis[qian];//要显示的频率千位送8255PB口wei=0xf7;//8255PA3=0,数码管3显示for(count=0;count<200;count++);//延时,大约200usduan=0xff;duan=dis[wan];//要显示的频率万位送8255PB口wei=0xef;//8255PA4=0,数码管4显示for(count=0;count<200;count++);//延时,大约200us}main(){control=0x81;//8255A口和B口为输出time_
6、init();while(1)display();//一直显示脉冲的频率}voidTIME()interrupt3//定时器1中断服务程序{int16counter=20;int8FH,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,计下一秒的频率
7、}}
此文档下载收益归作者所有