首先準(zhǔn)備材料吧:SEG數(shù)碼管4個(gè)共陰極(小編用的共陽極的)、10k排阻(小編沒有直接做了個(gè))、51單片機(jī)、按鈕、30p電容、12MHz晶振、10k電阻、10uf電容、插針、74ls245(小編用三極管代替了)。
成品圖
原理圖
主程序:
#include "Key.h"
#include "led.h"
uchar timeSetBuff[8]={'0','0',LED_MODE_COUNT,'0','0',LED_MODE_COUNT,'0','0'};//時(shí)鐘數(shù)據(jù)緩沖區(qū)
uchar alarmSetBuff[8]={'0','0',LED_MODE_ALARM,'0','0',LED_MODE_ALARM,'0','0'};//鬧鐘時(shí)間數(shù)據(jù)緩沖區(qū)
uchar timeDisMod=0x24; //00100100
uchar secondTemp,minuteTemp,hourTemp;
uchar secondAlarm,minuteAlarm,hourAlarm;
uchar timer0Temp;
uchar alarmKeyCount; //鬧鐘起停鍵計(jì)數(shù)
bit alarm_is_ok; //鬧鐘起停狀態(tài)
bit time_is_ok; //時(shí)間是否到
bit interface_mod; // 顯示界面模式,0為主時(shí)間界面,1為設(shè)置界面
/********************************************************************************************
* 函數(shù)名稱:定時(shí)器0
* 功 能:定時(shí)器0初始化
* 入口參數(shù):無
* 出口參數(shù):無
*********************************************************************************************/
void initTimer0(void) //定時(shí)10ms
{
TMOD |= 0x01; //GATE=0,TR=1運(yùn)行;C/T=1,counter,0,timer;01十六進(jìn)制
TH0 = 0xdc;
TL0 = 0x00;
TR0 = 1; //timer0 控制位,為1時(shí)啟動timer0
ET0 = 1; //timer0 中斷使能
}
/********************************************************************************************
* 函數(shù)名稱:時(shí)鐘比較
* 功 能:比較時(shí)鐘和鬧鐘的時(shí)間緩沖區(qū),只比較時(shí)和分
* 入口參數(shù):無
* 出口參數(shù):無
*********************************************************************************************/
void timeCompare(void)
{
if((minuteTemp == minuteAlarm) && (hourTemp == hourAlarm))
{
time_is_ok = 1;
alarm_is_ok = 0;
interface_mod = 1;
}
}
/********************************************************************************************
* 函數(shù)名稱:主函數(shù)
* 功 能:調(diào)用并執(zhí)行各個(gè)子函數(shù)
* 入口參數(shù):無
* 出口參數(shù):無
*********************************************************************************************/
void main()
{
uchar keyRead;
init_led();
init_key();
initTimer0();
timer0Temp = 0x00;
secondTemp = 0x00;
minuteTemp = 0x00;
hourTemp = 0x00;
secondAlarm = 0x00;
minuteAlarm = 0x00;
hourAlarm = 0x00;
alarmKeyCount = 0x02;
alarm_is_ok = 0; //默認(rèn)狀態(tài)停止
time_is_ok = 0; //默認(rèn)時(shí)間未到
interface_mod = 0;
sei();
while(1)
{
if(interface_mod == 1)
ledSweepDisplay(alarmSetBuff,timeDisMod);
else
ledSweepDisplay(timeSetBuff,timeDisMod);
if(alarm_is_ok == 1)
timeCompare();
keyRead = get_key_value();
if(keyRead == KEY_ALARM)
{
if(alarm_is_ok == 1 || time_is_ok == 1)
{
alarm_is_ok = 0;
time_is_ok = 0;
interface_mod = 0;
alarmKeyCount = 0x00;
}
else
{
if(alarmKeyCount
alarmKeyCount++;
else
alarmKeyCount = 0x00;
if(alarmKeyCount == 0x01)
interface_mod = 1;
if(alarmKeyCount == 0x02)
{
alarm_is_ok = 1;
interface_mod = 0;
}
}
}
if(keyRead == KEY_SECOND)
{ if(interface_mod == 1)
{
if(secondAlarm
secondAlarm++;
else
secondAlarm = 0x00;
alarmSetBuff[S_L] = secondAlarm % 10 + '0';
alarmSetBuff[S_H] = secondAlarm / 10 + '0';
}
else
{
if(secondTemp
secondTemp += 1;
else
secondTemp = 0x00;
timeSetBuff[S_L] = secondTemp % 10 + '0';
timeSetBuff[S_H] = secondTemp / 10 + '0';
}
}
if(keyRead == KEY_MINUTE)
{ if(interface_mod == 1)
{
if(minuteAlarm
minuteAlarm++;
else
minuteAlarm=0x00;
alarmSetBuff[M_L]=minuteAlarm%10+'0';
alarmSetBuff[M_H]=minuteAlarm/10+'0';
}
else
{
if(minuteTemp
minuteTemp += 1;
else
minuteTemp = 0x00;
timeSetBuff[M_L] = minuteTemp % 10 + '0';
timeSetBuff[M_H] = minuteTemp / 10 + '0';
}
}
if(keyRead == KEY_HOUR)
{
if(interface_mod == 1)
{
if(hourAlarm
hourAlarm++;
else
hourAlarm = 0x00;
alarmSetBuff[H_L] = hourAlarm % 10 + '0';
alarmSetBuff[H_H] = hourAlarm / 10 + '0';
}
else
{
if(hourTemp
hourTemp += 1;
else
hourTemp = 0x00;
timeSetBuff[H_L] = hourTemp%10+'0';
timeSetBuff[H_H] = hourTemp/10+'0';
}
}
}
}
/*, */
/********************************************************************************************
* 函數(shù)名稱:定時(shí)器0中斷函數(shù)
* 功 能:定時(shí)器0溢出中斷入口處,定時(shí)10ms
* 入口參數(shù):無
* 出口參數(shù):無
*********************************************************************************************/
void timer0_overflow(void) interrupt 1
{
TH0 = 0xdc;
TL0 = 0x00;
if(time_is_ok == 1) //報(bào)警
WARN_TRUMPET = ~WARN_TRUMPET;
if(timer0Temp
timer0Temp++;
else //進(jìn)中斷100次
{
timer0Temp = 0x00;
if(secondTemp
{
secondTemp++;
}
else
{
secondTemp = 0x00;
if(minuteTemp
minuteTemp++;
else
{
minuteTemp = 0x00;
if(hourTemp
hourTemp++;
else
hourTemp = 0x00;
}
}
}
timeSetBuff[S_L] = secondTemp%10+'0';
timeSetBuff[S_H] = secondTemp/10+'0';
timeSetBuff[M_L] = minuteTemp%10+'0';
timeSetBuff[M_H] = minuteTemp/10+'0';
timeSetBuff[H_L] = hourTemp%10+'0';
timeSetBuff[H_H] = hourTemp/10+'0';
sei();
}
上一篇:51單片機(jī)脈搏測量儀電路圖和源程序
下一篇:51單片機(jī)門鈴電路原理圖及C語言源程序
推薦閱讀
史海拾趣
對于快速充電IC(bq2002)電路,網(wǎng)友可能還會有多種問題,以下是一些常見問題及其回答:
一、電路設(shè)計(jì)相關(guān)問題
- BQ2002的BAT引腳如何正確接入電池電壓?
- 回答:BQ2002的BAT引腳用于接收電池電壓的取樣信號。通常,電池電壓會經(jīng)過一個(gè)電阻分壓網(wǎng)絡(luò)后接入BAT引腳,以確保BQ2002能夠正確檢測電池電壓。電阻分壓網(wǎng)絡(luò)的輸入電阻不應(yīng)小于200kΩ,以避免對電池電壓造成過大影響。
- 如何設(shè)置BQ2002的充電速率?
- 回答:BQ2002的充電速率可以通過TM引腳進(jìn)行設(shè)置。當(dāng)TM引腳接地時(shí),充電速率為1C(即電池容量的1倍)。此外,根據(jù)數(shù)據(jù)手冊,TM引腳的不同電平還可能對應(yīng)不同的充電速率,如C/2或2C,但具體設(shè)置需參考具體的數(shù)據(jù)手冊或應(yīng)用指南。
- BQ2002的CC引腳如何控制充電電流?
- 回答:BQ2002的CC引腳用于控制充電電流的開關(guān),而不是直接調(diào)節(jié)充電電流的大小。CC引腳有兩種狀態(tài):高阻態(tài)和接地態(tài)。當(dāng)CC引腳為高阻態(tài)時(shí),充電電流可以流動;當(dāng)CC引腳接地時(shí),充電電流被抑制。充電電流的大小通常由外部恒流源(如LM317等)的電阻設(shè)置決定,與CC引腳的狀態(tài)無關(guān)。
二、功能實(shí)現(xiàn)與調(diào)試問題
- 為什么BQ2002沒有進(jìn)入快速充電模式?
- 回答:BQ2002沒有進(jìn)入快速充電模式可能由多種原因造成,如電池電壓或溫度不符合快速充電條件、TS引腳電壓不在正常范圍內(nèi)、或外部電路設(shè)計(jì)問題等。建議檢查電池電壓和溫度是否滿足快速充電條件,同時(shí)檢查TS引腳電壓是否介于0.25VCC和0.4VCC之間(或1.25V和2.0V之間),并確認(rèn)外部電路設(shè)計(jì)無誤。
- BQ2002在充電過程中突然停止充電怎么辦?
- 回答:BQ2002在充電過程中突然停止充電可能是由于電池過熱、電池電壓過高或外部電路故障等原因造成的。建議檢查電池溫度是否過高,電池電壓是否超出BQ2002的承受范圍,并檢查外部電路是否有短路或斷路等故障。如果問題依舊存在,可能需要更換BQ2002芯片或重新設(shè)計(jì)外部電路。
- 如何調(diào)整BQ2002的充電截止電壓?
- 回答:BQ2002的充電截止電壓通常是通過外部電路設(shè)計(jì)來調(diào)整的。具體方法可能因電路設(shè)計(jì)而異,但一般可以通過調(diào)整與BAT引腳相連的分壓電阻的阻值來改變BQ2002檢測到的電池電壓值,從而調(diào)整充電截止電壓。需要注意的是,在調(diào)整充電截止電壓時(shí),應(yīng)確保電池不會因過充而損壞。
三、其他常見問題
- BQ2002支持哪些類型的電池?
- 回答:BQ2002通常支持多種類型的可充電電池,如鎳氫電池、鋰離子電池等。但具體支持的電池類型可能因BQ2002的版本或制造商而有所不同。因此,在使用BQ2002進(jìn)行電池充電時(shí),應(yīng)參考具體的數(shù)據(jù)手冊或應(yīng)用指南以了解支持的電池類型。
- BQ2002的功耗如何?
- 回答:BQ2002的功耗通常較低,但具體功耗值可能因工作條件(如輸入電壓、輸出電流、環(huán)境溫度等)的不同而有所變化。在設(shè)計(jì)電路時(shí),應(yīng)充分考慮BQ2002的功耗對系統(tǒng)整體性能的影響,并采取相應(yīng)的措施來降低功耗。
以上是針對快速充電IC(bq2002)電路的一些常見問題及其回答。需要注意的是,由于BQ2002的具體應(yīng)用可能因電路設(shè)計(jì)、電池類型等因素而有所不同,因此在實(shí)際應(yīng)用中應(yīng)參考具體的數(shù)據(jù)手冊或應(yīng)用指南以獲取準(zhǔn)確的信息。
自成立以來,Econais一直致力于技術(shù)創(chuàng)新。XXXX年,公司成功推出了一款具有里程碑意義的單芯片IEEE802.11b/g/n Wi-Fi系統(tǒng)級封裝(SiP)模塊——EC19D01。這款模塊在業(yè)界引起了廣泛關(guān)注,因?yàn)樗粌H體積小、易于集成,而且待機(jī)功耗極低。這一突破性的創(chuàng)新使得Econais在物聯(lián)網(wǎng)領(lǐng)域樹立了技術(shù)領(lǐng)先的地位。
作為一家有社會責(zé)任感的企業(yè),康龍公司始終關(guān)注環(huán)境保護(hù)和可持續(xù)發(fā)展。公司積極采用環(huán)保材料和生產(chǎn)工藝,減少生產(chǎn)過程中的污染和浪費(fèi)。同時(shí),康龍還積極參與社會公益事業(yè)和慈善活動,回饋社會。這些舉措不僅提升了公司的品牌形象和社會聲譽(yù),也為公司的長遠(yuǎn)發(fā)展注入了正能量。
隨著公司實(shí)力的不斷增強(qiáng),康龍開始積極拓展國內(nèi)外市場。公司先后在美國、歐洲等地設(shè)立了銷售機(jī)構(gòu),與多家國際知名企業(yè)建立了長期穩(wěn)定的合作關(guān)系。同時(shí),康龍還積極參與國際展會和交流活動,提升品牌知名度和影響力。通過不懈的努力,康龍的產(chǎn)品已經(jīng)成功打入國際市場,并贏得了客戶的廣泛贊譽(yù)。
2007年度電子行業(yè)薪酬調(diào)查報(bào)告 2007年度61Job中國電子行業(yè)薪酬調(diào)查報(bào)告 通過對不同地區(qū)和行業(yè),不同學(xué)歷和工作職責(zé),相似性質(zhì)、規(guī)模的企業(yè)的薪酬水平、薪酬結(jié)構(gòu)、薪酬價(jià)值取向等調(diào)查發(fā)現(xiàn): 1、中國電子工程師平均年薪為人民幣49106元,公司戰(zhàn)略管理層的平均薪酬收入最高, ...… 查看全部問答∨ |
|
最近用wm9712做了一個(gè)錄音,搞了一個(gè)測試程序,在 if (waveInOpen(&m_hWaveIn,WAVE_MAPPER,&m_WaveFormatEx,(DWORD)WaveInProc,NULL,CALLBACK_FUNCTION) != MMSYSERR_NOERROR ) { ...… 查看全部問答∨ |
DM9000A網(wǎng)絡(luò)芯片中斷腳INT無輸出信號 代碼用的是Uboot的dm9000x驅(qū)動,按照需要做了適當(dāng)修改。初始化函數(shù)如下: /* Initilize dm9000 board */ int eth_init( const char *ps_mac ) { int i, oft, lnk; unsigned char u8_byte = 0; & ...… 查看全部問答∨ |
晶振為12MHZ 方式0 TH為D8F0 中斷100次為1s 測試了11小時(shí)13分07秒 誤差為3分11秒 那么TH改為多少比較準(zhǔn)確點(diǎn)呢??怎么算的!… 查看全部問答∨ |
|
拿到了團(tuán)購的板子了!!高興下!~~嘻嘻。剛才在跑官方的這段例程:// MSP430G2xx1 Demo - Reset on Invalid Address fetch, Toggle P1.0//// Description: Toggle P1.0 by xor\'ing P1.0 inside of a software loop that// ends ...… 查看全部問答∨ |
|
【朱兆祺帶你學(xué)嵌入式】第三章第一節(jié) 初步測試內(nèi)核 內(nèi)核的移植相對復(fù)雜,不可能一步到位,心急吃不了熱豆腐,我們只有步步為營,方能步步為贏。本節(jié)的目的是修改內(nèi)核,使得Linux-3.8.3內(nèi)核適應(yīng)于OK6410開發(fā)平臺。外設(shè)的移植,在接下來的章節(jié)會一步一步完成。1.1.1 mkimage工具制作Linux ...… 查看全部問答∨ |
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- 人形機(jī)器人馬拉松背后的思考,兆易創(chuàng)新如何賦能機(jī)器人產(chǎn)業(yè)
- 一種基于STM32的智能柜控制器設(shè)計(jì)
- 小型傾轉(zhuǎn)旋翼機(jī)的無刷直流電機(jī)驅(qū)動器設(shè)計(jì)
- 超高速攝影機(jī)電控系統(tǒng)設(shè)計(jì)
- 基于GPS自動授時(shí)的無線智能控制器的設(shè)計(jì)
- 基于PTR2000的無線氣象信息采集系統(tǒng)設(shè)計(jì)
- Microchip推出MEC175xB系列器件,為嵌入式控制器引入硬件 抗量子攻擊能力
- 無人飛行器機(jī)載穩(wěn)定云臺控制系統(tǒng)的設(shè)計(jì)
- 匠芯創(chuàng)推出面向具身智能高性能實(shí)時(shí)處理器M7000
- 通用汽車轉(zhuǎn)向LFP電池,LG新能源和三星SDI擬在美建廠
- 蓋世汽車研究院:政策助推疊加技術(shù)迭代 全固態(tài)電池蓄勢待發(fā)
- 小鵬汽車董事長預(yù)測:2027年激光雷達(dá)非智能駕駛必備
- 解碼大眾汽車中國戰(zhàn)略 - 決戰(zhàn)智能化電氣化的三板斧
- 2025從具身智能大腦展望人形機(jī)器人發(fā)展
- “荊楚”人形機(jī)器人即將量產(chǎn),智能時(shí)代的新篇章!
- 小鵬純視覺方案:技術(shù)突圍與市場下沉的雙重博弈
- 為什么無人出租車能“零”事故,而智能駕駛輔助卻事故頻發(fā)?
- 重磅!一顆要顛覆全球智駕的芯片點(diǎn)亮了!
- 3D視覺技術(shù)為工業(yè)自動化帶來新“視界”
- 【看電源研討會,瓜分3000元紅包】 如何正確完成模塊化DC-DC系統(tǒng)設(shè)計(jì)
- 五一活動上線!動動手,一起來場舊物\"勞動\"大改造吧
- 【把你我的經(jīng)驗(yàn)串一串,共享豐收】EEWORLD優(yōu)秀主題/回復(fù)第17期活動開始拉
- 是德科技直播 | 小探頭,大學(xué)問,別讓探頭拖累你的測試結(jié)果!
- 開學(xué)季!EEworld下載中心 Cortex主題資源上傳
- 免費(fèi)嘗鮮:熱氣體式加速度傳感器來啦,拍攝沖擊對比實(shí)驗(yàn)有好禮
- 從終端到架構(gòu),TE Connectivity(TE)助你連接5G高速未來 看視頻答題贏好禮!
- MPS有獎分享|電感應(yīng)用中,哪個(gè)問題最令你頭大?
- 紅外戰(zhàn)高溫,下載預(yù)測性維護(hù)手冊,預(yù)約熱像儀、測溫儀有好禮!
- 51單片機(jī)中斷優(yōu)先級以及嵌套
- 華為制裁事件發(fā)酵,三星電子所受影響不小
- 51單片機(jī)中斷詳解(上)
- 研華宣布將攜手英偉達(dá),合作落實(shí)AIoT的高運(yùn)算表現(xiàn)
- ARM Cortex-M4和Cortex-M0+中斷優(yōu)先級及嵌套搶占問題
- 這些年的新能源汽車補(bǔ)貼總結(jié):超958億!
- 混動領(lǐng)域有個(gè)現(xiàn)象,那就是MHEV微混技術(shù)又活躍了起來
- 在華營收過千億就喜大普奔,寶馬有沒有想過這個(gè)問題?
- 開車走神了?沃爾沃主動幫你降降速
- 新晉的造車新勢力,恒大在自主造車的路上速度越來越快