网商之窗
 

西门子6XV1 850-0BH20全新原装正品

点击图片查看原图
单价: 电询
品牌: 西门子
销量: 累计出售 0
评价: 已有 0 条评价
人气: 已有 14 人关注
更新: 2018-04-04 15:40
数量: 减少 增加件 库存452件
立即购买   加入购物车
公司基本资料信息
 
 
德国制造: 现货      联   系   人: 夏依明《夏工》   24小时联系手机:  13761388749(微信同号)
全新原装: 参数
质量保证: 保修           电 话: 021-61311931    在 线 商 务 QQ:  742729986
价格优势: 特价
高效工程组态成就高效自动化

一般情况下,PC要与多个单片机89C51系统进行主从式通讯,为了区分各单片机系统,可以使89C51采用串口工作方式3,即11位异步接收/发送方式,该方式的有效数据为9位,其中第9位为地址/数据信息的标志位,其作用是使从机据此判断发送的数据是否为地址,从而实现多机操作。但现在由于采用的是MSCOMM控件来实现PC机和单片机之间的通讯,这是一种标准的10位串口通信方式,即8位标准数据位和该数据的起始位、停止位各1位。因此二者格式不相符,故很难利用上述方案。因此可考虑将单片机串口设为工作方式1,即改为10位异步接收/发送方式来解决,其通讯流程如下:
首先发通信开始标志,接着发送需要操作的单片机系统地址,然后发送显示工作命令字,该命令包括2个字节,前一字节用于设定显示方式和滚动方向,后一字节则用于设定显示速度。再往下是传送显示内容的点阵数据,后对数据进行校验。该通讯规约非常简便,能够较好的解决上述问题,从而实现PC机与多单片机之间的主从式通讯及对显示的控制。
需要注意的是,当显示内容需要改变时,为了避免在单片机串行中断接收数据时,显示屏出现乱码,应使显示屏暂不显示(处于“黑屏”状态),直到数据接收完全,串行中断处理结束时再显示。
汉字字模的提取非常关键,本文的字模数据取自UCDOS下的字库文件HZK16。关于这方面的介绍较多,文献[2]给出了较为具体的在VC下提取汉字字模的方案,这里不再赘述。对于特殊字符或图形点阵数据的提取,简便的方法可以先做一个BMP文件,然后用一些取模软件(如字模提取v2.1)来获得。为了显示方便,点阵数据的格式应为n×(16×8),不足要求的则应以0数据补充。 b.动态效果模拟显示
为了方便调节LED的显示效果,笔者在PC机的控制界面上设计了LED显示屏的模拟显示,它同实际的显示效果完全一样。用户可以设定显示的模式,并调节显示速度,然后在界面上对显示效果进行预览,同时还可以随时修改和设定参数,因而十分方便简捷。
为此,可先在界面上描绘出虚拟的LED显示屏,由于实际的显示屏为160×16点阵,故须在界面 上设定相同的区域。
实现动态显示效果的方法和以上几种基本类似,这里以滚动显示为例作一说明。对于需要滚动的文字,可以将其设置为位图格式,暂存于内存中,然后利用VC 提供的位图拷贝函数BitBlt将位图复制到显示位置。对于特殊字符或图形,则可以直接利用BitBlt函数调用到显示位置。然后在类CLEDD OnTimer函数中调用该函数,以实现文字的滚动显示。另外,也可以通过设定不同的响应时间间隔来改变文字的滚动速度。
 
汉字显示屏广泛应用与汽车报站器,广告屏等。本文介绍一种实用的汉字显示屏的制作,考虑到电路元件的易购性,没有使用8*8的点阵发光管模块,而是直接使用了256个高量度发光管,组成了16行16列的发光点阵。同时为了降低制作难度, 仅作了一个字的轮流显示,实际使用时可根据这个原理自行扩充显示的字数。
1汉字显示的原理:
我们以UCDOS中文宋体字库为例,每一个字由16行16列的点阵组成显示。即国标汉字库中的每一个字均由256点阵来表示。我们可以把每一个点理解为一个像素,而把每一个字的字形理解为一幅图像。事实上这个汉字屏不仅可以显示汉字,也可以显示在256像素 范围内的任何图形。
用8位的AT89C51单片机控制, 由于单片机的总线为8位,一个字需要拆分为2个部分。
软件打开后输入汉字,点“检取”,十六进制数据的汉字代码即可自动生成,把我们所需要的竖排数据复制到我们的程序中即可。
   我们把行列总线接在单片机的i0口,然后把上面分析到的扫描代码送入总线,就可以得到显示的汉字了。 在这个例子里,由于一共用到16行,16列,如果将其全部接入89c51
单片机, 一共使用32条io口,这样造成了io资源的耗尽,系统也再无扩充的余地。 实际应用中我们使用4-16线74ls154来完成列方向的显示。 而行方向16条线则接在
p0口和p2口。
程序清单:
OR 00H
LOOP: MOV A,#0FFH ;开机初始化,清除画面
MOV P0,A    ;清除P0口
       ANL P2,#00   ;清除P2口
MOV R2,#200  
D100MS: MOV R3,#250 ;延时100毫秒
       DJNZ R3,$
       DJNZ R2,D100MS
       MOV 20H,#00H ;取码指针的初值
l100:    MOV R1,#100 ;每个字的停留时间
L16:    MOV R6,#16 ;每个字16个码
       MOV R4,#00H ;扫描指针清零
       MOV R0,20H ;取码指针存入R0
L3:    MOV A,R4   ;扫描指针存入A
       MOV P1,A   ;扫描输出
       INC R4      ;扫描指针加1,扫描下一个
       MOV A,R0   ; 取码指针存入A
       MOV DPTR,#TABLE ;取数据表的上半部分的代码
       MOVC A,@A+DPTR
       MOV P0,A   ; 输出到P0
       INC R0      ;取码指针加1,取下一个码。
       MOV A,R0
       MOV DPTR,#TABLE ;取数据表下半部份的代码
       MOVC A,@A+DPTR
       MOV P2,A          ;输出到P2口
       INC R0
MOV R3,#02        ;扫描1毫秒
DELAY2:  MOV R5,#248    ;
       DJNZ R5,$
       DJNZ R3,DELAY2
       MOV A,#00H     ;清除屏幕
       MOV P0,A
       ANL P2,#00H    
       DJNZ R6,L3       ;一个字16个码是否完成?
       DJNZ R1,L16      ;每个字的停留时间是否到了?
       MOV 20H,R0      ;取码指针存入20H
       CJNE R0,#0FFH,L100 ;8个字256个码是否完成?
       JMP LOOP ;反复循环
     
 TABLE :
;汉字“倚”的代码
db 01H,00H,02H,00H,04H,00H,1FH,0FFH
db 0E2H,00H,22H,00H,22H,0FCH,26H,88H
db 2AH,88H,0F2H,88H,2AH,0FAH,26H,01H
db 63H,0FEH,26H,00H,02H,00H,00H,00H
;以下分别输入天,一,出, 宝,刀,屠,龙,的代码,略。
end
 
更多»本企业其它产品

[ 商品搜索 ]  [ 加入收藏 ]  [ 告诉好友 ]  [ 打印本文 ]  [ 违规举报 ]  [ 关闭窗口 ]