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

发布时间 : 星期日 文章【精品】基于单片机的LED数码管数字电子钟智能仪表毕业论文更新完毕开始阅读

附录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;

联系合同范文客服:xxxxx#qq.com(#替换为@)