搜索
bottom↓
回复: 85

VC学习笔记: 利用PC的RS232口控制LED灯

[复制链接]

出0入0汤圆

发表于 2005-10-9 13:02:12 | 显示全部楼层 |阅读模式
菜鸟学习VC,顺便写了一个PC的RS232口控制LED灯的程序,当作菜鸟的学习实战吧。写得很粗糙,贴出来,希望各位大侠指教。

介绍

学习PC机串口与AVR单片机串口之间相互通讯的基本硬件接口电路和软件编程方法,并且达到使用PC机来控制LED的简单应用。

1.使用马老师AVR-51实验板及M16芯片;

2.AVR 使用GCC编程;

3.使用VC++.NET设计上位机;

4.功能:

从AVR发一些信息到PC,PC收到后显示出来。

PC发一些信息给AVR,AVR收到后显示一些LED等。

实物图

实验板:

使用马老师AVR-51实验板及M16芯片。

设置: 4M的振晶;LED0-7分别连接到PORTB的0-7端口上



AVR单片机串口程序介绍



一个很简单的USART收发程序。

设置:

1.波特率为9600;

2.8位数据位+1位停止位;

AVR程序功能:

1.LED控制:

指令“LED[1][2]”: 当AVR接收验证字符串”LED” 字符串以后:

[1]:  选择LED的地址(0-7) 。

[2]:  控制所选择的LED的状态:

0: LED关闭

1: LED点亮

2: 所有LED关闭

3: LED点亮

例如: 输入:

”LED21”: 点亮LED3;

”LED30”: 关闭LED4;

”LEDx2”: 关闭所有LED;

”LEDx3”: 点亮所有LED;

点击此处下载armok0176750.rar





2.实现从AVR发一些信息到PC,PC收到后显示出来。

点击此处下载armok0176751.rar

(无须安装)



PC程序及使用介绍

后台程序使用VC.NET编写,其中利用CSerial类,完成PC和单片机的通讯。

1.正确设置RS232,然后按”Press to Conn.” 按键,打开串口;

2.在小的输入框内输入文字,AVR收到字符串后输出到下面大的输出框内;



3.按”Led Demo” 按键,打开Led控制界面:

出0入0汤圆

发表于 2005-10-9 14:35:00 | 显示全部楼层
testcode你好,我想问问你的上机位软件上面的类似LED屏显示在VC是怎么做的

出0入0汤圆

 楼主| 发表于 2005-10-10 05:59:39 | 显示全部楼层
使用一个叫CMatrixStatic的类。

以下是我找到的范例:

点击此处下载armok0176807.zip

使用很简单,画一个CStatic控件,让它从CMatrixStatic继承。

例如:

...

CMatrixStatic::SetNumberOfLines(int max = 0);//设置LCD显示屏的行数;

CMatrixStatic::SetXCharsPerLine(int max = 0);//设置LCD每行的显示的字符的个数

CMatrixStatic::DoScroll(int speed, BOOL dir);//设置LCD移动的方向和速度

...

出0入0汤圆

发表于 2005-10-10 07:56:48 | 显示全部楼层
好的,多谢。我也玩玩

出0入0汤圆

发表于 2005-10-10 08:04:35 | 显示全部楼层
你知道那种可以显示中文的吗?

出0入0汤圆

发表于 2005-10-10 08:25:38 | 显示全部楼层
不好意思水平很菜,我想问一下画一个CStatic控件,让它从CMatrixStatic继承。 是怎么做的

出0入0汤圆

 楼主| 发表于 2005-10-10 08:27:01 | 显示全部楼层
上传的程序不能现实中文显示。

可以自己修改CMatrixStatic以及所带的位图来显示中文,但会较复杂。
头像被屏蔽

出0入0汤圆

发表于 2005-10-10 09:14:59 | 显示全部楼层
画一个CStatic控件,直接改CStatic xxxx为CMatrixStatic xxxx

出0入0汤圆

发表于 2005-10-10 10:44:30 | 显示全部楼层
谢谢

出0入0汤圆

发表于 2005-12-13 00:54:46 | 显示全部楼层
请教testcode ,试过很久,还是不知如何实现你所提到的效果.一点也不懂VC,只懂c++ builder.就连如可画一个CStatic控件都不知如何画?因为找不到这个控件,只在添加类里有这个类. 更别说从CMatrixStatic 继承了?完全搞不民懂如何用VC.

出0入0汤圆

 楼主| 发表于 2005-12-13 01:26:31 | 显示全部楼层
在VC中,首先需要建立一个MFC的工程(VC6为例,如下图)



添加控件的方法:



在Resource目录下的Dialog中,选择要添加的Dialog,选中上图右边Control中的static test,往Dialog中添加CStatic控件。这部分与VB类似

出0入0汤圆

发表于 2005-12-13 09:17:10 | 显示全部楼层
原来这个是CStatic控件啊?晕倒...找了半天也,以为不是这个呢?哪我又不懂了,你说让它由CMatrixStatic,而CMatrixStatic是自建的类吧(我看哪个例子的源代码).而按"

【7楼】 keetian 画一个CStatic控件,直接改CStatic xxxx为CMatrixStatic xxxx "的说法去做,我却找了所有源代码都找不到CStatic这个名字?能否再给点提示吗?谢谢你的回复!

出0入0汤圆

发表于 2005-12-14 23:01:16 | 显示全部楼层
我试过在例程的基础上添加了static text然后强制把源程序两个地方改改.新添加的可以使用,但打开程序就会报错.点击忽略后才可运行.虽然显示正常,但可能修改方法有误,还请testcode 教教如何使新添加的从CMatrixStatic继承的正确方法.





这是LCDMatrixDlg.cpp里作的修改.



void CLCDMatrixDlg::DoDataExchange(CDataExchange* pDX)

{

        CDialog::DoDataExchange(pDX);

        //{{AFX_DATA_MAP(CLCDMatrixDlg)

        DDX_Control(pDX, IDC_MATRIXDOWN2, m_lcddown2);

        DDX_Control(pDX, IDC_LCDLEFT, m_lcdleft);

        DDX_Control(pDX, IDC_MATRIXDOWN, m_lcddown);

        DDX_Control(pDX, IDC_MATRIXSMALL, m_lcdstaticsmall);

        DDX_Control(pDX, IDC_LCDSTATIC, m_lcdstatic);

        DDX_Control(pDX, IDC_STATIC, mylcd);添加了这一行,IDC_STATIC是新增控件的ID号

        //}}AFX_DATA_MAP

}



这是LCDMatrixDlg.h里作的修改.



// Dialog Data

        //{{AFX_DATA(CLCDMatrixDlg)

        enum { IDD = IDD_LCDMATRIX_DIALOG };

        CMatrixStatic        m_lcddown2;

        CMatrixStatic        m_lcdleft;

        CMatrixStatic        m_lcddown;

        CMatrixStatic        m_lcdstaticsmall;

        CMatrixStatic        m_lcdstatic;

         CMatrixStatic      mylcd;   添加了对像定义. 

        //}}AFX_DATA

出0入0汤圆

 楼主| 发表于 2005-12-15 00:41:47 | 显示全部楼层
这样修改是可以运行的。

另lcdstatic你是否正确初始化?参考例子中的初始化。



BOOL CLCDMatrixDlg::OnInitDialog()

{

     CDialog::OnInitDialog();

     ...

     m_lcdstatic.SetNumberOfLines(1);

        m_lcdstatic.SetXCharsPerLine(18);

        m_lcdstatic.SetSize(CMatrixStatic::LARGE);

        m_lcdstatic.SetDisplayColors(RGB(0, 0, 0), RGB(0, 255, 50), RGB(0, 103, 30));

        m_lcdstatic.AdjustClientXToSize(18);

        m_lcdstatic.AdjustClientYToSize(1);

        m_lcdstatic.SetText(_T("Scroll Right .."));

        m_lcdstatic.SetAutoPadding(true);                        //demonstrates auto padding with defalt character

        m_lcdstatic.DoScroll(300, CMatrixStatic::RIGHT);

    .....

}

出0入0汤圆

发表于 2005-12-15 06:36:48 | 显示全部楼层
忘了,初始化也做了。编译通过,并无错误,但运行时提示出错。跳出一个窗口提示,我选择忽略就可以继续运行,而且进行也正确。不知你是如何继承的?是不是我还有些东西没做处理呢?

出0入0汤圆

 楼主| 发表于 2005-12-15 12:46:58 | 显示全部楼层
不知是什么错误提示?

如上法添加"mylcd"应该是可以的,应该是其他的问题...

(另,一般mylcd的控件的ID号不要使用"IDC_STATIC",可以改为例如"IDC_STATIC_MYLCD"之类以避免重复)

出0入0汤圆

发表于 2005-12-15 14:42:59 | 显示全部楼层
感谢testcode的帮助,已经成功了。原来问题就在于IDC_STATIC的名字问题,改别的就不再报错了(虽然编译和运行都正常)。今晚试试写个简单的例子让后来者玩玩。感觉这个东西做提示很醒目,第一次看到的是阿牧的muisp.跟他联系,他跟我说是用VC的CBITMAP类扩展而成的.但一直没有学成VC(一个字烦,不够直观,C++ builder就很直观,而且代码结构清淅).见到你的帖子,为了实现这个,痛苦了几天,终于搞点了.

出0入0汤圆

发表于 2006-2-22 17:01:23 | 显示全部楼层
多谢了

出0入0汤圆

发表于 2006-2-22 18:19:52 | 显示全部楼层
testcode大侠果然很牛

出0入0汤圆

发表于 2006-10-23 19:12:29 | 显示全部楼层
我今天晚上也来试试

不过我用的MEGE128哈

等我的好消息哟

另外 想请教一下它的电源到底是怎么选择的哟

出0入0汤圆

发表于 2006-10-23 21:57:15 | 显示全部楼层
强,上位即还没做过,非常想学习!

能否推荐一种上位机编写语言,VC,VB,还有一个D什么P的,这些哪个好啊~!??

出0入0汤圆

发表于 2007-4-8 10:42:04 | 显示全部楼层
过了很久,好帖,顶一个

出0入0汤圆

发表于 2008-4-25 21:20:29 | 显示全部楼层
mark

出10入95汤圆

发表于 2008-4-25 22:15:16 | 显示全部楼层
vc

出0入0汤圆

发表于 2008-9-6 10:01:18 | 显示全部楼层
好好研究

出0入0汤圆

发表于 2008-9-6 12:19:29 | 显示全部楼层
建议用VC.不过VC入门比别的都难。欢迎讨论

出0入0汤圆

发表于 2009-3-16 21:18:21 | 显示全部楼层
很好的东西,收藏

出0入0汤圆

发表于 2009-3-24 23:00:09 | 显示全部楼层
很好很强大

出0入0汤圆

发表于 2009-3-25 00:23:02 | 显示全部楼层
学习!!!!!

出0入0汤圆

发表于 2009-5-20 16:19:12 | 显示全部楼层
谢谢了!楼主好人!

出0入0汤圆

发表于 2009-5-20 22:50:45 | 显示全部楼层
留个记号,周末研究一下。

出0入0汤圆

发表于 2009-5-22 09:18:23 | 显示全部楼层
VC里做LED显示这个还不错,留个记号

出0入0汤圆

发表于 2009-5-22 10:14:18 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-5-22 12:40:47 | 显示全部楼层
哇  古董

出0入0汤圆

发表于 2009-5-27 18:21:09 | 显示全部楼层
记号.

出0入0汤圆

发表于 2009-6-23 10:19:14 | 显示全部楼层
Mark

出0入0汤圆

发表于 2009-6-23 11:25:12 | 显示全部楼层
这里还可以讨论VC?

出0入0汤圆

发表于 2009-6-23 12:53:28 | 显示全部楼层
收藏

出0入0汤圆

发表于 2009-6-23 13:35:26 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-6-24 17:56:44 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-6-24 18:08:52 | 显示全部楼层
和 VC MFC 相关的好东西都要MARK一下

出0入0汤圆

发表于 2009-7-9 17:12:49 | 显示全部楼层
记下了

出0入0汤圆

发表于 2009-8-23 22:24:04 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-8-24 09:27:01 | 显示全部楼层
MARK

出0入0汤圆

发表于 2009-8-24 11:59:28 | 显示全部楼层
正学vc,谢谢LZ

出0入0汤圆

发表于 2009-8-24 13:22:09 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-11-2 22:47:52 | 显示全部楼层
多谢

出0入0汤圆

发表于 2009-11-3 20:16:40 | 显示全部楼层
串口通信

出0入0汤圆

发表于 2010-2-28 16:00:18 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-2-28 18:33:14 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-1 00:21:12 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-8 10:25:09 | 显示全部楼层
testcode 你这个程序编译不过啊?什么问题!我也用的GCC编译的

出0入0汤圆

发表于 2010-3-8 11:03:13 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-10 13:44:45 | 显示全部楼层
有意思。谢谢分享

出0入0汤圆

发表于 2010-4-6 12:48:39 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-6 20:17:02 | 显示全部楼层
学习一下

出0入0汤圆

发表于 2010-4-6 21:13:22 | 显示全部楼层
学习一下   留个印

出0入0汤圆

发表于 2010-4-8 15:08:04 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-6-7 15:45:15 | 显示全部楼层
学习了

出0入0汤圆

发表于 2010-10-17 13:33:27 | 显示全部楼层
马克

出0入0汤圆

发表于 2010-10-22 21:41:14 | 显示全部楼层
可以把电路图 所需器件 等资料给发一下吗  我是大一新生 菜鸟 正在学习 然后想了个项目跟这个差不多 想参考一下  老师说开始阶段可以先模仿着做

出0入0汤圆

发表于 2010-10-22 21:49:30 | 显示全部楼层
回复【楼主位】testcode
-----------------------------------------------------------------------

可以把电路图 所需器件 等资料给发一下吗  我是大一新生 菜鸟 正在学习 然后想了个项目跟这个差不多 想参考一下  老师说开始阶段可以先模仿着做

出0入0汤圆

发表于 2010-10-22 21:49:45 | 显示全部楼层
回复【楼主位】testcode
-----------------------------------------------------------------------

不胜感激

出0入0汤圆

发表于 2010-10-22 22:01:57 | 显示全部楼层
回复【楼主位】testcode
-----------------------------------------------------------------------

开始觉得这个挺简单的  现在看你的实物图貌似不是那么简单 我是初学者

出0入0汤圆

发表于 2010-10-22 23:00:15 | 显示全部楼层
回复【楼主位】testcode
-----------------------------------------------------------------------

板子上很多东西跟这个没有关系是吧  这是多功能板吧

出0入0汤圆

发表于 2010-12-26 12:06:59 | 显示全部楼层
多谢,学习了。

出0入0汤圆

发表于 2010-12-26 13:17:31 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-30 21:34:20 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-31 17:09:55 | 显示全部楼层
学习了。

出0入0汤圆

发表于 2011-1-1 00:46:24 | 显示全部楼层
mark!!!!

出0入0汤圆

发表于 2011-3-24 23:40:32 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-6 15:23:11 | 显示全部楼层
Mark,谢谢

出0入0汤圆

发表于 2011-4-26 15:23:37 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-4-26 19:44:18 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-14 23:16:22 | 显示全部楼层
不错,留个记号。

出0入0汤圆

发表于 2011-6-14 23:42:08 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-15 16:24:35 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-6-15 20:05:34 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-7-14 15:50:21 | 显示全部楼层
学vc就要留下

出0入0汤圆

发表于 2011-7-14 17:09:11 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-14 18:09:42 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-14 22:09:49 | 显示全部楼层
mark

出0入4汤圆

发表于 2011-7-14 22:15:10 | 显示全部楼层
mark

出0入0汤圆

发表于 2011-7-14 22:44:51 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-7-24 16:39:42 | 显示全部楼层
学习一下

出0入0汤圆

发表于 2012-7-24 21:28:06 | 显示全部楼层
不错的东西,收藏
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-8 06:30

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表