单片机简易时钟开发(protues)
生活随笔
收集整理的這篇文章主要介紹了
单片机简易时钟开发(protues)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
C51單片機簡易時鐘設計,顯示分秒時,手動時、分進位,自動進位。
#include<reg51.h> typedef unsigned int u16; typedef unsigned char u8; unsigned char code smgduan[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; unsigned char Time; void DigDisplay(); void delay(u16 i); void Timer0Cofig(void); u8 m=55,f=59,s=23; sbit K2=P1^2; sbit K1=P1^1; void main(void) { P2=0X00;P1=0XFF;Timer0Cofig();while(1){if(!K1){delay(10);if(!K1)f++;while(!K1); }if(!K2){delay(10);if(!K2)s++;while(!K2); }if(m==60) //秒進位{m=0;f++;}if(f==60) //分鐘進位{f=0;s++;}if(s==24) //小時進位{s=0;m=0;} DigDisplay();} } void delay(u16 i) {while(i--); } void DigDisplay() //顯示秒分時函數 {u16 i,i1; //顯示秒i=m%10;i1=(m/10)%10;P2=0X80;P0=smgduan[i];delay(1); P2=0X40;P0=smgduan[i1];delay(1); P2=0X20; P0=0xBF;delay(1); //顯示分鐘i=f%10;i1=(f/10)%10;P2=0X10;P0=smgduan[i];delay(1); P2=0X08;P0=smgduan[i1];delay(1); P2=0X04; P0=0xBF;delay(1);//顯示小時i=s%10;i1=(s/10)%10;P2=0X02;P0=smgduan[i];delay(1); P2=0X01;P0=smgduan[i1];delay(1);delay(80); } void Timer0Cofig(void) {TMOD = 0x01; //定時器0選擇工作方式1TH0 = 0x3C; //設置初始值,定時50MSTL0 = 0xB0; EA = 1; //打開總中斷ET0 = 1; //打開定時器0中斷TR0 = 1; //啟動定時器0 } void Timer0() interrupt 1 {TH0 = 0x3C; //設置初始值TL0 = 0xB0;Time++;if(Time == 20){m++;Time = 0;} }protues仿真示例圖:
視頻示例:
單片機時鐘示例
總結
以上是生活随笔為你收集整理的单片机简易时钟开发(protues)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SwiftyJSON解析本地JSON文件
- 下一篇: 《疯狂的程序员》五