国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

初學51單片機(STC89C52)一個倒計時顯示器和大家分享

這篇具有很好參考價值的文章主要介紹了初學51單片機(STC89C52)一個倒計時顯示器和大家分享。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

? 想要實現(xiàn)倒計時顯示器,首先得確定從哪個時間開始倒計時,這就需要寫出一個計數(shù)的程序來,通過按鍵來控制需要的數(shù),從而開始倒計時。我的開發(fā)板上用的Key2,Key3,Key4,Key5這四個鍵,分別對應著加1,減1,乘2,開始計時四個功能。

? 通過加一,減一,乘2三個操作,可以較快地得到想要設置的數(shù)。然后將所得到的數(shù)顯示在數(shù)碼管上(我這里使用的是共陰數(shù)碼管)。這樣就可以實時地看到自己所設置的數(shù),然后就可以開始計時了。

具體實現(xiàn)步驟:

1.定義所用到的端口

2.定義一個數(shù)組,里面裝0~9這十個數(shù)(用于后邊的數(shù)碼管顯示,所以需要轉化為對應的段選),例如0,就寫成0X3F

3.寫一個計數(shù)的程序,通過按鍵實現(xiàn)計數(shù),并且在按下時數(shù)碼管同步顯示。

4.寫一個計時的程序。(用時鐘)

4.打開時鐘中斷,開始計時,運行計時程序。

5,打開蜂鳴器,提示計時結束。

以下為源代碼:

#include<reg52.h>

/******************************************
程序作用:倒計時顯示器
實現(xiàn)步驟:1.輸入數(shù)字
? ? ? ? ? 2.開始倒計時
?? ??? ??? ??? ??? ?3.蜂鳴器響1s提示計時結束

*******************************************/

sbit Key2=P3^4;
sbit Key3=P3^5;
sbit Key4=P3^6;
sbit Key5=P3^7;//定義按鍵端口


sbit wei1=P2^4;
sbit wei2=P2^5;
sbit wei3=P2^6;
sbit wei4=P2^7;//定義數(shù)碼管端口


sbit bing=P2^3;//定義蜂鳴器端口


/********************定義數(shù)組******************/
int base[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
/********************定義數(shù)組******************/

/********************定義全局變量******************/
? ?int num;
? ?int time=0;?
? ?int time_1s=0;
? ?int qian;//千位數(shù)字
?? ? int bai;//百位數(shù)字
? ?int shi;//十位數(shù)字
?? ? int ge;//個位數(shù)字
/********************定義全局變量******************/

void xianshi();
void Time_begin();
int num_scp(int num);
int delay(int x);//函數(shù)聲明


void main()
{
?? ?
?? ?num=0;
?? ?/*************初始化端口*************/
?? ?wei1=0;//第一位數(shù)碼管
?? ?wei2=0;//第二位數(shù)碼管
?? ?wei3=0;//第三位數(shù)碼管
?? ?wei4=0;//第四位數(shù)碼管
?? ?Key2=1;//加一開關
?? ?Key3=1;//減一開關
?? ?Key4=1;//乘二開關
?? ?Key5=1;//計時開關
?? ?/*************初始化端口*************/
?? ?
?? ?
?? ?while(1){
?? ??? ?Key2=1;//加一開關
?? ? ?Key3=1;//減一開關
?? ? ?Key4=1;//乘2開關
?? ? ?Key5=1;//開始計時
?? ??? ?
?? ??? ?
?? ??? ?if(Key2==0)
?? ??? ?{
?? ??? ??? ?delay(10);
?? ??? ?while(Key2==1){num++;break;}
?? ??? ??? ?
?? ??? ?}//按下Key2鍵 ? 時間加1s
?? ??? ?
?? ??? ?
?? ??? ?if(Key3==0)
?? ??? ?{
?? ??? ??? ?delay(10);
?? ??? ??? ?while(Key3==1){num--;break;}
?? ??? ?}//按下Key3鍵 ? 時間減1s
?? ??? ?
?? ??? ?
?? ??? ?if(Key4==0)
?? ??? ?{
?? ??? ??? ?delay(10);
?? ??? ??? ?while(Key4==1){num=num*2;break;}
?? ??? ?}//按下Key4鍵 ? 時間乘2
?? ??? ?
?? ??? ?
?? ??? ?if(Key5==0)
?? ??? ?{
?? ??? ??? ?delay(10);
?? ??? ??? ?while(Key5==1)
?? ??? ??? ?{
?? ??? ??? ??? ?Time_begin();
?? ??? ??? ??? ?while(1)
?? ?{
?? ??? ?num_scp(time_1s);
?? ??? ?xianshi();
?? ??? ?if(time_1s==1){bing=0;delay(1000);bing=1;}
?? ?}
?? ??? ? ? }
?? ? ? }?? ?//按下Key5鍵 ? 開始計時
?? ??? ?
?? ??? ??
?? ??? ??
?? ?
?? ??? ?while(1)
?? ??? ?{
?? ??? ??? ?num_scp(num);
?? ??? ??? ?xianshi();
?? ??? ??? ?if(Key2==0||Key3==0||Key4==0||Key5==0){break;}
?? ??? ?}//顯示設置的時間


}

}

/*****************************
定義函數(shù)num_scp
sc代表scanf;p代表put
函數(shù)作用:掃描數(shù)據(jù)并進行拆分
參數(shù)列表:x
*******************************/
int num_scp(int x)
{?? ?
?? ?qian=(x/1000)%10;//千位數(shù)字
?? ?bai=(x/100)%10;//百位數(shù)字
?? ?shi=(x/10)%10;//十位數(shù)字
?? ?ge=x%10;//個位數(shù)字
?? ?return 0;
}?? ?
?? ?
?? ?
?? ?
?? ?/*****************************
定義函數(shù)delay
函數(shù)作用:延時x_ms
參數(shù)列表:x
*******************************/

int delay(int x)
{
? unsigned int time;
?? ?time=9206*x-2;
?? ?while(time--);
?? ?return 0;//較粗略的延時函數(shù),主要用于按鍵消抖,不可用于計時
}
?? ?
?? ?
?? ?/*****************************
定義函數(shù)Timer0
函數(shù)作用:定時計數(shù)
參數(shù)列表:time time_1s
*******************************/
void Timer0() interrupt 1 using 1//準確的時鐘,可用于計時
{
?? ?TH0=0x4c;//定時器0裝初值 定時50ms
?? ?TH1=0x00;
?? ?time++;
?? ?if(time>=20)
?? ?{
?? ??? ?if(time_1s==0){time_1s=num+1;}
?? ??? ?time_1s--;
?? ??? ?time=0;
?? ?}
?? ?
}
/*****************************
定義函數(shù)Time_begin
函數(shù)作用:開啟定時計數(shù)器
參數(shù)列表:
*******************************/
void Time_begin(){
TMOD &=0xf0;//低四位全部置0 設置定時器0 方式1
?? ?TMOD |=0x01;//最低位置1
?? ?TH0=0x4c;//定時器0裝初值 定時50ms
?? ?TH1=0x00;
?? ?
?? ?TR0=1;//定時器0 啟動計數(shù)
?? ?ET0=1;//打開ET0 中斷允許位
?? ?EA=1;//打開總中斷
}


/*****************************
定義函數(shù)顯示
函數(shù)作用:數(shù)碼管顯示
參數(shù)列表:qian bai shi ge?
*******************************/
void xianshi(){
?? ? ?P0=0x00;
? ? P0=base[qian];
?? ??? ?wei1=1;
?? ??? ?wei1=0;
?? ??? ?P0=base[bai];
?? ??? ?wei2=1;
?? ??? ?wei2=0;
?? ??? ?P0=base[shi];
?? ??? ?wei3=1;
?? ??? ?wei3=0;
?? ??? ?P0=base[ge];
?? ??? ?wei4=1;
?? ??? ?wei4=0;//顯示具體數(shù)字
}文章來源地址http://www.zghlxwxcb.cn/news/detail-499660.html

到了這里,關于初學51單片機(STC89C52)一個倒計時顯示器和大家分享的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 什么是STC89C52單片機

    什么是STC89C52單片機

    STC89C52是一個低功耗,高性能CMOS 8位單片機,片內含8k Bytes ISP(In-system programmable)的可反復擦寫10000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術制造,兼容標準MCS-51指令系統(tǒng)及80C51引腳結構[1],芯片內集成了通用8位中央處理器和ISP Flash存儲單元,功

    2024年02月13日
    瀏覽(27)
  • STC89C52RC單片機原理圖詳解

    STC89C52RC單片機原理圖詳解

    目錄 1、單片機整體模塊 2、 LED模塊 3、獨立按鍵模塊 4、數(shù)碼管模塊 5、LCD1602模塊 6、矩陣按鍵模塊?編輯 7、串口通信模塊 8、LED點陣屏模塊 單片機使用的是TTL電平(一種電平的規(guī)范),規(guī)定為0V為低電平,5V為高電平; 字母上有一橫,意為低電平有效。 單片機上電時,所有

    2024年02月05日
    瀏覽(21)
  • 【mcuclub】STC89C52單片機最小系統(tǒng)講解

    【mcuclub】STC89C52單片機最小系統(tǒng)講解

    ? ? 3.1、主芯片 STC89C52是STC公司生產的一種低功耗、高性能8位微控制器 器件參數(shù): 1、增強型8051單片機,指令代碼完全兼容傳統(tǒng)8051 2、工作電壓:5.5V~3.3V 3、工作頻率范圍:0~40MHz,實際工作頻率可達48MHz 4、用戶應用程序空間為8K字節(jié)(程序空間) 5、片上集成512 字節(jié)RAM(

    2024年02月03日
    瀏覽(20)
  • STC89C52單片機LCD1602顯示屏介紹與代碼演示

    STC89C52單片機LCD1602顯示屏介紹與代碼演示

    LCD1602顯示屏介紹 引腳介紹 內部結構框圖 ?存儲器 ?DDRAM儲存器地址 ?CGRAM與?CGROM的地址 時序介紹 LCD1602快捷指令? LCD1602指令操作流程: 字符、字符串的顯示 ?各種進制的數(shù)字顯示 在LCD1602上顯示十進制數(shù)字 在LCD1602上顯示十六進制數(shù)字 在LCD1602上顯示二進制數(shù)字 LCD1602(Liq

    2024年02月08日
    瀏覽(22)
  • 單片機STC89C52倒計時、數(shù)碼管和蜂鳴器控制

    單片機STC89C52倒計時、數(shù)碼管和蜂鳴器控制

    魚弦:CSDN內容合伙人、CSDN新星導師、全棧領域創(chuàng)作新星創(chuàng)作者 、51CTO(Top紅人+專家博主) 、github開源愛好者(go-zero源碼二次開發(fā)、游戲后端架構 https://github.com/Peakchen) 單片機選用STC89C52,實現(xiàn)倒計時60秒,控制兩個數(shù)碼管分別顯示時間的十位和個位;當計時完畢時,顯示\\\"-”,

    2024年02月04日
    瀏覽(27)
  • 基于STC89C52單片機的溫度控制系統(tǒng)設計方案與軟硬件實現(xiàn)

    基于STC89C52單片機的溫度控制系統(tǒng)設計方案與軟硬件實現(xiàn)

    目錄 摘要 I Abstract II 第一章 前言 1 1.1 溫度控制系統(tǒng)設計發(fā)展歷史及意義 1.2 溫度控制系統(tǒng)的目的 1.3 溫度控制系統(tǒng)完成的功能 第二章 總體設計方案 2.1 方案一 2.2 方案二 3.1 DS18B20簡介 3.1.1DS18B20封裝與引腳 3.1.2 DS18B20的簡單性能 3.2 DS18B20的工作原理 3.3 DS18B20的測溫原理 3.3.1 測

    2024年02月12日
    瀏覽(29)
  • STC89C52單片機利用DHT11溫濕度模塊以及HC-08藍牙模塊實現(xiàn)測量溫濕度

    STC89C52單片機利用DHT11溫濕度模塊以及HC-08藍牙模塊實現(xiàn)測量溫濕度

    下面將介紹如何利用STC89C52單片機和DHT11溫濕度模塊以及HC-08藍牙模塊實現(xiàn)測量溫濕度。以及各模塊的使用方法。 利用DHT11溫濕度模塊測量溫濕度,利用HC-08藍牙模塊將數(shù)據(jù)傳到手機上。 1.1DHT11溫濕度模塊外觀 1.2DHT11溫濕度模塊使用方法簡介 1.2.1DHT11溫濕度模塊工作的過程 用戶

    2024年02月02日
    瀏覽(32)
  • 基于單片機的智能循跡避障小車STC89C52紅外對管L298N驅動PWM波控制速度

    基于單片機的智能循跡避障小車STC89C52紅外對管L298N驅動PWM波控制速度

    wx供重浩:創(chuàng)享日記 對話框發(fā)送:單片機小車 免費獲取完整無水印報告等 利用紅外對管檢測黑線與障礙物,并以STC89C52單片機為控制芯片控制電動小汽車的速度及轉向,從而實現(xiàn)自動循跡避障的功能。其中小車驅動由L298N驅動電路完成,速度由單片機輸出的PWM波控制。 1.1智能

    2023年04月22日
    瀏覽(31)
  • 89C52RC普中單片機

    89C52RC普中單片機

    資料下載 普中科技--各型號產品資料下載鏈接 - STM8單片機 - 普中開源電子分享網 - Powered by Discuz! (prechin.net) 2023-06-28? 1.開發(fā)板 ? ?2.軟件 keil,stc-isp。 1.點亮led 89C52RC芯片LED模塊是P2口。 ? ? ? 2.led1一秒閃爍 ?3.LED流水燈 ?4.獨立按鍵控制led亮滅(按下key1亮,松手滅) 5.獨立按鍵

    2024年02月11日
    瀏覽(22)
  • 基于AT89C52單片機的交通信號燈設計

    基于AT89C52單片機的交通信號燈設計

    點擊鏈接獲取Keil源碼與Project Backups仿真圖: https://download.csdn.net/download/qq_64505944/87772657 源碼獲取 主要內容: 本次設計所提出的一種基于單片機技術的簡易計算器的方案,能更好的解決計算機計算的問題,隨著數(shù)字生活的到來,單片機在生活中越來越重要,它能將大量的邏輯功

    2024年02月10日
    瀏覽(99)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包