YS13-3熒光管時鐘設計

前幾日,女朋友生日,問她想要啥禮物時,她提到說想要那種輝光管的自制時鐘,然後上網一查,發現輝光管驅動電壓挺高,而且管子還貴,於是摺合了一下,用YS13-3熒光管代替輝光管來做時鐘。廢話不多說,下面介紹一下我的設計流程。

設計思路與元器件選擇

這裏我採用的主控芯片是stm32f103C8T6。原因有幾個,首先開發較快,用過stm32cubemx的都知道,開發效率上比傳統標準庫要快。其次便宜,而且好焊接。再然後是如何點亮熒光管的問題了。當初查找資料可是費了不少功夫。最後簡單總接一下。YS13-3需要三個不同電壓,1.2V,24V與GND.總的來說,就是引腳1接地,引腳9接1.2V,引腳6接24V,這三個是不變的。剩下的引腳,那個接24V,其對應的管就會亮。那如何找到引腳1呢?方法就是正視管子,內部左下角連接出去的就是引腳1,然後從底部看,1引腳順時針尋下去就是2,3,4…等等。
引腳對應亮的位置然後就是驅動的芯片,這裏我選擇了74HC595和ULN2003來驅動數碼管,此外爲了有合適的電壓,採用了AMS1117降壓至3.3V與1.2V,然後用集成的XL6009升壓模塊升壓至24V,然後還外接了一個無線串口通訊模塊與PC機通訊。

原理圖設計

YS-13驅動電路
在這裏插入圖片描述在這裏插入圖片描述

主控電路
在這裏插入圖片描述

升降壓電路
在這裏插入圖片描述其他電路
在這裏插入圖片描述

程序設計

74HC595發送函數

void HC595_sendsata(uint8_t data) // (8bit)
{
   
   
  uint8_t i;
	HAL_GPIO_WritePin(GPIOC, GPIO_PIN_15, GPIO_PIN_RESET);   // SHCP=0
    for(i=0;i<=7;i++)
	{
   
   
	  if(data&0x01)
		{
   
   
			HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);//DS=1
		}
		else
		{
   
   
            HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); //  DS=0
		}
		 HAL_GPIO_WritePin(GPIOC, GPIO_PIN_15,GPIO_PIN_SET);//SHCP=1
	     HAL_GPIO_WritePin(GPIOC, GPIO_PIN_15,GPIO_PIN_RESET);//SHCP=0
	    data=data>>1;
	} 
	 
}

YS13-3顯示函數

uint8_t time[4]={
   
   0,5,2,0};//存放每個輝光管要顯示的數字
uint8_t mabiao[10]={
   
   0xa0,0xbe,0x44,0x0c,0x1a,0x09,0x01,0x3c,0x00,0x08}; //碼錶

void YS13_display() // YS13顯示4個數字
{
   
   
	 uint8_t i;
	 for(i=0;i<4;i++)
	 {
   
   
      HC595_sendsata(mabiao[time[3-i]]);	
     }

     HAL_GPIO_WritePin(GPIOC, GPIO_PIN_14, GPIO_PIN_SET);     //  STCP=1
	 HAL_GPIO_WritePin(GPIOC, GPIO_PIN_14, GPIO_PIN_RESET);   //  STCP=0
	}
}

74HC595主要通訊方式爲當SHCP上升沿時,讀取DS口的數據,且移位鎖存,,但是此時Q0–Q7對外電平其實仍然是不變的,只有在STCP高電平時候,纔會將內部移位寄存器的值一次性對外輸出。例如,連續8次SHCP上升沿時,DS都是1,但是你此時Q0–Q7輸出仍然是原來狀態,只有將STCP置1,Q0–Q7纔會輸出1。

效果展示

在這裏插入圖片描述
最後附錄上程序和PCB文件,希望對有些小夥伴有所幫助
鏈接:https://pan.baidu.com/s/1YUuVa5GkLel64a2aL8fPOw
提取碼:wczd


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章