电信专业视频课程设计.docx
《电信专业视频课程设计.docx》由会员分享,可在线阅读,更多相关《电信专业视频课程设计.docx(30页珍藏版)》请在冰豆网上搜索。
电信专业视频课程设计
《电信专业电子系统课程设计B》
课程设计报告
题目:
视频信号发生器的设计与实现
院(系):
信息科学与工程学院
专业班级:
电子信息工程1102
学生姓名:
学号:
指导教师:
2014年5月19日至2014年5月23日
华中科技大学武昌分校制
电信专业电子系统课程设计B课程设计任务书
一、设计题目
视频信号发生器的设计
二、设计主要内容
运用89C2051单片机和AD722芯片,通过单片机编程完成视频信号发生器的设计,能通过电视接收机正确,稳定显示按事先确定的图形(要求每个同学各自设计不同的图形)。
三、原始资料
[1]王思贤,高峰.电子系统课程设计B指导书(讲义).华中科技大学武昌分校,2010.
[2]谈新权,邓天平.视频技术基础.武汉:
华中科技大学出版社,2007.
[3]姜志海,黄玉清等.单片机原理及应用,电子工业出版社,2009
四、要求的设计成果(根据每个同学所选择的图形画出)
五、进程安排
整个课程设计安排一周完成。
1、讲解课题内容。
2、图像自行选择设计的图形。
发放课题元件。
3、根据所选图形设计方案。
4、编写调试软件。
5、课题验收,完成课程设计报告。
六、主要参考资料
[1]王思贤,高峰.电子系统课程设计B指导书(讲义).华中科技大学武昌分校,2010.
[2]谈新权,邓天平.视频技术基础.武汉:
华中科技大学出版社,2007.
[3]姜志海,黄玉清等.单片机原理及应用,电子工业出版社,2009
指导教师(签名):
20年月日
1AT89C2051简介………………………………………………………5
2电视彩条信号发生器的设计…………………………………………5
3设计方法…………………………………………………………………7
3.1AT89C2051工作过程……………………………………………………7
3.2软件编程思想及流程图…………………………………………………9
3.3程序清单…………………………………………………………………10
4心得体会…………………………………………………………………23
5参考文献………………………………………………………………23
1.AT89C2051简介
AT89C2051是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,片内含2kbytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元。
2.电视彩条信号发生器设计原理
本课程设计所涉及到的彩条信号发生器,是利用单片机产生序列行、场同步信号和R、G、B三基色信号,然后输入给视频编码芯片AD722产生白、黄、青、绿、紫、红、蓝、黑8种颜色的彩色条状图像信号。
图1.1彩条信号发生器系统框图
系统电路原理图:
设计内容
如图根据我的设计图形,整幅画面可分为7个部分,每部分41行,共7x41=287行。
而且每一行要有80个机器周期,其中13个周期固定不变,其余67个周期按需要分配颜色周期。
各块的颜色分配如下图所示。
第1部分:
63蓝+4黑
第2部分:
8蓝+48红+7蓝+4黑
第3部分:
48蓝+8红+7蓝+4黑
第4部分:
8蓝+48红+7蓝+4黑
第5部分:
48蓝+8红+7蓝+4黑
第6部分:
8蓝+48红+7蓝+4黑
第7部分:
63蓝+4黑
3.设计方法
3.1AT89C2051工作过程
AT89C2051输出P1
数据
机器周期数
备注
第623行的行同步
00001000
00000000
6
34
第623.5行开始
5个均衡脉冲
00000100
00000000
3
37
共重复5次
第1行开始
5个开槽脉冲
00000100
00000000
34
6
(第一场开始)
共重复5次
第2.5行开始
5个均衡脉冲
00000100
00000000
3
37
共重复5次
第6行开始
18个行同步
00001000
00000000
6
74
共重复18次
第24行开始
287个彩条行
00001000
00000000
00400000
00000000
6
7
63
4
第一部分共重复41次
00001000
00000000
00400000
00100000
00400000
00000000
6
7
8
48
7
4
第二部分共重复41次
00001000
00000000
00400000
00100000
00400000
00000000
6
7
48
8
7
4
第三部分共重复41次
00001000
00000000
00400000
00100000
00400000
00000000
6
7
8
48
7
4
第四部分共重复41次
00001000
00000000
00400000
00100000
00400000
00000000
6
7
48
8
7
4
第五部分共重复41次
00001000
00000000
00400000
00100000
00400000
00000000
6
7
8
48
7
4
第六部分重复41次
00001000
00000000
00400000
00000000
6
7
63
4
第七部分重复41次
第311行开始
5个均衡脉冲
00000100
00000000
3
37
共重复5次
第312.5行开始
5个开槽脉冲
00000100
00000000
34
6
(第二场开始)
共重复5次
第316行开始
5个均衡脉冲
00000100
00000000
3
37
共重复5次
空半行
00000000
40
第319行开始
17个行同步
00001000
00000000
6
74
共重复17次
第336行开始
287个彩条行
同第一场
同第一场
共287行,
然后接第一场第623行的行同步
3.2软件设计思想和流程图
电视机采用隔行扫描的方式,即一帧图像分成两场。
因为彩条图像每一部分的每一行、每一场图像是一样的,程序设计时,应当采用循环的方式,使程序结构化,小型化。
并且,严格按照信号脉冲的宽度,根据指令周期的不同,选用合适的指令。
程序流程图
下一场
Y
NY
N
N
Y
N
Y
N
Y
彩条开始
图3.1系统程序流程图(未考虑隔行扫描)
3.3总程序清单
ORG0000H
START:
MOVA,#00H
MOVP1,A;初始化清0
MOVIE,#0;禁止中断
MOVSP,#70H;栈区地址
CLRPSW.3;选寄存器组为0组
CLRPSW.4
LOOP:
SETBP1.3;第623行的行同步
D623H:
NOP;开始6个机器周期
NOP
NOP
NOP
MOVR1,#9
CLRP1.3
D34:
NOP;开始34个机器周期
DJNZR1,D34;27
NOP
MOVR2,#5;第623.5行开始5个均衡脉冲
LOOP101:
NOP
NOP
NOP
NOP
SETBP1.2
MOVR1,#10;开始3个机器周期
NOP
CLRP1.2
D37:
NOP;开始37个机器周期
DJNZR1,D37;30
DJNZR2,LOOP101
MOVR2,#5;笫一行开始5个开槽脉冲
LOOP111:
NOP
NOP
NOP
SETBP1.2
MOVR1,#8;开始34个机器周期
D341:
NOP
NOP
DJNZR1,D341;32
CLRP1.2
DJNZR2,LOOP111;开始6个机器周期
MOVR2,#5;笫2.5行开始5个均衡脉冲
LOOP121:
NOP
NOP
SETBP1.2
MOVR1,#8;开始3个机器周期
NOP
CLRP1.2
D371:
NOP;开始37个机器周期
MOVR0,#18;笫6行开始的18个行同步
DJNZR1,D371;32
DJNZR2,LOOP121
LOOP181:
MOVR1,#2
NOP
SETBP1.3
D6H:
DJNZR1,D6H;开始6个机器周期
MOVR1,#17
CLRP1.3
D74:
NOP;开始74个机器周期
NOP
DJNZR1,D74;68
NOP
DJNZR0,LOOP181
MOVR0,#41
;第24行开始的287个彩条行(255+32)
NOP
LOOP1:
SETBP1.3
NOP;开始6个机器周期
NOP
NOP
MOVR1,#2
NOP
CLRP1.3
C1023H:
DJNZR1,C1023H;开始7个机器周期
;////////////////////////////////////////////////////第1部分
MOVR1,#14
MOVA,#40H
MOVP1,A
C1032H:
DJNZR1,C1032H;开始32个机器周期(蓝)
NOP
NOP
MOVA,#40H
MOVP1,A
MOVR1,#2;开始8个机器周期(蓝)
NOP
AD1024H:
DJNZR1,AD1024H
MOVA,#40H
MOVP1,A
MOVR1,#10;开始23个机器周期(蓝)
AD1025H:
DJNZR1,AD1025H
MOVA,#00H
MOVP1,A
MOVR2,#41;开始4个机器周期"0"
DJNZR0,LOOP1
LOOP2:
SETBP1.3
MOVR1,#2;开始6个机器周期
AD1026H:
DJNZR1,AD1026H
CLRP1.3
MOVR1,#2;开始7个机器周期
AD1027H:
DJNZR1,AD1027H
;////////////////////////////////////////////////////第2部分
MOVA,#40H
MOVP1,A
MOVR1,#2;开始8个机器周期(蓝)
AD1028H:
DJNZR1,AD1028H
NOP
MOVA,#10H
MOVP1,A
MOVR1,#6;开始16个机器周期(红)
AD1029H:
DJNZR1,AD1029H
NOP
MOVA,#10H
MOVP1,A
MOVR1,#6;开始16个机器周期(红)
AD10291H:
DJNZR1,AD10291H
NOP
MOVA,#10H
MOVP1,A
MOVR1,#6;开始16个机器周期(红)
AD10292H:
DJNZR1,AD10292H
NOP
MOVA,#40H
MOVP1,A
MOVR1,#2;开始7个机器周期(蓝)
AD1030H:
DJNZR1,AD1030H
MOVA,#00H
MOVP1,A
MOVR0,#41;开始4个机器周期"0"
DJNZR2,LOOP2
LOOP3:
SETBP1.3
NOP;开始6个机器周期
NOP
NOP
MOVR1,#2
NOP
CLRP1.3
D1031H:
DJNZR1,D1031H;开始7个机器周期
;/////////////////////////////////////////////////////第3部分
MOVR1,#22
MOVA,#40H
MOVP1,A
D1032H:
DJNZR1,D1032H;开始48个机器周期(蓝)
NOP
NOP
MOVA,#10H
MOVP1,A
MOVR1,#2;开始8个机器周期(红)
NOP
D1034H:
DJNZR1,D1034H
MOVA,#40H
MOVP1,A
MOVR1,#2;开始7个机器周期(红)
AD1035H:
DJNZR1,AD1035H
MOVA,#00H
MOVP1,A
MOVR2,#41;开始4个机器周期"0"
DJNZR0,LOOP3
LOOP4:
SETBP1.3
MOVR1,#2;开始6个机器周期
D1036H:
DJNZR1,D1036H
CLRP1.3
MOVR1,#2;开始7个机器周期
D1037H:
DJNZR1,D1037H
;////////////////////////////////////////////////////第4部分
MOVA,#40H
MOVP1,A
MOVR1,#2;开始8个机器周期(蓝)
D1038H:
DJNZR1,D1038H
NOP
MOVA,#10H
MOVP1,A
MOVR1,#22;开始48个机器周期(红)
NOP
D1039H:
DJNZR1,D1039H
MOVA,#40H
MOVP1,A
MOVR1,#2;开始7个机器周期(蓝)
D1040H:
DJNZR1,D1040H
MOVA,#00H
MOVP1,A
MOVR0,#41;开始4个机器周期"0"
DJNZR2,LOOP4
LOOP5:
SETBP1.3
NOP;开始6个机器周期
NOP
NOP
MOVR1,#2
NOP
CLRP1.3
D1042H:
DJNZR1,D1042H;开始7个机器周期
;////////////////////////////////////////////////////第5部分
MOVR1,#22
MOVA,#40H
MOVP1,A
DS170H:
DJNZR1,DS170H;开始48个机器周期(蓝)
MOVR1,#2
NOP
MOVA,#10H
MOVP1,A
DS130H:
DJNZR1,DS130H;开始8个机器周期(红)
MOVR1,#2
NOP
MOVA,#40H
MOVP1,A
DS160H:
DJNZR1,DS160H;开始7个机器周期(蓝)
MOVR1,#2
MOVA,#00H
MOVP1,A
MOVR2,#41;开始4个机器周期"0"
DJNZR0,LOOP5
LOOP6:
SETBP1.3
MOVR1,#2;开始6个机器周期
ASD6H:
DJNZR1,ASD6H
CLRP1.3
MOVR1,#2;开始7个机器周期
ASD7H:
DJNZR1,ASD7H
;////////////////////////////////////////////////////第6部分
MOVA,#40H
MOVP1,A
MOVR1,#2;开始8个机器周期(蓝)
D150H:
DJNZR1,D150H
NOP
MOVA,#10H
MOVP1,A
MOVR1,#22;开始48个机器周期(红)
NOP
D151H:
DJNZR1,D151H
MOVA,#40H
MOVP1,A
MOVR1,#2;开始7个机器周期(蓝)
D152H:
DJNZR1,D152H
MOVA,#0
MOVP1,A
MOVR0,#41;开始4个机器周期"0"
DJNZR2,LOOP6
LOOP7:
SETBP1.3
MOVR1,#2;开始6个机器周期
D153H:
DJNZR1,D153H
CLRP1.3
MOVR1,#2;开始7个机器周期
D154H:
DJNZR1,D154H
;////////////////////////////////////////////////////第7部分
MOVA,#40H
MOVP1,A
MOVR1,#14;开始32个机器周期(蓝)
D155H:
DJNZR1,D155H
NOP
MOVA,#40H
MOVP1,A
MOVR1,#2;开始8个机器周期(蓝)
NOP
D156H:
DJNZR1,D156H
MOVA,#40H
MOVP1,A
MOVR1,#10;开始23个机器周期(蓝)
D157H:
DJNZR1,D157H
MOVA,#00H
MOVP1,A
MOVR2,#5;开始4个机器周期"0"
DJNZR0,LOOP7
;//////////////////第二场///////////////////
LOOP131:
SETBP1.2
MOVR1,#11;开始3个机器周期
NOP
CLRP1.2
D372:
NOP;开始37个机器周期
DJNZR1,D372;33
MOVR3,#5;笫312.5行开始5个开槽脉冲
DJNZR2,LOOP131
LOOP141:
SETBP1.2
MOVR1,#8;开始34个机器周期
D342:
NOP
NOP
DJNZR1,D342;32
CLRP1.2
NOP;开始6个机器周期
MOVR2,#5;笫316行开始5个均衡脉冲
NOP
DJNZR3,LOOP141
LOOP151:
SETBP1.2
MOVR1,#11;开始3个机器周期
NOP
CLRP1.2
D373:
NOP;开始37个机器周期
DJNZR1,D373;33
NOP
DJNZR2,LOOP151
NOP
MOVR1,#11;空半行(40个机器周期)
K40:
NOP
DJNZR1,K40;33
MOVR3,#17;笫319行开始17个行同步
LOOP171:
NOP
NOP
NOP
NOP
SETBP1.3
MOVR1,#2;开始6个机器周期
TD6H:
DJNZR1,TD6H
CLRP1.3
MOVR1,#22;开始74个机器周期
TD74:
NOP
DJNZR1,TD74;66
DJNZR3,LOOP171
MOVR0,#41
NOP
NOP
NOP
LOOP8:
SETBP1.3
NOP;开始6个机器周期
NOP
NOP
MOVR1,#2
NOP
CLRP1.3
C1023:
DJNZR1,C1023;开始7个机器周期
;////////////////////////////////////////////////////第2-1部分
MOVR1,#14
MOVA,#40H
MOVP1,A
CC1032H:
DJNZR1,CC1032H;开始32个机器周期(蓝)
NOP
NOP
MOVA,#40H
MOVP1,A
MOVR1,#2;开始8个机器周期(蓝)
NOP
AAD1024H:
DJNZR1,AAD1024H
MOVA,#40H
MOVP1,A
MOVR1,#10;开始23个机器周期(蓝)
AAD1025H:
DJNZR1,AAD1025H
MOVA,#00H
MOVP1,A
MOVR2,#41;开始4个机器周期"0"
DJNZR0,LOOP8
LOOP9:
SETBP1.3
MOVR1,#2;开始6个机器周期
AAD1026H:
DJNZR1,AAD1026H
CLRP1.3
MOVR1,#2;开始7个机器周期
AAD1027H:
DJNZR1,AAD1027H
;////////////////////////////////////////////////////第2-2部分
MOVA,#40H
MOVP1,A
MOVR1,#2;开始8个机器周期(蓝)
AAD1028H:
DJNZR1,AAD1028H
NOP
MOVA,#10H
MOVP1,A
MOVR1,#6;开始16个机器周期(红)
AAD1029H:
DJNZR1,AAD1029H
NOP
MOVA,#10H
MOVP1,A
MOVR1,#6;开始16个机器周期(红)
AAD10291H:
DJNZR1,AAD10291H
NOP
MOVA,#10H
MOVP1,A
MOVR1,#6;开始16个机器周期(红)
AAD10292H:
DJNZR1,AAD10292H
NOP
MOVA,#40H
MOVP1,A
MOVR1,#2;开始7个机器周期(蓝)
AAD1030H:
DJNZR1,AAD1030H
MOVA,#00H
MOVP1,A
MOVR0,#41;开始4个机器周期"0"
DJNZR2,LOOP9
LOOP10:
SETBP1.3
NOP;开始6个机器周期
NOP
NOP
MOVR1,#2
NOP
CLRP1.3
DA1031H:
DJNZR1,DA1031H;开始7个机器周期
;////////////////////////////////////////////////////第2-3部分
MOVR1,#22
MOVA,#40H
MOVP1,A
DA1032H:
DJNZR1,DA1032H;开始48个机器周期(蓝)
NOP
NOP
MOVA,#10H
MOVP1,A
MOVR1,#2;开始8