IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> RT系统+STM32+红外控制(HX1813)+1.44寸显示屏 -> 正文阅读

[嵌入式]RT系统+STM32+红外控制(HX1813)+1.44寸显示屏

本次实验是为了了解RT-thread的工作流程以及简单的实验RT来进行一个学习

实验材料:STM32c8t6+1.44寸TFT显示屏+红外传感器+分光棱镜

实验结果:可以进行红外定时选择,实验成功分为三个线程做任务

线程一:开机时间显示

//APP1
static void led1_thread_entry(void* parameter)
{
  rt_uint8_t hour=0,munite=0,second=0;
	rt_uint8_t dispBuff[100];
	 //Show_Picture(); 
	Demo_Menu();
	while (1)
	{
	 if(second<59) {
		 second++; 
	 }
	 else 
	 {
		 second=0;
		 munite++;
		 if(munite==60) 
		 {
			 second=0;
			 munite=0;
			 hour++;
			 if(hour==24)
			 {
				 second=0;
				 munite=0;
				 hour=0;
			 }
		 }
	} 

	sprintf(dispBuff,"-%02d:%02d:%02d-",hour,munite,second);	
  Draw_Font24B(4,30,RED,dispBuff);	
//	Draw_Font16B(4,40,YELLOW,dispBuff);//8*16 “ABC”
	rt_thread_delay(1000);   /* 延时500个tick */	

	}
}

?线程二:红外遥控判断

//APP2
static void APP2_thread_entry(void* parameter)
{	
  rt_err_t uwRet = RT_EOK;	
	rt_uint8_t key=0;
	rt_uint8_t dispBuff[100];
	rt_uint8_t t=0;	
	rt_uint8_t *str=0;
	while(1)
	{

	  key=Remote_Scan();
			
		if(key)
		{	
		switch(key)
			{
				case 162:
						//1
						str= "*计时器 10 min*";
						munite = 10;
						hour=0;		
						second=0;
            break;
        
        case 98:
						//2					
					  str= "*计时器 20 min*";
            munite = 20;
						hour=0;	
						second=0;
            break;
        
        case 226://3
					 str= "*计时器 30 min*";
					 munite = 30;
					hour=0;	
						second=0;
            break;
        
        case 34://4
					 str= "*计时器 40 min*";
						munite = 40;
					  hour=0;	
				    second=0;
            break;
        
        case 2://5
					 str= "*计时器 50 min*";
           munite = 50;
					 hour=0;
					 second=0;			
            break;
        
        case 194://6
					 str= "*计时器 60 min*";
           munite = 60;
					hour=0;
					second=0;
            break;
        
        case 224://7
					 str= "*计时器 90 min*";
					 hour = 1;
           munite = 30;
					 second=0;
            break;
        
        case 168://8
					 str= "*  计时器 2 h *";
           hour = 1;
					munite = 60;
					second=0;
            break;
        
        case 144://9
					 str= "*  计时器 3 h *";
           hour = 2;
						munite = 60;
						second=0;
            break;
        
        case 152:
					 str= "detected code 0";
            
            break;
        
        case 104:
					 str= "detected code *";
          
            break;
        
        case 176:
					 str= "detected code #";
           
            break;
                
        case 24:
					 str= "detected code ↑";
          
            break;
                
        case 16:
					 str= "detected code ←";
            
            break;
        
        case 74:
					  str= "detected code ↓";
         
            break;
        
        case 90:
					  str= "detected code →";
            break;
        
        case 56:
            str= "detected code OK ";
            break;
        
        default:
					  str= "EMOURE";
         
            break;

			}

//			uwRet = rt_thread_resume(APP3_thread);/* 恢复APP3线程! */
//			if(RT_EOK == uwRet)
//			{
//				rt_kprintf("恢复APP3线程成功!\n");
//			}
//			else
//			{
//				rt_kprintf("恢复APP3线程失败!失败代码:0x%lx\n",uwRet);
//			}
			Draw_Font16B(4,100,BRRED,str);	//显示SYMBOL
		}

	}

}

?线程三:计时器

//APP3
static void APP3_thread_entry(void* parameter)
{
	rt_err_t uwRet = RT_EOK;	
	rt_uint8_t dispBuff[100];
  while (1)
    {
  	 if(second>0) {
			 second--; 
		 }
		 else 
		 {
			 second=59;
			 munite--;
			 //time++;
			 if(munite==0) 
			 {
				 munite=60;
			   second=59;
				 
				 hour--;
				 if(hour==0)
				 {
					 munite=60;
			     second=59;
//					uwRet = rt_thread_suspend(APP3_thread);/* 挂起APP3线程 */
//					if(RT_EOK == uwRet)
//					{
//						rt_kprintf("挂起APP3线程成功!\n");
//					}
//					else
//					{
//						rt_kprintf("挂起APP3线程失败!失败代码:0x%lx\n",uwRet);
//					}
				 }
				
			 
			 }
    } 
	
		sprintf(dispBuff," time:%02d:%02d:%02d",hour,munite,second);		
		Draw_Font16B(4,80,YELLOW,dispBuff);//8*16 “ABC”
	  rt_thread_delay(980);   /* 延时500个tick */	

    }
}

程序代码:01.RT红外定时器.zip-OS文档类资源-CSDN下载

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-11-29 16:28:45  更:2021-11-29 16:29:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:36:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码