基于DS1302电子时钟的设计 - 图文(4)

2019-08-29 23:27

物理与电子工程学院

附录2

程序清单:

#include #include

#define uchar unsigned char #define uint unsigned int sbit ACC0 = ACC^0; sbit ACC7 = ACC^7; sbit t=P1^0; sbit jia=P1^1; sbit jian=P1^2; sbit m=P1^3;

sbit T_CLK = P1^6; sbit T_IO = P3^5; sbit T_RST = P1^7; sbit E=P2^7; //1602 sbit RW=P2^6; sbit RS=P2^5;

void v_W1302(uchar ucAddr, uchar ucDa); uchar uc_R1302(uchar); uchar dectobcd(uchar bcd); uchar bcdtodec(uchar); void delay(uchar x) {

uchar i; while(x--)

for(i=0;i<110;i++); }

void enable(uchar del) {

RS = 0; RW = 0; P0 = del; E = 1; delay(3); E=0; }

void write(uchar del)

16

物理与电子工程学院

{

RS = 1; RW = 0; P0 = del; E = 1; delay(3); E=0; }

void L1602_init(void) {

enable(0x01); enable(0x38); enable(0x06); enable(0x0c); E=0; }

void L1602_char(uchar hang,uchar lie,char sign) {

uchar a;

//if(hang == 1) a = 0x80; if(hang == 2) a = 0xc0; a = a + lie - 1; enable(a); write(sign); }

void timechange() {

uchar a,num=1; uchar hour,min,sec;

while(num) {

if(t==0) delay(5); if(t==0) {

num++; // beep(); while(!t); }

17

物理与电子工程学院

if(m==0) delay(5); if(m==0) num=0;

enable(0x0f);

a=uc_R1302(0x81)|0x80; v_W1302(0x8e,0); v_W1302(0x80,a);

if(num==4) num=1; if(num==1) {

enable(0xc0+12); if(jia==0) delay(5); if(jia==0) {

while(!jia);

sec=bcdtodec(uc_R1302(0x81)&0x7f); sec++; if(sec>59) sec=0;

L1602_char(2, 12, sec/10/**/+48); L1602_char(2, 13, sec + 48);

v_W1302(0x80,dectobcd(sec)|0x80); } if(jian==0) delay(5); if(jian==0) { while(!jian); sec=bcdtodec(uc_R1302(0x81)); sec--; if(sec==-1) sec=59; L1602_char(2, 12, sec/10/**/+48); L1602_char(2, 13, sec + 48); v_W1302(0x80,dectobcd(sec)|0x80); } } if(num==2) {

18

物理与电子工程学院

enable(0xc0+9); if(jia==0) delay(5); if(jia==0) {

min = bcdtodec(uc_R1302(0x83)); min++; while(!jia); if(min>59) min=0;

L1602_char(2, 9, min / 10 /*% 10 */+ 48); L1602_char(2, 10, min % 10 + 48); v_W1302(0x82,dectobcd(min)); }

if(jian==0) delay(5); if(jian==0) {

min = bcdtodec(uc_R1302(0x83)); min--;

while(!jian); if(min==-1) min=59;

L1602_char(2, 9, min / 10/*% 10 */+ 48); L1602_char(2, 10, min % 10 + 48); v_W1302(0x82,dectobcd(min)); } }

if(num==3) {

enable(0xc0+6); if(jia==0) delay(5); if(jia==0) { hour = bcdtodec(uc_R1302(0x85)); hour++; while(!jia); if(hour>23) hour=0; L1602_char(2, 6, hour / 10 /*% 10*/ + 48); L1602_char(2, 7, hour % 10 + 48); v_W1302(0x84,dectobcd(hour)); }

19

物理与电子工程学院

if(jian==0) delay(5); if(jian==0) { while(!jian); hour = bcdtodec(uc_R1302(0x85)); hour--; if(hour==-1) hour=23; L1602_char(2, 6, hour / 10/* % 10*/+ 48); L1602_char(2, 7, hour % 10 + 48); v_W1302(0x84,dectobcd(hour)); } } }

if(num==0) {

enable(0x0c); }

v_W1302(0x80,uc_R1302(0x81)&0x7f); }

void v_RTInputByte(uchar ucDa) {

uchar i;

ACC = ucDa; T_RST = 1; for(i=8; i>0; i--) {

T_IO = ACC0; T_CLK = 1; T_CLK = 0;

ACC = ACC >> 1; } }

uchar uc_RTOutputByte(void) {

uchar i; T_RST = 1;

for(i=8; i>0; i--) {

ACC = ACC >>1;

20


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

下一篇:中国古代诗歌散文鉴赏

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

马上注册会员

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