51单片机 DAC0832

发布者:温暖心绪最新更新时间:2015-10-30 来源: eefocus关键字:51单片机  DAC0832 手机看文章 扫描二维码
随时随地手机看文章
    原理图:

 

   

51单片机 <wbr>DAC0832
 

    代码如下:

//程序功能:D/A转换,D12由灭到亮,蜂鸣器响一次,再由亮到灭,蜂鸣器响一次,依次循环
//头文件
#include
#include             //延时一个机械周期函数所在头文件(_nop_())
//定义宏
#define uint unsigned int
#define uchar unsigned char
//控制端声明
sbit duanxuan=P2^6;            //数码管段选口
sbit weixuan=P2^7;             //数码管位选口
sbit DAC0832_CS=P3^2;          //DAC0832选通端
sbit DAC0832_WR=P3^6;          //DAC0832写选通端
sbit beeper=P2^3;              //蜂鸣器
//函数声明
void delay(uint);              //延时函数声明
void init();                   //初始化函数声明
void DAC0832_star();           //DAC0832启动函数声明
void switch_process();         //D/A转换过程函数声明
//变量定义
uint digital_data;             //转换的数字量(不需要转换为二进制,直接可以赋值给P0口)
uint flag;                     //数字量上下限标志量
//主函数
void main()
{
  init();//初始化
  DAC0832_star();              //启动DAC0832
  while(1)
  {
    switch_process();          //D/A转换
  }
}
//延时函数主体
void delay(uint xs)
{
  uint i,j;
  for(i=xs;i>0;i--)
  {
    for(j=110;j>0;j--)
 {
 }
  }
}
//初始化函数主体
void init()    
{
  //目的是关闭数码管,因为数码管数据输入端与DAC0832数据输入端同为P0端口
  duanxuan=0; 
  weixuan=0;
  P0=0;                       //保证第一次点亮D12是最暗的(熄灭)
}
//DAC转换启动函数主体
void DAC0832_star()
{
  DAC0832_CS=0;               //选通DAC0832
  DAC0832_WR=0;               //输入端有效(这么理解,具体与DAC0832其它引脚接法有关)
}
//DAC转换过程函数主体
void switch_process()
{
  if(flag==0)                 //flag=0时,代表数字量达到最下限
  {
    digital_data+=5;          //每次加5
 P0=digital_data;          //赋值给P0,给DAC0832转换为模拟量
 if(digital_data==255)     //达到最大值上线
 {
   flag=1;                 //flag=1,说明数字量达到最上限
      //蜂鸣器响50us
   beeper=0;
   delay(50);
   beeper=1;
 }
 delay(20);                 //延时用于等待转换完成,保证转换是完成的(The DAC083_switch_time is 1us)
  }
  else  //flag=1
  {
    digital_data-=5;
 P0=digital_data;
 if(digital_data==0)
 {
   flag=0;
   beeper=0;
   delay(50);
   beeper=1;
 }
 delay(20);
  }
}

以上,结束。

关键字:51单片机  DAC0832 引用地址:51单片机 DAC0832

上一篇:51单片机 串口
下一篇:51单片机 ADC0804控制

推荐阅读最新更新时间:2024-03-16 14:38

51单片机PWM占空比调整
//51单片机PWM占空比调整演示程序 //(通过测试,注意:AT89S51单片机,有的单片机P3_7需要改为P3^7) /***************************************************************************** * 程序名称:PWM占空比调整演示程序 * *程序思路说明: * * 只需要4个按键。 * *关于频率和占空比的确定,对于12M晶振,输出频率为1KHZ,这样定时中断次数设定为 * *10,即0.0
[单片机]
51单片机点亮LED灯、流水灯
2-1点亮一个LED灯 1.首先在keil中新建一个工程,这里需要注意,将所写的工程可以统一一个地方进行存储,这样方便查找。之后再右击添加新文件 2.首先右击代码行,引用文件 3.之后再编写主函数 4.以其中亮一个LED灯为例,编写程序如下: P2=0xFE;//1111 1110 转换成十六进制0x表示前缀代表的是十六进制数 P2=0xFE;//1111 1110 下载程序后到STC-ISP中选择单片机的型号,串口号,打开相应的程序文件,进行下载编程 5.实现效果 6.当然,也可以加上循环语句表示让其一直循环下去,实现效果是一样的 通过点亮第一个LED灯,可以知道以八个一组为例改变010
[单片机]
<font color='red'>51单片机</font>点亮LED灯、流水灯
51单片机学习之陆 —— 1.2 第一个c51程序(点亮流水灯)
由于学校的板子跟我买的板子有些差异,为了大家的阅读,以后的所有程序编写烧录都以老师发的板子为主。 1 事先准备   a 驱动安装,注意群中已经发了,吧板子的驱动装好哦。   b 烧写软件(烧录器) stc - isp (这里说明下,板子上的芯片是stc的,你还能看到它的型号stc89c52RC,用stc的烧写软件就可以了)    提问:什么是烧写软件?     答:就是把你写好代码(C或者是汇编)专程的 机器语言 通过一定的方式下载到单片机中。称为烧写。(就先这样简单理解吧)   c 编写软件 keil uVision 4 (我仅用它编译生成hex 文件)         notpad++ (我用它写c51的代码,然
[单片机]
<font color='red'>51单片机</font>学习之陆 —— 1.2 第一个c51程序(点亮流水灯)
51单片机有哪些特性?
MCS-51单片机是美国INTE公司于1980年推出的产品,与MCS-48单片机相比,它的结构更先进,功能更强,在原来的基础上增加了更多的电路单元和指令,指令数达111条,MCS-51单片机可以算是相当成功的产品,一直到现在,MCS-51系列或其兼容的单片机仍是应用的主流产品,各高校及专业学校的培训教材仍与MCS-51单片机作为代表进行理论基础学习。我们也以这一代表性的机型进行系统的讲解。 MCS-51系列单片机主要包括8031、8051和8751等通用产品,其主要功能如下: ·8位CPU ·4kbytes 程序存储器(ROM) ·128bytes的数据存储器(RAM) ·32条I/O口线 ·111条指令,大部分为单字
[单片机]
51单片机指令集详解 51单片机布尔操作指令集详解
这里给大家分享一下 51单片机布尔操作指令集详解。 布尔处理功能是MCS-51系列单片机的一个重要特征,这是出于实际应用需要而设置的。布尔变量也即开关变量,它是以位(bit)为单位进行操作的。 在物理结构上,MCS-51单片机有一个布尔处理机,它以进位标志做为累加位,以内部RAM可寻址的128个为存储位。 既然有布尔处理机功能,所以也就有相应的布尔操作指令集,下面我们分别谈论。 . 位传送指令 位传送指令就是可寻址位与累加位CY之间的传送,指令有两条。 MOV C,bit ;bit→CY,某位数据送CY MOV bit,C ;CY→bit,CY数据送某位 . 位置位复位指令 这些指令对CY及可寻址位进行置位或复位操作,
[单片机]
51单片机汇编语言实验(四)----串行通信实验
一、实验目的:    学习串行口的工作方式,掌握单片机通信程序编制方法。 二、实验设备:    PC计算机一台,Dais-52PRO+实验系统一套。 三、实验内容:    与PC进行串行通信 四、与PC进行串行通信    1、实验原理:    8051单片机通过MAX232芯片与PC机进行通信,在PC机上运行串口助手软件。PC机通过软件助手发数据给单片机,单片机收到数据后取反发给PC机,可以在PC上观察数据。    2、实验步骤:   ① 将IO口区的P3.0与PACK区扩展板的RXD(P3.0)连接;   ② 将IO口区的P3.1与PACK区扩展板的TXD(P3.1)连接;   ③ 将PACK区模块的DB9通过串
[单片机]
<font color='red'>51单片机</font>汇编语言实验(四)----串行通信实验
51单片机中断控制LED灯亮灭
#include reg51.h //头文件 sbit LED=P2^0;//位定义LED灯 sbit k3=P3^2;//位定义按键 void delay()//延时函数 { unsigned char a,b; for(a=0;a 200;a++) for(b=0;b 200;b++); } void Int0()//使用中断所做的处理函数 { IT0=1;//外部中断0下降沿触发 EX0=1;//打开外部中断0 EA=1;//打开总中断 } void main()//主函数 { Int0();//调用函数 while(1); } void ledxs() interrupt
[单片机]
基于MCS51单片机的大屏幕LED显示屏高速控制方案
摘要:以MCS51系列单片机为例,介绍单片机对大屏幕LED显示屏的一种高速控制方案。单片机对LED显示屏的显示控制,一般是先从数据存储器读取数据,然后将数据写给LED点阵片。本方案的创新点是:用一条对外部数据存储器的读指令,同时完成对外部数据存储器读和对LED点阵片的写操作。本文详细介绍高速控制方案的电路设计,并简要提示软件编制的要点;最后介绍高速控制方案在大屏幕LED显示屏中的应用。 引言   LED显示屏的基本工作原理是动态扫描。显示控制的过程是先从数据存储器读得字模数据,再通过单片机的串行口或并行口将数据写给LED点阵片,然后再行扫描。   动态扫描方案和静态显示方案相比节省驱动元件,但要求刷新频率高于50 Hz
[家用电子]
基于MCS<font color='red'>51单片机</font>的大屏幕LED显示屏高速控制方案
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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