1、uchar keydat。uchar flag。 /波形发生终止信号的标志位 一旦被置零立马停止发信号uchar flagsqu。 /方波高低电平控制为 /延时函数 uchar x,y。 for(x=0。x for(y=z。y0。y-。void prepare( /tlc5615的初始化 cs=1。 din=1。 clk=0。 cs=0。 /cs的上升沿和下降沿必须在clk为低时进?/* 用中断来产生方波void Squtranslator( TR1=1。 /启动定时器1 控制高低电平的持续时间 占空比 do do _wave=0。 while(!flagsqu & flag=1/如果一旦终止
2、信号的 /产生可以立马退出循环 flagsqu=0。 _wave=1。 while(flag flag=1。 TR1=0。 */ /方波函数 uchar j。 uchar dat1=0x7f。 while(flag prepare( dat=dat1。 for(j=0。j din=(bit(dat7 /将数据的最高位赋给din clk=1。 dat=dat /使高低电平持续一段时间 if(dat1=0 dat1=0x7f。 /完成了0和0x7f之间的替换 else dat1=0。 while(flag void Tratranslator( /锯齿波的发生函数 delay(2 /稍加延时 da
3、t1-。 while(flag & dat1 /一旦有终止信号就可以停止 dat1+。 (!(dat1=0x7fvoid Sintranslator(uchar wave,uchar num /正弦波的转换函数 uchar i,j。 uchar dat1。 for(i=0。i dat1=wavei。 /打开片选 开始工作(dat1 /将数据的最高位赋给din dat1=dat1break。 /cs的上升沿和下降沿必须在clk为低时进行 delay(1 /稍加延时 if(flag=0 /等待控制键的暂停void keyscan( /切换功能按键返回键值函数 uchar i。 for(i=0。4。
4、 if(key1=0 delay(10 if(key1=0 keydat+。 dowhile(!key1 /松手检测 if(keydat=4keydat=1。/加满回零处理void keycountrl( /切断输出控制函数 if(key2=0 if(key2=0 flag=0。key2 void main ( uchar temp。 TMOD=0x01。 /确定定时器的工作方式 TH0=(65536-50000/256。 /给定时器0赋予初值 TL0=(65536-50000%256。 EA=1。 /开总中断 ET0=1。 /开启定时器0中断 TR0=1。 while(1 switch(keydat case 1:doSintranslator(tosin,141while(flag case 2:doTratranslator( case 3:doSqutranslator( default: temp=keydat。 /装载键值 while(keydat=temp /在这里等待键值的改变void Time0( interrupt 1 /定时器0用来扫描按键不断地扫描d num+。 if(num=4 keyscan( keycountrl( num=0。 申明:所有资料为本人收集整理,仅限个人学习使用,勿做商业用途。