完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
#include #define uchar unsigned char #define uint unsigned int data_7seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,}; uchar hour,min,sec; ***it shi=P1^0; ***it fen=P1^1; ***it miao=P1^2; ***it rst=P1^4; ***it sck=P1^5; ***it io=P1^6; ***it fm=P1^7; /*函数声明:*/ void write_ds1302_byte(uchar dat); void write_ds1302(uchar add,uchar dat); uchar read_ds1302(uchar add); void read_rtc(); void set_rtc(); void display(); void delay(int n); void show(); void fmzz(); /*DS1302单字节写入:*/ void write_ds1302_byte(uchar dat) { uchar i; //发送地址 for(i=0;i<8;i++) //循环8次移位 { sck=0; io=dat&0x01; //每次传输低字节 dat=dat>>1; //右移一位 sck=1; } } /*DS1302多字节写入:*/ void write_ds1302(uchar add,uchar dat) { rst=0;//CE引脚为低,数据传送中止 _nop_(); sck=0; //清零时钟总线 _nop_(); rst=1; //CE引脚为高,逻辑控制有效 _nop_(); write_ds1302_byte(add); write_ds1302_byte(dat); rst=0; _nop_(); io=1; sck=1; } /*DS1302读取:*/ uchar read_ds1302(uchar add) { uchar i,value; rst=0; _nop_(); sck=0; _nop_(); rst=1; _nop_(); write_ds1302_byte(add); for (i=0;i<8;i++) { value=value>>1; sck=0; if (io) value=value|0x80; //每次传输低字节 sck=1; } rst=0; _nop_(); sck=0; _nop_(); sck=1; io=1; return value; } /*调整时间:*/ void set_rtc() { 此处需关闭写保护 if (shi==0) delay(100); if (shi==0) { hour=(hour>>4)*10+(hour&0x0f); hour++; if (hour==24) hour=0; hour=((hour/10)<<4)+(hour%10); write_ds1302(0x84,hour); } if (fen==0) delay(100); if (fen==0) { min=(min>>4)*10+(min&0x0f); min++; if (min==60) min=0; min=((min/10)<<4)+(min%10); write_ds1302(0x82,min); } if (miao==0) delay(100); if (miao==0) { sec=(sec>>4)*10+(sec&0x0f); sec++; if (sec==60) sec=0; sec=((sec/10)<<4)+(sec%10); write_ds1302(0x80,sec); } } /*读取时间:*/ void read_rtc() { hour=read_ds1302(0x85); min=read_ds1302(0x83); sec=read_ds1302(0x81); } /*显示时间:*/ void display() { unsigned int a=1; P2=0x01;P0=data_7seg[hour/16]; delay(a); P2=0x02;P0=data_7seg[hour%16]; delay(a); P2=0x04;P0=data_7seg[min/16]; delay(a); P2=0x08;P0=data_7seg[min%16]; delay(a); P2=0x10;P0=data_7seg[sec/16]; delay(a); P2=0x20;P0=data_7seg[sec%16]; delay(a); } /*蜂鸣:*/ void fmzz() { uint i; for (i=0;i<100;i++) { fm=!fm; delay(2); } } /*延时程序:*/ void delay(int n) { unsigned int i,j; for(i=0;i for(j=0;j<121;j++) {;} } } /*显示学号:*/ void show() { unsigned int m; for(m=0;m<20;m++) { uint a=10; P2=0x01;P0=data_7seg[7];delay(a); P2=0x02;P0=data_7seg[2];delay(a); P2=0x04;P0=data_7seg[4];delay(a); P2=0x08;P0=data_7seg[1];delay(a); P2=0x10;P0=data_7seg[1];delay(a); P2=0x20;P0=data_7seg[8];delay(a); } } /*主程序:*/ void main() { show(); write_ds1302(0x84,0x12); //初始化 write_ds1302(0x82,0x00); write_ds1302(0x80,0x00); //秒寄存器(81h、80h)的位7 当该位置为0时,时钟开始运行。 while (1) { set_rtc(); read_rtc(); display(); if(min==0) { if(sec==0) { fmzz(); } } } } |
|
相关推荐
|
|
1039 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
3425 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1465 浏览 0 评论
2146 浏览 0 评论
1640 浏览 0 评论
75352 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 18:36 , Processed in 0.503674 second(s), Total 64, Slave 47 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号