基于protuse的单片机模拟的实例

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

本人对单片机的一些了解,在这里和大家分享。

(1)基于AT89C52的同步串口通信

①单片机1程序

(程序在Kile C51上运行通过。)

/******************************************************************** * 文件名:液晶1602显示.c

* 描述: 该程序实现了对液晶1602的控制。

* 创建人:东流,2009年4月10日

* 版本号:2.0

***********************************************************************/ #include

#define uchar unsigned char

#define uint unsigned int

//这三个引脚参考资料

sbit E=P3^5; //1602使能引脚

sbit RW=P3^6; //1602读写引脚

sbit RS=P3^7; //1602数据/命令选择引脚

sbit aaa=P1^0;

sbit bbb=P1^1;

sbit aa=P3^0;

sbit bb=P3^1;

/******************************************************************** * 名称: delay()

* 功能: 延时,延时时间大概为140US。

* 输入: 无

* 输出: 无

***********************************************************************/

void delay()

{

int i,j;

for(i=0; i<=100; i++)

for(j=0; j<=20; j++)

;

}

/********************************************************************

* 名称: enable(uchar del)

* 功能: 1602命令函数

* 输入: 输入的命令值

* 输出: 无

***********************************************************************/

void enable(uchar del)

{

P2 = del;

RS = 0;

RW = 0;

E = 0;

delay();

E = 1;

delay();

}

/********************************************************************

* 名称: write(uchar del)

* 功能: 1602写数据函数

* 输入: 需要写入1602的数据

* 输出: 无

***********************************************************************/

void write(uchar del)

{

P2 = del;

RS = 1;

RW = 0;

E = 0;

delay();

E = 1;

delay();

/********************************************************************

* 名称: L1602_init()

* 功能: 1602初始化,请参考1602的资料

* 输入: 无

* 输出: 无

***********************************************************************/ void L1602_init(void)

{

enable(0x01);

enable(0x38);

enable(0x0c);

enable(0x06);

enable(0xd0);

}

/********************************************************************

* 名称: L1602_char(uchar hang,uchar lie,char sign)

* 功能: 改变液晶中某位的值,如果要让第一行,第五个字符显示"b" ,调用该函数如下

L1602_char(1,5,'b')

* 输入: 行,列,需要输入1602的数据

* 输出: 无

***********************************************************************/ void L1602_char(uchar hang,uchar lie,char sign)

{

uchar a;

if(hang == 1) a = 0x80;

if(hang == 2) a = 0xc0;

a = a + lie - 1;

enable(a);

write(sign);

}

/********************************************************************

* 名称: L1602_string(uchar hang,uchar lie,uchar *p)

* 功能: 改变液晶中某位的值,如果要让第一行,第五个字符开始显示"ab cd ef" ,调用该函数如下

L1602_string(1,5,"ab cd ef;")

* 输入: 行,列,需要输入1602的数据

* 输出: 无

***********************************************************************/ void L1602_string(uchar hang,uchar lie,uchar *p)

相关文档
最新文档