Java万年历课程设计报告

Java万年历课程设计报告
Java万年历课程设计报告

Java课程设计

设计题目:万年历

系别:计算机科学与工程学院

专业:信息管理与信息系统

学号: 1100340116 姓名:岑少兵

指导教师:汪华澄

时间: 2013-6-29

目录

摘要 (3)

系统功能结构图 (3)

1 系统模块设计 (4)

1.1 需求设计 (4)

1.2 开发和运行环境 (4)

1.3 功能设计 (4)

2 万年历详细设计思路 (4)

2.1 程序设计思路 (5)

2.2 程序运行主界面 (5)

2.3 流程图 (6)

3 各模块功能实现及代码说明 (6)

3.1 MainFramel类 (6)

3.2 Lunar类 (14)

3.3 national类 (22)

3.4 SetClock类 (26)

4 小结 (34)

5 参考文献 (34)

基于Myeclipse的万年历

摘要:万年历是日常生活中不可或缺的小工具,用万年历我们可以准确地查到当前,以后或是过去的日期,极大地方便了我们的生活。在万年历上添加了显示本地时间以后会更加准确地显示时间。无论是对于我们学生还是上班族或是自由职业者需要经常查看和查找万年历来规划自己将要做得一些事情,或是回忆在过去的时间里已经做过的事情,使之更加有利于提升我们的学习或是工作进度。

系统功能结构图:主要描述系统要实现的各个模块的功能。

1系统模块设计

1.1需求分析

本程序的要求为:1.使用图形用户界面

2.能够实现日期与星期的查询

3.能够显示农历

4.能够查看世界时间

5.能够添加闹钟

1.2 开发和运行环境

开发工具:Myeclipse

运行环境: windows 7

1.3功能设计

本程序要构建的万年历程序,其功能有以下几个方面:

(1)通过

(2)提供年份、月份的下拉形式菜单来选择年份和月份。

(3)通过Lunar类实现农历日期。

(4)通过national类实现世界时间。

(5)能以月历形式显示日期与星期。

(6)通过SetClock类来实现闹钟功能。

(7)通过点击世界时间按钮查询世界时间

(8)通过点击闹钟按钮设置闹钟

(9)显示系统当前时间和日期。

(10)显示作者信息。

2万年历详细设计思路

2.1程序设计思路

1. 总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为365。然后判断输入的年是否为定义年,若是,令总天数S=1,

否则,用累加法计算出定义年到输入年之间的总天数,再把输入年的一月到要输出的月份之间的天数累加起来,若该月是闰年中的月份并且该月还大于二月,再使总天数加1,否则,不加,既算出从定义年一月一日到输出年的该月一日的总天数。

2. 输出月份第一天为星期几的算法:使总天数除以7取余加2得几既为星期几,若是7,则为星期日。

3. 算出输出月份第一天为星期几的算法:算出输出月份第一天为星期几后,把该日期以前的位置用空格补上,并总该日起一次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。

4. 如果年份小于1900年则程序不予判断。

2.2程序运行主界面

2.3流程图

3各模块功能实现及代码说明3.1 MainFrame类

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.GridLayout;

import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ItemEvent; import java.awt.event.ItemListener;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

import javax.swing.JButton;

import javax.swing.JComboBox;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.Timer;

import aa.Lunar;

public class MainFrame extends JFrame implements ItemListener//建立主界面

{

JPanel panel=new JPanel(new BorderLayout());//建立中层容器并布局

JPanel panel1=new JPanel();

JPanel panel2=new JPanel(new GridLayout(8,7));

JPanel panel3=new JPanel(new GridLayout(4,1));

JLabel[] label=new JLabel[49];//标签

JLabel y_label=new JLabel("年");

JLabel m_label=new JLabel("月");

JLabel dashao =new JLabel("时间总是在不经意间溜走,我们还得向前走",JLabel.CENTER);

JLabel bing =new JLabel("希望在回首时候,不带任何遗憾!",JLabel.CENTER);

JLabel feng =new JLabel("桂电大烧饼制作!",JLabel.CENTER);

JLabel labelTime=new JLabel("",JLabel.CENTER);

JComboBox com1=new JComboBox();//下拉窗口

JComboBox com2=new JComboBox();

JButton but1=new JButton("闹钟"); //按钮

JButton but2=new JButton("世界时间");

Calendar now=Calendar.getInstance();

public MainFrame()//设置主界面,并添加各组件

{

super("大烧饼万年历");

setSize(500,600);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

panel1.add(but1);

panel1.add(y_label);

panel1.add(com1);

panel1.add(m_label);

panel1.add(com2);

panel1.add(but2);

panel3.add(dashao);

panel3.add(bing);

panel3.add(feng);

panel3.add(labelTime);

for(int i=0;i<49;i++)//日期标签

{

label[i]=new JLabel("",JLabel.CENTER);

panel2.add(label[i]);

}

panel.add(panel1,BorderLayout.NORTH);//中层容器布局 panel.add(panel2,BorderLayout.CENTER);

panel.add(panel3,BorderLayout.SOUTH);

setContentPane(panel);

setVisible(true);

init();

com1.addItemListener(this);//对下拉组件监听

com2.addItemListener(this);

but1.addActionListener(new ActionListener() {//按钮动作监听

public void actionPerformed(ActionEvent e) {

new aa.SetClock(); //闹钟类

}

});

but2.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

new aa.national();//世界时间类

}

});

Timer timer = new Timer(1000, new ActionListener()//获得系统时间,并将其显示在主界面下方

{

public void actionPerformed(ActionEvent evt)

{

String s1= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); labelTime.setText("现在时间是:"+s1);

}

});

timer.start();//线程启动

}

public void init()//设置日期标签函数

{

int year,month,first_day_num;

String log[]={ "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星

期六"};

for(int i=0;i<7;i++)

{

label[i].setText(log[i]);

}

for(int i=0;i<49;i=i+7)

{

label[i].setForeground(Color.red);//将星期天设置为红色

}

for(int i=6;i<49;i=i+7)

{

label[i].setForeground(Color.red);//将星期六设置为红色

}

for(int i=1800;i<=2100;i++)//将年份的下拉设置为1800-2100年 {

com1.addItem(""+i);

}

for(int i=1;i<13;i++)//讲月份下拉设置为12月

{

com2.addItem(""+i);

}

first_day_num=(int)(now.get(Calendar.DAY_OF_WEEK));//获得日期 month=(int)(now.get(Calendar.MONTH));//获得月份

year=(int)(now.get(Calendar.YEAR));//获得年份

com1.setSelectedIndex(year-1800);//将年份设置为当前年份

com2.setSelectedIndex(month);//将月份设置为当前月

Resetday(first_day_num,year,month);//调用Resetday函数

}

public int use(int year2,int month2)//use函数

{

int first_day;

now.set(year2, month2,1);

first_day=(int)(now.get(Calendar.DAY_OF_WEEK));

return first_day;

}

public void stateChanged()

{

int year3,month3,week3;

year3=Integer.parseInt(com1.getSelectedItem().toString());

month3=Integer.parseInt(com2.getSelectedItem().toString())-1;

week3=use(year3,month3);

Resetday(week3,year3,month3);//调用函数

}

public void Resetday(int week_log, int year_log, int month_log) {//Resetday函数

int month_day_score; // 存储月份的天数

int count;

Lunar lunar;//定义lunar

int month_day;

String[] LunarDate=new String[49];//农历标签

month_day_score = 0;

count = 1;

for (int i = 0; i < 49; i ++) {//将农历跟公历一起显示

for(int j=0;j<49;j=j+7)

{

if(i!=j&&i!=j+6)

label[i].setForeground(Color.black);

}

for(int j=0;i<49;i=i+7)

{

label[i].setForeground(Color.red);

}

for(int j=6;i<49;i=i+7)

{

label[i].setForeground(Color.red);

}

}

Date date = new Date(year_log, month_log + 1, 1); // now MONTH是从0开始的, 对于一月第几天来说,DAY_OF_MONTH第一天就是1. 对于一年第几个月来说,MONTH一月份是0,二月份是1...

Calendar cal = Calendar.getInstance();

cal.setTime(date);

cal.add(Calendar.MONTH, -1); // 前个月

month_day_score = cal.getActualMaximum(Calendar.DAY_OF_MONTH);// 最后一天 month_day=month_day_score;

for (int i = 7; i < 49; i++) { // 初始化标签

label[i].setText("");

}

week_log = week_log + 6; // 将星期数加6,使显示正确

month_day_score = month_day_score + week_log;

lunar=new aa.Lunar();//调用Lunar类

for(int i=0;i

{

LunarDate[i]=lunar.getLunarDate( year_log, month_log+1, i+1);//农历的实现

}

for (int i = week_log; i < month_day_score; i++, count++) {//一些假期 if(month_log==9&&count==1)

{

label[i].setText(count +"国庆" );

label[i].setForeground(Color.red);

}

else if(month_log==0&&count==1)

{

label[i].setText(count +"元旦" );

label[i].setForeground(Color.red);

}

else if(month_log==11&&count==24)

{

label[i].setText(count +"平安夜" );

label[i].setForeground(Color.red);

}

else if(month_log==11&&count==25)

{

label[i].setText(count +"圣诞" );

label[i].setForeground(Color.red);

}

else if(month_log==1&&count==14)

{

label[i].setText(count +"情人节" );

label[i].setForeground(Color.red);

}

else if(month_log==4&&count==1)

{

label[i].setText(count +"劳动节" );

label[i].setForeground(Color.red);

}

else if(LunarDate[i-week_log].equals("春节")||LunarDate[i-week_log].equals("元宵")||LunarDate[i-week_log].equals("端午")||LunarDate[i-week_log].equals("中秋"))

{

label[i].setText("\n"+count +LunarDate[i-week_log] );

label[i].setForeground(Color.red);

}

else

label[i].setText(count +LunarDate[i-week_log] );

}

}

public void itemStateChanged(ItemEvent e)

{

stateChanged();//调用函数

}

public static void main(String [] args)//主函数

{

new MainFrame();

}

}

3.2 Lunar类

package aa;

import java.awt.Color;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

public class Lunar {

private int year;

private int month;

private int day;

private boolean leap;

final static String chineseNumber[] = {"一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二"};

static SimpleDateFormat chineseDateFormat = new SimpleDateFormat("yyyy年MM月dd 日");

final static long[] lunarInfo = new long[]

{0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2,

0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0, 0x14977,

0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970,

0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950,

0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557,

0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5d0, 0x14573, 0x052d0, 0x0a9a8, 0x0e950, 0x06aa0,

0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0,

0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b5a0, 0x195a6,

0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570,

0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x055c0, 0x0ab60, 0x096d5, 0x092e0,

0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5,

0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930,

0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530,

0x05aa0, 0x076a3, 0x096d0, 0x04bd7, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45,

0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0};

//====== 传回农历 y年的总天数

final private static int yearDays(int y) {

int i, sum = 348;

for (i = 0x8000; i > 0x8; i >>= 1) {

if ((lunarInfo[y - 1900] & i) != 0) sum += 1;

}

return (sum + leapDays(y));

}

//====== 传回农历 y年闰月的天数

final private static int leapDays(int y) {

if (leapMonth(y) != 0) {

if ((lunarInfo[y - 1900] & 0x10000) != 0)

return 30;

else

return 29;

} else

return 0;

//====== 传回农历 y年闰哪个月 1-12 , 没闰传回 0

final private static int leapMonth(int y) {

return (int) (lunarInfo[y - 1900] & 0xf);

}

//====== 传回农历 y年m月的总天数

final private static int monthDays(int y, int m) {

if ((lunarInfo[y - 1900] & (0x10000 >> m)) == 0)

return 29;

else

return 30;

}

//====== 传回农历 y年的生肖

final public String animalsYear() {

final String[] Animals = new String[]{"鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪"};

return Animals[(year - 4) % 12];

}

//====== 传入月日的offset 传回干支, 0=甲子

final private static String cyclicalm(int num) {

final String[] Gan = new String[]{"甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸"};

final String[] Zhi = new String[]{"子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥"};

return (Gan[num % 10] + Zhi[num % 12]);

}

//====== 传入 offset 传回干支, 0=甲子

final public String cyclical() {

int num = year - 1900 + 36;

return (cyclicalm(num));

public static String getChinaDayString(int day) {

String chineseTen[] = {"初", "十", "廿", "卅"};

int n = day % 10 == 0 ? 9 : day % 10 - 1;

if (day > 30)

return "";

if (day == 10)

return "初十";

else

return chineseTen[day / 10] + chineseNumber[n];

}

/** *//**

* 传出y年m月d日对应的农历.

* yearCyl3:农历年与1864的相差数 ?

* monCyl4:从1900年1月31日以来,闰月数

* dayCyl5:与1900年1月31日相差的天数,再加40 ?

* @param cal

* @return

*/

public String getLunarDate(int year_log, int month_log, int day_log) { //@SuppressWarnings("unused")

int yearCyl, monCyl, dayCyl;

int leapMonth = 0;

String nowadays;

Date baseDate = null;

Date nowaday=null;

try {

baseDate = chineseDateFormat.parse("1900年1月31日");

} catch (ParseException e) {

e.printStackTrace(); //To change body of catch statement use Options | File Templates.

}

nowadays=year_log+"年"+month_log+"月"+day_log+"日";

try {

nowaday = chineseDateFormat.parse(nowadays);

} catch (ParseException e) {

e.printStackTrace(); //To change body of catch statement use Options | File Templates.

}

//求出和1900年1月31日相差的天数

int offset = (int) ((nowaday.getTime() - baseDate.getTime()) / 86400000L); dayCyl = offset + 40;

monCyl = 14;

//用offset减去每农历年的天数

// 计算当天是农历第几天

//i最终结果是农历的年份

//offset是当年的第几天

int iYear, daysOfYear = 0;

for (iYear = 1900; iYear < 10000 && offset > 0; iYear++) {

daysOfYear = yearDays(iYear);

offset -= daysOfYear;

monCyl += 12;

}

if (offset < 0) {

offset += daysOfYear;

iYear--;

monCyl -= 12;

//农历年份

year = iYear;

yearCyl = iYear - 1864;

leapMonth = leapMonth(iYear); //闰哪个月,1-12

leap = false;

//用当年的天数offset,逐个减去每月(农历)的天数,求出当天是本月的第几天 int iMonth, daysOfMonth = 0;

for (iMonth = 1; iMonth < 13 && offset > 0; iMonth++) {

//闰月

if (leapMonth > 0 && iMonth == (leapMonth + 1) && !leap) {

--iMonth;

leap = true;

daysOfMonth = leapDays(year);

} else

daysOfMonth = monthDays(year, iMonth);

offset -= daysOfMonth;

//解除闰月

if (leap && iMonth == (leapMonth + 1)) leap = false;

if (!leap) monCyl++;

}

//offset为0时,并且刚才计算的月份是闰月,要校正

if (offset == 0 && leapMonth > 0 && iMonth == leapMonth + 1) {

if (leap) {

leap = false;

} else {

leap = true;

--iMonth;

--monCyl;

}

数字电子课设:万年历的设计

编号 北京工商大学 数字电子技术基础 《万年历的设计》 姓名 学院 班级 学号 设计时间

一、设计目的 1、熟悉集成电路的引脚安排 2、掌握芯片的逻辑功能及使用方法 3、了解数字电子钟及万年历的组成及工作原理 4、熟悉数字电子钟及万年历的设计与制作 5、熟悉multisim电子电路设计及仿真软件的应用 二、设计思路 1、设计60进制秒计数器芯片 2、设计24进制时计数器芯片 3、设计31进制天计数器芯片 4、设计12机制月计数器芯片 5、设计7进制周计数器芯片 6、设计闰年平年不同月份不同进制逻辑 三、设计过程 1、Tr_min and s 60进制计数器芯片: “秒”、“分”电路都六十进制,它由一级十进制计数器和一级六进制计数器组成,六十进制计数器的设计图如下,采用四个片74ls161N串联而成,低位芯片的抚慰信号作为下级输入信号,串接起来构成“秒”、“分”计数器芯片。

2、Tr_hour24进制计数器芯片: 24进制计数器芯片的设计图如下,时计数电路由两片74ls161串联组成。当时个位计数为4,十位计数为2时,两片74ls160N复零,从而构成24进制计数。 3、Tr_day天计数器芯片: 采用两片74ls160N和一片74ls151N串联而成,天计数器的进制受到月计数器反馈M、N影响和年计数器反馈R4的影响,在M、N不收到反馈信息的时候,天计数器为28进制,电路设计图如下:

4、Tr_week周计数器芯片: 周计数器由一块74ls161N构成一个七进制计数器,原理与秒、分、时计数器相似,电路设计图如下 5、Tr_month月计数器芯片: 采用两片74160N和两片74HC151D_2V串联而成,月计数器的反馈信息M、N影响

JAVA《万年历系统》课程设计报告附源码

2013-2014学年第二学期《面向对象程序设计》 课程设计报告 题目:万年历系统 专业:计算机科学与技术 班级: : 学号: 指导教师: 成绩:

计算机与信息工程系2014年6月6日

目录 1 设计容及要求 (1) 1.1设计容 (1) 1.2设计任务及具体要求 (1) 2 概要设计 (2) 2.1程序设计思路 (2) 2.2 总体程序框图 (3) 3 设计过程或程序代码 (4) 3.1各个模块的程序流程图及运行界面 (4) 3.2对关键代码加以分析说明 (7) 4 设计结果与分析 (13) 4.1程序调试的结果 (13) 4.2程序设计分析 (13) 5 小结 (14) 致 (15) 参考文献 (16) 源程序 (17)

1 设计容及要求 1.1设计容 万年历,实际上就是记录一定时间围(比如100年或更多)的具体阳历或阴历的日期的年历,方便有需要的人查询使用。在我设计的万年历中主要有:(1)使用图形用户界面来查询用用户所需的日期信息,符合日常软件使用规。 (2)按月份查询,实现了显示查询1901~2100年某月所有日期的阴阳历对照。 (3)并且添加了重大节日与星座等信息,界面采用日常的星期与月份结合的格式,方便查看与使用。 (4)编写万年历的课程设计,是为了使同学们更加了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。为后续各门计算机课程的学习和毕业设计打下坚实基础。 1.2设计任务及具体要求 利用JAVA语言编写的万年历系统采用了多种JAVA语句来实现多种功能。用户可以通过本程序的applet运行界面来查找一整年某月的农历和阳历,可以查找用户所想了解的某一天具体为星期几,并且可以看到一些重大节日的具体时间。 要求:满足设计万年历系统的目的,即当用户查询年份与月份时,系统就要将这一年的某一月份的阴历与阳历全部显示出来,并且附带这一月份的重大节日。当用户随意改动年份或月份时系统自动显示与星期对应的日期。用户点击日

Java课程设计+文档+源代码(万年历+闹钟+记事本)

2015年12月18日 一、课程题目 设计一个万年历系统,实现以下功能 (1)可以查看当前的年份、月份和日期; (2)有时间栏,便于用户查看当前时间; (3)能够查找1至9999年的日期与星期的关系。 其它功能可自行开发。 二、题目分析与设计 1.使用的开发环境为eclipse Jdk环境:jdk1.8 2. (此为万 年历界面图) 使用了jTabbedPane 类对功能页面分页,布局策略基本用BorderLayout 和GridLayout 。 3.本项共有5个类,基本一个功能有一个类实现,主类CalendarMain 只包含一个main函数:对创建框架和其属性设置。

AlarmDemo类则实现闹钟功能;NoteBook 类实现记事本功能;CalendarsView 类则实现基本日历功能,ChooseDay 类是一个弹窗,被CalendarsView 调用,CalendarsView 、AlarmDemo 也在该类被调用; . 4.日历界面使用了jTable ,功能的实现逻辑则是 1.首先定义两个全局变量---年和月,查看不同时间的日历,该变量也 随之改变。 2.写了几个函数获取今年第一天是星期几,然后根据月份天数即可推 算具体某月第一天是星期几。 3.知道一个月第一天是星期几,则该月日历既可以顺序列出。 闹钟的功能实现思路: 1.获取界面设定的时间。

2.使用线程,每过一秒急救获取当前时间,并判断是否到达设定的时 间 3.到设定的时间,启动弹窗,播放闹铃 4.闹铃科根据文件选择器自行选择 记事本功能实现思路 1.在项目文件夹先新建一个txt文件作为储存的数据库 2.利用File 类和io 数据流将界面文本储存进txt文件,实现保存功 能 3.每当程序启动,读取txt文件内容并显示到界面上 三、测试分析 1.使用如下拓展包

Java万年历课程设计报告

杭州师范大学钱江学院课程设计 题目万年历 学院钱江学院 专业信电分院计算机科学与技术 班级计算机1101 姓名崔伊平 指导教师王李冬 2013 年9 月20 日

目录 一.概述 (1) 二.总体方案设计 (2) 三.详细设计 (3) 四.最终输出 (7) 五.课程设计总结 (8) 参考文献 (9)

一、概述 1.课程设计的目的 通过显示年日历程序的设计,培养学生综合利用java语言进行程序设计的能力,加强函数的运用及学生对软件工程方法的初步认识,提高软件系统分析能力和程序文档建立、归纳总结的能力。 通过本项课程设计,可以培养独立思考、综合运用所学有关相应知识的能力,能更好的巩固《java语言程序设计》课程学习的内容,掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!更加了解了java语言的好处和其可用性! 2.课程设计的要求 2.1 输入查询的年份与月份,单击“更新”按扭,则可得到相应的日历。本实验是对图形用户界面,布局管理器的综合运用。要掌握APPLET容器中添加组件的方法,理解JAVA 的事件处理机制,编写独立的运行窗口。 2.2 输出形式 使用独立的运行窗口进行显示。界面主要由两部分组成——查询输入部分和结果显示部分。查询输入部分包括两个文本域,一个用于输入年份:一个用于选择月份:一个更新按扭,用来触发查询事件。

二总体方案设计 1.程序开发环境 a.开发环境:eclipse b.系统环境:windows xp/7 c.设计工具:Microsoft office 2003 2.整体流程图 图1 流程图 3.功能模块图

java课程设计 万年历 源代码

华北科技学院 课程设计报告 面向对象程序设计(Java) 班级: 电商B09-3 姓名: 周婷玉 设计题目:__________万年历________________ 设计时间: 2011-12-28 至2012-01-06 指导教师:_______ 郭慧____________ _____ 评语:_________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ 评阅成绩:___________评阅教师:_____________

课程设计说明书 1、课程设计的目的 a)掌握面向对象程序设计基本要素(封装、继承、多态) b)掌握JA VA语言常用类包及其常用方法和JA VA语言基本语法 c)掌握基于AWT的图形用户界面设计 i.常用标准控件的使用,如标签、按钮、菜单、文本框、单选按钮、 滚动条等。 ii.事件处理机制 d)掌握布局、对话框的使用 e)掌握发布JA VA应用程序 2、功能模块简介和系统结构图 需求分析:本程序的要求为: 1.使用图形用户界面 2.能够实现日期与星期的查询 3.实现当日的时间备忘 功能设计: 1.能以月历形式显示日期与星期 2.支持用户自己输入年份,并提供月份的下拉形式来选择查询 3.添加当日行事历,储存与清除功能

C语言万年历设计报告

C语言课程 设计报告题目:编写万年历系统 年级: 专业: 班级: 姓名: 学号:

目录 第1章设计目的 第2章需求分析 第3章概要设计 第4章源程序清单 第5章执行结果 1)登陆界面 2)显示当前日月历 3)显示具体日期信息 第6章程序问题调试与课程设计心得

第1章设计目的 设计目的(实验要求): 1.模仿现实生活中的挂历. 2.当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几). 3.当系统日期变到下一月时,系统自动翻页到下一月. 第2章需求分析 (1)程序运行时,首先给出菜单选项和输入提示: (2)用户可以通过主菜单选择不同选项。输入1,通过输入当前日期可显示当前月的日历;输入2,通过输入具体日期(中间以空格分开)可显示该日具体信息;输入3,则退出查询系统。

第3章概要设计 1.菜单选择界面可通过下面所示函数时现; 主要思路: 通过while语句与swich…case以及if条件语句实现菜单的循环功能和不同选 项的功能实现。 闰年与平年的判断: 代码如下: void main() { int year,month,day,a,b; while(1) { printf("\n\n\n\n"); printf(" **********************************************************\n\n"); printf(" * * \n");

printf(" Welcome to enter calendar system \n"); printf(" * * \n\n"); printf(" **********************************************************\n\n\n" ); printf(" 1 The month of current date 2 Date 3 Exit\n"); printf(" please import your choose<1~3>,press Enter to define: "); scanf("%d",&b); switch(b) { case 1: printf("\n Please import the year,month and day which you want to check,the year,month and day separation by blank space: "); scanf("%d%d%d",&year,&month,&day); a=x3(year,month,1); if(a==0) { printf("Error!Please import again.\n"); break;} yueli(year,month,day); break; case 2: printf("\n Please import the year,month and day which you want to check, the year,month and day separation by blank space: "); scanf("%d%d%d",&year,&month,&day); a=x3(year,month,day); if(a==0) { printf("Error!Please import again.\n"); break;} rili(year,month,day); break; case 3: exit(0); default: printf("Error!Please import again.\n\n"); } }

Java课程设计-万年历

河北科技大学课程设计报告 号:学生姓名:学 专业班级:程序设计课程设计Java课程名称:学期学年第 2 2 015 学年学期: 2 014 — 指导教师:刘伟月年 2 0

的?.................................................................. ................................1?? 2.需求分................................................................... .........析................................1? 3.总体设计................................................................... ........................................1? 4.详细设计................................................................... ........................................1?

5.软件测试................................................................... . (10) 6.课程设计总结................................................................... ................................11. 一、课程设计目的(1)熟练使用java语言编写程序,解决实际问题。? (2)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;? (3)学会自己调试程序的方法并掌握一定的技巧。 二、需求分析本程序的要求为: 1.使用图形用户界面;? 2.本程序能够实现日期与星期的查询。 ?三、总体设计(1)可以通过图形界面显示日历。? (2)能以月历形式显示日期与星期。? (3)支持用户自己输入年份,可以通过上一年,下一年等按钮来选择年份和月份。? ?四、详细设计1.总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为365。 ,0若是取余得几既为星期几,7使总天数除以输出月份第一天为星期几的算法:2. 则为星期日。? 3.算出输出月份第一天为星期几的算法:算出输出月份第一天为星期几后,把该日期以前的位置用空格补上,并总该日起一次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。? 4.查询年份必须为四位有效数字,否则不予显示。 程序源代码: import import import import import import; import import import ; import ; import import import java.awt.*; import import java.text.*; import ;

电子万年历课程设计

烟台南山学院单片机课程设计题目电子万年历 姓名: 所在学院:烟台南山学院 所学专业:自动化 班级: 学号: 指导教师: 完成时间:

摘要 单片机作为当今领域应用广泛的电子器件,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。以AT89C51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由5V直流电源供电,通过数码管能够准确显示时间,日期,调整时间,日期,从而到达学习、设计、开发软、硬件的能力。 时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,但误差很大,主要用在对时间精度要求不高的场合;二是用专门的时钟芯片实现,在对时间精度要求很高的情况下,通常采用这种方法,典型的时钟芯片有:DS1302,DS12887,X1203等都可以满足高精度的要求。本设计由单片机AT89C51芯片和LED数码管为核心,运用DS1302时钟芯片,辅以必要的电路,构成了一个单片机电子时钟。

1 绪论 (1) 2 总体方案设计与论证 (2) 2.1数字时钟方案 (2) 2.2显示方案 (3) 3 硬件系统的方案设计 (4) 3.1 系统框图 (4) 3.2 单片机的选择 (4) 3.3 时钟电路DS1302 (7) 3.4 时钟电路及复位电路 (9) 3.5 驱动电路 (9) 3.6 显示电路 (10) 3.7 按键接口 (11) 4 软件系统设计 (12) 4.1 时间信息获取程序 (12) 4.2 显示程序 (12) 5 系统调试 (13) 5.1 系统调试 (13) 5.2 时钟显示 (13) 5.3 DS1302的调试 (13) 5.4 按键电路调试 (13) 6 总结 (14) 参考文献 (15) 附录:系统程序 (16)

课程设计万年历的设计52503328

课程设计万年历的设计52503328

兰州理工大学 计算机与通信学院 2014年秋季学期 面向对象课程设计 题目:万年历的设计

序言 《面向对象的程序设计》是计算机专业一门重要的专业基础课。此次课程设计的目的是以面向对象程序设计语言为基础,通过完成一些具有一定难度的课程设计题目的编写、调试、运行工作,进一步掌握面向过程和面向对象程序设计的基本方法和编程技巧,巩固所学理论知识,使理论与实际相结合。从而提高自我分析问题、解决问题的能力。通过课程设计,学生在下述各方面的能力应该得到锻炼: (1)进一步巩固、加深学生所学专业课程《C++语言程序设计》的基本理论知识,理论联系实际,进一步培养学生综合分析问题、解决问题的能力。 (2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。 (3)利用所学知识,开发小型应用系统,掌握运用C++语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。 (4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。 (5)掌握面向对象的程序设计方法。 (6)进一步掌握在集成环境下如何调试程序、修改程序和程序的测试。

目录 摘要 (2) 第一章系统总体设计 (3) 一.理论说明 (3) 二.流程图说明 (4) 1.总体流程说明图 (4) 2.部分流程说明图 (4) 第二章系统详细设计 (7) 一.主要组成部分 (7) 二.源程序 (9) 第三章系统测试 (34) 四软件使用说明书 (40) 一.系统运行环境 (40) 二.系统操作提示 (40) 总结 (41) 参考文献 (42) 致谢 (42)

Java万年历课程设计报告

Java课程设计 设计题目:万年历 系别:计算机科学与工程学院 专业:信息管理与信息系统 学号: 1100340116 姓名:岑少兵 指导教师:汪华澄 时间: 2013-6-29

目录 摘要 (3) 系统功能结构图 (3) 1 系统模块设计 (4) 1.1 需求设计 (4) 1.2 开发和运行环境 (4) 1.3 功能设计 (4) 2 万年历详细设计思路 (4) 2.1 程序设计思路 (5) 2.2 程序运行主界面 (5) 2.3 流程图 (6) 3 各模块功能实现及代码说明 (6) 3.1 MainFramel类 (6) 3.2 Lunar类 (14) 3.3 national类 (22) 3.4 SetClock类 (26) 4 小结 (34) 5 参考文献 (34)

基于Myeclipse的万年历 摘要:万年历是日常生活中不可或缺的小工具,用万年历我们可以准确地查到当前,以后或是过去的日期,极大地方便了我们的生活。在万年历上添加了显示本地时间以后会更加准确地显示时间。无论是对于我们学生还是上班族或是自由职业者需要经常查看和查找万年历来规划自己将要做得一些事情,或是回忆在过去的时间里已经做过的事情,使之更加有利于提升我们的学习或是工作进度。 系统功能结构图:主要描述系统要实现的各个模块的功能。

1系统模块设计 1.1需求分析 本程序的要求为:1.使用图形用户界面 2.能够实现日期与星期的查询 3.能够显示农历 4.能够查看世界时间 5.能够添加闹钟 1.2 开发和运行环境 开发工具:Myeclipse 运行环境: windows 7 1.3功能设计 本程序要构建的万年历程序,其功能有以下几个方面: (1)通过 (2)提供年份、月份的下拉形式菜单来选择年份和月份。 (3)通过Lunar类实现农历日期。 (4)通过national类实现世界时间。 (5)能以月历形式显示日期与星期。 (6)通过SetClock类来实现闹钟功能。 (7)通过点击世界时间按钮查询世界时间 (8)通过点击闹钟按钮设置闹钟 (9)显示系统当前时间和日期。 (10)显示作者信息。 2万年历详细设计思路 2.1程序设计思路 1. 总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为365。然后判断输入的年是否为定义年,若是,令总天数S=1,

Java课程设计-万年历

河北科技大学 课程设计报告 学生姓名:学号: 专业班级: 课程名称:Java程序设计课程设计 学年学期:2 014 —2 015 学年第2 学期指导教师:刘伟 2 0 年月

课程设计成绩评定表 学生姓名学号成绩专业班级起止时间 设计题目 指导教师评语学习态度:端正□较端正□一般□较差□ 学习纪律:好□较好□一般□较差□ 出勤情况:好□较好□一般□较差□ 程序设计:好□较好□一般□较差□ 动手能力:强□较强□一般□较差□ 团队精神:好□较好□一般□较差□ 创新意识:强□较强□一般□较差□ 课程设计完成情况:优秀□好□一般□较差□ 课程设计报告完成情况:优秀□好□一般□较差□ 指导教师: 年月日

目录 1.课程设计目的 (1) 2.需求分析 (1) 3.总体设计 (1) 4.详细设计 (1) 5.软件测试 (10) 6.课程设计总结 (11)

一、课程设计目的 (1)熟练使用java语言编写程序,解决实际问题。 (2)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能; (3)学会自己调试程序的方法并掌握一定的技巧。 二、需求分析 本程序的要求为: 1.使用图形用户界面; 2.本程序能够实现日期与星期的查询。 三、总体设计 (1)可以通过图形界面显示日历。 (2)能以月历形式显示日期与星期。 (3)支持用户自己输入年份,可以通过上一年,下一年等按钮来选择年份和月份。 四、详细设计 1.总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为365。 2.输出月份第一天为星期几的算法:使总天数除以7取余得几既为星期几,若是0,则为星期日。 3.算出输出月份第一天为星期几的算法:算出输出月份第一天为星期几后,把该日期以前的位置用空格补上,并总该日起一次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。 4.查询年份必须为四位有效数字,否则不予显示。 程序源代码: import java.awt.BorderLayout; import java.awt.Color;

java课程设计任务书万年历

课程设计(论文)任务书 软件学院学院_______________________________ 专业_______________________ 班一、 课程设计(论文)题目 ____________________________________________________________ 二、课程设计(论文)工作自2012 年12月_2£日起至2012年12月_28_日止。 三、课程设计(论文)地点: 软件学院实训中心 四、课程设计(论文)内容要求: 1 ?本课程设计的目的______________________________________________________________ (1)掌握Java语言的程序设计方法; ( 2)理论联系实际,进一步提高学生的软件开发技术; ( 3)培养学生分析、解决问题的能力; ( 4)提高学生实践论文撰写能力。 2 ?课程设计的任务及要求 1 )课程设计任务: (1) 设计一个万年历系统,能查看日期。 ___________________________________________ (2) 能查任意一年任意一月的日期。 _______________________________________________ (3) 背景显示当前年月。 _________________________________________________________ 2) 创新要求: (1)月份查看使用下拉菜单。 (2)查看框可随意拉大拉小,背景显示当前的年月。__________________________________ 3) 课程设计论文编写要求___________________________________________________________ (1)课程设计任务及要求____________________________________________________________ (2 )设计思路--工作原理、功能规划 (3)详细设计---数据分析、算法思路、类设计、功能实现(含程序流程图、主要代码及注 释)、界面等。 (4)运行调试与分析讨论---给出运行屏幕截图,分析运行结果,有何改进想法等。 (5 )设计体会与小结---设计遇到的问题及解决办法,通过设计学到了哪些新知识,巩固了哪些 知识,有哪些提高。

万年历C++课程设计报告

徐州师范大学科文学院本科生课程设计 课程名称:计算机程序设计实训 题目:万年历的设计 专业班级:电子信息工程08电信 学生姓名: 学生学号: 日期:2010/12/20 指导教师:姜芳艽 科文学院教务部印制

指导教师签字: 年月日

目录 摘要...................................................错误!未定义书签。 Abstract ...................错误!未定义书签。 1 绪论...................................................错误!未定义书签。 课题的设计......................................................................... 错误!未定义书签。 课题的背景……………………………………………………………………….错误!未定义书签。 课题的目的………………………………………………………………………..错误!未定义书签。 课题的意义………………………………………………………………………..错误!未定义书签。 2 设计方案简述 ..................................................... 错误!未定义书签。 设计总体规划..................................................................... 错误!未定义书签。 实现的功能………………………………………………………………………..错误!未定义书签。 结构模块分析……………………………………………………………………...错误!未定义书签。 3 详细设计 ............................................................. 错误!未定义书签。 设计思路............................................................................. 错误!未定义书签。 设计语言…………………………………………………………………………..错误!未定义书签。 设计程序流程图…………………………………………………………………..错误!未定义书签。 模块详细设计....................................................................... 错误!未定义书签。 大月和小月的定义………………………………………………………………..错误!未定义书签。 闰年与非闰年二月的定义………………………………………………………..错误!未定义书签。 日历表的输出……………………………………………………………………..错误!未定义书签。 4 设计结果及分析.................................................. 错误!未定义书签。 软件测试............................................................................... 错误!未定义书签。 设计成果............................................................................... 错误!未定义书签。 5 总结..................................................错误!未定义书签。 参考文献 ................................................................. 错误!未定义书签。

java课程设计报告-万年历

山西大学Java课程设计报告 题目:万年历 班级:14 班 学号: 姓名:

2016年12月 目录 1 绪论 (1) 1.1选题目的及意义 (1) 1.2 系统概述 (1) 1.3 人员组成及分工 (1) 2 需求分析 (1) 3 总体设计 (1) 4 详细设计 (1) 5 系统实现 (2) 5.1 开发环境 (3) 5.2 关键技术 (3) 6.运行结果 (6) 7.软件测试 (7) 8.总结 (7)

9 参考文献 (8) 1.绪论 1.1选题目的及意义 选题目的:本次课程设计为课本后设计题目任选一题进行设计。思考一段时间后,我们组决定做一个万年历的设计。主要考虑到以前时间少课程内容多,JAVA课程基础内容掌握并不是很抓实,而对于设计一个万年历程序,由于其功能简单设计也相对较易,对于我们每个人的学习情况比较合适,并且通过设计这样的一个日历小组件,也能使自己对JAVA 的一些基础知识掌握的更加牢固。 1.2 系统概述 随着电子技术的不断发展,人们的不断创新,万年历已经不再局限于书本形式,而是以电脑软件或者电子产品的形式出现。让其更加便捷。在学习了JAVA课程后,将以JAVA 形式编译出一个简易的万年历。 1.3 人员组成及分工 :负责搜集查找资料 :调试程序 最后进行程序的编写与修改

2.需求分析 本程序的要求为:1.使用图形用户界面; 2.本程序能够实现日期与星期的查询。 3.可以添加或者删除日志 3.总体设计 (1)可以通过图形界面显示日历。 (2)能以月历形式显示日期与星期。 (3)支持用户自己输入年份,可以通过上一年,下一年等按钮来选择年份和月份。(4)可以添加或者删除并且点击对应日期显示日志。 4.详细设计 1. 总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为闰年,是 闰年,该年的总天数为366,否则,为365。然后判断输入的年是否为定义年,若是,令总天数S=1,否则,用累加法计算出定义年到输入年之间的总天数,再把输入年的一月到要输出的月份之间的天数累加起来,若该月是闰年中的月份并且该月还大于二月,再使总天数加1,否则,不加,既算出从定义年一月一日到输出年的该月一日的总天数。 2. 输出月份第一天为星期几的算法:使总天数除以7取余得几既为星期几,若是 0,则为星期日。 3. 算出输出月份第一天为星期几的算法:算出输出月份第一天为星期几后,把该 日期以前的位置用空格补上,并总该日起一次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。 4. 查询年份必须为四位有效数字,否则不予显示。 5.显示系统时间。 6.流程图

数字万年历课程设计报告

数字万年历课程设计报告

课程名称:微机原理课程设计题目:万年历

摘要 随着电子技术的迅速发展,特别是随大规模集成电路出现,给人类生活带来了根本性的改变。由其是单片机技术的应用产品已经走进了千家万户。电子万年历的出现给人们的生活带来的诸多方便。 本文首先描述系统硬件工作原理,并附以系统结构框图加以说明,着重介绍了本系统所应用的各硬件接口技术和各个接口模块的功能及工作过程,其次,详细阐述了程序的各个模块和实现过程。本设计以数字集成电路技术为基础,单片机技术为核心。本文编写的主导思想是软硬件相结合,以硬件为基础,来进行各功能模块的编写。 本设计是一种基于STC89C51单片机控制,DS1302报时的数字时钟设计。它具有多项显示和控制功能。能用LCD实时显示当前年、月、日、星期、时间;可对时间进行调整;具有调整时间和日期功能。 本设计通过一个基于单片机的能实现万年 历功能电子时钟的设计,从而达到学习、了解单片机相关指令在各方面的应用。系统由主控制器

AT89C51、时钟电路DS1302、显示电路、按键电路和复位电路等部分构成,能实现时钟日历显示的功能,能进行时、分、秒的显示。 关键词:STC89C52单片机、LCD液晶显示、DS1302时钟芯片

目录 一、设计任务与要求 ........................................................................... - 6 - 1.1 设计任务 .............................................................................................. - 6 - 1.2 设计要求 .............................................................................................. - 6 - 1.3 发挥部分 .............................................................................................. - 6 - 二、方案总体设计 ..................................................................................... - 7 - 2.1 显示部分 .............................................................................................. - 7 - 2.2 时钟信号的选择 .................................................................................. - 8 - 2.3 总体方案 .............................................................................................. - 8 - 三、硬件设计 ..................................................................................... - 10 - 3.1 单片机最小系统 ................................................................................ - 10 - 3.2 DS1302时钟电路............................................................................... - 17 - 3.3 LCD液晶显示模块............................................................................ - 19 - 3.4 按键电路 ............................................................................................ - 21 - 3.5 电源指示灯部分 ................................................................................ - 25 - 四、软件设计 ..................................................................................... - 26 - 4.1 主程序流程图显示 ............................................................................ - 26 - 4.2 时间设定程序流程图 ........................................................................ - 27 - 五、系统仿真与调试 ......................................................................... - 29 - 5.1 Proteus仿真软件简介 ....................................................................... - 29 - 5.2 仿真及实物 ........................................................................................ - 31 - 六、设计总结 ..................................................................................... - 34 - 七、参考文献 ..................................................................................... - 35 -

单片机电子万年历课程设计报告书

单片机课程设计 姓名:吕长明 学号:04040804021 专业班级:机电四班

一、单片机原理及应用简介 随着国内超大规模集成电路的出现,微处理器及其外围芯片有了迅速的发展。集成技术 的最新发展之一是将CPU和外围芯片,如程序存储器、数据存储器、并行、串行I/O口、定时/计数器、中断控制器及其他控制部件集成在一个芯片之中,制成单片计算机(Single-Chip Microcomputer)。而近年来推出的一些高档单片机还包括有许多特殊功能单元,如A/D、D/A转换器、调制解调器、通信控制器、锁相环、DMA、浮点运算单元等。因此,只要外加一些扩展电路及必要的通道接口就可以构成各种计算机应用系统,如工 业控制系统、数据采集系统、自动测试系统、万年历电子表等。 二、系统硬件设计 8052 是标准的40引脚双列直插式集成电路芯片,引脚分布请参照----单片机引脚图图1: 图1 8052引脚 P0.0~P0.7 P0口8位双向口线(在引脚的39~32号端子)。 P1.0~P1.7 P1口8位双向口线(在引脚的1~8号端子)。 P2.0~P2.7 P2口8位双向口线(在引脚的21~28号端子)。 P3.0~P3.7 P2口8位双向口线(在引脚的10~17号端子)。 8052芯片管脚说明: VCC:供电电压。 GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用

于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH 编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口,如表1所示: 表1 特殊功能口 P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

相关文档
最新文档