http://v.youku.com/v_show/id_XMTQ1OTA2ODY4NA==.html?from=y1.7-1.2

http://v.youku.com/v_show/id_XMTQ1OTI2MzM3Ng==.html?from=y1.7-1.2

视频怎么总是显示失败啊!不会弄了

雕刻机刻的线路

雕刻机刻的不好焊接,容易短路

雕刻机刻的线路真心不好焊接啊、容易短路。

代码:

#include                                                                //头文件

#include "STC12C5A60S2.H"                                                   //STC自己的头文件,

#define uchar unsigned char                                                    //两个宏定义

#define uint unsigned int

sbit ledL15=P1^2;sbit ledL14=P1^3;sbit ledL13=P1^4;             //定义左声道15个LED所接的IO口

sbit ledL12=P1^5;sbit ledL11=P1^6;sbit ledL10=P1^7;

sbit ledL9=P3^0;sbit ledL8=P3^1;sbit ledL7=P3^2;

sbit ledL6=P3^3;sbit ledL5=P3^4;sbit ledL4=P3^5;

sbit ledL3=P3^6;sbit ledL2=P3^7;sbit ledL1=P2^0;

sbit ledR15=P0^0;sbit ledR14=P0^1;sbit ledR13=P0^2;           //定义右声道15个LED所接的IO口

sbit ledR12=P0^3;sbit ledR11=P0^4;sbit ledR10=P0^5;

sbit ledR9=P0^6;sbit ledR8=P0^7;sbit ledR7=P2^7;

sbit ledR6=P2^6;sbit ledR5=P2^5;sbit ledR4=P2^4;

sbit ledR3=P2^3;sbit ledR2=P2^2;sbit ledR1=P2^1;

uint ADC_resultL,ADC_resultR,voL,voR;                                  //定义几个unsigned int型和unsigned char型变量

uchar numL,numR,tt0,tt1,ttL,ttR,biaozhiL,biaozhiR,xuantingL,xuantingR,xialuoL,xialuoR,pfL,pfR;

void delay(uchar z)                                                               //延时程序

{

uchar x,y;

for(x=z;x>0;x--)

for(y=100;y>0;y--);

}

void displayL()                                                                    //左声道显示程序

{

if(pfL==1)

ledL1=0;

else

{

if(numL>=1)ledL1=0;        else ledL1=1;

}

if(pfL==2)

ledL2=0;

else

{

if(numL>=2)ledL2=0;        else ledL2=1;

}

if(pfL==3)

ledL3=0;

else

{

if(numL>=3)ledL3=0;        else ledL3=1;

}

if(pfL==4)

ledL4=0;

else

{

if(numL>=4)ledL4=0;        else ledL4=1;

}

if(pfL==5)

ledL5=0;

else

{

if(numL>=5)ledL5=0;        else ledL5=1;

}

if(pfL==6)

ledL6=0;

else

{

if(numL>=6)ledL6=0;        else ledL6=1;

}

if(pfL==7)

ledL7=0;

else

{

if(numL>=7)ledL7=0;        else ledL7=1;

}

if(pfL==8)

ledL8=0;

else

{

if(numL>=8)ledL8=0;        else ledL8=1;

}

if(pfL==9)

ledL9=0;

else

{

if(numL>=9)ledL9=0;        else ledL9=1;

}

if(pfL==10)

ledL10=0;

else

{

if(numL>=10)ledL10=0;        else ledL10=1;

}

if(pfL==11)

ledL11=0;

else

{

if(numL>=11)ledL11=0;        else ledL11=1;

}

if(pfL==12)

ledL12=0;

else

{

if(numL>=12)ledL12=0;        else ledL12=1;

}

if(pfL==13)

ledL13=0;

else

{

if(numL>=13)ledL13=0;        else ledL13=1;

}

if(pfL==14)

ledL14=0;

else

{

if(numL>=14)ledL14=0;        else ledL14=1;

}

if(pfL==15)

ledL15=0;

else

{

if(numL>=15)ledL15=0;        else ledL15=1;

}

}

void displayR()                                                                    //右声道显示程序

{

if(pfR==1)

ledR1=0;

else

{

if(numR>=1)ledR1=0;        else ledR1=1;

}

if(pfR==2)

ledR2=0;

else

{

if(numR>=2)ledR2=0;        else ledR2=1;

}

if(pfR==3)

ledR3=0;

else

{

if(numR>=3)ledR3=0;        else ledR3=1;

}

if(pfR==4)

ledR4=0;

else

{

if(numR>=4)ledR4=0;        else ledR4=1;

}

if(pfR==5)

ledR5=0;

else

{

if(numR>=5)ledR5=0;        else ledR5=1;

}

if(pfR==6)

ledR6=0;

else

{

if(numR>=6)ledR6=0;        else ledR6=1;

}

if(pfR==7)

ledR7=0;

else

{

if(numR>=7)ledR7=0;        else ledR7=1;

}

if(pfR==8)

ledR8=0;

else

{

if(numR>=8)ledR8=0;        else ledR8=1;

}

if(pfR==9)

ledR9=0;

else

{

if(numR>=9)ledR9=0;        else ledR9=1;

}

if(pfR==10)

ledR10=0;

else

{

if(numR>=10)ledR10=0;        else ledR10=1;

}

if(pfR==11)

ledR11=0;

else

{

if(numR>=11)ledR11=0;        else ledR11=1;

}

if(pfR==12)

ledR12=0;

else

{

if(numR>=12)ledR12=0;        else ledR12=1;

}

if(pfR==13)

ledR13=0;

else

{

if(numR>=13)ledR13=0;        else ledR13=1;

}

if(pfR==14)

ledR14=0;

else

{

if(numR>=14)ledR14=0;        else ledR14=1;

}

if(pfR==15)

ledR15=0;

else

{

if(numR>=15)ledR15=0;        else ledR15=1;

}

}

void init()                                                                          //初始化程序

{

TMOD=0x11;                           //设定定时器0、1工作方式

EA=1;                                         //开总中断

TH0=0xb1;                                  //高8位装初值 TH0=(65536-20000)/256;

TL0=0xe0;                                 //低8位装初值 TL0=(65536-20000)%256;

ET0=1;                                         //开定时器0

TR0=1;                                         //启动定时器0

TH1=0xd8;                                 //高8位装初值TH1=(65536-10000)/256

TL1=0xf0;                                 //低8位装初值TL1=(65536-10000)%256

ET1=1;                                         //开定时器1

TR1=1;                                         //启动定时器1

}

//---------------------------------------------------------------------

//以下选择 ADC 转换速率,只能选择其中一种

//            SPEED1 SPEED0  A/D转换所需时间

#define AD_SPEED   0x60 //  0110,0000   1      1   70 个时钟周期转换一次,

//  CPU工作频率21MHz时 A/D转换速度约 300KHz

//#define AD_SPEED   0x40 //0100,0000   1      0     140 个时钟周期转换一次

//#define AD_SPEED   0x20 //0010,0000   0      1     280 个时钟周期转换一次

//#define AD_SPEED   0x00 //0000,0000   0      0     420 个时钟周期转换一次

//---------------------------------------------------------------------

/*---------------------------------------------------------------------

STC12C5A60S2单片机AD转换函数,直接引用于宏晶科技网站

----------------------------------------------------------------------*/

uint ad_zhuanhuan(uchar channel)

{

uchar AD_finished=0;            //存储 A/D 转换标志

ADC_RES = 0;                                        //高八位清零

ADC_RESL = 0;                                        //低两位清零

channel &= 0x07;                //0000,0111 清0高5位

ADC_CONTR = AD_SPEED;

_nop_();

ADC_CONTR |= channel;           //选择 A/D 当前通道

_nop_();

ADC_CONTR |= 0x80;              //启动 A/D 电源

delay(1);                       //使输入电压达到稳定

ADC_CONTR |= 0x08;              //0000,1000 令 ADCS = 1, 启动A/D转换,

AD_finished = 0;

while (AD_finished ==0 )        //等待A/D转换结束

{

AD_finished = (ADC_CONTR & 0x10); //0001,0000 测试A/D转换结束否

}

ADC_CONTR &= 0xE7;              //1111,0111 清 ADC_FLAG 位, 关闭A/D转换,

return (ADC_RES*256+ADC_RESL);               //返回 A/D 高 8 位转换结果

}

void main()                                                      //主程序

{

P4SW=0x70;                                           //0x70=0111 0000 ,将P4.4 P4.5 P4.6设置成IO口

init();

//        ADRJ = AUXR1^2:

//        0: 10 位A/D 转换结果的高8 位放在ADC_RES 寄存器, 低2 位放在ADC_RESL 寄存器

//        1: 10 位A/D 转换结果的最高2 位放在ADC_RES 寄存器的低2 位, 低8 位放在ADC_RESL 寄存器

//        AUXR1 &= ~0x04;               //0000,0100, 令 ADRJ=0

AUXR1 |= 0x04;                  //0000,0100, 令 ADRJ=1

ADC_CONTR |= 0x80;              //1000,0000 打开 A/D 转换电源,启动AD转换

P1ASF = 0x03;                   //0000,0011, 将 P1.0 P1.1 置成模拟口

while(1)

{

voL= ADC_resultL*5.0;                                  //左声道电平转换结果。语句中5.0=5*1.0其中*1.0是必不可少

//的,不然C语言作整数处理,没有想要的结果产生.

if(voL>2000) numL=14;

else if(voL>1635) numL=13;

else if(voL>1432) numL=12;

else if(voL>1270) numL=11;

else if(voL>1130) numL=10;

else if(voL>1006) numL=9;

else if(voL>895) numL=8;

else if(voL>797) numL=7;

else if(voL>709) numL=6;

else if(voL>650) numL=5;

else if(voL>400) numL=4;

else if(voL>262) numL=3;

else if(voL>159) numL=2;

else if(voL>70) numL=1;

else numL=0;

if(pfL<=numL)                           //检测如果漂浮物不高于峰值就让漂浮物置于峰值上面,同时 标志位 置0

{

pfL=numL+1;

biaozhiL=0;                        //标志位 置0

xuantingL=10;                   //变量xuantingL   改变此值可以设定左漂浮物悬停时间

}

else                                         //if(pfL>numL) 如果漂浮物高于峰值就把标志位置1

{

biaozhiL=1;                      //标志位 置1

}

displayL();                                //显示左声道具体电平值的段

voR= ADC_resultR*5.0;             //左声道电平转换结果。原理同上边左声道

if(voR>2000) numR=14;

else if(voR>1635) numR=13;

else if(voR>1432) numR=12;

else if(voR>1270) numR=11;

else if(voR>1130) numR=10;

else if(voR>1006) numR=9;

else if(voR>895) numR=8;

else if(voR>797) numR=7;

else if(voR>709) numR=6;

else if(voR>650) numR=5;

else if(voR>400) numR=4;

else if(voR>262) numR=3;

else if(voR>159) numR=2;

else if(voR>70) numR=1;

else numR=0;

if(pfR<=numR)

{

pfR=numR+1;

biaozhiR=0;

xuantingR=10;

}

else

{

biaozhiR=1;

}

displayR();                              //显示右声道具体电平值的段

}

}

void timer0() interrupt 1                          //定时器0中断程序

{

TH0=0xb1;

TL0=0xe0;

tt0++;

if (tt0>=1)                                       //20ms转换一次.

{

tt0=0;

ADC_resultL = ad_zhuanhuan(0); //P1.0 为 A/D 当前通道, 测量结果存ADC_result0

ADC_resultR = ad_zhuanhuan(1); //P1.1 为 A/D 当前通道, 测量结果存ADC_result7

}

}

void timer1() interrupt 3                          //定时器1中断程序

{

//再装一次初值

TH1=0xd8;

TL1=0xf0;

tt1++;

if(tt1>=1)

{

if(biaozhiL)

{

ttL++;

if(ttL>7)                          //改变此值可以设定左漂浮物下降速度

{

if(xuantingL==0)

pfL--;

else if(xuantingL>0)

xuantingL--;

ttL=0;

}

}

if(biaozhiR)

{

ttR++;

if(ttR>7)                            //改变此值可以设定右漂浮物下降速度

{

if(xuantingR==0)

pfR--;

else if(xuantingR>0)

xuantingR--;

ttR=0;

}

}

tt1=0;

}

}

c语言峰值保持算法,led频谱显示带峰值保持相关推荐

  1. 利用4位led显示本机秒表时间的单片机c语言程序,基于单片机的一个2位的led数码显示作为_秒表_设计.doc...

    基于单片机的一个2位的led数码显示作为_秒表_设计 PAGE 1 PAGE 29 工程技术学院 课程设计 题 目:用单片机AT89C51设计一个2位的LED数码显示作为"秒表" ...

  2. at89s51数码管秒表c语言程序,基于AT89C51单片机的一个2位的LED数码显示作为“秒表”设计【基于单片机系统的00-99s的定时器】...

    基于AT89C51单片机的一个2位的LED数码显示作为"秒表"设计[基于单片机系统的00-99s的定时器] 工程技术学院 课程设计 题 目:用单片机AT89C51设计一个2位的LE ...

  3. c语言峰值算法_C语言寻找一组数据中的第一第二峰值

    C语言寻找一组数据中的第一第二峰值 实验要求,我需要找出一组数组中的两个峰值:第一个峰值和第二个峰值及其数组下标.这组数据画出的图应该是这样的,我就要找出图中的那两个峰值 我写的程序如下,我试了一下, ...

  4. Processing Arduino 音频频谱显示

    文章目录 前言 一.音频频谱简介 二.使用Minim库显示音频频谱 2.1 Minim文档中的例子 2.2 部分代码的解释 2.3 改写对数平均的频谱显示 三.调整优化 3.1 节奏匹配 3.2 锯齿 ...

  5. 教你一步一步用C语言实现sift算法、上

    原文:http://blog.csdn.net/v_july_v/article/details/6245939 引言:     在我写的关于sift算法的前倆篇文章里头,已经对sift算法有了初步的 ...

  6. C语言实现寻找极值点,九之再续:教你一步一步用c语言实现sift算法、上

    教你一步一步用c语言实现sift算法.上 作者:July.二零一一年三月十二日 出处:http://blog.csdn.net/v_JULY_v 参考:Rob Hess维护的sift 库 环境:win ...

  7. python时间序列峰值检测_算法 - 实时时间序列中的峰值信号检测d

    算法 - 实时时间序列中的峰值信号检测d 更新:迄今为止表现最佳的算法就是这个算法. 该问题探讨了用于检测实时时间序列数据中的突然峰值的稳健算法. 请考虑以下数据集: p = [1 1 1.1 1 0 ...

  8. 51DIY音乐频谱显示

    以前,每当看到家里的音箱功放上的几排小灯,随着播放的音乐如波浪般跳跃,或者在电脑上打开千千静听这个音乐播放软件时,看到那动感的频谱跟随音乐节奏优美的舞动着时,不禁思绪万千,要是自己某天能亲手用普通的单 ...

  9. 音乐频谱显示小玩具——FFT在STM32中的实现与应用

    0.前言 音乐频谱显示说白了就是"儿童版"频谱仪.笔者平时比较喜欢听音乐,闲暇之余听音乐的时候如果有个频谱显示的小玩具在旁边跳来跳去的也挺有意思的,所以笔者去万能的某宝上搜索了一下 ...

最新文章

  1. 在 Python 中妙用短路机制
  2. 实验一 linux命令使用,实验一XXXXX常用linux命令的使用(一)
  3. 评价并不精辟,感觉没有什么深度
  4. 抽签小程序(C语言随机数),C# 抽签小程序
  5. P5200 [USACO19JAN]Sleepy Cow Sorting 牛客假日团队赛6 D 迷路的牛 (贪心)
  6. 网页挂码方式html css,CSS代码 解决网页挂马问题
  7. java xpdf 转换成html_java将Word/Excel/PDF文件转换成HTML整理
  8. TCP/IP详解卷1 - wireshark抓包分析
  9. 华晨集团债务违约65亿 宝马中国:华晨宝马运营不受影响
  10. java正则出现次数_正则表达式(二)—匹配次数的正则
  11. 一个有趣手绘风格的Python绘图库使用
  12. 3.配置阿里云镜像加速
  13. 详解高级前端面试常问的EventLoop
  14. nvidia卸载程序失败_卸载删除NVIDIA驱动程序的方法步骤教程 - 系统家园
  15. 防火墙阻止了IE服务器未响应,ie防火墙如何禁用
  16. three.js入门到实战
  17. EXCEL VBA 实现翻译(简单对照)
  18. 多款功能强大的chrome谷歌浏览器插件推荐
  19. 操作系统实验五:用户进程管理(详细分析)
  20. 统计找出一千万以内,一共有多少质数?(优化过程,效率更快)

热门文章

  1. 《推荐系统实践》试读:第一章:好的推荐系统
  2. 【python pypy】pypy安装
  3. 永磁同步电机的直接转矩控制(一)一一一DTC仿真模型的搭建
  4. Linux快捷键总结
  5. 你真的分清楚子序列和全排列了吗?【建议收藏】
  6. MySQL表字段不能用describe
  7. 5G商用牌照发放,“以竞争促落地”,日常5G服务可期。
  8. 这座“坟墓”埋葬着谷歌那些年死去的产品
  9. 计算机辅助教学英语教案,谈英语计算机辅助教学
  10. 浙江省 教师资格证 岗前培训考试 浙江高培中心报名系统