单片机实验2

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

《微机原理与应用》实验报告

姓名:侯伟

学号:2015012214

年级:2015级

专业:电气工程及其自动化

2017年秋季学期

实验一 LCM控制实验1、功能要求

1、掌握利用单片机控制字符型LCM1602的方法;

2、完成与LCM1602的接口,并尝试各种显示功能。

2、硬件原理

3、软件程序流程

4、程序清单

#include "reg52.h"

#define uchar unsigned char

#define uint unsigned int

uint q;

uchar str1[]="wu li xue yuan"; uchar str2[]="houwei2015012214";

sbit E=P2^2;

sbit RW=P2^1 ;

sbit RS=P2^0;

void delay(uint z)

{ uint x,y;

for(x=z;x>0;x--)

for(y=100;y>0;y--) ;

}

void write_com(uchar com) {

RS=0;

RW=1;

H1:

P0=0xff;

E=1;

q=P0;

E=0;

if(q&0x80)

goto H1 ;

RS=0;

RW=0;

P0=com;

E=1;

delay(5);

E=0;

}

void write_data(uchar DATE) {

RS=0;

RW=1;

H2:

P0=0xff;

E=1;

q=P0;

E=0;

if(q&0x80)

goto H2 ;

RS=1;

RW=0;

P0=DATE;

delay(5);

E=1;

delay(5);

E=0;

}

void init() {

E=0;

write_com(0x38);

write_com(0x0c);

write_com(0x06);

write_com(0x01);

write_com(0x80);

}

void main()

{

uchar i;

init();

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

{

write_data(str1[i]);

delay(100);

}

write_com(0x80+0x40);

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

{

write_data(str2[i]);

delay(100);

}

while(1)

{

delay(200);

write_com(0x0f);

write_com(0x1e);

}

}

5、实验心得及建议

C语言编写函数不同于汇编语言,函数嵌套使得程序变得精炼,此外一定要读懂每个器件的硬件设计,做到软硬件结合

实验二基于I2C总线的EEPROM读写实验1、功能要求

1熟悉24C02的芯片功能。

2掌握采用单片机和I2C芯片的硬件接口技术。

3掌握24C02的读写程序的设计和调试方法。

4向芯片中写入10个字节,然后再读出显示。

2、硬件原理

3、软件程序流程

总流程:

写n个字节流程:

读n个字节流程:

4、程序清单

#include "reg52.h"

#define WriteDeviceAddress 0xa0 #define ReadDeviceAddress 0xa1

sbit SCL=P1^0;

sbit SDA=P1^1; void Delay(unsigned int n) {

while(n!=0)

n--;

}

void Start()

{

SDA=1;

Delay(10);

SCL=1;

Delay(10);

SDA=0;

Delay(10);

SCL=0;

Delay(10);

}

void Stop()

{

SDA=0;

Delay(10);

SCL=1;

Delay(10);

SDA=1;

Delay(10);

}

void Ack()

{

int i;

SCL=1;

Delay(10);

while(SDA==1&&i<100)

i++;

SCL=0;

Delay(10);

}

void NoAck()

{

SDA=1;

Delay(10);

SCL=1;

Delay(10);

SCL=0;

Delay(10);

}

void Write8bit(unsigned char input) {

unsigned char temp;

for(temp=8;temp!=0;temp--)

{

SDA=(bit)(input&0x80);

Delay(10);

SCL=1;

Delay(10);

SCL=0;

input=input<<1;

}

}

void WriteI2C(unsigned char Wdata ,unsigned char RomAddress ) {

Start();

Write8bit(WriteDeviceAddress); Ack();

Write8bit(RomAddress);

Ack();

Write8bit(Wdata);

Ack();

Stop();

}

int Read8bit()

{

unsigned char temp,rbyte=0;

for(temp=8;temp!=0;temp--)

{

SCL=1;

Delay(10);

rbyte=rbyte<<1;

Delay(10);

rbyte=rbyte|SDA;

SCL=0;

Delay(10);

}

return(rbyte);

}

相关文档
最新文档