汇编语言课程设计 显示系统当前时间与日期

合集下载

日期时间汇编语言设计

日期时间汇编语言设计

前言在程序的实现过程中,先在数据段开一段显示缓冲区,用来存储系统时间,调用子程序的清屏部分。

通过调用DOS中断,得到系统当前时间,并将其二进制转换成ASCII 码。

目前DOS常用的9类中断(20H-27H和2FH)分为两种:DOS专用中断和DOS可调用中断。

(1)DOS专用中断。

DOS专用中断是指INT22H、INT23H和INT24H三个中断,属于DOS操作时专用,用户不要直接使用。

INT27H和INT2FH六个中断。

这六个中断都直接供用户直接调用,但都必须要满足一定的入口条件。

(2)由于中DOS可调用中断。

DOS可调用中断是指INT20H、INT21H、INT25H、INT26H、断有很多中,本身就比较复杂,所以在这里只是简单的提一下,不做深入研究。

只对其中的INT10和INT21两种特别常见且应用广泛的在程序设计过程中结合程序加以说明。

中文摘要本程序设计依托最基本的计算机语言---汇编语言。

通过汇编程序调用系统时间或日期。

首先调用DOS中断,得到系统当前时间或日期,并将其二进制转换成ASCII码,再调用DOS字符串显示功能将时间或日期以电子时钟的方式显示在显示器上。

意义在于能更好更快使时间、日期的程序得以实现。

使得时间、日期的显示程序更加精炼,更加准确。

关键字: 更好更快精炼准确目录1.系统总体设计 (2)2.详细设计 (3)2.1功能模块的分析 (3)2.2 寄存器的移动方法 (3)2.3 PUSH和POP的调用 (3)2.4 S系统的调用 (3)3.系统测试 (5)4.程序清单 (6)设计总结 (12)参考文献 (13)致谢 (14)1.系统总体设计(1)用汇编语言编写程序,使其能实现在PC机上用电子时钟时、分、秒的格式显示时间、日期的功能。

(2)调用DOS中断,得到系统当前时间、日期,并将其二进制转换成ASCII码。

(3)把程序设计成用刷新的方式来不断获取系统的时间、日期。

(4)获取键盘的按键值,以ESC键图1-1 系统功能模块图2.详细设计2.1功能模块的分析由于获取了的系统时间或日期不会自动刷新,所以要设计成刷新的方式来不断获取系统的时间或日期,这样就形成了会跳动的电子钟或日期了。

单片机(汇编语言)秒表课程设计设计

单片机(汇编语言)秒表课程设计设计

题目名称:秒表电路设计姓名:班级:学号:指导教师:日期:2016年7月13日《单片机原理及接口技术课程设计》教学大纲课程代码:课程名称:单片机原理及接口技术课程设计周数: 2 学分:1.0学分一、课程设计的性质、任务与目的单片机原理及接口技术课程设计是在学生学习完理论课和实验课的基础上开设的,通过完成一个涉及MCS-51或其他系列单片机多种资源应用并具有综合功能的设计与编程应用,使学生能够将课堂上学到的理论知识与实际应用结合起来,同时在软件编程、仿真调试及相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立进行某些单片机应用系统的设计开发工作打下一定的基础。

本课程设计的主要目的如下:1、增进对单片机的感性认识,加深对单片机理论知识的理解,掌握单片机内部功能模块(如定时/计数器、中断、片内外存贮器、I/O口、串行口等)的应用;2、掌握单片机应用系统的软硬件设计过程及实现方法,为以后设计和实现单片机应用系统打下良好基础;3、提高综合应用所学理论知识独立分析和解决实际问题的能力。

二、本课程设计的基本理论本课程设计的基本理论是单片机原理及接口技术的基本理论,主要包括单片机的硬件结构原理、指令系统、汇编语言、中断系统、定时/计数器、串行接口、I/O接口等。

在学习掌握单片机原理及接口技术课程的前提下,利用实验室提供的单片机实验条件或基于仿真软件,采用汇编语言或C51编程,设计实现一个具体的单片机应用系统项目,熟悉单片机系统设计开发的完整过程。

三、课程设计的方式与基本要求课程设计的方式:每个班级学生按2~3人分为一组,以组为单位进行课程设计(也可一人独立进行),课程设计的题目从教师给定的题目中选取,也可以是指导教师审核通过的学生自选题目。

基本要求:每组选定题目后,按题目要求,首先进行方案论证,通过查阅资料、集体讨论,确定设计方案;然后进行具体的硬件和软件设计;完成设计后,进行硬件/软件调试;最后撰写课程设计报告。

用汇编语言显示系统日期时间

用汇编语言显示系统日期时间

国家示范性软件学院汇编程序设计与组成原理课程设计姓名: _______ _班级: _______ _学号: _______ _指导老师: _______ _成绩: _______ _评语一. 课程设计的目的及意义通过课程设计,主要达到以下目的:1. 使学生增进对汇编语言的认识,加强用汇编语言编程的能力。

2. 使学生掌握汇编语言的中断调用功能的应用,可以用汇编语言调用各种中断调用功能,并由此实现对硬件的控制等。

3. 使学生了解和掌握汇编语言程序设计过程、方法及实现,为以后微机原理课程的学习打下良好基础。

(垃,圾,文库,叫你说我文档质量偏低)二. 基本内容题目:显示系统当前时间与日期要求设计界面提示信息为:“Please input DATE(D) OR TIME(T)OR QUIT(Q):”,从键盘键入“D”,可显示系统日期。

从键盘输入“T”,可显示系统时间。

从键盘输入“Q”,退出程序。

利用DOS 的系统功能调用的2AH 和2CH 功能调用,读取系统日期和时间。

将日期和时间转换为相应的ASCII 码字符,显示在屏幕上。

(垃,圾,文库,叫你说我文档质量偏低) (垃,圾,文库,叫你说我文档质量偏低) (垃,圾,文库,叫你说我文档质量偏低)三. 系统功能结构框图(垃,圾,文库,叫你说我文档质量偏低) (垃,圾,文库,叫你说我文档质量偏低) (垃,圾,文库,叫你说我文档质量偏低)主程序MAIN(显示界面提示信息,根据键盘输入的字符调用各子程序) 子程序DATEDISPLAY(调用DOS 的2AH 功能,取系统当前日期,将日期转换成对应的ASCII 码值并显示)子程序TIMEDISPLAY(调用DOS 的2CH 功能,取系统当前时间,将时间转换成对应的ASCII 码值并显示)CALLCALL四. 系统流程框图五. 源程序代码;*************清屏宏定义***********CLEAR_SCREEN MACRO ;宏定义,设置七个参数MOV AH,06H ;AH=06屏幕初始化或上卷指定的行 MOV AL,00H ;清屏INT 10H ;调用BIOS 功能 MOV AH,02H ;制定光标位置 MOV BH,00H ;第0页 MOV DH,00H ;第0行 MOV DL,00H ;第0列 INT 10H ENDM;*********定义堆栈段******** STACK SEGMENT DB 200 DUP (?) tos label byte STACK ENDS;*********定义数据段******** DATA SEGMENTSTR00 DB ' |********** Welcome! **********|$' ;提示界面 STR01 DB 0DH,0AH,' |* *|$' STR02 DB 0DH,0AH,' |* This is a display program. *|$'开始设置显示方式为80×25彩色文本方显示界面提示信息从键盘输入单个字符判断字符显示系统日期显示系统时间提示输入错误结束D(d)T(t)otherQ(q)STR03 DB 0DH,0AH,' |* D: display Date *|$' STR04 DB 0DH,0AH,' |* T: display Time *|$' STR05 DB 0DH,0AH,' |* Q: Quit *|$' STR06 DB 0DH,0AH,' |* *|$' STR07 DB 0DH,0AH,' |********************************|$' STR08 DB 0DH,0AH,'Please input a char: $'INPUTER DB 0DH,0AH,'Input Error!',0DH,0AH,'$'DATEDIS DB' 0000-00-00 ',0AH,'$';显示DATETIMEDIS DB' 00:00:00',0AH,'$';显示TIMEDATA ENDS;*********定义代码段********CODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MAIN PROC FARMOV AH,00H ;AH=0设置显示模式MOV AL,03H ;设置80*25图形显示INT 10HCLEAR_SCREEN ;调用宏定义MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXmov sp,offset tos;*******显示宏定义********;用于显示字符串SHOW MACRO strLEA DX,strMOV AH,9INT 21HENDMSHOW STR00SHOW STR01SHOW STR02SHOW STR03SHOW STR04SHOW STR05SHOW STR06SHOW STR07INPUT:SHOW STR08 ;显示输入提示MOV AH,01 ;键盘输入并回写INT 21HCMP AL,"D";与D比较JE PRINT_DATE ;相等转PRINT_DATE打印日期CMP AL,"d"JE PRINT_DATECMP AL,"T";与D比较JE PRINT_TIME ;相等转PRINT_TIME打印时间CMP AL,"t"JE PRINT_TIMECMP AL,"Q";与Q比较JE EXIT ;相等转EXIT退出程序CMP AL,"q"JE EXITSHOW INPUTER ;显示输入错误JMP INPUTPRINT_DATE:CALL DATEDISPLAY ;调用日期显示子程序JMP INPUT ;继续输入字母PRINT_TIME:CALL TIMEDISPLAY ;调用时间显示子程序JMP INPUT ;继续输入字母EXIT: ;结束,退出程序MOV AH,4CHINT 21HMAIN ENDP;*********日期显示子程序*********DATEDISPLAY PROC NEARMOV AH,2AH ;取当前系统日期INT 21HMOV AX,CX ;送年份入AX作为被除数【年份存在CX中】MOV BX,10 ;(BX)=10LEA SI,DATEDIS+4 ;使SI指向年的最后一位【从0开始数】MOV CX,4 ;(CX)=4 年的位数,循环4次PUSH DX ;DX入栈,保存月日TAB:XOR DX,DX ;DX清零,存余数DIV BX ;(DX,AX)/BX,商送AX,余数送DXADD DL, 30H ;余数与30H相加变为字符的ASCII码MOV [SI], DL ;余数送入SI所指向的字节区DEC SI ;SI减一LOOP TAB ;循环4次POP DX ;DX还原MOV AL, DL ;日送AL【日存在DL中】XOR AH, AH ;AH清零DIV BL ;AX/BL,商送AL,余数送AH【AL为十位,AH为个位】ADD AX, 3030H ;转变为数字字符的ASCII码LEA SI, DATEDIS+9 ;使SI指向日的十位MOV [SI], AX ;(AX)送SI所指向的字节区MOV AL, DH ;月送AL 【月存在DH中】XOR AH, AH ;AH清零DIV BL ;AX/BL,商送AL,余数送AH【AL为十位,AH为个位】ADD AX, 3030H ;转变为数字字符的ASCII码LEA SI, DATEDIS+6 ;使SI指向月的十位MOV [SI], AX ;(AX)送SI所指向的字节区SHOW DATEDIS ;显示日期RET ;调用后返回DATEDISPLAY ENDP;*********时间显示子程序*********TIMEDISPLAY PROC NEARMOV AH,2CHINT 21HMOV BX,10MOV AL,CH ;CH存时XOR AH,AHDIV BLADD AX,3030HLEA DI,TIMEDIS+1MOV [DI],AXMOV AL,CL ;CL存分XOR AH,AHDIV BLADD AX,3030HLEA DI,TIMEDIS+4MOV [DI],AXMOV AL,DH ;DH存秒XOR AH,AHDIV BLADD AX,3030HLEA DI,TIMEDIS+7MOV [DI],AXSHOW TIMEDISRET ;时间调用返回TIMEDISPLAY ENDPCODE ENDSEND START六.使用说明七.参考文献[1]沈美明、温冬婵,《IBM-PC汇编语言程序设计(第二版)》,清华大学出版社,2010年10月。

汇编语言_输入输出程序设计

汇编语言_输入输出程序设计

《汇编语言程序设计教程》之输入输出程序设计指导老师:XXX制作人:XXX一、实验目的通过学习《汇编语言程序设计教程》的相关知识完成输入输出程序的相关操作,理解有关改程序的理论知识,掌握设计报告的流程以及解决问题的方法,并且提高利用计算机分析解决综合性实际问题的基本能力,将理论与实践相结合,实现对知识的升华以及灵活运用,具体步骤如下:1)掌握输入输出指令的使用;2)了解对CMOS RAM的读写3)访问CMOS RAM,编程,以“年/月/日时:分:秒”的格式,显示当前的日期、时间。

观察并记录运行结果。

二、实验原理及基本技术路线图(方框原理图)程序源代码:assume cs:code,ds:datadata segmenttime db 'yy/mm/dd hh:mm:ss',0dh,0ah,'$'cmos db 9,8,7,4,2,0data endscode segmentstart:mov ax,datamov ds,axmov bx,0mov si,0mov cx,6a: push cxmov al,cmos[bx]out 70h,alin al,71hmov ah,almov cl,4shr al,cland ah,0fhadd ax,3030hmov word ptr time[si],axinc bxadd si,3pop cxloop amov ah,6mov al,0mov bh,1fhmov cx,0mov dx,184fhint 10hmov ah,2mov bh,0mov dh,13mov dl,32int 10hmov dx,offset timemov ah,9int 21hmov ax,4c00hint 21hcode endsend start三、所用仪器、材料(设备名称、型号、规格等)Masm 6.0,debug。

四、实验方法、步骤1.使用masm6.0将所写的程序进行编译,生成exe文件,运行。

汇编语言---编写一个可以自行启动计算机,不需要在现有操作系统环境中运行的程序。

汇编语言---编写一个可以自行启动计算机,不需要在现有操作系统环境中运行的程序。

1、课程设计的目的、任务1.1目的编写一个可以自行启动计算机,不需要在现有操作系统环境中运行的程序。

1.2任务该程序完成的功能如下:①列出功能选项,让用户通过键盘进行选择,界面如下。

reset pc ;重新启动计算机start system ;引导现有操作系统clock ;进入时钟程序set clock ;设置时间②用户输入“1”后重新启动计算机。

③用户输入“2”后引导现有的操作系统。

④用户输入“3”后,执行动态显示当前日期、时间的程序。

显示格式:年/月/日时:分:秒,当按下F1键后,改变显示颜色;按下Esc 键后,回到主选单。

⑤用户输入“4”后可更改当前日期、时间,更改后返回到主选单。

2、软件需求分析和设计2.1分析①学习汇编语言的主要目的:其一,为了“深入理解机器工作的基本原理”,其二,“培养底层编程意识和思想”。

为了提高自己对计算机工作基本原理的认识和培养底层编程思想,所选题目在脱离当前操作系统的环境下运行,摆脱了操作系统的束缚,实现了真正的对硬件编程。

②在DOS下编写安装程序,在安装程序中包含任务程序;③运行安装程序,将任务程序写到软盘上;④为了让任务程序可以在开机后自动执行,需要将任务程序写到软盘的0道0面1扇区上(程序最后两个字节以55AA作为引导程序结束标志)。

如果程序长度大于512字节,则需要用多个扇区来存放,这种情况下,处于软盘0道0面1扇区中的程序就必须负责将其他扇区中的内容读入内存。

2.2设计(1)程序主体包含三个程序段,安装程序段(setupsg)、引导程序段(initsg)、任务程序段(syssg)。

(2)安装程序流程图:安装程序完成功能:①将引导程序写入软盘第一扇区。

②将任务程序写入软盘第二扇区开始以后的3个扇区。

其中引导程序从0x7C00 到0x7E00 共512字节(写在软盘的第一扇区);任务程序从0x0000 到0x0485 共1157字节(写在软盘的第二、三、四扇区),所以引导程序、任务程序共占用软盘的4个扇区即可。

单片机C语言电子钟显示年月日星期及时间(带注释)

单片机C语言电子钟显示年月日星期及时间(带注释)

#include<reg52.h>#define uchar unsigned char#define uint unsigned intuchar code table[]=" 2011-12-30 SA T";uchar code table1[]=" 23:59:55 ";uchar code week1[][3]={"MON","TUE","WEN","THU","FRI","SA T","SUN"}; /*uchar code week2[]="TUE";uchar code week3[]="WEN";uchar code week4[]="THU";uchar code week5[]="FRI";uchar code week6[]="SA T";uchar code week7[]="SUN"; */uchar count,shi,fen,miao,dnum,year,month,day,week,a=5;sbit rs=P2^0; //数据命令sbit rw=P2^1; //读写sbit en=P2^2; //使能sbit d1=P3^1; //独立键盘sbit d2=P3^2;sbit d3=P3^3;sbit d4=P3^4;void delay(uchar z) //延时{uint x,y;for(x=110;x>0;x--)for(y=z;z>0;z--);}void write_com(uchar com) //写指令{rs=0;rw=0;en=0;P0=com;delay(5);en=1;delay(5);en=0;}void write_date(uchar date) //写数据{rs=1;rw=0;en=0;P0=date;delay(5);en=1;delay(5);en=0;}void write_weekday (uchar a){uchar x;write_com(0x80+13);for(x=0;x<3;x++){write_date(week1[a][x]);}}void weekday(uint i){write_weekday(i%7);}void write_sfm(uchar add,uchar date){uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+0x40+add); //指向要写的地址write_date(0x30+shi); //0x30代表的数字是0,+shi表示shi的数字write_date(0x30+ge); //ge的数字}void write_ymd(uchar add,uchar date){uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+add); //指向要写的地址write_date(0x30+shi); //0x30代表的数字是0,+shi表示shi的数字write_date(0x30+ge); //ge的数字}void unit(){uchar num;en=0;write_com(0x38); //显示write_com(0x0c); //光标不显示write_com(0x06); //指针加1,整屏不移动write_com(0x01); //清屏write_com(0x80); //指针指向0x80for(num=0;num<16;num++) //第一行显示table数组{write_date(table[num]);delay(20);}write_com(0x80+0x40);for(num=0;num<16;num++) //第二行显示table1数组{write_date(table1[num]);delay(20);}TMOD=0X01;TH0=(65536-50000)/256; //开启中断TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;shi=23;fen=59;miao=55;year=11;month=12;day=30;}void jishu() //计数{if(count==20){count=0;miao++; //秒加if(miao==60){miao=0;fen++; //分加if(fen==60){fen=0;shi++;if(shi==24){shi=0;day++;a++;weekday(a);//时加}write_sfm(3,shi);write_ymd(9,day);if(day==31){day=0x01;write_ymd(9,day);month++;write_ymd(6,month);if(month==13){month=0x01;write_ymd(6,month);year++;write_ymd(3,year);}}}write_sfm(6,fen);}write_sfm(9,miao);}}void change(){d4=0;if(d1==0) //移光标{delay(10);if(d1==0){while(!d1);dnum++;if(dnum==1){TR0=0;write_com(0x0f);write_com(0x80+0x40+10);}if(dnum==2){write_com(0x80+0x40+7);}if(dnum==3){write_com(0x80+0x40+4);}if(dnum==4){write_com(0x80+10);}if(dnum==5){write_com(0x80+7);}if(dnum==6){write_com(0x80+4);}if(dnum==7){dnum=0;TR0=1;write_com(0x0c);}}}if(d2==0) //加数据{delay(10);if(d2==0){while(!d2);if(dnum==1){miao++;if(miao==60)miao=0;write_sfm(9,miao); //顺序不能换write_com(0x80+0x40+10); //顺序不能换}if(dnum==2){fen++;if(fen==60)fen=0;write_sfm(6,fen);write_com(0x80+0x40+7);}if(dnum==3){shi++;if(shi==24){shi=0;}write_sfm(3,shi);write_com(0x80+0x40+4);}if(dnum==4){day++;a++;weekday(a);if(day==31)day=1;write_ymd(9,day);write_com(0x80+10);}if(dnum==5){month++;if(month==13)month=1;write_ymd(6,month);write_com(0x80+7);}if(dnum==6){year++;write_ymd(3,year%100);write_com(0x80+4);}}}if(d3==0) //减数据{delay(10);if(d3==0){while(!d3);if(dnum==1){miao--;if(miao==-1)miao=59;write_sfm(9,miao);write_com(0x80+0x40+10);}if(dnum==2){fen--;if(fen==-1)fen=59;write_sfm(6,fen);write_com(0x80+0x40+7);}if(dnum==3){shi--;if(shi==-1)shi=23;write_sfm(3,shi);write_com(0x80+0x40+4);}if(dnum==4){day--;a--;weekday(a);if(day==0)day=30;write_ymd(9,day);write_com(0x80+10);}if(dnum==5){month--;if(month==0)month=12;write_ymd(6,month);write_com(0x80+7);}if(dnum==6){year--;write_ymd(3,year%100);write_com(0x80+4);}}}}void main(){unit();while(1){jishu();change();}}void timer0()interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;count++;}#include<reg52.h>#define uchar unsigned char //宏定义#define uint unsigned int //宏定义sbit rs=P3^5; //液晶数据/指令选择端:1-数据,0-指令sbit lcden=P3^4; //液晶使能控制端:1-有效,0-无效sbit shift_key=P3^2;//位置移动键sbit up_key=P3^3;//增加键uchar temp=0;//定义定时器溢出计数变量,每隔50ms产生1次溢出,temp加1uint year=2011;//定义年变量并赋初值2011年uchar month=06,day=01,week;//定义月、日、星期变量,并赋初值5月23日uchar hour=23,minute=59,second=58;//定义时、分、秒变量,并赋初值12时00分00秒uchar code week_string[7][4]={"MON","TUE","WED","THU","FRI","SA T","SUN"};//定义星期英文缩写表uchar data month_day[12]={31,0,31,30,31,30,31,31,30,31,30,31};//定义每月天数表/*--定时计数器T0及中断初始化函数--*/void init(void){TMOD=0x01;//设置定时器0为工作方式1TH0=(65536-50000)/256;//16位计数初值除以256得到高8位初值TL0=(65536-50000)%256;//16位计数初值除以256的余数得到低8位初值EA=1;//开总中断ET0=1;//开启定时器0中断EX0=1;//开启外部中断,外部中断用于调整时间PT0=1;//将定时器0中断设置高优先级,调整时间期不停止计时TR0=1;//启动定时器0}/*----------1ms延时函数----------*/void delay(uint n){uint i,j;for(i=n;i>0;i--)for(j=114;j>0;j--);}/*-------LCD1602写指令函数-----*/void LCD1602_write_com(uchar com){rs=0;//rs=0,置指令输入状态P0=com;//输出指令码delay(1);//延时1mslcden=1;//lcden=1,使能端有效delay(1);//延时1mslcden=0;//lcden=0,使能端无效}/*-------LCD1602写数据函数-----*/void LCD1602_write_dat(uchar dat){rs=1;//rs=1,置数据输入状态P0=dat; //输出待显示字符的字符码(ASCII码)delay(1);//延时1mslcden=1;//lcden=1,使能端有效delay(1);//延时1mslcden=0;//lcden=0,使能端无效}/*********************公历平年的2月只有28天,公历闰年的2月有29天。

汇编语言实时时钟程序的设计说明

汇编语言实时时钟程序的设计说明

课程设计说明书姓名:学号:院系:专业:题目:实时时钟程序设计指导教师:职称:课程设计说明书院系:专业:姓名:学号:课程设计题目:实时时钟程序设计起迄日期:课程设计地点:指导教师:系主任:课程设计任务书课程设计任务书目录第一章课题设计目的容及要求 (6)1.1 目的................ ... . . . . . . . . .61.2 容 (6)1.3 要求 (6)第二章程序流程图设计 (2)2.1主流程图设计 (2)2.2子流程图设计.............. 错误!未定义书签。

第三章程序段落的说明 (8)3.1光标的设立和隐藏 (8)3.2调用系统的时间 (5)3.3判断是否有键盘的输入 (6)第四章程序调试说明、结果记录与分析 (7)4.1程序调试的过程 (7)4.2调试结果 (7)4.3分析结果 (8)第五章总结与体会 (8)参考文献 (8)附录 (9)1.程序流程图 (9)2.程序清单 (11)第一章课题设计目得容及要求1.1 目得1)培养学生文献检索的能力,特别是如何利用Internet检索需要的文献资料。

2)培养学生综合分析问题、发现问题和解决问题的能力。

3)培养学生运用知识的能力和工程设计的能力。

4)提高学生课程设计报告撰写水平。

1.2 容设计一个根据所学汇编语言课程的知识,熟练8086汇编语言的编程原理,和程序设计思想,编写一个实时时钟程序进一步提高综合运用知识的能力。

1.3 要求每隔一秒显示系统时钟;可以重复输入,有退出键功能。

第二章程序流程图设计2.1主流程图设计由方案设计分析可知,此次设计比较简单,先初始化程序,然后设立光标,在光标移动时,不断地取时,取分,取秒,并不断的循环。

在循环的过程中,当按下ESC键时退出程序;当按下其它键时,程序继续运行,并显示时间界面,再按下ESC键时,程序又将退出。

流程图设计:当初始化后,设定一个光标用来显示时间的时、分、秒,并将光标隐藏。

(汇编)实现数码管显示年,月,日,时,分,秒,星期,温度,按键可调万年历

(汇编)实现数码管显示年,月,日,时,分,秒,星期,温度,按键可调万年历

;///////////////////////////////////////////;本程序源代码由湖南工程职业技术学院提供.;专业单片机培训,让你学习单片机更容易.;程序员:蒋庆桥;QQ:xxxxxxxxx;本程序用汇编实现数码管显示年,月,日,时,分,秒,星期,温度,按键可调万年历,H_ADJ BIT P3.0 ;时/年调整M_ADJ BIT P3.1 ;分/月调整S_ADJ BIT P1.4 ;秒/日调整DT_SET BIT P1.6 ;时间/日期选择STR BIT P1.5;启动走时T_RST BIT P1.0 ;实时时钟复位线引脚T_CLK BIT P1.1 ;实时时钟时钟线引脚T_IO BIT P1.2 ;实时时钟数据线引脚HH_BIT EQU 40H ;时高位HL_BIT EQU 41H ;时低位MH_BIT EQU 42H ;分高位ML_BIT EQU 43H ;分低位SH_BIT EQU 44H ;秒高位SL_BIT EQU 45H ;秒低位TEMPER_L EQU 46HTEMPER_H EQU 47HYH_BIT EQU 48H ;年高位YL_BIT EQU 49H ;年低位MOH_BIT EQU 4aH ;月高位MOL_BIT EQU 4bH ;月低位DH_BIT EQU 4cH ;日高位DL_BIT EQU 4dH ;日低位SEC EQU 30HMIN EQU 31HHOUR EQU 32HDAY EQU 33HMONTH EQU 34HWEEK EQU 35HYEAR EQU 36HTEMPER equ 37hFLAG1 BIT 20h.0 ;DS18B20存在标志位DQ BIT P1.3A_BIT EQU 55HB_BIT EQU 56HDS1302_ADDR EQU 5EHDS1302_DATA EQU 5FHORG 00HLJMP STARTSTART:MOV SP,#60HMOV TMOD,#11HMOV TH0,#3CHMOV TL0,#0B0HMOV R0,#10SETB EASETB ET0SETB TR0MOV R1,37HMOV YEAR,#13H ;上电预置日期、时间MOV WEEK,#03H ;周1 MONMOV MONTH,#07H ;2011 04 25 12:00:00MOV DAY,#05HMOV HOUR,#23HMOV MIN,#00HMOV SEC,#00HMOV 50H,#0/////////////////////////////////////////////////////////////////////// ////MAIN:LCALL KEY//MAIN2:CALL FENLILCALL INIT_18B20LCALL GET_TEMPERcall CHANGEcall dispcall displayAJMP MAINFENLI:MOV A,YEARMOV B,#10HDIV ABMOV YL_BIT,BMOV YH_BIT,AMOV A,MONTHMOV B,#10HDIV ABMOV MOL_BIT,BMOV MOH_BIT,AMOV A,DAYMOV B,#10HDIV ABMOV DL_BIT,BMOV DH_BIT,AMOV A,HOURMOV B,#10HDIV ABMOV HL_BIT,BMOV HH_BIT,AMOV A,MINMOV B,#10HDIV ABMOV ML_BIT,BMOV MH_BIT,AMOV A,SECMOV B,#10HDIV ABMOV SL_BIT,BMOV SH_BIT,ARETKEY: ;按键子程序JB F0,MAIN10 ;F0=1,开始走时。

屏幕显示当前系统的时间

屏幕显示当前系统的时间

Hefei University微机原理课程设计课程名称:屏幕显示当前系统的时间学生班级:07级自动化(2)班报告人:王清源:陈瑜:王源卿:指导教师:刘伟、林泽坤课程设计时间:2010年1月4日自动化专业微机原理课程设计任务书2目录摘要 ....................... 错误!未定义书签。

设计题目 ................... 错误!未定义书签。

设计原理 ................... 错误!未定义书签。

任务安排 ................... 错误!未定义书签。

设备与器材 ................. 错误!未定义书签。

流程图 ..................... 错误!未定义书签。

主程序:..................................... 错误!未定义书签。

子程序TIMEDISPLAY: ............ 错误!未定义书签。

子程序DATEDISPLAY: ............ 错误!未定义书签。

............................................................................................................................ 错误!未定义书签。

程序清单 ................... 错误!未定义书签。

程序实现 ................... 错误!未定义书签。

设计总结 ................... 错误!未定义书签。

参考文献 ................... 错误!未定义书签。

3摘要此次课程设计主要是学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应技术的指导性作用,进一步加强理论知识与应用相结合的实践能够进一步加深对专业知识和理论知识学习的认识和理解,使自己的设计水平和对所学的知识的应用能力以及分析问题的能力得到问题的能力得到全面提高。

利用汇编语言取系统时间

利用汇编语言取系统时间

利用汇编语言取系统时间汇编语言小程序解读本程序是利用汇编语言编写的取系统时间的的小程序,程序简单易读,构思巧妙!代码为:code segmentassume cs:codestart:mov ah,2ch;2ch号功能调用,取系统时间:ch,cl,dh 中分别存放时分秒int21hcall disptime;调用disptime子程序显示时间exit:mov ax,4c00h;结束程序,前往DOSint21hdisptime procmov al,ch;小时的值赋给alcbw;al扩展成ax,用做除法的被除数call bindecmov dl,':';显示":"mov ah,02hint21hmov al,cl;分cbwcall bindecmov dl,':';显示":"mov ah,02hint21hmov al,dh;秒cbwcall bindecretdisptime endpbindec procpush ax;保存寄存器的值(一定要的)push cxpush dxmov dx,0;被除数高16位置0mov cx,10d;除数为10ddiv cxmov bx,dx;先保存余数mov dl,al;显示商(即十进制二位数的十位)add dl,30h;转换成Ascii码mov ah,02h;2号功能调用,显示字符(十位)int21hmov dx,bx;恢复余数的值(十进制二位数的个位) add dl,30h;转换成ASCII码mov ah,02h;2号功能调用,显示字符(个位)int21hpop dx;恢复寄存器的值pop cxpop axret;子程序前往bindec endpcode endsend start。

汇编语言课程设计任务书

汇编语言课程设计任务书

汇编语言课程设计任务书一、课程设计目的1.掌握汇编语言与高级语言的接口方法,正确编写混合语言程序,掌握混合语言程序的调试和操作;2.掌握dos、bios系统功能调用,掌握基本的显存读写技术;进一步了解汇编接口的功能和用法,掌握利用定时器产生声音的方法;3.学会用汇编语言编写比较完整的实用程序,培养自己动手操作的能力;4.学习汇编语言项目设计、编程、调试、编写报告等的基本思想和方法。

二、任务内容:任务一:混合编程,将内存中字符串的小写字母转换为大写字母并输出。

你也可以根据自己的兴趣设置自己的话题。

要求:1.分别运用混合编程的两种方法:嵌入式编程、c程序调用汇编函数模阻止完成任务;2.也可根据兴趣自定题目,如排序、求阶乘和等。

任务二:选择以下主题之一1.显示系统日期和时间要求:1.在屏幕上特定位置显示当前系统日期和时间;2.显示的日期和时间要求即时更新,即设计为跳动的时钟;3.可自定义电子钟的显示区域、显示位置、背景和前景色或以图形化方式显示。

4.当按下一个键(如“Q”)时,程序返回dos,数字时钟消失。

2.利用pc扬声器演奏乐曲要求:1.在屏幕上的特定位置显示歌曲名称;2.循环演奏乐曲(自选);3.当按下一个键(如“Q”)时,音乐停止,程序返回DOS。

三、课程设计报告的要求1.在本课程设计中,每位学生必须认真、独立地完成课程设计的编程和调试。

2.课程设计报告应打印在A4纸上,且必须有目录。

应提供封面,内容应得到认可1这是独立完成的。

3.课程设计报告内容一般应包含如下部分:① 课程设计的目的和内容;② 每个任务的程序流程图③ 节目表④ 调试结果及分析;⑤ 收获、经验和建议。

4.课程设计结束同时上交课程设计报告,不得拖延。

四、绩效评估1.考勤(20分)2.调试验收(30分)3.随机回答讲师的问题(20分)4。

课程设计报告(30分)5.课程设计态度不认真,超过1/3时间不到者,不予及格。

6.完全抄袭他人、对设计内容一无所知或知之甚少的,一经发现将被取消资格。

汇编语言显示系统时间和日期

汇编语言显示系统时间和日期

汇编语言显示系统时间和日期汇编课程设计:显示系统当前日期和时间2011年03月19日? 课程设计? 评论数1 ? 被围观149概述 (1)一课程设计目的 (1)二课程设计要求 (1)三课程设计题目 (1)四课题分析 (2)五程序流程图 (3)六程序源代码 (4)七结果显示 (7)八关键代码段分析 (9)九感想、收获及体会 (12)九参考文献 (12)用汇编语言实现显示系统时间的程序概述此软件,有着简单、明了的提示界面,用户从键盘输入的这个字符跟大写字母T,D,Q分别比较,如果和哪个字母的码相等,就调用与此字母对应的显示系统时间子程序跟显示系统日期子程序,然后转换为数字字符码将对应的时间或日期输出或直接退出。

课程设计目的对学生掌握知识的深度、运用理论去处理问题的能力、实验能力、课程设计能力、书面及口头表达能力进行考核。

进行程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读,编制和调试一定规模的汇编语言程序的水平。

二、课程设计要求要求编写并调试通过一个小型软件,实现对软件或硬件的操作。

遵循模块化,结构化的程序设计方法。

要求程序必须正确。

程序简明易懂,多运用输入输出提示,出错信息及必要的注释。

要求程序结构合理,语句使用得当。

要求准求编程技巧和程序运行效率。

三、课程设计题目:题目:显示系统当前日期和时间要求设计界面提示信息为:“:”,从键盘输入“D”,可显示系统日期。

从键盘输入“T”,可显示系统时间。

从键盘输入“Q”,退出程序。

利用的系统功能调用的2和2功能调用,读取系统日期和时间。

将日期和时间转换为相应的码字符,显示在屏幕上。

课题分析1、这个题目是显示系统当前日期和时间,这就需要用的的2A号功能——取系统日期和2C号功能——取系统时间,以及的06号功能——清屏或上卷,02号功能——之光标位置。

此题目主要是将时间,日期转换为相应的码,并显示出来。

ds1302显示时间课程设计

ds1302显示时间课程设计

ds1302显示时间课程设计一、课程目标知识目标:1. 学生能理解DS1302时钟芯片的基本原理,掌握其引脚功能及电路连接方式。

2. 学生能够掌握DS1302芯片的寄存器配置方法,并运用此知识读取和显示时间。

3. 学生能够解释时间格式,并掌握如何在LCD显示屏上正确显示时间。

技能目标:1. 学生能够独立完成DS1302模块与微控制器的连接,进行基本的电路搭建。

2. 学生能够编写程序,通过I2C或SPI接口与DS1302通信,读取实时时间数据。

3. 学生能够通过调试程序,解决显示时间中的常见问题,确保显示时间的准确性。

情感态度价值观目标:1. 学生能够培养对电子技术的兴趣,激发学习嵌入式系统的热情。

2. 学生能够在项目合作中发展团队协作精神,提高沟通与解决问题的能力。

3. 学生能够认识到时间管理的重要性,通过技术手段加强对时间的认识和尊重。

课程性质分析:本课程为中学信息技术或电子技术相关课程内容,结合实践操作,旨在让学生通过具体的项目实践,掌握DS1302芯片的应用,增强理论与实践相结合的能力。

学生特点分析:考虑到学生所在年级,课程设计需结合学生的认知水平,注重知识技能的逐步引导与提升,同时注重激发学生的学习兴趣,提高自主学习和探究的能力。

教学要求:1. 教学过程中应注重理论与实践相结合,强调动手能力。

2. 通过任务驱动的教学方法,引导学生主动探索,合作学习。

3. 教学评估应基于学生在电路搭建、程序编写、问题解决等方面的具体表现,确保学习目标的达成。

二、教学内容1. 引入DS1302时钟芯片的基础知识,包括芯片特性、引脚功能及其在电路中的作用。

- 课本章节:第三章,第二节“实时时钟芯片DS1302”2. 介绍DS1302的内部寄存器结构,解释各寄存器功能及配置方法。

- 课本章节:第三章,第三节“DS1302的寄存器及其设置”3. 指导学生完成DS1302与微控制器(如Arduino)的电路连接。

- 教学大纲:实践活动一“DS1302电路连接与测试”4. 讲解I2C或SPI通信协议,并运用此协议实现微控制器与DS1302的数据交换。

电子实时时钟万年日历系统-单片机课程设计(含电路图、流程图、汇编语言)

电子实时时钟万年日历系统-单片机课程设计(含电路图、流程图、汇编语言)

一、题目:电子实时时钟/万年日历系统二、功能要求:1.基本要求:⑴显示准确的北京时间(时、分、秒),可用24小时制式;⑵随时可以调校时间。

2.发挥要求:⑴增加公历日期显示功能(年、月、日),年号只显示最后两位;⑵随时可以调校年、月、日;⑶允许通过转换功能键转换显示时间或日期。

三、方案考虑:1、硬件方案:⑴显示器采用6位LED数码管(共阳),可分别显示时间或日期。

⑵显示器的驱动采用动态扫描电路形式,以达到简化电路的目的。

但要注意所需的驱动电流比静态驱动时要大,因此要增加驱动电路。

可采用74LS244或者晶体管;其中74ls244是用来驱动段选码,晶体管是驱动位选码。

⑶采用“一键多用方案”,以减少按键数目。

本方案采用了4按键。

⑷整体上要考虑:结构简单、布局美观、操作方便、成本低廉。

2、设计电路图如下:3、元件清单:(我们使用的是TX-1C开发板)⑴ 89C52 1个⑵IC座(40脚) 3个(其中1个用于接插89C51、2个用于接插LED段数码管)。

⑶ 74LS244 1个(用于驱动6个共阳的LED段数码管)。

⑷ IC座(20脚) 1个(用于接插74LS244)。

(5)显示器:LED_8段数码管(共阳型)6个三极管:(6)PNP(8550)6个(用于驱动6个共阳型LED段数码管)。

(7)微型开关:3个(其中1个用于复位电路、其它用于键盘)。

(8)晶体振荡器(12MHz):1个(用于振荡电路)。

(9)电阻器:⑴ 3KΩ 1个(用于系统复位电路)。

⑵ 1KΩ 6个(用作PNP三极管基极电阻)。

⑶ 100Ω 7个(驱动器用作74LS244输出限流电阻)。

(10)电容器:⑴ 10μF1个(用于系统复位电路)。

⑵ 30 pF 2个(用于系统振荡电路)。

(11)其它:⑴万能电路板(10×15):1块⑵焊锡条: 2米⑶带插头、座的电源端子: 1条⑷各种颜色外皮的导线:各1米(12)工具:1.电烙铁:1把2.剪钳:1把3.镊子:1把4.万用表:1个(13)设备:编程器(MEP300或TOP851)6个4、软件方案:(1)使用全汇编编写(2)时钟基准时间由单片机内部定时中断来提供,定时时间应该乘以一个整数得到,且不宜太长或太短,最长不能超过16位定时器的最长定时时间,最短不能少于定时中断服务程序的执行时间。

多功能电子时钟设计(汇编语言完美版)

多功能电子时钟设计(汇编语言完美版)

多功能电⼦时钟设计(汇编语⾔完美版)电⼦时钟实验报告⼀,实验⽬的1. 学习8051定时器时间计时处理、按键扫描及LED数码管显⽰的设计⽅法。

2. 设计任务及要求利⽤实验平台上4个LED数码管,设计带有闹铃功能的数字时钟⼆,实验要求A.基本要求:1. 在4位数码管上显⽰当前时间。

显⽰格式“时时分分”2. 由LED闪动做秒显⽰。

3. 利⽤按键可对时间及闹玲进⾏设置,并可显⽰闹玲时间。

当闹玲时间到蜂鸣器发出声响,按停⽌键使可使闹玲声停⽌。

4.实现秒表功能(百分之⼀秒显⽰)B.扩展部分:1.⽇历功能(能对年,⽉,⽇,星期进⾏显⽰,分辨平年,闰年以及各⽉天数,并调整)2.⾳乐闹铃(铃⾳可选择,闹铃被停⽌后,闪烁显⽰当前时刻8秒后,或按键跳⼊正常时间显⽰状态)3.定时功能(设定⼀段时间长度,定时到后,闪烁提⽰)4.倒计时功能(设定⼀段时间长度,能实现倒计时显⽰,时间长减到0时,闪烁提⽰)5.闹铃重响功能(闹铃被停⽌后,以停⽌时刻开始,⼀段时间后闹铃重响,且重响时间的间隔可调)三,实验基本原理利⽤单⽚机定时器完成计时功能,定时器0计时中断程序每隔0.01s中断⼀次并当作⼀个计数,设定定时1秒的中断计数初值为100,每中断⼀次中断计数初值减1,当减到0时,则表⽰1s到了,秒变量加1,同理再判断是否1min钟到了,再判断是否1h到了。

为了将时间在LED数码管上显⽰,可采⽤静态显⽰法和动态显⽰法,由于静态显⽰法需要译码器,数据锁存器等较多硬件,可采⽤动态显⽰法实现LED显⽰,通过对每位数码管的依次扫描,使对应数码管亮,同时向该数码管送对应的字码,使其显⽰数字。

由于数码管扫描周期很短,由于⼈眼的视觉暂留效应,使数码管看起来总是亮的,从⽽实现了各种显⽰。

四,实验设计分析针对要实现的功能,采⽤AT89S51单⽚机进⾏设计,AT89S51 单⽚机是⼀款低功耗,⾼性能CMOS8位单⽚机,⽚内含4KB 在线可编程(ISP)的可反复擦写1000次的Flash只读程序存储器,器件采⽤⾼密度、⾮易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构。

DOS课程设计汇编显示日期

DOS课程设计汇编显示日期

DOS课程设计汇编显示日期一、教学目标本节课的教学目标是让学生掌握DOS环境下汇编语言编程的基本技能,能够使用汇编语言编写程序显示系统日期。

具体分为以下三个方面的目标:1.知识目标:使学生了解DOS环境下汇编语言的基本语法和编程方法,理解汇编语言与机器码的关系,掌握如何使用汇编语言访问系统功能和硬件资源。

2.技能目标:培养学生具备使用汇编语言编写简单程序的能力,能够独立完成显示系统日期的汇编程序编写和调试。

3.情感态度价值观目标:培养学生对计算机科学的兴趣,激发学生主动探索和学习计算机编程的内在动力,培养学生的团队协作意识和解决问题的能力。

二、教学内容本节课的教学内容主要包括以下几个部分:1.DOS环境下汇编语言的基本语法和编程方法。

2.汇编语言与机器码的关系及其转换过程。

3.使用汇编语言访问系统功能和硬件资源的方法。

4.编写和调试汇编语言程序的技巧。

5.汇编语言编程实践:编写显示系统日期的汇编程序。

三、教学方法为了达到本节课的教学目标,将采用以下几种教学方法:1.讲授法:讲解DOS环境下汇编语言的基本语法、编程方法和汇编语言与机器码的关系。

2.案例分析法:分析示例程序,让学生了解如何使用汇编语言编写程序。

3.实验法:让学生动手编写和调试汇编语言程序,巩固所学知识。

4.讨论法:在课堂上鼓励学生提问、交流和分享心得,提高学生的团队协作能力和解决问题的能力。

四、教学资源为了支持本节课的教学内容和教学方法的实施,将准备以下教学资源:1.教材:《DOS汇编语言编程教程》。

2.参考书:提供一些汇编语言编程的参考书籍,以便学生课后自学。

3.多媒体资料:制作课件和教学视频,帮助学生更好地理解汇编语言编程的相关概念。

4.实验设备:为学生提供计算机和汇编语言编程所需的开发环境及实验设备。

五、教学评估本节课的教学评估将采取多元化方式,以全面、客观、公正地评价学生的学习成果。

评估方式包括:1.平时表现:观察学生在课堂上的参与程度、提问回答、小组讨论等表现,以了解学生的学习态度和实际操作能力。

电子实时时钟万年日历系统-单片机课程设计(含电路图、流程图、PCB图、汇编语言)

电子实时时钟万年日历系统-单片机课程设计(含电路图、流程图、PCB图、汇编语言)

摘要围绕电子钟系统的设计与开发工作进行研究和实践,详细介绍了电子钟系统的整体结构、硬件设计、软件设计,系统方案以及其的开发和具体实现。

介绍一种基于在系统可编程技术和C51编译器配有集成开发的新型电子钟的设计方法,阐述了其工作原理和软硬件设计。

在硬件上,用KEIL公司的C51大规模集成芯片对其外围电路进行集成,用1片8051实现了几十片分离元件才能实现的功能,几乎将整个系统下载于同一芯片中,实现了所谓的片上系统,从而大大简化了系统结构,增强了系统的可靠性和性价比。

该电子钟特别适用于家庭、办公大楼、公共场所等。

关键词电子钟;单片机;硬件设计;软件设计ABSTRACTAround the electronic clock system design and development of the study and practice, details the electronic clock system overall, hardware design, software design, system solutions as well as the development and implementation. Introduction of a new technology based on in-system programming and C51 compiler equipped with an integrated development of new electronic clock design method, explains how it works and software and hardware design. In the hardware companies with KEIL C51 large-scale integrated circuit chip on its surrounding, to integrate 1 tablet 8051 implementation of scores of tablets separation components to implement functionality, almost the entire system for download on the same chip, implementation of the so-called SOC, thereby greatly simplifies system structure, enhances system reliability and high performance/price ratio. The electronic clock is particularly relevant for home, office buildings and public place, etc.Key words electronic clock; single-chip; hardware; software design目录1 系统总体设计方案 (4)1.1 设计课题任务 (4)1.2 功能要求说明 (4)1.3 总体方案介绍及工作原理 (4)2 硬件系统的设计 (6)2.1 系统各功能模块介绍 (6)2.2 系统电路图 (7)2.3 系统元器件清单 (7)3 软件系统的设计 (8)3.1设计使用单片机资源介绍 (8)3.2 软件系统各功能模块介绍 (8)3.3 软件系统程序流程框图 (9)3.4 软件系统的程序 (10)4 系统的仿真分析及结论 (11)4.1 系统设计的使用说明 (11)4.2 系统设计的仿真结果 (11)4.3 系统的误差分析 (12)4.4 设计体会 (12)4.5 教学建议 (13)参考文献 (14)致谢 (15)附录(1) (16)附录(2) (17)1 系统总体设计方案1.1 设计课题任务设计一个具有特定功能的电子钟。

显示日期时间程序

显示日期时间程序

课程设计任务书学生姓名:专业班级:指导教师:工作单位:题目: 显示日期时间程序初始条件:在出现的提示信息中输入大写字母“D”,可显示系统当前日期;输入大写字母“T”,可显示系统当前时间。

按Q退出程序。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)设计任务及要求分析(2)方案比较及认证说明(3)系统原理阐述(4)硬件设计课题需要说明:硬件原理,电路图,采用器件的功能说明(5)软件设计课题需要说明:软件思想,流程图,源程序及程序注释(6)调试记录及结果分析(7)总结(8)参考资料(9)附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物目录一、课程设计的目的及要求 (3)1.课程设计的目的 (3)2.课程设计要求分析 (3)二、方案设计 (3)1.程序流程图 (3)2.工作原理 (5)3.程序代码 (5)4.程序说明 (9)(1)日期子程序 (9)(2)时间子程序 (10)三、程序调试与结果 (10)1.调试程序 (10)2. 实验结果分析 (11)四、总结 (12)参考文献: (12)2一、课程设计的目的及要求1.课程设计的目的课程设计是完成教学计划达到工科大学生培养目标的重要环节,是教学计划中进行综合训练的重要实践环节,是有助于培养应用性人才的一种教学形式,它将使学生在综合运用所学知识,解决本专业方向的实际问题方面得到系统性的训练。

培养学生利用计算机软、硬件技术解决问题的初步能力.2.课程设计要求分析通过课程设计深入了解课本内容,系统掌握8088/8086微机原理及应用知识,初步掌握DOS/BIOS调用及程序设计基本方法。

本次课程设计要求设计一个显示日期时间程序,在出现的提示信息中输入大写字母“D”,可显示系统当前日期;输入大写字母“T”,可显示系统当前时间,按Q则退出程序。

要完成本次设计,就必须用到对DOS和BIOS常用功能的调用(DOS的2AH 调用实现系统日期调用功能,2CH调用实现系统时间调用功能),并且退出程序时需要用到汇编语言对I/O中断的使用。

汇编语言课程设计电子闹钟

汇编语言课程设计电子闹钟

电子闹钟一、课题容和要求题目描述:利用汇编语言实现一个可以在显示器上显示时、分、秒的电子时钟,并能提供整点报时功能。

基本要求:(1)设计一个基本的具有显示时、分、秒的电子时钟。

(2)到整点或预定的报警时间,能够以不同的音乐进行报时,可以自行设置闹钟报警时间;(3)实物演示时要求讲出程序原理和设计思想;(4)程序运行良好、界面清晰。

提高要求:设计一个具有钟面、分针、秒针的指针式钟表,在圆盘上有均匀分布的60根刻度,对应小时的刻度用不同颜色的长刻度区别,并且将12、3、6、9对应的拉丁文绘制于表盘外。

设计提示:(1)指针式钟表的绘制。

将屏幕设置成图形显示方式,通过画点、画线,画圆等基本程序完成钟表的绘制。

表盘圆周上刻度线段两端点坐标计算是钟表绘制的核心部分。

(2)秒针、分针、时针的转动。

是经过一定的延时时间,通过在下一位置重新画一个,在原来的位置用背景色覆盖的方法实现。

(3)音乐的演奏。

利用CPU支持的外围电路8254与8255,通过汇编程序改变8255的PB0,PB1口,接通扬声器,使得计算机能够发出一定频率的声音,同时通过8254的与8255连接的2号计数器控制指定频率,从而达到控制扬声器的音乐的效果。

通过建立适当的延时程序达到一定时间后则改变2号计数器产生的方波的频率,实现音乐程序的演奏。

二、需求和思路分析经分析本次程序设计的主要容主要分为如下的几个模块:当前时间的获取并显示,码制转换,设定闹钟报鸣的时间,不同频率的闹铃声,钟表的绘制和并实现动态等模块。

其中钟表的绘制和动态走动部分比较难是本次课程设计的提高部分,且改模块可单独形成一个模块,所以放到最后进行考虑1时间的获取可以用INT 21H的2CH功能,该功能调用DOS时间调用功能,功能号:2CH,小时,分钟,秒数分别保存在,保存的形式是以二进制的形式,故显示时要2码制转化利用ASCII码与二进制码的关系ASCII=二进制+30H3闹钟鸣叫主要利用8254的二号计数器和8255的PB0和PB1来设定4 闹钟的表盘,指针的绘制,并实现时针,分针,秒针的走动。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

华北科技学院课程设计说明书课程名称:汇编语言班级: 姓名: _ _ 学号:__ 设计题目:显示系统当前时间与日期 _ 设计时间: 2009-06-21至2009-07-02指导教师: _ _ _ 评语:_________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ 评阅成绩:____评阅教师:____________一、课程设计目的进行程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。

二、课程设计要求1.要求编写并调试通过一个小型软件,实现对软件或硬件的操作。

2.遵循模块化、结构化的程序设计方法。

3.要求程序必须正确。

4.程序简明易懂,多运用输入输出提示,出错信息及必要的注释。

5.要求程序结构合理,语句使用得当。

6.适当追求编程技巧和程序运行效率。

三、课程设计题目:题目:显示系统当前时间与日期要求设计界面提示信息为:“Please input DATE(D) OR TIME(T)OR QUIT(Q):”,从键盘键入“D”,可显示系统日期。

从键盘输入“T”,可显示系统时间。

从键盘输入“Q”,退出程序。

利用DOS的系统功能调用的2AH和2CH功能调用,读取系统日期和时间。

将日期和时间转换为相应的ASCII码字符,显示在屏幕上。

四、课题分析这个题目是显示系统当前时间与日期,这就需要用DOS的2A号功能---取系统日期和2C号功能---取系统时间,以及BIOS的06号功能---清屏或上卷,02号功能---制光标位置。

此题目主要是将时间,日期转换为相应的ASCII码,并显示出来。

五、流程图:开始设置显示方式为80×25彩色文本方显示界面提示信息从键盘输入单个字符AL=’D’? 显示系统日期AL=’T ’? 显示系统时间返回操作系统AL=’Q ’? 结束NNNY Y Y六、程序源代码:CLEAR_SCREEN MACRO OP1,OP2,OP3,OP4 ;1宏定义,设置七个参数MOV AH,06H ;2 AH=06屏幕初始化或上卷指定的行MOV AL,00H ;3 清屏MOV BH,79H ;4 卷入行属性MOV CH,OP1 ;5 左上角行号MOV CL,OP2 ;6 左上角列号MOV DH,OP3 ;7 右上角行号MOV DL,OP4 ;8 右上角列号INT 10H ;9 调用BIOS功能【见43行】MOV AH,02H ;10 制定光标位置MOV BH,00H ;11 第0页MOV DH,00H ;12 第0行MOV DL,00H ;13 第0列INT 10H ;14ENDM ;15STACK SEGMENT ;16定义堆栈段DB 200 DUP(0) ;17STACK ENDS ;18DATA SEGMENT ;19 定义数据段WELCOME DB 'WELCOME YOU TO COME HERE!$' ;20 提示界面INF01 DB 0DH,0AH,'THIS IS A DISPLAY PROGAME!$' ;21INF02 DB 0DH,0AH,'D:DISPLAY SYSTEM DATE;$' ;22INF03 DB 0DH,0AH,'T:DISPLAY SYSTEM TIME;$' ;23INF04 DB 0DH,0AH,'Q:QUIT.',0DH,0AH,'$' ;24INF05 DB 0DH,0AH,'PLEASE INPUT THE CHAR:$' ;25INPUTER DB 0DH,0AH,'INPUT ERROR!',0DH,0AH,'$' ;26DATEDIS DB ' 00 - 00 - 0000',0AH,'$' ;27 显示DATETIMEDIS DB ' 00 ',3AH,' 00 ',3AH,' 00 ',0AH,'$' ;28 显示TIME【3A冒号 0A换行 OD回车】DATA ENDS ;29CODE SEGMENT ;30 代码段ASSUME CS:CODE,DS:DATA,SS:STACK ;31START: ;32MAIN PROC FAR ;33MOV AH,00H ;34 AH=0设置显示模式MOV AL,03H ;35 设置80*25图形显示CLEAR_SCREEN 00H,00H,19H,50H ;37 调用宏定义MOV AX,DATA ;38MOV DS,AX ;39MOV AX,STACK ;40MOV SS,AX ;41SHOW MACRO b ;42---46 显示宏定义LEA DX,b ;43MOV AH,9 ;44INT 21H ;45ENDM ;46SHOW WELCOME ;47---52 调用宏定义,显示字符串的内容SHOW INF01 ;48SHOW INF02 ;49SHOW INF03 ;50SHOW INF04 ;51SHOW INF05 ;52INPUT:MOV AH,01 ;53 键盘输入并回写INT 21H ;54CMP AL,44H ;55 与D比较JNE L1 ;56 不相等转L1CALL DATEDISPLAY ;57 相等调用日期显示子程序JMP EXIT1 ;58 继续输入字母L1:CMP AL,54H ;59 与T比较JNE L2 ;60 不相等转L2CALL TIMEDISPLAY ;61 相等调用时间显示子程序JMP EXIT1 ;62 继续输入字母L2:CMP AL,51H ;63 与Q比较JE EXIT ;64 相等转EXITSHOW INPUTER ;65 显示输入错误SHOW INF05 ;66 显示输入提示EXIT1:SHOW INF05 ;68 显示输入提示JMP INPUT ;69EXIT:MOV AH,4CH ;70 结束INT 21H ;71MAIN ENDP ;72DATEDISPLAY PROC NEAR ;73 日期显示子程序MOV AH,2AH ;74 取当前系统日期INT 21H ;75MOV AX,CX ;76 送年份入AX作为被除数【年份存在CX中】MOV BX,10 ;77 (BX)=10LEA SI,DATEDIS + 14 ;78 使SI指向年的最后一位【从0开始数】MOV CX,4 ;79 (CX)=4 年的位数,循环4次PUSH DX ;80 DX入栈,保存月日TAB:XOR DX, DX ;81 DX清零,存余数DIV BX ;82 (DX,AX)/BX,商送AX,余数送DXADD DL, 30H ;83 余数与30H相加变为字符的ASCII码MOV [SI], DL ;84 余数送入SI所指向的字节区DEC SI ;85 SI减一LOOP TAB ;86 循环4次【年的ASCII码转换】POP DX ;87 DX还原MOV AL, DL ;88 日送AL 【日存在DL中】XOR AH, AH ;89 AH清零DIV BL ;90 AX/BL,商送AL,余数送AH ADD AX, 3030H ;91 转变为数字字符的ASCII码SUB SI, 4 ;92 使SI指向日的第一位MOV [SI], AX ;93 (AX)送SI所指向的字节区MOV AL, DH ;94 月送AL 【月存在DH中】XOR AH, AH ;95 AH清零DIV BL ;96 AX/BL, 商送AL,余数送AH ADD AX, 3030H ;97 转变为数字字符的ASCII码SUB SI, 5 ;98 使SI指向月的第一位MOV [SI], AX ;99 (AX)送SI所指向的字节区SHOW DATEDIS ;100 显示日期RETDATEDISPLAY ENDP ;101 调用后返回TIMEDISPLAY PROC NEAR ;102 时间显示子程序MOV AH,2CH ;103INT 21H ;104MOV BX,10 ;105LEA DI,TIMEDIS ;106MOV AL,CH ;107 CH存时XOR AH,AH ;108DIV BL ;109ADD AX,3030H ;110MOV [DI+1],AX ;111MOV AL,CL ;112 CL存分XOR AH,AH ;113DIV BL ;114ADD AX,3030H ;115MOV [DI+6],AX ;116MOV AL,DH ;117 DH存秒XOR AH,AH ;118DIV BL ;119ADD AX,3030H ;120MOV [DI+11],AX ;121SHOW TIMEDIS ;122RETTIMEDISPLAY ENDP ;123 时间调用返回CODE ENDS ;124END START ;125七、结果显示八、感想、收获及体会刚开始拿到这个程序的时候,首先想到应该是从键盘输入的这个字符跟大写字母T,D,Q分别比较,如果和哪个字母的ASCII码相等,就调用与此字母相应的子程序,显示日期,时间或者直接退出。

在程序的开始,就已经先定义了清屏上卷宏定义,制定了光标位置。

考虑到程序中多次要显示字符串,所以将显示字符串也作为一个宏定义,避免了代码冗长,程序罗嗦,不清晰的麻烦。

而在整个程序中,我们只有两个子程序,日期显示子程序和时间显示子程序。

在编写日期显示子程序时,先取CX中存的系统当前日期,存在AX中,作为被除数,除以10,给各位加上30H,变为它的ASCII码。

使存日月的DX入栈,以保护日月。

指针指向DATEDIS字符串的最后一位,即年的最后一位,循环4次,将年的ASCII码依次放入字符串DATEDIS ' 00-00-0000'的‘0000’位,随后DX出栈还原。

取DL中存的日,放入AL中,将高位AH清零,AX作为被除数,重复转换ASCII码的步骤,指针减4,指向字符串DATEDIS ' 00 - 00 - 0000'的日的第一位,将转换后的日的ASCII码放进‘00’位。

相关文档
最新文档