① 單片機設計動態顯示時間6:00怎麼設置
從左到右的開關控制分別為:秒設置、分設置、時設置、敏拍團進入時間設置(設置時間需要按一下這個再按前面3個按鍵設置)、鬧鍾設置(通過前面3個按鍵設置)、保存設置(設置完成後按下保存並退出)。
圖片
時鍾可以顯示到秒位
數碼管用的是共陰,共陽的話加三極體閑麻煩,沒加。
數碼管a~g接的P0口,沒用10K排阻上拉,試了下覺得亮度太低了,就都換成了2K的作為上拉。
圖片
有興趣的可以給加上溫度感測器,可以顯示溫度(我這裡面就沒加了)
初學單片機沒多久,歡迎大佬指導。
材料如下:89C52*1
4位數碼管*1+2位數碼管*1(當然如橋橘果有六位的也可以直接用,找不到其他數碼管了就這么混搭了)
有源蜂鳴器*1(試過無源,但時間計算過於佔用資源導致發聲不是很完美,大佬可以改一下)
輕觸開關*7(1個用於復位,其餘六個用於設置) + 自鎖開關*1
電池*1 + 5V穩壓*1
單片機源碼:
#include
#define uint unsigned int
#define uchar unsigned char
sbit WE1=P2^5;
sbit WE2=P2^4;
sbit WE3=P2^3;
sbit WE4=P2^2;
sbit WE5=P2^1;
sbit WE6=P2^0;
sbit K1=P1^0; //設置小時位
sbit K2=P1^1; //設置分位
sbit K3=P1^2; //設置秒位
sbit K4=P1^3; //進入時間設置
sbit K5=P1^4; //進入鬧鍾設置
sbit K6=P1^5; //退出設置
sbit BZ=P1^6; //蜂鳴器介面
uchar code table[]={
0XC0,0XF9,0XA4,
0XB0,0X99,0X92,
0X82,0XF8,0X80,
0X90};
uint tt=0,i=0,j=0,T=0,R=0,S;
uint W1=0,W2=0,W3=0,W4=0,W5=0,W6=0; //當前時間位,依次接P0口即可,即W1=P0^0,W2=P0^2.....以此類推
uint WD1=0,WD2=0,WD3=0,WD4=0,WD5=0,WD6=0; //鬧鍾時間位,用於儲存設置的鬧鍾時間,不接
void delay(uint); //軟延時
//void delay1(uint);
void js(void); //時鍾進位定義
void key(void); //按鍵
void XS(uint,uint,uint,uint,uint,uint); //動態掃描數碼管顯示
void xhsz(uint,uint,uint,uint,uint,uint,uint); //時鍾位設置函數
void main()
{
P1=0X0;
TMOD=0X01;
TH0=(65536-49971)/256;
TL0=(65536-49971)%256;
//TH1=(65536-65535)/256; //定時器二(賀巧未啟用)
//TL1=(65536-65535)%256;
EA=1;
ET0=1;
//ET1=1;
TR0=1;
//TR1=1;
while(1)
{
key();
XS(W1,W2,W3,W4,W5,W6);
js();
if(WD1==W1&&WD2==W2&&WD3==W3&&WD4==W4&&WD5==W5&&WD6==W6) //鬧鍾定時判斷
T=1;
}
}
void xhsz(uint Q1,uint Q2,uint Q3,uint Q4,uint Q5,uint Q6,uint Y) //輸入需要設置的位Q1~Q6,末尾輸入1則將值賦給W1~W6,輸入0則賦給WD1~WD6
{
while(1)
{
if(Y==1)
{
W1=Q1;W2=Q2;W3=Q3;W4=Q4;W5=Q5;W6=Q6;
}
if(Y==0)
{
WD1=Q1;WD2=Q2;WD3=Q3;WD4=Q4;WD5=Q5;WD6=Q6;
}
if(K1==1)//秒調
{
delay(10);
if(K1==1)
{
while(K1==1)
XS(Q1,Q2,Q3,Q4,Q5,Q6);
Q1++;
② 大神們,見過有人用單片機控制oled動態顯示時間,溫度,心電什麼的,怎麼做到的啊
你能顯示圖片,證明可以驅動OLED,既然能驅動OLED,就應該理解驅動過程。
例如時間,一般做數組,0~9數字的對應字元數組,將根據時間將數字顯示在指定位置。當然還可以做「:」「上午」這些字元的數組。說白了就是動態組合。
③ 單片機定時的時間怎麼改變
51單片機,根據晶振頻率,計算指令周期,設置定時器的分頻,然後設置定時器的工作方式tmod,最後設置初值th0
tl0
比如用的x
hz的晶振,stc的單片機有3種模式(x/12)x/6,還有單周期指令,
選擇12分頻的,t=1/(x/12)就是一個指令周期
,如果定時沒有分頻,(65536-z(初值))*t就是定時的時間
比如是12m的晶振那麼
設置tmod=0x01;16位定時器模式
th0=(65536-20000)/256;
tl0=(65536-20000)%256;就是設置了20ms的定時
④ 51單片機,1602動態顯示時鍾,有獨立按鍵(3個k1,k2,k3)分別控制選擇,加1,減一
你好,
我這又一個參考程序,是用郭天祥的TX-1C開發板寫的,有3個按鍵,調節游標,時間加,時間減。引腳方便可以根據自己的開發板更改,其他程序內容不變。
希望我的回答能幫助到你。
⑤ 【單片機】單片機的定時時間是怎樣計算
單片機的定時時間的計算公式=計數值(定時值)*機器周期=計數值(定時值)*12/晶振頻率。
上面的兩個等號是等價的,因為,單片機的機器周期=12秒/晶振頻率,因此兩個公式通用。
完成一個基本操作所需要的時間稱為機器周期。一般,一個機器周期由若干個S周期(狀態周期)組成。80C51系列單片機一個機器周期由6個S周期組成。一個S周期(狀態周期),由2個時鍾周期組成。
若干個機器周期,組成了指令周期。根據指令不同,所需的機器周期數也不同。
(5)單片機動態時間擴展閱讀
幾種典型指令;
1、單位元組周期指令(比如INCA)
2、雙位元組單周期指令(比如ADDA,#data)
3、單位元組雙周期指令(比如INCDPTR)
4、單字陸宏節雙周期指令(比如MOVXA@DPTR)
⑥ 51單片機如何實時顯示時間
單片機實時顯示時間,可以用ds1302產生時鍾,然後計算時鍾,並送出結果。