欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
LED雙色單元板+STC12C5A60S2+DS1302制作電子鐘
[打印本頁]
作者:
hwj828
時間:
2018-1-9 16:12
標題:
LED雙色單元板+STC12C5A60S2+DS1302制作電子鐘
單位淘汰下的雙色LED單元板,大部分都能正常使用,拿來研究了一下,結合網上的一些程序,制作了一個電子鐘,初次發貼,見笑。。。
成品圖
亞克力板
粘合
打孔,安裝
合體
幾點說明:
1、單片機必須用STC12C5A60S2,不能用89C51,要用推挽輸出才能正常顯示。
2、溫度沒用18B20,用的是10K感溫頭。
3、單元板比較費電,5W左右,單獨供電,所以用了兩5V電源(用一個電源時DS1302不能正常工作)。
單片機源程序如下:
#include"STC12C5A60S2.h" /*頭文件的包含*/
#include"zimo.h"
#include <intrins.h>
#include <ADC.H>
#include"led_595.h"
#include"DS1302.h"
sbit K1=P3^0;
sbit K2=P3^1;
sbit K3=P3^2;
sbit K4=P3^3;
unsigned char SetState,SetPlace=0;
void Int0Configuration();
unsigned char code temp_table[]={67, 70, 72, 74, 76, 78, 81, 83, 85, 87,
89, 90, 91, 93, 95, 97, 100,103,106,110,
113,116,119,122,125,128,131,133,136,139,
141,143,146,148,150,152,154,157,159,161,
163,165,167,169,171,173,175,176,178,180,
182,184,186,187,189,191,193,194,196,198,
199,200,201,202};
unsigned int temp_change(unsigned char temp1)
{
unsigned int i;
for(i=0;i<=63;i++)
{
if(temp_table[i]>temp1) break;
}
if(temp_table[i]==0) return 0;
else if(temp_table[i]==63) return 640;
else
{
return (unsigned int)((temp1-temp_table[i-1])*10/(temp_table[i]-temp_table[i-1])+(i-1)*10+5);
}
}
void SendTime(void)
{
unsigned int TempData;
GetTime();
TempData=GetADCResult(2);
TempData=temp_change(TempData);
line1_num[2]=TableDs1302[6]/10;
line1_num[3]=TableDs1302[6]%10;
line1_num[5]=TempData/100;
line1_num[6]=TempData%100/10;
line2_num[0]=TableDs1302[4]/10;
line2_num[1]=TableDs1302[4]%10;
line2_num[3]=TableDs1302[3]/10;
line2_num[4]=TableDs1302[3]%10;
line2_num[7]=TableDs1302[5]+10;
line3_num[0]=TableDs1302[2]/10;
line3_num[1]=TableDs1302[2]%10;
line3_num[3]=TableDs1302[1]/10;
line3_num[4]=TableDs1302[1]%10;
line3_num[6]=TableDs1302[0]/10;
line3_num[7]=TableDs1302[0]%10;
}
void main()
{
unsigned int i;
LED_Init();
DelayMS(100);
InitADC();
DelayMS(1000);
Int0Configuration();
if(K2==0)
{
DelayMS(1000);
InitDS1302();
}
while(1)
{
if(SetState==0)
{
SendTime();
for(i=0;i<10;i++) LED_Display();
}
else
{
SendTime();
for(i=0;i<20;i++) LED_Display();
for(i=0;i<2;i++)
{
if(SetPlace==0) {line3_num[6]=11;line3_num[7]=11;}
if(SetPlace==1) {line3_num[3]=11;line3_num[4]=11;}
if(SetPlace==2) {line3_num[0]=11;line3_num[1]=11;}
if(SetPlace==3) {line2_num[3]=10;line2_num[4]=10;}
if(SetPlace==4) {line2_num[0]=10;line2_num[1]=10;}
if(SetPlace==5) {line2_num[7]=10;}
if(SetPlace==6) {line1_num[2]=10;line1_num[3]=10;}
LED_Display();
}
if(K1==0) //檢測按鍵K1是否按下
{
LED_Display(); //消除抖動
if(K1==0)
{
SetPlace++;
if(SetPlace>=7)
SetPlace=0;
}
while((i<50)&&(K1==0)) //檢測按鍵是否松開
{
LED_Display();
i++;
}
i=0;
}
if(K2==0) //檢測按鍵K2是否按下
{
LED_Display(); //消除抖動
if(K2==0)
{
TableDs1302[SetPlace]++;
if((TableDs1302[SetPlace]>=60)&&(SetPlace<2)) //分秒只能到59
{
TableDs1302[SetPlace]=0;
}
if((TableDs1302[SetPlace]>=24)&&(SetPlace==2)) //小時只能到23
{
TableDs1302[SetPlace]=0;
}
if((TableDs1302[SetPlace]>=32)&&(SetPlace==3)) //日只能到31
{
TableDs1302[SetPlace]=1;
}
if((TableDs1302[SetPlace]>=13)&&(SetPlace==4)) //月只能到12
{
TableDs1302[SetPlace]=1;
}
if((TableDs1302[SetPlace]>=8)&&(SetPlace==5)) //周只能到7
{
TableDs1302[SetPlace]=1;
}
if((TableDs1302[SetPlace]>=31)&&(SetPlace==6)) //年暫時到2030
{
TableDs1302[SetPlace]=0;
}
InitDS1302();
}
while((i<50)&&(K2==0)) //檢測按鍵是否松開
{
LED_Display();
i++;
}
i=0;
}
}
}
}
void Int0Configuration()
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
0.png
(8.93 KB, 下載次數: 79)
下載附件
2018-1-9 16:56 上傳
所有資料51hei提供下載:
LED_595_1302.rar
(43.65 KB, 下載次數: 101)
2018-1-9 16:24 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
dxalt
時間:
2018-1-13 06:33
厲害牛人啊
作者:
a8238712
時間:
2018-1-18 09:18
感謝樓主分享!!!
作者:
laoguang
時間:
2018-6-21 02:16
感謝 熱心分享
作者:
le176825000
時間:
2019-4-15 10:12
感謝 熱心分享
作者:
wblqx
時間:
2021-2-12 08:12
STC 1T的單片機速度快,讀寫DS1302和DS18B20需要調整時序。
作者:
3花木城
時間:
2022-3-17 23:16
很歷害,樓主用心了
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1