最新日志

发表于:2008-7-8 12:12:16
标签:无标签

0

新做的51蓝板,很漂亮.

看图片,嘿嘿!

点击看大图

点击看大图

点击看大图

点击看大图

点击看大图

点击此处查看原文 >>

系统分类: 单片机   |    用户分类: 无分类    |    来源: 原创

评论(1) | 阅读(119)
发表于:2008-7-3 11:48:23
标签:9s12  mc9s12dg128  lcd1602  1602  LCD  液晶显示  

0

MC9S12DG128单片机使用LCD1206的程序

一开始使用USB供电,发现VCC只能到4V,因为还有使用些其他外设,还有些必须供电的(比如244)等,USB驱动能力不足。
后加上适配器供电,把以前51上用的LCD1602的程序拷过来,修改好,I/O定义都不一样,9S12还有特有的方向寄存器。如此下来,可以在LCD1602上显示英文了。不带字库,所以无法显示中文。
硬件是这样的,振荡器4M,未使用PLL,芯片是QFP112的MC9S12DG128MPVE,RS是PK5,RW是PK4,e是PJ1,data是PORTB,busy是PORTB BIT7。

程序可以正常运行没问题,如果有下载后不能运行或者结果不对的情况,请检查一下振荡器频率或者引脚定义。程序见附件。
点击下载

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(0) | 阅读(40)
发表于:2008-6-23 10:53:26
标签:位图  bitmap  格式  

1

256色、65536色位图格式分析(续)

  学单片机(嵌入式应用)的搞清楚图象处理的一些基本概念,是非常必要的,我们看看现在的示波器,很多支持USB口,就算是低档的,也可以把图象以图片的格式直接保存到大量数据存储器(U盘)中。而BMP文件就是最简单明了的图片文件了,JPG要复杂些,不过总体思路都差不多的。
1、256色位图需要注意的一些问题。
  按照位图格式,256色以下(含)的位图都有调色板,也就是说除了54个字节的文件头和信息头,还有一定大小的调色板数据在里面。以256色位图为例,我们可以计算一下它的调色板有多少字节。上篇文章讲过,一个颜色的调色板数据占用4个字节,而256中颜色,一共是1024字节,所以调色板数据一共占有1024字节,加上54字节的信息,则除了真正的图象数据外,还附加有1078字节的非图象数据。这样,我们可以计算出一张200*150的图片文件大小。因为图象数据每个像素点是用一个字节表示的,所以数据占有30000字节,加上1078字节,一共是31078字节。这个是显然的。当然,这幅位图无论是一张白纸或者是复杂的图象,图片大小是不会有变化的,因为30000字节的数据是逐个像素表示的,无论像素是什么颜色,都不可以省略。
  那么我们在计算一个343*260 256色的位图文件大小,343*260=89180,再加上1078等于90258,但是通过属性查看,文件大小为90518字节,和计算有较大的差距,这说明计算方法有问题。
  其实,200*150的图象只是一个特例。位图规定,如果图象数据一行的数据,不是4的整数倍,则必须用数据补齐。200自然是4的整数倍,不需要补齐,而343不是,所以343必须补充到344才可以。所以实际位图的大小是344*260+1078,这就和大小吻合了。这个图片每行补1个字节,而最多是要补3个字节。所以341*260图片和343*260图片,在大小上没什么区别。
2、65536色位图格式
  这里再简单介绍一下6万高彩色的位图格式。16位位图是没有调色板的,除了位图数据外,只有54个字节的信息。而图片的RGB颜色,是使用2个字节16个bit表示的,具体方法如下。
       MSB      X         XXXXX         XXXXX       XXXXX     LSB
              不使用       R             G             B
可见最高位不使用,RGB颜色每个使用5位表示。使用程序把其还原出来,即可得到图片的RGB颜色,就可以显示了。
  这个就是最简单的65536色555格式图片的表示方法。至于565格式的,也不复杂,我也不太用,所以我在这里就不多说了,有感兴趣的朋友可以在网上搜索一下。
3、未来内容
  由于图象处理领域的确涉及太广,我只做一些我需要的东西,至于24位真彩图,我就不做了,我会主要设计到图象几何变换,灰度及二值画,三维重构等等方面。有兴趣的朋友可以关注一下。下一篇再具体讲讲怎么样使用OPENGL来重构二维图象。


点击此处查看原文 >>

系统分类: 单片机   |    用户分类: 无分类    |    来源: 原创

评论(0) | 阅读(138)
发表于:2008-6-12 10:20:26
标签:BMP  位图  LCD显示  VC  

1

位图(BMP)文件头格式及数据分析,有了这个可以直接在单片机的LCD上显示BMP文件。

由于BMP文件有诸多格式,这里只以256色彩色位图为例来分析一下。
这个图是我自己用画图板做的,如下。


图1 BMP图
  由于这里限制上传BMP文件,所以这个是JPG的。我的原始的BMP文件大小是200*150,文件大小是31078字节,注意看属性的时候不是占用空间大小。
  在这里,我用VC编了一个程序,读入BMP文件的数据,然后分析固有的站用54个字节的文件头和信息头。
点击看大图
图2 文件头和信息头数据
  注意:图中唯一的一条竖线是文件头14个字节和信息头40个字节的分隔线。
本文章来自EDNCHINA的yoyowind的博客。http://blog.ednchina.com/yoyowind
1、BMP文件的4个部分
  BMP文件分文件头、信息头、调色板和数据区四个部分。文件头和信息头里包含一些信息,调色板顾名思义是调色的信息,数据区就是位图数据。
  这里需要注意的是,为什么会有调色板呢?调色板又该有多少数据呢?我们分析一下这个文件。256色位图是用256种颜色表示整个图片信息,也就是说数据从00~FF一共256个数代表256种颜色,而大家都知道,在计算机上,颜色是用RGB来表示的,RGB分别表示红绿蓝三种颜色的分量,必须用三个字节表示,所以数据中一个字节的信息必须经过“翻译”才能得到真正的RGB颜色,所以数据区里的数据可以理解为当前相素颜色的索引号,拿着这个索引号,去调色板里找,找到的才是对应的RGB信息。
  调色板的格式为:
typedef struct tagRGBQUAD{
  BYTE rgbBlue;
  BYTE rgbGreen;
  BYTE rgbRed;
  BYTE rgbReserved;
}RGBQUAD;
  前三个字节一看就明白了,是表示RGB信息,而最后一个字节为保留字节,不用去管。
  那么,调色板需要多少数据呢?因为256种颜色对应256个颜色索引号,每个索引号必须对应1个调色板信息,所以必须有256个调色板信息,而1个调色板信息又有4个字节,所以,调色板区站用字节一共是256*4=1024字节。也就是说,从文件开头到真正的位图数据,一共间隔14+40+1024=1078字节。
2、文件头分析
  文件头占14个字节,如图2所示。前两个字节“42 4d”表示“BM”两字,意思是这个文件是BMP文件;后面4个字节表示整个文件大小,经过计算00007966的对应十进制为31078,正好是本文件的字节数;再后面4个字节为保留字;最后4个字节为数据偏移量,也就是刚才计算的1078字节。
3、信息头分析
  前4个字节表示记录长度,也就是信息头的长度,固定为40(0x28);后面8个字节代表图片长宽信息,表示图片是200*150的;后面两个字节为1,必须是1;后面两个字节是8,表示为8位颜色,也就是256色;后面4个字节是压缩信息,这里是0000;后面4个字节00007530是200*150得到的结果,也就是总像素数;再后面的我们就不去管了。
4、用LCD和PC显示同一位图
  当然这个位图最好是灰度或者双色位图。当然调色板信息就不一样了,但是大同小异,图片大小不要超过LCD总像素数。具体编程流程是这样的。首先把文件数据发送到单片机内存,单片机编程得到数据偏移量,在数据区一一取到数据并在调色板里查到信息,将信息翻译成LCD可认格式,利用LCD的API函数逐一写像素,就可以得到图片。这个图片的显示,应该和PC上用ACDSEE等软件打开的图片一模一样。
5、图片的后处理
  当然,图片也可以进行模糊、锐化、轮廓提取、边沿检测等操作,这样就可以在单片机内编程完成而不需要VC了。我将在以后设计到这部分内容,需要的朋友请耐心等待。

点击此处查看原文 >>

系统分类: 单片机   |    用户分类: 无分类    |    来源: 原创

评论(0) | 阅读(167)
发表于:2008-6-5 10:56:15
标签:STC  51  CAN总线  

0

EDN举办CAN总线大赛,其实我的51板也支持CAN总线。


不同的是,我的板全部直插件,功能要多些。


点击看大图

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(0) | 阅读(127)
发表于:2008-6-5 10:11:47
评论(0) | 阅读(120)
发表于:2008-5-29 14:42:36
标签:无标签

1

我处新编freescale 16位单片机教材最后一次审稿准备出版。

出版社还是比较牛,机械工业出版社。
书里主要讲9S12的,还有uC/OS-II,总体说是不错的。
我光审稿都n次了,这次是最后一次。
累死了!
抓紧看,最近更新不了blog了。

点击此处查看原文 >>

系统分类: 嵌入式   |    用户分类:    |    来源: 原创

评论(4) | 阅读(179)
发表于:2008-5-21 16:57:46
标签:VC  OPENGL  

0

第一个OPENGL的VC程序。附代码。

需要使用OPENGL做3D了。
很多教材和网上的资料说的含糊不清,这里手把手教如何建立最简单的一个OPENGL程序。
首先打开VC,建立一个工程,随便起名字,工程种类选择win32 console application,建立一个空工程。
然后在工程中选择file...  new...建立一个C++ source file并保存,名字随便起。
随后,在project--settings...--link卡中,在object/library module中加入   opengl32.lib glu32.lib glaux.lib  ,中间用空格隔开。
然后复制本文最后的代码进去编译并运行就可以看到效果了。
这个是最简单的OPENGL程序,希望读者可以亲手做做。

// GLOS.H
//////////////////////////////////////////////////////////
// This is an OS specific header file
//判别操作系统的基本头文件
 
#include "windows.h"
 
// disable data conversion warnings
 
#pragma warning(disable : 4244)     // MIPS
#pragma warning(disable : 4136)     // X86
#pragma warning(disable : 4051)     // ALPHA
//////////////////////////////////////////////////////////
//opengl.cpp
//主程序
//#include "windows.h"
#include <GL/gl.h>
#include <GL/glaux.h>
//#include "windows.h"
 
void main(void)
{
        /*初始化:*/
    auxInitDisplayMode(AUX_SINGLE|AUX_RGBA);
        //窗口显示单缓存和RGB(彩色)模式
        auxInitPosition(0,0,1000,1000);
        //大小x=1000 y=1000 (0,0)是屏幕左上点
        auxInitWindow("sample1");
        //窗口初始化,参数是标题
        glClearColor(0.0,0.0,0.0,0.0);
    //将窗口清为黑色
        glClear(GL_COLOR_BUFFER_BIT);
    //将颜色缓存清为glClearColor命令所设置的颜色
        //即背景色
 
        /*绘图*/
        glColor3f(1.0,1.0,0.0);
        //选颜色(R,G,B),参数0<x<1,这里就是红色
        glRectf(-0.5,-0.5,0.5,0.5);
        //glRectanglef(-0.5,-0.5,0.5,0.5);
        //画个方块
 
        glFlush();
        //强制绘图,不驻留缓存
        _sleep(1000);
        //windows函数,显示1秒(单位是毫秒)
}

点击此处查看原文 >>

系统分类: 软件开发   |    用户分类:    |    来源: 原创

评论(0) | 阅读(201)
发表于:2008-5-21 11:08:55
标签:VC  C++  学习  入门  

2

[强货来了]VC++入门系列1----Visual C++ 6 轻松进阶

附件11M,太大了这个传不了,这个教材是教VC++这门课的老师推荐的,入门很快,里面的实验都是手把手教,个人认为虽然内容比不上孙鑫的视频教程那么丰富,但是短期上手快是没问题的。
另外,我个人已经把本书内的几乎全部实验都做成了VC++的工程,随后上传,配合我的程序和这本书,相信对于初学VC的朋友来说,绝对是个很好的教材。
随后将分批上传实验代码。
现在上传个书的目录请大家看看是否需要。

pdf

本书获得方法:先按“顶一下”(随意,呵呵),然后留言邮箱地址,我将一一发送。请注意邮箱一定要支持10M以上的大附件,否则收不到可不怪我,你可以使用QQ或者163的信箱。

点击此处查看原文 >>

系统分类: 软件开发   |    用户分类:    |    来源: 原创

评论(3) | 阅读(292)
发表于:2008-5-20 17:18:05
标签:MCF52235  COLDFIRE  

1

最近冷火系列处理器进展情况。

回复bluehacker:
  我们这里准备和freescale合作建立一个实验室,我主要负责coldfire这块,板子出来主要用于研究生/本科生教学和做科研用。我目前弄的这个板支持情况是这样的:
MCF52235 EVB
板载USB接口的TBLCF BDM
8路发光二极管显示
4路按键中断或IO输入
1路复位
1路无源蜂鸣器
BDM接口引出
4位八段数码管显示
以太网接口
CAN总线
1路RS-422总线
1路RS-232总线
1路IIC温度传感器
MMA7260加速度传感器AD转换
1路电位器AD转换
未使用引脚引出

我们现在使用的芯片是MCF52235,这个片子主要优点是外设丰富,PCB好做,QFP封装的。运行在60MHz PLL频率下。
freescale的coldfire处理器绝对是稳定性强的,包括以前的老9S12(我们也在用),9S08(也在用)都具有相当好的稳定性,但是功耗大了点,我的板子使用USB供电根本拖不起来。
我们现在在coldfire上运用还是限于QFP贴片封装的, 比如5213,52233/4/5,5249等等,现在我也有52233的板(自己做的碗),52233demo,5272华恒的,52235目前这个给BOSS做的。
如果用MCF5407做工业控制板是个不错的选择。5407资料还没看过,外设应该是不错的。

点击此处查看原文 >>

系统分类: 单片机   |    用户分类:    |    来源: 原创

评论(6) | 阅读(245)
总共 , 当前 /,2345678910>>下一页