Proteus 8 画原理图仿真 1602 LCD显示字符

以下是源程序:
#include <reg52.h>
#include<intrins.h> /**
* P2 上接的是 D1 ~ D7
*/
sbit RS = P3 ^ ;//数据 H 命令 L
sbit RW = P3 ^ ;//读 H 写 L
sbit E = P3 ^ ;//高电平 H 使能
#define DATA P2 /**
* 经过逻辑分析仪测量时间
* 单指令是 5us
* nop 0.4ms
* 经过试验发现, 只需要一个单指令执行时间 5us 休眼就可以
* E = 1 后需要等一小段时间, 在手册中并没有说明 -
*/ void delayms(char ms);
char is_busy();
void write_cmd(unsigned char cmd);
void write_data(unsigned char dat);
void pos (unsigned char pos); void main()
{
//初始化 复位 lcd1602
write_cmd(0x38);//设置显示模式 指令码 00111000 => 0x38
delayms();
write_cmd(0x0c);//开显示 不显示光标 不闪烁
delayms();
write_cmd(0x06);//光标设置 写字符后指针加一
delayms();
write_cmd(0x01);//光标清0 指针清0
delayms(); pos ();
write_data('');
write_data('');
write_data('');
write_data('');
write_data('');
write_data('');
write_data('');
write_data('');
write_data('');
write_data(''); pos (0x40); write_data('');
write_data('');
write_data('');
write_data('');
write_data(''); while();
} void pos (unsigned char pos)
{
//设置指针位置 0x80 | 位置
write_cmd(pos|0x80);
} void write_data(unsigned char dat)
{
while(is_busy());
RS = ;
RW = ;
E = ;
//_nop_();
DATA = dat;
_nop_();
E = ;//在E 高向低变化时传输
E = ;
} void write_cmd(unsigned char cmd)
{
while(is_busy());
RS = ;
RW = ;
E = ;
//_nop_();
DATA = cmd;
_nop_();
E = ;//在E 高向低变化时传输
E = ;
} char is_busy()
{
int a=;
char result;
RS = ;//发送的是命令
RW = ;//读
//_nop_();
E = ;//使能
_nop_();
result = (<< & DATA);//7bit 1 忙 0 不忙
E = ;//取消使能
return result;
} void delayms(char ms) //@12.000MHz
{
while(ms--)
{
unsigned char i, j;
i = ;
j = ;
do
{
while (--j);
} while (--i);
}
}
仿真显示少了一个字符, 不知道什么原因。 等真机到了,在试验。
Proteus 8 画原理图仿真 1602 LCD显示字符的更多相关文章
- Arduino基础入门—3.连接 IIC 1602 LCD显示文字
1. IIC转接板介绍 Arduino Uno R3开发板的外部IO口是非常有限的.在驱动LCD1602时,尽管我们的数据线使用了4线,相对于8线方式减少一半,但是在需要外接多种传感器的应用中,4线驱 ...
- mini2440裸试验—计算器(LCD显示,触摸屏突破)
关于Pait_Bmp(x0, y0, x, y, BMPaddr);函数 像素图在屏幕左上角为(0,0),Pait_Bmp中的x0.y0分别像素点初始位置,x,y为BMP图片的X,Y的大小.BMPad ...
- STM32学习之路-LCD(4)<显示字符>
昨晚疯狂的打了一夜的LOL,感觉L多了,今天一天精神萎靡.还是继续把显示字符给看了,可是在犹豫要不要写这篇文章 事实上写的东西也就是copy别人家的代码,不想写那么多,就记录下自己困惑的地方吧.也许改 ...
- FPGA驱动LCD显示红绿蓝彩条
实验目的:先简单熟悉LCD灯的驱动和时序图的代码实现.设计功能是让LCD显示红绿蓝三种颜色,即三个彩带.本次实验比较容易实现,主要是对LCD驱动时序图的理解和时序参数的配置. 实验条件:1.LCD原理 ...
- LCD显示方向
一.ILI9341内存到显示地址的映射 本文只讨论“正常显示”,不讨论“垂直滚动显示”模式. 可以看到物理内存被两个指针访问,行指针和列指针,行指针范围从000h到013Fh,列指针范围为0000h到 ...
- Raspberry PI Model B+ (LCD显示CPU温度)
Title:Raspberry PI Model B+ (LCD显示CPU温度) --2015-01-29 17:44 买了块连接Raspberry PI Model B+的LCD显示器,上面没写C ...
- LCD显示GPS时钟[嵌入式系统]
夏任务102:做一个GPS钟 实验要求 用RPi的串口连接一个GPS模块,从GPS得到实时时间,在7段数码管或LCD上显示 实验工具: Raspberry Pi Model B主机, 8G c10 S ...
- 2.数码相框-编码(ASCII/GB2312/Unicode)介绍,并使LCD显示汉字字符(2)
在上章-学习了数码相框的框架分析(1)了 本章主要内容如下: 1)熟悉ASCII/GB2312/Unicode编码 2)写应用程序,使LCD显示汉字和字符 大家都知道,数据传输的是二进制,而字符和汉字 ...
- LCD显示异常分析——撕裂(tear effect)【转】
转自:LCD显示异常分析--撕裂(tear effect) 概述 在上一篇<LCD显示异常分析--开机闪现花屏>中,我们一起分析了开机花屏的问题,在这一篇中,我将对LCD撕裂(tear e ...
随机推荐
- Deep Copy cv::StereoBM 深度拷贝
在使用OpenCV的三维立体重建的库时,一个重要的步骤就是生成左右视图的差异图Disparity,而控制生成disparity的参数的类是cv::StereoBM,我们有时候需要拷贝一份cv::Ste ...
- [转]CPU的位数与操作系统的位数的区别
转自:http://weiheyouchou.blog.hexun.com/35564976_d.html 随着近来AMD和Intel的64位CPU以及 Microsoft 64位操作系统的相继发布, ...
- jquery的validate.js 和 form.js 的使用方法
在使用 Jquery 的方法的验证并且修改 原Form 表单的提交方式的时候,需要引用的文件有 <script type="text/javascript" src=&quo ...
- Struts和SpringMVC两种MVC框架比较
基于Web的MVC framework在J2EE的世界内已是空前繁荣.TTS网站上几乎每隔一两个星期就会有新的MVC框架发布.目前比较好的MVC,老牌的有Struts.Webwork.新兴的MVC框架 ...
- IntelliJ 有的时候移动滚动条后会自动回到光标所在位置的解决方法
关闭有道词典的取词.划词功能.
- c++ basic 整理1
//c++类 初始化 与 初始赋值 //C++规定 对象的 成员变量 初始化 动作发生 在进入 构造函数本体 之前 . 在构造函数内 成员变量赋值都属于 赋值 . class People { pub ...
- iOS -- AVAudioPlayer播放音乐
一. AVAudioPlayer: 声明音乐控件AVAudioPlayer,必须声明为全局属性变量,否则可能不会播放,AVAudioPlayer只能播 ...
- HashMap实现原理分析
1. HashMap的数据结构 数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端. 数组 数组存储区间是连续的,占用内存严重,故空间复杂的很大.但数组的二分查找时间复杂度小,为O(1 ...
- SPOJ 10628 Count on a tree(Tarjan离线LCA+主席树求树上第K小)
COT - Count on a tree #tree You are given a tree with N nodes.The tree nodes are numbered from 1 to ...
- ios-WKWebView 拨打电话
-(void)webView:(WKWebView* )webView didStartProvisionalNavigation:(WKNavigation* )navigation { NSStr ...