仿真版本:Proteus8.6及以上版本
程序編譯:Keil5 C51
編程語言:C語言
設計編號:【I07】
1.? 簡介
? 本文提出了一種基于51單片機的電子時鐘系統。該系統由單片機系統、數碼管顯示系統、鍵盤、蜂鳴器等組成,通過單片機自身的定時計數器溢出標志產生最小計時單元,經過變量的累加和判斷后,將數據送入數碼顯示屏顯示。通過按鍵來控制單片機實現數字時鐘的時分秒、溫度顯示等功能,并通過P0口的輸出在數碼管上顯示。
2.? 主要功能
a.通過74HC138驅動數碼管顯示時分秒、溫度顯示,初始狀態(tài):23-59-50。
b.通過獨立按鍵設置時分秒、切換溫度顯示。
3.? 源程序(Keil5)
本設計采用keil5 C51軟件(內附安裝包)實現程序設計。如需用keil4打開程序,可自行通過.c和.h文件新建工程即可。
#include <reg51.h>
#include"temp.h"
#define uint unsigned int
#define uchar unsigned char
#define ulong unsigned long
sbit L1=P2^2;//138引腳
sbit L2=P2^3;
sbit L3=P2^4;
sbit k1=P3^2; //減
sbit k2=P3^1; //加
sbit k3=P3^3; //切換
sbit k4=P3^0; //設置
sbit led=P2^0; //led
uchar key=0;//按鍵標志
uchar code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//顯示0~9
uchar shuma[8]={0x5b,0x4f,0x40,0x6d,0x6f,0x40,0x6d,0x3f};//時間顯存
uchar wendu[3]={0x3f,0x3f,0x39};//溫度顯存
uchar time=0,miao=50,fen=59,shi=23; //計時
uchar wen=0;//溫度
uchar time0=0,time1=0;//定時變量
uchar mode=0;//模式,設置用
void delay(uint i);//函數聲明
void display1() //顯示溫度
{
uchar i;
for(i=0;i<3;i++)
{
P0=0;
P2=(P2& 0xe3)+(i<<2);
P0=wendu[2-i];
delay(50);
}
}
void display2() //顯示時間
{
uchar i;
for(i=0;i<8;i++)
{
P0=0;
P2=(P2& 0xe3)+(i<<2);
P0=shuma[7-i];
delay(50);
}
}
//顯示計算
void suan()
{
shuma[0]=smgduan[shi/10];
shuma[1]=smgduan[shi%10];
shuma[3]=smgduan[fen/10];
shuma[4]=smgduan[fen%10];
shuma[6]=smgduan[miao/10];
shuma[7]=smgduan[miao%10];
wen=Ds18b20ReadTemp();//讀取溫度
wendu[0]=smgduan[wen/10];
wendu[1]=smgduan[wen%10];
}
4.? 仿真proteus8.6
? 本設計采用proteus8.6軟件(內附安裝包)實現仿真設計,如下圖所示。proteus軟件一般存在高低版本兼容問題,該仿真是通過proteus8.6導出的,所以請盡量使用proteus8.6打開文件,低于proteus8.6的版本不能夠正常使用,高于proteus8.6的版本除了proteus8.8/8.9理論上可以正常使用。
初始界面:
5.? 設計報告
設計報告主要包括硬件電路、軟件設計、仿真調試等等,僅供參考。
6.? 資料清單
設計資料主要包括C程序+仿真+設計報告+使用說明+元件清單+操作視頻等。
百度網盤下載鏈接:【I07】百度網盤下載鏈接
更多單片機仿真設計合集:單片機仿真設計合集