单片机课程设计-数字秒表 下载本文

单片机/微机接口课程设计说明书 }

}

}

TR0=~TR0; break; temp=0; break; TR0=1; break; key1times=1; goto start;

case 3:

case 4:

case 5:

}

//------------------------------------------------------------------ // 函数名称:out_simuseri // 输入参数:data_buf // 输出参数:无参

// 功能说明:8位同步移位寄存器,将data_buf的数据逐位输出到simuseri_DATA

//------------------------------------------------------------------ void out_simuseri(uchar data_buf) { uchar i; i=8;

ACC=data_buf; do {

simuseri_CLK=0; simuseri_DATA=a0; simuseri_CLK=1;

15

单片机/微机接口课程设计说明书 ACC=ACC>>1; }

while(--i!=0); }

/************************************************/ void main() { init(); while(1) }

/************************************************/ void delay(uint z) {

uint x,y; for(x=z;x>0;x--) }

/************************************************/ void display( uint bai,uint shi,uint ge)//显示函数 {

bai=temp/100; shi=temp/10; ge=temp;

P0=0xFF; P0=0xFE; delay(1);

P0=0xFF;

out_simuseri(table2[shi]); P0=0xFD;

16

//大循环

{ }

keyscan();

display(bai,shi,ge); //调用显示函数

//延时函数

for(y=110;y>0;y--);

//消影

out_simuseri(table1[bai]); //调用out_simuseri函数

单片机/微机接口课程设计说明书 delay(1);

P0=0xFF;

out_simuseri(table1[ge]); P0=0xFB; delay(1); }

/************************************************/ void init() {

key1times=0; temp=0; aa=0; TMOD=0X01;

TH0=(65536-10000)/256; TL0=(65536-10000)%6; EA=1; ET0=1; TR0=1; }

/************************************************/ void timer0() interrupt 1 {

TH0=(65536-10000)/256; TL0=(65536-10000)%6; aa++; }

17

//初始化函数

//设定定时器初值

//开总中断 //允许T0中断 //启动T0中断

//定时器T0中断服务子程序

//中断次数加1

//计时100ms

if(aa==10)

{

aa=0; temp++;

if(temp==600) temp=0; }

单片机/微机接口课程设计说明书 9 参考文献

[1]阎石.数字电子技术基础(第五版)[M]. 北京:高等教育出版社,1989. [2]康华光.电子技术基础:数字部分.4版. 北京:高等教育出版社,2000. [3]路而红.专用集成电路设计与电子设计自动化.北京:清华大学出版社,2004. [4]郑家龙.集成电子技术基础教程.北京:高等教育出版社,2002. [5]邱关源.电路(第五版).北京:高等教育出版社,2006.

[6] 郭天祥.新概念51单片机C语言教程-入门、提高、开发、拓展全攻略[M].北京:电子工业出版社,2010.

[7] 张兰红.单片机原理及应用.北京:机械工业出版社,2012.

18