实训报告1616点阵电脑时钟.docx
- 文档编号:11090382
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:31
- 大小:136.40KB
实训报告1616点阵电脑时钟.docx
《实训报告1616点阵电脑时钟.docx》由会员分享,可在线阅读,更多相关《实训报告1616点阵电脑时钟.docx(31页珍藏版)》请在冰豆网上搜索。
实训报告1616点阵电脑时钟
信息工程学院实训报告
题目:
项目一16×16点阵显示实训
项目二电脑时钟(定时器、中断器综合应用)
学生姓名:
郑献卫
学号:
0867106403
专业:
自动化
班级:
自2008-4
指导教师:
贾玉瑛李爱莲
项目一16×16点阵显示实训
第1章实训简介………………………………………………………………………..1
1.1实训要求……………………………………………………………………………1
1.2实训目的…………………………………………………………………………..1
1.3实训说明…………………………………………………………………………..1
第2章硬件设计…………………………………………………………………………2
2.1硬件电路图………………………………………………………………..............2
2.2实训内容……………………………………………………………………….........2
2.2.1实验连线……………………………………………………………………….........2
2.2.2PC环境………………………………………………………………………..……2
2.2.3观察运行结果……………………………………………………………………….2
第3章软件设计………………………………………………………………………….2
3.1编程语言选择…………………………………………………………………..2
3.1.1中断源及中断源入口地址…………………………………………………………3
3.1.1.1中断源……………………………………………………………………………3
3.1.1.2中断源入口地址…………………………………………………………………3
3.2程序设计流程图…………………………………………………………………4
3.3软件程序………………………………………………………………………..…4
3.4运行结果……………………………………………………………………………5
第4章实训心得及参考文献……………………………………………………………7
4.1实训体会……………………………………………………………………………7
4.2实训建议……………………………………………………………………………7
4.3实训总结……………………………………………………………………………7
4.4参考文献……………………………………………………………………………7
项目二电脑时钟(定时器、中断器综合应用)
第1章实训简介………………………………………………………………………...8
1.1实训目的……………………………………………………………………………8
1.2实训内容………………………………………………………………………….8
第2章硬件设计…………………………………………………………………………8
2.1实训步骤……………………………………………………………………………9
第3章软件设计………………………………………………………………………17
3.1程序设计流程图…………………………………………………………………17
3.2软件程序…………………………………………………………………………18
3.3运行结果…………………………………………………………………………22
第4章实训心得及参考文献……………………………………………………..……22
4.1实训体会……………………………………………………..……………………22
4.2实训建议…………………………………………………………………………22
4.3实训总结…………………………………………………………………………22
4.4参考文献…………………………………………………..………………………22
项目一16×16点阵显示实训
第1章实训简介
1.1实训要求
本课程的任务是使学生通过“汉字显示器”的设计过程,综合所学课程,掌握目前自动化仪表的一般设计要求,工程设计方法,开发及设计工具的使用方法,通过这一设计实践过程,锻炼学生的动手能力和分析,解决问题的能力;积累经验,培养按部就班,一丝不苟的工作个对所学知识的综合应用能力。
1.2实训目的
(1)利用单片机I/O口或以扩展锁存器的方式控制点阵显示。
(2)掌握单片机与16×16点阵块之间接口电路设计及编程。
1.3实训内容
利用实验系统16×16点阵实验单元,以两种方式控制点阵显示。
要求编制程序实现汉字点阵循环显示。
第2章硬件设计
2.1硬件电路图
2.2实训内容
2.2.1实验连线
⑴连接138译码输入端A.B.C,其中A连A2,B连A3,C连A4,138使能控制输入端G与总线单元上方的GS相连。
⑵点阵显示单元的16×16CS与译码单元Y0相连。
⑶用8芯扁平电缆将点阵显示单元的数据总线插座与数据总线单元任一插座相连
2.2.2PC环境
在与PC联机状态下,编辑、编译、连接、下载并连续运行所编程序。
2.2.3观察运行结果
如:
点阵显示模块循环显示“欢迎选用启东达爱思计算机有限公司Dais系列产品。
附:
汉字字模的提取
汉字字模的提取可借助专用的软件来完成。
这里介绍的是“字模提取V2.2”的基本使用方法,软件的最新版本可从下载。
首先运行“字模提取”,在右下角的“文字输入区”输入欲提取字模的汉字,输入完毕后请按Ctrl+Enter结束。
如我们要提取“达爱思”这几个汉字的字模(输入文字后请按Ctrl+Enter):
点击左侧的“取模方式”,以本实验指导书的实验程序清单为例,在这里我们选择“A51格式”,此时程序即把汉字“达爱思”的代码送入右下角的“点阵生成区”:
此时汉字的点阵代码已生成,将其复制到您的源程序中即可使用。
本实验指导书中的“LED16×16点阵显示实验”使用的是“字模提取V2.2”横向取模方式,具体设置请点击左侧的“参数设置”,再选择“其它选项”打开设置对话框。
汉字点阵字模的提取方法(转)
2010年10月05日星期二19:
39
汉字的点阵字模是从点阵字库文件中提取出来的。
例如常用的16×16点阵HZK16文件,12×12点阵HZK12文件等等,这些文件包括了GB2312字符集中的所有汉字。
现在只要弄清汉字点阵在字库文件中的格式,就可以按照自己的意愿去显示汉字了。
下面以HZK16文件为例,分析取得汉字点阵字模的方法。
HZK16文件是按照GB2312-80标准,也就是通常所说的国标码或区位码的标准排列的。
国标码分为94个区(Section),每个区94个位(Position),所以也称为区位码。
其中01~09区为符号、数字区,16~87区为汉字区。
而10~15区、88~94区是空白区域。
如何取得汉字的区位码呢?
在计算机处理汉字和ASCII字符时,使每个ASCII字符占用1个字节,而一个汉字占用两个字节,其值称为汉字的内码。
其中第一个字节的值为区号加上32(20H),第二个字节的值为位号加上32(20H)。
为了与ASCII字符区别开,表示汉字的两个字节的最高位都是1,也就是两个字节的值都又加上了128(80H)。
这样,通过汉字的内码,就可以计算出汉字的区位码。
具体算式如下:
qh=c1-32-128=c1-160wh=c2-32-128=c2-160
或
qh=c1-0xa0wh=c2-0xa0
qh,wh为汉字的区号和位号,c1,c2为汉字的第一字节和第二字节。
根据区号和位号可以得到汉字字模在文件中的位置:
location=(94*(qh-1)+(wh-1))*一个点阵字模的字节数。
那么一个点阵字模究竟占用多少字节数呢?
我们来分析一下汉字字模的具体排列方式。
例如下图中显示的“汉”字,使用16×16点阵。
字模中每一点使用一个二进制位(Bit)表示,如果是1,则说明此处有点,若是0,则说明没有。
这样,一个16×16点阵的汉字总共需要16*16/8=32个字节表示。
字模的表示顺序为:
先从左到右,再从上到下,也就是先画左上方的8个点,再是右上方的8个点,然后是第二行左边8个点,右边8个点,依此类推,画满16×16个点。
对于其它点阵字库文件,则也是使用类似的方法进行显示。
例如HZK12,但是HZK12文件的格式有些特别,如果你将它的字模当作12*12位计算的话,根本无法正常显示汉字。
因为字库设计者为了使用的方便,字模每行的位数均补齐为8的整数倍,于是实际该字库的位长度是16*12,每个字模大小为24字节,虽然每行都多出了4位,但这4位都是0(不显示),并不影响显示效果。
还有UCDOS下的HZK24S(宋体)、HZK24K(楷体)或HZK24H(黑体)这些打印字库文件,每个字模占用24*24/8=72字节,不过这类大字模汉字库为了打印的方便,将字模都放倒了,所以在显示时要注意把横纵方向颠倒过来就可以了。
这样我们就完全清楚了如何得到汉字的点阵字模,这样就可以在程序中随意的显示汉字了。
第3章软件设计
3.1编程语言选择
用汇编语言编写程序。
3.1.1中断源及中断源入口地址
3.1.1.1中断源
增强型MCS51是一个多中断的单片机,共有3类6个中断源,分别是两个外部中断、三个定时器中断和一个串行中断,如表1.1所列。
P0口功能:
P0口具有两种功能:
第一,P0口可以作为通用I/O接口使用,P0.7—P0.0用于传送CPU的输入/输出数据。
输出数据时可以得到锁存,不需外接专用锁存器,输入数据可以得到缓冲。
第二,P0.7—P0.0在CPU访问片外存储器时用于传送片外存储器de低8位地址,然后传送CPU对片外存储器的读写
P1口功能 :
P1口的功能和P0口de第一功能相同,仅用于传递I/O输入/输出数据。
P2口的功能:
P2口的第一功能和上述两组引脚的第一功能相同,即它可以作为通用I/O使用。
它的第二功能和P0口引脚的第二功能相配合,作为地址总线用于输出片外存储器的高8位地址。
P3口功能:
P3口有两个功能:
第一功能与其余三个端口的第一功能相同;第二功能作控制用,每个引脚都不同。
3.1.1.2中断源入口地址
每一个中断源都有一个固定的中断处理入口地址,它们的地址如表1.2所示。
表1.2中断源入口地址
扩展名称
口地址
用处
控制方式
273(4)
0FFE3H
列代码1
扩展锁存器
273
(1)
0FFE0H
列代码2
扩展锁存器
273(3)
0FFE2H
行扫描1
扩展锁存器
273
(2)
0FFE1H
行扫描2
扩展锁存器
3.2程序设计流程图
图1.1图1.2
3.3软件程序:
====27个汉字移位循环显示主程序=====================
ORG0000H
LJMPXB13
;==========点阵扫描子程序====================
X01A:
CLRA
MOV0EH,A
X023:
MOVA,0EH
CLRC
SUBBA,#10H
JCX0D2
RET
X0D2:
MOV0F0H,#02H
MOVA,0EH
MULAB
MOV82H,A
MOV83H,0F0H
LCALLXB1F
MOV20H,A
;=====================
LCALLXB4E
;=====================
MOVA,0EH
MOV0F0H,#02H
MULAB
ADDA,#01H
MOVR7,A
CLRA
ADDCA,0F0H
MOV82H,R7
MOV83H,A
LCALLXB1F
;====================
PUSHDPH
PUSHDPL
MOVDPTR,#0FFE0H
MOVX@DPTR,A
;====================
MOVA,#01H
MOVR6,#00H
MOVR0,0EH
INCR0
SJMPX083
X07E:
CLRC
RLCA
XCHA,R6
RLCA
XCHA,R6
X083:
DJNZR0,X07E
;====================
MOVDPTR,#0FFE2H
MOVX@DPTR,A
MOVDPTR,#0FFE1H
MOVA,R6
MOVX@DPTR,A
MOVR6,#80H
DJNZR6,$
;====================
CLRA
MOVDPTR,#0FFE1H
MOVX@DPTR,A
INCDPTR
MOVX@DPTR,A
POPDPL
POPDPH
;====================
INC0EH
AJMPX023
;====================
X097:
CLRA
MOVDPTR,#0FFE1H
MOVX@DPTR,A
INCDPTR
MOVX@DPTR,A
;====================
X0A0:
CLRA
MOVR5,A
X0A2:
MOVA,R5
CLRC
;=========确定要显示的汉字个数===========;用户可自定义汉字个数
SUBBA,#19H
JNCX0A0
MOVA,R5
;=========确定显示为循环方式============;用户可自定义为移位循环方式
MOVDPTR,#STLS
MOV0F0H,#20H
MULAB
ADDA,dpl
MOV0ah,A
MOVA,dph
ADDCA,0F0H
MOV09H,A
CLRA
MOVR4,A
X0BD:
MOVA,R4
CLRC
SUBBA,#64H
JNCX0CF
MOVR2,09H
MOVR1,0AH
ACALLX01A
INCR4
SJMPX0BD
X0CF:
INCR5
SJMPX0A2
;============汉字代码表======================================
STLS:
;--文字:
自--
;--宋体12;此字体下对应的点阵为:
宽x高=16x16--
DB001H,000H,001H,080H,002H,000H,01FH,0F8H,010H,008H,010H,008H,01FH,0F8H,010H,008H
DB010H,008H,010H,008H,01FH,0F8H,010H,008H,010H,008H,010H,008H,01FH,0F8H,010H,008H
;--文字:
动--
;--宋体12;此字体下对应的点阵为:
宽x高=16x16--
DB000H,020H,000H,020H,07EH,020H,000H,020H,000H,0FCH,0FFH,024H,010H,024H,010H,024H
DB024H,024H,022H,024H,04FH,044H,0FAH,044H,040H,084H,001H,014H,002H,008H,000H,000H
;--文字:
化--
;--宋体12;此字体下对应的点阵为:
宽x高=16x16--
DB008H,080H,00CH,080H,008H,088H,010H,08CH,010H,098H,030H,0B0H,050H,0E0H,090H,0C0H
DB011H,080H,012H,080H,014H,080H,010H,084H,010H,084H,010H,084H,010H,07CH,000H,000H
;--文字:
四--
;--宋体12;此字体下对应的点阵为:
宽x高=16x16--
DB000H,000H,07FH,0FCH,044H,084H,044H,084H,044H,084H,044H,084H,044H,084H,044H,084H
DB048H,084H,048H,07CH,050H,004H,060H,004H,040H,004H,07FH,0FCH,040H,004H,000H,000H
;--文字:
班--
;--宋体12;此字体下对应的点阵为:
宽x高=16x16--
DB001H,000H,0F9H,07EH,021H,010H,021H,010H,021H,010H,025H,010H,0FDH,07EH,025H,010H
DB029H,010H,021H,010H,021H,010H,03AH,010H,0C2H,010H,004H,0FEH,008H,000H,010H,000H
;--文字:
郑--
;--宋体12;此字体下对应的点阵为:
宽x高=16x16--
DB022H,000H,012H,03EH,014H,022H,07FH,024H,008H,024H,008H,028H,008H,024H,0FFH,0A4H
DB008H,022H,008H,022H,014H,022H,012H,034H,021H,028H,041H,020H,080H,020H,000H,020H
;--文字:
献--
;--宋体12;此字体下对应的点阵为:
宽x高=16x16--
DB008H,010H,008H,014H,0FFH,092H,008H,012H,008H,010H,07FH,07EH,041H,010H055H,010H
DB049H,010H,05DH,010H,049H,028H,07FH,028H,049H,028H,049H,044H,045H,044H,042H,082H
;--文字:
卫--
;--宋体12;此字体下对应的点阵为:
宽x高=16x16--
DB000H,000H,07FH,0F8H,002H,008H,002H,008H,002H,008H,002H,008H,002H,008H,002H,008H
DB002H,028H,002H,010H,002H,000H,002H,000H,002H,000H,002H,000H,0FFH,0FEH,000H,000H
XB13:
MOVR0,#7FH
CLRA
XB16:
MOV@R0,A
DJNZR0,XB16
MOV81H,#20H
JMPX097
;============查找与当前列对应的汉字代码子程序====================
XB1F:
MOVA,82H;本次扫描首址与当前列值相加
ADDA,R1;低八位相加
MOV82H,A;送DPL
MOVA,83H;高八位相加
ADDCA,R2;再加低八位进位位CY
MOV83H,A;送DPH
CLRA
MOVCA,@A+DPTR;取汉字代码
RET;返回
;=====================
XB4E:
MOVC,07H
MOVACC.0,C
MOVC,06H
MOVACC.1,C
MOVC,05H
MOVACC.2,C
MOVC,04H
MOVACC.3,C
MOVC,03H
MOVACC.4,C
MOVC,02H
MOVACC.5,C
MOVC,01H
MOVACC.6,C
MOVC,00H
MOVACC.7,C
;=================
PUSHDPH
PUSHDPL
MOVDPTR,#0FFE3H
MOVX@DPTR,A
POPDPL
POPDPH
RET
;-------------------------------
END
3.4运行结果
点阵显示模块循环显示自动化四班郑献卫
第4章实训心得及参考文献
4.1实训体会
通过本次试验,对单片机方面的知识有了更深一步的了解,对汇编语言有了更深刻的理解,初步具备了独立编程的能力。
4.2实训建议
希望以后有更多机会提高实践能力。
4.3实训总结
在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计让我增长很多知识。
对于这次的单片机设计,是把硬件和软件结合起来的设计,这也是我们第一次做这样的硬软件结合的设计。
在这次设计中,其硬件电路是比较简单的,但也需要足够的耐心加细心,同时也需要一定的硬件知识基础。
只有这样才能保证电路的成功。
而且在这次设计中硬件是基础,只有把基础打好才会有更高的设计。
硬件工作完成了就是解决程序设计的问题,程序设计是一个很灵活的东西,它反映了我们解决问题的逻辑思维和创新能力,它是一个设计的灵魂所在。
因此在整个设计过程中大部分时间是用在程序上面的。
很多子程序是可以借鉴书本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对单片机的结构很熟悉。
通过我们努力和老师的指导最终完成了程序设计。
要设计一个成功的电路,必须要有耐心,要有坚持的毅力。
在整个电路的设计过程中,花费时间最多的是各个单元电路的连接及电路的细节设计上,如在多种方案的选择中,我们仔细比较分析其原理以及可行的原因。
这就要求我们对硬件系统中各组件部分有充分透彻的理解和研究,并能对之灵活应用。
通过这次实训,我在书本理论知识的基础上又有了更深层次的理解。
在一周的实训中,收获知识的同时,还收获了阅历,收获了成熟与合作。
我们通过查找大量资料,请教老师,以及不懈的努力,不仅培养了独立思考的能力还培养了动手操作能力。
更重要的是我们学会了学习的方法,这是日后最实用的。
面对社会的挑战,只有通过不断的学习和实践才能完成知识的积累,才能更好的提高自己取得更好的成绩。
4.4参考文献:
《新编单片机原理与应用》潘永雄,西安电子科技大学出版社,2007.2第2版
《微型计算机控制技术》潘新民、王燕芳,电子工业出版社,2011.1第2版
项目二电脑时钟(定时器、中断器综合应用)
第1章实训简介
1.1实训目的
熟悉MCS-51定时器,串行口和中断初始化编程方法,了解定时器的应用实时程序的设计与调试技巧。
1.2实训内容
编写程序,从本实验系统键盘上输入时间初值,用定时器产生0.1S定时中断,对时钟计数器计数,并将数值实时地送数码管显示。
第2章硬件设计
2.1实训步骤
1、在与PC联机状态下,编写、调试程序,实现电脑钟功能。
第3章软件设计
3.1程序设计流程图
3.2软件程序:
#include
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实训报告 1616点阵 电脑时钟 报告 1616 点阵 电脑 时钟