数字钟课程设计程序

2024-06-15

数字钟课程设计程序(精选8篇)

篇1:数字钟课程设计程序

#include

void chuanshu(void);

void shuchu(void);

void saomiao(void);

void delay(void);

unsigned int t;

unsigned char m;

unsigned char shi,fen,miao;

unsigned char code duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};unsigned char code wei[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};

unsigned charxianshi[8]={0,0,0,0,0,0,0,0};

sbit DS=P2^2;

sbit ST_CP=P2^3;

sbit SH_CP=P2^4;

sbit key1=P3^2;

sbit key2=P3^3;

sbit key3=P3^4;

sbit key4=P3^5;

sbit niaoling=P1^0;

sbit dingshi=P1^1;

void delay(void)

{

char i,j;

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

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

}

void chuanshu(void)

{

unsigned char b,c,num;

if(b==0)

{

b++;

num=wei[m];//把位选放在第二个74hc595芯片上

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

{SH_CP=0;

DS=num&0x80;

num=num<<1;

SH_CP=1;//上升沿发生移位

}

}

if(b==1)

{

b--;

if(m==2||m==5)

{num=0xbf;}

else

{

num=duan[xianshi[m]];}

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

{SH_CP=0;

DS=num&0x80;

num=num<<1;

SH_CP=1;//数据在SH_CP的上升沿输入}

}

m++;

if(m==8)

{m=0;

}

}

void shuchu(void)

{ ST_CP=0;

ST_CP=1;//上升沿将数据送到输出锁存器

}

void saomiao(void)

{

if(key1==0)

{

delay();

if(key1==0)

{

miao=0;

while(key1==0);

}

}

xianshi[0]=miao%10;xianshi[1]=miao/10;

if(key2==0){

delay();

if(key2==0){

fen++;

while(key2==0);if(fen==60){

fen=0;}

}

}

xianshi[3]=fen%10;xianshi[4]=fen/10;

if(key3==0){

delay();

if(key3==0){

shi++;

while(key3==0);if(shi==24){

shi=0;}

}

}

xianshi[6]=shi%10;xianshi[7]=shi/10;

if(key4==0){

delay();

if(key4==0){

miao=0;fen=0;shi=0;}

}

}

void main(void)

{

TMOD=0X01;

TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;

ET0=1;

TR0=1;

while(1)

{

saomiao();

chuanshu();shuchu();

}

}

void time0()interrupt 1{

t++;

if(t==20)

{t=0;

miao++;

if(miao==60){miao=0;fen++;

if(fen==60){fen=0;shi++;

if(shi==24){shi=0;}}}

}

}

篇2:数字钟课程设计程序

C语言数字钟程序

#include“stdio.h” void clock(int t);void main(){ int t,i,j,n;for(t=0;t<10;t++){ clock(t);sound(590);for(n=0;n<4;n++){ delay(100000000);} nosound();for(n=0;n<6;n++){ delay(100000000);} for(j=8;j<=18;j++){ for(i=1;i<=80;i++){ gotoxy(i,j);putchar(0);} } } } void clock(int t){ int i,j;textcolor(11);if(t==0){ for(i=0;i<11;i++){ gotoxy(60,8+i);cprintf(“%c”,14);} for(i=0;i<11;i++){ gotoxy(51,8+i);cprintf(“%c”,14);} for(j=0;j<11;j+=10){ for(i=0;i<8;i++){ gotoxy(59-i,8+j);cprintf(“%c”,14);} } } if(t==1){ for(i=0;i<11;i++){ gotoxy(60,8+i);cprintf(“%c”,14);} } if(t==2){ for(j=0;j<2;j++){ for(i=0;i<6;i++){ gotoxy(60-j*8,8+i+j*5);cprintf(“%c”,14);} } for(j=0;j<11;j+=5){ for(i=0;i<9;i++){ gotoxy(60-i,8+j);cprintf(“%c”,14);} } } if(t==3){ for(i=0;i<11;i++){ gotoxy(60,8+i);cprintf(“%c”,14);} for(j=0;j<11;j+=5){ for(i=0;i<8;i++){ gotoxy(59-i,8+j);cprintf(“%c”,14);} } } if(t==4){ for(i=0;i<11;i++){ gotoxy(60,8+i);cprintf(“%c”,14);} for(i=0;i<6;i++){ gotoxy(52,8+i);cprintf(“%c”,14);} for(i=0;i<8;i++){ gotoxy(59-i,13);cprintf(“%c”,14);} } if(t==5){ for(j=0;j<2;j++){ for(i=0;i<6;i++){ gotoxy(52+j*8,8+i+j*5);cprintf(“%c”,14);} } for(j=0;j<11;j+=5){ for(i=0;i<9;i++){ gotoxy(60-i,8+j);cprintf(“%c”,14);} } } if(t==6){ for(j=0;j<2;j++){ for(i=0;i<6;i++){ gotoxy(52+j*8,8+i+j*5);cprintf(“%c”,14);} } for(i=0;i<6;i++){ gotoxy(52,13+i);cprintf(“%c”,14);} for(j=0;j<11;j+=5){ for(i=0;i<9;i++){ gotoxy(60-i,8+j);cprintf(“%c”,14);} } } if(t==7){ for(i=0;i<11;i++){ gotoxy(60,8+i);cprintf(“%c”,14);} for(i=0;i<8;i++){ gotoxy(59-i,8);cprintf(“%c”,14);} } if(t==8){ for(i=0;i<11;i++){ gotoxy(60,8+i);cprintf(“%c”,14);} for(i=0;i<11;i++){ gotoxy(52,8+i);cprintf(“%c”,14);} for(j=0;j<11;j+=5){ for(i=0;i<8;i++){ gotoxy(59-i,8+j);cprintf(“%c”,14);} } } if(t==9){ for(i=0;i<11;i++){ gotoxy(60,8+i);cprintf(“%c”,14);} for(i=0;i<6;i++){ gotoxy(52,8+i);cprintf(“%c”,14);} for(j=0;j<2;j++){ for(i=0;i<8;i++){ gotoxy(59-i,8+j*5);cprintf(“%c”,14);} } } }

篇3:数字钟课程设计程序

●Scratch程序设计教学背景

儿童数字文化创作课程是广州华南师大附小吴向东、王继华老师于2010年提出, 在课程中强调儿童借助技术对自己思想和观念的表达, 及在这样的表达中培养创新能力和提升数字文化素养。

当前, 小学信息技术教材中讲的大多是LOGO语言, 通过编程完成“图画”, 引起学生对程序设计的兴趣和积极性。在编程过程中学生需要掌握一定的指令语法和一定范围内的数学知识。因此, 课堂上, 学生开始学习时有一定的好奇心和积极性, 但往后学习就没有多大兴趣了。由于软件本身的局限性, 学习内容仅在“画图”和趣味数学编程, 不能从多方面培养学生的综合素养, 软件平台明显落后于时代。

而Scratch面向对象的程序设计语言可以使创作者充分发挥自己的创意, 指令模块颜色鲜艳形象, 操作简单, 学生可以轻松地创作蕴含着故事情节的动画、音乐、游戏和故事等。当学生进入到编程艺术创作中, 就会发现这一切都是让他们兴奋不已的。因此, Scratch是一种具有前瞻性的新兴计算机语言, 是适合儿童学习编程、表达自己想法的启蒙软件, 基于该平台开展小学程序设计教学可以顺应孩子的创作欲望, 激发他们的创造潜力, 让他们在创作中获得快乐、经验和提升能力。

●Scratch程序设计教学内容

我们通过对不同范例的学习和研究, 结合小学生认知规律和心理特点, 从美术、音乐、游戏、文学和故事等多个领域挑选出适合学生学习的范例和主题, 具体细化为互动艺术、数字动画、数码游戏、工程设计以及数字故事等模块。上册1~16课主要通过内建范例模仿学习, 在创作中感知Scratch程序设计的基础知识, 包括程序的结构、逻辑与变量、多媒体效果、侦测与控制等内容。下册17~30课主要是通过主题开展自由创作学习, 让学生自己提出想法, 学会使用程序解决问题并完成作品。

范例的挑选需注意到:学生知识的衔接和递增;脚本设计由简单到复杂;由单个到多个;前一课学到的脚本设计, 可以在后一课继续用到, 巩固所学内容;为学生提供设计风格各异的范例。

●Scratch程序设计教学模式

我校在开展基于Scratch平台的程序设计教学时, 借鉴广州华南师大附小王继华老师提出的“为创作而教”的教学方法, 领会新课程改革对学生自主学习、探究的重视, 在教学实施过程中尝试开发了两阶段四环节的教学模式, 图1为模仿创作阶段的教学流程, 图2为自由创作阶段的教学流程。

1. 模仿创作阶段的教学实施过程

(1) 创设情境, 提出主题

主要采用范例演示、范例试玩、表演剧情以及作品欣赏等教学方式引出学习内容。《跳舞的女孩》、《过大年》、《炫酷的音乐盒》这类数字动画课程的学习采用范例演示;《变变变》、《音图》这类互动艺术课程, 《胖胖吞吃鱼》、《敲小猫》这类数码游戏课程, 《投票选举》、《趣味摇奖》、《电子点单》这类工程设计课程, 《神奇图章》、《万花筒》这类数字艺术课程都采用的是范例试玩;有些课程《明明的思考》、《抓猫频道》这类具有情景的课程采用表演剧情。教学时间控制在3~5分钟内。

例如, 《投票选举》一课, 采用的是范例试玩 (见图1) , 案例片段如下所示。

师:上课前, 我们来开展一个活动。开学到现在, 605班一直没有信息课代表, 经过一段时间的观察, 老师挑选雷明轩和马千为候选人, 但是只有一位当选, 下面请咱们全班进行投票选举。

师:推选雷明轩同学的请在键盘上按一下A键, 推选马千同学的请在键盘上按下L键, 投票分两边进行, 不能悔票。

学生轮流上台投票, 体会投票的过程 (如图3) (教师一边观察, 一边用渲染的语言组织学生投票, 激起课堂的气氛) 。

(2) 范例研习, 自主学习

根据范例中脚本难易度和直观度, 学生能通过自己阅读尝试了解的, 就让学生自主研习;有些脚本是学生很难想到或不太直观的, 我则根据要研习的范例, 挑选出核心脚本, 用描述语言一边讲一边搭建脚本, 帮助学生理解指令模块和脚本表达的意思, 一般课中讲述不会超过12分钟。根据学生接受知识的特点, 学生看老师演示脚本搭建后, 不一定能完全理解, 此时, 范例就成为学生学习的支架, 学生可以借助范例继续思考探究, 以便掌握本节课所学到的设计, 推广并移植到自己的创作中。

例如, 《明明的思考》一课, 涉及链表应用, 学生从来没有接触过。因此, 我在范例中挑出核心脚本 (如图4) 和数据的添加 (如图5) , 通过模拟生活中人们翻来覆去思考一个问题的动画情景, 帮助学生理解Scratch中运用链表实现数据的获取、存储以及输出。

老师通过讲解和演示, 帮助学生解决创作过程中的难点, 学生对数据获取、存储和输出就有了初步了解和认识。学生再研习范例, 在此基础上设计创作自己的作品, 这样学生就可以较为轻松地去自主探索, 实现自己的想法。图6是学生创作的作品。

(3) 模仿设计, 探究新知

在教学中, 学生打开范例, 欣赏、阅读和尝试, 感悟和进一步理解作品设计方法, 获得新的想法;同时再打开一个新的Scratch窗口, 一边表达自己的想法一边模仿搭建脚本, 体验搭建过程、开展设计学习, 而不是在范例基础上修改补充。每个学生所掌握的基础知识、兴趣点以及对新的脚本的理解接受能力都是不一样的。因此, 我们对学生提出以下三级目标:能模仿范例脚本, 完成作品为学习目标之一;在模仿基础之上, 能增加自己新的想法, 小至角色的改进、背景的变化、情节的变化, 大到新增一些脚本、新增作品功能等, 为学习目标之二;能灵活运用所学的脚本自主设计, 并在此基础上有所创新, 为学习目标之三。这样就可以满足不同层次学生学习的要求, 让每个学生都能获得成就感。

(4) 分享交流, 拓展延伸

主要是展示作品, 一是分享同学们的快乐;二是发现作品创作中存在的问题并给予提示和补充;三是指出作品中的优点和缺点, 以便及时改进或重新思考, 寻找新的设计;四是留下一些不同设计的可视化题型, 供学生课外学习和探究。

2. 自由创作阶段的教学实施过程

(1) 欣赏作品, 构思主题

主要给学生提供多种不同设计风格的作品, 让学生欣赏, 通过不同作品学习不同的设计技巧, 同时在欣赏中启发和拓宽学生创作思维, 构思出自己的创作主题。

(2) 选择范例, 自主研习

学生可以根据自己的爱好、学习基础、不同的问题选择范例学习, 实现不同的学习目标。在学习过程中, 通过个人尝试、同伴互助、教师个别辅导, 解决各种问题, 为自主设计扫清障碍。

(3) 自主设计, 发展技能

在前面两个环节的学习基础之上, 学生有了自己的想法, 在表达想法的过程中, 学生在不断地构建新知识过程中发展学习技能, 同时完成作品。

(4) 分享交流, 获得快乐

主要是课堂集中展示, 小组之间展示, 个人邀请他人展示、上传作品分享等不同的形式, 互相学习, 相互交流, 增进友谊, 获得成就感。

这里, 我挑选了学生以《过大年》为主题创作出的不同风格的作品。图7为作品《放鞭炮》, 学生主要以年三十放鞭炮为创作内容, 以数字动画的形式呈现, 当点击绿旗后, 在音乐的伴奏下, 小黑人跑到门口点燃鞭炮, 接着出现烟火四溅、娃娃跳舞等情景, 呈现欢乐过大年的景象。图8为作品《选红包》, 学生以压岁钱为背景, 用互动艺术的思维设计, 伴随着鞭炮声, 分别点击“恭”、“喜”、“发”、“财”角色, 看有什么惊喜。图9为作品《捡元宝记》, 学生以数码游戏的设计思维, 设计一个小孩推着吃豆人, 按下“→”键向前一路捡红包, 捡到最后, 出现一个金元宝, 小孩出现惊喜的表情, 游戏结束。

●结束语

篇4:数字钟课程设计程序

[摘 要]针对数字图像处理课程和特点,借助教学辅助系统,对数字图像处理课程的教学方法进行改革。在教学过程中大量使用实例可将抽象的理论融入形象直观的应用当中;强调程序设计并演示算法的实际效果,使复杂的问题可视化,能让学生充分感受到数字图像处理技术的魅力。通过多年的应用,这种方法有效提高了学生的学习兴趣、学习主动性及学生的实践动手能力。

[关键词]教学辅助系统;应用实例;程序设计;数字图像处理

[中图分类号] G642 [文献标识码] A [文章编号] 2095-3437(2016)09-0166-02

一、引言

近年来,数字图像处理技术应用广泛,很多理工类高校都开设了数字图像处理课程,并将其作为信息类专业的一门专业主干课程。但长期以来,数字图像处理本科教学普遍存在着难教难学的问题。其原因有以下几点。1.该课程综合性极强,课程内容繁杂,要求学生具备向量、矩阵、概率、统计、线性系统和计算机编程方面的基础知识,这给学生的学习带来很大的挑战。如果教学方法不当,学生会感到内容非常抽象,逐渐失去学好该门课程的信心。2.大学本科教育已由精英教育转为大众教育,现在的本科生,特别是应用型院校的本科生,普遍存在数学基础薄弱、不习惯理论学习和思考、编程能力较弱的现象,很容易遇难而退。

为了解决数字图像处理难教难学的问题,许多教师对数字图像处理课程进行了各种方法的教学改革。沈晓晶等[1]逐阶段地引导学生建立起完整的数字图像处理知识体系,并通过与课题相关的教学案例、实验和课程设计引导学生运用所学知识解决实际问题。熊立伟等[2]从教学内容、课程资源建设、教学方法、考核方式、师资培养等方面进行了研究与改革,在一定程度上提高了学生的学习热情,增强了他们的动手能力。郑林涛等[3]提出将ImageJ软件作为数字图像处理课程教学演示和实验的工具,既可以用其在理论教学环节展示各种图像处理算法的效果,又可以在实验教学环节中通过编写ImageJ软件的插件让学生真正掌握理解图像处理的理论知识。该软件是以JAVA为基础的。魏晗等[4]注重基础理论和科技前沿的有机结合,在理论中渗透实践,在实践中穿插理论;并采用灵活多样的教学方法和丰富的教学手段,提高了学生的学习兴趣及实践动手能力。史彩娟等[5]通过课程实验环节、科研实践环节、社会实践环节以及师资队伍建设等环节构建了多层次、多模式的实践教学体系,取得了较好的实践教学效果。肖红等[6]提出了基于培养学生计算思维能力的任务驱动教学模式,阐述了该教学模式中的任务设计,任务实施的方法及师生角色的转换,并根据数字图像处理课程的教学实例,验证了该教学模式的可行性。宁纪锋[7]开展研究性课堂教学和实践教学等多个方面的教学改革探索,提高了学生的自主学习能力。

以上教师采用的相关方法在一定程度上都能提高教学质量。我们综合各种方法,根据我们的一些成果[8] [9],设计并使用了教学辅助系统,辅助数字图像处理的教学,这同样能激发学生的学习兴趣,提高学生的学习能力、动手能力和创新能力。

二、数字图像处理程序设计

(一)程序设计语言的选择

数字图像处理课程教学的教学效果与课程中所选用的教学软件密切相关。目前我国高校在数字图像处理课程中常用软件处理平台基本上有三类:Visual C++,Photoshop,MATLAB。

Photoshop是一个常用的图像处理软件,主要应用在平面设计领域,不需要编写程序,通过自学就能掌握该软件的主要功能。但对于数字图像处理课程而言,它只能作为一个图像处理效果演示的工具,不能作为教学的实验平台。

Matlab软件提供了丰富的现成图像处理函数供用户调用,可以节省用户开发底层函数的时间,提高用户的开发效率。学生在使用图像函数时,能快速完成图像处理的结果,但对图像处理的算法并没有进一步学习与巩固。Matlab软件只适应研究者对图像处理的研究,而不适用于计算机等专业的学生学习。

Visual C++软件没有像Matlab环境下有丰富和成熟图像处理库函数以供调用,所有的底层函数都要开发者自己编写。虽然这会影响用户的开发效率,但学生可以巩固理论知识,深刻理解图像处理方法。这对于计算机专业的学生来说,可以提高他们的编程能力。这种方法要求学生有一定的编程能力。

对于计算机类专业的学生来说,目前我们认为选用Visual C++软件(其他Visual软件都可以)作为图像处理课程教学软件最合适。重点是学生必须从底层自己编写代码,这样才能真正理解数字图像处理的各种方法与算法步骤。如果学生只是停留在理解理论公式上,会形成暂短的记忆和大致了解,很容易忘记。

(二)程序设计教学内容

数字图像处理程序设计教学应选择的是教学的重点内容而且程序代码不长。这样才能在课堂上讲解清楚,学生也易掌握。教学内容主要包括图像文件的读取、彩色图像转灰度图像、灰度变换、灰度图像的直方图均衡化、图像空间平滑与锐化滤波处理、灰度水平垂直积分与微分投影、图像几何变换、二值图像的腐蚀与膨胀、二值图像的边界提取、二值图像的几何特征与形状特征的提取、二值图像行程编码、噪声图像复原等。对图像处理的重要方法和程序设计的思路进行讲解,能提高学生的程序设计能力。

(三)程序演示内容

在课堂上除了介绍图像处理程序设计方法与思路外,还要利用开发的数字图像处理算法演示教学软件,将图像处理算法的实际效果进行演示,将算法实现过程中的重点问题转化为图像处理效果,从而将枯燥抽象的理论具体形象化,让学生充分感受到数字图像处理技术的魅力,以此激发学生的学习兴趣,提高课堂教学的效率。

演示软件设计的原则是:将图像处理算法中的各种可变参数作为输入数据,使学生体会到各种参数的实际含义。程序演示软件内容要比程序设计教学内容多,它几乎涵盖了所有的教学内容。例如:对于彩色图像的浮雕处理,只讲原理和公式是不够的,浮雕处理的结果图像必须通过演示系统显示出来,让学生一目了然,否则无法讲解清楚处理后图像的特征。

三、数字图像处理应用实例设计

在教学过程中,努力将复杂抽象的理论融入形象直观的应用实例当中,在理论中渗透实践,在实践中穿插理论,注重理论联系实际,培养学生的工程实践能力,真正使学生乐学、易学并会学。

(一)应用实例的选择

数字图像处理应用实例选择的原则是:学生熟悉、步骤简洁、算法简单。为了使处理结果准确度高,我们只选择标准规范的图像,而且这些应用实例程序都是自行开发且利用课程所讲的程序设计内容,这样学生会直观感觉到所学所用。应用实例分为两大类,一类为基本知识的应用,其方法简单,学生易理解而且能独立完成;另一类是数字图像处理新方法在当前新产品的应用,这些应用只能简单介绍,让学生大致了解。我们认为最重要的应用是第一类,这种应用更能提高学生的学生兴趣;第二类学生会感觉离自己较远。

我们选择的综合实用案例内容大部分来自我们的科研成果,有些已经体现在我们学生的毕业设计课题中。将历年与数字图像处理实际应用相关的毕业课题进行简化、修改与完善,可以不断充实数字图像处理应用实例软件。目前,我们选择的综合应用实例(以后还会扩充)包括:人像美容、人像美发、指纹识别预处理、车牌识别、手写字体识别、人脸定位、人脸五官定位、水果定位、道路识别等。

(二)在理论知识中渗透应用

由于教学过程是以知识点为单位进行教授,而综合应用实例涉及多个图像处理知识点,因此在授课过程中需要分解实例内容,显示实例的部分结果。例如:灰度水平微分投影包括:灰度图像中确定人眼水平位置,车牌灰度图像中预选车牌水平位置,指纹图像中定位中心水平位置等。RGB与HIS模型的转换包括:人像中的涂口红、涂腮红、美白、去红眼、染发、改变衣服颜色等。

(三)应用实例中分解出理论知识点

在课程教学过程的中期与末期,在总结复习所学知识时,以应用实例进行阶段性教学总结,通过应用实例贯穿图像处理的多个知识点,引导学生融会贯通所学知识,这有利于培养学生的综合应用能力。

四、结束语

随着信息技术不断发展和完善,数字图像处理技术也在不断发展,并且越来越多地应用于各个领域。我们总结十多年的数字图像处理课程的教学经验,在数字图像处理的程序设计、应用实例方面进行了研究与设计,设计了相应的教学软件。经过近五年在本校计算机科学与技术、软件工程、数字媒体技术的实践教学尝试,这样方法能够激发学生的学习兴趣,提高学生进行研究性学习的能力,提高学生的实践动手能力和创新能力,为培养高素质人才打下了坚实的基础。

[ 参 考 文 献 ]

[1] 沈晓晶,池涛,王艳.计算机专业数字图像处理教学体系及教学方法探讨[J].长春教育学院学报,2013(23):45-46.

[2] 熊立伟,吴德华,薛云,张维.地方本科院校“数字图像处理”课程教学改革的思考[J].中国电力教育,2014(3):107-108.

[3] 郑林涛,董永生.ImageJ软件在数字图像处理课程教学中的应用[J].中国电力教育,2014(8):112-113.

[4] 魏晗,陈刚,唐永旺,郭志刚.数字图像处理的教学改革与实践[J].中国信息技术教育,2014(8):12-13.

[5] 陆玲,周书民.数字图像处理基本方法及程序设计[M].哈尔滨:哈尔滨工程大学出版社,2011.

[6] 陆玲,李金萍.Visual C++数字图像处理[M].北京:中国电力出版社,2014.

篇5:基于单片机的数字钟课程设计程序

uchar num;

void delayms(uint z){ uint x,y;for(x=z;x>0;x--)

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

void write_com(uchar com){ lcdrs=0;P0=com;delayms(5);lcden=0;}

void write_data(uchar date){ lcdrs=1;P0=date;delayms(5);lcden=1;delayms(5);lcden=0;}

void init(){ lcden=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);}

void main()

//定义使能端、命令选择端

//延时函数

//写入命令函数

//写入数据 //初始化LCD

{

篇6:VB程序设计课程设计

1、目的

VB程序设计课程设计是考察学生对VB程序设计课程相关知识点掌握情况的重要环节,也是激励学生进一步学习VB、提高运用VB开发实际计算机程序的能力。课程设计的重点在于学生利用VB开发程序的能力。

2、课程设计题目

学生信息管理系统

3、程序功能

该程序具有建立数据库,建立数据库表,添加数据,删除数据,查询学生每学期成绩、不及格情况、积点情况等相关信息的功能。

4、实现要求

每个学生建立一个数据库(名字自拟),数据库中建立学生基本信息表(学号、姓名、性别、出生年、出生月、出生日、联系电话、年级、班级、住址等)、学生成绩表(学号、课程号、成绩、学期等)、课程信息表(课程号、课程名称、出版社、出版日期、版次、页码、价格、课程类型(基础课、专业基础课、选修课等)、开课学院等)。

把课程信息、每一学期的成绩等分别输入相应的表中,其中学生基本信息表记录不少于5个学生的信息。

在以上数据的基础上,实现相关的程序功能(不仅仅第3条指定的功能)。

设计多界面程序,相关查询结果应由不同的界面显示,每个同学显示结果的形式应尽量不同。

5、考核

根据学生实现程序功能多少(40分)、界面设计情况(20分)、课程设计报告撰写情况(20)、答辩情况(20分)进行考核。雷同者应重做。

6、课程设计报告内容

1)课程设计题目

2)课程设计的目的3)程序功能介绍

4)程序界面设计与控件属性设置

5)程序代码编写

6)程序演示(将运行过程用截图方式截下来,并对输入数据、输出的结果进行适当说明)

7)课程学习与课程设计心得体会

7、上交材料

本次课程设计以小班为单位上交如下资料:

1)光盘:每一小班建立一个目录(专业年级班级),在此目录下建立每个同学的目录(学号姓名),在每个同学的目录下保存该同学的电子版的课程设计报告、打包的程序。

篇7:数字钟课程设计

COUNT EQU 33H;定时器T0(用来走时)计数值存储器(计数中断20次到1秒)COUNTS EQU 34H;定时器T1(用来预置)计数值存储器(计数中断15次到预置值加一)HOUR EQU 40H;以下为时间,日期,闹铃时间,生日的存储地址 MIN EQU 41H SECOND EQU 22H YEAR EQU 50H MONTH EQU 23H DAY EQU 52H RH EQU 60H;闹铃小时 RM EQU 61H;闹铃分 RE EQU 62H;闹铃使能 BM EQU 71H;生日-月份 BD EQU 72H;生日-天 MOV LED12,#0 MOV LED34,#0 MOV LED56,#0 MOV COUNT,#0 MOV COUNTS,#0 MOV HOUR,#0 MOV MIN,#0 MOV SECOND,#0 MOV YEAR,#0 MOV MONTH,#1 MOV DAY,#1 MOV RH,#0 MOV RM,#0 MOV RE,#0 MOV BM,#6 MOV BD,#1 BS BIT 00H;birthday symbol生日标志(到生日那天就为1)

SS BIT 01H;set symbol预置信号(按下中断预置为1,便开始闪烁和预置)GS BIT 02H;glisten symbol闪烁标志 FC BIT 03H;frequency control频率控制 NB BIT 04H;neglect bitrhday symbol 忽略生日标志 CLR BS CLR SS CLR GS CLR FC CLR NB SETB 05H;生日显示有效标志位 MOV IP,#02H;中断优先级:T0>INT0>T1 MOV TMOD,#11H MOV IE,#8BH SETB IT0 MOV TH0,#3CH;50ms MOV TL0,#0B0H SETB TR0 MOV R1,#50;显示延时用 MOV R0,#0;显示延时用

;************************************************************** TWO检测开关号 TWO:MOV P0,#0FFH JB P0.5,TWO1 MOV RE,#0A0H;0A0表示闹铃无效,送0A0是为了方便将使能查表显示,表中第A项为“-” SJMP TWO2 TWO1:MOV RE,#0A1H TWO2:JB P0.0,TWO4 JB P0.1,TWO3 MOV LED12,HOUR MOV LED34,MIN MOV LED56,SECOND SJMP THREE TWO3:MOV LED12,YEAR MOV LED34,MONTH MOV LED56,DAY SJMP THREE TWO4:JB P0.1,TWO5 MOV LED12,RH MOV LED34,RM MOV LED56,RE SJMP THREE TWO5:MOV LED12,BM MOV LED34,BD MOV LED56,#0BCH SJMP THREE;************************************** THREE显示主程序(同时包含了闹铃,预置闪烁,闹铃功能)THREE:MOV P1,#0 MOV P0,#0FFH MOV DPTR,#TAB3 JNB SS,THREEB;判断预置信号是否有效,预置有效则转入判断闪烁显示模块,否则转入正常显示模块

SJMP THREEA THREEB:LJMP THREE11;THREE11是正常显示并判断整点报时及闹铃模块

THREEA:JNB P0.3,THREE1;开始是判断闪烁显示,这句判断是否预置分/月/生日的日/闹铃分

JNB GS,THREE1;是否闪烁?

LCALL TWELVE;闪烁则调用延时不显示LED34 SJMP THREE4 THREE1:MOV A,LED34 ANL A,#0FH MOVC A,@A+DPTR MOV P2,A THREE2:SETB P1.3 NOP DJNZ R0,THREE2 CLR P1.3 MOV A,LED34 SWAP A ANL A,#0FH MOVC A,@A+DPTR MOV P2,A THREE3:SETB P1.2 NOP DJNZ R0,THREE3 CLR P1.2 JNB P0.2,THREE4;判断是否预置小时/年/生日月/闹铃的小时 JNB GS,THREE4;是否显示小时/年/生日月/闹铃的小时 LCALL TWELVE SJMP THREE7 THREE4:MOV A,LED12 ANL A,#0FH MOVC A,@A+DPTR MOV P2,A THREE5:SETB P1.1 NOP DJNZ R0,THREE5 CLR P1.1 MOV A,LED12 SWAP A ANL A,#0FH MOVC A,@A+DPTR MOV P2,A THREE6:SETB P1.0 NOP DJNZ R0,THREE6 CLR P1.0 JB P0.0,THREE7;数码管56只有在显示日期的天时才有预置闪烁功能,其余三项都不需要判断闪烁 JNB P0.1,THREE7 JB P0.3,THREE7 JNB P0.4,THREE7 JNB GS,THREE7 LCALL TWELVE SJMP THREE10 THREE7:MOV A,LED56 ANL A,#0FH MOVC A,@A+DPTR MOV P2,A THREE8:SETB P1.5 NOP DJNZ R0,THREE8 CLR P1.5 MOV A,LED56 SWAP A ANL A,#0FH MOVC A,@A+DPTR MOV P2,A THREE9:SETB P1.4 NOP DJNZ R0,THREE9 CLR P1.4 THREE10:DJNZ R1,TWOA SJMP TWOB TWOA:LJMP TWO TWOB:MOV R1,#50;判断闪烁一次是否完成 CPL GS;取反闪烁标志,用于控制闪烁的亮和灭 LJMP TWO;一轮显示完后再判断开关号;**************************正常显示

THREE11:LCALL EIGHT;判断是否取反P1.6即输出闹铃或整点报时,以下每次显示都要调用一次

JB NB,THREE12;如果是在整点报时状态就不显示生日提醒,报时过后显示提醒 JNB BS,THREE12 SJMP SEVEN;跳到生日提醒程序

THREE12:CLR NB;开始正常显示时间及判断闹铃输出 MOV A,LED34 ANL A,#0FH MOVC A,@A+DPTR MOV P2,A THREE13:SETB P1.3 NOP DJNZ R0,THREE13 CLR P1.3 MOV A,LED34 SWAP A ANL A,#0FH MOVC A,@A+DPTR MOV P2,A THREE14:SETB P1.2 NOP DJNZ R0,THREE14 CLR P1.2 LCALL EIGHT MOV A,LED12 ANL A,#0FH MOVC A,@A+DPTR MOV P2,A THREE15:SETB P1.1 NOP DJNZ R0,THREE15 CLR P1.1 MOV A,LED12 SWAP A ANL A,#0FH MOVC A,@A+DPTR MOV P2,A THREE16:SETB P1.0 NOP DJNZ R0,THREE16 CLR P1.0 LCALL EIGHT MOV A,LED56 ANL A,#0FH MOVC A,@A+DPTR MOV P2,A THREE17:SETB P1.5 NOP DJNZ R0,THREE17 CLR P1.5 MOV A,LED56 SWAP A ANL A,#0FH MOVC A,@A+DPTR MOV P2,A THREE18:SETB P1.4 NOP DJNZ R0,THREE18 CLR P1.4 LJMP TWO;一轮显示完后判开关

TAB3:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H 7FH,6FH,40H,7CH,5EH;0.1.2.3.4.5.6.7.8.9.-.b.d,的字形表“bd”在显示生日时间时显示在LED56;**************************************************SEVEN生日时显示生日祝福语“HAPPY” SEVEN:MOV P1,#01H MOV P2,#76H DJNZ R0,SEVEN SEVEN1:MOV P1,#02H MOV P2,#77H DJNZ R0,SEVEN1 SEVEN2:MOV P1,#04H MOV P2,#73H DJNZ R0,SEVEN2 SEVEN3:MOV P1,#08H MOV P2,#73H DJNZ R0,SEVEN3 SEVEN4:MOV P1,#10H MOV P2,#6EH DJNZ R0,SEVEN4 LJMP TWO;一轮显示完后判开关

;******************************************************************EIGHT判断是否闹铃子程序 EIGHT:MOV A,RE CJNE A,#0A1H,EIGHT1 MOV A,MIN CJNE A,RM,EIGHT1 MOV A,HOUR CJNE A,RH,EIGHT1 SJMP EIGHT4;闹铃时间到则CPLP1.6一次并忽略生日标志(即NB有效)EIGHT1:MOV A,MIN CJNE A,#59H,EIGHT7 MOV A,SECOND CJNE A,#59H,EIGHT5;是否等于59分59秒 EIGHT2:MOV A,COUNT;是否到达后半秒 CJNE A,#10,EIGHT3 EIGHT3:JC EIGHT7 EIGHT4:CPL P1.6 SETB NB SJMP EIGHT7 EIGHT5:MOV A,SECOND CJNE A,#51H,EIGHT6;是否大于51秒 EIGHT6:JC EIGHT7 JNB 10H,EIGHT7;判断是否报低音

JB FC,EIGHT7;只有FC有效时才输出

SJMP EIGHT2 EIGHT7:CPL FC;用来控制报低音和高音,满足报低音条件时,调用两次本程序对P1.6取反一次,高音时调用一次取反一次

RET;******** NINE中断(T0)计时程序(包含了秒-分-时-日-月-年间的进位及判断大小月,平闰年)

NINE:MOV TH0,#3CH;开定时器 MOV TL0,#0B0H SETB TR0 INC COUNT MOV A,COUNT CJNE A,#20,INEAA SJMP AAA INEAA:LJMP NINE1 AAA:MOV COUNT,#0;计时 MOV A,SECOND ADD A,#01 DA A;换成bcd码以方便显示 MOV SECOND,A CJNE A,#60H,INEAA MOV SECOND,#0 MOV A,MIN ADD A,#01 DA A MOV MIN,A CJNE A,#60H,INEAA MOV MIN,#0 MOV A,HOUR ADD A,#01 DA A MOV HOUR,A CJNE A,#24H,INEAA MOV HOUR,#0 MOV A,DAY ADD A,#01 DA A MOV DAY,A;************************判断平闰年及大小月 MOV A,MONTH CJNE A,#02H,TEN6A MOV A,YEAR;把年由BCD码换成二进制码 ANL A,#0F0H SWAP A MOV B,#10 MUL AB MOV 24H,A MOV A,YEAR ANL A,#0FH ADD A,24H JB ACC.0,TEN5A;二进制码后两位为00表示为闰年 JB ACC.1,TEN5A MOV 24H,#01 MOV A,DAY CJNE A,#30H,NINE1 MOV DAY,#1 SJMP NINE0 TEN5A:MOV A,DAY CJNE A,#29H,NINE1 MOV DAY,#1 SJMP NINE0;**************判断大小月;大于等于8月时双月为大月,小于8月时单月为大月 TEN6A:MOV A,MONTH CJNE A,#08H,TEN7A TEN7A:JC TEN9A JB 18H,TEN8A MOV A,DAY CJNE A,#32H,NINE1 MOV DAY,#1 SJMP NINE0 TEN8A:MOV A,DAY CJNE A,#31H,NINE1 MOV DAY,#1 SJMP NINE0 TEN9A:JNB 18H,TEN10A MOV A,DAY CJNE A,#32H,NINE1 MOV DAY,#1 SJMP NINE0 TEN10A:MOV A,DAY CJNE A,#31H,NINE1 MOV DAY,#1;******************* NINE0:MOV A,MONTH ADD A,#01 DA A MOV MONTH,A SETB 05H CJNE A,#13H,NINE1 MOV MONTH,#1 MOV A,YEAR ADD A,#01 DA A MOV YEAR,A NINE1:MOV A,MONTH CJNE A,BM,NINE2 MOV A,DAY CJNE A,BD,NINE2 JNB 05H,NINE2 SETB BS NINE2:RETI;*****************************************TEN中断(T1)预置加一程序由INT0控制其的开启与关闭

;*******************判断预置项目 TEN:MOV TH1,#3CH MOV TL1,#0B0H SETB TR1 INC COUNTS MOV A,COUNTS CJNE A,#15,TENE MOV COUNTS,#0 JB P0.0,RBRB JB P0.1,DAT SJMP TIME DAT: LJMP DATE RBRB:JB P0.1,BDAT LJMP RTIME BDAT:LJMP BDATE TENE:RETI;**********************预置时间 TIME: JNB P0.3,TEN1 MOV A,MIN ADD A,#01 DA A MOV MIN,A CJNE A,#60H,TENA MOV MIN,#0 SJMP TENA TEN1:JNB P0.2,TENA MOV A,HOUR ADD A,#01 DA A MOV HOUR,A CJNE A,#24H,TENA MOV HOUR,#0 TENA:RETI;******************预置日期 DATE:JNB P0.3,TEN3 MOV A,MONTH ADD A,#01 DA A MOV MONTH,A CJNE A,#13H,TENB MOV MONTH,#1 SJMP TENB TEN3:JNB P0.2,TEN4 MOV A,YEAR ADD A,#01 DA A MOV YEAR,A SJMP TENB TEN4:JNB P0.4,TENB MOV A,DAY ADD A,#01 DA A MOV DAY,A;***************判断平闰年 MOV A,MONTH CJNE A,#02H,TEN6 MOV A,YEAR ANL A,#0F0H SWAP A MOV B,#10 MUL AB MOV 24H,A MOV A,YEAR ANL A,#0FH ADD A,24H JB ACC.0,TEN5 JB ACC.1,TEN5 MOV A,DAY CJNE A,#30H,TENB MOV DAY,#1 SJMP TENB TEN5:MOV A,DAY CJNE A,#29H,TENB MOV DAY,#1 SJMP TENB;**************判断大小月 TEN6:CJNE A,#08H,TEN7 TEN7:JC TEN9 JB 18H,TEN8 MOV A,DAY CJNE A,#32H,TENB MOV DAY,#1 SJMP TENB TEN8:MOV A,DAY CJNE A,#31H,TENB MOV DAY,#1 SJMP TENB TEN9:JNB 18H,TEN10 MOV A,DAY CJNE A,#32H,TENB MOV DAY,#1 SJMP TENB TEN10:MOV A,DAY CJNE A,#31H,TENB MOV DAY,#1 TENB: RETI;**************************预置闹铃时间 RTIME:JNB P0.3,TEN12 MOV A,RM ADD A,#01 DA A MOV RM,A CJNE A,#60H,TENC MOV RM,#0 SJMP TENC TEN12:JNB P0.2,TENC MOV A,RH ADD A,#01 DA A MOV RH,A CJNE A,#24H,TENC MOV RH,#0 TENC:RETI;************************预置生日日期 BDATE:JNB P0.3,TEN14 MOV A,BD ADD A,#01 DA A MOV BD,A MOV A,BM CJNE A,#02H,TEN15 MOV A,BD CJNE A,#30H,TEND MOV BD,#1 SJMP TEND TEN15:CJNE A,#08H,TEN16 TEN16:JC TEN18 JB 18H,TEN17 MOV A,BD CJNE A,#32H,TEND MOV BD,#1 SJMP TEND TEN17:MOV A,BD CJNE A,#31H,TEND MOV BD,#1 SJMP TEND TEN18:JNB 18H,TEN19 MOV A,BD CJNE A,#32H,TEND MOV BD,#1 SJMP TEND TEN19:MOV A,BD CJNE A,#31H,TEND MOV BD,#1 SJMP TEND TEN14:JNB P0.2,TEND MOV A,BM ADD A,#01 DA A MOV BM,A CJNE A,#13H,TEND MOV BM,#1 TEND:SETB 05H RETI;*******************************ELEVEN中断(INT0)控制了预置的开关以及生日信号的清除

ELEVEN:JNB SS,ELEVEN1;预置有效时按一次INT0关预置 CLR SS CLR TR1 SJMP ELEVEN3 ELEVEN1:JNB BS,ELEVEN2;预置无效判断生日信号有效则清除生日信号 CLR 05H CLR BS SJMP ELEVEN3 ELEVEN2:SETB SS;都无效则令预置有效 MOV TH1,#3CH MOV TL1,#0B0H SETB TR1 ELEVEN3:RETI;***************************************************************TWELVE 延时小程序

篇8:数字钟课程设计程序

图像空间域增强的一种方法就是利用数字图像的点处理。灰度级校正、灰度变换和直方图修正等是数字图像点处理的主要算法, 他们的目的分别是使图像成像均匀、扩大图像动态范围和扩展图像的对比度。市场中常见的PS等图像处理软件可调节参数较少, 不能满足部分用户需求, QT的界面设计使得开发带界面的软件更为方便, 且可用C++语言编写, 运行效率高, 执行速度快, 适合图像处理。

1 数字图像的点处理原理

数字图像的点处理过程可以理解为一个矩阵变换, 由公式 (1) 定义:

公式 (1) 中r是处理前的图像矩阵, 存储的是处理前图像像素的亮度值;s是处理后的图像矩阵, 存储的是处理后图像像素的亮度值;T是变换关系。下面介绍几种常见的图像点处理算法。

1.1 对比度扩展

对比度扩展主要用于处理对比度较小的图片, 比如夜晚成像光照不足的情况下, 照片偏暗且明暗区分不明显;或者天气晴朗阳光强烈的白天, 照片过亮且敏感区分不明显。这两种情况所得的图片的灰度都是挤在一起的, 这种图片就是低对比度图片。而灰度扩展就是针对这种图片, 通过对图像某些灰度范围内的像素点数据进行处理, 实现提高灰度动态范围, 从而把感兴趣的灰度完全展示出来, 即增加了对比度的目的。对比度扩展原理如图1所示。

上图中, r表示原图像像素点亮度, s表示经过处理后的图像像素点亮度。假设图像的灰度级为255, 则图中实线就表示了亮度值的映射关系, 原图像从灰度级0到r1映射到变换后图像灰度级0到s 1, 以此类推从而实现原图像中灰度级r1到r2范围内的像素点的亮度扩展到灰度级s1到s2上。一般来说, AB曲线的斜率必须大于1, 这样才能实现对比度扩展。另外r1、r2、s1、s2还要求满足r1<=r2且s1<=s2, 这样才能保证灰度级的次序, 避免处理过程中出现错误。

1.2 灰度切割

灰度切割的原理跟对比度扩展的原理类似。灰度切割有两种方法, 方法一是使原图像的r1到r 2灰度范围内的灰度值增大为s 0, 其他范围内的灰度值统一变为比s0小的s 1, 从而达到突出原图像r1到r2灰度范围内的内容的目的;方法二是使原图像r1到r2灰度范围内的灰度值增大为s 0, 其他范围内的灰度值不变, 这样也可以达到突出原图像r1到r2灰度范围内的内容的目的。

1.3 图像反色

图像反色的原理比较简单, 假设图像的灰度范围是0到255, 那只要用255减去所有原图像的像素点亮度值即可得到反色后的图像亮度值。

2 程序设计步骤

程序是基于QT设计的, 使用C++编程语言, 所以设计过程包括界面设计和程序设计思路。

2.1 程序界面设计

程序需要用户输入数据, 故设计用户数据接口即可。程序界面如图。2

2.2 程序流程设计

程序设计的实现过程为:1) 读取BMP文件的文件头、信息头、颜色表、像素点数据等位图数据。2) 根据对比度实验原理给r 1、r 2、s 1、s 2赋予适当的值, 根据赋值修改像素点数据, 实现扩展图片对比度功能。3) 根据BMP图像存储像素点数据格式, 批量更改像素点数据, 实现图像反色的功能。4) 根据灰度切割原理, 给s1、s2、r0赋予适当的值, 根据赋值修改像素点数据实现将图片按照给定参数灰度切割的功能。5) 更改灰度切割参数, 实现图像二值化处理。6) 将图片数据写到新文件中。

3 结语

上一篇:怎么当好一个煤矿企业法人下一篇:警察职业规划作业