三角波流程图如图4-3所示
开始 A=00H Y A送到0832输出 A=00H?A=A+1 A送到0832输出 N
N A=00H?Y A=A-1
图4-3 三角波流程图
三角波产生通过A中数值的加一递升,当A中的内容加到为0时, A中的内容减一递减,从而循环产生三角波。
三角波产生子程序如下: uchar code sanjiao[64]={
0,8,16,24,32,40,48,56,64,72,80,88,96,104,112,120,128,136,144,152,160,168,176,184,192,200,208,216,224,232,240,248,
248,240,232,224,216,208,200,192,184,176,168,160,152,144,136,128,120,112,104,96,88,80,72,64,56,48,40,32,24,16,8,0
};
正弦波程序流程图如图4-4所示
开始 A=00H A=正弦函数表数据 A送到0832输出 N DPTR1=DPTR1+1 Y A=129?
图4-4 正弦波程序流程图
正弦波波形设计通过查表指令得出。其产生子程序如下: uchar code sin[64]={
135,145,158,167,176,188,199,209,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
};
方波程序流程图如图4-5所示
开始 A=00H A送到0832输出 延时 A=FFH A送到0832输出 延时
图4-5 方波程序流程图
方波产生是当A中的内容为0时,输出对应模拟量,然后延时,当A中的内容为0FFH时,同样输出对应模拟量,再延时,从而得到方波。
方波产生子程序如下:
uchar code juxing[64]={
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,
255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0
};
延时子程序流程图如图4-6所示
开始 R6赋初值 R7赋初值 R7减1,R7是否 为0? Y N N R6减1,R6是否 为0? Y 返回 图4-6 延时子程序流程图
延时程序如下:
void delay(uint xms) //延时函数 {
int a,b;
for(a=xms;a>0;a--) for(b=110;b>0;b--);
}方波的上限和下限的延时时间为:3ms S=1+(1+1+2×256+2)×7=3612μS
相关推荐: