基于單片機(jī)的秒,分,時(shí)可調(diào)時(shí)鐘的設(shè)計(jì)
這個(gè)是用Proteus做的硬件設(shè)計(jì),對(duì)單片機(jī)有興趣大概都用過(guò)吧!另外還有軟件程序,如果把這個(gè)硬件比作人的外觀和手腳(是的還可以控制步進(jìn)電機(jī)伺服系統(tǒng)再用電機(jī)去控制一些操作的話就更像機(jī)器人了)。那么軟件程序就好比是人的大腦。下面我也把自己編的程序展示一下吧!望高手指點(diǎn):是用C語(yǔ)言編的。
本程序要實(shí)現(xiàn)秒,分,時(shí)的精確計(jì)時(shí),另外P1角也就是單片機(jī)的左邊還有三個(gè)按鈕可實(shí)現(xiàn)時(shí)、分、秒的調(diào)時(shí)。圖上沒(méi)有顯示!
主要代碼:
#include reg51.h>
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,};
unsigned char disbitcode[]={0X00,0x10,0x20,0x30,0x40,0x50,0x60,0x70};//經(jīng)38譯碼器片選數(shù)碼管
unsigned char disbuf[8]={0,0,0,0,0,0,0,0};//八次循環(huán)逐個(gè)片選導(dǎo)通并顯示。
sbit OE=P2^6;
sbit LE=P2^7;
sbit K1=P1^0;
sbit K2=P1^1;
sbit K3=P1^2;
unsigned char second;
unsigned char minite;
unsigned char hour;
unsigned int tcnt;
void delay(unsigned int N)
{
while(N--);
}
void getbuff()
{
disbuf[0]=second%10;
disbuf[1]=second/10;
disbuf[2]=10;
disbuf[3]=minite%10;
disbuf[4]=minite/10;
disbuf[5]=10;
disbuf[6]=hour%10;
disbuf[7]=hour/10;
}
void display()
{
unsigned char i=0;
for(i=0;i8;i++)
{
LE=1;
P3=disbitcode[i]; //經(jīng)38譯碼器依次片選
P0=dispcode[disbuf[i]]; //將相應(yīng)值送入P0口
OE=0;
delay(500);
}
}
void key()
{
if(K1==0)
{
delay(5000);
if(K1==0)
{
second++;
if(second==60)
電磁爐相關(guān)文章:電磁爐原理
評(píng)論