早期制作的电视信号发生器基本上是由分频器和门电路构成,所用元器件较多、电路复杂,自制起来相当麻烦,要想增加显示图像的种类或改变信号的时序就更困难了。高速单片机的出现给信号发生器的设计制作带来了极大的方便,不但能根据需要灵活地设计软件,而且芯片的外围电路也简单得多,体积可以做得非常小巧。本信号发生器使用AVR系列的AT90S2313-10芯片,价格低廉,大部分指令的执行时间仅为0.1μs,可以产生棋盘格、横条、竖条、方格四种图像和一路音频信号。
硬件电路如附图所示,输出信号使用了PB口的PB0、PB4、PB7三个端子,图像输出端置1时为白色电平,清0时为黑色电平。各端口的输出电平是相等的,为了满足同步电平低于消隐电平的要求,在视频输出与复合同步之间串接了一个开关二极管,使同步电平总是低于消隐电平0.6V,同时二极管又具有较小的动态电阻,比串联电阻具有更好的频率响应,经对比度电位器适当衰减后基本接近标准的电视信号。图像类型的转换是由复位键完成的,接通电源时每按动一次复位键转换一种图像,四种图像循环显示。
因为图像是相对静止的几何图形,为了简化软件,程序没有采用奇偶隔行扫描,每帧图像由312行组成,源程序见本刊网站,程序中用Z寄存器作为行扫描计数器。从第1行至26 行为场消隐,其中第2、3行为场同步,剩余的286行分为13段,每段22行。场消隐结束时设定场图像初始值,然后场图像值逐段取反,直至扫描正程结束,产生13条宽度相同黑白相间的横条图像,周而复始。本程序设计的垂直、水平图像的条数均为奇数,这样扫描正程开始和结束前的图像相同,设置为白色,调整幅度时便于与消隐电平区分。
主程序的顺序就是行扫描周期的时序,场图像是由若干行组成的。行场扫描的图像初始值以及场消隐、场同步的起止时间判断与执行都是在行同步和行消隐其间完成的。为了产生精确的行时序信号,满足电视制式的要求,程序结构以时间为编程标准,不可能完全按照结构化程序设计,理解起来稍难一些。除非完全熟悉程序结构,否则改动任何一条指令都可能会改变行扫描周期。本程序设定的行消隐宽度为12μs,行同步宽度为4.7μs,行周期为64μs。在行消隐结束时设置行图像初始值,每隔3μs行图像的值取反,产生17条宽度相同黑白相间的竖条图像。
棋盘格是行、场图像异或运算产生的。为了使图像转换简单,在异或运算中令场图像的值始终为0输出行图像(竖格)。同样当行图像的值始终为0时,则输出值为场图像(横格)。方格是由行、场图像执行或运算产生的。每按动一次复位键图像类型寄存器加1,再屏蔽其高6位,这样寄存器的值只能在0至3范围内变化,主程序则根据图像类型寄存器的值判断执行相应的子程序改变图像类型。图像长宽之比为17/13,基本与屏幕一致。 电子元件邮购网
音频信号是行频16分频得到的,用寄存器作为音频计数器,音频计数器逐行加1,屏蔽高4位,当寄存器值为0或8时分别向音频输出端写0或1,所以音频频率为976Hz。
在本网站提供的源程序是在AVR Studio 3.56环境下编写、编译、调试,并附有源程序和编译后的hex文件,供不同要求的读者参考。