微机原理课程设计.docx

上传人:b****6 文档编号:7219517 上传时间:2023-01-22 格式:DOCX 页数:19 大小:394.29KB
下载 相关 举报
微机原理课程设计.docx_第1页
第1页 / 共19页
微机原理课程设计.docx_第2页
第2页 / 共19页
微机原理课程设计.docx_第3页
第3页 / 共19页
微机原理课程设计.docx_第4页
第4页 / 共19页
微机原理课程设计.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

微机原理课程设计.docx

《微机原理课程设计.docx》由会员分享,可在线阅读,更多相关《微机原理课程设计.docx(19页珍藏版)》请在冰豆网上搜索。

微机原理课程设计.docx

微机原理课程设计

西安科技大学高新学院

 

微机原理与接口技术

课程设计

 

课题一个16×16点阵汉字显示

院系机电信息学院

专业______电气自动化技术___

姓名____涂发

学号1001210223

指导教师刘敏层

日期2012.7.13

 

目录

1.课程2

1.1设计目的2

1.2设计内容2

1.3设计要求2

1.4设计分析3

2.概要4

2.1硬件电路设计4

2.2软件设计5

3.详细设计7

3.1程序流程图8

3.2程序代码9

4.调试15

4.1Keil软件调试15

4.2Protues软件调试16

5.运行结果与分析18

6.设计总结与心得体会18

7.参考文献19

1.课程

16×16点阵汉字显示

1.1设计目的

(1)掌握单片机扩展LCD显示器接口的设计与编程;

(2)利用汉字式LCD显示器显示汉字。

(3)以AT89C51系列单片机为核心器件,组成一个点阵式汉字电

字显示屏

(4)通过编程熟练掌握对显示汉字进行修改、调试。

(5)熟练的掌握并且使用keil软件及proteus软件调试方法。

1.2设计内容

使用一个16×16共阴极LED点阵显示汉字字符串“西安科技大学高新学院电专1002”

1.3设计要求

(1)画出硬件电路图及程序流程图;

(2)整理实验程序清单,并给程序加详细注释;

(3)解决实验中出现的问题并进行总结;

(4)给出实验结果及对实验的改进意见。

1.4设计分析

一个16X16共阴极LED点阵是由4个8X8点阵构成,如图1,4个8X8所示阵可由单片机P0口和P2口输出段码值,片选为由74HC154控制。

这些字符串的字模可通过相关软件实现,也可通过人工方式实现。

例如“西”和“02”字模如图2所示。

图1

2.概要

2.1硬件电路设计

添加硬件元件清单表

元件名称

所属类

所属子类

AT89C51

MicroprocessorICs

8051Family

CRYSTAL

miscellaneous

--

CAP

Capacitors

Generic

CAP-ELEC

Capacitors

Generic

RES

Resistor

7WaitWirewound

Resistor

10Waitwirewound

MATR1X-8×8-RED

Optoelectronics

DotMatrixDisplays

BUTTON

Switches&Relays

Switches

74HC154

TTL74HCseries

Decoders

RESPACK-8

Resistors

ResistorPacks

硬件连线图

一个16×16点阵汉字显示

2.2软件设计

16×16共阴极LED点阵由4个8×8点阵构成,需要显示汉字字符串“西安科技大学高新学院电专1002”,可通过建立数据表格的形式进行。

通过16×16点阵汉字字模提取软件,可提取各显示汉字的字模数据。

汉字分批输出显示采用动态扫描驱动方式,阐述16×16LED点阵汉字分批显示原理。

在初始化设置(关显示)后,首先,对P0输出段码汉字上半部的相应段点亮;接着,对P2输出段码值汉字下半部的相应段点亮,即送出了第一个汉字“西”的字模数据,同理再送出第2个汉字“安”的字模数据,…如此进行,就可显示第1个汉字“西”;再进行第2个汉字“安””的显示;…,直到汉字字符串显示完成。

若字符显示完毕,又从头开始循环显示。

字符提取界面

3.详细设计

一个16X16共阴极LED点阵是由4个8X8点阵构成,要想显示汉字字符串“西安科技大学高新学院电专1002”,可以通过建立一个数据表格的形式进行。

首先,位选1有效,将段码值20H送给P0,C1送给P2以驱动相应段点亮;然后位选2有效,将段码值20H送给P0,C1送给P2以驱动相应段点亮……如此进行,直到送完16个段码,就可显示”西”再进行字符”安”的显示……每个字符的显示与字符"安"的显示过程相同,只是段码值不同而已,片选位有C0~C15,由单片机的P1口控制74HC154输出。

 

初始化设置

取段码值送P0

位选

指向下一个段码

Y

N

 

取段码值送P2

指向下一个段码

位选加1

暂时清屏

N

Y

字符显示片刻

位选复位

N

3.2程序代码

ORG00H

START:

MOVA,#00H

MOVP0,A;清除画面

ANLP2,#00H;P2清零

MOVR2,#200

D1:

MOVR3,#0F8H;延时1s

DJNZR3,$;不为0则跳转至当前地址

DJNZR2,D1

MOV20H,#00H;取码指针初值

L1:

MOVR1,#80H;每字设置停留时间

L2:

MOVR6,#16;每字十六码

MOVR4,#00H;扫描初值

MOVR0,20H;取码指针存入R0

L3:

MOVA,R4;扫描指针载入A

MOVP1,A;取码指针存入R0

INCR4;扫描下一个断码

MOVA,R0;取码指针载入A

MOVDPTR,#TABLE;数据指针指到TABLE

MOVCA,@A+DPTR;至TABLE取上半部分数据码

MOVR7,A

MOVP0,A;输出至P0显示

INCR0;取码指针加1

MOVA,R0;取码指针载入A

MOVDPTR,#TABLE;数据指针指到TABLE

MOVCA,@A+DPTR;至TABLE取上半部分数据码

MOVR7,A

MOVP2,A;输出数据码

INCR0;取下一个码

MOVR3,#02H;扫描时间1ms

D2:

MOVR5,#0F8H;延时1

DJNZR5,$

DJNZR3,D2

MOVA,#00H;清除屏幕

MOVP0,A

ANLP2,#00H;对P2清零

DJNZR6,L3;是否已显示一个字

DJNZR1,L2;停留时间是否到了

MOV20H,R0;取吗指针存入20H地址

MOVA,R7

CJNER0,#0,L1;不相等则跳转指令

CJNER0,#255,L11

MOV20H,#00H;取码指针初值

L11:

MOVR1,#80H;每字设置停留时间

L22:

MOVR6,#16;每字十六码

MOVR4,#00H;扫描初值

MOVR0,20H;取码指针存入R0

L33:

MOVA,R4;扫描指针载入A

MOVP1,A;取码指针存入R0

INCR4;扫描下一个断码

MOVA,R0;取码指针载入A

MOVDPTR,#TABLE2;数据指针指到TABLE

MOVCA,@A+DPTR;至TABLE取上半部分数据码

MOVR7,A

MOVP0,A

INCR0;输出至P0显示

MOVA,R0;取码指针载入A

MOVDPTR,#TABLE2;数据指针指到TABLE

MOVCA,@A+DPTR;至TABLE取上半部分数据码

MOVR7,A

MOVP2,A

INCR0;取码指针加1

MOVR3,#02H;扫描时间1ms

D22:

MOVR5,#0F8H;延时1

DJNZR5,$

DJNZR3,D22

MOVA,#00H;清除屏幕

MOVP0,A

ANLP2,#00H;对P2清零

DJNZR6,L33;是否已显示一个字

DJNZR1,L22;停留时间是否到了

MOV20H,R0;取吗指针存入20H地址

MOVA,R7

CJNER0,#0,L11;不相等则跳转

CJNER0,#255,L1

JMPL1

TABLE:

DB40H,00H,40H,00H,47H,0FFH,44H,12H;

DB44H,22H,7FH,0C2H,44H,02H,44H,02H;

DB44H,02H,7FH,0C2H,44H,22H,44H,22H;

DB47H,0FFH,40H,00H,40H,00H,00H,00H;"Î西",0

DB01H,00H,09H,01H,31H,01H,21H,21H;

DB21H,62H,21H,92H,0AFH,14H,61H,08H;

DB21H,08H,21H,34H,21H,0C4H,21H,02H;

DB29H,01H,31H,00H,01H,00H,00H,00H;"安",1

DB24H,10H,24H,60H,25H,80H,7FH,0FFH;

DB0C5H,00H,44H,80H,00H,20H,44H,20H;

DB33H,20H,00H,20H,00H,20H,0FFH,0FFH;

DB00H,40H,00H,40H,00H,40H,00H,00H;"科",2

DB08H,20H,08H,22H,08H,41H,0FFH,0FEH;

DB08H,80H,09H,01H,10H,01H,11H,02H;

DB11H,0C2H,11H,34H,0FFH,08H,11H,14H;

DB11H,62H,11H,81H,10H,01H,00H,00H;"技",3

DB04H,01H,04H,01H,04H,02H,04H,04H;

DB04H,08H,04H,30H,04H,0C0H,0FFH,00H;

DB04H,0C0H,04H,30H,04H,08H,04H,04H;

DB04H,02H,04H,01H,04H,01H,00H,00H;"大",4

DB02H,20H,0CH,20H,88H,20H,69H,20H;

DB09H,20H,09H,22H,89H,21H,69H,7EH;

DB09H,60H,09H,0A0H,19H,20H,28H,20H;

DB0C8H,20H,0AH,20H,0CH,20H,00H,00H;"学",5

DB20H,00H,20H,7FH,20H,40H,20H,40H;

DB2FH,5EH,29H,52H,0A9H,52H,69H,52H;

DB29H,52H,29H,52H,2FH,5EH,20H,40H;

DB20H,41H,20H,7FH,20H,00H,00H,00H;"高",6

DB02H,04H,22H,48H,2AH,52H,0A6H,41H;

DB63H,0FEH,26H,40H,2AH,50H,22H,49H;

DB00H,06H,3FH,0F8H,22H,00H,22H,00H;

DB23H,0FFH,42H,00H,02H,00H,00H,00H;"新",7

TABLE2:

DB02H,20H,0CH,20H,88H,20H,69H,20H;

DB09H,20H,09H,22H,89H,21H,69H,7EH;

DB09H,60H,09H,0A0H,19H,20H,28H,20H;

DB0C8H,20H,0AH,20H,0CH,20H,00H,00H;"学",8

DB00H,00H,7FH,0FFH,44H,20H,5AH,10H;

DB61H,0E0H,08H,01H,30H,82H,24H,8CH;

DB24H,0F0H,0A4H,80H,64H,80H,24H,0FCH;

DB24H,82H,28H,82H,30H,8EH,00H,00H;"院",9

DB00H,00H,00H,00H,1FH,0F8H,11H,10H;

DB11H,10H,11H,10H,11H,10H,0FFH,0FEH;

DB11H,11H,11H,11H,11H,11H,11H,11H;

DB1FH,0F9H,00H,01H,00H,0FH,00H,00H;"电",10

DB02H,00H,02H,00H,12H,00H,12H,00H;

DB12H,0C0H,13H,48H,1EH,48H,0F2H,44H;

DB12H,44H,12H,4AH,12H,51H,12H,60H;

DB12H,00H,02H,00H,02H,00H,00H,00H;"专",11

DB00H,00H,08H,04H,08H,04H,1FH,0FCH;

DB00H,04H,00H,04H,00H,00H,00H,00H;"1",12

DB00H,00H,07H,0F0H,08H,08H,10H,04H;

DB10H,04H,08H,08H,07H,0F0H,00H,00H;"0",13

DB00H,00H,07H,0F0H,08H,08H,10H,04H;

DB10H,04H,08H,08H,07H,0F0H,00H,00H;"0",14

DB00H,00H,0EH,0CH,10H,14H,10H,24H;

DB10H,44H,11H,84H,0EH,0CH,00H,00H;"2",15

DB00H,00H,00H,00H,00H,00H,00H,00H;停顿一秒

DB00H,00H,00H,00H,00H,00H,00H,00H;

DB00H,00H,00H,00H,00H,00H,00H,00H;

DB00H,00H,00H,00H,00H,00H,00H,00H;

DB2BH

LJMPL1

RET

END

4.调试

4.1Keil软件调试

(1)打开单片机软件开发系统keil单击keil菜单中的“工程”选择子菜单下的“新建新工程”选项弹出建立新建工程对话框,键入新建文件名称,单击“保存”。

(2)在弹出的对话框中单击“是”,再选择“AT89C51“。

(3)新建文本,输入程序,保存为“.asm”格式,将其添加到新建的工程中,最后生成“文件名.hex”。

(4)使用keil软件对程序进行调试,如图3所示

 

4.2Protues软件调试

使用proteus软件建立仿真图,然后进行调试,加载keil软件生成的“文件名.hex”文件到AT80C51的单片机上,通过LED屏观察,如图4所示。

5.运行结果与分析

(1)由于取码时是先取TABLE取上半部分数据码再取TABLE取下半部分数据码,而在编程和程序调用时没设计好同步显示,因而出现了上下显示不同步的乱码,经多次修改和调试后,程序最终能完整显示。

(2)生成的字模中大于十六进制的ASCII码中常忘加零,例如数字”2”的码DB00H,00H,EH,CH,10H,14H,10H,24H;

DB10H,44H,11H,84H,EH,CH,00H,00H;其正确的字模码为:

DB00H,00H,0EH,0CH,10H,14H,10H,24H;

DB10H,44H,11H,84H,0EH,0CH,00H,00H;。

(3)显示一个汉字需要32个码而程序中的R0最大为255,即最多显示8个字,因此字符表要创建两个标号,当要显示的字大于8个时,则判断R0是否为255,若等于255则设置其跳转至第二个标号。

6.设计总结与心得体会

通过本次课程设计,我发现自己对以前所学过的知识理解得不够深刻,掌握得不够牢固。

以前在上课的时候,老师经常强调在写一个程序之前,一定要事先把程序原理方框图画出来,但是我开始总觉得这样做没必要,很浪费时间。

但是,这次课程设计完全改变了我以前的那种错误的认识,以前我接触的那些程序都是很短、很基础的,但是在这次课程设计中碰到的那些需要很多代码才能完成的任务,画程序方框图是很有必要的。

因为通过程序方框图,在做设计的过程中,我们每一步要做什么,每一步要完成什么任务都有一个很清楚的思路,而且在程序测试的过程中也有利于查错。

通过不断的调试使我加深了对80C51芯片的理解和应用,熟练的掌握了Keil和Protues软件。

在设计过程中难免会遇到许多问题,但在老师和同学们及资料书的帮助下,终于胜利地完成了本次的课程设计,此次课程设计巩固了自己的理论知识,锻炼了自己的动手能力,弥补了在课程上面的知识漏洞。

通过这两周的努力,使我认识到要想成功必须要耐心、恒心、细心、专心。

这次实训真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。

通过本次课程设计熟练掌握微机系统与接口扩展电路的设计方法,熟练应用汇编语言编写应用程序和实际设计中的调试方法和步骤,熟悉了微机系统的硬软件开发工具的使用方法。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,才能提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到了各种各样的问题,在这些问题中也认识到了自己的种种不足,,在今后的学习中,决不能再一知半解我会更加专心,刻苦的学习,让自己的技术学的更精。

7.参考文献

[1]候玉宝、陈忠平、李成群.基于Proteus的51系列单片机设计与仿真电子工业出版社.2008年

[2]刘建清.轻松玩转51单片机北京航空航天大学出版社.2011年

[3]周航慈.单片机应用程序设计技术北京航空航天大学出版社.2010年

[4]刘建清.51单片机非常入门与视频演练电子工业出版社.2010年

[5]万隆.单片机原理与实例应用清华大学出版社.2011年

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 研究生入学考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1