C++课程设计报告(简易文本编辑器)

C++课程设计报告(简易文本编辑器)
C++课程设计报告(简易文本编辑器)

面向对象程序设计课程设计报告

(2011/2012学年第二学期)

题目名称简单文本编辑器的设计

系部

专业计算机科学与技术

班级

学生

完成时间 2012年 6 月

指导老师

在文本编辑器出现前,人们用打孔机把计算机文字打到穿孔卡片上。文字存放于一个装着这样的薄卡片的盒子里,可以用读卡器来阅读它。

第一个文本编辑器是一种行编辑器,它运行在打字机型的终端上,这种编辑器并不具备在窗口和屏幕中显示的功能。它包含了一些非常短的命令(为了减少打字量)。其中一个命令能够把文件的指定部分通过打字机打印出来。编辑光标是想象中的一个插入点,通过特殊命令,可以把它移动到特定内容字符串所在的行。随后,内容字符串又被扩展成正则表达式。如果想看到文件的变化,你需要把它打印出来。相对于穿孔机来说,人们认为这种基于行的文本编辑器具有革命性的进步。如果没有它,用户就需要把那些处理文本的命令打成专用的卡片,并在编辑文件时使用这些卡片。

当带有显示屏的计算机终端出现后,基于显示屏的文本编辑器开始流行起来。最早的全屏编辑器中,有一种叫做O26,它是于1967年为CDC 6000系列机器的操作控制台而作的。另外一个早期的全屏编辑器是vi。vi诞生于20世纪70年代,至今,它仍是Unix和Linux的标准编辑器。全屏编辑器对视频终端的销售起到了促进的作用。

文本编辑器在Windows的应用中是一个非常重要的项目,在过去十数年中,微软对windows文本编辑器有多个版本的升级改进,而基于其他的编程环境的文本编辑器也是多如牛毛,今天我们用MFC可视化编译环境做一个简易的文本编辑器。

引言 (2)

1.课程设计目的和意义 (4)

2.详细设计 (4)

2.1需求描述 (4)

2.1.1文件 (4)

2.1.2编辑 (4)

2.1.3应用 (5)

2.1.4帮助 (5)

2.1.5高级 (5)

2.2功能描述 (5)

2.2.1文本编辑区 (5)

2.2.2文件 (7)

2.2.3编辑 (15)

2.2.4应用 (16)

2.2.5帮助 (21)

2.2.6高级 (22)

2.2.7菜单栏 (25)

2.2.7图标 (26)

2.3程序运行说明 (27)

3.课程设计总结 (30)

3.1编程日志 (30)

3.3测试报告 (31)

4.心得体会 (31)

5.参考文献 (31)

1.课程设计目的和意义

《面向对象程序设计》课程设计是实践性教学环节之一,是《面向对象程序设计》课程的辅助教学课程。该课程设计要求学生综合运用在《面向对象程序设计》课程中学到的面向对象技术与实际编程相结合,独立完成一项较为完整、并具有一定实际功能的课程设计任务,同时加深学生对面向对象和C++编程技术的理解和掌握,培养实际的应用程序开发能力。在课程设计过程中,使学生养成良好的程序设计风格,并掌握C++应用程序的设计开发过程和编程方法、测试方法

2.详细设计

2.1需求描述

简单文本编辑器的设计是基于Microsoft Visual Studio 2008开发的一款小型的软件,主要的设计是为了满足普通用户对文本文档进行一般的简单操作,通过MFC可视化编程环境,直接生成一个友好的用户操作界面,通过这个窗口,用户可以对文本进行如下的基本操作。

2.1.1 文件

①新建:创建一篇空白文档,从“工具栏”或“文件下拉菜单”中创建

②打开:打开文本(.txt)文件,从“工具栏”或“文件下拉菜单”中打开;或将文本(.txt)文件拖入程序界面打开或应用程序图标上打开;或右键单击文本文件,在“打开方式”中选择本程序打开

②保存:保存文档,从“工具栏”或“文件下拉菜单”中打开

④另存为:保存文件副本,在不同位置或以不同文件名保存文档,从“工具栏”或“文件下拉菜单”中另存

2.1.2 编辑

①撤销:撤销前一步所进行的操作,从“编辑下拉菜单”或“右键菜单”中撤销

③删除:删除当前选定字符(串),从“编辑下拉菜单”或“右键菜单”中删除

④剪切:复制并删除选定字符(串),从“编辑下拉菜单”或“右键菜单”中剪切

⑤复制:复制选定字符(串),“编辑下拉菜单”或“右键菜单”中复制

⑥粘贴:对粘贴内容进行粘贴,从“编辑下拉菜单”或“右键菜单”中粘贴

⑦全选:对文本编辑框中文本全部选定,从“编辑下拉菜单”或“右键菜单”中全

2.1.3 应用

①查找/替换:输入查找内容(和替换内容),可从光标位置逐个查找(或替换)相应内容,也可一次性全部替换掉相应内容,从“工具栏”或“应用下拉菜单”中执行

②字体设置:设置字体、字形及字的大小,从“工具栏”或“应用下拉菜单”中

设置字体

③统计字符串:统计用户输入的字符串出现次数,从“工具栏”或“应用下拉菜单”中执行

④统计字数:统计所有字符数、中文字符数、英文字符数、数字字符数和空格数,从“工具栏”或“应用下拉菜单”中启动

2.1.4 帮助

①关于EasyTXT:显示关于本程序的信息,从“帮助下拉菜单”中启动

②帮助:显示程序帮助文档,包括程序功能、使用、简要说明等各种信息,从“工具栏”或“帮助下拉菜单”中启动

2.1.5 高级

①关联注册:向注册表添加SLW文件关联,改变文本(.txt)文件图标,并使文本(.txt)文件可单击右键后选择用本程序打开(部分功能重启或注销后方能生效)

②还原注册:取消注册,文本(.txt)文件还原为默认图标,不能右键打开(部分功能重启或注销后方能生效)

2.2功能描述

2.2.1 文本编辑区

本程序的编译框架为MFC,功能的实现使用的是模块化的编程方式进行,由于使用的是MFC可视化编程,所以其中的很多过程使用的是相关的系统自带函数实现的,其中整个编辑器的编辑区使用的是MFC自动生成的文本框,但是这个文本框没有插入符,不能实现文字编辑功能,所以需要在程序的CEasyTXTView中插入一些特定的文本编辑函数,如插入符函数cwnd::createsolidcreat,这个函数默认的为隐藏,所以在后面需要showcreate()才能正常显示,而整个编辑器的操作编辑部分使用的是一个独立的*.CPP 进行控制的,代码中使用的是图形至于文本输入的下方并设置为透明,在下面的文本编辑区下层有一张写有内容的图片作为装饰,换行等动作惠济路插入符位置并按照坐标进

行绘制,文本框的大小改变等会导致文本编辑区的重绘,所以在改变文本框时必须调用函数对文本框中的内容进行保存,相关代码如下所示:

BOOL CBmpEdit::OnEraseBkgnd(CDC* pDC)

{

CDC memDC;

memDC.CreateCompatibleDC(pDC);//创建内存设备上下文

memDC.SelectObject(&m_Bitmap);//将位图选入设备上下文

BITMAP m_Bmp; //声明位图控件

m_Bitmap.GetBitmap(&m_Bmp); //获得位图信息

int x = m_Bmp.bmWidth; //获取图片宽度

int y = m_Bmp.bmHeight; //获取图片高度

CRect rect; //声明矩形区域对象

GetClientRect(rect); //获取编辑区大小矩形框

pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&memDC,0,0,x,y,SRCCOPY); //伸展铺上图片

memDC.DeleteDC();//释放内存设备上下文

return TRUE; //return CEdit::OnEraseBkgnd(pDC);

}

void CBmpEdit::OnChange()

{

Invalidate(); //刷新用户界面

}

HBRUSH CBmpEdit::CtlColor(CDC* pDC, UINT nCtlColor)

{

pDC->SetBkMode(TRANSPARENT); //设置文字背景透明

return NULL;

}

void CBmpEdit::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar * pScrollBar) {

CEdit::OnVScroll(nSBCode, nPos, pScrollBar); //判断滚动条是否滑动

Invalidate(); //刷新用户界面

}

void CBmpEdit::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)

{

int n1,n2;

n1 = GetScrollPos (SB_VERT);

CEdit::OnKeyDown(nChar, nRepCnt, nFlags);

n2 = GetScrollPos (SB_VERT);

if (n1 != n2) //判断滚动条是否滑动

{

Invalidate(); //刷新用户界面

}

}

BOOL CBmpEdit::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)

{

BOOL editS = CEdit::OnMouseWheel(nFlags, zDelta, pt);

Invalidate(); //刷新用户界面

return editS;

}

2.2.2 文件

新建

新建菜单使用的是MFC自带的系统函数中的FILE等函数指令在massagebox的功能实现模块,其中在新建文档的时候需要对文本的编辑区进行判断,对文本框中存在的文本进行存档,而新建的文档就是对文本编辑区进行重绘,对原有的内容进行存储和销毁,详细代码如下所示:

void CEasyTXTDlg::OnMenuNew()

{//新建前对现有文本的的处理

isModified = m_Edit.GetModify();//获取文本修改标记

CString string;

m_Edit.GetWindowText(string);

if (isNew && string.IsEmpty())//若是新建文本且文本无内容内容

{

;

}

else if(isModified) //如果文本已被修改,分情况讨论

{

int Choice = MessageBox("当前文本已被修改,想保存吗?","系统提示", MB_YESNO|MB_ICONQUESTION); //弹出消息对话框询问

if(Choice==IDYES) //选择“是”

{

OnMenuSave();//调用保存函数保存文件

}

}//新建

m_Edit.SetSel(0, -1); //全部选中文本内容

m_Edit.Clear();//将所有文本删除

isNew = TRUE; //标记为新建文本

m_Edit.SetModify(FALSE); //文本修改标记设为未修改

}

打开

菜单栏的打开使用的拖入和图标打开,其中使用了MFC中自带的打开对话框,这样的使用和拖入的使用均是使用了自带的函数,其中重点是在运行的过程中对绝对路径的获取以及特定格式文件的打开和提取,对不正确的格式进行massagebox的消息盒子提醒,详细代码如下:

void CEasyTXTDlg::OnDropFiles(HDROP hDropInfo)

{

char *lpszFileName=new char[512];

int nFileCount,i; nFileCount=::DragQueryFile

(hDropInfo,0xFFFFFFFF,NULL,512);

for (i=0;i

{

UINT nChars=::DragQueryFile (hDropInfo,i,&lpszFileName[0],512);

CString str(&lpszFileName[0],nChars); //获得文件路径//打开前对现有文本的的处理

isModified = m_Edit.GetModify();//获取文本修改标记

CString string;

m_Edit.GetWindowText(string);

if (isNew && string.IsEmpty())//若是新建文本且文本无内容内容

{

;

}

else if(isModified) //如果文本已被修改,分情况讨论

int Choice = MessageBox("当前文本已被修改,想保存吗?","系统提示",

MB_YESNO|MB_ICONQUESTION); //弹出消息对话框询问

if(Choice==IDYES) //选择“是”

{

OnMenuSave();//调用保存函数保存文件

}

}

CString strText="";

SavePath = str;

int n = SavePath.ReverseFind('.');

CString stl = SavePath.Right(SavePath.GetLength() - n - 1);

if (stl == "txt" || stl == "TXT" || stl == "c" || stl == "C" || stl == "cpp" || stl == "CPP"

|| stl == "h" || stl == "H" || stl == "xml" || stl == "XML" || stl == "html" || stl == "HTML")

{

CFile file(str,CFile::modeReadWrite); //以读与写方式打开文件//拖入打开

m_Edit.SetSel(0, -1); //全部选中文本内容

m_Edit.Clear();//将所有文本删除

char read[50000];

file.Read(read,50000); //读取文件内容

for(unsigned i=0;i

{

strText += read[i]; //把文件内容赋值给CString变量

}

file.Close();//关闭文件

m_Edit.SetWindowText(strText);

isNew = FALSE; //标记为打开文本

m_Edit.SetModify(FALSE); //文本修改标记设为修改

}

else

{

MessageBox ("不支持的文件类型!","打开错误");

}

::DragFinish (hDropInfo); //释放内存

i=0;

delete []lpszFileName;

}

void CEasyTXTDlg::OpenFile()

{

CString strCmdLine = GetCommandLine();

int totalLen = strCmdLine.GetLength();

int i = 0;

int index = 0;//循环统计字符个数

for (i = 0,index = 0; i < 3; i++,index ++)

{

index = strCmdLine.Find("\"", index); //查找字符串

}

if (index != 0)

{

for (i = index;i < totalLen - 1;i ++)

SavePath += strCmdLine.GetAt(i);

int n = SavePath.ReverseFind('.');

CString stl = SavePath.Right(SavePath.GetLength() - n - 1);

if (stl == "txt" || stl == "TXT" || stl == "c" || stl == "C" || stl == "cpp" || stl == "CPP"

|| stl == "h" || stl == "H" || stl == "xml" || stl == "XML" || stl == "html" || stl == "HTML")

{

CString strText;

CFile file(SavePath,CFile::modeReadWrite); //以读与写方式打开文件

char read[50000];

file.Read(read,50000); //读取文件内容

for(unsigned i=0;i

{

strText += read[i];//把文件内容赋值给CString变量

}

file.Close();//关闭文件

m_Edit.SetWindowText(strText); //在编辑框中显示文件内容

m_Edit.SetModify(FALSE); //文本修改标记设为未修改

isNew = FALSE;

Invalidate();

}

else

{

MessageBox ("不支持的文件类型!","打开错误");

m_Edit.SetModify(FALSE); //文本修改标记设为未修改

isNew = TRUE;

}

}

else

{

m_Edit.SetModify(FALSE); //文本修改标记设为未修改

isNew = TRUE;

}

m_Edit.SetSel(0,0);

}

保存

保存使用的是MFC中自带的模块进行的,第一次的保存即为另存为,当文档已经创建以后,文本的保存就改变为把文本编辑区的内容重新写入同一个绝对地址的文本文档中,其中声明和调用的详细代码如下:

void CEasyTXTDlg::OnMenuSave()

{

if (isNew) //对新建且未保存的文本调用“另存为”进行保存

{

OnMenuSaveas();//新建文本已保存

}

else//对打开的文件修改后进行保存

{

CString strText="";

char write[50000];

CFile file(_T(SavePath),CFile::modeCreate|CFile::modeReadWrite);//以读与写方式创建文件

m_Edit.GetWindowText(strText); //获取编辑框中的内容

strcpy(write,strText); //将编辑框中的内容赋值给字符串数组

file.Write(write,strText.GetLength());//把编辑框中的内容写入文件

file.Close(); //关闭文件

m_Edit.SetModify(FALSE); //设置修改标记为未修改

}

m_Edit.SetSel(0,0);

}

另存为

另存为是一种特殊的保存形式,另存为在应用的时候是用户用过FILE等函数寻找一个绝对地址并按照现有格式进行保存,在今后的另存为命令中,不会对相同绝对地址相同文件名的文件进行保存,而是在弹出消息对话框用户确认覆盖操作以后才将原有的文件进行删除操作然后把新内容的文件生成在用户选定的绝对地址下,详细代码如下:void CEasyTXTDlg::OnMenuSaveas()

{

CFileStatus fs; //文件存在状态

CFileDialog dlg(FALSE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, "All Files(*.txt)|*.txt||",AfxGetMainWnd()); //构造“文件另存为”对话框

CString strPath,strText="";

char write[50000];

if(dlg.DoModal() == IDOK) //判断按下“另存为”

{

strPath = dlg.GetPathName(); //获取文件另存为路径

if(strPath.Right(4) != ".txt")

{

strPath += ".txt"; //设置文件扩展名为txt }

if(CFile::GetStatus(_T(strPath),fs)) //如果文件存在

{

CString info = strPath;

info += " 已存在。\r\n要替换它吗?";

int nChoice = MessageBox (info,"另存为",MB_ICONWARNING|MB_YESNO); //弹出确认替换消息

if (nChoice == IDYES) //如果确认替换

{

SavePath = strPath; //获取保存新建文本的路径

CFile file(_T(strPath),CFile::modeCreate|CFile::modeWrite); //以只写方式创建文件

m_Edit.GetWindowText(strText); //获取编辑框中的内容

strcpy(write,strText); //将编辑框中的内容赋值给字符串数组

file.Write(write,strText.GetLength()); //把编辑框中的内容写入文件

file.Close(); //关闭文件

isNew = FALSE;

m_Edit.SetModify(FALSE);

}

else//不替换

{

OnMenuSaveas(); //弹出另存对话框

}

}

else//如果文件不存在

{

SavePath = strPath; //获取保存新建文本的路径

CFile file(_T(strPath),CFile::modeCreate|CFile::modeWrite); //以只写方式创建文件

m_Edit.GetWindowText(strText); //获取编辑框中的内容

strcpy(write,strText); //将编辑框中的内容赋值给字符串数组

file.Write(write,strText.GetLength()); //把编辑框中的内容写入文件

file.Close();

isNew = FALSE;

m_Edit.SetModify(FALSE);

}

}

m_Edit.SetSel(0,0);

CRect rect (15,80,586,686);

InvalidateRect(rect); //刷新用户界面

}

退出

void CEasyTXTDlg::OnClose()

{

isModified = m_Edit.GetModify(); //获取文本修改标记

CString string;

m_Edit.GetWindowText(string);

if (isNew && string.IsEmpty()) //若是新建文本且文本无内容内容

{

CDialog::OnClose(); //退出程序

}

else if(isModified) //如果文本已被修改,分情况讨论

{

int QuitChoice = MessageBox("当前文本已被修改,想保存吗?","系统提示",

MB_YESNOCANCEL|MB_ICONQUESTION); //弹出消息对话框询问if(QuitChoice==IDYES) //选择“是”

{

OnMenuSave(); //调用保存函数保存文件

if (isModified = FALSE)

CDialog::OnClose(); //退出程序

}

else if(QuitChoice==IDNO) //选择“否”

{

CDialog::OnClose(); //退出程序

}

else

{

return; //选择“取消”时不退出

}

}

else

{

CDialog::OnClose(); //如果文本未被修改则直接退出程序

}

}

2.2.3 编辑

撤销

撤销命令是系统自带的函数,使用是调用OnMenuUndo函数命令,详细代码如下所示:void CEasyTXTDlg::OnMenuUndo()

{

m_Edit.Undo(); //撤销上一次的编辑框中的操作(单级撤销)

}

删除

删除命令调用的是系统自带函数,使用的是OnMenuDelete函数命令,详细代码如下所示:

void CEasyTXTDlg::OnMenuDelete()

{

m_Edit.Clear(); //删除编辑框中当前选中的文本

}

剪切

剪切命令调用的是系统自带函数,使用的是OnMenueCut函数命令,详细代码如下所示:

void CEasyTXTDlg::OnMenuCut()

{

m_Edit.Cut(); //删除编辑控件中当前选中的文本,并将删除的文本拷贝到剪贴板中

}

复制

复制命令调用的是系统自带函数,使用的是OnMenuCopy函数命令,详细代码如下所

示:

void CEasyTXTDlg::OnMenuCopy()

{

m_Edit.Copy(); //将编辑框中的当前选中文本拷贝到剪贴板中

}

粘贴

粘贴命令调用的是系统自带函数,使用的是OnMenuPaste函数命令,详细代码如下所示:

void CEasyTXTDlg::OnMenuPaste()

{

m_Edit.Paste(); //在当前光标位置插入剪贴板内的文本

}

全选

全选命令调用的是系统自带函数,使用的是OnMenuSelectAll函数命令,详细代码如下所示:

void CEasyTXTDlg::OnMenuSelectAll()

{

m_Edit.SetSel(0, -1);//全部选中文本内容

}

2.2.4 应用

查找/替换

查找和替换命令使用的是串查询,按照匹配的媳妇筛选,如果替换,则在替换时判断是否为第一次的替换,替换时将记录字符串的位置并加以标记,按后进行替换,详细代码如下所示:

void CEasyTXTDlg::OnMenuFindReplace()

{

nindex = 0;

degree = FALSE;

index = 0;

dlg = new CFindReplaceDialog; //声明“查找/替换”对话框指针dlg->Create(FALSE,NULL); //创建“替换”对话框

dlg->ShowWindow(SW_SHOW); //显示“替换”对话框

long CEasyTXTDlg::OnFindReplace(WPARAM wParam, LPARAM lParam)

{

CString strText,repText; //声明字符串变量strText = dlg->GetFindString(); //获得查找字符串

CString str; //声明字符串变量m_Edit.GetWindowText(str); //获得编辑框中是文本

int len;

if(dlg->ReplaceAll()) //判断是否全部替换

{

strText = dlg->GetFindString(); //获得查找字符串

repText = dlg->GetReplaceString(); //获得替换字符串

len = repText.GetLength(); //获得替换字符串长度

str.Replace(strText,repText); //使用替换字符串替换查找字符串

m_Edit.SetWindowText(str); //将替换后的字符串显示在编辑框中

nindex =0; //设置查找位置为初始

m_Edit.SetModify(TRUE); //文本修改标记设为修改

m_Edit.SetSel(0,-1);

CRect rect (15,80,586,686);

InvalidateRect(rect); //刷新界面}

if(dlg->ReplaceCurrent()) //替换find = FALSE; //进行替换else

find = TRUE; //进行查找/声明整型变量

if(find) //判断是查找还是替换

{

len = strText.GetLength(); //获得要查找字符串的长度

}

else

{

CString left,right; //声明字符串变量

int num = strText.GetLength(); //获得查找字符串的长度

int strnum = str.GetLength(); //获得编辑框中文本长度

if(!degree) //判断为第一次替换index = str.Find(strText,nindex); //获得查找字符串在编辑框文本中的位置

if(index < 0)

{

nindex = 0;

degree = FALSE;

return 1;

}

left = str.Left(index); //获得替换字符串左侧的字符串

right = str.Right(strnum-index-num); //获得替换字符串右侧的字符串

repText = dlg->GetReplaceString(); //获得替换字符串

len = repText.GetLength(); //获得替换字符串长度

str = left + repText + right; //组合成新的字符串

m_Edit.SetWindowText(str); //在编辑框中显示新的字符串

m_Edit.SetModify(TRUE); //文本修改标记设

}

strText = dlg->GetFindString(); //获得查找字符串m_Edit.GetWindowText(str); //获得编辑框中是文本

index = str.Find (strText,nindex); //获得查找字符串在编辑框文本中的位置

m_Edit.SetSel(index,index+strText.GetLength()); //选中查找或替换的字符串

nindex = index+len; //设置起始查找位置

if (index >= 0)

{

degree = TRUE;

}

else

{

degree = FALSE;

nindex = 0;

}

m_Edit.SetFocus(); //编辑框获得焦点CRect rect1 (15,80,586,686);

InvalidateRect(rect1); //刷新界面

return 0;

}

字体设置

void CEasyTXTDlg::OnMenuFont()

{

// TODO: Add your control notification handler code here

CFont* TempFont = m_Edit.GetFont(); //获取编辑框当前字体LOGFONT LogFont;

TempFont->GetLogFont(&LogFont); //获取字体信息

CFontDialog dlg(&LogFont); //初始化字体信息

if(dlg.DoModal()==IDOK)

m_Font.Detach(); //分离字体

LOGFONT temp;

dlg.GetCurrentFont(&temp); //获取当前字体信息

m_Font.CreateFontIndirect(&temp); //直接创建字体

m_Edit.SetFont(&m_Font); //设置字体

}

}

统计字符串

void CEasyTXTDlg::OnMenuCountString()

{

CString str;

m_Edit.GetWindowText(str); //获取编辑框文本

CCountStringDlg dlg; //声明统计字符串对话框类对象 dlg.SetText(str);

dlg.DoModal(); //显示对话框

}

统计字数

void CEasyTXTDlg::OnMenuCountAll()

{

int nTotalLenth = 0; //总共字数

int nCLenth = 0; //中文

int nELenth = 0; //英文

int nNLenth = 0; //数字

int nBLenth = 0; //空格

int nEnLenth = 0; //半角字符

int nEnterLenth = 0; //回车

CString strText;

m_Edit.GetWindowText(strText);

int Lenth = strText.GetLength();

for(int i=0;i

{

char c = strText.GetAt(i); //获取当前字符中文字符

单片机电子时钟课程设计报告报告

目录 1、引言 (3) 2、总体设计 (4) 3、详细设计 (5) 3.1硬件设计 (5) 3.2软件设计 (10) 4、实验结果分析 (26) 5、心得体会 (27) 6、参考文献 (27)

摘要 单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习、应用,以AT89S51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由4.5V直流电源供电,通过数码管能够准确显示时间,调整时间,从而到达学习、设计、开发软、硬件的能力。 关键词:单片机AT89C51

1.引言 20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。 目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路装化等几个方面发展。下面是单片机的主要发展趋势。单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。

简易时钟设计讲解

等级: HUNAN INSTITUTE OF ENGINEERING 课程设计 课程名称_______ 单片机原理与应用课程设计__________ 课题名称______________ 简易时钟设计_______________ 专业_____________ 电子信息工程_______________ 班级______________ 电信1301班 _______________ 学号__________________ 31 ___________________ 姓名_________________ 彭颗___________________ 指导老师___________________ 林国汉_________________ 2016年3月25日

电气信息学院 课程设计任务书 课题名称 ________________________________ 简易时钟设计_________________________________ 姓名彭颗专业电子信息工程班级1301 学号01 指导老师 _____________________________________ 林国汉 __________________________________ 课程设计时间 ____________ 2016年3月14日-2016年3月25日(3、4周) _________________ 教研室意见意见:审核人: ____________________ 一、任务及要求 设计任务: 本课题要求以MCS-51系列单片机为核心,设计一个数字时钟。 (1)具有时钟和跑表功能,用LED或者液晶显示器进行显示;(2) 具有时钟调整功能 (3)具有闹钟功能,(4) *能将闹钟时间在AT24C02保存(5) *其它功能设计要求: (1)确定系统设计方案;(2)进行系统的硬件设计;(3)完成应用程序设计; (4)应用系统的硬件和软件的调试。 二、进度安排 第一周: 周一:集中布置课程设计任务和相关事宜,查资料确定系统总体方案。 周二?周三:完成硬件设计和电路连接 周四?周日:完成软件设计 第二周: 周一?周三:程序调试 周四?周五:设计报告撰写。周五进行答辩和设计结果检查。 三、参考资料 1、51单片机C语言教程郭天祥编著电子工业出版社 2、单片机原理与应用第2版王迎旭主编机械工业出版社 3单片机原理与应用及C51程序设计杨加国清华大学出版社,2009

简单文本编辑器——课程设计(delphi)

目录 1内容简介 (3) 2程序设计流程及方法 (3) 2.1 设计思路 (3) 2.2 事件响应方法 (4) 3测试结果 (5) 3.1调试方法 (5) 3.2调试过程 (5) 3.3调试结果 (6) 4分析与探讨 (8) 4.1 函数的使用 (8) 4.2 人性化设计 (9) 独立性声明 (11) 一个简单的文本编辑器

一、内容简介 为满足个人的个性需求,为此设计一个有着自己特色的文本编辑器,实现自己的特定用途。 本实例程序可以对文本进行基本的编辑;能执行基本的文件操作;同时它的状态栏具有提示信息、显示时间及当前光标位置的功能。 而重点在于熟悉Delphi中ObjectTreeView、ObjectInspector等的用法及相应的属性设置以及一些插件的使用。源代码的编写是重中之重。 开发的这个类似于“写字板”的程序,不过功能要相对简单一些。该程序的主要功能包括: 1、能执行基本的文件操作,包括新建、打开、保存一个文本文件 2、能对文本进行基本的编辑操作,包括剪切、复制、粘贴、删除、选择及查找 3、能对文本进行简单的格式化操作,包括改变文本的字体、字号、对其方式等 4、可以在状态栏显示提示信息、当前光标位置以及系统日期和时间 二、程序设计流程及方法 (一)、设计思路 基本思路:先创建一个窗体,添加菜单栏,工具栏以及状态栏,然后利用ActionManger建立一些基本指令,通过修改基本指令的属性来制作菜单和快捷键,并把它们放到菜单栏和工具栏边上。然后再添加一个ComboEx和Edit来作为字体的模式和大小的设置项,这样就建立起了一个用户界面和完成了部分功能,对于不能直接通过属性设置的功能,则通过编写时间的源代码来实现。 按照面向对象程序的设计方法,在应用程序框架下,利用VCL(Visual Compoment Library,可视化组件)进行填充,本程序将用到Delphi7提供的RichEdit、ImageList、ActionManger、ActionMainMenuBar、ActionToolBar和StatusBar组件。 在ActionManger组件中,将使用Delphi 7提供的一些标准的指令,这样可

《数字逻辑》数字时钟课程设计报告资料

《数字逻辑》课程设计报告 题目数字时钟 学院(部)信息工程学院 专业计算机科学与技术 班级计算机一班 学生姓名 学号20132402 6 月29 日至 7 月 3 日共1 周 指导教师(签字)

题目 一.摘要: 钟表的数字化给人们的生产生活带来了极大的方便,并且极大的扩展了钟表原先的报时功能。诸如定时自动报有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常警、学校的按时自动打铃、时间程序自动控制、定时广播、定时启闭路灯,甚至各种定时电气的自启用等。所现实的意义。本次数电课设我组设计的数字时钟是由石英晶体振荡器、分频器、计数器、译码器、显示器、校时电路、报时电路和计时电路组成,石英晶体振荡器产生的信号经过分频器作为秒脉冲,秒脉冲送入计数器计数,计数结果通过“时”、“分”、“秒”译码器在七段显示器上显示时间。 二.关键词: 校时计时报时分频石英晶体振荡器 三.技术要求: 1、有“时”、“分”、“秒”(23小时59分59秒)显示且有校时功能; 2、有计时功能,时钟不会在计时的时候停下。计时范围是0~99秒; 3、有闹铃功能,闹铃响的时间由使用者自己设置,闹铃时间至少一分钟; 4、要在七段显示器(共阴极6片)显示时间; 5、电子钟要准确正常地工作。 四、方案论证与选择: 钟表的是长期使用的器件,误差容易积累由此增大。所以要求分频器产生的秒脉冲要极其准确。而石英晶体产生的信号是非常稳定的,所以我们使用石英晶体产生的信号经过分频电路作为秒脉冲。秒脉冲信号经过6级计数器,分别得到“秒”、“分”、“时”的个位、十位的计时。由实际的要求,“秒”、“分”计数器为60进制的计数器,小时为24进制。由于74LS160十进制加法计数器易于理解使用,我们在设计各个计数器时都是由采用74LS160芯片级联构成。在计时部分,最小单位是0.01s,我们采用555多谐振荡器产生100HZ的信号作为秒脉冲进入一个4级计数器,计时范围是0~99秒。石英晶体

单片机课程设计--简易电子钟.doc

单片机课程设计报告设计课题:简易电子时钟的设计 专业班级:07通信1班 学生姓名:黎捐 学号:0710618134 指导教师:曾繁政 设计时间:2010.11.5—2010.12.20

一、设计任务与要求 (1)设计任务: 利用单片机设计并制作简易的电子时钟,电路组成框图如图所示。 (2)(2) 设计要求:1)制作完成简易的电子时钟,时间可调整。 2)有闹钟功能。 二、方案设计与论证 简易电子时钟电路系统由主体电路和扩展功能电路两主题组成,总体功能原理是以STC89C52单片机为主要的控制核心,通过外接4个独立式键盘作为控制信号源,八个七段数码管作为显示器件,蜂鸣器作为定时器件,单片机实时的去执行相应的功能。在数码管上显示出来,此时通过不同的按键来观看和调节各种数据。CPU 控制原理图如图1所示。 图1. CPU 控制原理图 三、硬件系统的设计 3.1 STC89C52控制模块 STC89C52是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O )端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,STC89C51可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash 存储器结合在一起,特别是可反复擦写的Flash 存储器可有效地降低开发成本。 MCS-52单片机内部结构 8052单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明: 中央处理器: 中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU 负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。 数据存储器(RAM): 8052内部有128个8位用户数据存储单元和128 个专用寄存器单元,它们是统一编 时间显示显示 主控器(51单片机) 时间 调整 声音报 时 (选做)

单片机简易时钟课程设计

目录 1.概论 (1) 2.整体设计思路 (2) 2.1硬件各部分所能完成的功能 (3) 2.2系统工作原理 (4) 2.3时钟各功能分析及图解 (4) 2.4.1电路各功能图解分析 (4) 2.4.2电路功能使用说明 (7) 3. 软件设计思路 (8) 3.1 主程序模块 (8) 3.2 数码管动态扫描模块 (9) 3.3 当前时间计时模块 (9) 3.4 闹钟输入输出模块 (10) 3.5 当前时间调整模块 (12) 3.6复位模块 (13) 4.系统的调试和性能分析 (14) 4.1系统的调试方法 (14) 4.1.1输入按键的调试 (14) 4.1.2复位电路的调试 (14) 4.1.3显示电路的调试 (14) 4.1.4整个系统的联调 (14) 4.2心得体会 (15) 参考文献 (15) 附录 (16) 附录A 系统原理图 (16) 附录B 程序源代码 (17) 电气信息学院课程设计评分表 (28)

1.概论 单片机系统作为一种典型的嵌入式系统,其系统设计包括硬件电路设计和软件编程设计两个方面,其调试过程一般分为软件调试、硬件测试、系统调试3个过程。如果采用单片机系统的虚拟仿真软件——Proteus,则不用制作具体的电路板也能够完成以上工作。数字钟是采用数字电路实现对时,分,秒,数字显示的计时装置,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表的报时功能。数字钟已成为人们日常生活中的必需品,广泛应用于家庭、车站、码头、剧院、办公室等场所,给人们的生活、学习、工作带来极大的方便[4]。不仅如此,在现代化的进程中,也离不开电子钟的相关功能和原理,比如机械手的控制、家务的自动化、定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。而且是控制的核心部分。因此,研究数字钟及扩大其应用,有着非常现实的意义。 电子钟在工业控制和日常生活中是很重要的,它不仅可以用于计时、提醒又可用于对机器的控制,在自动化的过程中必然有电子钟的参与,因此电子钟的应用会越来越广泛。而且向着精确、低功耗、多功能发展。基于单片机设计的数字钟精确度较高,因为在程序的执行过程中,任何指令都不影响定时器的正常计数,即便程序很长也不会影响中断的时间。从而,使数字钟的精度仅仅取决于单片机的产生机器周期电路和定时器硬件电路的精确度。另外,程序较为简洁,具有可靠性和较好的可读性。如果我们想将它应用于实时控制之中,只要对上述程序和硬件电路稍加修改,便可以得到实时控制的实用系统,从而应用到实际工作与生产中去。 数字电子钟的设计方法有多种,例如,可用中小规模集成电路组成电子钟,也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟还可以利用单片机来实现电子钟等等。这些方法都各有特点,其中,利用单片机实现的电子钟具有编程灵活,便于功能扩充,精确度高等特点。

定时闹钟设计课程设计报告

定时闹钟设计 摘要: 本设计目的是利用单片机设计制作一个简易的定时闹铃时钟,可以放在宿舍或教室使用,在夜晚或黑暗的场合也可以使用。可以设置现在的时间以及闹铃的时间并且显示出来,若时间到则发出一阵声响。 本次设计的定时闹钟在硬件方面就采用了AT89C52芯片,用6位LED数码管进行显示。LED用P0口进行驱动,采用的是动态扫描显示,能够比较准确显示时时—分分—秒秒。通过五个功能按键可以实现对时间的修改、定时和闹铃终止,闹钟设置的时间到时蜂鸣器可以发出声响。在软件方面用C51编程。整个定时闹钟系统能完成时间的显示,调时和设置闹钟、停止响铃等功能,并经过系统仿真后得到了正确的结果。 关键词:定时闹钟;蜂鸣器;AT89C52;74HC245;

目录

第1章绪论 设计目的 本次课程设计的主题是定时闹钟,其基础部分是一个数字钟。电路系统由秒信号发生器、“时、分、秒”计数器、显示器组成。其中秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,这里用51单片机的定时器来实现。利用定时器获得每一秒的时刻,然后在程序中,我们就可以给秒进行逐秒赋值,满60秒则进位为1分,满60分则进位为1小时,满24小时则时间重置实现一天24小时的循环。译码显示电路将“时”、“分”、“秒”计数器的输出状态送到七段显示译码器译码,通过一个六位八段数码管显示出来。 这里利用51单片机的相关知识,来实现电子闹钟的相关功能。实验使用了 AT89C52、74HC245等芯片,通过单片机的P0、P3管脚来驱动数码管显示出相应的时刻。本文将讲述AT89C52、74HC245等芯片的基本功能原理,并重点介绍该电子闹钟的设计。 设计要求和任务 使用6位七段LED显示器来显示现在的时间;显示格式为“时时分分秒秒”;具有4个按键来做功能设置,可以设置现在的时间及显示闹铃设置时间;时间到则发出一阵声响,可通过按键复位;对单片机系统设计的过程进行总结,认真书写课程设计报告并按时上交。 利用51单片机结合七段LED显示器设计一个简易的定时闹铃时钟,可以放在宿舍或教室使用,由于用七段LED显示器显示数据,在夜晚或黑暗的场合也可以使用。可以设置现在的时间及显示闹铃设置时间,若时间到则发出一阵声响。 论文主要内容 论文分别叙述从硬件和软件上实现该设计的过程。第2章为总体设计方案。第3章主要介绍设计实现需要解决的硬件问题。依次介绍所使用的各种硬件的使用方法,并附上仿真电路图和文字说明。第4章从软件的角度说明实现该设计需要解决的问题。

简易电子时钟的设计

单片机课程设计报告设计题目:简易电子时钟的设计 院别: 专业班级: 学号:

姓名: 指导教师: 摘要 通过一学期单片机的学习,对其已经有了初步的了解,但是随着社会的不断发展,单片机的应用正在不断地走向深入,它特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。我们也借此课程设计的机会,对单片机有更深一步的了解与学习。 本次课程课程设计的目的是设计一个简易的电子时钟,通过一个8位共阴极数码管进行时、分、秒的显示,另外设置7个按键,一个用来调整小时,一个用来调整分钟,一个开关控制是否调整时间。 关键词:AT89C51,数码管,按键,DS1303时钟芯片

1.概述 本设计是锻炼我们的自学能力合作能力,依靠团队的力量去完成一项具体的任务系统的训练了所学知识,设计的过程必将是难忘的,这也将是大学向社会工作过度的一个重要阶段。 本阶段过后要去能够熟练的运用单片机中的计数器、定时器、中断、数码管显示等参考教材或者相关资料,采用C语言实现数字时钟功能,在数码管上实时显示,并运用Protues软件绘制电路原理图,并进行仿真验证和误差分析。 2.系统总体方案设计 2.1系统方案的确定 用6位数码管,可以显示出时、分、秒;用P2端口控制位选,由定时器进行时间的控制(秒);当总按键按下时可以进行时间调整; 2.2方案分析 2.3系统总框图 图2.1

3.系统硬件系统设计 3.1复位电路 单片机复位电路就好比电脑的重启部分,当电脑在使用中出现死机,按下重启按钮电脑内部的程序从头开始执行。单片机也一样,当单片机系统在运行中,受到环境干扰出现程跑飞的时候,按下复位按钮内部的程序自动从头开始执行。 复位电路的工作原理: 在单片机系统中,系统上电启动的时候复位一次,当按键按下的时候系统再次复位,如果释放后再按下,系统还会复位。所以可以通过按键的断开和闭合在运行的系统中控制其复位。单片机复位电路如下图 图3.1 3.2时钟电路 单片机运行需要时钟支持——就像计算机的CPU一样,如果没有时钟电路来产生时钟驱动单片机,那单片机就不能执行程序。 单片机可以看成是在时钟驱动下的时序逻辑电路。 以5l单片机为例随明:51单片机为l2个时钟周期执行一条指令。也就是说单片机运行一条指令,必须要用r2个时钟周期。没有这个时钟,单片机就跑不起来了,也没有办法定时和进行和时间有关的操作。 时钟电路是微型计算机的心脏,它控制着计算机的二个节奏。CPU就是通过复杂的时序电路完成不同的指令功能的。51的时钟信号可以由两种方式产生:一种是内部方式,利用芯片内部的振荡电路,产生时钟信号:另一种为外部方式,时钟信号由外部引入。

OPT算法和简单文本编辑器

通达学院 专业课程设计I 题目1 OPT算法模拟实现 题目2 文本编辑器 专业 学生姓名 班级学号 指导教师 指导单位计算机学院、软件学院日期

OPT算法模拟实现(OS类) 一、课题内容和要求 内容:学习虚拟存储机制中页面调度算法,通过编程模拟实现页面调度的OPT算法,进一步理解页面调度的OPT算法的概念及含义,提高对OPT页面调度算法的认识,同时提高自己动手实践的能力。加深对主存与辅助存储器统一管理、逻辑地址与物理地址转换、页序列走向的装入和替换问题的理解,同时有利于对存储技术的理解。 要求:利用C语言或是C++设计编程,完成OPT算法的设计,表示页序列走向的装入和替换,算出缺页中断率。 二、概要设计 OPT算法即最佳优先算法,实质是通过调页功能和页面置换功能,陆续把即将要运行的页面调入内存,并且把暂时不运行的页面从内存在删除,置换时以页面为单位,算出缺页次数和缺页率,缺页数用diseffect 表示,页面序列数m,初始值diseffect=0,缺页率= diseffect /m。 用C语言设计OPT算法的程序,可以模拟实现算法,在理论联系实际的基础上,分析各个OPT页面置换算法的直接访问或是缺页中断,然后替换的过程。为了能实现OPT请求调页和置换功能,在VC++6.0上编程模拟实现。该算法选择永不使用的或是在最长时间内不再被访问的页面进行置换,这是理想化算法,具有最好的性能,淘汰访问串中将来再也不出现的或者是在离当前最远的位置上出现的页,这样淘汰掉该页将不会造成因需要访问该页又立即把它调入的现象。这种算法难以实现,因为它要求必须预先知道每一个进程的访问串。实验中在对操作系统的整体把握上,将操作系统的OPT算法用于实践中去,模拟出页面调度算法得出缺页率。 具体实验程序流程图如下:

数字电子钟课程设计实验报告

中北大学 信息与通信工程学院 通信工程专业 《电子线路及系统》课程设计任务书2016/2017 学年第一学期 学生姓名:张涛学号: 李子鹏学号: 课程设计题目:数字电子钟的设计 起迄日期:2017年1月4日~2017年7月10日 课程设计地点:科学楼 指导教师:姚爱琴 2017年月日 课程设计任务书

中北大学 信息与通信工程学院 通信工程专业 《电子线路及系统》课程设计开题报告2016/2017 学年第一学期 题目:数字电子钟的设计 学生姓名:张涛学号: 李子鹏学号:

指导教师:姚爱琴 2017 年 1 月 6 日 中北大学 信息与通信工程学院 通信工程专业 《电子线路及系统》课程设计说明书2016/2017 学年第二学期 题目:数字电子钟的设计 学生姓名:张涛学号: 李子鹏学号: 指导教师:姚爱琴 2017 年月日

目录 1 引言 (6) 2 数字电子钟设计方案 (6) 2.1 数字计时器的设计思想 (6) 2.2数字电路设计及元器件参数选择 (6) 2.2.2 时、分、秒计数器 (7) 2.2.3 计数显示电路 (8) 2.2.5 整点报时电路 (10) 2.2.6 总体电路 (10) 2.3 安装与调试 (11) 2.3.1 数字电子钟PCB图 (11) 3 设计单元原理说明 (11) 3.1 555定时器原理 (12) 3.2 计数器原理 (12) 3.3 译码和数码显示电路原理 (12) 3.4 校时电路原理 (12) 4 心得与体会 (12) 1 引言 数字钟是一种用数字电子技术实现时,分,秒计时的装置,具有较高的准确性和直观性等各方面的优势,而得到广泛的应用。此次设计数字电子钟是为了了解数字钟的原理,在设计数字电子钟的过程中,用数字电子技术的理论和制作实践相结合,进一步加深数字电子技术课程知识的理解和应用,同时学会使用Multisim电子设计软件。 2数字电子钟设计方案 2.1 数字计时器的设计思想 要想构成数字钟,首先应选择一个脉冲源——能自动地产生稳定的标准时间脉冲信号。而脉冲源产生的脉冲信号地频率较高,因此,需要进行分频,使得高频脉冲信号变成适合于计时的低频脉冲信号,即“秒脉冲信号”(频率为1Hz)。经过分频器输出的秒脉冲信号到计数器中进行计数。由于计时的规律是:60秒=1分,60分=1小时,24小时=1天,就需要分别设计60进制,24进制计数器,并发出驱动信号。各计数器输出信号经译码器、驱动器到数字显示器,是“时”、“分”、“秒”得以数字显示出来。 值得注意的是:任何记时装置都有误差,因此应考虑校准时间电路。校时电路一般

数字时钟课程设计方案设计方案

课程设计题目名称:数字时钟 专业名称:电气工程及其自动化班级: ******** 学号: *******8 学生姓名: ******* 任课教师: *******

《电子技术课程设计》任务书

2.对课程设计成果的要求〔包括图表(或实物)等硬件要求〕:设计电路,安装调试或仿真,分析实验结果,并写出设计说明书,语言流畅简洁,文字不得少于3500字。要求图纸布局合理,符合工程要求,使用Protel软件绘出原理图(SCH)和印制电路板(PCB),器件的选择要有计算依据。 3.主要参考文献:⑴《电子技术课程设计指导》彭介华编,高等教育出版社,1997年10月 ⑵《数字电子技术》康华光编著高等教育出版社, 2001年 要求按国标GB 7714—87《文后参考文献著录规则》书写。 4.课程设计工作进度计划: 序号起迄日期工作内容 初步设想和资料查询,原理图的绘画 1 2015.11.18-2015.12.21 仿真调试,元件参数测定,实物的拼接与测试 2 2015.12.21-2016.1.8 叙写设计报告,总结本次设计,论文提交 3 2016.1.8-2016.1.18 主指导教师日期:年月日

摘要 数字时钟已成为人们日常生活中必不可少的必需品,广泛于个人家庭以及办公室等公共场所,给人们的生活、学习、工作、娱乐带来了极大的方便。并且数字时钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。报告围绕此次数字钟的设计进行介绍、总结,包含了设计的步骤,前期的准备,装配的过程。在实装时,采用了74LS90进行计数,用CD4060产生秒脉冲,CD4511进行数码管转换显示,还要考虑电路的校时、校分,每块芯片各设计为几进制等等,最后实现了数字钟设计所要求的各项功能:时钟显示功能;快速校准时间的功能。 关键字:数字时钟校时CD4511

几种常用网页文本编辑器总结

文本编辑器应用总结 一.lhgeditor文本编辑器 lhgeditor组件文件结构: 1. lhgeditor.js:组件的核心JS文件 2. lhgeditor.css:组件的样式表文件 3. images:组件所需的图片都在此文件夹中 以上三个文件为组件所必须的三个文件,组件包中其它以“_”开头的文件为示例的演示文件,实际使用中不需要这些文件。当然框架核心文件lhgcore.js是每个组件都必须用到的文件,记得加载组件前先要加载此文件。 lhgeditor组件使用说明: 1. 在调用组件的页面加载lhgcore.j s和lhgeditor.js两个文件。 2. 在window.onload函数里加入J.editor.add(编辑器的id).init(); 例:

二.nicEdit文本编辑器