搜档网
当前位置:搜档网 › 单片机万年历带阴历

单片机万年历带阴历

单片机万年历带阴历
单片机万年历带阴历

程序说明:

1: 公农历自动转换,星期根据公历日期自动换算。

2: 没有采用时间IC(如DS1302 等),而是直接用单片机内的定时器。

3: 可显示简单的国家法定节假日,如到了农历8 月15,“单片机学徒”五个字会变成“中秋节”。

4: 在农历日期中采用初,廿等符合农历的用字。

5: 公历日期和时间可调,农历与星期是根据公历日期自动换算所得,所以不必调整。

6: 程序最终显示如下图所示。实际在本人办公桌上使用中。

7: 在实际制作中如有疑问,欢迎大家交流.

单片机学徒于2011 年3 月。

#include

#include

#define uchar unsigned char

#define uint unsigned int

#define port P0

#define TT 49962

uchar month,day,week,one,two,thr,fou,fiv,key_v,key_t,flagt;

uchar year,yyear,ymonth,yday,key;

char hour,min,sec;

bit flagjr = 0;

bit flagturn;

bit flagnl = 0;

sbit e = P2^3;

sbit rw = P2^4;

sbit rs = P2^5;

sbit cs1 = P2^6;

sbit cs2 = P2^7;

sbit add = P3^3;

sbit ok = P3^4;

sbit set = P3^5;

sbit dec = P3^6;

sbit armn = P3^1;

sbit armh = P3^7;

void refweek();

void key_t0(key_v);

void displayday();

void lcd_datey(uint x,uchar y,uchar z);

uchar monthcode[]={0,31,0,31,30,31,30,31,31,30,31,30,31};

uchar code day_code1[9]={0x0,0x1f,0x3b,0x5a,0x78,0x97,0xb5,0xd4,0xf3}; uint code day_code2[3]={0x111,0x130,0x14e};

uchar code year_code[]=

{

0x4d,0x4A,0xB8, //2001

0x0d,0x4A,0x4C, //2002

0x0d,0xA5,0x41, //2003

0x25,0xAA,0xB6, //2004

0x05,0x6A,0x49, //2005

0x7A,0xAd,0xBd, //2006

0x02,0x5d,0x52, //2007

0x09,0x2d,0x47, //2008

0x5C,0x95,0xBA, //2009

0x0A,0x95,0x4e, //2010

0x0B,0x4A,0x43, //2011

0x4B,0x55,0x37, //2012

0x0A,0xd5,0x4A, //2013

0x95,0x5A,0xBf, //2014

0x04,0xBA,0x53, //2015

0x0A,0x5B,0x48, //2016

0x65,0x2B,0xBC, //2017

0x05,0x2B,0x50, //2018

0x0A,0x93,0x45, //2019

0x47,0x4A,0xB9, //2020

0x06,0xAA,0x4C, //2021

0x24,0xdA,0xB6, //2023 0x04,0xB6,0x4A, //2024 0x69,0x57,0x3d, //2025 0x0A,0x4e,0x51, //2026 0x0d,0x26,0x46, //2027 0x5e,0x93,0x3A, //2028 0x0d,0x53,0x4d, //2029 0x05,0xAA,0x43, //2030 0x36,0xB5,0x37, //2031 0x09,0x6d,0x4B, //2032 0xB4,0xAe,0xBf, //2033 0x04,0xAd,0x53, //2034 0x0A,0x4d,0x48, //2035 0x6d,0x25,0xBC, //2036 0x0d,0x25,0x4f, //2037 0x0d,0x52,0x44, //2038 0x5d,0xAA,0x38, //2039 0x0B,0x5A,0x4C, //2040 0x05,0x6d,0x41, //2041 0x24,0xAd,0xB6, //2042 0x04,0x9B,0x4A, //2043 0x7A,0x4B,0xBe, //2044 0x0A,0x4B,0x51, //2045 0x0A,0xA5,0x46, //2046 0x5B,0x52,0xBA, //2047 0x06,0xd2,0x4e, //2048 0x0A,0xdA,0x42, //2049 0x35,0x5B,0x37, //2050 0x09,0x37,0x4B, //2051 0x84,0x97,0xC1, //2052 0x04,0x97,0x53, //2053 0x06,0x4B,0x48, //2054 0x66,0xA5,0x3C, //2055 0x0e,0xA5,0x4f, //2056 0x06,0xB2,0x44, //2057 0x4A,0xB6,0x38, //2058 0x0A,0xAe,0x4C, //2059 0x09,0x2e,0x42, //2060 0x3C,0x97,0x35, //2061 0x0C,0x96,0x49, //2062 0x7d,0x4A,0xBd, //2063 0x0d,0x4A,0x51, //2064 0x0d,0xA5,0x45, //2065

0x05,0x6A,0x4e, //2067

0x0A,0x6d,0x43, //2068

0x45,0x2e,0xB7, //2069

0x05,0x2d,0x4B, //2070

0x8A,0x95,0xBf, //2071

0x0A,0x95,0x53, //2072

0x0B,0x4A,0x47, //2073

0x6B,0x55,0x3B, //2074

0x0A,0xd5,0x4f, //2075

0x05,0x5A,0x45, //2076

0x4A,0x5d,0x38, //2077

0x0A,0x5B,0x4C, //2078

0x05,0x2B,0x42, //2079

0x3A,0x93,0xB6, //2080

0x06,0x93,0x49, //2081

0x77,0x29,0xBd, //2082

0x06,0xAA,0x51, //2083

0x0A,0xd5,0x46, //2084

0x54,0xdA,0xBA, //2085

0x04,0xB6,0x4e, //2086

0x0A,0x57,0x43, //2087

0x45,0x27,0x38, //2088

0x0d,0x26,0x4A, //2089

0x8e,0x93,0x3e, //2090

0x0d,0x52,0x52, //2091

0x0d,0xAA,0x47, //2092

0x66,0xB5,0x3B, //2093

0x05,0x6d,0x4f, //2094

0x04,0xAe,0x45, //2095

0x4A,0x4e,0xB9, //2096

0x0A,0x4d,0x4C, //2097

0x0d,0x15,0x41, //2098

0x2d,0x92,0xB5, //2099

};

uchar code shuzi[][16]={

{0xFF,0x0F,0x07,0xF3,0xFB,0xFB,0xF3,0x07,0xFF,0xF0,0xE0,0xCF,0xDF,0xD F,0xCF,0xE0},

{0xFF,0xFF,0xF7,0xF7,0x03,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0xC 0,0xFF,0xFF},

{0xFF,0xCF,0xC7,0xF3,0xFB,0xFB,0x73,0x07,0xFF,0xCF,0xC7,0xD3,0xD9,0xD C,0xDE,0xDF},

{0xFF,0xEF,0xE7,0x73,0x7B,0x7B,0x33,0x87,0xFF,0xF7,0xE7,0xCF,0xDF,0xD F,0xCE,0xE0},

B,0xC0,0xC0},

{0xFF,0x03,0x03,0x3B,0xBB,0xBB,0x3B,0x7B,0xFF,0xF6,0xE6,0xCF,0xDF,0xD F,0xCF,0xE0},

{0xFF,0x0F,0x07,0x33,0xBB,0xBB,0x33,0x67,0xFF,0xF0,0xE0,0xCF,0xDF,0xD F,0xCF,0xE0},

{0xFF,0xFB,0xFB,0xFB,0x7B,0x1B,0x8B,0xE3,0xFF,0xFF,0xFF,0xC3,0xC0,0xF C,0xFF,0xFF},

{0xFF,0xCF,0x87,0x33,0x7B,0x7B,0x33,0x87,0xFF,0xF1,0xE0,0xCE,0xDF,0xD F,0xCE,0xE0},

{0xFF,0x0F,0x07,0xF3,0xFB,0xFB,0xF3,0x07,0xFF,0xF7,0xE6,0xCC,0xDD,0xD D,0xCC,0xE0}

};

uchar code shisu[][16]={

{0xFF,0x3F,0x0F,0x87,0xE7,0xF7,0x07,0x0F,0xFF,0xF8,0xF0,0xF7,0xF3,0xF 0,0xF8,0xFE},

{0xFF,0xFF,0xDF,0x5F,0x0F,0x07,0xE7,0xFF,0xFF,0xFF,0xF3,0xF0,0xF8,0xF F,0xFF,0xFF},

{0xFF,0xFF,0xFF,0xCF,0x47,0x77,0x37,0x87,0xFF,0xF5,0xF1,0xF8,0xF2,0xF 3,0xF3,0xF3},

{0xFF,0xFF,0xEF,0xCF,0x47,0x77,0x37,0x87,0xFF,0xF9,0xF1,0xF7,0xF7,0xF 7,0xF0,0xF8},

{0xFF,0xFF,0xFF,0x7F,0x3F,0x9F,0x0F,0x07,0xFF,0xFD,0xFC,0xFC,0xF5,0xF 0,0xF0,0xFC},

{0xFF,0xBF,0x8F,0x87,0xA7,0x27,0x67,0xF7,0xF9,0xF1,0xF7,0xF7,0xF3,0xF 0,0xF8,0xFF},

{0xFF,0x7F,0x1F,0x0F,0xA7,0xB7,0x37,0x47,0xFF,0xF8,0xF0,0xF7,0xF7,0xF 3,0xF0,0xF8},

{0xFF,0xCF,0xC7,0xE7,0x67,0x27,0x8F,0xC7,0xFF,0xFF,0xF1,0xF0,0xF8,0xF F,0xFF,0xFF},

{0xFF,0xFF,0x7F,0x0F,0x07,0x77,0x37,0x87,0xFF,0xF0,0xF0,0xF6,0xF7,0xF 7,0xF0,0xF0},

{0xFF,0xFF,0x8F,0x07,0x77,0x77,0x07,0x0F,0xFF,0xF3,0xF3,0xF7,0xF7,0xF 1,0xF8,0xFE},

};

uchar code gonli[][16]={

{0xFF,0x0F,0xF7,0xFB,0xFB,0xFB,0xF7,0x0F,0xFF,0xF0,0xEF,0xDF,0xDF,0xD F,0xEF,0xF0},

{0xFF,0xFF,0xF7,0xF7,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0xF F,0xFF,0xFF},

{0xFF,0xCF,0xF7,0xFB,0xFB,0xFB,0x77,0x8F,0xFF,0xCF,0xD7,0xDB,0xDD,0xD E,0xDF,0xDF},

{0xFF,0xEF,0xF7,0x7B,0x7B,0x7B,0xB7,0xCF,0xFF,0xF7,0xEF,0xDF,0xDF,0xD F,0xEE,0xF1},

B,0xC0,0xFB},

{0xFF,0x03,0x7B,0xBB,0xBB,0xBB,0x7B,0xFB,0xFF,0xF6,0xEF,0xDF,0xDF,0xD F,0xEF,0xF0},

{0xFF,0x0F,0x77,0xBB,0xBB,0xBB,0x77,0xEF,0xFF,0xF0,0xEF,0xDF,0xDF,0xD F,0xEF,0xF0},

{0xFF,0xFB,0xFB,0xFB,0x7B,0x9B,0xEB,0xF3,0xFF,0xFF,0xFF,0xC3,0xFC,0xF F,0xFF,0xFF},

{0xFF,0xCF,0xB7,0x7B,0x7B,0x7B,0xB7,0xCF,0xFF,0xF1,0xEE,0xDF,0xDF,0xD F,0xEE,0xF1},

{0xFF,0x0F,0xF7,0xFB,0xFB,0xFB,0xF7,0x0F,0xFF,0xF7,0xEE,0xDD,0xDD,0xD D,0xEE,0xF0},

};

uchar code hanzi[][32]={

{0xBF,0xDF,0xEF,0xF3,0x1C,0xDD,0xDD,0xDD,0x01,0xDD,0xDD,0xDD,0xDD,0xF D,0xFF,0xFF,

0xFB,0xFB,0xFB,0xFB,0xF8,0xFB,0xFB,0xFB,0x00,0xFB,0xFB,0xFB,0xFB,0xFB ,0xFB,0xFF},

{0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xEE,0xEE,0xEE,0xEE,0xEE,0x00,0xFF,0xF F,0xFF,0xFF,

0xFF,0xBF,0xDF,0xEF,0xF3,0xFC,0xFE,0xFE,0xFE,0xDE,0xBE,0xC0,0xFF,0xFF ,0xFF,0xFF},

{0xFF,0xFF,0xFF,0x01,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0x01,0xFF,0xF F,0xFF,0xFF,

0xFF,0xFF,0xFF,0xC0,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xC0,0xFF,0xFF ,0xFF,0xFF},

{0xFF,0x03,0xBB,0xBB,0xBB,0x03,0xEF,0x6F,0xEF,0xEF,0xEF,0x00,0xEF,0xE F,0xEF,0xFF,

0xFF,0xF8,0xFB,0xFB,0xFB,0xF8,0xFF,0xFF,0xFC,0xBF,0x7F,0x80,0xFF,0xFF ,0xFF,0xFF},

{0x7F,0xBF,0xDF,0x67,0x78,0x7D,0x7F,0x7F,0x7C,0x7B,0x67,0xCF,0x9F,0x3 F,0xBF,0xFF,

0xFF,0x7F,0xBF,0xDF,0xEF,0xF0,0xFF,0xFF,0xDF,0xBF,0xC0,0xFF,0xFF,0xFF ,0xFF,0xFF},

{0xED,0xED,0x2D,0x01,0x6E,0xEE,0x3F,0xC7,0xEF,0xFF,0x00,0xFF,0xF7,0xE F,0x9F,0xFF,

0xFB,0xFC,0xFF,0x00,0xFF,0x7C,0x7F,0xBF,0xBF,0xDF,0xDC,0xEF,0xF7,0xFB ,0xFC,0xFF},

{0xFF,0xFF,0x03,0xF7,0xF7,0xF7,0xF7,0x00,0xF7,0xF7,0xF7,0xF7,0x03,0xF 7,0xFF,0xFF,

0xFF,0xFF,0xF8,0xFD,0xFD,0xFD,0xFD,0x00,0xFD,0xFD,0xFD,0xFD,0xF8,0xFF ,0xFF,0xFF},

{0xFF,0xDF,0xDF,0xDD,0xDD,0x1D,0xDD,0xDD,0xDD,0x1D,0xDD,0xDD,0xDD,0xD F,0xDF,0xFF

,

0xFF,0xBF,0xDF,0xEF,0xF3,0xFC,0xFF,0xFF,0xFF,0xC0,0xBF,0xBF,0xBF,0xBF ,0x8F,0xFF},

{0xFF,0xFF,0xFF,0x01,0xDD,0xDD,0xDD,0xDD,0xDD,0xDD,0xDD,0x01,0xFF,0xF F,0xFF,0xFF,

0xBF,0xBF,0xBF,0xB8,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xB8,0xBF,0xBF ,0xBF,0xFF},

{0xFB,0x9B,0xDB,0xDB,0xDB,0xD0,0x1B,0xDB,0xDB,0xDB,0xD0,0xDB,0xDB,0x9 B,0xDB,0xFF,

0xFF,0xFF,0x7E,0xBE,0xDE,0xE6,0xF8,0xFE,0xFE,0xBE,0x7E,0x80,0xFF,0xFF ,0xFF,0xFF},

{0xDF,0xDB,0xDB,0x1B,0xDB,0xDB,0xDB,0xDF,0xEF,0xEF,0x00,0xEF,0xEF,0x0 F,0xFF,0xFF,

0xF7,0xE3,0xF4,0xF7,0xF3,0xFA,0xB1,0xDB,0xEF,0xF3,0xFC,0xDF,0xBF,0xC0 ,0xFF,0xFF},

{0xFF,0x01,0xFD,0xF5,0x75,0x75,0x75,0x05,0x75,0x75,0x75,0xF5,0xFD,0x0 1,0xFF,0xFF,

0xFF,0x00,0xBF,0xB7,0xB7,0xB7,0xB7,0xB0,0xB7,0xB6,0xB1,0xB7,0xBF,0x00 ,0xFF,0xFF},

{0xFF,0xFF,0x03,0xBB,0xBB,0xBB,0xBB,0x3A,0x81,0x3B,0xBB,0xBB,0xBB,0xB B,0xBB,0xFF,

0xBF,0xCF,0xF0,0xBF,0xDF,0xEF,0xF3,0xFC,0xFF,0xFE,0xF9,0xE7,0xCF,0x9F ,0xDF,0xFF},

{0xFB,0xFB,0xBB,0xBB,0xBB,0xA0,0x3B,0xBB,0xBB,0xBB,0xA0,0xBB,0x3B,0xF B,0xFB,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xF7,0xEF,0xF0,0xFF ,0xFF,0xFF},

{0xFF,0xFF,0xFF,0x01,0xFD,0xBD,0xB5,0xB5,0x81,0xB5,0xB5,0xBD,0xFD,0x0 1,0xFF,0xFF,

0x7F,0xBF,0xCF,0xF0,0xFF,0xFF,0xE0,0xF6,0xF6,0xF6,0xE0,0xBF,0x7F,0x80 ,0xFF,0xFF},

{0xFF,0xFF,0x7F,0xBF,0xCF,0xF1,0x7B,0xFF,0xFF,0xF1,0xEF,0x9F,0x3F,0x7 F,0x7F,0xFF,

0xFF,0xFE,0xDF,0x8F,0xD7,0xDB,0xDC,0xCE,0xEF,0xEF,0xEB,0x87,0xCF,0xFE ,0xFF,0xFF},

{0xFF,0xDF,0xE7,0xF7,0x77,0x17,0xE0,0x95,0x77,0xF7,0x77,0x37,0x57,0xE 3,0xF7,0xFF,

0xF7,0xFB,0xFD,0xBE,0x00,0xBF,0xDF,0xEF,0xFE,0xFD,0xF2,0xE7,0x8F,0xDF ,0xDF,0xFF},

{0x7F,0x3F,0x4F,0x73,0x78,0x7B,0x7B,0x03,0x7B,0x7B,0x7B,0x7B,0x7B,0x3 F,0x7F,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF ,0xFF,0xFF},

{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF ,0xFF,0xFF},

{0xFF,0xFF,0xFF,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF F,0xFF,0xFF,

0xFF,0xFF,0xFF,0xA0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF ,0xFF,0xFF},

{0xFF,0x07,0xFE,0xF9,0xFF,0x0F,0x6D,0x6D,0x6D,0x6D,0x0D,0xFD,0xFD,0x0 1,0xFF,0xFF,

0xFF,0x00,0xFF,0xFF,0xFF,0xF8,0xFB,0xFB,0xFB,0xFB,0xF8,0xBF,0x7F,0x80 ,0xFF,0xFF},

{0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0xC0,0x3D,0xFF,0xFF,0xFF,0xFF,0xF F,0xFF,0xFF,

0xFF,0xBF,0xDF,0xEF,0xF3,0xFC,0xFF,0xFF,0xFE,0xF9,0xF3,0xE7,0xCF,0x9F ,0xDF,0xFF},

{0xEF,0xEF,0x2F,0xC0,0xEF,0x6F,0x8F,0xF7,0xF7,0xF7,0xF7,0xF7,0xF7,0x0 7,0xFF,0xFF,

0x7F,0xBE,0xDD,0xEB,0xF3,0xEC,0x9F,0xDF,0xDE,0xDE,0xDE,0xDE,0xDE,0x80 ,0xFF,0xFF},

{0xDF,0xDF,0xDF,0xDF,0x1F,0xC7,0xD8,0xDF,0xDF,0xDF,0x1F,0xDF,0xDF,0xD F,0xDF,0xFF,

0x7F,0x7F,0xBF,0xBE,0xDD,0xDD,0xEB,0xF3,0xF3,0xF4,0xEF,0xCF,0x1F,0xBF ,0xFF,0xFF},

{0xFF,0xFF,0x3F,0xA0,0xAA,0xAA,0xAA,0x00,0xAA,0x2A,0xAA,0xAA,0xA0,0x3 F,0xFF,0xFF,

0xFF,0xBF,0x88,0xFF,0xC6,0xBE,0xBE,0xB6,0xAE,0xBE,0xBC,0x9F,0xFB,0xE8 ,0x9F,0xFF},

{0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xF F,0xFF,0xFF,

0xFF,0x7F,0xBF,0xCF,0xF3,0xFC,0xFF,0xFF,0xFF,0xC0,0xBF,0xBF,0xBF,0xBF ,0x87,0xFF},

{0xEF,0xEF,0xEB,0x2B,0xA3,0xAB,0xAA,0x29,0xAB,0xAB,0xA3,0x2B,0xEB,0xE F,0xEF,0xFF,

0xBF,0xBF,0xAF,0xA8,0xAA,0xAA,0xAA,0x80,0xAA,0xAA,0xAA,0xA8,0xAF,0xBF ,0xBF,0xFF},

{0xFF,0xFD,0xFD,0x3D,0xFD,0xFD,0xFD,0xFD,0x01,0x7D,0x7D,0x7D,0x7D,0x7 D,0xFD,0xFF,

0xDF,0xDF,0xDF,0xC0,0xDF,0xDF,0xDF,0xDF,0xC0,0xDF,0xDF,0xDF,0xDF,0xDF ,0xDF,0xFF},

{0xFF,0x01,0xED,0xED,0x01,0xFF,0x0B,0xE4,0x4B,0xA5,0x4E,0xEB,0xE5,0x0 E,0xFF,0xFF,

0x7F,0x80,0xFE,0x7E,0x00,0xFF,0x00,0xAA,0xFE,0x00,0xAA,0xFE,0x80,0x7E ,0x9F,0xFF},

{0xBF,0xBF,0xBB,0xAB,0xAB,0x2B,0x8B,0xA0,0xAB,0xAB,0x2B,0xAB,0xAB,0xB

0xFB,0xFB,0xFD,0xFD,0x80,0xB5,0xB5,0xB5,0xB5,0xB5,0x81,0xFE,0xFC,0xF9 ,0xFD,0xFF},

{0xAF,0x6E,0xE9,0xEF,0x0F,0xEF,0xBF,0xA1,0xAF,0xAF,0x20,0xAF,0xAF,0xA 1,0xBF,0xFF,

0xEF,0xEC,0xEF,0xF0,0xF7,0xF7,0x00,0xFE,0xFE,0xC0,0xFE,0xC0,0xBE,0x7E ,0x80,0xFF},

{0xDB,0xDB,0x1B,0x03,0x5D,0xDD,0xDD,0x7F,0x8F,0xFF,0x00,0xBF,0xDF,0xE 7,0xFF,0xFF,

0xFD,0xFE,0xFF,0x00,0xFF,0x7C,0xBF,0xDF,0xE7,0xF8,0xFE,0xF9,0xE7,0x1F ,0xBF,0xFF},

{0xFF,0xFF,0x07,0x07,0xD6,0xD0,0xD1,0x05,0x07,0xD3,0xD0,0xD4,0x05,0x0 7,0xFF,0xFF,

0xF7,0xF7,0xF4,0xF4,0xF6,0xF6,0xF6,0x00,0x00,0xF6,0xF6,0xF6,0xF4,0xF4 ,0xF7,0xF7},

{0xFF,0xFF,0xFF,0x01,0x01,0xEF,0xEF,0xEF,0xEF,0xE0,0xE0,0xEF,0xEF,0xE 7,0xE7,0xEF,

0x7F,0x3F,0x8F,0xC0,0xF0,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x00,0x00,0xFF ,0xFF,0xFF},

{0xF7,0xF7,0x37,0x00,0x00,0x37,0x77,0xF7,0x01,0x01,0xFD,0xFD,0x01,0x0 1,0xFF,0xFF,

0xFB,0xF8,0xFC,0x00,0x00,0xBE,0x8E,0xC3,0xF0,0xFC,0xFF,0xFF,0xC0,0x80 ,0x87,0x87},

{0xBF,0x8F,0xCF,0xED,0xA1,0xA3,0xAB,0xAE,0xA0,0x21,0x2B,0xA7,0xA0,0x8 8,0xCD,0xEF,

0xFF,0xFD,0xFD,0xFD,0xFD,0xFD,0xBD,0x3D,0x00,0x80,0xFD,0xFD,0xFD,0xFD ,0xFD,0xFD},

{0xEF,0x67,0x33,0x00,0xC4,0xAD,0xB7,0xB7,0xB7,0x80,0x80,0xB7,0xB7,0xB 7,0xBF,0xFF,

0xFE,0xFE,0x00,0x00,0x3F,0x9F,0xC3,0xC3,0x9F,0x80,0x80,0xBB,0xBB,0xBB ,0xBF,0xBF},};

uchar code xinqi[][32]={

{0xFF,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x3 F,0x7F,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF ,0xFF,0xFF},

{0xFF,0xFF,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xF9,0xFB,0xF F,0xFF,0xFF,

0xFF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xE7 ,0xEF,0xFF},

{0xFF,0xFB,0x7B,0x7B,0x7B,0x7B,0x7B,0x7B,0x7B,0x7B,0x7B,0x7B,0x7B,0xF B,0xFF,0xFF,

0xFF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF ,0xDF,0xFF},

{0xFF,0x01,0xFD,0xFD,0xFD,0x01,0xFD,0xFD,0x01,0xFD,0xFD,0xFD,0xFD,0x0 1,0xFF,0xFF,

0xFF,0x80,0xD7,0xDB,0xDC,0xDF,0xDF,0xDF,0xDE,0xDD,0xDD,0xDD,0xDD,0x80 ,0xFF,0xFF},

{0xFF,0xFD,0x7D,0x7D,0x7D,0x7D,0x01,0x7D,0x7D,0x7D,0x3D,0x7D,0xFD,0xF F,0xFF,0xFF,

0xDF,0xDF,0xDF,0xDF,0xDF,0xC0,0xDF,0xDF,0xDF,0xDF,0xC0,0xDF,0xDF,0xCF ,0xDF,0xFF},

{0xEF,0xEF,0xEF,0xEF,0xEF,0x6E,0xED,0xE1,0x6B,0xEF,0xEF,0xEF,0xEF,0xE F,0xEF,0xFF,

0xFF,0xBF,0xDF,0xEF,0xF3,0xFC,0xFE,0xFF,0xFF,0xFE,0xFD,0xF3,0x87,0xCF ,0xFF,0xFF},

{0xFF,0xFF,0xFF,0x01,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0xBD,0x01,0xFF,0xF F,0xFF,0xFF,

0xFF,0xFF,0xFF,0xC0,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xC0,0xFF,0xFF ,0xFF,0xFF},

};

uchar code yinli[][32]={

{0xBF,0xBF,0xBF,0xBF,0xBF,0xBF,0xBF,0x00,0xBF,0xBF,0xBF,0xBF,0xBF,0xB F,0xBF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF ,0xFF,0xFF},

{0xFF,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x7F,0x3 F,0x7F,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF ,0xFF,0xFF},

{0xFF,0xFF,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xF9,0xFB,0xF F,0xFF,0xFF,

0xFF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xEF,0xE7 ,0xEF,0xFF},

{0xFF,0xFB,0x7B,0x7B,0x7B,0x7B,0x7B,0x7B,0x7B,0x7B,0x7B,0x7B,0x7B,0xF B,0xFF,0xFF,

0xFF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF,0xDF ,0xDF,0xFF},

{0xFF,0x01,0xFD,0xFD,0xFD,0x01,0xFD,0xFD,0x01,0xFD,0xFD,0xFD,0xFD,0x0 1,0xFF,0xFF,

0xFF,0x80,0xD7,0xDB,0xDC,0xDF,0xDF,0xDF,0xDE,0xDD,0xDD,0xDD,0xDD,0x80 ,0xFF,0xFF},

{0xFF,0xFD,0x7D,0x7D,0x7D,0x7D,0x01,0x7D,0x7D,0x7D,0x3D,0x7D,0xFD,0xF F,0xFF,0xFF,

0xDF,0xDF,0xDF,0xDF,0xDF,0xC0,0xDF,0xDF,0xDF,0xDF,0xC0,0xDF,0xDF,0xCF ,0xDF,0xFF},

{0xEF,0xEF,0xEF,0xEF,0xEF,0x6E,0xED,0xE1,0x6B,0xEF,0xEF,0xEF,0xEF,0xE F,0xEF,0xFF,

0xFF,0xBF,0xDF,0xEF,0xF3,0xFC,0xFE,0xFF,0xFF,0xFE,0xFD,0xF3,0x87,0xCF ,0xFF,0xFF},

{0xFF,0xBF,0xBF,0xBF,0xBF,0xBF,0xBF,0x01,0xDF,0xDF,0xDF,0xDF,0xDF,0xD F,0xDF,0xFF,

0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0xBF,0xBF,0xBF,0xBF,0xBF,0xC7 ,0xFF,0xFF},

{0xFF,0xFF,0xFF,0xFF,0x7F,0x83,0xF7,0xFF,0xFF,0x81,0x7B,0xFF,0xFF,0xF F,0xFF,0xFF,

0xDF,0xEF,0xF7,0xF9,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xF9,0xE7,0xCF ,0xEF,0xFF},

{0xFF,0xEF,0xEF,0xEF,0xEF,0x6F,0x80,0xEF,0xEF,0xEF,0x07,0xEF,0xFF,0xF F,0xFF,0xFF,

0xFF,0xBF,0xDF,0xEF,0xF3,0xFC,0xFF,0xFF,0xFF,0xFF,0x80,0xBF,0xBF,0x87 ,0xDF,0xFF},

{0xFF,0xF7,0x77,0x36,0xD1,0x67,0xB7,0xFF,0xF7,0xF7,0x07,0xF7,0xF7,0x0 3,0xF7,0xFF,

0xFD,0xFE,0xFF,0x80,0xFE,0xFD,0xBB,0xDF,0xEF,0xF3,0xFC,0xDF,0xBF,0xC0 ,0xFF,0xFF},

{0xDF,0xDF,0xDF,0xDF,0x00,0xDF,0xDF,0xDF,0xDF,0xDF,0x00,0xDF,0xDF,0xD F,0xDF,0xFF,

0xFF,0xFF,0xFF,0xFF,0x80,0xDF,0xDF,0xDF,0xDF,0xDF,0x80,0xFF,0xFF,0xFF ,0xFF,0xFF},

};

void Delay(uint a)

{

uchar i;

while(a--)

for(i=0;i<125;i++);

}

void Lcd_Display_On()

{

port=0x3f;

rs=0;

rw=0;

e=1;

e=0;

}

void Lcd_Display_Off()

{

port=0x3e;

rs=0;

rw=0;

e=1;

e=0;

}

void Lcd_Set_X(uchar x)

{

port=0xb8|x;

rs=0;

rw=0;

e=1;

e=0;

}

void Lcd_Set_Y(uchar y)

{

port=0x40|y;

rs=0;

rw=0;

e=1;

e=0;

}

void Lcd_Set_X_Y(uchar x, uchar y)

{

if( y<64 )

{ cs1=1; cs2=0; Lcd_Set_Y( y ); }

else

{ cs1=0; cs2=1; Lcd_Set_Y( y-64 ); }

Lcd_Set_X( x);

}

void Lcd_Write_Command(uchar temp)

{

port=temp;

rs=0;

rw=0;

e=1;

e=0;

}

void Lcd_Write_Byte(uchar temp)

{

port=temp;

rs=1;

rw=0;

e=1;

e=0;

}

void showword816( bit bit_flag, uchar x, uchar y, uchar code *point ) {

uchar i , j,temp;

temp=y;

if( bit_flag )

{

for( i=0; i<2; i++ )

{

x+=i;

y=temp;

for( j=0;j<8;j++ )

{

Lcd_Set_X_Y( x, y ); y++;

Lcd_Write_Byte( point[ i*8 + j] );

}

}

}

else

{

for( i = 0; i < 2; i++ )

{

x += i;

y = temp;

for( j = 0; j < 8; j++ )

{

Lcd_Set_X_Y( x, y ); y++;

Lcd_Write_Byte( ~point[ i * 8 + j ] );

}

}

}

}

void showword1616( bit bit_flag, uchar x, uchar y, uchar code *point ) {

uchar i,j,temp ;

temp=y;

if( bit_flag )

{

for( i=0; i<2; i++ )

{

x+=i;

y=temp;

for( j=0;j<16;j++ )

{

Lcd_Set_X_Y( x, y ); y++;

Lcd_Write_Byte( point[ i*16 + j] );

}

}

else

{

for( i = 0; i<2; i++ )

{

x += i;

y = temp;

for( j = 0; j < 16; j++ )

{

Lcd_Set_X_Y( x, y ); y++;

Lcd_Write_Byte( ~ point[ i * 16 + j ] );

}

}

}

}

void Lcd_Clear()

{

uchar i,j;

cs1=1;cs2=1;

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

{

Lcd_Set_X( i );

Lcd_Set_Y( 0 );

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

Lcd_Write_Byte(0x00);

}

}

void Lcd_init()

{

Lcd_Display_Off();

Lcd_Write_Command(0xb8);

Lcd_Write_Command(0x40);

Lcd_Write_Command(0xc0);

Lcd_Clear();

Lcd_Display_On();

}

uchar leapyear(uint year)

{

return(year%4==0&&year%100!=0)||(year%400==0); }

void refweek()

{

uint i,d,w = 5;

for (i=2000;i<2000+year;i++)

d = leapyear(i)? 366:365;

w = (w+d)%7;

}

d = 0;

for (i=0;i

d += monthcode[i];

d += day;

week = (w+d+6)%7;

}

bit get_moon_day(uchar month_p,uint table_addr) {

uchar temp;

switch (month_p)

{

case 1:{temp=year_code[table_addr]&0x08;

if (temp==0)return(0);else return(1);}

case 2:{temp=year_code[table_addr]&0x04;

if (temp==0)return(0);else return(1);}

case 3:{temp=year_code[table_addr]&0x02;

if (temp==0)return(0);else return(1);}

case 4:{temp=year_code[table_addr]&0x01;

if (temp==0)return(0);else return(1);}

case 5:{temp=year_code[table_addr+1]&0x80;

if (temp==0) return(0);else return(1);}

case 6:{temp=year_code[table_addr+1]&0x40;

if (temp==0)return(0);else return(1);}

case 7:{temp=year_code[table_addr+1]&0x20;

if (temp==0)return(0);else return(1);}

case 8:{temp=year_code[table_addr+1]&0x10;

if (temp==0)return(0);else return(1);}

case 9:{temp=year_code[table_addr+1]&0x08;

if (temp==0)return(0);else return(1);}

case 10:{temp=year_code[table_addr+1]&0x04;

if (temp==0)return(0);else return(1);}

case 11:{temp=year_code[table_addr+1]&0x02;

if (temp==0)return(0);else return(1);}

case 12:{temp=year_code[table_addr+1]&0x01;

if (temp==0)return(0);else return(1);}

case 13:{temp=year_code[table_addr+2]&0x80;

if (temp==0)return(0);else return(1);}

}

}

void Conversion(uchar year,uchar month,uchar day)

uchar temp1,temp2,temp3,month_p;

uint temp4,table_addr;

bit flag_y;

table_addr=(year-1)*3;

temp1=year_code[table_addr+2]&0x60;

temp1=_cror_(temp1,5);

temp2=year_code[table_addr+2]&0x1f;

if(temp1==0x1)

{

temp3=temp2-1;

}

else

{

temp3=temp2+0x1f-1;

}

if (month<10)

{

temp4=day_code1[month-1]+day-1;

}

else

{

temp4=day_code2[month-10]+day-1;

}

if ((month>0x2)&&(year%0x4==0))

{

temp4+=1;

}

if (temp4>=temp3)

{

temp4-=temp3;

month=0x1;

month_p=0x1;

flag_y=0;

if(get_moon_day(month_p,table_addr)==0)temp1=0x1d; else temp1=0x1e;

temp2=year_code[table_addr]/16;

while(temp4>=temp1)

{

temp4-=temp1;

month_p+=1;

if(month==temp2)

{

flag_y=~flag_y;

if(flag_y==0)month+=1;

}

else month+=1;

if(get_moon_day(month_p,table_addr)==0)temp1=0x1d; else temp1=0x1e;

}

day=temp4+1;

}

else

{

temp3-=temp4;

year-=1;

table_addr-=0x3;

month=0xc;

temp2=year_code[table_addr]/16;

if (temp2==0)month_p=0xc;

else month_p=0xd;

flag_y=0;

if(get_moon_day(month_p,table_addr)==0)temp1=0x1d; else temp1=0x1e;

while(temp3>temp1)

{

temp3-=temp1;

month_p-=1;

if(flag_y==0)month-=1;

if(month==temp2)flag_y=~flag_y;

if(get_moon_day(month_p,table_addr)==0)temp1=0x1d; else temp1=0x1e;

}

day=temp1-temp3+1;

}

yyear = year;

ymonth = month;

yday = day;

flagnl = 1;

}

void mcuinit()

{

flagt = 0;

flagjr = 1;

flagnl = 0;

year = 11;

month = 3;

day = 10;

hour = 12;

min = 0;

sec = 0;

TMOD = 0X01;

TH0 = (65536-TT)/256;

TL0 = (65536-TT)%256;

EA = 1;

ET0 = 1;

EX0 = 1;

IT0 = 1;

TR0 = 1;

}

void displayday()

{

if ((ymonth==1 && yday==1)||(ymonth==5 && yday==5)||(ymonth==8 && yday==15))

{

if (ymonth==1 && yday==1)

{

one = 29;

two = 18;

thr = 13;

fou = 18;

fiv = 19;

}

if (ymonth==5 && yday==5)

{

one = 30;

two = 18;

thr = 17;

fou = 18;

fiv = 13;

}

if (ymonth==8 && yday==15)

{

one = 6;

two = 18;

thr = 31;

fou = 18;

fiv = 13;

}

}

else

{

((month==1&&day==1)||(month==5&&day==1)||(month==6&&day==1)||(month== 4&&day==1)||(m

onth==3&&day==8)||(month==10&&day==1))

{

if (month==1&&day==1)

{

one = 7;

two = 18;

thr = 8;

fou = 18;

fiv = 13;

}

if (month==3&&day==8)

{

one = 22;

two = 18;

thr = 23;

fou = 18;

fiv = 13;

}

if (month==4&&day==1)

{

one = 24;

two = 18;

thr = 21;

fou = 18;

fiv = 13;

}

if (month==5&&day==1)

{

one = 9;

two = 18;

thr = 10;

fou = 18;

fiv = 13;

}

if (month==6&&day==1)

{

one = 25;

two = 18;

thr = 26;

fou = 18;

fiv = 13;

if (month==10&&day==1)

{

one = 11;

two = 18;

thr = 12;

fou = 18;

fiv = 13;

}

}

else

{

one = 32;

two = 33;

thr = 34;

fou = 35;

fiv = 36;

}

}

flagjr = 0;

}

void display()

{

if (flagjr == 1)

{

Conversion(year,month,day); displayday();

}

refweek();

if (flagt == 1)

{

showword816(0,0,32,shuzi[year/10]); showword816(0,0,40,shuzi[year%10]); }

else

{

showword816(1,0,32,shuzi[year/10]); showword816(1,0,40,shuzi[year%10]); }

if (flagt == 2)

{

showword816(0,0,64,shuzi[month/10]); showword816(0,0,72,shuzi[month%10]); }

基于单片机电子万年历的毕业设计说明

单片机课程设计报告 电子万年历设计 姓名:建强 学号: 专业班级: 08电气(2)班指导老师:吴永 所在学院:科技学院 2011年6月30日

摘要 随着科技的快速发展,时间的流逝,至从观太阳、摆钟到现在电子钟,人类不断研究,不断创新纪录。美国DALLAS公司推出的具有涓细电流充电能的低功耗实时时钟电路DS1302。它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准等功能。该电路采用AT89S52单片机作为核心,功耗小,能在3V的低压工作,电压可选用3~5V电压供电。 综上所述此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。 本设计是基于51系列的单片机进行的电子万年历设计,可以显示年月日时分秒及周信息,具有可调整日期和时间功能。在设计的同时对单片机的理论基础和外围扩展知识进行了比较全面准备。在硬件与软件设计时,没有良好的基础知识和实践经验会受到很大限制,每项功能实现时需要那种硬件,程序该如何编写,算法如何实现等,没有一定的基础就不可能很好的实现。 具体实现功能: (1)显示年月日时分秒及星期信息 (2)具有可调整日期和时间功能 (3)与即时时间同步

目录 1方案论证 (3) 1.1单片机芯片的选择方案和论证 (3) 1.2显示模块选择方案和论证 (3) 1.3时钟芯片的选择方案和论证 (4) 1.4电路设计最终方案决定 (4) 2系统的硬件设计与实现 (5) 2.1电路设计框图 (5) 2.2系统硬件概述 (5) 2.3主要单元电路的设计 (5) 2.3.1单片机主控制模块的设计 (5) 2.3.2时钟电路模块的设计 (6) 2.3.3电路原理及说明 (7) 2.3.4显示模块的设计 (8) 3系统的软件设计 (9) 3.1程序流程框图 (9) 4测试与结果分析 (11) 4.1硬件测试 (10) 4.2软件测试 (10) 4.3测试结果分析与结论 (10) 4.3.1 测试结果分析 (10) 4.3.2 测试结论 (10) 5prodeus软件仿真........................................ ..........错误!未定义书签。 5.1Proteus ISIS简介 (12) 5.2Proteus运行流程 (13) 5.3Proteus功能仿真 (13) 6课程设计总结与体会.......................................... .....错误!未定义书签。 参考文献...........................................................错误!未定义书签。 附录一:系统电路图.................................................错误!未定义书签。 附录二:系统程序...................................................错误!未定义书签。

基于51单片机的万年历的设计

单片机课程实训SCM PRACTICAL TRAINING

目录 第一部分课程设计任务书 (1) 一、课程设计题目 (1) 二、课程设计时间 (1) 三、实训提交方式 (1) 四、设计要求 (1) 第二部分课程设计报告 (2) 一、单片机发展概况 (2) 二、MCS-51单片机系统简介 (2) 三、设计思想 (3) 四、硬件电路设计 (3) 1. 总体设计 (3) 2. 晶振电路 (4) 3. 复位电路 (4) 4. DS1302时钟电路 (5) 5. 温度采集系统电路 (5) 6. 按键调整电路 (6) 7. 闹钟提示电路 (6) 五、软件设计框图 (7) 六、程序源代码 (8) 1. 主程序 (8) 2. 温度控制程序 (11) 3. 日历设置程序 (13) 4. 时钟控制程序 (18) 5. 显示设置程序 (20) 七、结束语 (23) 八、课程设计小组分工 (23) 九、参考文献 (23)

第一部分课程设计任务书 一、课程设计题目 用中小规模集成芯片设计制作万年历。 二、课程设计时间 五天 三、实训提交方式 提交实训设计报告电子版与纸质版 四、设计要求 (1)显示年、月、日、时、分、秒和星期,并有相应的农历显示。(2)可通过键盘自动调整时间。 (3)具有闹钟功能。 (4)能够显示环境温度,误差小于±1℃ (5)计时精度:月误差小于20秒。

第二部分课程设计报告 一、单片机发展概况 单片机诞生于20世纪70年代末,它的发展史大致可分为三个阶段: 第一阶段(1976-1978):初级单片机微处理阶段。该时期的单片机具有 8 位CPU,并行 I/O 端口、8 位时序同步计数器,寻址范围 4KB,但是没有串行口。 第二阶段(1978-1982):高性能单片机微机处理阶段,该时期的单片机具有I/O 串行端口,有多级中断处理系统,15 位时序同步技术器,RAM、ROM 容量加大,寻址范围可达 64KB。 第三阶段(1982-至今)位单片机微处理改良型及 16 位单片机微处理阶段民用电子产品、计算机系统中的部件控制器、智能仪器仪表、工业测控、网络与通信的职能接口、军工领域、办公自动化、集散控制系统、并行多机处理系统和局域网络系统。 二、MCS-51单片机系统简介 MCS-51系列单片机产品都是以Intel公司最早的典型产品8051为核心构成的。MCS-51单片机由CPU 、RAM 、ROM 、I/O接口、定时器/计数器、中断系统、内部总线等部件组成。8051单片机的基本性能有: ◆8位CPU; ◆布尔代数处理器,具有位寻址能力; ◆128B内部RAM,21个专用寄存器; ◆4KB内部掩膜ROM; ◆2个16位可编程二进制加1定时器/计数器; ◆32个(4×8位)双向可独立寻址的I/O口; ◆1个全双工UART(异步串行通信口); ◆5个中断源,两级中断结构; ◆片内振荡器及时钟电路,晶振频率为1.2MHz~12MHz; ◆外部程序/数据存储器寻址空间均为64KB; ◆111条指令,大部分为单字节指令; ◆单一+5V电源供电,双列直插40引脚DIP封装。

单片机万年历C语言程序完整

#include #include //#include "LCD1602.h" //#include "DS1302.h" #define uint unsigned int #define uchar unsigned char sbit DS1302_CLK = P1^7; //实时时钟时钟线引脚 sbit DS1302_IO = P1^6; //实时时钟数据线引脚 sbit DS1302_RST = P1^5; //实时时钟复位线引脚 sbit ACC0 = ACC^0; sbit ACC7 = ACC^7; char hide_sec,hide_min,hide_hour,hide_day,hide_week,hide_month,hide_year; //秒,分,时到日,月,年位闪的计数 sbit Set = P2^0; //模式切换键 sbit Up = P2^1; //加法按钮 sbit Down = P2^2; //减法按钮 sbit out = P2^3; //立刻跳出调整模式按钮 sbit DQ = P3^0; char done,count,temp,flag,up_flag,down_flag,t_value; uchar TempBuffer[5],week_value[2]; void show_time(); //液晶显示程序 /***********1602液晶显示部分子程序****************/ //Port Definitions********************************************************** sbit LcdRs = P2^5; sbit LcdRw = P2^6; sbit LcdEn = P2^7; sfr DBPort = 0x80; //P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口 //内部等待函数************************************************************** unsigned char LCD_Wait(void) { LcdRs=0; LcdRw=1; _nop_(); LcdEn=1; _nop_(); LcdEn=0; return DBPort; } //向LCD写入命令或数据************************************** #define LCD_COMMAND 0 // Command

基于单片机的数字电子钟万年历课程设计

汇编语言 课程设计报告书 一.课程设计的题目和内容 用汇编语言编写一个万年历程序系统,该系统要有进入系统的封面,要有验证用户名和密码的功能,能正确显示万年历,在推出系统的时候,要有封底。 二.系统设计及功能要求 1.系统封面设计 内容:题目名称,设计日期,设计者姓名。 要求:具有动感,如题目名称移动;字体具有立体感。可插入一些图画,如学校的校徽图。 2.输入画面设计 内容及要求:①密码及口令:输入,核查及修改功能。②年份:输入及判断功能。如:年份值是否为4位整数,不为4位,提示用户重输。 3.日历计算功能设计 ①求某年某月某日是星期几的子功能。(要求编成子程序) 算法:s=(y-1)+(y-1)/4-(y-1)/100+(y-1)/400+c (其中:y为年份;c为某月某日是这一年的第几天,由②求出;s为总天数。“/”为整除。) n=s%7 (其中:n为星期数;“%”为求余数)

②求某月某日是这一年的第几天的子功能。(要求编成子程序) 二月份是否为平年(28天)或闰年(29天)的算法: y/400=0∨y/4=0∧y/100≠0 (y为年份;“/”整除),则y为以闰年;否则,y为平年。 根据①②可求出一年中的日历。 4.日历输出功能设计。 ①格式及显示设计 显示要求:设置显示滚动区;在该区中每次显示4个月的日历(并列排列)。 ②日历打印设计:将日历按年存入磁盘不同的文件中保存,供打印或 再次显示使用。 1.程序系统总体功能模块调用图及模块功能说明 封面程序的功能是显示欢迎信息,并且显示制 作人的信息的;验证用户名和密码的程序是验证用 户是否是合法的用户的,该程序要有容错的功能; 万年历程序是主程序,该程序的功能是通过用户输 入年和月,来查询日历的,并且该程序还可以判断 输入的年份是平年还是闰年。封底程序是用来显示 用户退出万年历系统的时候,一个感谢用户使用万 年历的界面的。

51单片机万年历毕业设计论文

专科毕业设计(论文) 题目51单片机电子万年历论文 51单片机电子万年历论文 摘要: 电子万年历是一种非常广泛日常计时工具,对现代社会越来越流行。它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准等功能。该电路采用AT89S52单片机作为核心,功耗小,能在3V的低压工作,电压可选用3~5V电压供电。 本设计是基于51系列的单片机进行的电子万年历设计,可以显示年月日时分秒及周信息,具有可调整日期和时间功能。在设计的同时对单片机的理论基础和外围扩展知识进行了比较全面准备。在硬件与软件设计时,没有良好的基础知识和实践经验会受到很大限制,每项功能实现时需要那种硬件,程序该如何编写,算法如何实现等,没有一定的基础就不可能很好的实现。在编写程序过程中发现

以现有的相关知识要独自完成编写任务困难重重,在老师和同学的帮助下才完成 了程序部分的编写。 万年历的设计过程在硬件与软件方面进行同步设计。硬件部分主要由AT89C52单片机,LED显示电路,以及调时按键电路等组成。在单片机的选择上本人使用了AT89C52单片机,该单片机适合于许多较为复杂控制应用场合。显示器使用2片7SEG-MPX8-CA和一片7SEG-MPX4-CA。7SEG-MPX8-CA是一种八个共阳二极管显示器,7SEG-MPX4-CA是一种四个共阳二极管显示器。为了能更轻松的控制这三片显示器,本人使用了3片74HC164来驱动。74HC164 是 8 位边沿触发式移位寄存器,串行输入数据,然后并行输出。软件方面主要包括日历程序、时间调整程序,公历转阴历程序,显示程序等。程序采用汇编语言编写,以便更简单地实现调整时间及阴历显示功能。所有程序编写完成后,在wave软件中进行调试,确定没有问题后,在Proteus软件中嵌入单片机内进行仿真。最后总在老师同学的帮助以及自己的努力下完成了此次电子万年历的设计。 关键词: 时钟电钟;DS1302;DS18B20;动态扫描;单片机 Abstract E-calendar day time is a very wide range of tools, increasingly popular in modern society. It can be year, month, day, Sunday, hours, minutes, seconds for time, but also has a leap year compensation to a variety of functions, and the DS1302's long life, small error. For the digital electronic calendar using an intuitive digital display can simultaneously display year, month, day, Sunday, hours, minutes, seconds, and temperature and other information, but also a time-calibration and other functions. The circuit uses AT89S52 microcontroller as the core, power consumption, low-voltage work in 3V, the voltage can choose 3 ~ 5V voltage supply. The design is based on 51 series of microcontrollers to the design of electronic calendar, you can display date information on when the minutes and seconds, and weeks, with adjustable date and time functions. At the same time in the design of the theoretical basis of the MCU and peripheral expansion of knowledge of the more comprehensive preparation. The hardware and software design, there is no good basic knowledge and practical experience will be greatly limited, each feature is required to achieve the kind of hardware, procedures, how to write, how to implement such algorithms, there is no certain foundation can not be good implementation. Found during the preparation process to the existing knowledge to complete the preparation of the task alone difficult, In the help of teachers and students to complete the program part of the preparation. Calendar of the design process in hardware and software to synchronize the design. Hardware mainly by the AT89C52 microcontroller, LED display circuit, and the tune composed of the circuit when the button. In the SCM choice I used the AT89C52 microcontroller, which is suitable for many of the more complex control applications. Monitor the use of two 7SEG-MPX8-CA and a 7SEG-MPX4-CA. 7SEG-MPX8-CA is a total

基于51单片机电子万年历设计

基于51单片机电子万年历设计 专业:机电设备维修与管理姓名:杜洪浦指导老师: 摘要电子万年历是一种非常广泛日常计时工具,对现代社会越来越流行。它可以对年、月、日、周日、时、分和秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒等信息,还具有时间校准等功能。该电路采用AT89S52单片机作为核心,功耗小,能在3V的低压工作,电压可选用3到5V电压供电。 万年历的设计过程在硬件与软件方面进行同步设计。硬件部分主要由AT89C52单片机,液晶显示电路,复位电路,时钟电路,稳压电路电路以及串口下载电路等组成。在单片机的选择上使用了AT89C52单片机,该单片机适合于许多较为复杂控制应用场合。显示器使用液晶LCD1602。软件方面主要包括日历程序、液晶驱动程序,显示程序等。程序采用汇编语言编写。所有程序编写完成后,在Keil C51软件中进行调试,确定没有问题后,在Proteus软件中嵌入单片机内进行仿真。 关键词时钟电钟,DS1302,液晶LCD1602,单片机 目录 1设计要求与方案论证 (2) 1.1 设计要求 (2) 1.2 系统基本方案选择和论证 (2) 1.2.1单片机芯片的选择方案和论证 (2) 1.2.2 显示模块选择方案和论证 (3) 1.2.3时钟芯片的选择方案和论证: (3) 1.3 电路设计最终方案决定 (3) 2系统的硬件设计与实现 (3) 2.1 电路设计框图 (4) 2.2 系统硬件概述 (4) 2.3 主要单元电路的设计 (4) 2.3.1单片机主控制模块的设计 (4)

单片机课程设计—万年历[1]

郑州轻工业学院 软件学院 单片机与接口技术课程设计总结报告 设计题目:电子万年历 学生姓名: 系别: 专业: 班级: 学号: 指导教师: 2011年12月16日

设计题目: 电子万年历 设计任务与要求: 1、显示年月日时分秒及星期信息 2、具有可调整日期和时间功能 3、增加闰年计算功能 方案比较: 方案一:系统分为主控制器模块、显示模块、按键开关模块,主控制模块采用 AT89C52单片机为控制中心,显示模块采用普通的共阴LED数码管,键输入采用中断实现 功能调整,计时使用AT89C52单片机自带的定时器功能,实现对时间、日期的操作,通 过按键盘开关实现对时间、日期的调整。 方案二:系统分为主控模块、时钟电路模块、按键扫描模块,LCD显示模块,电源 电路、复位电路、晶振电路等模块。主控模块采用AT89C52单片机,按键模块用四个按键,用于调整时间,显示模块采用LCD1602,时钟电路模块采用DS1302时钟芯片实现对 时间、日期的操作。 两个方案工作原理大致相同,只有显示模块和时钟电路不同。LED数码管价格适中,对于数字显示效果较好,而且使用单片机的端口也较少; LCD1602液晶显示屏,显示功 能强大,可以显示大量文字、图形,显示多样性,清晰可见,价格相对LED数码管来说 要昂贵些,但是基于本设计显示的东西较多,若采用LED数码管的话,所需数码管较多,而且不利于控制,因此选择LCD1602作为显示模块。DS1302是一款高性能的实时时钟芯片,以计时准确、接口简单、使用方便、工作电压范围宽和低功耗等优点,得到广泛的 应用,实时时钟有秒、分、时、星期、日、月和年,月小于31天时可以自动调整,并具 有闰年补偿功能,而且在掉电时能够在外部纽扣电池的供电下继续工作。单片机有定时 器的功能,但时间误差较大,且需要编写时钟程序,因此采用DS1302作为时钟电路。 对比以上方案,结合设计技术指标与要求我们选择了方案二进行设计。

基于单片机的万年历时钟设计【文献综述】

毕业设计开题报告 测控技术与仪器 基于单片机的万年历时钟设计 1前言部分 在当代繁忙的工作与生活中,时间与我们每一个人都有非常密切的关系,每个人都受到时间的影响。为了更好的利用我们自己的时间,需要一款灵活、稳定而又功能强大的自动定时控制系统,以规范本单位的作息时间或定时控制一些设备。目前,市面上出现的一些时控设备或功能单一,或使用烦琐,或价格昂贵,总有一些不尽如人意的地方[1]。我们必须对时间有一个度量,因此产生了钟表。钟表的发展是非常迅速的,17 世纪中叶, 由荷兰人C. Huygens来发明的第一个钟摆与以前任何计时装置相比, 摆钟的精确度提高了上百倍,而他随后发明的螺旋平衡弹簧,又进一步提高精度、减小体积, 导致了怀表的出现。然而再好的摆钟,其精度也只能达到每年误差不超过一秒[2]。1939年出现了利用石英晶体振动计时的石英钟, 每天误差只有千分之二秒, 到二次大战后精度提高到30 年才差一秒。很快, 测年的技术又推进到原子层面, 1948 年出现第一台原子钟, 1955年又发明了铯原子钟, 利用Cs133原子的共振频率计时,现在精度已经高达每天只差十亿分之一秒[2]。 从刚开始的机械式钟表到现在普遍用到的数字式钟表,即使现在钟表千奇百怪,但是它们都只是完成一种功能——计时功能,只是工作原理不同而已,在人们的使用过程中,逐渐发现了钟表的功能太单一,无法更大程度上的满足人们的需求。发展到现在人们广泛使用的万年历。万年历在家庭居室、学校、车站和广场使用越来越广泛,给人们的生活、学习、工作带来极大的方便[3]。电子万年历具有信息量大、直观清晰、经济实用等优点,正成为家庭、商场、公共场所等新的消费热点,具有重要的开发价值[4]。随着科技的不断发展,家用电子产品不但种类日益丰富,而且变得更加经济实用,,功能也越来越齐全,除了公历年月、日、时分秒、星期显示及闹铃外,又增加了农历、温度、24节气及l2生肖等显示。甚至还有语音报时等独特功能。再加上造型新颖别致,附带立体动感画面,

基于单片机的具有温度指示的数字万年历设计

目录 1 绪论 (1) 2 总体设计方案 (2) 2.1设计思路 (2) 2.2设计方案 (2) 2.3方案比较论证 (2) 2.4总体设计方框图 (3) 3 设计原理与分析 (4) 3.1硬件电路主要芯片的功能介绍 (4) 3.1.1单片机主控制器 (4) 3.1.2 温度传感器芯片 (5) 3.1.3 时钟芯片DS1302 (9) 3.1.4 16*2LCD液晶显示1602 (12) 4 硬件电路 (15) 4.1单片机主控制模块的设计 (15) 4.2时钟电路模块的设计 (15) 4.3温度采集模块设计 (16) 4.4功能按钮设计 (16) 4.516*2LCD1602液晶显示电路设计 (17) 4.6总体电路图 (17) 5 系统软件设计 (18) 5.1系统模块的功能分划分 (18) 5.2总体程序流程框图 (18) 5.3时钟调整时间的流程图 (20) 5.4修改键“UP”的功能流程图 (21) 5.5温度转换流程图 (22) 6 系统仿真测试 (23) 6.1KEIL的使用 (23) 6.2P ROTUES软件仿真 (28) 致谢 (31) 参考文献 (32) 附录一总体电路的PCB板图 (33) 附录二设计电路的仿真电路图 (34) 附录二万年历源程序 (35)

1 绪论 随着电子技术的迅速发展,特别是随大规模集成电路出现,给人类生活带来了根本性的改变。由其是单片机技术的应用产品已经走进了千家万户。其中电子万年历就是一个典型的例子。而且在万年历的基础上还可以扩展其它的实用功能,比如温度计。 万年历是采用数字电路实现对.时,分,秒.数字显示的计时装置,广泛用于个人家庭,车站,码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,但是所有这些,都是以钟表数字化为基础的。因此,研究万年历及扩大其应用,有着非常现实的意义。 市场上有许多电子钟的专用芯片如:LM8363、LM8365等,但它们功能单一,电路连接复杂,不便于调试制作。但是考虑到用单片机配合时钟芯片,可制成功能任意的电子钟,而且可以做到硬件简单、成本低廉。所以本系统采用了以广泛使用的单片机AT89S52技术为核心,配合时钟芯片DS1302。软硬件结合,使硬件部分大为简化,提高了系统稳定性,并采用LCD显示电路、键盘电路,使人机交互简便易行,此外结合音乐闹铃电路、看门狗和供电电路。本方案设计出的数字钟可以显示时间、设置闹铃功能之外。 本文首先描述系统硬件工作原理,并附以系统结构框图加以说明,着重介绍了本系统所应用的各硬件接口技术和各个接口模块的功能及工作过程,其次,详细阐述了程序的各个模块和实现过程。本设计以数字集成电路技术为基础,单片机技术为核心。本文编写的主导思想是软硬件相结合,以硬件为基础,来进行各功能模块的编写。 本设计中我重点研究实现了单片机+时钟芯片这种模式的万年历,从原理上对单片机和时钟芯片有了深一步的认识,这些基本功能完成后,在软件基础上实现时间显示。

单片机课程设计-万年历、数字时钟

单片机课程设计-万年历、数字时钟 采用MAX7221可以极大的节省I/O口线,同时DS1302时钟芯片可以提供精确的时间信息 汇编语言程序编写 DSRST BIT P1.0 DSCLK BIT P1.1 DSIO BIT P2.2 DIN BIT P2.5 CS BIT P2.6 CLK BIT P2.7 D158 EQU 30H D70 EQU 31H ADDRESS EQU 32h CONTENT EQU 33h COMMAND EQU 34h SECOND equ 35h MINITE equ 36h HOUR equ 37h ORG 0000H LJMP MAIN ORG 0030H MAIN: LCALL INTI7221 LCALL INTI1302

LOOP: LCALL READ1302 LCALL CONVERT LCALL DELAY LCALL DISPLAY LCALL DELAY SJMP LOOP ;DS1302初始化 INTI1302:MOV ADDRESS, #8EH MOV CONTENT, #00H LCALL SENT_BYTE MOV ADDRESS, #90H MOV CONTENT, #0A7H ;慢充电寄存器LCALL SENT_BYTE READ1302: MOV ADDRESS, #81h LCALL REV_BYTE MOV SECOND, A MOV ADDRESS, #83h LCALL REV_BYTE MOV MINITE, A MOV ADDRESS, #85h LCALL REV_BYTE MOV HOUR, A RET SENT_BYTE: CLR DSRST CLR C NOP CLR DSCLK NOP SETB DSRST MOV A, ADDRESS MOV R3, #2 MOV R2, #8 LOOP0: RRC A MOV DSIO, C SETB DSCLK NOP CLR DSCLK DJNZ R2, LOOP0 MOV A, CONTENT MOV R2, #8 DJNZ R3, LOOP0 CLR DSRST RET

基于51单片机温湿度检测+电子万年历的毕业设计论文

毕业设计论文 基于51单片机温湿度检测+电子万年历的设计

[摘要]:温湿度检测是生活生产中的重要的参数。本设计为基于51单片机的温湿度检测与控制系统,采用模块化、层次化设计。用新型的智能温湿度传感器SHT10主要实现对温度、湿度的检测,将温度湿度信号通过传感器进行信号的采集并转换成数字信号,再运用单片机STC89C52RC进行数据的分析和处理,为显示提供信号,显示部分采用LCD1602液晶显示所测温湿度值。系统电路简单、集成度高、工作稳定、调试方便、检测精度高,具有一定的实用价值。 [关键字]:STC89C52RC SHT10 LCD1602 按键指示灯蜂鸣器电子万年历Based on 51 single chip microcomputer temperature and humidity detection + electronic calendar design Abstract:Temperature and humidity detection is important parameters in the production of life. This design is based on 51 single chip microcomputer temperature and humidity detection and control system, adopting modular, hierarchical design. With new type of intelligent temperature and humidity sensor SHT10 main realization about the detection of temperature, humidity, temperature humidity signal acquisition is converted into digital signals through the sensor signal, using SCM STC89C52RC for data analysis and processing, provides the signal for display, display part adopts LCD1602 LCD display the measured temperature and humidity values. Simple circuit, high integration, work stability, convenient debugging, high detection precision, has certain practical value. Key words:STC89C52RC SHT10 LCD1602 key indicator light buzzer The electronic calendar

单片机课程设计--基于51单片机的万年历

单片机课程设计报告 万年历的设计

基于51单片机的万年历 摘要: 电子万年历是一种非常广泛日常计时工具,对现代社会越来越流行。它可以对年、月、日、周日、时、分、秒进行计时,使用寿命长,误差小。对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准等功能。该电路采用AT89S52单片机作为核心,功耗小,能在3V的低压工作,电压可选用3~5V电压供电。 本设计是基于51系列的单片机进行的电子万年历设计,可以显示年月日时分秒及周信息,具有可调整日期和时间功能。在设计的同时对单片机的理论基础和外围扩展知识进行了比较全面准备。万年历的设计过程在硬件与软件方面进行同步设计。硬件部分主要由AT89C52单片机,LCD显示电路,以及调时按键电路等组成。在单片机的选择上本人使用了AT89C52单片机,该单片机适合于许多较为复杂控制应用场合。显示器使用了1602液晶显示,并且使用蜂鸣器实现了整点报警的功能,温度测试的功能实现使用了DS18B20,并实现了温度过高或过低时的温度报警。 软件方面主要包括日历程序、时间调整程序,显示程序等。程序采用C语言编写。所有程序编写完成后,在KeilC51软件中进行调试,

确定没有问题后,在Proteus软件中嵌入单片机内进行仿真,并最终实现基本要求。 综上所述此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。 一、设计要求 基本要求: 1,8 个数码管上显示,显示时间的格式为(假如当前时间是19:32:20)“19-32-20”; 2,具有日历功能; ③时间可以通过按键调整。 发挥部分: ④具有闹钟功能(可以设定多个)。 二:总体设计 电路设计框图

基于单片机的电子万年历设计

(1)封面 (2)开题报告 (3)中文摘要及关键词 (4)英(外)文摘要及关键词 (5)正文 (6)(附录) (7)参考文献 (8)致谢 摘要 单片机应用技术飞速发展,纵观我们现在生活的各个领域,从导弹的导航装置,到飞机上各种仪表的控制,从计算机的网络通讯与数据传输,到工业自动化过程的实时控制和数据处理,以及我们生活中广泛使用的各种智能IC卡、电子宠物等,这些都离不开单片机。单片机是集CPU ,RAM ,ROM ,定时,计数和多种接口于一体的微控制器。它体积小,成本低,功能强,广泛应用于智能产业和工业自动化上。而51系列单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习,应用,从而达到学习、设计、开发软、硬的能力。 本文通过对一个基于单片机的能实现万年历功能电子时钟的设计,从而达到学习、了解单片机相关指令在各方面的应用。系统由主控制器AT89C51、时钟电路DS1302、显示电路、按键电路、和复位电路等部分构成,能实现时钟日历显示的功能,能进行时、分、秒的显示。

关键词: 单片机, 农历查询, 万年历 Abstract SCM application technology develop rapidly, looking around us now in all spheres of life, from missiles, navigation equipment, to the various instruments on the aircraft control from a computer network communications and data transmission, industrial automation to real-time process control and data processing, and our lives extensive use of the smart card, electronic pets, which is inseparable from the microcontroller. Monolithic single-chip is the set of CPU, RAM, ROM, the timing, number and variety of interface integrated microcontrollers. Its small size, low cost, high performance, which are widely used in smart industries, and industrial automation. And 51 Series SCM is the most typical and the most representative one. The graduation design Through the study, and thereby achieve the study, design, development hardware and software capabilities. Based on a microcontroller based on the will to achieve calendar of a multi-functional electronic clock design,Thereby achieve studying and understanding the relevant directives SCM in all aspects of the application. By main control AT89C51、clock circuit DS1302、display circuit、keystroke circuit and restore circuit componented, to achieve clock calendar display function can be carried out, hours

基于单片机的万年历设计课程设计

基于单片机的万年历设计课程设计 摘要 电子万年历是一种非常广泛的日常计时工具,它不仅能够对时间技术,还能够对日期、温度、湿度等进行显示,所以在现代社会受到广泛应用。 本设计是一个基于AT89C51单片机的多功能日历显示系统,本设计能显示公历年、月、日,以及时、分、秒、温度、星期等信息,而且还具有日期调整、时间校准以及温度采集等功能。系统所用的时钟日历芯片DS1302和数字式温度传感器DS18B20具有高性能、低功耗、接口简单的特点,使本系统电路简化,编程方便,同时功能也很强。采用AT89C51单片机的万年历系统可以很好的改善传统采用模拟电路引起的计时不准确,不可靠,一致性差等问题。 本文设计是用单片机为主控制,通过电路仿真而实现的。在Proteus7软件绘制硬件电路原理图,用Keil软件进行编程与调试,最终生成hex文件,载入单片机,从而实现仿真效果。 本文设计经过最终调试,能够正确显示年、月、日、周、时、分、秒以及温度等所需信息,并能正常使用对日期与时间的调整与校正功能。系统使用1602LCD 液晶屏显示信息,界面简洁、直观、易于操作。 关键词:万年历;单片机;AT89C51;DS1302;DS18B20

目录 1 引言 (1) 1.1研究的目的和意义 (1) 1.2本系统主要研究的内容 (1) 2 系统方案论证 (2) 2.1控制部分的选择方案与论证 (2) 2.2显示部分的选择方案与论证 (2) 2.3时钟芯片的选择方案与论证 (2) 2.4温度传感器的选择方案与论证 (3) 2.5电路设计最终方案系统原理及总体结构图 (3) 3 系统设计 (4) 3.1 系统硬件仿真原理图 (4) 3.2 单片机89C51控制模块的设计 (4) 3.3 LCD液晶显示模块设计 (7) 3.4 DS1302时钟模块的设计 (9) 3.5 DS18B20温度采集模块的设计 (12) 4 系统调试 (15) 4.1硬件调试 (15) 4.2软件调试 (15) 5 结论 (15) 参考文献 (16)

基于单片机的多功能电子万年历设计开题报告

毕业设计开题报告 1.结合毕业设计课题情况,根据所查阅的文献资料,撰写2000字左右的文献综述: 文献综述 一、本课题研究背景 单片机从20世纪70年代末出现后,以其卓越的性能,得到了广泛的应用,已经深入到各个领域。单片机芯片本身是按工业测控环境要求设计的,分为民用、工业品、军品,其中工业品和军品具有较强的适合恶劣环境的能力[1]。由于单片机本身就是一个计算机系统,因此,只要在单片机的外围适当加一些必要的扩展电路及通道接口,就可有构成各种应用系统,如控制系统、数据采集系统、自动控制系统、自动测试系统、检测监视系统、智能仪表、功能模块等[2]。单片机的应用领域十分广泛,自20世纪80年代以来,单片机的应用已经深入到工业、农业、国防、科研、机关、教育、商业以及家电、生活、娱乐、玩具等各个领域中。单片机应该在检测、控制领域中,具有以下特点:1)小巧灵活、成本化、易于产品化。2)可靠性好,适用范围广[3]。 近年来,电子钟已成为人们日常生活中必不可少的物品,广泛用于个人家庭以及车站、码头、剧院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来了极大的方便。随着技术的发展,人们已不再满足于钟表原先简单的计时功能,希望出现一些新的功能,诸如日历的显示、闹钟的应用等,以带来更大的方便,而所有这些,又都是以数字化的电子时钟为基础的。因此,研究实用电子时钟及其扩展应用,有着非常现实的意义,具有很大的实用价值[4]。 由于数字集成电路技术的发展和采用了先进的石英技术,现代电子钟具有走时准确、性能稳定、制作维修简单等优点,弥补了传统钟表的许多不足之处[5]。我们利用单片机技术设计制作的电子万年历, 可以很方便的由软件编程进行功能的调整和改进,使其在能够准确显示年、月、日、时间、星期的同时,还能具有很多其他的功能[6]。如设定闹钟、语音报时、阴阳历的转换、二十四节气的显示等,有一定的新颖性和实用性,同时体积小、携带方便,使用也更为方便,具有技术更新周期短、成本低、开放灵活等优点,具备一定的市场前景。这里要介绍的就是一款可满足使用者特殊要求,输出方式灵活、计时准确、性能稳定、维护方便的实用电子万年历[7]。

基于单片机的电子万年历设计

基于单片机的电子万年历设计 摘要:本文借助电路仿真软件Protues对基于AT89S52单片机的电子万年历的设计方法及仿真进行了全面的阐述。该电子万年历在硬件方面主要采用AT89S52单片机作为主控核心,由DS1302时钟芯片提供时钟、12864LCD液晶显示屏显示。在软件方面,主要包括日历程序、时间调整程序,显示程序等。所有程序编写完成后,在Keil软件中进行调试,确定没有问题后,在Proteus软件中进行电路设计并仿真。 论文主要研究了液晶显示器LCD及时钟芯片DS1302,温度传感器DS18B20与单片机之间的硬件互联及通信,对数种硬件连接方案进行了详尽的比较,在软件方面对日历算法也进行了论述。 研究结果表明,由于万年历的应用相当普遍,所以其设计的核心在于硬件成本的节约软件算法的优化,力求做到物美价廉,才能拥有更广阔的市场前景。关键词:单片机;DS1302;DS18B20;LCD12864 The Design Of Electronic Calender Based On MCU Abstract:This paper mainly discuss the design of electronic calender based on AT89S52 with the help of Protues.On the hardware side, the electronic calendar using AT89S52 microcontroller as the main control center, clock provided by the DS1302 clock chip , 12864LCDdot matrix LCD display. In terms of software, including calendar program, time to adjust procedures, display procedures. All programming is complete, the Keil software debugging, make sure there is no problem, in the Proteus software embedded within the simulated MCU. This article focus on liquid crystal screen LCD12864 and clock chip DS1302,temperature sensor DS18B20 which connected and communicated with Microcontroller.Several solutions will also compared with each other.On software side,calender calculation will be discussed as well. The results are as follows:as electronic calender are widely used in our daily life.It should be chip and convenient so as to win more profit.

相关主题