51学习笔记之以总线方式实现1602与8051连接

//以总线方式实现8051与1602的通信
//这个程序主要实现功能是向1602发送一串字符串,并显示出来

#include<reg52.h>
#include<absacc.h>
#define uchar unsigned char
#define uint unsigned int 

#define LCDDDATA XBYTE[0xffff] //读数据地址
#define LCDXDATA XBYTE[0xfdff] //写数据地址
#define LCDDCOM XBYTE[0xfeff]  //读命令
#define LCDXCOM XBYTE[0xfcff]  //写命令
uchar idata s_GOOD[5]={‘W‘,‘D‘,‘J‘,‘X‘,0x00};
uchar idata s_GOOD1[]={‘2‘,‘0‘,‘1‘,‘6‘,‘-‘,‘0‘,‘7‘,‘-‘,‘2‘,‘2‘,0x00};
sbit bflag=ACC^7;
void wait(void)
{
    do{ACC=LCDDCOM;}while(bflag==1);
}
void init_lcd(void)
{

    LCDXCOM=0x38; //设置模式
    wait();
    LCDXCOM=0x0f;  //显示开关及光标设置
    wait();
    LCDXCOM=0x06;   //显示开关及光标设置
    wait();
    LCDXCOM=0x01;    //清屏
    wait();

}
void d_char(uchar a)  //写入数据函数
{
    LCDXDATA=a;
    wait();
}
void display(uchar x ,uchar idata *s)    //显示函数 第一个变量是地址比如 0x80或0x80+0x40 第二个是数据
{

    uchar i=0;
    LCDXCOM=x;
    wait();
    while(s[i]!=0x00)
    {
        d_char(s[i]);
        i++;
    }
}
    void main(void)
    {
        init_lcd();
        display(0x80+0x01,s_GOOD);
        display(0x80+0x40,s_GOOD1);
        while(1);
    }
//转载请注明出处

相关仿真程序地址:

http://pan.baidu.com/s/1bGuyaa

时间: 2024-10-08 18:34:59

51学习笔记之以总线方式实现1602与8051连接的相关文章

EEPROM读写学习笔记与I2C总线(二)

无论任何电子产品都会涉及到数据的产生与数据的保存,这个数据可能并不是用来长久保存,只是在运行程序才会用到,有些数据体量较大对于获取时效性并不太强,各种各样的数据也就有不同的存储载体,这次在EEPROM读写中,顺道把看到的关于存储的一些东西整理一下,有些话来自于网友,所以还是那句话,看到的人要带着自己的思考去看,记住尽信书不如无书,fighting!!! 一.基本概念 最熟悉的两个词语应该是RAM与ROM,RAM(Random Access Memory)的全名为随机存取记忆体,它相当于PC机上的

WCF学习笔记(基于REST规则方式)

一.WCF的定义 WCF是.NET 3.0后开始引入的新技术,意为基于windows平台的通讯服务. 首先在学习WCF之前,我们也知道他其实是加强版的一个面向服务(SOA)的框架技术. 如果熟悉WebService就会知道WebService是基于XML+XSD,SOAP和WSDL三大技术,当然他也是采用HTTP协议的通信,严格来说WebService是一种面向服务开发的标准.而ASP.NET WebService则是微软平台下的服务. WCF其实一定程度上就是ASP.NET Web Servi

SQL学习笔记——临时表不同创建方式的区别

问题:在存储过程中使用临时表时,不Create临时表就会报错. 分析了下,总结了临时表创建方式的区别. 创建临时表有两种方法: 方法一 create  table  #临时表名 ( 字段1 约束条件,      字段2 约束条件,      -- ) create  table  ##临时表名 ( 字段1 约束条件,      字段2 约束条件,      -- ) 方法二 select  *  into  #临时表名  from 你的表;   select  *  into  ##临时表名  

V-rep学习笔记:外部函数调用方式

The remote API functions are interacting with V-REP via socket communication in a way that reduces lag and network load to a great extent. The remote API can let one or several external applications interact with V-REP. A remote API function is calle

51学习笔记之以硬件spi与max6675通信实现K型热电偶测温

硬件:max6675  STC12C5A60S2 K型热电偶 功能:实现读取K型热电偶温度,并通过上位机打印出实际温度 难点:读取Max6675的数据是16位,而STC12系列单片机每次接收的数据为8位,如何通过硬件SPI实现直接读取Max6675的温度成为一难点.网上相关教程以及相关论文均是采用软件SPI模拟时序方式采集数据,故而通过STC12系列单片机自带的硬件SPI实现直接读取Max6675的数据具有实际研究意义. 代码: #include "reg51.h" #include

51学习笔记之关键词data、bdata、idata、pdata、xdata、code的含义

最近用51单片机做个小项目,编写程序时,出现如下错误 MAIN.C(284): error C249: 'PDATA': SEGMENT TOO LARGEMAIN.C(284): error C249: 'DATA': SEGMENT TOO LARGE 当时还不知道怎么回事,后来才发现51单片机的ram比较小,只有128b,所以要省着使用 当你定义数组不用更改时,就用uchar code XX[10]= 根据你数据的用处,你可以有以下几种选择: data:直接寻址的片内RAM区低128B(0

Linux内核学习笔记——内核内存管理方式

一 页 内核把物理页作为内存管理的基本单位:内存管理单元(MMU)把虚拟地址转换为物理 地址,通常以页为单位进行处理.MMU以页大小为单位来管理系统中的也表. 32位系统:页大小4KB 64位系统:页大小8KB 内核用相应的数据结构表示系统中的每个物理页: <linux/mm_types.h> struct page {} 内核通过这样的数据结构管理系统中所有的页,因此内核判断一个页是否空闲,谁有拥有这个页 ,拥有者可能是:用户空间进程.动态分配的内核数据.静态内核代码.页高速缓存…… 系统中

srping-data学习笔记一(传统方式访问数据库实现和弊端分析)

spring-data是一系列项目的集合,涵盖访问关系型.非关系型等各种数据源的子项目 spring data jpa 关系型 spring data mongo db spring data redis spring data solr 全文检索,基于lucene 其他 使用原始JDBC方式操作数据库 1)创建Maven项目 maven工程的目录结构 添加依赖 <dependency> <groupId>mysql</groupId> <artifactId&g

NHibernate3.2学习笔记-几种查询方式

一.开发环境 数据库:SQLServer2008 编译器:VS2010 .Net版本:.Net Framework 4.0 二.开发过程 1.项目结构 承接上一篇 2.执行sql语句 (1)基本语法 static void ExecuteSql() { string str = "select * from T_Product"; ISQLQuery query = session.CreateSQLQuery(str).AddEntity(typeof(Product)); ILis