【LV12 DAY20 RTC实验】

在这里插入图片描述
编程实现通过LED状态显示当前电压范围,并打印产生低压警报时的时间

注:
电压在1501mv~1800mv时,LED2、LED3、LED4、LED5点亮
电压在1001mv~1500mv时,LED2、LED3、LED4点亮
电压在501mv~1000mv时,LED2、LED3点亮
电压在0mv~500mv时,LED2闪烁,且每隔一秒钟向终端打印一次当前的电压值及当前的时间

#include "exynos_4412.h"

void delay(unsigned int time)

{
   

		while(time--);

}

int main()

{
   

	unsigned int adcvalue;

	//将adc的转换精度设置为12位

	ADCCON=ADCCON | (1<<16);

	//使能adc分频器

	ADCCON=ADCCON | (1<<14);

	//设置adc分频值,adc的时钟频率100/(19+1)=5MHZ,转换频率是5MHZ/5=1MHZ;

	ADCCON=ADCCON & (~(0xff<<6)) | (19<<6);

	//关闭待机模式,使能正常模式

	ADCCON=ADCCON & (~(1<<2));

	//关闭通过读使能ad转换

	ADCCON=ADCCON & (~(1<<1));

	//选择转换通道3

	ADCMUX=3;

	//LED2控制引脚设置输出模式

	GPX2.CON=GPX2.CON & (~(0XF<<28)) | (1<<28);

	//LED3控制引脚设置输出模式

	GPX1.CON=GPX1.CON & (~(0XF)) | (1);

	//LED4控制引脚设置输出模式

	GPF3.CON=GPF3.CON & (~(0XF<<16)) | (1<<16);

	//LED5控制引脚设置输出模式

	GPF3.CON=GPF3.CON & (~(0XF<<20)) | (1<<20);

	unsigned int oldsec=0,newsec=0;

	//使能RTC控制

	RTCCON=RTCCON | (1);

	//校准时间信息

	RTC.BCDYEAR=0X023;//0000 0010 0011 ---BCD 023 ---十进制35 和十六进制的二进制是一样的

	RTC.BCDMON=0X12;

	RTC.BCDDAY=0X7;//因为三星开发板中week和day的地址写反了,所以要交换一下顺序

	RTC.BCDWEEK=0X31;

	RTC.BCDHOUR=0X23;

	RTC.BCDMIN=0X59;

	RTC.BCDSEC=0X50;

	RTCCON=RTCCON & (~(1));



	while(1)

	{
   

		//开始转换

		ADCCON=ADCCON | 1;

		//等待转换完成

		while(!(ADCCON & (1<<15)));

		//读取转换结果

		adcvalue=ADCDAT & (0XFFF);

		//将结果转换成实际的电压值//mv 1800/4096 

		adcvalue=adcvalue * 0.44;

			if(adcvalue<501)

		{
   

			//LED2闪烁//

			GPX2.DAT=GPX2.DAT | (1<<7);

			delay(1000000);

			GPX2.DAT=GPX2.DAT & (~(1<<7));

			delay(1000000);

			//其他LED关闭

			GPX1.DAT=GPX1.DAT & (~1);		

			GPF3.DAT=GPF3.DAT & (~(1<<4));

			GPF3.DAT=GPF3.DAT & (~(1<<5));

			newsec=RTC.BCDSEC;

			if(oldsec!=newsec)

			{
   

			printf("20%x-%x-%x %x %x:%x:%x,adcvalue= %d mv\n",RTC.BCDYEAR,RTC.BCDMON,RTC.BCDWEEK,

				RTC.BCDDAY,RTC.BCDHOUR,RTC.BCDMIN,RTC.BCDSEC,adcvalue);



			oldsec=newsec;

			}





			

		}else if(adcvalue>500&&adcvalue<1001)

		{
   

			GPX2.DAT=GPX2.DAT | (1<<7);

			GPX1.DAT=GPX1.DAT | 1;	

			//关闭LED4,LED5

			GPF3.DAT=GPF3.DAT & (~(1<<4));

			GPF3.DAT=GPF3.DAT & (~(1<<5));





		}else if(adcvalue>1000&&adcvalue<1501)

		{
   

			GPX2.DAT=GPX2.DAT | (1<<7);

			GPX1.DAT=GPX1.DAT | 1;		

			GPF3.DAT=GPF3.DAT | (1<<4);

			//关闭LED5

			GPF3.DAT=GPF3.DAT & (~(1<<5));

		}else 

		{
   

			GPX2.DAT=GPX2.DAT | (1<<7);

			GPX1.DAT=GPX1.DAT | 1;		

			GPF3.DAT=GPF3.DAT | (1<<4);

			GPF3.DAT=GPF3.DAT | (1<<5);

		



		

		}



		

	}

	



	return 0;

}

在这里插入图片描述

相关推荐

  1. LC刷题】DAY02:24 19 142

    2024-01-17 08:40:04       24 阅读
  2. LC刷题】DAY24122 55 45 1005

    2024-01-17 08:40:04       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-17 08:40:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-17 08:40:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-17 08:40:04       82 阅读
  4. Python语言-面向对象

    2024-01-17 08:40:04       91 阅读

热门阅读

  1. SPA首屏加载速度慢怎么解决

    2024-01-17 08:40:04       46 阅读
  2. AtCoder Beginner Contest 333 A-D题解

    2024-01-17 08:40:04       53 阅读
  3. Jupyter Notebook之添加anaconda环境

    2024-01-17 08:40:04       60 阅读
  4. re模块中match函数的使用

    2024-01-17 08:40:04       52 阅读
  5. springMvc的Aop解析并修改参数

    2024-01-17 08:40:04       52 阅读
  6. Python 3 中如何使用 format 方法格式化字符串

    2024-01-17 08:40:04       54 阅读
  7. 高并发场景下底层账务优化方案

    2024-01-17 08:40:04       58 阅读
  8. **FutureTask应用&源码分析**(二)

    2024-01-17 08:40:04       56 阅读
  9. 机器学习:简要介绍及应用案例

    2024-01-17 08:40:04       58 阅读
  10. #Day13 C基础(指针数组、函数)

    2024-01-17 08:40:04       50 阅读
  11. 如何在原型中实现继承和多态

    2024-01-17 08:40:04       51 阅读
  12. 【Qt5】QString的成员函数arg

    2024-01-17 08:40:04       61 阅读
  13. vue 开发规范

    2024-01-17 08:40:04       52 阅读
  14. 【vue】-

    2024-01-17 08:40:04       52 阅读
  15. 二级C语言备考7

    2024-01-17 08:40:04       43 阅读
  16. CentOS中如何让新建用户拥有root权限

    2024-01-17 08:40:04       47 阅读