单片机课设实验报告

合集下载

单片机课程设计实验报告

单片机课程设计实验报告

单片机课程设计实验报告实验名称:频率计 指导教师:徐建军 学生信息:鄢立夏(电气 0903,09271061) 闫琛 (电气 0904,09271121)一、 实验题目 6 位数码管显示频率,测量频率的范围为 50HZ—50KHZ 用外 部中断或计数器,可使用 555 波形发生器。

二、 实验电路频率测量电路鄢立本电路图根据实验板的绘制。

三、 实验原理 本实验中采用了测频的方法,使用了 T0、T1 定时计数器,其中 通过控制 T1 作为定时器设定 1S 延时,T1 作为计数器接受脉冲输入。

1S 延时到,关闭 T0、T1 读取 TH0、TL0 并将此两个 8 位数据转化为 6 位十进制数存储进 30H-35H 的位寻址空间内, 然后调用数码管显示函 数,显示 30H-35H 中的数值。

然后对 T0、T1 做下一次计数的初始化 设置,并清零 TH0、TL0。

再进入下一次测频阶段,如此循环,即可夏实现动态测量输入信号的频率并在数码管上进行显示。

四、 程序控制流程图START 关闭T0、T1 停止计数单片机读取 TH0、TL0T0->十六位计数器 初始化 T1->十六位20ms定 时初始化初始化数据存储空 间初始化数据处理 函数开启T0、T1, 开始计数 数据处理完毕并送至 30H~35H?N YP3.4管脚脉冲NT1,50次中断, 定时1秒到?数码管显示 30H~35H内容N显示完 毕?频 率 计 控 制 流 程 图Y设计:鄢立夏、闫琛五、 实测代码 由于我们采用了自己焊接的 51 单片机最小系统为新片烧写程序,然后将新 片安放至实验板上进行调试的,编写软件为 Keil,所以一下包括注释等某些格式 可能和伟福软件有些不同。

望谅解。

Org 0000H Sjmp Main; Org 000BH; Sjmp Timer0_Serv; 判断 100Khz 时溢出时使用 Org 001BH Sjmp Timer1_Serv; Main: Lcall Sys_Init; LCALL Start; Sys_Loop: Ajmp Sys_Loop; while(1);//开始函数 Start: Setb TR0; Setb TR1; Setb ET1; Setb ET0 Setb EA; Ret; //系统初始化函数 Sys_Init: Lcall Timer_Init; //设置定时时间 50*20ms=1s MOV 20H,#50; //保存 T0 的计数值 Mov 21H,#0; Mov 22h,#0; Mov 23H,#0;//100Khz 位 //设置六位数据存储空间; MOV 31H,#0; MOV 32H,#0; MOV 33H,#0; MOV 34H,#0; MOV 35H,#0; MOV 36H,#0; Ret; //定时器/计数器 0、1 初始化函数,T0 作为计数器,T1 作为定时器 Timer_Init: Mov TMOD,#15H; Mov TH0,#00H; Mov TL0,#00H; Mov TH1,#0ECH;定时 10ms Mov TL1,#078H; Ret; //T0 中断服务函数 Timer0_Serv: INC 23H; 十万位处理; Reti; //T1 中断服务函数 Timer1_Serv: MOV R1,#31H;数据起始位 MOV R2,#6; MOV R4,#0FEH; Single_Spark:;单个数码管亮,循环起来MOV A,R4; MOV P0,A; RL A; MOV R4,A; MOV A,@R1; MOV DPTR,#Led_Data; MOVC A,@A+DPTR; MOV P2,A; INC R1; LCALL Delay; DJNZ R2,Single_Spark; //判断 1S 定时是否已到 Djnz 20H,Timer_Go_On; Clr TR0; Clr TR1; Mov 21H,TL0; Mov 22H,TH0; Mov 20H,#100; LCALL Frequence_Show; Mov TH0,#00H; Mov TL0,#00H; Timer_Go_On: Mov TH1,#0B1H;定时 10ms Mov TL1,#0DFH; SETB TR0; SETB TR1; EXIT: Reti; Frequence_Show: MOV R0,#31H MOV R1,#06H ;对上次的内容清零 Clear_Data: MOV @R0,#0 INC R0 DJNZ R1,Clear_Data; //计数器处理函数,封装. Data_Handle: MOV A,23H; MOV B,#0AH; DIV AB; MOV 24H,A ;存储第一位商 MOV A,B;MOV 30H,22H; ANL 30H,#0F0H; ADD A,30H; SWAP A; MOV B,#0AH; DIV AB; MOV 25H,A MOV A,B; SWAP A; ANL 22H,#0FH; ADD A,22H; MOV B,#0AH; DIV AB; MOV 26H,A MOV A,B; MOV 30H,21H; ANL 30H,#0F0H; ADD A,30H; SWAP A; MOV B,#0AH; DIV AB; MOV 27H,A; MOV A,B; SWAP A; ANL 21H,#0FH; ADD A,21H; MOV B,#0AH; DIV AB; MOV 28H,A; MOV 31H,B MOV A,24H; SWAP A; ADD A,25H; MOV B,#0AH; DIV AB; MOV 24H,A MOV A,B; SWAP A; ADD A,26H;;存储第二位商;存储第三位商;存储第四位商;存储第五位商 ;存储十进制数个位;存储第一位商MOV B,#0AH; DIV AB; MOV 25H,A; MOV A,B; SWAP A; ADD A,27H; MOV B,#0AH ; DIV AB ; MOV 26H,A; MOV A,B; SWAP A; ADD A,28H; MOV B,#0AH; DIV AB; MOV 27H,A; MOV 32H,B; MOV A,24H; SWAP A; ADD A,25H; MOV B,#0AH; DIV AB ; MOV 24H,A ; MOV A,B ; SWAP A; ADD A,26H; MOV B,#0AH; DIV AB ; MOV 25H,A; MOV A,B; SWAP A ; ADD A,27H; MOV B,#0AH; DIV AB; MOV 26H,A; MOV 33H,B; MOV A,24H; SWAP A; ADD A,25H;;存储第二位商;存储第三位商;存储第四位商 ;存储十进制数十位;存储第一位商;存储第二位商;存储第三位商 ;存储十进制数百位MOV B,#0AH; DIV AB; MOV 24H,A ; MOV A,B; SWAP A; ADD A,26H; MOV B,#0AH; DIV AB; MOV 25H,A MOV 34H,B MOV A,24H; SWAP A; ADD A,25H; MOV B,#0AH; DIV AB; MOV 35H,B; MOV 36H,A;;存储第一位商;存储第二位商 ;存储十进制数千位;存储十进制数万位 ;存储十进制数十万位MOV R0,#6; MOV R1,#31H; MOV R2,#0EFH MOV DPTR,#Led_Data;RET; Delay: MOV 40H,#0F0H; Delay_Loop: NOP; DJNZ 40H,Delay_Loop; RET; Led_Data: DB 3FH,06H,5BH,4FH,66H,6DH,0FDH,07H,0FFH,0EFH; END六、 实验问题总结及解决方法 1、 在调试数码管显示子程序时,数码管显示太暗。

单片机实验报告范文

单片机实验报告范文

单片机实验报告范文一、实验目的本实验的目的是通过学习单片机的基本原理和使用方法,掌握单片机在各个实际应用中的基本技能。

二、实验器材及原理1.实验器材:STC89C52单片机、电源、晶振、按键、LED灯、蜂鸣器等。

2.实验原理:单片机是一种微处理器,能够完成各种复杂的功能。

通过学习单片机的工作原理和编程方法,可以控制各种外围设备,实现不同的功能。

三、实验内容及步骤1.实验一:点亮LED灯步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。

(2)编写程序,点亮LED灯。

2.实验二:按键控制LED灯步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。

(2)将按键和LED灯与单片机相连。

(3)编写程序,实现按下按键控制LED灯亮灭。

3.实验三:数码管显示步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。

(2)将数码管与单片机相连。

(3)编写程序,将数字输出到数码管上显示。

4.实验四:定时器应用步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。

(2)编写程序,实现定时器功能。

四、实验结果及分析1.实验一:点亮LED灯LED灯成功点亮,证明单片机与外部设备的连接正常。

2.实验二:按键控制LED灯按下按键后,LED灯亮起,松开按键后,LED灯熄灭。

按键控制LED 灯的效果良好,说明单片机的输入输出功能正常。

3.实验三:数码管显示数码管成功显示数字,说明单片机能够实现数字输出功能。

通过程序设计,可以实现数码管显示不同的数字。

4.实验四:定时器应用定时器正常运行,能够实现精确的定时功能。

通过调节定时器的参数,可以实现不同的定时功能。

五、实验总结通过本次实验,我们学习了单片机的基本原理和使用方法。

通过掌握单片机的编程技巧,我们能够实现各种复杂的功能,如控制LED灯、按键控制、数码管显示等。

这些技能对于日常生活和工程设计都具有很大的实用性。

在实验过程中,我们遇到了各种问题,如电路连接错误、程序编写错误等。

单片机电子时钟课程设计实验报告(1)

单片机电子时钟课程设计实验报告(1)

单片机电子时钟课程设计实验报告(1)单片机电子时钟课程设计实验报告一、实验内容本次实验的主要内容是使用单片机设计一个电子时钟,通过编程控制单片机,实现时钟的显示、报时、闹钟等功能。

二、实验步骤1.硬件设计根据实验要求,搭建电子时钟的硬件电路,包括单片机、时钟模块、显示模块、按键模块等。

2.软件设计通过C语言编写单片机程序,用于实现时钟功能。

3.程序实现(1)时钟显示功能通过读取时钟模块的时间信息,在显示模块上显示当前时间。

(2)报时功能设置定时器,在每个整点时,通过发出对应的蜂鸣声,提示时间到达整点。

(3)闹钟功能设置闹钟时间和闹铃时间,在闹钟时间到达时,发出提示蜂鸣,并在屏幕上显示“闹钟时间到了”。

(4)时间设置功能通过按键模块实现时间的设置,包括设置小时数、分钟数、秒数等。

(5)年月日设置功能通过按键模块实现年月日的设置,包括设置年份、月份、日期等。

三、实验结果经过调试,电子时钟的各项功能都能够正常实现。

在运行过程中,时钟能够准确、稳定地显示当前时间,并在整点时提示时间到达整点。

在设定的闹铃时间到达时,能够发出提示蜂鸣,并在屏幕上显示“闹钟时间到了”。

同时,在需要设置时间和年月日信息时,也能够通过按键进行相应的设置操作。

四、实验感悟通过本次实验,我深刻体会到了单片机在电子设备中的广泛应用以及C 语言在程序设计中的重要性。

通过实验,我不仅掌握了单片机的硬件设计与编程技术,还学会了在设计电子设备时,应重视系统的稳定性与可靠性,并善于寻找调试过程中的问题并解决。

在今后的学习和工作中,我将继续加强对单片机及其应用的学习与掌握,努力提升自己的实践能力,为未来的科研与工作做好充分准备。

单片机实验一实验报告

单片机实验一实验报告

题目实验1 P1口实验一一、实验目的:1.学习P1口的使用方法。

2.学习延时子程序的编写和使用。

二、实验设备:CPU挂箱、8031CPU模块三、实验内容:1.P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。

2.P1口做输入口,接八个按纽开关,以实验箱上74LS273做输出口,编写程序读取开关状态,在发光二极管上显示出来。

四、实验步骤:1、打开CPU挂箱,正确安装8031CPU模块,指导显示屏上显示“199502”字样2、执行程序1(T1_1.ASM)时:P1.0~P1.7口接发光二极管L1~L8。

执行程序2(T1_1.ASM)时:P1.0~P1.7口接平推开关K1~K8;74LS273的O0~O7接发光二极管L1~L8;74LS273的片选端CS273接CS0。

3、打开软件,选择相应的COM口和波特率,电脑与CPU挂箱正确连接上后,软件窗口的下端会显示已连接上,相应的CPU挂箱显示屏上会显示“C ”字样。

4、在软件上选择新建,新建文件类型为ASM51,新建好后,编写程序。

5、程序编写好后,选择保存,然后进行编译,调试,运行程序。

6、观察CPU挂箱上硬件的运行是否与设计的一样,否则进行相应的修改和调试。

五、注意事项1、P1口为准双向口,P1口的每一位都能独立地定义为输入位或输出位。

作为输入位时,必须向锁存器相应位写入“1”,该位才能作为输入。

8031中所有口锁存器在复位时均置为“1”,如果后来在口锁存器写过“0”,在需要时应写入一个“1”,使它成为一个输入。

2、延时程序的实现,采用指令循环来实现,本实验系统晶振为 6.144MHZ,则一个机器周期为12÷6.144us即1÷0.512us。

现要写一个延时0.1s的程序,可大致写出如下: MOV R7,#X (1)X为外循环的次数,放在R7DEL1:MOV R6,#200 (2)200为内循环的次数,放在R6DEL2:DJNZ R6,DEL2 (3)执行内循环DJNZ R7,DEL1 (4)判断R7是否为0,是否结束循环上面MOV、DJNZ指令均需两个机器周期,所以每执行一条指令需要1÷0.256us,现求出X 值:1÷0.256+X(1÷0.256+200×1÷0.256+1÷0.256)=0.1×10⁶指令(1)指令(2)指令(3)指令(4)所需时间所需时间所需时间所需时间所以X=(0.1×10⁶-1÷0.256)/(1÷0.256+200×1÷0.256+1÷0.256)=127D=7FH 经计算得X=127。

北京工商大学单片机课设实验报告

北京工商大学单片机课设实验报告

单片机原理课程设计报告题目:带电子表的直流电动机控制器班级:学号:姓名:成绩:指导教师:北京工商大学计算机与信息工程学院a.利用8051单片机设计出具有时、分、秒显示的电子表。

b.可以通过键盘设定电机的启动时间和停止时间。

c.可以在设定时间起动直流电动机,并在规定时间停止。

d.测电机转速。

【实验方案】a.键盘扫描:此部分是利用实验仪器提供的键盘扫描电路,把按键输入的键码作为一组数值存入程序已设定的数组中,当键盘上的显示时钟走到某一时刻,来开启所要求实现的功能。

实验仪上提供了一个6×4的小键盘,向列扫描码地址(0X002H)逐列输出低电平,然后从行码地址(0X001H)读回。

如果有键按下,则相应行的值应为低,如果无键按下,行码为高。

这样就可以通过输出的列码和读取的行码来判断按下的是什么键。

在判断有键按下后,要有一定的延时,防止键盘抖动。

在键盘扫描实验过程中,需将KEY/LED_CS 接到相应的地址译码上,以便用相应的地址来访问。

本部分中我们将KEY/LED CS信号接片选端CS0上。

b.电子表:此部分是利用CPU的定时器和实验仪上提供的数码显示电路,设计了一个由左向右显示分别为:时、分、秒显示的电子表。

定时器每100us中断一次,在中断服务程序中,对中断次数进行计数,100us计数10000次就是1秒,然后再对秒计数得到分和小时的值,并送入显示缓冲区。

由于此部分需要用定时器计数,随后的测量电动机转速部分也需要用定时器来计数,为避免发生冲突,所以电子表部分我们选用定时器0来计数。

c.直流电动机的开启和停止及转速测量此部分是利用实验仪上的D/A转换电路,输入由片选端CS1进行选通,输出-8V至+8V电压,控制直流电机。

在电压允许范围内,直流电机的转速随着电压的升高而加快,若加上的电压为负电压,则电机会反向旋转。

在电机转盘上安装一个小磁芯,用霍尔元件感应电机转速,用8255的PB.0读回脉冲计数,计算电机转速。

单片机课程设计实验报告+基于单片机的数字时钟+含完整实验代码

单片机课程设计实验报告+基于单片机的数字时钟+含完整实验代码

单片机课程设计报告基于单片机的数字时钟姓名:班级:学号:一、前言利用实验板上的4个LED数码管,设计带有闹铃、秒表功能的数字时钟。

功能要求:a)计时并显示(LED)。

由于实验板上只有4位数码管,可设计成显示“时分”和显示“分秒”并可切换。

b)时间调整功能。

利用4个独立按钮,实现时钟调整功能。

这4个按钮的功能为工作模式切换按钮(MODE),数字加(INC),数字减(DEC)和数字移位(SHITF)。

c)定闹功能。

利用4个独立按钮设定闹钟时间,时间到以蜂鸣器响、继电器动作作为闹铃。

d)秒表功能。

最小时间单位0.01秒。

二、硬件原理分析1.电源部分电源部份采用两种输入接口(如上图)。

a)外电源供电,采用2.1电源座,可接入电源DC5V,经单向保护D1接入开关S1。

b)USB供电,USB供电口输入电源也经D1单向保护,送到开关S1。

注:两路电源输入是并连的,因此只选择一路就可以了,以免出问题。

S1为板子工作电源开关,按下后接通电源,提供VCC给板子各功能电路。

电路采用两个滤波电容,给板子一个更加稳定的工作电源。

LED为电源的指示灯,通电后LED灯亮。

2.蜂鸣器蜂鸣器分为有源和无源两种,有源即两引脚有一个直流电源就可以长鸣,无源则需要一个1K左右的脉冲才可以蜂鸣,因此对于按键的提示音及报警蜂鸣使用有源来得方便。

有源也可以当无源使用,而无源则不能当有源使用,当然用有源蜂鸣器作音乐发声会失真厉害。

如上图:单片机P15输出高低电平经R21连接三极管B极,控制三极管的导通与截止,从而控制蜂鸣器的工作。

低电平时三极管导通,蜂鸣器得电蜂鸣,高电平时三极管截止,蜂鸣器失电关闭蜂鸣。

电路使用一个四位共阳型数码管,四个公共阳级由三极管放大电流来驱动,三极管由P10-P13控制开与关。

数码管的阴级由P0口经过电阻限流连接。

例如,要十位的数码管工作,P12输出0,使三极管Q12导通,8脚得电,当P0口相应位有输出0时,点亮相应的LED灯组合各种字符数字。

单片机项目实训实验报告

单片机项目实训实验报告

一、实验背景与目的随着科技的发展,单片机作为嵌入式系统的重要组成部分,广泛应用于各个领域。

为了提高学生的实践能力和创新精神,我们选择了单片机项目实训作为实验课程。

本次实训旨在让学生掌握单片机的基本原理,熟悉其硬件和软件设计,并通过实际项目实践,提高学生的动手能力和解决问题的能力。

二、实验内容与步骤本次实训项目为设计一款基于ATmega16单片机的简易计算器。

该计算器能够实现基本的四则运算,并通过矩阵键盘和LCD1602显示屏进行人机交互。

1. 实验内容(1)设计计算器的硬件电路,包括ATmega16单片机、矩阵键盘、LCD1602显示屏等。

(2)编写计算器的软件程序,实现四则运算功能。

(3)测试计算器的功能,确保其正常运行。

2. 实验步骤(1)硬件设计根据实验要求,设计计算器的硬件电路。

主要包括以下步骤:1)选择合适的ATmega16单片机开发板。

2)设计矩阵键盘电路,包括按键布局和连接方式。

3)设计LCD1602显示屏电路,包括数据线和控制线。

4)将以上电路连接到ATmega16单片机开发板上。

(2)软件设计编写计算器的软件程序,实现以下功能:1)初始化ATmega16单片机,设置时钟频率。

2)初始化LCD1602显示屏,显示“0”作为初始值。

3)编写矩阵键盘扫描程序,检测按键状态。

4)根据按键输入,执行相应的四则运算。

5)将运算结果显示在LCD1602显示屏上。

6)实现清零、退格等功能。

(3)测试与调试1)将编写好的程序烧录到ATmega16单片机中。

2)连接计算器硬件电路,进行功能测试。

3)针对测试过程中发现的问题,进行调试和修改。

4)确保计算器能够正常运行,实现预期功能。

三、实验结果与分析经过实际操作和调试,我们成功设计并实现了一款基于ATmega16单片机的简易计算器。

该计算器能够实现基本的四则运算,并通过矩阵键盘和LCD1602显示屏进行人机交互。

以下是实验结果分析:1. 硬件设计方面,我们选择了合适的ATmega16单片机开发板,并设计了简洁的矩阵键盘和LCD1602显示屏电路。

单片机课程设计实验报告

单片机课程设计实验报告

单片机课程设计实验报告单片机课程设计实验报告引言单片机是嵌入式系统中常见的一种计算机芯片,具有体积小、功耗低、成本低等优势。

本次实验旨在通过单片机的应用设计,加深对单片机原理和应用的理解,并提升解决问题的能力。

实验目的本次实验的目的是设计一个简单的温度监测系统,通过单片机采集温度传感器的数据,并将数据显示在液晶显示屏上。

通过这个实验,我们可以掌握单片机的基本编程和电路连接方法,同时加深对温度传感器的原理和应用的理解。

实验原理1. 单片机基本原理单片机是一种集成电路,内部包含了CPU、内存、输入输出端口等功能模块。

通过编程,可以控制这些功能模块的工作,实现各种应用。

2. 温度传感器原理温度传感器是一种能够感知环境温度变化的器件,常见的有热敏电阻、热电偶等。

本次实验使用的是热敏电阻,其电阻值随温度的变化而变化。

实验材料1. 单片机开发板2. 温度传感器3. 液晶显示屏4. 连接线等实验步骤1. 连接电路将单片机开发板与温度传感器、液晶显示屏连接起来,确保电路连接正确无误。

2. 编写程序使用C语言编写单片机的程序,实现温度传感器数据的采集和液晶显示屏的显示。

程序的基本思路是通过单片机的模拟输入端口读取温度传感器的电阻值,然后将电阻值转换为温度值,并将温度值显示在液晶显示屏上。

3. 烧录程序将编写好的程序烧录到单片机开发板上,确保程序能够正常运行。

4. 实验测试将温度传感器放置在不同的环境中,观察液晶显示屏上的温度数值是否能够准确显示,并记录实验结果。

实验结果与分析经过实验测试,我们发现温度传感器能够准确地采集环境温度,并将温度数值显示在液晶显示屏上。

通过对比实际温度和显示温度的差异,我们可以评估温度传感器的准确性和精度。

实验总结通过本次实验,我们深入了解了单片机的基本原理和应用,掌握了单片机的编程方法和电路连接方法。

同时,我们也加深了对温度传感器的原理和应用的理解。

这些知识和技能对于今后的学习和工作都具有重要意义。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二、运行效果
图2.1
图2.2
图2.1为运行在工作模式的效果仿真图,LCD进行正常的时钟计数。图2.2为其实物图。
图2.3
图2.4
图2.3为进入设置模式的效果,LCD停止计数。图2.4为其实物图。
图2.5
图2.6
图2.5为在设置模式下,把日期设置为19年03月16日02时04分41秒。图2.6为其实物图。
ORG0000H
LJMPSTART;跳向主程序
ORG0100H
START:CLRP2.4
MOVSP,#40H;重新设置堆栈指针
MOV20H,#0;_____
MOVTMOD,#01H;定时器T0定时
MOVTH0,#3CH;设置定时器初值(定时50ms)
MOVTL0,#0B0H
MOV21H,#10
SETBEA
MOV66H,#17H
RET
SW_CE:
PUSH60H;
PUSH61H
PUSH62H
PUSH63H
PUSH64H
PUSH65H
PUSH66H
MOVA,#60H
PUSHACC
SW_C1:
SETBTR0
JBGRESSION,SW_C2;判断是否为移位
LCALLDELAY
JBGRESSION,SW_C2;再次判断
图2.7
图2.7为点击确认后进入工作模式的结果,DS1302与LCD显示同步。
三、系统优化
在编程时,由于程序比较长,在编译的过程中容易出错,因此可以进行功能的分解,分开编译,这样可以更容易的找出编译过程中出现的问题,同时将不同部分的子程序分别放在一起,这样在联合调试的时候更容易找出错误。
在实现的功能中,当按下设置按键时,虽然可以按要求调整时间,但是如果多按了移位键就不知道移到哪一位了,我们可以编程加入光标功能,当移到哪一位是就可以清楚地知道在哪了。
JBADD_,SW_A
PUSHACC
LCALLADD_1;调用按键加一子程序
LCALLCE
JNBADD_,$
SW_C3:;判断是否减按键按下
JBDEC_,SW_C4
LCALLDELAY
JBDEC_,SW_C4
POPACC
MOVR0,A
PUSHACC
LCALLDEC_1;调用减一子程序
仿真和实际硬件的实验还是有着不小的区别,在软件上进行仿真,所有的端口是自己连接的,因此可以选择不同的端口使用,而在硬件实验中,硬件实验上的一些连线已经自己确定了,必须采用该端口,因此在硬件调试时,需要改变端口的地址以用来符合硬件实验的标准,其次在软件仿真上没有出现问题,在硬件实验时可能有问题,在利用软件仿真时,LCD清屏不清屏,对于实验显示来说没有产生什么影响,然而转入硬件实验室,如果不进行LCD的清屏程序,那么由于LCD上本身可能有数据,而导致了LCD的花屏,出现了不该亮的地方显示了,会对于数据的显示,以及美观造成影响,这些实际的问题并不能从软件仿真上进行解决。
电气工程学院
单片机课程设计
实验报告
班级:电142
姓名:
学号:1412021061
设计题目:实时时钟系统设计
设计时间:2017.01.09~01.13
评定成绩:
评定教师:
摘要
人类为了观测时间,从远古的观太阳、革命时期的摆钟到现在电子钟,不断的在研究、创新纪录;随着科技、社会的快速发展,时间的流逝。美国DALLAS公司推出的具有涓细电流充电能的低功耗实时时钟芯片DS1302。电子万年历诞生了,它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准等功能。该电路采用AT89C51单片机作为核心,功耗小,能在3V的电子万年历是一种非常广泛日常计时工具,对现代社会越来越流行。低压工作,电压可选用3~5V电压供电。
LJMPRETURN
ADD_SHI:
CJNER0,#62H,ADD_RI
MOVA,@R0
MOVB,#1
ADDA,B
DAA
MOV@R0,A
CJNEA,#24H,RETURN
MOV@R0,#0
LJMPRETURN
ADD_RI:
CJNER0,#63H,ADD_YUE
MOVA,@R0
MOVB,#1
ADDA,B
LCALLCE
JNBDEC_,$
SW_C4:;判断是否确定按键按下
JBENTER,SW_C5
LCALLDELAY
JBENTER,SW_C5
POPACC
MOVR0,A
POPACC
POPACC
POPACC
POPACC
POPACC
POPACC
POPACC
PUSH60H
PUSH61H
PUSH62H
PUSH63H
LCALLDELAY;调用延时子程序
JBWORK_SET,LOOP2;再次判断
LCALLSW_CE
LOOP2:LCALLCE;调用显示子程序
LJMPLOOP
CLR_BUF:;将60H-66H单元附初值
MOV60H,#0
MOV61H,#0
MOV62H,#0
MOV63H,#12H
MOV64H,#1
MOV65H,#7
CJNER0,#66H,RETURN
MOVA,@R0
MOVB,#1
ADDA,B
DAA
MOV@R0,A
LJMPRETURN
RETURN:
NOP
RET
DEC_1:;按键减
NOP
DEC_MIAO:;秒位减
CJNER0,#60H,DEC_FEN
MOVA,@R0
MOVB,#10H
DECA
DIVAB
MOVA,B
在该系统进行软件设计的时候,采用模块化设计方法,除了便于升级外,在调试过程中,模块化的程序设计将使系统更容易调试,我们在调试的过程中,可以分块调试,最后总组装,如果不采用模块化设计方法,将很难找出调试中的错误,无论是在系统硬件连接还是在软件编程时,都要细心。
在这次的单片机课设中,我遇到的问题很多,从编程到仿真,再到硬件的实验,让我感觉到困难重重,仿真失败,硬件不成功,令人烦躁,但是这也是给我了一个磨练的机会,让我学会了许多,极大地提高了我的动手能力,让我学会了,如何去解决问题,通过查阅资料找到问题的原因,并解决问题,这个过程是令人痛苦而快乐的,同时通过这次的课设也让我学到了许多的新知识,对于以前不熟悉的地方又进行了一次强化与加深,让我巩固的更为牢固了。
在硬件设计方面,可以将端口进行标号,这样在实际的硬件线路连接的过程中,如果硬件与软件原理图的连接端口不同,可以直接改标号,便于与硬件的原理图一致。
四、设计总结
系统以AT89C51为核心部件,使用串行时钟芯片DS1302,实现时间的功能设置。通过按键和液晶显示屏可方便地校对时钟时间,本系统基本完成了实用电子钟的功能,尽量做到了硬件电路简单稳定。在该系统设计,调试完成之后,对最后的成功进行分析,同时结合在调试过程中出现的错误进行综合分析,总结在实际系统设计和调试过程中的宝贵经验。
CJNEA,#0FH,DEC_M1
MOVA,@R0
MOVB,#10H
DECA
DIVAB
CJNEA,#0FH,DEC_M2
MOV@R0,#59H
LJMPDEC_RETURN
DEC_M1:
MOVA,@R0
DECA
MOV@R0,A
LJMPDEC_RETURN
DEC_M2:
MOVA,@R0
电子万年历是一种非常广泛日常计时工具,对现代社会越来越流行;万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。
关键词:时钟芯片DS1302,LCD液晶显示,单片机T89C52
摘 要2
一、调试过程4
二、运行效果6
三、系统优化10
四、设计总结11
DAA
MOV@R0,A
CJNEA,#32H,RETURN
MOV@R0,#1
LJMPRETURN
ADD_YUE:
CJNER0,#64H,ADD_NIAN
MOVA,@R0
MOVB,#1
ADDA,B
DAA
MOV@R0,A
CJNEA,#13H,RETURN
MOV@R0,#1
LJMPRETURN
ADD_NIAN:
POPACC
CJNEA,#64H,SW_C11
INCA
INC20H
SW_C11:
INCA
INC20H
CJNEA,#67H,SW_C12
MOVA,#60H
MOV20H,#0
SW_C12:
PUSHACC
JNBGRESSION,$
SW_C2:;判断是否加按键按下
JBADD_,SW_C3
LCALLDELAY
PUSH64H
PUSH65H
PUSH66H
MOVA,R0
PUSHACC
JNBENTER,$
SW_C5:;判断是设置还是显示
JNBWORK_SET,SW_C52
LCALLDELAY
JBWORK_SET,SW_C51
SW_C52:
LJMPSW_C1
SW_C51:
POPACC
POP66H
POP65H
POP64H
2、LCD的显示部分进行调试,先对产生年月日时分秒之间的连接符进行显示,编译之前先选择自动生成hex文件,让后进行编译,编译完成后调节格式上的错误,直到编译通过后,进行软件上的仿真,仿真时发现,LCD显示上出现了错位现象,让后调节源程序,调节LCD的显示行列位置之后在进行重新编译,在软件上进行仿真,出现了想要的结果;连接符编译成功后,将时钟时间显示在LCD相应的位置上,时钟显示程序,在连接符显示程序基础上进行编译,不停地循环检测60H-66H单元的内容,将这些单元的内容送入到LCD上显示,编译通过之后,发现LCD的时钟显示不正确,通过连调,发现检测60-66单元内容时出错了,重新调节程序,进行编译,成功的出现了时钟的显示。
相关文档
最新文档