打印

用c8051f330做的VGA显示器红,绿,蓝,信号源软件源代码

[复制链接]
6098|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
大秦正声|  楼主 | 2010-7-4 19:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include"c8051f330.h"
#include "INTRINS.H"
sbit hclk=P0^3;
sbit vclk=P0^2;

void DAC_Init(void)
{
P0SKIP|=0X01;

IDA0CN =0xf1;  
}

main()
{
int i;
PCA0MD =0;//关闭看门狗

XBR1 = 0x40; //交叉开关使能
P0MDOUT  =0xff;  //p0口输出上拉
DAC_Init();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
hclk=1;
vclk=1;
while(1)
{

hclk=1;
i=i+1;
if(i<3)

vclk=1;

else if(i<600) //600
vclk=0;
else
{i=0;
vclk=1;}

IDA0L=0x80;
IDA0H=0x5;

hclk=0;

IDA0L=0x60;
IDA0H=0x12;

_nop_();
_nop_();
_nop_();
_nop_();
_nop_();

_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();

_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();

_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();

_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();

_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();

_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();

_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();

_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();

_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();



}
}



利用了c8051f单片机速度快的优势,
和c8051f330单片机的电流型数模转换器.
速度只用了3MHz,最大可以是25MHz!
还有很多上升空间!!!
大多数时间里单片机只运行空操作!
比8位pic ,avr快了很多!!!
原理图不用帖了,结合说明和软件能够得到!

适合800*600,1024*768 CRT/LCD 显示器(60/75Hz).
实际证明完全可以用c51编程来给显示器输送红,绿,蓝视频信号!
不需要用汇编来编程,速度完全可以跟得上!(其它型号的单片机一般需要用
汇编)

相关帖子

沙发
xwj| | 2010-7-4 19:53 | 只看该作者
这个...
任何单片机都可以的啦~
而且八百年前别人就做出来了。

PS:
算延时死等的方法可不是什么好办法。

使用特权

评论回复
板凳
wangkj| | 2010-7-4 19:57 | 只看该作者
换cortex-m0吧,我的板子很快出来。如果谁能搞定,俺免费送板子一块。

使用特权

评论回复
地板
wangkj| | 2010-7-4 19:57 | 只看该作者
条件是开源,俺的板子也是开源的。随便炒。

使用特权

评论回复
5
xwj| | 2010-7-4 19:58 | 只看该作者
而且,真正的VGA分辨率显示的话,就算最低的640*480*60Hz的点频率都有25.2MHz,你这个CPU都不可能有时间来取数据、再输出显示了。
最后还是只能用100MHz的。

使用特权

评论回复
6
cx4359481| | 2010-7-4 21:40 | 只看该作者
c8051f单片机c8051f单片机?????????

使用特权

评论回复
7
古道热肠| | 2010-7-5 00:01 | 只看该作者
就看到一堆的Nop在让MCU空打转。

使用特权

评论回复
8
大秦正声|  楼主 | 2010-7-5 16:13 | 只看该作者
这个...
任何单片机都可以的啦~
而且八百年前别人就做出来了。
//////
口气不小!

我的可以全屏显示红或绿或蓝!
单通道,
无需读取数据,
3MHz够用了.

使用特权

评论回复
9
大秦正声|  楼主 | 2010-7-5 16:21 | 只看该作者
就看到一堆的Nop在让MCU空打转。

//////

在行,场扫描(数字脉冲)周期内输出0.3伏(消阴)  ,1伏的电压(对应的通道显示红,绿,蓝)

_nop_();用来实现一个完整的扫描周期

使用特权

评论回复
10
wangkj| | 2010-7-5 16:47 | 只看该作者
等俺的coretex-m0出来,弄个arm直接控制vga的。
正在调试板子中。不能烧程序,郁闷。

使用特权

评论回复
11
xwj| | 2010-7-5 17:51 | 只看该作者
本帖最后由 xwj 于 2010-7-5 17:52 编辑

“口气不小!”
——全屏就显示固定的1个像素,分辨率1*1,哪个单片机做不到?有什么“口气不小!”的???


不参照老x的思路,只要你能用c8051f330做到老x的《老x用51 DIY的VGA第三版:俄罗斯方块》https://bbs.21ic.com/icview-172387-1-1.html的效果,我就算你入门了,怎么样?

使用特权

评论回复
12
xuyiyi| | 2010-7-5 22:07 | 只看该作者
打酱油路过~

使用特权

评论回复
13
huangqi412| | 2010-7-6 08:44 | 只看该作者
这也可以拿来SHOW...
起码也显示各图片再说。。。
这个有虾米意义。。。

使用特权

评论回复
14
wangkj| | 2010-7-6 10:21 | 只看该作者
严重同意老X

使用特权

评论回复
15
soulmate| | 2010-7-6 11:24 | 只看该作者
淡定:)

使用特权

评论回复
16
大秦正声|  楼主 | 2010-7-7 17:32 | 只看该作者
我的可以同时驱动多台显示器!!! 成本很低.

你所采用的cmos输出驱动能力很有限!;P

虽然采用的48兆晶振,实际可以达到的速度相当于单周期的8兆.很慢的.

使用特权

评论回复
17
xwj| | 2010-7-8 18:22 | 只看该作者
就是因为只有“8兆.很慢的”,所以我才说你要能用25M做出差不多的效果我就算你入门了。

游戏机本来就没必要带多台显示器,要驱动多台太简单了,加几个三极管射极跟随器即可,要不了几毛钱。

使用特权

评论回复
18
大秦正声|  楼主 | 2010-7-8 19:33 | 只看该作者
本帖最后由 大秦正声 于 2010-7-8 19:52 编辑

还有很重要的一点:
显示器所需要的红,绿,蓝信号最好是可调的模拟信号0到1伏.在可视的情况下,
不同的电压对应不同的色彩即所说的"真色彩"!
好的计算机显卡就是这样的.
由于采用了c8051f单片机内部带的电流型的数模转换,我的可以实现这个范围!
你的采用的是电阻分压输出,所以输出的图象效果是一般的!:)
这个可以从你的照片可以看出来的.

当然你的水平还是不错的!:victory:

使用特权

评论回复
19
chunxx| | 2010-7-10 14:37 | 只看该作者
"显示器所需要的红,绿,蓝信号最好是可调的模拟信号0到1伏"

不是最好0到1V,是必须0~0.7V范围。到底谁没有入门啊?
这个说白了就是做c8051f的广告,可惜这个单片机一直是教授用的,性价比太差。电流型DAC之类没什么吸引力的,速度高更是一个笑话。

使用特权

评论回复
20
大秦正声|  楼主 | 2010-7-10 18:27 | 只看该作者
不是最好0到1V,是必须0~0.7V范围。到底谁没有入门啊?
/////////////

说话很 "霸道"!:curse:

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

373

主题

4442

帖子

25

粉丝