单片机原理报告.docx
《单片机原理报告.docx》由会员分享,可在线阅读,更多相关《单片机原理报告.docx(14页珍藏版)》请在冰豆网上搜索。
![单片机原理报告.docx](https://file1.bdocx.com/fileroot1/2022-11/25/69522b06-9cb6-479c-be4a-096dd9394d49/69522b06-9cb6-479c-be4a-096dd9394d491.gif)
单片机原理报告
实验报告
(理工类)
课程名称:
单片机原理与应用
课程代码:
8426470
学生所在学院:
应用技术学院
年级/专业/班:
2010级机电一体化
学生姓名:
学号:
4120105802
实验总成绩:
任课教师:
开课学院:
机械工程与自动化学院
西华大学实验报告(理工类)
开课学院及实验室:
应用技术学院计算机中心实验时间:
2011年10月24日
学生姓名
学号
41201058020
成绩
学生所在学院
应用技术学院
年级/专业/班
2010级机电一体化
课程名称
单片机原理与应用
课程代码
8426470
实验项目名称
红黄绿灯控制
项目代码
指导教师
项目学分
1.实验目的
(1)学习Keilc51集成编译软件的使用和调试程序方法;
(2)学习将用户程序下载到应用系统的方法;
(3)掌握STC89C52单片机I/O端口的控制和使用方法。
2.实验设备
单片机实验板、PC机、Keil软件、STC-ISP.EXE程序下载软件。
3.实验内容
利用单片机的P1.1、P1.2、P1.3控制3个LED指示灯,模仿交通控制灯:
红灯亮4秒;黄灯亮2秒;黄灯、绿灯同时亮1秒;绿灯亮4秒,如此循环。
4.实验电路
实验电路原理图如下:
5.实验程序
实验程序流程图见下图:
实验程序如下:
#include
sbitLED1=P1^3;sbitLED2=P1^2;sbitLED3=P1^1;
voiddelayms(unsignedintx)
{unsignedcharj;
while(x--)
{for(j=0;j<123;j++){;}}}
voidmain(void)
{
while
(1)
{LED1=0;LED2=1;LED3=1;delayms(4000);LED1=1;LED2=0;LED3=1;delayms(2000);
LED1=1;LED2=0;LED3=0;delayms(1000);LED1=1;LED2=1;LED3=0;delayms(3000);}}
6.实验步骤
(1)根据实验原理图编写程序,用“KeiluVision4”编译软件编译,如未通过,修改程序,直至通过;
(2)用STC-ISP.EXE软件将所编程序的“HEX”码下载到实验板的STC89c52芯片中;
(3)运行程序,观察实验板左侧的三个LED(红黄绿)灯点亮的次序和时间是否按要求发生变换,如果不符合要求,改写程序,按步骤
(1)开始重新做实验,直至成功。
西华大学实验报告(理工类)
开课学院及实验室:
应用技术学院计算机中心实验时间:
2011年10月31日
学生姓名
学号
41201058020
成绩
学生所在学院
应用技术学院
年级/专业/班
2010级机电一体化
课程名称
单片机原理与应用
课程代码
8426470
实验项目名称
实验2键操作、LED数码管显示实验
项目代码
指导教师
项目学分
1.实验目的
掌握独立键盘、LED数码管的电路连接和编程方法。
2.实验设备
单片机实验板、PC机、Keil等编译软件、STC-ISP.EXE程序下载软件。
3.实验内容
(1)编写程序,按KEY1只有红灯亮;按KEY2只有黄灯亮;按KEY3只有绿灯亮。
(2)开始右LED数码管显示0,每按KEY1一次,数码管显示加1,至9后,再循环从0显示到9。
4.实验电路
实验电路原理图如下:
实验电路原理图
5.实验程序
实验流程图如图:
LED>9
→→
实验程序如下:
实验流程图
#include
sbitKEY1=P3^4;
sbitKEY2=P3^6;
sbitKEY3=P3^7;
sbitLED1=P1^0;
sbitLED2=P1^2;
sbitLED3=P1^7;
unsignedchardispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
voidmain(void)
{TMOD=0x06;TL0=0;TH0=0;TR0=1;
while
(1)
{if(TL0>9)TL0=0;
P2=dispcode[TL0];
if(KEY1==0){LED1=0;LED2=1;LED3=1;}
if(KEY2==0){LED1=1;LED2=0;LED3=1;}
if(KEY3==0){LED1=1;LED2=1;LED3=0;}}}
6.实验步骤
(1)根据实验原理图编写程序,用“KeiluVision4”编译软件编译,如未通过,修改程序,直至通过;
(2)用STC-ISP.EXE软件将所编程序的“HEX”码下载到实验板的STC89c52芯片中;
(3)运行程序,按实验板右下侧的KEY1,KEY2,KEY3,观察LED中的红黄绿灯否按要求点亮,
如果不符合要求,改写程序,按步骤
(1)开始重新做实验,直至成功。
(4)按同样的方法调试编写实验内容2的程序,直至调试成功。
7.思考题
段码与那些因素有关,写出本实验中LED数码管A、b、C、d、e、F、g的段码。
答:
利用各段发光二极管的“亮”、“暗”可以组成各段数字和符号,这种组合称为段码
显示字符
共阳极时引脚连接对应关系
g
f
e
d
c
b
a
0
0
1
1
1
1
1
1
1
0
1
1
0
0
0
0
2
1
0
1
1
0
1
1
3
1
0
0
1
1
1
1
4
1
1
0
0
1
1
0
5
1
1
0
1
1
0
1
6
1
1
1
1
1
0
1
7
0
0
0
0
1
1
1
8
1
1
1
1
1
1
1
9
1
1
0
1
1
1
1
西华大学实验报告(理工类)
开课学院及实验室:
应用技术学院计算机中心实验时间:
2011年11月7日
学生姓名
学号
41201058020
成绩
学生所在学院
应用技术学院
年级/专业/班
课程名称
单片机原理与应用
课程代码
8426470
实验项目名称
实验3掌握MCS51定时器的使用方法
项目代码
指导教师
项目学分
1.实验目的
掌握MCS51定时器的使用方法。
2.实验设备
单片机实验板、PC机、Keil等编译软件、STC-ISP.EXE程序下载软件。
3.实验内容
(1)利用定时器中断方式,做一个显示0~9的秒钟。
(2)利用定时器中断方式,做一个显示00~99的秒钟,每1秒增加1。
4.实验电路
实验电路原理图如下:
实验电路原理图
5.实验程序
调试成功的程序如下:
显示0~9秒的程序:
#include
#defineuintunsignedint
#defineucharunsignedchar
ucharcodedispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
ucharnum;
uchartimecounter=100;
voidmain(void)
{TMOD=0x01;TL0=0xff;TH0=0xd8;EA=1;ET0=1;TR0=1;
while
(1)
{P2=dispcode[num%10];}}
voidtime0(void)interrupt1
{TL0=0xff;TH0=0xd8;
timecounter--;
if(timecounter==0)
{timecounter=100;
num++;
if(num>9)num=0;}}
显示00~99秒的程序:
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitLED1=P2^2;sbitLED2=P2^7;
ucharcodedispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
ucharnum;
uchartimecounter=100;
voiddelayms(uintx)
{ucharj;
while(x--)
{for(j=0;j<123;j++){;}}}
voidmain(void)
{TMOD=0x01;TL0=0xff;TH0=0xd8;EA=1;ET0=1;TR0=1;
while
(1)
{P0=0xff;P0=dispcode[num/10];LED1=1;LED2=0;delayms(5);
P0=0xff;P0=dispcode[num%10];LED1=0;LED2=1;delayms(5);}}
voidtime0(void)interrupt1
{TL0=0xff;TH0=0xd8;
timecounter--;
if(timecounter==0)
{timecounter=100;
num++;
if(num>99)num=0;}}
6.实验步骤
(1)根据实验原理图编写程序,用“KeiluVision4”编译软件编译,如未通过,修改程序,直至通过;
(2)用STC-ISP.EXE软件将所编程序的“HEX”码下载到实验板的STC89c52芯片中;
(3)运行程序,观察LED数码管是否每隔1秒出现“0”-“9”,的变化。
如果不符合要求,改写程序,按步骤
(1)开始重新做实验,直至成功。
(4)按同样的方法调试编写实验内容中
(2)的程序,直至调试成功。
7.思考题
谈一下用定时器中断编程的体会。
答:
定时器/中断器计算机中能大大提高计算机的处事能力,提高起工作效率,作为一个大学生有必要熟悉的运用定时器/中断器
西华大学实验报告(理工类)
开课学院及实验室:
应用技术学院计算机中心实验时间:
2011年11月14日
学生姓名
学号
412010580
成绩
学生所在学院
应用技术学院
年级/专业/班
课程名称
单片机原理与应用
课程代码
8426470
实验项目名称
实验4计数器实验
项目代码
指导教师
项目学分
1.实验目的
掌握计数器的使用方法。
2.实验设备
单片机实验板、PC机、Keil等编译软件、Proteus软件。
3.实验内容
利用计数器,记录按按钮的次数,并用LCD1602显示出来。
4.实验程序
实验实验的程序框图如下:
←←←
计时器/LCD初始化
↑
↑
↑↑↑↑
↑
↑
↑
↑
↑
↑
↑
↓
↓
按动按钮一次,计数器加一
↓
↓
LCD显示
↓
↓
实验实验的程序框图
→→→
计数TL0>999
实验的程序如下:
#include
#include"LCD1602.h"
#defineuintunsignedint
#defineucharunsignedchar
voidmain(void)
{TMOD=0x06;
TL0=0;TH0=0;TR0=1;
while
(1)
{ucharDispBuffer[4];
uchari=TL0;
LCD_Initial();
LCD_Prints(1,0,"THENUMBERIS");
if(TL0>999)TL0=0;
DispBuffer[0]=TL0/100+0X30;
DispBuffer[1]=TL0%100/10+0X30;
DispBuffer[2]=TL0%100%10+0X30;
DispBuffer[3]='\0';
LCD_Prints(6,1,DispBuffer);}}
5.实验电路
实验电路原理图如下:
实验电路原理图
7.实验步骤
(1)根据实验原理图编写程序,用“Keil”编译软件进行编译,如未通过修改程序,直至通过;
(2)用Proteus软件将所编程序的“HEX”码下载到At89c51芯片中;
(3)运行程序,观察LCD数码管是否出现计数值的变化,如果不符合要求,改写程序,按步骤
(1)开始重新做实验,直至成功。
8.思考题
为了简化编程,本实验提供的子程序只能将计数器方式2,如果采用方式1。
如何将计数值全部显示出来?
答:
计数器方式1与计时器方式2相比增大了计数次数,要把计数全部显示出来可以改成多位数码管或LCD模块。