第一范文网 - 专业文章范例文档资料分享平台

【精品】基于单片机的LED数码管数字电子钟智能仪表毕业论文

来源:用户分享 时间:2025/5/21 3:44:34 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

附录A:硬件原理图

附录B:C语言源程序

#include

sbit IO=P3^3; ds1302输入输出口(数据线) sbit SCLK=P3^4; ds1302时钟信号段(时钟线) sbit RST=P3^5; ds1302复位端口 sbit DISPLAY_DAT=P1^0; LED数据端口 sbit DISPLAY_CLK=P1^1; LED信号端口 sbit s1=P1^4; 功能键 sbit s2=P1^5; 加键 sbit s3=P1^6; 减键 sbit s4=P1^7; 切换键 bit flag,flag_time;

char set_miao=0,set_fen=0,set_shi=12; uchar code SMG[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; 数码管位码

void delay() 延时5us {

_nop_(); _nop_(); _nop_(); _nop_(); _nop_(); }

void delayxms(uint z) 延时程序 {

uint x,y;

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

void write_a_byte_to_1302 (uchar dat) 向DS1302写入一个字节 {

unsigned char i; for(i=0;i<8;i++) {

SCLK=0; delay(); dat=dat>>1; IO=CY; SCLK=1; delay();

} }

uchar receive_a_byte_from_1302() 从DS1302读出一个字节 {

unsigned char i;

unsigned char temp=0x00; IO=1;

for(i=0;i<8;i++) {

SCLK=0; delay();

temp=temp>>1; if(IO==1)

temp=temp|0x80; SCLK=1; delay(); }

return temp16*10+temp; }

uchar read_data(uchar addr) {

unsigned char dat; RST=0; delay(); SCLK=0; delay(); RST=1; delay();

write_a_byte_to_1302(addr);

dat=receive_a_byte_from_1302(); SCLK=1; RST=0;

return dat; }

void write_data(uchar addr,uchar dat) {

RST=0; delay(); SCLK=0; delay(); RST=1; delay();

write_a_byte_to_1302(addr); write_a_byte_to_1302(dat);

从DS1302指定位置读取数据 向DS1302某地址写数据

SCLK=1; RST=0; }

void get_time() 从DS1302中读取当前时间 {

current_time[0]=read_data(0x81); 秒 current_time[1]=read_data(0x83); 分 current_time[2]=read_data(0x85); 时 current_time[3]=read_data(0x87); 日 current_time[4]=read_data(0x89); 月 current_time[5]=read_data(0x8D); 年 }

void display1() 显示时分秒 {

display_buffer[0]=current_time[0]; 秒个位 display_buffer[1]=current_time[0]10; 秒十位 display_buffer[2]=10; ——

display_buffer[3]=current_time[1]; display_buffer[4]=current_time[1]10; display_buffer[5]=10;

display_buffer[6]=current_time[2]; display_buffer[7]=current_time[2]10; }

void display2() 显示年月日 {

display_buffer[0]=current_time[3]; 天各位 display_buffer[1]=current_time[3]10; 天十位 display_buffer[2]=10; ——

display_buffer[3]=current_time[4]; display_buffer[4]=current_time[4]10; display_buffer[5]=10;

display_buffer[6]=current_time[5]; display_buffer[7]=current_time[5]010; }

void display3() 显示秒表 {

display_buffer[0]=current_time[0]; 秒个位 display_buffer[1]=current_time[0]10; 秒十位 display_buffer[2]=10; display_buffer[3]=0; display_buffer[4]=0; display_buffer[5]=10; display_buffer[6]=0; display_buffer[7]=0;

【精品】基于单片机的LED数码管数字电子钟智能仪表毕业论文.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c13b8t572kl5gf8x599ez10e609m87w01bbb_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top