您好,欢迎光临本网站![请登录][注册会员]  
文件名称: 实习报告啊
  所属分类: C
  开发工具:
  文件大小: 32kb
  下载次数: 0
  上传时间: 2014-05-26
  提 供 者: jiang******
 详细说明: #include #define uint unsigned int #define uchar unsigned char sbit squ=P1^4; sbit tri=P1^5; sbit ser=P1^6; sbit freq=P1^7; sbit cs=P3^0; bit flag; uint qian,bai,shi,ge; uint FREQ; uchar num,cho; uchar TIME0_H=0xff,TIME0_L=0xb1; //定时器的初值设定 uchar leddata[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39}; void initial() { FREQ=100;//初始频率设定为100Hz cho=0; cs=0; TMOD=0X01; //定时器0,模式1 TH0=0xff; TL0=0xb1; IT0=1; //外部中断0,下降沿触发 EX0=1; ET0=1; EA=1; TR0=1; } void squwave()//方波,256次间断构成一个周期。若频 率50Hz,即0.02=256*Ts, //则定时初值为65536-Ts*10^6; { //初值计算公式:65536-10^6/(N*FREQ) if(++num<128) P2=0x00; else P2=0xff; } void triwave()//三角波,512次间断构成一个周期 { if(!flag) { P2=num; num+=1; if(num==0) { num=255; flag=1; } } if(flag) { P2=num; num-=1; if(num==255) { num=0; flag=0; } } } void serwave() //锯齿波,256次间断构成一个周期 { P2=num++; } //延时子程序 void delay() { uint i; for(i=10;i>0;i--) ; } //频率调整 void freq_u() { uint temp; if(freq==0) FREQ+=25; if(FREQ==1000) //保证频率在100Hz到1KHz之间,达到边界频率时,调 //整为初始频率 FREQ=100; if(cho==0|cho==2) { temp=65536-3906/FREQ; //方波和锯齿波N=256;65336-10^6/(N*FREQ) TIME0_H=temp/256; TIME0_L=temp%256; } if(cho==1) { temp=65536-1953/FREQ; //三角波N=512;65336-10^6/(N*FREQ) TIME0_H=temp/256; TIME0_L=temp%256; } } //对显示的频率数据进行处理 void datadeal_f() { bai=FREQ/100; shi=FREQ0/10; ge=FREQ; } //按键中断处理程序 void keydeal() interrupt 0 { if(squ==0)//切换为方波 { FREQ=100; cho=0; qian=10;//最高位显示“A”,指示方波 } if(tri==0)//切换为三角波 { FREQ=100; cho=1; qian=11;//最高位显示“b”,指示三角波 } if(ser==0)//切换为锯齿波 { FREQ=100; cho=2; qian=12;最高位显示“C”,指示锯齿波 } if(freq==0) freq_u(); datadeal_f(); } //定时器中断处理程序 void intwave() interrupt 1 { switch(cho) { case 0:{TH0=TIME0_H;TL0=TIME0_L;squwave();break;}//方波 case 1:{TH0=TIME0_H;TL0=TIME0_L;triwave();break;}//三角波 case 2:{TH0=TIME0_H;TL0=TIME0_L;serwave();break;}//锯齿波 default: ; } } //数码管显示 void display() { P0=leddata[qian];//显示波形,A代表方波,“b”代表三角波, //“C”代表锯齿波。 P1=0xfe; delay(); P0=0x00; P0=leddata[bai];//显示频率第1位 P1=0xfd; delay(); P0=0x00; P0=leddata[shi];//显示频率第2位 P1=0xfb; delay(); P0=0x00; P0=leddata[ge];//显示频率第3位 P1=0xf7; delay(); P0=0x00; } //主函数 void main() { initial(); while(1) { display(); } } ...展开收缩
(系统自动生成,下载前可以参看下载内容)

下载文件列表

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 相关搜索: 单片机
 输入关键字,在本站1000多万海量源码库中尽情搜索: