要用单片机led灯循环点亮独立控制60个led灯,io口不够用了请问拓展io口用什么芯片

LED数码管的驱动是比较简单也容易理解的,多位数码管一般是LED阵列的形式,每个数字使用一个公共端,不同数字的对应同笔段使用一个控制端;驱动采用分时扫描没个数字位,动态显示。但是LED比较费电,我想做一个用电池供电的钟,用发光管电池就撑不了多久了。于是我考虑用液晶。
在这边的电子市场我买到一个4位笔段式液晶屏,4个数字最中间有冒号,边上还有几个箭头符号,一共有15个引脚,正合适用AVR来驱动做一个钟。
笔段式LCD屏的结构与LED数码管很相似,但是由于是液晶,工作机理上不同,驱动方式也有很大差异:
(1) LED有正负之分,液晶笔划没有。
(2) LED在直流电压下工作,液晶需要交流电压,防止电解效应。
(3) LED需要电流提供发光的能量,液晶笔划显示状态下电流非常微弱。
(4) LED对微小电流不反应,液晶则很敏感。
不难看出,用LED的驱动方式来对待LCD屏是行不通的。我在买回来测试这块屏之前没有意识到,于是走了不少的弯路。与LED驱动不同的是需要给每个笔划加上一个交流电压。一般用30-60Hz的方波就可以了,频率再低显示会有所波动,频率高了功耗也会增加,因为LCD对电路呈现容性。而且,正负电压都可以“点亮”液晶。
好在AVR的I/O口可以三态输出,也就是除了高/低电平,还可以呈现高阻抗,相当于断开连接。于是我想到了这样的办法:不需要显示的那一组笔划对应的公共端悬空(I/O口选择三态),那么就不会加上电压了。照这个思路,我的实验电路焊好,出来的显示却是一团糟:笔划都黑了看不清。我这才考虑到液晶本身的问题:阻抗高,而且有电容,是不可一边悬空的!这个道理也许跟CMOS输入端差不多。查找了一些关于液晶的资料,大致知道LCD屏不是那么简单的,驱动方式通常是1/N, 也就是电压不止高低两档。可是单片机I/O没有那么多输出状态可以选择。
1/2 Bias驱动
不显示的液晶笔划两端电压相等,显示的不等。这样一个要求在扫描方式
下不能满足,于是改为电压等级不同。1/2 Bias驱动就是这样的,如下:
如此,在 COM1,SEG1 选择的笔划上,加上的电压为 -1/2, -1, +1/2, +1 ... 在 COM1,SEG2 选择的笔划上,加上的电压为 +1/2, -1, -1/2, +1 ... 在 COM2,SEG1 选择的笔划上,加上的电压为 -1, -1/2, +1, +1/2 ...在 COM2,SEG2 选择的笔划上,加上的电压为 0, -1/2, 0, +1/2 ...
计算一下大致的平均功率(如果液晶灰度与电压平方成正比,实际不是这样)前三者是一样的,都是 1+(1/2)^2=5/4, 对于最后一个 0+(1/2)^2=1/4 因此显示的功率比为 5:1, 显示状态会是这样:
- - - O - - - O
- - - O - - - x
AVR I/O没有能力输出 1/2 Vcc 的电压(ADC在这里就不要考虑了, 浪费I/O还不如用静态液晶屏), 因此没有办法实现真正的 1/2 Bias驱动。但是注意到要提供一个一半电源电压也不是难事,既然AVR I/O口可以三态,我们用两个电阻分压将端口“拉”到1/2 Vcc就好了,于是,1/2 Bias驱动的做法可以这样:
Port pin-----+------------ to LCD COMx
取电阻 1Meg 是综合耗电与分压效果考虑的。这样在 COMx 就可以产生三种电压值,就达到了1/2 Bias动态驱动的目的。实现起来在前面的基础上增加电阻即可,我的屏有4个公共端,因此用了8个电阻,数字就能够显示出来了。
虽然显示的确做到了,然而效果却不能让我满意。具体表现就是需要正对着LCD屏看才是很清晰的;如果斜着看,就可能一片混浊了,没有达到实用。用2节Ni-MH供电时候正着看没问题,用2节干电池(电压提高一点)就不是很清晰了。如前面的分析,那些没有被选择的笔段其实也加上了变化的电压,只不过与选择的比段相比电压平均有效值低一些。这两个的差异足够显著,才能保证显示效果。
再分析 1/2 Bais 驱动在我的LCD屏上 1/4 分时扫描的结果:一个周期内,“点亮”的笔段平均功率=1^2+(1/2)^2+(1/2)^2+(1/2)^2=7/4, 而没有被“点亮”的笔段为=0+(1/2)^2+(1/2)^2+(1/2)^2=3/4, 两者之比 7:3
跟前面的例子分析对比看出,从 1/2 分时扫描变到 1/4 分时扫描,显出来的笔段和不显的笔段上,电压产生平均功率的对比从 5:1 变到 7:3 了。我尝试从软件上改变扫描时序,也不能改进显示效果,看来 1/2 Bias 不够用的了。
我查了Nokia 3310液晶手册其中对于LCD电压输出时序的描述。恰好里面有一个图,绘出了行和列控制线上的波形。从坐标轴上看出Vlcd和Vss之间另外还有4个电压等级。这么多种电压用AVR I/O实现已
经不现实了。
我再考虑选用带有LCD驱动功能的MCU, AVR只有一款ATmega169, 封装形式不适合DIY。Microchip有一款PIC16F913, 有28DIP的封装,看上去正合适。暂时不知道价格,我先找来它的手册看看。详细看了LCD驱动模块的部分,我发现PIC16F913也只有1/2 Bias驱动和1/3 Bias驱动两种选项,分时最多为1/4分时驱动,对于我的屏正好。
1/3 Bias 驱动需要将Vcc--GND之间的电压三等分,一个周期驱动波形示例如下:
在 (COM1,SEG1) 笔段上,电压为 +1, -1/3, -1, +1/3 ... 在(COM1,SEG2)上为 +1/3, +1/3, -1/3, -1/3 ...
在(COM2,SEG1)上:+1/3, +1/3, -1/3, -1/3 ... 在(COM2,SEG2)上:-1/3, +1, +1/3, -1 ...
于是计算平均功率,在 (COM1,SEG1)和(COM2,SEG2)上面是 2*1^2+2*(1/3)^2=20/9 在(COM1,SEG2)和(COM2,SEG1)上面是 4*(1/3)^2=4/9, 两者之比 5:1
假如不是上图的 1/2 分时驱动而是 1/4 分时驱动,这个比例将变为
2*1^2+6*(1/3)^2 vs 8*(1/3)^2 = 3:1
若将原来的 1/2 Bias 改用 1/3 Bias 驱动,对于我的LCD屏这个比值从 7:3 改善为 3:1 了。既然PIC16F913只设计了 1/2 Bias与1/3 Bias,用起来应该问题不大。
AVR单个I/O口要实现4种电压输出——不可能吧,我是想不出来了。AVR最多只有三种电压输出,能不能对这个电压再做等分呢?一番思索之后我想这样行不行:就4等分吧.
猜你喜欢的内容。。。
……普通io口驱动lcd_信息与通信_工程科技_专业资料。普通io口驱动lcd by...
……用普通 io 口驱动 lcd 显示 用普通 io 口驱动 lcd 显示文件编码:ha..*** io_data .***......
……普通io口驱动lcd_信息与通信_工程科技_专业资料。网上看到一篇普通io口驱动lcd的帖子,受益匪浅,贴出来共享下led 数码管的驱动是比较简单也容易理解的, 多位数码管......
……单片机io口直接驱动lcd_信息与通信_工程科技_专业资料。今日推荐 ..单片机io口的驱动能力 4页 免费 用普通io口驱动lcd显示 18页 2下载券 单片机......
……用单片机 io 口直接驱动段式 lcd 的方法 用 io 口驱动段式 led(数码管)的方法相信大家比较清楚,但用 io 口直接驱动 段式 lcd 的方法相对复杂一些。在网上搜......
……io口驱动液晶原理_电子电路_工程科技_专业资料。通过普通单片机端口模拟驱动液晶显示器
北京中显电子有限公司 直接用单片机驱动 lcd,以求省电省钱......
……如何使用普通io口驱动lcd 单片机直接驱动 lcd 段码液晶 低成本 宁波北仑恒晶电子科技有限公司_it计算机_专业资料。如何使用普通io口驱动lcd 单片机直接驱动 lcd 段......
……io口驱动lcd_调查报告_表格模板_实用文档。io口驱动lcd lcd? ...
……51 单片机任意 2 个 io 口驱动 lcd1602 相信大家对 1602 显...
……用io 驱动lcd 在现今的电子产品中,lcd 显示被广泛的应用。lcd 显示驱动有内...普通io口驱动lcd 7页 免费 用51单片机驱动动态笔段... 4页 免费......
……用io直接驱动lcd的方法_信息与通信_工程科技_专业资料。用io直接驱动lcd的方法application...用普通io口驱动lcd显示 18页 2下载券 用stc系列mcu的io口直接... .....
……单片机直接驱动段式液晶... 8页 免费 如何使用普通io口驱动lc... 8页...
……stm32用io口驱动8位4tft_电子电路_工程科技_专业资料。stm32用io口驱动8位4tftstm32 用 io 口驱动 8 位液晶程序 #include stm32f10x.h #include ......
……成功了!任意2个io直接驱动lcd1602,并且不需外加芯片很少的线驱动lcd1602_计算机软件及应用_it计算机_专业资料。成功了!任意2个io直接驱动lcd1602,并且不需外加芯......
……lcd数码管的驱动_信息与通信_工程科技_专业资料。单片机普通io口驱动lcd液晶数码管led 数码管的驱动是比较简单也容易理解的, 多位数码管一般是 led 阵列的形式, ......
……用普通io口驱动lcd显示 18页 2下载券南邮
基于简单io口的lcd显示录...
……3个io口驱动6个led_电子电路_工程科技_专业资料。只要三个io口就驱动了6个led灯,极大节省io口呀,快来看看吧~最普通的行列矩阵式驱动,可以用 n+m 个 io ......
……普通io口驱动lcd 7页 免费 段式液晶驱动 22页 10财富值 mcs-..
……pic两个io口驱动1602_信息与通信_工程科技_专业资料。用pic的两个io口驱动..{ trisb=0; portb=0; lcdinit(); 液晶设置 delay_nms(50); 短暂......
……飞思卡尔mc9s12普通io口_电子电路_工程科技_专业资料。飞思卡尔mc9s12xs..s12 的输入输入端口(io 口) io 端口功能可设置为通用 io 口、驱动......
看过本文章的还看过。。。
您可能感兴趣。。。
最新浏览记录下载费用:2 元 &
当前资源信息
编号: 42110
格式: PDF
大小: 108.38KB
上传时间:
利用单片机89C52的一个并行IO口实现多个LED显示的一种简单方法
下载文档到电脑,查找使用更方便
2 元&&0人已收藏
还剩页未读,继续阅读
<a href="UserManage/CopyrightAppeal.aspx?bid=82006" title="版权申诉" class="fLeft works-manage-item works-manage-report" target="_blank"
关&键&词: 单片机89实现多个种利用单片机的一个并行 口实现多个9种简单方法实现 89单片机 单片机的 口实现多个片机
资源描述:
用 示时 , 其显示数据以串行方式从 89输出送往移位寄存器 74 A、 B 端 , 然后将变成的并行数据从输出端 出 , 以控制开关管 集电极 , 然后再将输出的选码同时送往数码管 选码由● 应用与设计图 1 多个 示的硬件原理图(C) 1994 ~ 输出并经译码器 74往开关管 基极 ,以对数码管 行位选控制 , 这样 , 8 个数码管便以 100时间间隔轮流显示。由于人眼的残留效应 ,这 8 个数码管看上去几乎是同时显示。2 软件编程该系统的软件编程采用 51 系列单片机汇编语言完成 ,并把显示程序作为一个子程序 ,从而使主程序对其进行方便的调用。图 2 所示是其流程图。具体的程序编码如下 :主程序 : , # 101 , # 001 , # 0 # 19 # 18 # 0 , # 1 , , # 0 , 1 , # 08H , 0H ,201H ,212H ,223H ,234H ,245H ,256H ,267H ,271 , # 08 , , @1 , @ , # 15 , @A + 013H ,925H ,099H ,49H ,41H ,101H ,091. 32 , # 8 1. 2 1. 2(C) 1994 《 国外电子元器件》 2002 年第 8 期 2002 年 8 月1 引言在设计数字语音教室时 , 语音传输的实时性是设计的重要技术指标。因此 , 选择适当的数字信号处理器就显得尤为重要。本文在数字语音教室的多媒体终端设计中选择了 司的 芯片的指令周期为 10 内核电压是1. 8V , I/ O 电压是 3. 3V , 内部采用改进的哈佛总线结构 ,因此具有运算速度快、通用性强、接口连接方便等特点 ,非常适用于语音编码和传输。另外 ,要保证语音信号传输的实时性 , 必须选择合适的语音采集和编码芯片与 配合 , 以充分发挥各自的性能特点。经过多方的性能比较 ,笔者采用成语音信号的 A/ D 和D/ 同时又将语音信号以数字 从而实现语音信息的传输。下面具体论述数字信号处理器 两个 通道缓存串行口 ) , 可以与串行设备如编解码器或串行 A/ D 转换器直接通信。 以及双缓存的发送寄存器和三缓存的接收寄存器 , 允许传输连续的数据流 ,数据长度可以为 8、 12、 16、 20、24、 32 等 ; 同时还可提供 A - 律和 u - 律压扩 , 以及 1. 11. 12 , , , 01. 6 , , 1~ 5 , , 21. 4 , 1. 3束语该设计方法已多次应用于学生单片机实验的显示电路和多种仪器显示系统中。只要将该显示程序调入其它主程序中 , 即可完成显示功能。经过多次使用证明 :该方法可移植性好、实用性强。参考文献1. 何立民 . 51 系列单片机应用系统计 . 北京航空航天大学出版社 ,1999 ,62. 孙涵芳 ,徐爱卿 . 51/ 96 系列单片机原理及应用 . 2001 ,3收稿日期 :2002 - 01 - 30咨询编号 :020801● 应用与设计数字信号处理器 接口设计国防科学技术大学 田素芬 冉茂儒 卢焕章 u 针对数字语音教室多媒体终端的语音传输实时性要求较高的特点 , 利用数字信号处理器 码解码器 现了数字语音接口的设计。文章在介绍其工作原理的基础之上 ,重点论述了它们的软硬件实现的步骤和方法。关键词 : 数字语音 ; 多媒体终端分类号 : 1 文献标识码 :B 文章编号 :1006 - ) 08 - 0006 - 03(C) 1994 @nts
& 温馨提示:
1. 本站作品为确保原创性及保密性仅显示部分内容,需要完整作品请下载。 2. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。文件的所有权益归上传用户所有。 3. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。 4.【温馨提示】不支持迅雷下载,如下载错误或无法下载,请使用IE浏览器,或者360浏览器下载。 5. 本站仅提供交流平台,不保证下载资源的准确性、安全性和完整性。并不能对任何下载内容负责。
& 大分享文库|设计图纸下载|设计程序下载分享平台 所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
中国地质大学(北京)关于研究生发表学术论文的暂行规定-中地大京发〔2009〕4号
中文核心期刊目录(发表研究论文投稿指南、评价学术论文的基本标准)
周礼的学术研究价值以及启发人们认识人类与自然和谐并存良知的思想内涵
宗教研究-中国大陆基督教神学现状与发展浅议
2012年学术型硕士研究生招生专业目录
2011兰州大学学术型硕士研究生招生目录
2010年学术型硕士研究生招生专业目录
2011年中国科学院研究生院自动化学科学术论坛征文通知
2013稷下研究生学术节策划方案
2011年学术学位硕士研究生招生专业目录
2014年吉林大学学术类硕士研究生招生目录
“反思 前瞻:博物馆在中国——纪念中国博物馆事业110周年”学术研讨会征稿通知 (2)
“三相五线制”用语存疑浅议
“王泽鉴教授华政学术系列讲座”(第一讲)请求权基础的思维方式和民法的教学研究
【古文字】汉字起源问题浅议
【激励机制】浅议中小企业激励机制
【吕世辰】国外学术界关于农民流动与社会结构变迁的研究综述
1护理中级职称论文发表 浅议口腔感染类ICU患者的护理
1浅议成本管理实施的若干问题讲课版
3 高等学校哲学社会科学研究学术规范
3 孙全超1p 浅议县级电视台新闻编辑策划的创新
3计算机应用论文代发 浅议计算机在工程造价管理中的应用
3安徽计算机论文发表 浅议网络环境下语音识别技术的发展应用
4.学年第一学学术型硕士研究生公共课分班安排
5经济类论文代写代发表 浅议我国的住房保障政策
7江苏职教论文_浅议如何提高高校电子阅览室的利用率
08浅议油漆车间成本计量
9机械工程师职称论文发表 浅议现代社会电子技术的应用
11建筑类核心论文发表 浅议商业建筑的节能技术
11年学术型研究生初试参考书目
20年来国外学术界对邓小平南方谈话的研究
50年来中共党史研究的学术发展
本文标题:利用单片机89C52的一个并行IO口实现多个LED显示的一种简单方法 链接地址:
&& 举报该文档为侵权文档。
&& 举报该文档为重复文档。
&& 反馈该文档无法正常浏览。
&& 举报该文档含有违规或不良信息。
网站地图: copyright@
大分享文库|设计图纸下载|设计程序下载分享平台 网站版权所有 经营许可证编号:豫ICP备号-213138人阅读
&第一课,了解单片机及单片机的控制原理和DX516 的用法,控制一个LED 灯的亮和灭本章学习内容:单片机基本原理,如何使用DX516 仿真器,如何编程点亮和灭掉一个LED 灯,如何进入KEILC51uV调试环境,如何使用单步,断点,全速,停止的调试方法聂小猛 2006 年6 月单片机现在是越来越普及了,学习单片机的热潮也一阵阵赶来,许多人因为工作需要或者个人兴趣需要学习单片机。可以说,掌握了单片机开发,就多了一个饭碗。51 单片机已经有30 多年的历史了,在中国,高校的单片机课程大多数都是51,而51 经过这么多年的发展,也增长了许多的系列,功能上有了许多改进,也扩展出了不少分支。而国内书店的单片机专架上,也大多数都是51 系列。可以预见,51 单片机在市场上只会越来越多,功能只会越来越丰富,在可以预见的数十年内是不可能会消失的。作为一个初学者,如何单片机入门?需要那些知识和设备呢?知识上,其实不需要多少东西,会简单的C 语言,知道51 单片机的基本结构就可以了。一般的大学毕业生都可以快速入门,自学过这2 门课程的高中生也够条件。就算你没有学过单片机课程,只掌握了C 语言的皮毛,通过本系列的教程,您也会逐渐的进入单片机的大门。当然在学习的过程中,您还是必须多去研读单片机书籍,了解他们的基本结构及工作方式。下面以51 为例来了解一下单片机是什么东西,控制原理又是什么?在数字电路中,电压信号只有两种情况,高电平和低电平,用数字来记录就是1 和0。单片机内部的CPU,寄存器,总线等等结构都是通过1 和0 两种信号来运作的,数据也是以1 或者0 来保存的。单片机的输入输出管脚,也就是IO 口,也是只输出或识别1 和0 两种信号,也就是高电平和低电平。当单片机输出一个或一组电平信号到IO 口后,外部的设备就可以读到这些信号,并进行相应操作,这就是单片机对外部的控制。当外部一个或一组电平信号送到单片机的IO 口时,单片机也可以读到这些信号,并进行分析操作,这就是单片机对外部设备信号的读取。当然实际的操作中,这些信号可能十分复杂,必须严格地按照规定的时间顺序(时序)输入输出。每种设备也都规定了自己的时序,只要都严格遵守,就可以控制任何设备,做出只要你想象得出的任何事情。您可能会再问,我如何让单片机去控制和分析外部设备呢?答案是程序,您可以编写相关的程序,并且把他们烧写到单片机内部的程序空间,单片机在上电时,就会一步一步按照您写的程序去执行指令,做您想做的事情。在51 标准芯片中,有32 个输入输出IO,分为4 组,每组8 个,分别为P0 口,P1 口,P2 口,P3 口。P1 口的8 条脚就用P1.0 至P1.7 表示,其余类似。51 就是用这32 个口来完成所有外部操作的。对于51 的内部结构,如果您已经了解,那是最好;如果不懂,也可以先放下,在完成了本教程开始的几个章节之后,您就会大有兴趣,自己去寻找资料阅读了。当然,如果您希望成为一个优秀的单片机开发程序员,还是必须熟悉单片机的内部结构及工作原理,切不可偷懒!在这一章,您将用程序去控制一个LED 发光管的亮和灭。你应该知道,LED 发光管在通过一定电流时亮,不通电就灭。为了不让LED 通过太大的电流把它烧坏,我们还要串上限流电阻。51 的IO 是弱上拉的方式,在输出高电平时,只能输出几十微安的电流到地,而在输出低电平时,VCC 电源可以输入几十毫安的电流到IO。一般LED 需要10 毫安左右电流点亮,我们就将LED 接在电源VCC 和IO 口之间,中间串上电阻,当IO 输出低电平时,灯就亮了,反之,灯就灭了。我们在这个程序里要控制的是P1.0。请参考一下我们将要使用的试验板的电路图,这个试验板是在购买dx516 仿真器是赠送的。图1,试验电路图
图2:试验板外观图
下面介绍一下仿真器和仿真环境。在实际的单片机学习和开发中,你可以用仿真器模拟一个CPU 芯片,让它按照您编写的程序工作,并且进行调试,一步步排除程序的bug,使程序正常工作。程序工作正常后,您就可以用烧写器将您编写的程序烧入购买来的单片机芯片中,让它自己去运行了。要使用仿真器,还得有一个编译调试的环境,这个环境是在计算机上运行的,我们就在计算机上编写和调试程序,计算机和仿真器有连接,仿真器中的各种数据和程序,都可以从计算机上观察到,并可以观察变量,写入变量的值,单步调试程序,在程序中设置断点调试,全速运行,停止程序运行,等等操作。我们使用世界上目前最先进的keilC51 编译调试环境,仿真器使用大虾电子网(
)设计的DX516 专业版仿真器,这个仿真器功能齐全,性价比最佳,是学习开发的好工具!您可以在此页 的资料下载栏目里下载到keilc51 相关的中文说明资料,这些资料详细地说明了如何使用C51 编程和如何使用keil uV2 环境调试,请在本章试验完成或者试验过程中,如果遇到不懂的地方,一定要抽时间阅读!您应该也可以在上面的网页中找到下载破解版本的keilc51 的办法。中国法律规定,在学习和研究工作中使用有版权的软件是可以的,但是,如果您开发产品时,建议您还是去购买一个正版的软件。下面是DX516 仿真器的使用介绍:1。安装将仿真器和试验板按图3 组装好,串口线按照正确方向插入仿真器,另一端和电脑串口连接,请尽量使用计算机的硬串口。仿真器底座左边的跳线,请放在EMB 这边,以进入仿真状态。如果放在RUN 这边,将会进入脱机运行状态。晶振选择跳线请放在IN 这边,以使用仿真器内部晶振,内部晶振更加可靠。如果放在OUT 这边,则会使用外部的用户板晶振。图3 仿真器插在试验板上
2。电源因为用户板使用电流不大,可以使用usb 取电,usb 最大电流可以提供500mA,将usb 取电板插入电脑的usb 口中。(实际应用中,如果用户板使用电流超过100mA,我们就建议使用外部电源)3。启动在仿真器上电,或者按一下仿真器上面的按钮时,仿真器会发出&嘀-&,表示仿真器正常启动。同时仿真器上面的灯闪烁一次,表示进入正常仿真状态。4。仿真设置第一个设置:C51 用户请在您的代码的main()函数前面,加上一句:char code dx516[3] _at_ 0x003b;如果以上设置你没有做,在装载过程中,仿真器会发出&嘀嘀嘀& 的三声短声报警,这时的仿真结果将可能不正确。在我们的例程中,这句话已经加入了。这句话并不会影响程序的工作,可以一直保留。第二个设置:请在硬件仿真设置选项中,选择serial interrupt,在前面打勾。如果以上设置你没有做,在装载过程中,仿真器会发出&嘀-& 的一声长声报警,这时的仿真结果将可能不正确。其余设置:请选择use keil Monitor-51 Driver ,这样才会使用硬件仿真请选择load Application at start ,在启动时直接装载程序请选择Go till main ,装载后直接运行到main 函数请在硬件仿真设置选项中,选择115200bps 波特率,所有cache 都可以不选,或者只选cache code。同时请选择正确的串口号。图4 仿真设置
好了,现在可以开始做试验了,我们打开已经建立好的工程和编写好的程序试验。顺便还会学习一下程序调试的技巧。至于如何建立一个新工程,请参考C51 的帮助文件,或者自己摸索一下, 的DX516专栏里也有&一步步教你如何第一次做&&的文章可以学习。请双击lessoncode01 目录下的lesson1.uv2,打开后界面如下:图6:程序界面
这个界面是uV3 的,和uV2 是一样用的。点一下上图第三排第2 或者第3 个按钮(您的编译器按钮位置不一定在那个位置,自己找找),就可以看到编译结果了。上面显示是0errrs,0warnings,这是最佳的编译结果,如果有error,则无法进行下一步仿真,如果有warning,一定要尽量消除,确实无法消除的,也要确认不会对程序造成影响,才进行下一步的仿真。在编译结果中,我们还可以看到有data,xdata,code 等用了多少字节的报告,要注意您的单片机中是否有这么多的资源,如果不够,将来烧片运行时就可能出现问题。比如AT89C51 的程序空间是4K,xdata 如果没有外扩就是0 个,data 是128 个。超出这些范围,程序就不能在AT89c51 中运行。不同的芯片有不同的容量,如SST89E516RD 就有64K 程序,内部768 字节XDATA,还有256 个字节的data。我们的例程中肯定都考虑了这些了,肯定不会超出,因为DX516 仿真器是和SST89E516RD 有同样的容量的,将来自己开发时就要注意了。下面我们故意把第9 行的P10 写成P11,点编译,因为没有预先定义P11,所以就报告错误了,如下图:
双击一下错误报告的那一行,窗口就也会跳到这一行,方便您进行修改。好了,现在请把错误改回去,再编译一次,出现报告正确了以后,下面开始仿真了。点一下第二行第5 个一个放大镜里面一个d 字母的按钮,就可以进入仿真了,仿真器要事先连接好哟。进入仿真后要退出仿真环境也是点这个按钮。注意,等会如果程序在正在全速运行时,仿真环境是不能直接退出的,得先点停止运行后,再点仿真按钮才可以退出。点进入仿真按钮,程序开始装载,PC 自动运行到了main()停下,并指向了main()函数的第一行。下面是进入了仿真环境的截图:
再顺便把调试界面上的按钮介绍一下:图5:按钮说明
进入仿真窗口后,如果出现的不是前面的源代码窗口,而是夹有反汇编代码的窗口,直接关掉这个窗口就会恢复到代码窗口。下次进入也会直接进入到源代码窗口。现在先试验单步,点单步(两个单步都可以,一般点单步跨过)。可以看到灯亮了。PC 指针也指向了下一个程序行。图:照片,灯亮再点一下单步,PC 又走下一步,灯灭了。再点一次,PC 走到挂起的程序行了,继续点仍然在这一行。这句指令其实就是使程序不断地跳到自己这一行,别的什么也不做。一般称作程序挂起。一般的实际应用中的程序是不会挂起的,一般是在main 函数里做一个大循环,程序如下:void main(void) // 主程序{while(1){P11=0;//亮灯P10=1;//灭灯}}请将main 函数程序改为上面的代码,我们下一步将试验断点的操作。编译后结果如下:
图:进入仿真后图:
可以看到下面的提示窗口中显示:&connected to Monitor-51 V.DX&,后面的V.DX 就是已经连接到大虾仿真器的提示了。V.DX 是大虾仿真器特有的标识。在第15 行双击一下,可以看到程序行左边出现了一个红方块,这就是设置断点,再双击一次,断点就取消了。如果程序在全速运行的过程中遇到断点,就会自动停下来给你分析。注意在进入仿真后,并且程序是停止状态时,才可以设置或者取消断点。图:设置了断点
现在点全速运行,可以看到程序在断点处停了下来,并且由于前一句指令刚刚执行了点灯,所以这时灯是亮着的。现在在第14 行设置断点,并且取消上一个断点。图:设置了另一个断点
现在点全速运行,可以看到程序在断点处停了下来,并且由于刚刚执行了灭灯,灯是灭着的。好,现在试验全速运行和停止。把断点取消,再点全速运行,可以看到灯是亮着的,但是不是很亮,这是由于程序是循环的,亮灭交替进行,亮的时间并不是全部的时间。现在点停止,可以看到程序停止了,重复几次进行全速和停止,可以发现每次停止的地方不一定是同一位置。这一课就先结束了,我们学习了如何点灯及一些基本的编译和调试操作,下一课将学习如何使LED 闪烁,和更多的调试方法,和如何查看运行状态和设置内部寄存器的值。课后作业:改为第2 个LED 灯(P1.1)做完本章的试验。
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:221617次
积分:2740
积分:2740
排名:第12128名
原创:64篇
转载:38篇
评论:41条
(1)(3)(1)(2)(1)(3)(1)(1)(1)(1)(2)(2)(1)(7)(5)(1)(2)(1)(6)(3)(9)(16)(5)(1)(2)(3)(2)(5)(6)(8)

我要回帖

更多关于 单片机控制led灯亮度 的文章

 

随机推荐