C51 + LCD1602 + Keil + Proteus 初学记

发表于:2018-6-9 16:51:36 5027
电子电路
技术类别: 软件使用
关键字: C51 + LCD1602 + Keil + Proteus

登录后可查看大图

您需要 登录 才可以下载或查看,没有账号?立即注册

x
C51 + LCD1602 + Keil + Proteus 初学记

笔者职业是PC x86/x64 coder,一直对电子感兴趣,可对电子知识了解贫乏,想来单片机也是写代码,上手容易些。

C51     - 51单片机,最早由Intel研发,8位单片机
LCD1602 - 16x2行(32个字符)的字符型液晶
Keil    - 集成开发环境,对单片机的源码进行编辑,编译,和管理
Proteus - 仿真软件,用电脑模拟搭建电路,模拟运行状态及结果

笔者所用版本是keil3中文版,原因是它的安装包只有12MB大小,Proteus 7.8 sp2 + 汉化补丁,安装包只有89MB大小,还是母语看着舒服。
安装过程略。

推荐使用everything,一款1MB左右的查找软件。
安装好Proteus + Keil后,打开everything,输入lcd1602:
1.jpg
找到 LCD1602.DSN,注意选8051 with LCD1602 LCD controller目录里的,最好把这个目录拷贝到其他地方做备份,双击打开LCD1602.DSN,
2.JPG
注意左下角的开始停止等按钮,
3.JPG
按开始按钮就开始仿真了,可以看到LCD里输出的显示:
4.JPG
按停止按钮,双击图中AT89C51那个芯片,出现配置窗口:
5.JPG
注意笔者选定状态的Program File: Debug\Debug.ubf,这里就是给单片机里加载的程序,这里可以加载hex文件。这就是仿真的过程。
下面演示如何用Keil来编程,也就是写源码并生成hex文件,然后就可以用Proteus来仿真自己编译的程序了。
在Keil里新建一个工程,注意单片机要选AT89C51;
上上述8051 with LCD1602 LCD controller目录里有个LCD1602.C,去掉只读属性,拷贝到Keil的工程里。
7.JPG
然后做下图修改:
6.JPG
生成的时候要勾选生成Hex文件。
8.JPG
附上修改后LCD1602.C与原始LCD1602.C,用文件比较工具可以看到区别,推荐winmerge 2.14
8051 with LCD1602 LCD controller.zip (1.88 KB, 下载次数: 174)

PS:求赠送ZT-X,或者ZT-X的优惠券也行啊~~~~~~~~~~~~~~~~



收藏
送赞
分享

评分

参与人数 2 +5 金钱 +7 +5 收起 理由
rivrz + 5 + 5 + 5 跟着做了下,一波三折,总算成功了!.
43545 + 2 赞一个!

查看全部评分总评分 :  +5 金钱 +7 +5

发表回复

评论列表(13)

rivrz 数字探长 2018-6-9 17:02:35
感谢楼主分享教程!我去下一份软件,试着跟着走一趟
2018-6-9 17:02:35 回复
rivrz 数字探长 2018-6-9 19:04:21
本帖最后由 rivrz 于 2018-6-9 19:25 编辑

1.jpg


我这是不是弄得不太对?下载楼主的附件,按文中的步骤,最后生成了hex文件,加载到proteus后,点运行,为什么虚拟的LCD里不显示文字信息呢。
2018-6-9 19:04:21 回复
光速飞行 数字大神 2018-6-9 19:27:51
rivrz 发表于 2018-6-9 19:04
我这是不是不太对?下载楼主的附件,按文中的步骤,最后生成的hex文件加载后,点运行,为什么虚拟的LCD ...

这个版本win7以下,才可以运行,你不是用了win10,运行这些旧版本,很难用的。
2018-6-9 19:27:51 回复
rivrz 数字探长 2018-6-9 19:34:37
光速飞行 发表于 2018-6-9 19:27
这个版本win7以下,才可以运行,你不是用了win10,运行这些旧版本,很难用的。 ...

系统确实是win10,不过keil 和 proteus也都用的最新版, proteus用自己生成的Debug.ubf可以运行,但用keil生成的.hex文件虽然可以加载但运行屏幕没信息,应该说明是 keil生成的hex文件不行对吧?
2018-6-9 19:34:37 回复
光速飞行 数字大神 2018-6-9 19:37:37
rivrz 发表于 2018-6-9 19:34
系统确实是win10,不过keil 和 proteus也都用的最新版, proteus用自己生成的Debug.ubf可以运行,但用kei ...

keil生成的hex,是很好的,主要是proteus。
2018-6-9 19:37:37 回复
wgsd 数字大神 2018-6-9 20:30:56
我也是用的keil3中文版,挺好用。
2018-6-9 20:30:56 回复
atz123 数字王者 2018-6-9 20:52:17
远远的观望,高大上
2018-6-9 20:52:17 回复
rivrz 数字探长 2018-6-9 21:13:05
光速飞行 发表于 2018-6-9 19:37
keil生成的hex,是很好的,主要是proteus。

2.jpg


刚刚我把所有生成的文件都删除,重建了个工程,重新换了个目录,完整弄了一遍,竟然成功运行了,好奇怪,不知道开始哪不对
2018-6-9 21:13:05 回复
光速飞行 数字大神 2018-6-9 21:30:36
rivrz 发表于 2018-6-9 21:13
刚刚我把所有生成的文件都删除,重建了个工程,重新换了个目录,完整弄了一遍,竟然成功运行了,好奇怪 ...

这有什么什奇怪,系统本身我们都不太了解。
2018-6-9 21:30:36 回复
rivrz 数字探长 2018-6-9 21:44:38
光速飞行 发表于 2018-6-9 21:30
这有什么什奇怪,系统本身我们都不太了解。

奥,
2018-6-9 21:44:38 回复
wywa123 楼主     数字小子 2018-6-9 23:42:05

good luck~

其实,hex仿真不成功,也有方法去找原因。
hex是Intel的一个格式,可以解析为bin,参考:
https://en.wikipedia.org/wiki/Intel_HEX

然后查询 51 指令集的opcode,可以把opcode 解析为 asm,参考:
http://www.keil.com/support/man/docs/is51/is51_opcodes.htm

然后阅读asm代码,分析具体问题。
2018-6-9 23:42:05 回复
rivrz 数字探长 2018-6-10 00:02:14
wywa123 发表于 2018-6-9 23:42
good luck~

其实,hex仿真不成功,也有方法去找原因。

多谢讲解!
不过刚才的问题好像不在hex文件上,一开始不行,后来也没改动什么,就是重新建了工程,重新生成hex,再加载就好了,不是楼主有没有遇到过类似情况
2018-6-10 00:02:14 回复
喜欢就好 数字精灵 2020-10-10 18:01:32
学习学习,谢谢分享!
2020-10-10 18:01:32 回复