在好例子网,分享、交流、成长!
您当前所在位置:首页C/C++ 开发实例嵌入式开发 → PWM模拟DAC转换功能测试(LCD显示)

PWM模拟DAC转换功能测试(LCD显示)

嵌入式开发

下载此实例
  • 开发语言:C/C++
  • 实例大小:0.21M
  • 下载次数:11
  • 浏览次数:96
  • 发布时间:2021-03-14
  • 实例类别:嵌入式开发
  • 发 布 人:shiyanzhe
  • 文件格式:.zip
  • 所需积分:2
 相关标签: LCD pwm DAC PW 显示

实例介绍

【实例简介】PWM模拟实现DAC ,并用LCD1602显示设定值和PWM_DAC电压的实测值

【文件目录】

PWM模拟DAC转换功能测试(LCD显示)

├── 4X4键盘驱动
│   ├── 4x4KEY.c
│   └── 4x4KEY.h
├── GPIO驱动
│   ├── GPIO.c
│   └── GPIO.h
├── LCD1602驱动
│   ├── LCD1602.h
│   └── lcd1602.c
├── PWM模拟实现DAC功能测试.plg
├── PWM模拟实现DAC功能测试.uvopt
├── PWM模拟实现DAC功能测试.uvproj
├── PWM模拟实现DAC功能测试_uvopt.bak
├── PWM模拟实现DAC功能测试_uvproj.bak
├── STARTUP.A51
├── STARTUP.LST
├── STC15内部ADC驱动
│   ├── ADC.c
│   └── ADC.h
├── STC15硬件PWM驱动
│   ├── STC15W4KPWM.C
│   └── STC15W4KPWM.H
├── STC15头文件
│   └── STC15Fxxxx.H
├── STC15时钟配置
│   └── config.h
├── main.c
├── output
│   ├── 4x4KEY.lst
│   ├── 4x4KEY.obj
│   ├── ADC.lst
│   ├── ADC.obj
│   ├── GPIO.lst
│   ├── GPIO.obj
│   ├── Interrupt.lst
│   ├── Interrupt.obj
│   ├── PWM模拟实现DAC功能测试
│   ├── PWM模拟实现DAC功能测试.hex
│   ├── PWM模拟实现DAC功能测试.lnp
│   ├── PWM模拟实现DAC功能测试.m51
│   ├── PWM模拟实现DAC功能测试.plg
│   ├── STARTUP.lst
│   ├── STARTUP.obj
│   ├── STC15W4KPWM.lst
│   ├── STC15W4KPWM.obj
│   ├── delay.lst
│   ├── delay.obj
│   ├── lcd1602.lst
│   ├── lcd1602.obj
│   ├── main.lst
│   └── main.obj
├── 中断驱动
│   ├── Interrupt.c
│   └── Interrupt.h
└── 软件延时
    ├── delay.c
    └── delay.h

10 directories, 47 files


【核心代码】

void main()
{
     u8 i=6,tmepbuf[4];

u8 dactemp=20;//DAC电压初始值为2.0V
    ADC_InitTypeDef *ADCInit1;

ADCInit1-> ADC_Px = ADC_P14|ADC_P15;
ADCInit1->ADC_Speed=ADC_180T;
ADCInit1->ADC_Power=DISABLE;
ADCInit1->ADC_AdjResult=ADC_RES_H2L8;
ADCInit1->ADC_Polity=PolityLow;
ADCInit1->ADC_Interrupt =DISABLE; 
ADC_Inilize(ADCInit1);
ADC_PowerControl(ENABLE);
//pinMode(61,HighZ);//初始化P15ADC引脚为输入的端口

P1M0 &=0XDF;
P1M1 |=0X20; // P1.5口ADC输入 

PWM6_Init();
Beep_PortInit();//初始化蜂鸣器的端口

Lcd1602_PortInit(); //初始化LCD1602端口
key4x4_PortInit();
Lcd1602Set();    //设置LCD
LcdShowStr(0,0,"PWM_DAC test....",16);
LcdShowStr(0,1,"SET:2.0V DAC:   ",16);
Timer2_attachInterrupt(1,0);//定时器T2定时周期为50uS,用于PWM2的时钟信号
Timer2_detachInterrupt();
Timer0_attachInterrupt(2000,0);//定时器T0定时周期为2MS,用于显示和按键扫描
EA=1;//开启总中断
PWM6_Control(200);
delay_ms(600);

while(1)

   if(keynum==1) //K1按键设定DAC电压 加1;
{
   keynum=0;
   dactemp =1;
   if(dactemp>50)
      dactemp=50;    
   tmepbuf[0]=((dactemp/10)%10) 0x30;
   tmepbuf[1]='.';
   tmepbuf[2]= (dactemp)%10 0x30;
   tmepbuf[3]='\n';
  LcdShowStr(4,1,tmepbuf,3);      
}
if(keynum==2)  //K2按键设定DAC电压,减1
{
   keynum=0;   
   if(dactemp>5)
     dactemp-=1;   
   tmepbuf[0]=((dactemp)/10)%10 0x30;
   tmepbuf[1]='.';
   tmepbuf[2]=(dactemp)%10 0x30;
   tmepbuf[3]='\n';
  LcdShowStr(4,1,tmepbuf,3);  
}
   if(Flag_100ms==1) //每100MS测量次电压值
{
Flag_100ms=0; 
Disp_ADC();  
}
  PWM6_Control(dactemp*10);//PWM_DAC输出设定的电压  


}


/* 整型数转换为字符串,str-字符串指针,dat-待转换数,返回值-字符串长度 */
unsigned char IntToString(unsigned char *str, int dat)
{
    signed char i = 0;
    unsigned char len = 0;
    unsigned char buf[6];
    
    if (dat < 0)  //如果为负数,首先取绝对值,并在指针上添加负号
    {
        dat = -dat;
        *str = '-';
        len ;
    }
    do {          //先转换为低位在前的十进制数组
        buf[i ] = dat % 10;
        dat /= 10;
    } while (dat > 0);
    len = i;     //i最后的值就是有效字符的个数
    while (i-- > 0)   //将数组值转换为ASCII码反向拷贝到接收指针上
    {
        *str = buf[i] '0';
    }
    *str = '\0';  //添加字符串结束符
    
    return len;   //返回字符串长度
}

/*
函数功能:把字符型数换成字符串
*/ 
//void CharToString1(unsigned char *string1,unsigned char dat1)
//{
//
//string1[0]=dat1/100 '0';
//string1[1]=(dat1/10)%10 '0';
//string1[2]=dat1%10 '0';
//string1[3]='\0';
//} 

void Disp_ADC()
{
     u8 i=0,len=0;
u8 tempbuf[6];
u16 ADC_Temp=0; 
 
  LcdShowStr(13,1,"   ",3);
  for(i=0;i<20;i ) //20次求平均值才达到稳定电压的效果
  {
  ADC_Temp =Get_ADC10bitResult(ADC_CH5);
  }
  ADC_Temp /= 20; 
len=IntToString(tempbuf,ADC_Temp);
 
ADC_Temp =ADC_Temp*10*5.0/1024;
tempbuf[0]=ADC_Temp/10 '0';
tempbuf[1]='.';
tempbuf[2]=ADC_Temp%10 '0';
tempbuf[3]='\n';  
LcdShowStr(13,1,tempbuf,3);

}

void Beep_PortInit(void)
{
P4M0=0X00;
P4M1=0X00;
BEEP=1;
}


标签: LCD pwm DAC PW 显示

实例下载地址

PWM模拟DAC转换功能测试(LCD显示)

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警