用单片机显示姓名班级学号课设.docx
《用单片机显示姓名班级学号课设.docx》由会员分享,可在线阅读,更多相关《用单片机显示姓名班级学号课设.docx(29页珍藏版)》请在冰点文库上搜索。
![用单片机显示姓名班级学号课设.docx](https://file1.bingdoc.com/fileroot1/2023-5/7/747909fa-51d5-4fd4-8cc9-9e2013542308/747909fa-51d5-4fd4-8cc9-9e20135423081.gif)
用单片机显示姓名班级学号课设
目录
第一部分课程设计目的…………………………………………………………………1
1.1设计名称…………………………………………………………………………1
1.2设计目的…………………………………………………………………………1
1.3设计内容及要求…………………………………………………………………1
第二部分课程设计描述……………………………………………………………………1
第三部分课程设计报告内容………………………………………………………………1
3.1实验器材…………………………………………………………………………1
3.2LCD显示器基本原理……………………………………………………………2
3.2.1所选的122*32A液晶显示器类型…………………………………………2
3.2.2122*32A液晶显示器模块原理图………………………………………….2
3.2.3接口端管脚说明…………………………………………………………3
3.2.4122*32A电路图……………………………………………………………3
3.3SED1520基本原理………………………………………………………………3
3.3.1SED1520的特性…………………………………………………………….3
3.3.2SED1520管脚功能介绍……………………………………………………4
3.3.3SED1520时序特性…………………………………………………………5
3.3.4SED1520显示RAM结构……………………………………………………5
3.3.5液晶模块接口………………………………………………………………6
3.4液晶显示模块指令系统…………………………………………………………7
3.5字模获取…………………………………………………………………………7
3.6程序框图及程序…………………………………………………………………7
3.7接线方式………………………………………………………………………10
第四部分心得体会………………………………………………………………………10
附录:
汇编程序………………………………………………………………………………11
参考文献……………………………………………………………………………………22
课程设计成绩评定表………………………………………………………………………23
第一部分课程设计目的
1.1.设计名称
点阵式液晶显示屏的显示程序
1.2.设计目的
(1)熟练掌握C51系统开发系统的应用;
(2)了解点阵液晶显示实验的工作原理,掌握点阵液晶显示实验程序的设计方法;
(3)加强单片机的综合运用能力、提高单片机的软件编程和调试能力,为以后的学习和开发工作打下良好基础;
(4)掌握小系统开发设计的流程以及设计思路;
(5)学习获取字模的方法;学习122X32A液晶LCD的原理及编程方法。
1.3.设计内容及要求
(1)用给定的液晶屏从下到上滚动显示“班级”,“姓名”和学号;
(2)中文显示要求采用16*16点阵,数字显示要求8*8的点阵;
(3)改变字库的内容,显示其它汉字;
(4)改变页地址或列地址,使显示的内容改变位置;
(5)绘制系统硬件图。
第二部分课程设计描述
点阵式LCD液晶显示,即在了解122*32A的内部结构、工作原理、编程方法,SED1250的特性、内部结构、时序特性、各个管脚的功能,以及获取字模的方法后,编写一个完整的程序用HK—51仿真系统运行后确保无误,并要在122*32A液晶显示屏上显示所要求显示的内容。
第三部分课程设计报告内容
3.1.实验器材
(1)超想—3000TB综合实验仪…………………………1台
(2)超想3000仿真器……………………………………1台
(3)点阵式LCD122*32A液晶显示器……………………1台
(4)计算机…………………………………………………1台
(5)导线若干
3.2.LCD显示器基本原理
3.2.1.所选的122*32A液晶显示器类型
3.2.2.122*32A液晶显示器模块原理图
MGLS12232结构与他们基本相同,因考虑微型结构,采用了SED1520DAA或兼容型控制器,所以其时钟信号需由外部结构提供(频率为2KHZ),而且为122*32点阵,两个SED1520都用了61个列驱动口(SEG0—SEG60)。
模块原理图如图一:
图一模块原理图
由图一可以看出,SED1520
(1)为主要工作方式,OSC1和OSC2跨接一个电阻,并由OSC2输出时序信号;SED1520
(2)为主要工作方式,时钟由SED1520FOA
(1)提供,从OSC2输入。
两个芯片的RES上电后经一定时间升为高电平,所以其控制时序为68系列MPU的时序。
两个芯片的选通由E1,E2信号决定。
对于这几种模块,ADC选择应设置为0,占空比设置成1/32。
3.2.3.接口端管脚说明
引脚说明表如表一:
表一引脚说明表
3.2.4.122*32A电路图
电路图如图二所示:
图二122*32电路图
3.3.SED1520基本原理
3.3.1.SED1520的特性
(1)内置2560位显示RAM区。
RAM中的1位数据控制液晶屏上的一个像素的亮暗状态,“1”表示亮、“0”表示暗;
(2)具有16个行驱动输出和61个列驱动输出;
(3)可直接与80系列为微处理器相连;
(4)驱动占空比为1/6,1/32;
(5)可与SED1520级联使用,以便扩展行列、驱动能力。
3.3.2.SED1520管脚功能介绍
SED1520有两种类型,即SED1520FAA和ED1520FOA,其引脚定义基本
相同,区别在于后者内部有18KHZ时钟发生器,因此不需要外部提供时钟
发生器即可工作。
SED1520功能原理图和管脚图分别见图三和图四:
图三功能原理图
图四管脚图
3.3.3.SED1520时序特性
SED1520的读写操作时序有两种:
分别对应于6800系列MPU和8080系列MPU。
8080系列的MPU操作时序(RES=0)如图五所示:
图五SED1520时序图
时序特性如表二所示:
表二时序特性
3.3.4.SED1520显示RAM结构
SED1520中显示RAM共有32行80列,其结构如图六所示:
图六SED1520显示RAM结构
3.3.5.液晶模块接口
直接访问方式接口电路及驱动程序,原理图如图七所示:
图七直接访问方式原理图
3.4.液晶显示模块指令系统
SED1520有13条指令,从作用上可分为两大类:
一类为显示方式的设置指令,前6条指令为这一类指令,它们只需在初始化程序中写入一次即可。
另一类为显示数据读/写操作的指令,从第7条往下(包括读状态字)都是这类指令。
指令表如表三所示:
表三指令表
3.5.字模获取
利用字模生成软件获取所需的汉子及数字,字模生成软件上的扫描方式是列行式,汉子是16*16点阵扫描,数字是8*8点阵扫描。
3.6.程序框图及程序(见附录)
(1)取字模程序:
(2)LCD液晶显示初始化子程序:
(3)LCD液晶显示清屏子程序:
(4)LCD液晶显示主程序:
AGAIN
调用LCD初始化子程序
调用LCD清屏子程序
设置页地址=02H,列地址=0FH,字符代码寄存器00H
调用显示“班”字子程序
¦
设置页地址=00H,列地址=6AH,字符代码寄存器0bH
调用显示“超”字子程序
调用延时子程序
调用LCD清屏子程序
设置页地址=02H,列地址=2dH,字符代码寄存器0cH
调用显示“学”字子程序
¦
设置页地址=00H,列地址=5dH,字符代码寄存器13H
调用显示“2”字子程序
调用延时子程序
AGAIN
3.7.接线方式
接线图如图八所示:
图八液晶接线图
第四部分心得体会
本次设计让我对一些嵌入式知识体系中,有关SED1520的基本概念、基本原理、指令系统有了更深刻的认识,通过一些实践操作,还有各种接口新技术的应用。
使我对SED1520的特点、规划设计与应用有较深刻的领会和掌握,通过对整个知识体系的深入了解,掌握基本的程序设计方法,提高液晶显示器的实际设计和应用能力。
通过本次设计,我把HK-51系统仿真技术、单片机的软件编程和调试等课程的知识用到实践当中。
开始时,在HK-51系统仿真技术中由于对一些专业性概念认识不是很清楚,所以出现过许多基础性错误。
其次,由于对SED1520工作原理的概念认识不清楚,及时出现了结果,也不知道是怎样产生的,对于结果正确与否,是很难考证的。
经过了近两个星期的努力,基本完成了对点阵式液晶显示器嵌入式设计工作。
附录:
汇编程序
PD1EQU60;;模块参数
COLUMNEQU30H
PAGE1EQU31H;;页地址寄存器
CODE1EQU32H;;字符代码寄存器
COUNTEQU33H;;计数器
COMEQU20H;;指令寄存器
DATEQU21H;;数据寄存器
CWADD1EQU0fa00H;;写指令代码地址(E1)
CRADD1EQU0fa80H;;读状态字地址(E1)
DWADD1EQU0fa40H;;写显示数据地址(E1)
DRADD1EQU0fac0H;;读显示数据地址(E1)
CWADD2EQU0f800H;;写指令代码地址(E2)
CRADD2EQU0f880H;;读状态字地址(E2)
DWADD2EQU0f840H;;写显示数据地址(E2)
DRADD2EQU0f8c0H;;读显示数据地址(E2)
ORG0000H
AGAIN:
MOVSP,#60H
LCALLINT;;调用初始化子程序
LCALLCLEAR;;调用清屏子程序
MOVPD1,#3DH;;
MOVPAGE1,#02H;;页地址寄存器置初值
MOVCOLUMN,#0fH;;列地址寄存器置初值
MOVCODE1,#00H;;字符代码寄存器置初值
LCALLCCW_PR;;显示“班”
MOVPAGE1,#02H
MOVCOLUMN,#1eH
MOVCODE1,#01H
LCALLCCW_PR;;显示“级”
MOVPAGE1,#02H
MOVCOLUMN,#2dH
MOVCODE1,#02H
LCALLCCW_PR;;显示“:
”
MOVPAGE1,#2H
MOVCOLUMN,#3dH
MOVCODE1,#03H
LCALLCCW_PR;;显示“09”
MOVPAGE1,#2H
MOVCOLUMN,#76
MOVCODE1,#04H
LCALLCCW_PR;;显示“02”
MOVPAGE1,#2H
MOVCOLUMN,#91
MOVCODE1,#05H
LCALLCCW_PR;;显示“班”
MOVPD1,#3DH;;
MOVPAGE1,#00H;;页地址寄存器置初值
MOVCOLUMN,#0fH;;列地址寄存器置初值
MOVCODE1,#06H;;字符代码寄存器置初值
LCALLCCW_PR;;显示“姓”
MOVPAGE1,#00H
MOVCOLUMN,#1eH
MOVCODE1,#07H
LCALLCCW_PR;;显示“名”
MOVPAGE1,#0H
MOVCOLUMN,#2dH
MOVCODE1,#08H
LCALLCCW_PR;;显示“:
”
MOVPAGE1,#0H
MOVCOLUMN,#3dH
MOVCODE1,#09H
LCALLCCW_PR;;显示“尹”
MOVPAGE1,#0H
MOVCOLUMN,#76
MOVCODE1,#0aH
LCALLCCW_PR;;显示“红”
MOVPAGE1,#0H
MOVCOLUMN,#91
MOVCODE1,#0bH
LCALLCCW_PR;;显示“超”
LCALLDAY
MOVSP,#60H
LCALLINT;;调用初始化子程序
LCALLCLEAR;;调用清屏子程序
MOVPD1,#3DH;;
MOVPAGE1,#02H;;页地址寄存器置初值
MOVCOLUMN,#2dH;;列地址寄存器置初值
MOVCODE1,#0cH;;字符代码寄存器置初值
LCALLCCW_PR;;显示“学”
MOVPAGE1,#02H
MOVCOLUMN,#61
MOVCODE1,#0dH
LCALLCCW_PR;;显示“号”
MOVPD1,#3DH;;
MOVPAGE1,#00H;;页地址寄存器置初值
MOVCOLUMN,#0fH;;列地址寄存器置初值
MOVCODE1,#0eH;;字符代码寄存器置初值
LCALLCCW_PR;;显示“20”
MOVPAGE1,#0H
MOVCOLUMN,#1eH
MOVCODE1,#0fH
LCALLCCW_PR;;显示“09”
MOVPAGE1,#0H
MOVCOLUMN,#2dH
MOVCODE1,#10H
LCALLCCW_PR;;显示“28”
MOVPAGE1,#0H
MOVCOLUMN,#3dH
MOVCODE1,#11H
LCALLCCW_PR;;显示“22”
MOVPAGE1,#0H
MOVCOLUMN,#76
MOVCODE1,#12H
LCALLCCW_PR;;显示“06"
MOVPAGE1,#0H
MOVCOLUMN,#91
MOVCODE1,#13H
LCALLCCW_PR;;显示“2"
LCALLDAY
LJMPAGAIN
CCW_PR:
MOVDPTR,#CCATB;;确定字符字模块首地址
MOVA,CODE1;;取代码
MOVB,#20H;;字模块宽度为32个字节
MULAB;;代码X32
ADDA,DPL;;字符字模块首地址=字模库首地址+代码X32
MOVDPL,A
MOVA,B
ADDCA,DPH
MOVDPH,A
PUSHCOLUMN;;列地址入栈
PUSHCOLUMN;;列地址入栈
MOVCODE1,#00H;;代码寄存器借用为间址寄存器
CCW_1:
MOVCOUNT,#10H;;计数器设定为16
MOVA,PAGE1;;读页地址寄存器
ANLA,#03H
ORLA,#0B8H;;“或”页地址设置代码
MOVCOM,A;;写页地址设置指令
LCALLPR0
LCALLPR3
POPCOLUMN;;取列地址值
MOVA,COLUMN;;读列地址寄存器
CLRC
SUBBA,#PD1;;列地址-模块参数
JCCCW_2;;<0为左半屏显示区域(E1)
MOVCOLUMN,A;;≥0为右半屏显示区域(E2)
MOVA,PAGE1
SETBACC.3;;设置区域标志位
MOVPAGE1,A;;“0”为E1,“1”为E2
CCW_2:
MOVCOM,COLUMN;;设置列地址值
MOVA,PAGE1;;判区域标志以确定设置哪个控制器
JNBACC.3,CCW_3
LCALLPR3;;区域E2
LJMPCCW_4
CCW_3:
LCALLPR0;;区域E1
CCW_4:
MOVA,CODE1;;取间址寄存器值
MOVCA,@A+DPTR;;取汉字字模数据
MOVDAT,A;;写数据
MOVA,PAGE1
JNBACC.3,CCW_5
LCALLPR4;;区域E2
LJMPCCW_6
CCW_5:
LCALLPR1;;区域E1
CCW_6:
INCCODE1;;间址寄存器加1
INCCOLUMN;;列地址寄存器加1
MOVA,COLUMN;;判列地址是否超出区域范围
CJNEA,#PD1,CCW_7
CCW_7:
JCCCW_8;;未超出则继续
MOVA,PAGE1;;超出则判是否在区域E2
JBACC.3,CCW_8;;在区域E2则退出
SETBACC.3;;在区域E1则修改成区域E2
MOVPAGE1,A
MOVCOM,#00H;;设置区域E2列地址为“0”
LCALLPR3
CCW_8:
DJNZCOUNT,CCW_4;;当页循环
MOVA,PAGE1;;读页地址寄存器
JBACC.7,CCW_9;;判完成标志D7位,“1”则完成退出
INCA;;否则页地址加“1”
SETBACC.7
CLRACC.3
MOVPAGE1,A
MOVCODE1,#10H;;间接寄存器设置为16
LJMPCCW_1;;大循环
CCW_9:
RET
ccAtB:
DB42H,42H,0FEH,42H,42H,0E0H,00H,0FFH;“班”
DB00H,42H,42H,0FEH,42H,42H,42H,00H
DB10H,10H,0FH,88H,49H,20H,18H,07H
DB20H,20H,20H,3FH,20H,20H,20H,00H
DB20H,30H,0ACH,63H,20H,18H,02H,82H;“级”
DB7EH,82H,42H,72H,4EH,0C0H,40H,00H
DB10H,13H,11H,49H,29H,91H,8CH,43H
DB40H,23H,14H,18H,66H,0C1H,40H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H;“:
”
DB00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,36H,36H,00H,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H
DB00H,0FCH,04H,04H,04H,04H,0FCH,00H;“09”
DB00H,0FCH,84H,84H,84H,84H,0FCH,00H
DB00H,3FH,20H,20H,20H,20H,3FH,00H
DB00H,20H,20H,20H,20H,20H,3FH,00H
DB00H,0FCH,04H,04H,04H,04H,0FCH,00H;"02"
DB00H,04H,04H,04H,04H,04H,0FCH,00H
DB00H,3FH,20H,20H,20H,20H,3FH,00H
DB00H,3FH,21H,21H,21H,21H,21H,00H
DB42H,42H,0FEH,42H,42H,0E0H,00H,0FFH;“班”
DB00H,42H,42H,0FEH,42H,42H,42H,00H
DB10H,10H,0FH,88H,49H,20H,18H,07H
DB20H,20H,20H,3FH,20H,20H,20H,00H
DB10H,90H,7FH,12H,10H,0F0H,40H,3CH;"姓"
DB10H,10H,0FFH,10H,10H,10H,10H,00H
DB40H,21H,1AH,04H,0BH,30H,40H,42H
DB42H,42H,7FH,42H,42H,42H,40H,00H
DB00H,40H,20H,10H,08H,27H,44H,84H;"名"
DB44H,24H,14H,0CH,04H,00H,00H,00H
DB04H,04H,04H,02H,7EH,23H,23H,22H
DB22H,22H,22H,22H,7EH,00H,00H,00H
DB00H,00H,00H,00H,00H,00H,00H,00H;“:
”
DB00H,00H,00H,00H,00H,00H,00H,00H
DB00H,00H,36H,36H,00H,00H,00H,00H
DB01H,00H,00H,00H,00H,00H,00H,00H
DB00H,10H,92H,92H,92H,92H,0FEH,92H;"尹"
DB92H,92H,92H,92H,0FEH,10H,10H,00H
DB00H,80H,40H,20H,10H,0CH,03H,00H
DB00H,00H,00H,00H,01H,00H,00H,00H
DB20H,30H,2CH,0A3H,60H,18H,00H,08H;"红"
DB08H,08H,0F8H,08H,08H,0CH,08H,00H
DB22H,66H,23H,12H,12H,52H,40H,40H
DB40H,40H,7FH,40H,40H,60H,40H,00H
DB40H,48H,48H,48H,0FFH,48H,48H,82H;"超"
DB0C2H,0BEH,82H,0A2H,0C2H,0BEH,00H,00H
DB60H,1FH,20H,40H,7FH,42H,42H,40H
DB5FH,48H,48H,48H,48H,5FH,40H,00H
DB40H,30H,10H,12H,5CH,54H,50H,51H;"学"
DB5EH,0D4H,50H,18H,57H,32H,10H,00H
DB00H,02H,02H,02H,02H,02H,42H,82H
DB7FH,02H,02H,02H,02H,02H,02H,00H
DB40H,40H,40H,5FH,0D1H,51H,51H,51H;"号"
DB51H,51H,51H,5FH,40H,40H,40H,00H
DB00H,00H,00H,02H,07H,02H,02H,22H
DB42H,82H,42H,3EH,00H,00H,00H,00H
DB00H,04H,04H,04H,04H,04H,0FCH,00H;"20"
DB00H,0FCH,04H,04H,04H,04H,0FCH,00H
DB00H,