时钟 - 吴志勇 - 图文(4)

2019-08-30 20:28

第七章 参考文献

[1]王迎旭.《单片机原理与应用》.机械工业出版社.2004年7月

[2]胡汉才.《单片机原理及系统设计》.清华大学出版社.2002年1月

[3]潘永雄.《新编单片机原理与应用》.西安电子科技大学出版社.2003年2月

[4]张迎新.《单片微型计算机原理、应用及接口技术》.国防工业出版社

[5]郭天祥.《新概念51单片机C语言教程》.电子工业出版社

附录

附录A 系统电路图

图c 系统电路图

15

附录B 程序清单

#include #include #include

#define uchar unsigned char #define uint unsigned int

uchar code shu[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

uchar code wei[4]={0x01,0x02,0x04,0x08}; sbit set=P1^0; sbit inc=P1^1; sbit dec=P1^2; sbit chg=P1^3; sbit P37=P3^7;

uchar ahour=12,hour=0,aminite=0,minite=0,set_flag=0,chg_flag=0,mstcnt=0,second=0;

void delay(uchar loop) {

uchar loop1;

for(;loop>0;loop--)

for(loop1=110;loop1>0;loop1--); }

void display(uchar shi,uchar fen) {

uint i=0; while(i<4) {

P2=wei[i]; switch(i) {

case 0:P0=shu[fen];delay(10);break; case 1:P0=shu[fen/10];delay(10);break; case 2:P0=shu[shi];delay(10);break; case 3:P0=shu[shi/10];delay(10);break; }

16

i++;

} }

void kscan(void) {

if(set==0) {

while(set==0) {

if(chg_flag==0)display(hour,minite); if(chg_flag==1)display(ahour,aminite); if(chg_flag==2)display(0,second); }

set_flag++;

if(set_flag>=3)set_flag=0; }

if(inc==0) {

while(inc==0)

{

if(chg_flag==0)display(hour,minite); if(chg_flag==1)display(ahour,aminite); if(chg_flag==2)display(0,second); }

switch(chg_flag) {

case 0:if(set_flag==1)

{hour++;if(hour>=24)hour=0;}; if(set_flag==2)

{minite++;if(minite>=60)minite=0;}; break;

case 1:if(set_flag==1)

{ahour++;if(ahour>=24)ahour=0;}; if(set_flag==2)

{aminite++;if(aminite>=60)aminite=0;}; break;

case 2:TR0=1;break;

17

default:break;

} }

if(dec==0) {

while(dec==0) {

if(chg_flag==0)display(hour,minite); if(chg_flag==1)display(ahour,aminite); if(chg_flag==2)display(0,second); }

switch(chg_flag) {

case 0:if(set_flag==1)

{hour--;if(hour<=0)hour=24;}; if(set_flag==2)

{minite--;if(minite<=0)minite=60;}; break;

case 1:if(set_flag==1)

{ahour--;if(ahour<=0)ahour=24;}; if(set_flag==2)

{aminite--;if(aminite<=0)aminite=60;}; break;

case 2:TR0=0;

second--;

if(second<=0)second=60;break;

default:break;

} }

if(chg==0) {

while(chg==0) {

if(chg_flag==0)display(hour,minite); if(chg_flag==1)display(ahour,aminite); if(chg_flag==2)display(0,second); }

chg_flag++;

18

if(chg_flag>=3)chg_flag=0; } }

void sound(void) { uint j=0; while(j<30) {

P37=1;

delay(500); P37=0;

delay(500); j++; } }

void main() {

P1=0xff; TH0=0x3c; TL0=0xb0; ET0=1; EA=1; TR0=1; while(1) {

if(P1!=0xff)kscan();

if(chg_flag==0)display(hour,minite); if(chg_flag==1)display(ahour,aminite); if(chg_flag==2)display(0,second);

if(ahour==hour&&aminite==minite)sound(); } }

void time(void) interrupt 1 {

TH0=0x3c;

19


时钟 - 吴志勇 - 图文(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:讲义:国际关系分析

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: