⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dac_adc.c

📁 大家好
💻 C
字号:
//DAC转换 输出0~5伏 步进0.1伏
//系统时钟 22.1184MHz 
//T3自动重装产生方波

#include "ms_c.h"
#include "key.h"

sfr16 ADC0 =0xbe;

uchar voltage=0;				//输出电压值 0.0~5.0
uchar test_vol=0;				//ADC0检测的电压


void DAC0_Init(void)
{
	DAC0CN=0x80;			//允许DAC0  在写DAC0H时更新 数据格式:高四位在DAC0H[3~0] 低八位在DAC0L
	REF0CN=0x03;			//允许偏压发生器和电压基准缓冲器 
					}	
			


void ADC0_Init (void)
{
	//REF0CN=0x07;			//允许温度传感器 偏压发生器和基准电压发生器
	
	AMX0CF=0x00;			//所有的输入均为单端输入
	AMX0SL=0x00;			//AIN0//温度传感器
	ADC0CF=0x50;			//增益 1
    ADC0CN=0x80;			//一直跟踪 写ADC0BUSY启动转换 数据右对齐

								}


void set(void)
{
	voltage=LED_BUF[1]+LED_BUF[2]*10+(LED_BUF[3]&0x0f)*100;
	DAC0L=17*voltage%256;
	DAC0H=17*voltage/256;
	
					}

void main(void)
{
	voltage=0;
	
	SYSCLK_Init	();
	PORT_Init 	();
	UART0_Init	();
 	DAC0_Init	();
	ADC0_Init 	();
	
/*	LED_BUF[8]=0x0f;
	LED_BUF[7]=0x0f;
	LED_BUF[6]=0x0f;*/
	LED_BUF[5]=0x0f;
	LED_BUF[4]=0x0f;

	LED_BUF[3]=voltage/100+0x80;
	LED_BUF[2]=voltage%100/10;
	LED_BUF[1]=voltage%10;


	send_led	();

	while(1)
	{
		send_led ();
		chk_key();
		
		{
			AD0BUSY=1;
			test_vol=ADC0/17;
			LED_BUF[8]=test_vol/100+0x80;
			LED_BUF[7]=test_vol%100/10;
			LED_BUF[6]=test_vol%10;
											
											}	
		if(SET_FLAG)
		{	set();
			SET_FLAG=0;
							}
									}									
											}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -