MC-51單片機紅綠燈+數碼管計時實驗

2021-01-10 電子產品世界

單片機實驗

//主機板的P1接口 平接 顯示板P00接口 即數碼管段選接口
//主機板的P3接口 平接 顯示板P20接口 即數碼管位選接口
//主機板的P0接口 平接 顯示板燈的接口

本文引用地址:http://www.eepw.com.cn/article/201611/320677.htm

#include
unsigned char time[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
int n = 2000;//每半秒中斷一次

bit change=1;
bit Shan=1;//閃

//定義顯示管為位選特殊位
sbit A=P3^7;
sbit B1=P3^6;
sbit C=P3^5;
sbit G1=P3^4;
sbit daul = P3^3;


ZY();//左右通行
SX();//上下通行
ZYS();//左右綠燈閃
SXS();//上下綠燈閃

lock();
delay();

//一下定義使燈亮的特殊位
sbit ZL=P0^0;
sbit ZH=P0^1;
sbit SH=P0^2;
sbit SL=P0^3;
sbit YH=P0^4;
sbit YL=P0^5;
sbit XH=P0^6;
sbit XL=P0^7;
//
unsigned char rl=70;
unsigned char ud=45;
unsigned int working=0;//
unsigned char num;


main()
{
TMOD=2;//設置定時/計數器0工作方式2
TH0=6;//初值為6,定時4000
TL0=6;//初值為6
TR0=1;
ET0=1;
EA=1;
working = rl*2;

while(1){
if(change==1&&Shan==1){//
ZY();
}else if(change==1&&Shan==0){
ZYS();
}else if(change==0&&Shan==1){
SX();
}else if(change==0&&Shan==0){
SXS();
}

num=working/2;

P1=time[num];
daul=1;
A=1;B1=1;C=1;
G1=1;
delay();
lock();

P1=time[num/10];
daul=1;
A=0;B1=1;C=1;
G1=1;
delay();
lock();

}

//
}


//中斷程序

T0_int() interrupt 1{
n--;
if(n==0){
if(working!=0&&change==1){
if(working<=4){//最後兩秒閃
Shan=!Shan;
}
working--;
n=2000;
}else if(working==0&&change==1){
change=!change;
working = ud*2;
n=2000;
}else if(working!=0&&change==0){
if(working<=6){//最後3秒閃
Shan=!Shan;
}
working--;
n=2000;
}else if(working==0&&change==0){
change=!change;
working = rl*2;
n=2000;
}
}
}

ZY(){//左右綠燈亮,上下紅燈亮
YL=0;//右綠
ZL=0;//左綠
SH=0;//上紅
XH=0;//下紅
//
ZH=1;
YH=1;
SL=1;
XL=1;
}

SX(){//上下綠燈亮,左右紅燈亮
YL=1;//
ZL=1;
SH=1;
XH=1;
//
ZH=0;
YH=0;
SL=0;
XL=0;
}

ZYS(){//左右綠燈閃爍
YL=1;
ZL=1;
SH=0;
XH=0;
//
ZH=1;
YH=1;
SL=1;
XL=1;
}

SXS(){//上下綠燈閃爍
YL=1;//
ZL=1;
SH=1;
XH=1;
//
ZH=0;
YH=0;
SL=1;
XL=1;
}

lock(){
daul=0;
G1=0;
}

delay(){
int i=40;
while(i>0){
i--;
}
}


相關焦點

  • 51單片機基礎之靜態數碼管電路
    原理圖多數人也都知道,51單片機的入門第一篇就是Led燈的操作,當然了,那也是最基本的操作。上次玩完LED燈,就相當於是入門,今天我們來看看數碼管,對於數碼管,大家可以是再熟悉不過了,生活中處處都可以見到各種各樣的數碼管,但是你知道其內部的原理嗎,其實還是相當簡單的,老樣子,我們要玩什麼,當然是先看看這個部分的原理圖了:由原理圖可知,八個數碼管並不是直接接在單片機的IO口上的,而是用了74HC595晶片,那麼我們要想驅動數碼管,就必須了解595晶片到底是個什麼玩意兒
  • 51單片機學習之4-數碼管
    圖(b)右邊的電路圖可以看出,所有的二極體正極都接在電源正極,a、b、c、d、e、f、g、dp都接在單片機的IO口上,在《51單片機複習筆記1》:http://www.51hei.com/mcu/2111.html中介紹過驅動二極體的原理,所以這裡只需要在相應的二極體負極給低電平即可讓相應的二極體發光。這裡補充一下,為什麼給高電平二極體就不亮,給低電平就亮呢。
  • 74HC595控制8位數碼管 51單片機
    關鍵字:74HC595控制  8位數碼管  51單片機 編輯:什麼魚 引用地址:http://news.eeworld.com.cn/mcu/2015
  • 單片機驅動數碼管設計詳解(74HC595實現)
    數碼管顯示設計本設計使用了一個4位的數碼管,為共陽型,為了節省單片機的IO口,使用了兩片74HC595作為數碼管的驅動晶片,共佔用3個IO口。其管腳介紹如下:15:數據輸出A-接數碼管數據A段;1:數據輸出B-接數碼管數據B段;2:數據輸出C-接數碼管數據C段;3:數據輸出D-接數碼管數據D段;4:數據輸出E-接數碼管數據E段;5:數據輸出F-接數碼管數據F段;6:數據輸出G-接數碼管數據G段;7:數據輸出H-接數碼管數據H段;
  • 圖形化編程玩51單片機(十四)模擬工廠裡產品掃描計數器實驗一
    本期目的:理解計數器的工作原理,同時也為實驗二做準備。【使用說明】:選用51單片機實驗板上的S2和S3鍵。其中S2用於模擬代替掃描開關,當有產品經過時,會使S2送出低電平(本程序中使用手按下S2來模擬)S2每按一下,便會使數碼管上的計數器加一,達到一萬的時候全部清零,重新計數。S3用於對計數手動清零。
  • 單片機控制八隻數碼管滾動顯示1~8 附PROTEUS軟體仿真圖
    數碼管顯示是每一個單片機初學者都必須學的,而單片機驅動數碼管的數字循環顯示實驗,又是單片機基礎中的基礎,同時也是學好C語言編程的關鍵,此實驗在硬體上可以弄清楚單片機驅動原理和數碼管的顯示原理,在軟體上可以幫助建立編程思維和良好的編程習慣,同時加深C語言中 函數,變量和循環結構語句的學習
  • 圖形化編程玩51單片機(十五)模擬工廠裡的產品掃描計數器實驗二
    【使用說明】:選用51單片機實驗板上的S2和S3鍵。其中S2用於模擬代替掃描開關,當有產品經過時,會使S2送出低電平(本程序中是用手按下S2來模擬)S2每按一下,便會使數碼管上的計數器加一,達到一億的時候全部清零,重新計數。S3用於對計數手動清零。
  • 單片機控制單只數碼管循環顯示0~F 用PROTEUS軟體仿真
    數碼管顯示是每一個單片機初學者都必須學的,而單片機驅動數碼管的數字循環顯示實驗,又是單片機基礎中的基礎,同時也是學好C語言編程的關鍵,現在供上代碼供大家學習研究,此程序經過一些改進,可以實現按鍵識別 數碼管動態掃描。同時也可以做各種有關顯示調試程序的二次開發等等。
  • 51單片機之4位數加法計算器的設計報告
    方案二:採用LED數碼管顯示。數碼管能顯示數字和符號,但是佔用I/O口資源較多,對於簡單的電路可以選用此方案。計算器,需要較為強大的人機互動界面,故選用方案一,顯示所需信息。2.2.6 蜂鳴器的選擇方案論證方案一:採用有源蜂鳴器。有源蜂鳴器內部帶震蕩源,只要一通電就會發出響聲。
  • Proteus軟體仿真與Keil的51單片機系統設計
    本設計以51單片機構成的99秒馬表為例描述基於Proteus的硬體設計、基於Keil C的軟體設計以及它們的聯合仿真調試過程。  2.1 硬體設計  2個七段數碼管顯示馬表時間,用51單片機的P1口驅動;按鍵SP掛在外部中斷0的I/O口上,第1次按下表示開始運行,第2次按下為計時停止,第3次按下重新歸零;擴展程序存儲器27256、數據存儲器62256主要是緣於嵌入式作業系統μC/OSII下的應用程式設計,片內存儲空間有限,同時也方便擴展。
  • 從零開始學習51單片機(八)獨立按鍵S1實驗3:一鍵控制N個設備
    今天的學習內容是:系統化編程讓一個按鍵能夠控制N個設備獨立按鍵S1的實驗3:在「獨立按鍵S1實驗2」的基礎上進一步改進,讓程序再次優化,學會怎樣將程序模塊化編寫,掌握了程序模塊化編寫,就能夠用一個獨立按鍵同時控制N個設備了
  • 51單片機C語言教程(四) 數據類型
    推薦閱讀 51單片機學習實踐:用NTC電阻測溫並顯示在TM1637數碼管 STC15單片機實驗名稱:使用NTC電阻測量溫度實驗內容:        使用NTC電阻測量溫度並顯示在數碼管上        讀取DS18B20模塊測量溫度作為參考實驗器材:        STC15W408AS_DIP16 x1
  • 基於51單片機的人體紅外模塊的自動門設計
    方案二:採用51系列單片機。系統的要求不高,程序的編寫也比較簡單,需要用到的I/O口的數量用該系列的單片機來操作完全能夠實現,無需再擴展,充分的利用了單片機資源。另外,經典的51系列單片機的處理速度也能夠滿足系統要求,性價比相對CPLD器件更高。綜合以上兩種方案,本系統選擇方案二,以AT89C51作為系統的微控制器。4.
  • STC90C51單片機矩陣鍵盤聯動動態數碼管
    實驗準備STC90C51單片機一臺P2 GPIO口短接矩陣鍵盤JP4GPIO P0 短接動態數碼管控制端573短接138解碼器和動態數碼管即J15和J16實驗程序void MatrixKeyTest(){ char a = 0; int v; KEY
  • 正點原子開拓者FPGA開發板資料連載第十一章 靜態數碼管顯示實驗
    圖 11.3.1 硬體原理圖本實驗中,各埠信號的管腳分配如下表所示:表 11.3.1 靜態數碼管顯示實驗管腳分配圖程序設計根據實驗任務,我們可以大致規劃出系統的控制流程:首先我們需要一個靜態數碼管顯示
  • 圖形化編程玩51單片機(十三)簡單實用門鈴實驗
    特別提示:從本期起,將原來的文章標題「零基礎學51單片機」更改為「圖形化編程玩51單片機」本期實驗:模擬簡易門鈴;且有關閉門鈴功能。4,打開燒錄軟體,找到剛剛的hex文件,下載到單片機。效果如圖二所示實驗解釋及編程思路:我們知道單片機最常用的功能之一就是檢測埠的輸入狀態和改變其他埠的高低電平輸出狀態。所以,我們可以設置一個門鈴開關狀態的變量。
  • 帶詳細注釋的51單片機CS1237電子秤源程序
    工程硬體平臺:    1,51Core-V1.0(51單片機最小系統板)                2,差分ADC模塊-CS1237                3,稱重傳感器模塊                4,OLED顯示器0.96寸,4PIN工程程序版本:51單片機廚房(藥房)秤方案 V1.0.0.0
  • 51單片機+PID算法水溫控制系統設計
    推薦閱讀 51單片機學習實踐:用NTC電阻測溫並顯示在TM1637數碼管 STC15單片機實驗名稱:使用NTC電阻測量溫度實驗內容:        使用NTC電阻測量溫度並顯示在數碼管上        讀取DS18B20模塊測量溫度作為參考實驗器材:
  • 單個數碼管顯示0-9
    一、實驗要求使用51單片機控制單個數碼管,使其循環顯示0-9.二、實驗原理數碼管(Segment Displays)由多個發光二極體封裝在一起組成「8」字型的器件,引線已在內部連接完成,只需引出它們的各個筆劃,公共電極。數碼管實際上是由七個發光管組成8字形構成的,加上小數點就是8個。這些段分別由字母a,b,c,d,e,f,g,dp來表示。
  • 單片機地址總線和數據總線的分離
    推薦閱讀 51單片機學習實踐:用NTC電阻測溫並顯示在TM1637數碼管 STC15單片機實驗名稱:使用NTC電阻測量溫度實驗內容:        使用NTC電阻測量溫度並顯示在數碼管上        讀取DS18B20模塊測量溫度作為參考實驗器材:        STC15W408AS_DIP16