基于51单片机的程控放大器

发布者:星际穿越最新更新时间:2022-01-29 来源: eefocus关键字:51单片机  程控放大器 手机看文章 扫描二维码
随时随地手机看文章

仿真图: 基于数码管显示,具有方波 正弦波 三角波 锯齿波放大功能,放大倍数支持1倍20倍30倍50倍放大
在这里插入图片描述
在这里插入图片描述

程序设计

#include

#include

sbit sbF1 = P2 ^ 0;   //不进行放大处理

sbit sbF20 = P2 ^ 1;  //放大20倍

sbit sbF30 = P2 ^ 2;  //放大30倍

sbit sbF50 = P2 ^ 3;  //放大50倍


sbit sbDIN = P3 ^ 0;                        //MAX7219的数据引脚

sbit sbLOAD = P3 ^ 1;                      //MAX7219的控制引脚

sbit sbCLK = P3 ^ 2;                       //MAX7219的时钟引脚


//显示缓冲区定义

unsigned char Disp_Buffer[8]=            //MAX7219的输出缓冲

{

  0,0,0,0,0,0,0,0

};

unsigned char Disp_Buffer1[8]=            //MAX7219的输出缓冲

{

  0,0,0,0,0,0,0,1

};

unsigned char Disp_Buffer20[8]=            //MAX7219的输出缓冲

{

  0,0,0,0,0,0,2,0

};

unsigned char Disp_Buffer30[8]=            //MAX7219的输出缓冲

{

  0,0,0,0,0,0,3,0

};

unsigned char Disp_Buffer50[8]=            //MAX7219的输出缓冲

{

  0,0,0,0,0,0,5,0

};


void DelayMS(unsigned int ms)              //毫秒级延时函数

{

unsigned int i,j;

for( i=0;i for(j=0;j<1141;j++);

}

//写MAX7219函数,Addr为MAX7219的内部寄存器地址,Dat为待写入的数据

void Write7219(unsigned char Addr,unsigned char Dat)

{

  unsigned char i;

sbLOAD = 0;                                         

for(i=0;i<8;i++)                               //先送出8位地址

{

sbCLK = 0;                                   //时钟拉低

Addr <<= 1;                                  //移位送出地址

sbDIN = CY;                                    //送出数据

sbCLK = 1;                                   //时钟上升沿

_nop_();

_nop_();

sbCLK = 0;                                   

}

for(i=0;i<8;i++)                              //再送出8位数据

{

sbCLK = 0;

Dat <<= 1;                                  //移位送出数据

sbDIN = CY;

sbCLK = 1;

_nop_();

_nop_();

sbCLK = 0;

}

sbLOAD = 1;

}

//MAX7129的初始化函数

void Initialise7219()

{

  Write7219(0x09,0xff);                 //编码模式寄存器

Write7219(0x0a,0x07);                 //显示亮度控制

Write7219(0x0b,0x07);                 //扫描控制

Write7219(0x0c,0x01);                 //关闭模式控制寄存器设置

}


void  Wobbling ()   //延时程序防止按键抖动

{

  unsigned int i;

  for(i=0;i<1000;i++);

}


void main()

{

  unsigned char i;

Initialise7219();                     //首先初始化MAX7129

DelayMS(1);                         //延时1毫秒

  for(i=0;i<8;i++)

{

Write7219(i+1,Disp_Buffer[i]);      //将显示缓冲区内的数据循环送出

  P1 = 0x00;    //初始化端口

  P2 = 0xFF;  

  P1 = 0x11;   //再不按键的情况下默认为不进行放大处理

  while(1)

  {

  if (sbF1 == 0) //判断是否按下按键

  {

    Wobbling();   //时间延时程序,软件防抖动

    if( sbF1 == 0)  //确定按下按键

    {

      P1 = 0x11;   //放大1倍

      for(i=0;i<8;i++)

    {

    Write7219(i+1,Disp_Buffer1[i]);      //显示放大1倍

    }

    }

  }

  if(sbF20 == 0)  //判断是否按下按键         

  {

    Wobbling();   //时间延时程序,软件防抖动 

    if(sbF20 == 0) //确定按下按键 

    {            

      P1 = 0x22;   //放大20倍 

      for(i=0;i<8;i++)

    {

    Write7219(i+1,Disp_Buffer20[i]);      //显示放大20倍

    }

     }             

  }

  if(sbF30 == 0) //判断是否按下按键         

  {

    Wobbling();   //时间延时程序,软件防抖动 

    if(sbF30 == 0) //确定按下按键   

    {          

      P1 = 0x44;   //放大30倍  

      for(i=0;i<8;i++)

    {

    Write7219(i+1,Disp_Buffer30[i]);      //显示放大20倍

    }

     }            

  }


文件仅供参考


链接:https://pan.baidu.com/s/1Ro5Ryg7k_E4AuBsxYmeQdA

提取码:cxa5

关键字:51单片机  程控放大器 引用地址:基于51单片机的程控放大器

上一篇:51单片机驱动蜂鸣器发声教程
下一篇:基于51单片机的简易摇号抽奖机器

推荐阅读最新更新时间:2024-11-16 23:23

51单片机学习笔记8 -- OLED显示(SPI)
1.OLED简介 有机发光二极管(Organic Light-Emitting Diode, OLED)又称为有机电激光显示、有机发光半导体。由美籍华裔教授邓青云(Ching W. Tang)于1979年在实验室中发现。OLED显示技术具有自发光、广视角、几乎无穷高的对比度、较低耗电、极高反应速度等优点。 1.2 OLED结构 由基板、阴极、阳极、空穴注入层(HIL)、电子注入层(EIL)、空穴传输层(HTL)、电子传输层(ETL)、电子阻挡层(EBL)、空穴阻挡层(HBL)、发光层(EML)等部分构成。其中,基板是整个器件的基础,所有功能层都需要蒸镀到器件的基板上;通常采用玻璃作为器件的基板,但是如果需要制作可弯曲的柔性
[单片机]
<font color='red'>51单片机</font>学习笔记8 -- OLED显示(SPI)
ILI9235的51单片机驱动程序-推箱子游戏
完整的代码下载地址: http://www.51hei.com/bbs/dpj-20611-1.html 下面是ILI9235的驱动程序部分预览 #include mylib.h /******************************************************************************* 函数名称:void ClearScreen(uint Color) 函数功能:刷屏使得全屏显示单一的颜色 入口参数:Clolr:屏幕背景的颜色(直接写入颜色的英文,在.h中有定义) 出口参数:无 备 注: ***************************************
[单片机]
ILI9235的<font color='red'>51单片机</font>驱动程序-推箱子游戏
基于51单片机 红绿灯数码管程序
#include reg52.h //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 #define DataPort P0 //定义数据端口 程序中遇到DataPort 则用P0 替换 #define CtrlPort P1 //定义控制端口 unsigned char code DuanMa ={0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8,0x80,0x90};// 显示段码值0~9 unsigned char code WeiMa ={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//分别对应相应的数码管点亮,即位码 un
[单片机]
基于51单片机对电子储物柜系统的设计
电路描述: 安全是我们日常的生活中最关心的问题。 每个人都觉得安全问题是非常至关重要的,在家里的门和安全,可以尽可能多的安全。 为了对于门访问安全 因此,我们打算通过引进一个电子密码锁系统,该系统包括一个人得到一个访问某些项目之前要输入密码的安全性,以及在家里,一个房间密码锁系统,不只是普通的单用户密码锁系统,需要用户插入已编程的代码来访问一个房间; 它是一个密码锁系统,有密码而且可以启用多个用户访问。 在基于51单片机的门储物柜,只允许授权人员进入限制区域的门禁系统。 该系统由8位微控制器AT89C2051具有ROM的2K字节的程序存储器完全控制。 该系统具有通过该密码,可以通过它来输入键盘。 当输入的密码与存储在存储器
[单片机]
基于<font color='red'>51单片机</font>对电子储物柜系统的设计
51单片机简单计时器
#include reg52.h #define uint8 unsigned char #define uint16 unsigned short int //数码管段码显示:0~f,不亮 uint8 code LED_Disp = {0xC0,0xF9,0xA4,0xB0, //这一组编码当中不包含小数点 0x99,0x92,0x82,0xF8, 0x80,0x90}; //十个分别显示 0 1 2 3 4 5 6 7 8 9 uint8 code LED_Disp1 = {0x40,0x79,0x24,0x30, //这一个数组的编码中包含小数点 0x19,
[单片机]
基于51单片机的液位检测系统
  随着现代测量技术的发展,对测量系统提出了越来越高的要求。在自动蒸馏测控系统中,准确及时地检测出蒸馏过程中从冷凝管馏出的第一滴液滴是获取初馏点的前提;实时、准确地测量出量筒中回收液体体积的变化是控制蒸馏过程中不同时段不同蒸馏速度的依据。而目前担负着对冷凝管馏出的液滴进行检测、回收、计量、测速等任务的完成有诸多不尽人意的地方,需要更加完善、合理的液滴、液位检测跟踪控制系统。   从液位测量的方法看,按检测器与液体接触与否分为两大类:一是接触式测量,二是非接触式测量。当需要通过测量液位变化确定体积变化时,一般采用非接触式测量方法。但在大多数非接触式测量中,液位传感器测试范围较大,绝对分辨率均大于0.5ml,因而在体积变化范围为0-
[单片机]
基于<font color='red'>51单片机</font>的液位检测系统
51单片机的串口收发C51程序
//晶振11.0592Mhz //2010年10月9日给网友改,在硬件上调试通过 #include reg52.h unsigned char a1; bit flag; void main() { TMOD=0x20; TH1=0xfd; TL1=0xfd; TR1=1; REN=1; SM0=0; SM1=1; EA=1; ES=1; while(1) { if(flag==1) { ES=0; flag=0; SBUF=a1; while(!TI); TI=0; ES=1; } } } void ser() interrupt 4 { i
[单片机]
89C51单片机在环境噪声测量仪中的应用
环境噪声监测,是人类提高生活质量,加强环境保护的一个重要环节,在各大城市的繁华街区和居民区,已有大型环境噪声显示器竖立街头。但目前国内的便携式噪声测试仪,多为价格昂贵的进口专用设备,除卫生、计量等环保专业部门拥有外,无法作为民用品推广普及。本文介绍一种以89C51单片机为核心,采用 V / F 转换技术构成的低成本、便携式数字显示环境噪声测量仪。该仪器工作稳定、性能良好,经校验定标后能满足一般民用需要,可广泛应用于工矿企业、机关学校等需要对环境噪声进行测量和控制的场合。 1 声压级的测量机理 人耳的听阈一般是20m Pa (微帕),痛阈一般是200Pa(帕),其间相差10 7 倍,这样宽广的声压范围很不易测量,而且
[单片机]
89C<font color='red'>51单片机</font>在环境噪声测量仪中的应用

推荐帖子

读取CF卡的序列号的问题
我的程序如下:是在网上弄到的。//getCFSerialNumber.cpp:Definestheentrypointfortheapplication.//#includestdafx.h//mycode#includewindows.h#includewinioctl.h#defineIOCTL_DISK_BASEFILE_DEVICE_DISK#defineIOCTL_DISK_GET_STORAGEIDCTL_CODE(I
paraller 嵌入式系统
请教各位前辈:泰克的老款二手频率计,1.3G, 1PPM,400元值得收么?
如题,卖家说机器里面看着非常新,功能正常,没用到贴片件。从用的元器件看是97年出的。指标比国产便宜的机器还好很多,频率范围不太大但也够用了。问问各位高人还值得收吗?先谢了!请教各位前辈:泰克的老款二手频率计,1.3G,1PPM,400元值得收么?有自校正吗,没的话就别考虑,用段时间需要校正的,除非你自己有能力能校正。泰克的东西质量就是好啊,13年了,还能拿出来卖,不得不服~我买这个主要是为了测彩色副载波。这台机子里面有个10M的TCXO,精度就是1PPM
春之歌 测试/测量
用Seeed Studio BeagleBone Green Wireless开发板解决物联网应用开发面临的挑战
物联网(IoT)快速发展,成为了创新的主要驱动力,吸引了来自互联网应用和传统嵌入式设备领域的许多开发者。因为应用常常设计新的、未经测试的产品概念,此类产品的市场仍不确定。因此,使用能够快速做出原型机并进行早期用户接受测试开发方法非常重要。如果产品概念证明成功,就需要快速开发进入市场,以避免模仿竞争。传统的嵌入式开发在进行任何用户测试之前首先需要设计制造定制硬件原型。这代表了具有硬件设计能力的公司的大部分时间和成本,尤其是主板需要使用无线连接和传感器增强处理器或微控制器(MCU)。如果你
maylove DSP 与 ARM 处理器
WinCE中USB HID设备的读写问题
为什么在WindowsXP/2k...下可以CreateFile,可以WriteFile/ReadFile的USBHID设备在WinCE上却不行?1.我在HKLM\\Drivers\\Active\\2x\\下找到了这个HID设备(Name:sz:HID1:)2.我用CreateFile打开它,成功;但却无法Write/Read,至少WriteFile是不行的仁兄们,这是为何?我要想在WinCE上读写USBHID设备要怎么办?WinCE中USBHID设备的读写问题1是不是驱
lgyno WindowsCE
CPLD在时栅位移传感器中的应用
引言智能时栅位移传感器是在文献提出的时空坐标转换理论和文献提出的“场式运动坐标系”思想指导下,根据智能传感器的特点和设计方法,研制开发的一种全新的位移传感器。“以时间测量空间”的设计原理和思想新颖、独特,已获国家专利。与光栅等传统栅式位移传感器相比,具有制造工艺简单、结构简单、抗干扰能力强、成本低、智能化程度高等显著优势,具有很好的市场前景和竞争力。智能时栅位移传感器的工作原理是:用于拾取信号的动、定测头置于一旋转磁场内,旋转磁场是由按时间120°均分的三相交流电流接到按空间12
frozenviolet 汽车电子
DCDC反向预充
有做过DCDC反向预充的吗,拓扑如上,低压侧(右边)反向给高压侧(左边)母线电容充电。技术方案我已经知道了,但参数设计和仿真模型搞不出来,有大佬会吗?DCDC反向预充变压器的参数需要知道吧搜一下MPS的有现成方案TI也有一款芯片反向DCDC的华为手机的反充你可以去b站搜搜看有拆解能看到芯片。纯属好奇,开发这个功能的目的是什么呢?
爱干饭 汽车电子
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved