16x162.docx

上传人:b****2 文档编号:23479240 上传时间:2023-05-17 格式:DOCX 页数:14 大小:149.89KB
下载 相关 举报
16x162.docx_第1页
第1页 / 共14页
16x162.docx_第2页
第2页 / 共14页
16x162.docx_第3页
第3页 / 共14页
16x162.docx_第4页
第4页 / 共14页
16x162.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

16x162.docx

《16x162.docx》由会员分享,可在线阅读,更多相关《16x162.docx(14页珍藏版)》请在冰豆网上搜索。

16x162.docx

16x162

6uuuuuuuuuuuuuuuuuttrcccccccccccccccccccccccccccccccccccccccccccccccu

南京工程学院

课程设计任务书

 

课程名称单片机原理及应用A

院(系、部、中心)自动化学院

专业自动化(数控技术应用)

班级数控061

姓名吴胡(33)

起止日期2008.12.172008.12.21

指导教师孙来业

 

一设计任务

1.题目

16×16点阵显示器设计

2.要求

利用实验仪上的16x16LED点阵显示器,编写显示英文、汉字字符程序。

显示中文“南京工程学院”。

最好能移动显示。

二总体方案

16x16点阵需要32个驱动,分别为16个列驱动及16个行驱动。

每个行与每个列可以选中一个发光管,共有256个发光管,采用动态驱动方式。

每次显示一行后再显示下一行。

点阵图案按如下格式排列:

 

片选信号16X16CS占用0B000H地址开始的地址段,行低八位地址Hang2=0B002H,行高八位地址Hang1=0B003H,列低八位地址Lie2=0B000H,列高八位地址Lie1=0B003H。

整个程序用查表的方式完成。

这个表由“南京工程学院”六个字的代码组成。

每个字的代码由32个数字组成。

最终让“南京工程学院”六个字在点阵显示器上滚动左移。

三原理框图

如图:

程序流程图

 

YN

程序流程图

四系统模块详细设计与调试

1.模块设计

(1)列的高8位显示

K0:

MOVA,R5

MOVR0,A

MOVR1,#07FH

K1:

MOVDPTR,#LIE1

MOVA,R1

MOVX@DPTR,A

RRA

MOVR1,A

MOVDPTR,#LIE2

MOVA,#0FFH

MOVX@DPTR,A

MOVA,R0

MOVDPTR,#TAB

MOVCA,@A+DPTR

INCR0

MOVDPTR,#HANG2

MOVX@DPTR,A

CALLDELAY

MOVDPTR,#TAB

MOVA,R0

MOVCA,@A+DPTR

MOVDPTR,#HANG1

MOVX@DPTR,A

CALLDELAY

MOVDPTR,#HANG1

MOVA,#00H

MOVX@DPTR,A

MOVDPTR,#HANG2

MOVX@DPTR,A

INCR0

CJNER1,#07FH,K1

7FH为01111111B开列的最高位,使其可以显示。

再RR指令向右移动为10111111B,11011111B……只到11111110B,01111111B时结束。

在开一列时,同时在行的控制口输出相应的查表值。

这样逐行扫描。

这样一个字的左半部分就被扫描完了。

(2)列低8位显示

MOVR1,#07FH

K2:

MOVDPTR,#LIE2

MOVA,R1

MOVX@DPTR,A

RRA

MOVR1,A

MOVDPTR,#LIE1

MOVA,#0FFH

MOVX@DPTR,A

MOVA,R0

MOVDPTR,#TAB

MOVCA,@A+DPTR

INCR0

MOVDPTR,#HANG2

MOVX@DPTR,A

CALLDELAY

MOVA,R0

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOVDPTR,#HANG1

MOVX@DPTR,A

CALLDELAY

MOVDPTR,#HANG1

MOVA,#00H

MOVX@DPTR,A

MOVDPTR,#HANG2

MOVX@DPTR,A

INCR0

CJNER1,#07FH,K2

同样的道理,7FH为01111111B开列的最高位,使其可以显示。

再RR指令向右移动为10111111B,11011111B……只到11111110B,01111111B时结束。

在开一列时,同时在行的控制口输出相应的查表值。

这样逐行扫描。

这样一个字的右半部分就被扫描完了。

这样一个字就被扫描完了。

(3)因为是字是被扫描的,所以显示的很快,无法看到清楚的字。

这时用循环,让这个字被扫描N次,就可以看清楚了。

(4)向左移动

INCR4

CJNER4,#02H,K0

INCR5

INCR5

CJNER5,#192,ZZ

SJMPNEXT

ZZ:

LJMPK

NEXT:

LJMPSTART

这里R5和R0用来指向代码表。

在每次显示完32个代码代表的字后,R5的值加2,指向下面第二个代码值。

这样在从头开始,执行K1,K2段。

把新的32个代码代表的字符显示出来。

这样,只到R5的值等于192(192=6*32)时停止,这样六个字就全都显示完了。

通过LJMPSTART指令又从头开始无限循环了。

2.调试

(1)出现的问题

a.用指令SJMP,CJNE。

程序很长,最后出现了“跳转出范围”的错误。

原来:

CJNER5,#192,K

SJMPSTART

改为:

CJNER5,#192,ZZ

SJMPNEXT

ZZ:

LJMPK

NEXT:

LJMPSTART

b.程序执行完6个字,“南京工程学院”后,会有一段乱码,大概一个字的位置空间。

发现,少个“南”字的代码。

要在6个字的后面再加上一个“南”字的代码。

c.在显示一个字时,总是有多余的部分出现。

因为在循环时,跳到下一列显示时,行的输出还在,这样就显示到下一列上了,所以看起来总有多余的部分。

措施:

在跳到下一列之前,把所有的行输出清零。

(2)结果

在显示器上,“南京工程学院”六个字滚动向左移动。

五设计总计

这次课程设计,相对其他组的课题比较简单。

其他组多说都用到中断和键盘程序等。

我们的课题主要是逻辑问题,只要把程序的逻辑关系搞好就可以了。

但我还是费了不少力。

开始时,我是做了一个字“南”,很容易就成功了。

但再继续往下做,把六个字都显示出来,发现程序太长了,因为每个字都写了一大段。

于是,就想到用循环来做。

在不经意间,发现只要把这六个字的代码写出来,不断调用就好了。

这样,比原来的程序简洁多了。

通过这次课程设计,我发现写程序的关键是流程,思路有了后,一切都会水到渠成。

六主要参考文献

《单片机原理及应用实验指导书》,屈波等编,2008年

《单片机原理及应用》,赵德安等编,机械工业出版社,2004

《单片机原理及应用》,雷晓平等编著,机械工业出版社,2007

七附件材料

1.硬件图

硬件图

2.程序清单及说明

LIE1EQU0B001H;列的高位

LIE2EQU0B000H;列的低位

HANG1EQU0B003H;行的高位

HANG2EQU0B002H;行的低位

ORG0000H

AJMPSTART

DELAY:

MOVR7,#0;延时子程序

DELAY1:

DJNZR7,DELAY1

RET

START:

MOVR5,#00H;R5和R0都是用来指向代码表的

K:

MOVR4,#00H;R4用来控制一个字被重复

MOVA,#0FFH扫描的次数。

以使字可以清楚地

MOVDPTR,#LIE1被看到

MOVX@DPTR,A

MOVDPTR,#LIE2

MOVX@DPTR,A

MOVA,#00H

MOVDPTR,#HANG1

MOVX@DPTR,A

MOVDPTR,#HANG2;清屏

MOVX@DPTR,A

K0:

MOVA,R5

MOVR0,A

MOVR1,#07FH

K1:

MOVDPTR,#LIE1;显示字的左半部分

MOVA,R1

MOVX@DPTR,A;控制高8列的开关

RRA

MOVR1,A

MOVDPTR,#LIE2;关掉低8列的显示,防止在低

MOVA,#0FFH8位上出现显示

MOVX@DPTR,A

MOVA,R0

MOVDPTR,#TAB

MOVCA,@A+DPTR;读查表指令

INCR0;指向下一个表值

MOVDPTR,#HANG2

MOVX@DPTR,A;显示代码值

CALLDELAY

MOVDPTR,#TAB

MOVA,R0

MOVCA,@A+DPTR;读查表指令

MOVDPTR,#HANG1

MOVX@DPTR,A;显示代码值

CALLDELAY

MOVDPTR,#HANG1;清除所有行的输出,防止

MOVA,#00H在开下一列时显示到下一列

MOVX@DPTR,A在屏幕上出现多余部分。

MOVDPTR,#HANG2

MOVX@DPTR,A

INCR0;指向下一个表值

CJNER1,#07FH,K1

MOVR1,#07FH

K2:

MOVDPTR,#LIE2;显示字的右半部分

MOVA,R1;开始时,R0的值已经加了

MOVX@DPTR,A16(相比在K1段中开始时)

RRA;其他的与K1段相似

MOVR1,A

MOVDPTR,#LIE1

MOVA,#0FFH

MOVX@DPTR,A

MOVA,R0

MOVDPTR,#TAB

MOVCA,@A+DPTR

INCR0

MOVDPTR,#HANG2

MOVX@DPTR,A

CALLDELAY

MOVA,R0

MOVDPTR,#TAB

MOVCA,@A+DPTR

MOVDPTR,#HANG1

MOVX@DPTR,A

CALLDELAY

MOVDPTR,#HANG1

MOVA,#00H

MOVX@DPTR,A

MOVDPTR,#HANG2

MOVX@DPTR,A

INCR0

CJNER1,#07FH,K2

INCR4

CJNER4,#02H,K0;让一个字被扫描2次

INCR5;用来指向代码表

INCR5

CJNER5,#192,ZZ;若R5的值小于192,就重复执行,

SJMPNEXT但每次开始时R5的值已经加2.

ZZ:

LJMPK以此来实现字的左移。

NEXT:

LJMPSTART;无限循环执行

;代码表

TAB:

DB000H,000H,0FFH,027H,000H,024H,090H,024H

DB090H,026H,090H,025H,090H,024H,0FEH,0FCH

DB090H,024H,090H,025H,090H,026H,092H,024H

DB001H,024H,0FEH,02FH,000H,024H,000H,000H;NAN

DB000H,000H,008H,020H,010H,020H,020H,020H

DB040H,020H,000H,02FH,002H,029H,001H,029H

DB0FEH,069H,000H,029H,000H,029H,060H02FH

DB020H,020H,010H,020H,008H,020H,000H,000H;JING

DB004H,000H,004H,000H,004H,010H,004H,010H

DB004H,010H,004H,010H,004H,010H,0FCH,01FH

DB004H,010H,004H,010H,004H,010H,004H,010H

DB004H,010H,004H,010H,004H,000H,004H,000H;GONG

DB000H,000H,080H,00AH,000H,013H,0FEH,03FH

DB000H,043H,080H,002H,002H,000H,022H,07DH

DB022H,045H,022H,045H,0FEH,045H,022H,045H

DB022H,045H,022H,07DH,002H,000H,000H,000H;CHENG

DB000H,000H,040H,008H,040H,010H,040H,054H

DB040H,034H,042H,014H,041H,054H,0FEH,034H

DB040H,015H,040H,016H,040H,034H,040H,050H

DB040H,018H,040H,010H,000H,000H,000H,000H;XUE

DB000H,000H,0FEH,07FH,000H,041H,000H,04BH

DB000H,054H,006H,020H,002H,012H,002H,02AH

DB006H,02AH,0F8H,02BH,000H,06BH,0f8H,02AH

DB006H,02AH,002H,022H,002H,030H,006H,020H;YUAN

DB000H,000H,0FFH,027H,000H,024H,090H,024H

DB090H,026H,090H,025H,090H,024H,0FEH,0FCH

DB090H,024H,090H,025H,090H,026H,092H,024H

DB001H,024H,0FEH,02FH,000H,024H,000H,000H;NAN

3.元器件清单

微型计算机一台

伟福Lab6000系列通用微控器实验系统

4.实物图片

 

 

“南”和“院”

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

当前位置:首页 > 小学教育 > 小学作文

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

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