文档详情

数字钟实验+程序+仿真.doc

发布:2020-12-31约2.57千字共6页下载文档
文本预览下载声明
程序自己写的,图用proteus仿真的 K1按一下,分钟加1 K2按一下,分钟减1 K3按一下,小时加1 K4按一下,小时减1 实验程序代码: #includereg52.h #define uint unsigned int uint sec, min,hour,flag; unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //段码控制 unsigned char code dispbit[8]={0x01,0x02,0x08,0x10,0x40,0x80,0x04,0x20}; //位选控制 查表的方法控制 sbit led=P2^0; sbit enter=P3^2; sbit key1=P2^1; sbit key2=P2^2; sbit key3=P2^3; sbit key4=P2^4; void init(); void delay(unsigned int i); void display(); void check(); void main () { init(); while(1) { check(); if(flag==20) { flag=0; sec++; if(sec==60) { sec=0; min++; if(min==60) { min=0; hour++; if(hour==24) { hour=0; } } } } display(); } } void init() { //EA=1; //IE0=1; // IT0=0; TMOD=0x01; TH0=(65536-45872)/256; TL0=(65536-45872)%256; EA=1; TR0=1; ET0=1; led=0; } /*void int_0() interrupt 0 { while(!key1) { while(!key1); hour++; led=~led; } }*/ void T0_time() interrupt 1 { TH0=(65536-45872)/256; TL0=(65536-45872)%256; flag++; //led=~led; } void display() { unsigned int num[8]; unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; // unsigned int num1[8]={0xa4,0xc0,0xf9,0xa4,0xbf,0xbf,0xf9,0xc0}; int m; num[0]=table[hour/10]; num[1]=table[hour%10]; num[2]=table[min/10]; num[3]=table[min%10]; num[4]=table[sec/10]; num[5]=table[sec%10]; num[6]=0xbf; num[7]=0xbf; for(m=0;m8;m++) { P1=dispbit[m]; P0=num[m]; delay(10); } // delay(2000); /* for(m=0;m8;m++) { P1=dispbit[m]; P0=num1[m]; delay(10); } */ } void delay(unsigned int i) { char j; for(i; i 0; i--) for(j = 200; j 0; j--); } void check() { P2=0xff; if
显示全部
相似文档