亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標(biāo)題:
51單片機(jī)的六位數(shù)碼管時(shí)鐘表仿真及C程序
[打印本頁(yè)]
作者:
liuda
時(shí)間:
2015-1-21 22:37
標(biāo)題:
51單片機(jī)的六位數(shù)碼管時(shí)鐘表仿真及C程序
本帖最后由 liuda 于 2015-1-21 22:38 編輯
Proteus仿真截圖
/*****************************************************************************
程序名稱(chēng):六位數(shù)碼管時(shí)鐘表
編譯器:Keil uVision 4
程序功能:上電后,程序按初始時(shí)間開(kāi)始時(shí)鐘演示,時(shí)間顯示按24小時(shí)制。
時(shí)間調(diào)整:按A鍵,顯示加1,按B鍵,顯示減1,按C鍵,清零
MCU:AT89C51
晶振:11.0592M
外圍部件:
鍵盤(pán):4按鍵A、B、C、D分別接在P1.0、P1.1、P1.2和P1.3上,低電平有效
A、B、C鍵分別控制時(shí)、分、秒的選擇,D鍵銨下進(jìn)行時(shí)間調(diào)整。
顯示:4位共陰極LED,P0口送顯示數(shù)據(jù),P1口低四位位選
內(nèi)部資源:
使用定時(shí)計(jì)數(shù)器1中斷,用于定時(shí)及顯示
警告:
1. 按鍵未加防抖動(dòng)程序
2. 此程序經(jīng)過(guò)編譯并通過(guò)Proteus仿真,未通過(guò)實(shí)物檢驗(yàn)。
作者:花落水流紅,空寂蕭然山——蕭然
完成日期:2012/6/11
============================================================================*/
#include <reg51.h> //包含必要頭文件
//定義按鍵
sbit HourAdjust = P1^0; //時(shí)調(diào)整選擇鍵
sbit MinuteAdjust = P1^1; //分調(diào)整選擇鍵
sbit SecondAdjust = P1^2; //秒選擇選擇鍵
sbit Adjust = P1^3; //調(diào)整鍵
//定義標(biāo)志位
bit SecondFlag = 0; //秒標(biāo)志
bit FlashFlag = 0; //秒閃標(biāo)志
bit Second10Flag = 0; //10秒標(biāo)志
bit HourAdjustFlag = 0; //時(shí)調(diào)整標(biāo)志,A鍵按下置1,10秒后清0
bit MinuteAdjustFlag = 0; //分調(diào)整標(biāo)志,A鍵按下置1,10秒后清0
bit SecondAdjustFlag = 0; //秒調(diào)整標(biāo)志,A鍵按下置1,10秒后清0
unsigned char Led1,Led2,Led3,Led4,Led5,Led6; //定義緩存
int TimeCount,Second10Count; //定義計(jì)數(shù)器
unsigned char code LedTab[]= //定義共陰極數(shù)碼管表,0x00用于清除顯示
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
void Delay100us(int Times); //定義延時(shí)函數(shù)
//*****************************定時(shí)器中斷服務(wù)程序******************************r
//程序功能:動(dòng)態(tài)驅(qū)動(dòng)數(shù)碼管,同時(shí)完成定時(shí)功能。
void timer() interrupt 3 using 2
{
TR1 = 0;
TL1 = 0x13; TH1 = 0x2C; //重新賦值
P0 = 0x00; //顯示小時(shí)
P2 = 0xfe;
P0 = LedTab[Led1];
Delay100us(1);
P0 = 0x00;
P2 = 0xfd;
if(FlashFlag) //秒顯(1秒顯,1秒隱)分前小數(shù)點(diǎn)
P0 = LedTab[Led2] | 0x80;
else
P0 = LedTab[Led2] & 0x7f;
Delay100us(1);
P0 = 0x00; //顯示分
P2 = 0xfb;
P0 = LedTab[Led3];
Delay100us(1);
P0 = 0x00;
P2 = 0xf7;
if(FlashFlag) //秒顯秒前小數(shù)點(diǎn)
P0 = LedTab[Led4] | 0x80;
else
P0 = LedTab[Led4] & 0x7f;
Delay100us(1);
P0 = 0x00; //顯示秒
P2 = 0xef;
P0 = LedTab[Led5];
Delay100us(1);
P0 = 0x00;
P2 = 0xdf;
P0 = LedTab[Led6];
Delay100us(1);
TR1 = 1;
if(TimeCount < 100) //秒計(jì)數(shù)器
TimeCount++;
else
{
TimeCount = 0x00;
SecondFlag = 1; //置位秒標(biāo)志
if(Second10Flag) //10秒計(jì)數(shù)器
if(Second10Count < 20)
Second10Count++;
else
{
Second10Count = 0x00; //10秒計(jì)數(shù)器清0
Second10Flag = 0; //清除10s標(biāo)志
HourAdjustFlag = 0; //清除調(diào)整標(biāo)志位
MinuteAdjustFlag = 0;
SecondAdjustFlag = 0;
}
}
}
//============================================================================
main(void)
{
//初始化
int Second = 30; //初始化時(shí)間
int Minute = 12;
int Hour = 20;
Led1 = 0x00; //清除顯存
Led2 = 0x00;
Led3 = 0x00;
Led4 = 0x00;
Led5 = 0x00;
Led6 = 0x00;
SecondFlag = 0;
TimeCount = 0x00;
//設(shè)置定時(shí)器中斷
TMOD = 0x10f; //GATE=0 01010001
//C/T=0--定時(shí)/計(jì)數(shù)器1工作于定時(shí)方式
//M1=1;M0=0--選擇工作模式1,構(gòu)成最大定時(shí)器
//T0:在此程序不使用
TL1 = 0x13; TH1 = 0x2C; //指定定時(shí)時(shí)間為50ms 65536-50/(11.0592/12)=11283=2C13h
EA = 1; //開(kāi)總中斷
TF1 = 0;
ET1 = 1; //開(kāi)定時(shí)器中斷
TR1 = 1; //開(kāi)始計(jì)時(shí)
while(1)
{
//*****************************************************************************
//對(duì)時(shí)間進(jìn)行調(diào)整程序
if(SecondFlag)
{
if(Second%2 == 0)
FlashFlag = 1;
else
FlashFlag = 0;
if(Second < 59)
Second++;
else
{
if(Minute < 59)
Minute++;
else
{
if(Hour < 23)
Hour++;
else
Hour = 0;
Minute = 0;
}
Second = 0;
}
SecondFlag = 0;
}
//-----------------------------------------------------------------------------
//*****************************************************************************
//時(shí)間調(diào)整程序
if(HourAdjustFlag) //調(diào)整時(shí)程序
if(Second10Flag)
if(FlashFlag) //時(shí)秒顯
{
Led1 = 0x0a; //時(shí)隱
Led2 = 0x0a;
}
else
{
Led1 = Hour/10; //時(shí)顯
Led2 = Hour%10;
}
else
{
Led1 = Hour/10;
Led2 = Hour%10;
}
else
{
Led1 = Hour/10;
Led2 = Hour%10;
}
if(MinuteAdjustFlag) //調(diào)整分程序
if(Second10Flag)
if(FlashFlag) //分秒顯
{
Led3 = 0x0a;
Led4 = 0x0a;
}
else
{
Led3 = Minute/10;
Led4 = Minute%10;
}
else
{
Led3 = Minute/10;
Led4 = Minute%10;
}
else
{
Led3 = Minute/10;
Led4 = Minute%10;
}
if(SecondAdjustFlag) //調(diào)整秒程序,控制秒顯
if(Second10Flag)
if(FlashFlag)
{
Led5 = 0x0a;
Led6 = 0x0a;
}
else
{
Led5 = Second/10;
Led6 = Second%10;
}
else
{
Led5 = Second/10;
Led6 = Second%10;
}
else
{
Led5 = Second/10;
Led6 = Second%10;
}
if(!HourAdjust) //時(shí)調(diào)整按鍵按下
{
while(!HourAdjust); //等待松開(kāi)
HourAdjustFlag = 1; //置位時(shí)標(biāo)志位
MinuteAdjustFlag = 0; //清除分標(biāo)志位
SecondAdjustFlag = 0; //清除秒標(biāo)志位
Second10Flag = 1; //置位10秒標(biāo)志位
}
if(!MinuteAdjust) //分調(diào)整鍵按下
{
while(!MinuteAdjust);
MinuteAdjustFlag = 1;
HourAdjustFlag = 0;
SecondAdjustFlag = 0;
Second10Flag = 1;
}
if(!SecondAdjust) //秒調(diào)整鍵按下
{
while(!SecondAdjust);
SecondAdjustFlag = 1;
HourAdjustFlag = 0;
MinuteAdjustFlag = 0;
Second10Flag = 1;
}
if(!Adjust) //調(diào)整鍵按下
{
while(!Adjust);
if(HourAdjustFlag) //調(diào)整時(shí),加1
if(Hour < 23)
{
Hour++;
Second10Count = 0;
}
else
Hour = 0;
if(MinuteAdjustFlag) //調(diào)整分,加1
if(Minute < 59)
{
Minute++;
Second10Count = 0;
}
else //調(diào)整秒,清零
Minute = 0;
if(SecondAdjustFlag)
Second = 0;
}
}
}
//********************************延時(shí)程序************************************
void Delay100us(int Times)
{
Times = Times * 100;
while(Times--);
}
//必要說(shuō)明,定時(shí)器中斷函數(shù)是經(jīng)過(guò)計(jì)算的50ms,但在使用Proteus仿真時(shí)時(shí)間不準(zhǔn)確。
//比實(shí)際表要快。對(duì)此不進(jìn)行調(diào)整,因?yàn)橹袛嗪瘮?shù)是經(jīng)過(guò)硬件檢驗(yàn)通過(guò)的。
作者:
未名時(shí)代
時(shí)間:
2015-4-5 15:18
不錯(cuò)看好你
作者:
fontex
時(shí)間:
2015-4-11 08:33
不錯(cuò),多謝!
作者:
戀金
時(shí)間:
2015-4-11 23:08
樓主有沒(méi)有原理圖全圖?可以看看嗎
作者:
GG-路人乙
時(shí)間:
2015-6-20 23:15
不錯(cuò),多謝!
作者:
郭263337
時(shí)間:
2016-4-15 21:30
樓主為什么我的數(shù)碼管不顯示
作者:
liuzhaoxin1020
時(shí)間:
2016-12-31 14:49
感謝分享
作者:
T1997
時(shí)間:
2017-12-6 09:02
請(qǐng)問(wèn)倒計(jì)時(shí)的要怎么改?
作者:
1223454niy
時(shí)間:
2018-12-23 13:26
為什么我的不行?
作者:
jifengjianwu
時(shí)間:
2018-12-23 18:09
謝謝,先保存慢慢看吧。
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1