数字时钟论文(6)

2019-05-17 17:50

LING=0;

if(hour==shi&&minute==fen&&niao_hao) ShowASC(6,120,0x3d); if(Ms50==10) { Ms50=0; half_s=!half_s; } if(Ms50==0) LING=1; ShowASC(6,120,0x3a); }

/**************timer0中断处理**************************/ void time0() interrupt 1 {

TH0=-50000/256; TL0=-50000%6; Ms50++; }

(2)液晶显示子程序

#ifndef _LCM12864_2009_4_1_ #define _LCM12864_2009_4_1_

/*********************选择屏幕********************************/ void SelectScreE(uchar screE) {

switch(screE) {

case 0:CS1=1;CS2=1;break;//全屏 case 2:CS1=1;CS2=0;break;//左屏 case 1:CS1=0;CS2=1;break;//右屏 default:break; } }

/*********************初始化相关*******************************/ void InitLCD(void) {

SetOnOff(0); ClearScreE(0); SetOnOff(1); }

/***************开关显示******************/ void SetOnOff(uchar onoff) {

onoff|=0x3e; WriteCmd(onoff); }

/*************清屏**********/ void ClearScreE(uchar screE) {

unsigned char i,j; SelectScreE(screE); for(i=0;i<8;i++) {SetLine(i);

for(j=0;j<64;j++) {

SetColumn(j); WriteByte(0x00); } } }

/******************设定列地址**************/ void SetColumn(uchar column) {

column &= 0x3f; // 0=

26

}

/**************显示数字8*16*********************/ void ShowASC(uchar lin,uchar column,uchar ASC) {

unsigned char *address;

address=&nAsciiDot[ASC-0X30][0]; Show8x8(lin,column,address); Show8x8(lin+1,column,address+8); }

/********************显示汉字16*16****************************/ void ShowChina(uchar lin,uchar column,uchar num) {

unsigned char *address; address = &HZcode[num][0]; Show8x8(lin,column,address); Show8x8(lin,column+8,address+8); Show8x8(lin+1,column,address+16); Show8x8(lin+1,column+8,address+24); }

#endif

(3)ds1302子程序 #ifndef __ds1302_H__ #define __ds1302_H__

/***************往DS1302写入1Byte数据************************/ void v_WTInputByte(uchar ucDa) {

uchar i; ACC= ucDa; for(i=8; i>0; i--) { T_IO = ACC0; T_CLK = 1; T_CLK = 0; ACC =ACC>> 1; } }

/**********************从DS1302读取1Byt**********************/ uchar uc_RTOutputByte(void) {

uchar i; for(i=8; i>0; i--) { ACC = ACC>>1; ACC7 = T_IO; T_CLK = 1; T_CLK = 0; }

return(ACC); }

/**********************往DS1302写入数*************************/ void wr_ds1302(uchar ucAddr, uchar ucDa) {

T_RST = 0; T_CLK = 0; T_RST = 1;

v_WTInputByte(ucAddr); /* 地址,命令 */ v_WTInputByte(ucDa); /* 写1Byte数据*/ T_CLK = 1; T_RST =0; } #endif

3.仿真图

27

四论文小结

转眼间论文已近到了尾声了。在这期间我学习到很多的新知识。尤其是对编程的掌握。以往在学校时学习编程时遇到到新的芯片时,都是老师先编好程序我们理解记忆。而这次我独立的完成DS1302的编程对我来说这是一次很大的进步吧。在这次论文中我还把我以前学的很多的知识又用了一边。使我对以前的知识又有了新的理解。在次还要感谢我的指导老师 高老师的帮助。

五参考文献

1. AT89S52数据手册 2. DS1302数据手册 3. LM35数据手册 4. LM358 数据手册 5. ADC0804数据手册 6. FG12864E数据手册

28


数字时钟论文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2011高考数学复习资料汇编:第2单元 函数、导数(真题解析+最新

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

马上注册会员

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