人人范文网 范文大全

单片机实验报告

发布时间:2020-03-02 11:18:42 来源:范文大全 收藏本文 下载本文 手机版

目录

第一章单片机简介....................................................2 第二章

实验要求..................................................3 第三章实验设备......................................................3 第四章实验安排......................................................4 第五章实验内容......................................................4

LED灯实验.......................................................4 步进马达试验 ....................................................5 独立按键控制LED实验 ............................................7 矩阵键盘实验 ....................................................9 静态数码管实验 .................................................12 动态数码管实验 .................................................14 NE555脉冲发生器实验(定时/计数器).............................16 RS232串口通信实验(接收与发送)..................................21 第六章收获体会.....................................................25

单片机实验报告

第一章单片机简介

单片机也被称为微控制器(Microcontroller),是因为它最早被用在工业控制领域。单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。单片机是靠程序运行的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板!但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性!

单片机诞生于20世纪70年代末,经历了SCM、MCU、SoC三大阶段。

1.SCM即单片微型计算机(Single Chip Microcomputer)阶段,主要是寻求最佳的单片形态嵌入式系统的最佳体系结构。“创新模式”获得成功,奠定了SCM与通用计算机完全不同的发展道路。在开创嵌入式系统独立发展道路上,Intel公司功不可没。

2.MCU即微控制器(Micro Controller Unit)阶段,主要的技术发展方向是:不断扩展满足嵌入式应用时,对象系统要求的各种外围电路与接口电路,突显其对象的智能化控制能力。它所涉及的领域都与对象系统相关,因此,发展MCU的重任不可避免地落在电气、电子技术厂家。从这一角度来看,Intel逐渐淡出MCU的发展也有其客观因素。在发展MCU方面,最著名的厂家当数Philips公司。

Philips公司以其在嵌入式应用方面的巨大优势,将MCS-51从单片微型计算机迅速发展到微控制器。因此,当我们回顾嵌入式系统发展道路时,不要忘记Intel和Philips的历史功绩。

3.单片机是嵌入式系统的独立发展之路,向MCU阶段发展的重要因素,就是寻求

2

单片机实验报告

应用系统在芯片上的最大化解决;因此,专用单片机的发展自然形成了SoC化趋势。随着微电子技术、IC设计、EDA工具的发展,基于SoC的单片机应用系统设计会有较大的发展。因此,对单片机的理解可以从单片微型计算机、单片微控制器延伸到单片应用系统。

MCS51系列微控制器应用广泛,在家电、汽车甚至航空等领域都有其活跃的身影。然而,普通51系列微控制器内部资源有限,像我用Proteus构建微控制器虚拟实验室选用的AT89C52只有三个定时器、一个全双工的串行口和中断控制,并且其数据处理能力有限,不适合对大量数据进行复杂分析和运算。

因此,在不重新选型(可选用SoC)的前提下,为实现我们所需要的功能,就需要进行外围扩展。针对微控制器的特点,我们首先考虑串行扩展,因为微控制器的I/O引脚有限,并行扩展一则外围芯片面积比较大,二则对抑制EMI不利。

第二章 实验要求

1.学习Keil C51集成开发工具的操作及调试程序的方法,包括:仿真调试与脱机运行间的切换方法

2.熟悉TD-51单片机系统板及实验系统的结构及使用

3.进行MCS51单片机指令系统软件编程设计与硬件接口功能设

4. 学习并掌握Keil C51软件联机进行单片机接口电路的设计与编程调试

5.完成指定MCS51单片机综合设计题

第三章实验设备

1.HC600S-51单片机开发板 2.Keil C51 3.普中自动下载软件

第四章 实验安排

1.LED灯实验

3

单片机实验报告

2.步进马达试验

3.独立按键控制LED实验 4.矩阵键盘实验 5.静态数码管实验 6.动态数码管实验

7.NE555脉冲发生器实验(定时/计数器) 8.RS232串口通信实验(接收与发送)

第五章 实验内容

一、LED灯实验

1.基本要求

利用位移循环指令实现LED灯的闪烁 2.实验内容

在Keil C51中进行程序的编写设计并生成.HEX文件,按照下图连接电路后将HC600S-51单片机开发板接通电源,按下开关,录入。打开普中录入生成.HEX文件,加载程序,观察实验结果,如果不正确对程序进行改进后重复此操作。实验结束后先断电源再拆线,将元器件归位后离开。 3.接线图

4.电路原理图

4

单片机实验报告

5.程序

#include #define uint unsigned int void d (uint x) {uint n; for (;x>0;x--) {for(n=0;n

main () {unsigned int i; while (1)

{for (i=0,P0=1;i

二、步进马达试验

1.基本要求

编程实现马达的正反转,调速等功能 2.实验内容

在Keil C51中进行程序的编写设计并生成.HEX文件,按照下图连接电路后将HC600S-51单片机开发板接通电源,按下开关,录入。打开普中录入生成.HEX文件,加载程序,观察实验结果,如果不正确对程序进行改进后重复此操作。实验结束后先断电源再拆线,将元器件归位后离开。 3.接线图(图一)

5

单片机实验报告

图一 图二

4.电路原理图

上图图二 5.程序

#include \"reg52.h\" #define speed 2 sbit PH1 = P1^0;

//定义管脚 sbit PH2 = P1^1; sbit I01 = P1^2; sbit I11 = P1^3; sbit I02 = P1^4; sbit I12 = P1^5;

void delay(int time);

void Go() { //A

PH1 = 0; //PH1为0 则A线圈为反向电流

I01 = 0; I11 = 0;

//以最大电流输出

PH2 = 0; //PH2为0 则B线圈为反向电流

I02 = 1; I12 = 1;

//输出0 delay(speed); //圈为反向电流

I01 = 1; //输出0 I11 = 1;

PH2 = 1; //PH2为1 则B线圈为正向电流

I02 = 0; //以最大电流输出

I12 = 0;

delay(speed); //B PH1 = 1;

//PH1为1 则A线圈为

正向电流

I01 = 0;

//以最大电流输出

I11 = 0;

PH2 = 1; //PH2为1 则B线圈为正

向电流

I02 = 1; //输出0 I12 = 1;

delay(speed);

PH1 = 1;

//PH1为1 则A线圈为正向电流

I01 = 1; I11 = 1;

PH2 = 0;

//PH2为0 则B线圈为反向电流

I02 = 0; I12 = 0; delay(speed); }

void delay(int time) {

int i,j;

for(j=0; j

for(i =0 ; i

void main() {

while(1)

{

Go(); //步进电机运行

} }

单片机实验报告

三、独立按键控制LED实验

1.基本要求

通过编程控制8个独立按键分别控制8个LED灯的开关 2.实验内容

在Keil C51中进行程序的编写设计并生成.HEX文件,按照下图连接电路后将HC600S-51单片机开发板接通电源,按下开关,录入。打开普中录入生成.HEX文件,加载程序,观察实验结果,如果不正确对程序进行改进后重复此操作。实验结束后先断电源再拆线,将元器件归位后离开。 3.接线图(图一)

图一 图二

4.电路原理图 上图图二 5.程序

#include #include #define GPIO_KEY P1 //独立键盘用

P1口

#define uchar unsigned char #define uint unsigned int

void Delayms(unsigned int c);

//延时10ms uchar Key_Scan(); void main(void) {

7

unsigned char ledValue, keyNum;

ledValue = 0x01;

while (1)

{

keyNum = Key_Scan(); //扫描键

switch (keyNum)

{

case(0xFE) :

//返回按

键K1的数据

ledValue = 0x01;

break;

单片机实验报告

case(0xFD) :

ledValue = 0x02;

break; case(0xFB) :

ledValue = 0x04;

break; case(0xF7) :

ledValue = 0x08;

break; case(0xEF) :

ledValue = 0x10;

break; case(0xDF) :

ledValue = 0x20;

break; case(0xBF) :

ledValue = 0x40;

break; case(0x7F) :

ledValue = 0x80;

//返回按键K2的数据

//返回按键K3的数据

//返回按键K4的数据

//返回按键K5的数据

//返回按键K6的数据

//返回按键K7的数据

//返回按键K8的数据

break; default:

break;

}

GPIO_LED = ledValue;//点亮LED灯

}

}

uchar Key_Scan(void) //键盘扫描函数 { uchar i,n=0xff;

if(P1==0xff) goto Scan_r; //无键按

下,返回

goto Scan_r; Scan_1:

while(P1!=0xff); //等待键释放

Delayms(10); Scan_r:

return n; }

void Delayms(uint x) {

uint n;

for( ;x>0;x--)

{

for(n=0;n

{;}

} }

四、矩阵键盘实验

1.基本要求

编程由16个矩阵按键控制数码管显示相应的数值 2.实验内容

在Keil C51中进行程序的编写设计并生成.HEX文件,按照下图连接电路后将HC600S-51单片机开发板接通电源,按下开关,录入。打开普中录入生成.HEX文件,加载程序,观察实验结果,如果不正确对程序进行改进后重复此操作。实验结束后先断电源再拆线,将元器件归位后离开。

3.接线图

8

单片机实验报告

见下图图一

图一 图二

4.电路原理图

见上图图二 5.程序

#include #define uchar unsigned char #define uint unsigned int #define uint unsigned int #define GPIO_LED P0

uchar ScanKey(void); void Delayms (uint x); main( ) { unsigned char ledValue; uchar i; ledValue = 0x01; loop: i = ScanKey();

switch(i)

{ case 0xee:

ledValue = ~0x3F;

9

break;

case 0xde:

ledValue = ~0x06;

break;

case 0xbe:

ledValue = ~0x5B;

break;

case 0x7e:

ledValue = ~0x4F;

break;

case 0xed:

ledValue = ~0x66;

break;

case 0xdd:

ledValue = ~0x6D;

break;

单片机实验报告

case 0xbd:

ledValue = ~0x7D;

break;

case 0x7d:

ledValue = ~0x07;

break;

case 0xeb:

ledValue = ~0x7F;

break;

case 0xdb:

ledValue = ~0x6F;

break;

case 0xbb:

ledValue = ~0x77;

break;

case 0x7b:

ledValue = ~0x7C;

break;

case 0xe7:

ledValue = ~0x39;

break;

case 0xd7:

ledValue = ~0x5E;

break;

case 0xb7:

ledValue = ~0x79;

break;

case 0x77:

ledValue = ~0x71;

break;

}

GPIO_LED = ledValue; i=0; goto loop; }

void Delayms (uint x) {uint n; for( ;x > 0; x--)

{ for(n=0;n

{ ; }

} }

uchar ScanKey(void) //键盘扫描函数 { uchar i,n=0xff;

P1=0xf0;

if(P1==0xf0) goto Scan_r; //无键按下,返回

for(i=0,P1=0xfe;i

{ if((P1&0xf0)!=0xf0)

{ Delayms(10);

if((P1&0xf0)!=0xf0)

{ n=

P1;

goto

Scan_1; }

}

P1=(P1

//扫描下

一行

} goto Scan_r; Scan_1:

单片机实验报告

P1=0xf0; while((P1&0xf0)!=0xf0); //等待键

释放

Delayms(10);

Scan_r:

P1=0xff; return n; } }

五、静态数码管实验

1.基本要求

编程使数码管显示字符0-F 2.实验内容

在Keil C51中进行程序的编写设计并生成.HEX文件,按照下图连接电路后将HC600S-51单片机开发板接通电源,按下开关,录入。打开普中录入生成.HEX文件,加载程序,观察实验结果,如果不正确对程序进行改进后重复此操作。实验结束后先断电源再拆线,将元器件归位后离开。 3.接线框图(图一)

图一

11

单片机实验报告

图二

4.电路原理图

见上图图二 5.程序

#include #define uchar unsigned char #define uint unsigned int void Delayms (uint x); uchar code LED7Code[]=

{~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D, ~0x7D,~0x07,~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5E,~0x79,~0x71}; main() {

unsigned int LedNumVal ; //定义变量 while(1)

{

// 将字模送到P0口显示

LedNumVal++;

P0 = LED7Code[LedNumVal%16];

Delayms(1000);

//调用延时程序

}

}

12

单片机实验报告

void Delayms (uint x) {uint n; for( ;x > 0; x--)

{ for(n=0;n

{ ; }

} }

六、动态数码管实验

1.基本要求

编程实现8个数码管的动态扫描。通过P

22、P

23、P24控制3-8译码器来对数码管进行位选,通过P0口经过573的驱动控制数码管的段选,通过P13控制573的使能端,为低电平时573才会有输出。 2.实验内容

在Keil C51中进行程序的编写设计并生成.HEX文件,按照下图连电路后将HC600S-51单片机开发板接通电源,按下开关,录入。打开普中录入生成.HEX文件,加载程序,观察实验结果,如果不正确对程序进行改进后重复此操作。实验结束后先断电源再拆线,将元器件归位后离开。 3.接线图(图一)

图一 图二

13

单片机实验报告

图三

4.电路原理图

见上图图

二、图三 5.程序

#define uint unsigned int void Dsplay(); void Delayms (uint x); uchar mDS[6]; uchar code cDsCode[]=

{0xC0,0xF9,0xA4,0xB0,0x99,

0x92,0x82,0xf8,0x80,0x90};

void main() { uchar i;

for(i=0;i

loop:

Dsplay();

goto loop; }

void Dsplay() //动态扫描显示

14

{uchar i;

for(i=0,P2=0x01;i

{ P1=cDsCode[mDS[i]];//输出段

Delayms(1000);

P2=P2

//选通下一位

}

P2=0x00;

//关闭位选通 }

void Delayms (uint x) {uint n; for( ;x > 0; x--)

{ for(n=0;n

{ ; }

} }

七、NE555脉冲发生器实验(定时/计数器)

1.基本要求

2.实验内容

在Keil C51中进行程序的编写设计并生成.HEX文件,按照下图连接电路后将HC600S-51单片机开发板接通电源,按下开关,录入。打开普中录入生成.HEX文件,加载程序,观察实验结果,如果不正确对程序进行改进后重复此操作。实验结束后先断电源再拆线,将元器件归位后离开。 3.接线图

4.电路原理图

5.程序

#include #include\"lcd.h\" #define uchar unsigned char #define uint unsigned int #define ulong unsigned long uchar code EN_CHAR1[16]={\"

CYMOMETER

\"}; uchar code EN_CHAR2[16]={\"FREQ:

HZ\"};

单片机实验报告

void TIMER_Configuration(); //初始化定时器 ulong Freq;

//用来存放要显示的频率值 ulong TimeCount; //用于计算1S钟的

void main() { uchar i, freqValue[6];

LcdInit(); TIMER_Configuration(); for(i=0;i

LcdWriteData(EN_CHAR1[i]); }

LcdWriteCom(0xc0);//第二行显示

for(i=0;i

LcdWriteData(EN_CHAR2[i]); }

while(1) {

if(TR0==0)

//当计数器停下的时候,表明计数完毕

{

Freq = Freq + TL1;

//读取TL的值

Freq = Freq + (TH1 * 256); //读取TH的值

LcdWriteCom(0xc8);

//--求频率的个十百千万十万位--//

freqValue[0]=\'0\'+Freq%1000000/100000;

freqValue[1]=\'0\'+Freq%100000/10000;

freqValue[2]=\'0\'+Freq%10000/1000;

freqValue[3]=\'0\'+Freq%1000/100;

freqValue[4]=\'0\'+Freq%100/10;

freqValue[5]=\'0\'+Freq%10;

for(i=0;i

{

if(freqValue[i]==0x30)

{

freqValue[i]=0x20; //若为0则赋值空格键

}

else

16

单片机实验报告

{

break;

}

}

for(i=0;i

{

LcdWriteData(freqValue[i]);

}

Freq=0;//将计算的频率清零

TH1=0; //将计数器的值清零

TL1=0;

TR0=1; //开启定时器

TR1=1; //开启计数器

} } }

void TIMER_Configuration() { TMOD=0x51; TH0=0x3C; TL0=0xB0; ET0=1; ET1=1; EA=1; TR0=1; TR1=1; } void Timer0() interrupt 1 { TimeCount++; if(TimeCount==20)//计时到1S {

TR0=0;

TR1=0;

TimeCount=0;

}

//--12MHZ设置定时50ms的初值--// TH0=0x3C; TL0=0xB0; } void Timer1() interrupt 3 {

17

单片机实验报告

//--进入一次中断,表明计数到了65536--// Freq=Freq+65536;

}

#include\"lcd.h\"

void Lcd1602_Delay1ms(uint c)

//误差 0us {

uchar a,b; for (; c>0; c--) {

for (b=199;b>0;b--)

{

for(a=1;a>0;a--);

}

}

} #ifndef LCD1602_4PINS //当没有定义这个LCD1602_4PINS时 void LcdWriteCom(uchar com)

//写入命令 { LCD1602_E = 0;

//使能

LCD1602_RS = 0;

//选择发送命令

LCD1602_RW = 0;

//选择写入

LCD1602_DATAPINS = com;

//放入命令

Lcd1602_Delay1ms(1); //等待数据稳定

LCD1602_E = 1;

//写入时序

Lcd1602_Delay1ms(5);

//保持时间

LCD1602_E = 0; } #else

void LcdWriteCom(uchar com)

//写入命令 { LCD1602_E = 0; //使能清零

LCD1602_RS = 0; //选择写入命令

LCD1602_RW = 0; //选择写入

LCD1602_DATAPINS = com; // Lcd1602_Delay1ms(1); LCD1602_E = 1; //写入时序

Lcd1602_Delay1ms(5); LCD1602_E = 0; Lcd1602_Delay1ms(1);

18

单片机实验报告

LCD1602_DATAPINS = com

Lcd1602_Delay1ms(1);

LCD1602_E = 1; //写入时序

Lcd1602_Delay1ms(5); LCD1602_E = 0; } #endif #ifndef LCD1602_4PINS

void LcdWriteData(uchar dat)

//写入数据 { LCD1602_E = 0; //使能清零

LCD1602_RS = 1; //选择输入数据

LCD1602_RW = 0; //选择写入

LCD1602_DATAPINS = dat; //写入数据

Lcd1602_Delay1ms(1);

LCD1602_E = 1;

//写入时序

Lcd1602_Delay1ms(5);

//保持时间

LCD1602_E = 0; } #else void LcdWriteData(uchar dat)

//写入数据 { LCD1602_E = 0; //使能清零

LCD1602_RS = 1;

//选择写入数据

LCD1602_RW = 0;

//选择写入

LCD1602_DATAPINS = dat;

Lcd1602_Delay1ms(1); LCD1602_E = 1; //写入时序

Lcd1602_Delay1ms(5); LCD1602_E = 0; LCD1602_DATAPINS = dat

Lcd1602_Delay1ms(1); LCD1602_E = 1; //写入时序

Lcd1602_Delay1ms(5); LCD1602_E = 0; } #endif #ifndef LCD1602_4PINS void LcdInit()

//LCD初始化子程序 { LcdWriteCom(0x38); //开显示

19

单片机实验报告

LcdWriteCom(0x0c); //开显示不显示光标

LcdWriteCom(0x06); //写一个指针加1 LcdWriteCom(0x01); //清屏

LcdWriteCom(0x80); //设置数据指针起点 } #else void LcdInit()

//LCD初始化子程序 { LcdWriteCom(0x32); //将8位总线转为4位总线

LcdWriteCom(0x28); //在四位线下的初始化

LcdWriteCom(0x0c); //开显示不显示光标

LcdWriteCom(0x06); //写一个指针加1 LcdWriteCom(0x01); //清屏

LcdWriteCom(0x80); //设置数据指针起点 } #endif

八、RS232串口通信实验(接收与发送)

1.基本要求

a.通过实验了解串口的基本原理及使用,理解并掌握对串口进行初始化; b.使用串口调试助手(Baud 9600、数据位

8、停止位

1、效验位无)做为上位机来做收发试验;

c.利用串口调试助手中字符串输入进行数据发送,接受窗口显示收到的数据。 2.实验内容

在Keil C51中进行程序的编写设计并生成.HEX文件,按照下图连接电路后将HC600S-51单片机开发板接通电源,按下开关,录入。打开普中录入生成.HEX文件,加载程序,观察实验结果,如果不正确对程序进行改进后重复此操作。实验结束后先断电源再拆线,将元器件归位后离开。 3.接线图

20

单片机实验报告

4.电路原理图

5.程序

#include #include\"lcd.h\" unsigned char ChCode[14] = \"Received data:\"; void UsartConfiguration(); void main() { unsigned char i, receiveData; LcdInit(); for(i=0; i

LcdWriteData(ChCode[i]); } UsartConfiguration(); while(1) {

if(RI == 1)

//查看是否接收到数据

{

receiveData = SBUF; //读取数据

21

单片机实验报告

RI = 0;

//清除标志位

LcdWriteCom(0xC0);

LcdWriteData(\'0\' + (receiveData / 100));

// 百位

LcdWriteData(\'0\' + (receiveData % 100 / 10)); // 十位

LcdWriteData(\'0\' + (receiveData % 10));

// 个位

} } } void UsartConfiguration() { SCON=0X50;

//设置为工作方式1 TMOD=0X20; //设置计数器工作方式2 PCON=0X80;

//波特率加倍

TH1=0XF3;

//计数器初始值设置,注意波特率是4800的

TL1=0XF3; TR1=1;

//打开计数器 }

#include\"lcd.h\"

void Lcd1602_Delay1ms(uint c)

//误差 0us {

uchar a,b; for (; c>0; c--) {

for (b=199;b>0;b--)

{

for(a=1;a>0;a--);

}

}

} #ifndef LCD1602_4PINS //当没有定义这个LCD1602_4PINS时 void LcdWriteCom(uchar com)

//写入命令 { LCD1602_E = 0;

//使能

LCD1602_RS = 0;

//选择发送命令

LCD1602_RW = 0;

//选择写入

LCD1602_DATAPINS = com;

//放入命令

Lcd1602_Delay1ms(1); //等待数据稳定

LCD1602_E = 1;

//写入时序

22

单片机实验报告

Lcd1602_Delay1ms(5);

//保持时间

LCD1602_E = 0; } #else

void LcdWriteCom(uchar com)

//写入命令 { LCD1602_E = 0; //使能清零

LCD1602_RS = 0; //选择写入命令

LCD1602_RW = 0; //选择写入

LCD1602_DATAPINS = com; Lcd1602_Delay1ms(1); LCD1602_E = 1; //写入时序

Lcd1602_Delay1ms(5); LCD1602_E = 0; Lcd1602_Delay1ms(1); LCD1602_DATAPINS = com

Lcd1602_Delay1ms(1); LCD1602_E = 1; //写入时序

Lcd1602_Delay1ms(5); LCD1602_E = 0; } #endif

#ifndef LCD1602_4PINS

void LcdWriteData(uchar dat)

//写入数据 { LCD1602_E = 0; //使能清零

LCD1602_RS = 1; //选择输入数据

LCD1602_RW = 0; //选择写入

LCD1602_DATAPINS = dat; //写入数据

Lcd1602_Delay1ms(1); LCD1602_E = 1;

//写入时序

Lcd1602_Delay1ms(5);

//保持时间

LCD1602_E = 0; } #else void LcdWriteData(uchar dat)

//写入数据 { LCD1602_E = 0;

//使能清零

LCD1602_RS = 1;

//选择写入数据

LCD1602_RW = 0; //选择写入

LCD1602_DATAPINS = dat;

Lcd1602_Delay1ms(1); LCD1602_E = 1;

//写入时序

Lcd1602_Delay1ms(5);

23

单片机实验报告

LCD1602_E = 0; LCD1602_DATAPINS = dat

Lcd1602_Delay1ms(1); LCD1602_E = 1;

//写入时序

Lcd1602_Delay1ms(5); LCD1602_E = 0; } #endif

#ifndef LCD1602_4PINS void LcdInit()

//LCD初始化子程序 { LcdWriteCom(0x38); //开显示

LcdWriteCom(0x0c); //开显示不显示光标

LcdWriteCom(0x06); //写一个指针加1 LcdWriteCom(0x01); //清屏

LcdWriteCom(0x80); //设置数据指针起点 } #else void LcdInit()

//LCD初始化子程序 { LcdWriteCom(0x32); //将8位总线转为4位总线

LcdWriteCom(0x28); //在四位线下的初始化

LcdWriteCom(0x0c); //开显示不显示光标

LcdWriteCom(0x06); //写一个指针加1 LcdWriteCom(0x01); //清屏

LcdWriteCom(0x80); //设置数据指针起点 } #endif

24

单片机实验报告

第六章 收获体会

本次微控制器综合设计基本上使用了所选微控制器的所有资源,进一步熟悉和加深了对中断、定时器和串行通信的理解和使用。我觉得软件实验就是让我们初学者熟悉keil的使用,然后复习下汇编的思想和掌握程序的流程,所以软件实验可以很快的完成,并且慢慢熟悉调试的强大功能。硬件设计中,仿真让我很有感触,感觉蛮好玩的,可以摒弃麻烦的实验硬件自己在寝室玩而且不受硬件状态的限制,即便出错了也不会损坏。当然更重要的是这种好习惯,仿真完后再去在实验板上验证会比直接要来的确切而且便捷,至少不要老是去插拔线。在做实验中在同学指导下我试用C语言来编写程序,确实发现比汇编语言容易编写也容易理解,以前的实验还是有参考资料的习惯,现在什么都开始自己写感觉还是很有成就感的,当然这是基于程序本身就那么几行很容易编写,也不是说参考不好。总而言之,这学期的单片机实验还是收获颇丰的。相信在以后的实验学习实践工作中都会有个潜移默化的作用的。

25

单片机实验报告

单片机实验报告

单片机实验报告

单片机实验报告

单片机实验报告

单片机实验报告

单片机实验报告

单片机实验报告

单片机实验报告

单片机实验报告

单片机实验报告
《单片机实验报告.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档