三角波发生器

三角波发生器

ID:40582794

大小:35.50 KB

页数:7页

时间:2019-08-04

三角波发生器_第1页
三角波发生器_第2页
三角波发生器_第3页
三角波发生器_第4页
三角波发生器_第5页
资源描述:

《三角波发生器》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、#include//幅值0~5可调频率100~1000#include#include#defineucharunsignedchar#defineuintunsignedint#defineDAC1_hXBYTE[0x7FFF]//1230的高地址#defineDAC1_lXBYTE[0x3FFF]//1230的低地址且启动转换sbitCS7221=P1^1;//7221的片选sbitDIN7221=P1^0;//7221的数据端sbitCLK7221=P1^2;//7221的

2、时钟端ucharDISPBUF[8]={0,1,2,3,4,5,6,7};//显示缓冲区sbitso=P1^5;//165的数据输出端sbitsh=P1^4;//165的转载移位端sbitclk=P1^3;//165的时钟端#definefosc12//晶振频率uintidatatime0_0;//临时变量,用于计算定时uinttime0;//定时时间长度uintpinlv=100;//频率默认为100bitTIME1=0;//用于定时标志bitkaishi=0;//用于定时标志voiddelay(uintn);//延时子程序voidIn

3、itial7221(void);//MAX7221初始化voidWR7221(ucharaddr,ucharData);//MAX7221写程序voidMax7221Display(uchar*buffer);//MAX7221显示程序voidtime2ms(void);//定时器0初始化程序voidtime0_int(void);//定时器0中断服务程序voidsend(ucharhigh,ucharlow);//DAC1230输出转换启动voidDAC1230(void);//输出三角波ucharscankey(void);//键盘扫

4、描voidkey(void);//键盘处理voiddisp(void);//显示频率main(){Initial7221();//初始化MAX7221Max7221Display(&DISPBUF[0]);//显示01234567delay(10000);//延时disp();//显示频率time2ms();//定时器初始化while(1){key();//键盘处理if(kaishi==1)//允许输出三角波{DAC1230();//输出三角波}}}voidsend(ucharhigh,ucharlow)//DAC1230输出转换启动{D

5、AC1_h=((high<<4)

6、(low>>4));//高8位输出DAC1_l=(low<<4);//低4位输出启动转换}voidDAC1230(void)//输出三角波{uchari,k;for(k=0;k<=15;k++)//上升高字节调节{for(i=0;i<=5;i++)//低字节调节一个周期16*6=96个输出{send(k,i*51);//DAC1230输出do{;}while(TIME1!=1);//没到时间时等待TIME1=0;//清时间标志}}for(k=0;k<=15;k++)//下降高字节调节{for(i=0;i<

7、=5;i++)//低字节调节{send(15-k,255-i*51);do{;}while(TIME1!=1);//没到时间时等待TIME1=0;//清时间标志}}}//-------------扫描键盘,返回键值i=(0-7)无按键按下时j=0f--------------------ucharscankey(void){uchari=0,j=0x0f;sh=0;//采集装载delay(1);sh=1;//可以移位了delay(100);for(i=0;i<8;i++)//8位按键读入{clk=0;//先读第一位if(so==0)//对

8、应键按下为0否则为1return(i);//返回键号clk=1;//上升沿移位}return(j);//无按键按下时返回0f}voidkey(void){uchark;uintpinlv0;//暂存频率数pinlv0=pinlv;k=scankey();//读键号if(k==0)//调节频率按键按下吗{delay(1000);//延时去抖k=scankey();if(k==0)//调节频率按键按下{{do{k=scankey();}while(k==0);}//等待按键释放时处理for(;;){k=scankey();if(k==1)//

9、加{delay(1000);//延时去抖k=scankey();if(k==1)//加{{do{k=scankey();}while(k==1);}//等待按键释放时处理pinlv0++;if

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。