51单片机课程设计 波形发生器 - 图文(7)

2020-02-22 14:17

河南理工大学本科课程设计报告

附1:源程序代码

1.主程序:

#include\void main() {

timer_init(); while(1) { keysccan(); display(); if(buttonflag==1)//有按键动作再执行 { switch(boxing) { case 0:led=0x20;//方波指示灯 th=tab2[f-1];//周期设定 tl=tab3[f-1];//周期设定 break; case 1:led=0x10;//锯齿波指示灯 th=255;//周期设定 tl=tab5[f-1];// dj=tab4[fz-1]/tab6[f-1];//步进计算 break; case 2:led=0x08;//三角波指示灯 th=255;//周期设定 tl=tab7[f-1];// ds=tab4[fz-1]/tab8[f-1];//步进计算 break; case 3:led=0x04; th=255;//周期设定 tl=tab11[f-1];// break; } } P3=led;//指示波形 } }

2.头文件:

#include

#define uchar unsigned char #define uint unsigned int sbit we=P3^6; sbit du=P3^7; sbit led1=P3^5; sbit led2=P3^4; sbit led3=P3^3; sbit led4=P3^2;

uchar th=236,tl=120;//定时器初值设定 uchar i;

uchar led,fz=50;//指示灯和幅值50代表5.0 uchar f=5;//1频率代表100

uchar boxing=0;//0方波1锯齿波2三角波3正弦波 uchar buttonflag;//按键动作标志 uchar dj;//锯齿波两点之间的步进; uchar ds;//三角波两点之间的步进 uchar sq;//方波切换标志

uchar scount;//三角波点数计数 uchar dz;//正弦波步进 uchar zcount;//正弦波计数 uchar code tab0[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,

27

河南理工大学本科课程设计报告

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71};//共阴数码管显示0~f

//uchar code tab1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//位选编码 uchar code tab1[]={0xfe,0xfd,0xef,0xdf,0xbf,0x7f};//位选编码

uchar code tab2[]={236,246,249,251,252,252,253,253,253,254};//方波Th uchar code tab3[]={150,78,148,53,45,214,75,165,234,35};//方波TL uchar code tab4[]={5,10,15,20,26,31,36,41,46,51, 56,61,66,71,77,82,87,92,97,102, 107,112,117,122,128,133,138,143,148,153, 158,163,168,173,179,184,189,194,199,204, 209,214,219,224,230,235,240,245,250,255};//幅值 uchar code tab5[]={161,181,200,210,200,212,206,200,208,215};//锯齿TL uchar code tab6[]={80,50,40,35,25,25,19,15,15,15};//锯齿波点数

uchar code tab7[]={153,180,196,197,198,200,194,194,192,187};//三角波TL uchar code tab8[]={40,25,20,15,12,10,8,7,6,5};//三角波点数的一半 uchar code tab9[]={80,50,40,30,24,20,16,14,12,10};//三角波点数 uchar code tab10[]={135,145,158,167,176,188,199,209,//正弦64 218,226,234,240,245,249,252,254, 254,253,251,247,243,237,230,222, 213,204,193,182,170,158,146,133, 121,108,96,84,72,61,50,41, 32,24,17,11,7,3,1,0, 0,2,5,9,14,20,28,36, 45,55,66,78,90,102,114,128 };//正弦波表格

uchar code tab11[]={123,253,176,131,160,179,119,138,154,169};//正弦波tl uchar code tab12[]={64,64,32,16,16,16,8,8,8,8};//正弦波点数 uchar code tab13[]={135,158,176,199,//正弦32 218,234,245,252, 254,251,243,230, 213,193,170,146, 121,96,72,50, 32,17,7,1, 0,5,14,28, 45,66,90,114 };//正弦波表格

uchar code tab14[]={135,176,//正弦16 218,245, 254,243, 213,170, 121,72, 32,7, 0,14, 45,90 };//正弦波表格

uchar code tab15[]={135,//正弦8 218, 254, 213, 121, 32, 0, 45 };//正弦波表格

uchar code tab16[]={135,209,//正弦10 254,230, 158,61, 7,14, 78,128 };//正弦波表格

void delay(uchar i) {

uchar x,y;

for(x=i;x>1;x--) for(y=100;y>1;y--); }

void timer_init() {

TMOD=1;

28

河南理工大学本科课程设计报告

TH0=th; TL0=tl; EA=1; ET0=1; TR0=1; }

void display(void) //数码管动态显示四位数 {

uchar fzs,fzg,fs,fg; uchar x,y; fzs=fz/10; fzg=fz; fs=f/10; fg=f;

for(x=0;x<6;x++) {

du=1; switch(x) { case 0:P2=tab0[fzs]+0x80;break; case 1:P2=tab0[fzg];break; //case 2:P2=0x40;break; //case 3:P2=0x40;break; case 2:P2=tab0[fs];break; case 3:P2=tab0[fg];break; case 4:P2=tab0[0];break; case 5:P2=tab0[0];break; } du=0; we=1; P2=tab1[x]; we=0; for(y=120;y>0;y--); } }

void keysccan() {

P0=0xff; delay(1); if(P0!=0xff) { delay(1); if(P0!=0xff) { switch(P0) { case 0xfe:i=0;boxing=2;break;//三角波 case 0xfd:i=1;boxing=3;break;//正弦波 case 0xfb:i=2;if(f>1)f--;break;//频率减 case 0xf7:i=3;if(fz>1)fz--;break;//幅值减 case 0x7f:i=4;if(fz<50)fz++;break;//幅值加 case 0xbf:i=5;if(f<10)f++;break;//频率加 case 0xdf:i=6;boxing=1;break;//锯齿波 case 0xef:i=7;boxing=0;break;//方波 } buttonflag=1; } while(P0!=0xff) { display(); } }

else buttonflag=0; }

void timer0() interrupt 1 {

TH0=th; TL0=tl; sq=!sq;

29

河南理工大学本科课程设计报告

switch(boxing) { case 0:if(sq)P1=tab4[fz-2]; //如果直接写tab4[fz]不行 else P1=0; break; case 1:if(P1ds)P1=P1-ds; else P1=0; } if(scount>tab9[f-1]) scount=0; break; case 3:if(f<3)//100hz,200hz 64点 { if(zcount3&&f<7)//400-600hz 16个点 { if(zcount6) { if(zcount

}

30

河南理工大学本科课程设计报告

附 2:系统原理图

原理图

PCB图

31

河南理工大学本科课程设计报告

附 3:实物效果图

32


51单片机课程设计 波形发生器 - 图文(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:优秀党员评比方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: