STM32+ST7789+RX8025T+DS18B20+EC11+GT30L32S4W组成的时钟

完整的stm32为主控的实时时钟项目

最近宅在家里把以前买的240*240液晶拿出来把玩了一下,做了个小时钟。
几点说明如下:
1:TFT液晶屏采用ST7789驱动,分辨率240*240,采用硬件SPI通讯。
2:文字显示采用GT30L32S4W字库芯片,与液晶屏使用同一个SPI通讯。
3:RX8025T采用软件模拟IIC方式通讯,时间刷新采用中断方式。
4:EC11编码开关为20档20脉冲,采用外部中断方式检测转动方向。
5:项目创建使用MDK4.73,stm32使用标准外设驱动库3.5版本。
6:按EC11中间键后进入调整模式,旋转EC11更改数值。

硬件构成

1:显示器件采用ST7789驱动的240*240IPS屏幕。
2:实时时钟芯片采用带温度补偿的RX8025T。
3:使用EC11旋转编码开关调整时间,中间键按下后进入调整。
4:温度检测使用DS18B20单总线温度传感器。
5:文字显示使用GT30L32S4W字库芯片。
6:主控芯片使用STM32F103C8T6。

成品效果

没有设计复杂的GUI界面,仅使用了基本的绘图功能能及文字显示。洞洞板手工搭接电路板,一切连接线以好走通为原则,每个器件所连接的IO口都是就近选择,所以也就不给出具体电路图纸了,自己看程序吧,这里需要注意一下,因为使用了PB3、PB4,所以只能使用SW下载和调试,或者串口下载代码。
重点:JTAG已被禁用,只能SW调试下载。PB3、PB4被重映射了,我自己是用的串口下载。

显示效果
显示效果
整体布局
整体布局
基本绘图
基本绘图:点、线、矩形、圆、填充,很容易移植到GUI

主程序代码

 int main(void)
 {	 	 
	delay_init();	    	 //延时函数初始化	  
	NVIC_Configuration();    //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
	uart_init(115200);	 	 //串口初始化
 	LED_Init();			     //LED端口初始化
	rx8025t_init();          //初始化RX8025T实时时钟 
	EC11_Init();             //EC11编码开关初始化
 	EXTIX_Init();            //外部中断初始化 
	DS18B20_Init();          //DS18B20温度采集初始化
	SPI_LCD_Init();	         //LCD初始化
	Display_GUItest();       //图形测试
	get_rtc_time(&RTC_Time); //先获取一次时间用于初始显示
	Display_Asc_String('4',20,30,GREEN,BLACK,"20");    //固定显示的部分
	Display_GB2312_String('2',53,28,RED,BLACK, "年");          
	Display_GB2312_String('2',87,28,YELLOW,BLACK, "月");         
	Display_GB2312_String('2',121,28,MAGENTA,BLACK, "日");       
	Display_GB2312_String('2',166,28,LIGHTGREEN,BLACK, "星期");  //15x16汉字
	Display_Asc_String('6',96,52,GREEN,BLACK,":  :"); 
	Display_GB2312_String('3',32,110,BLUE,BLACK, "温度");  
	Display_GB2312_String('3',145,110,BLUE,BLACK, "℃");   //24x24汉字
	Display_Asc_String('5',118,110,WHITE,BLACK,"."); 	
	display(0); //显示日期与时间
	RX8025T_INTen(1); //开实时时钟中断,进入中断刷新显示 
	Time_Update=0;    //时间更新标志复位
	while(1)				
	{	
     if(ec11_key==0) //按键检测
		 {
			 delay_ms(30);
			 if(ec11_key==0)  
			  {
					while(ec11_key==0); 
					Time_CFG();  //开始调整时间
			  }			 
		 }
		if(Time_Update)  //由RX8025T芯片的中断刷新此标志
		 {
			 get_rtc_time(&RTC_Time);  //获取当前时间		 
			 display(0);     //显示时间			 	
             display_tem();  //显示温度				 
			 LED0=!LED0;     //DS0闪烁	
			 Time_Update=0;  //时间更新标志复位			 		 			 
		 }
	}
}

完整程序下载

下载链接: STM32-RX8025T时钟.zip.

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值