资源描述
《单片机原理及应用》实验指导书
10 / 11 年 第 二 学期
姓名:___仲久妹______
学号:___08125217 __
班级:___08计Y2___
指导教师:_____________
计算机信息工程学院
计算机科学与工程系
2009年8月修订
目 录
实验一
P1口输入输出实验…………………………………………………
1
实验二
定时器实验……………………………………………………
3
实验三
外部中断实验……………………………………………………
5
实验四
串行口实验……………………………………………………
7
实验五
键盘显示实验……………………………………………………
9
实验六
数码管显示实验……………………………………………………
11
实验七
A/D转换实验……………………………………………………
13
21
实验一 P1口输入输出实验
一、 实验目的
掌握单片机I/O口的使用,掌握数据输入输出程序编制的方法。
二、 实验环境
硬件平台:TX-1C单片机学习板。
软件平台:keil软件
三、 实验内容与要求
P1口循环点亮8个发光二极管
四、 实验预习和准备
参考相关书籍,掌握TX-1C单片机学习板原理图。
五、 实验过程与结果
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp;
void delay(uint z);
void main()
{
temp=0xfe;
P1=temp;
while (1){
temp=_crol_(temp,1);
delay(600);
P1=temp;
}
}
void delay(uint z)
{
uint x,y;
for (x=z;x>0;x--)
for (y=20;y>0;y--);
}
六、实验小结和体会
实验二 定时器实验
一、实验目的
掌握单片机定时器使用及其编程方法。
二、实验环境
硬件平台:TX-1C单片机学习板。
软件平台:keil软件
三、 实验内容与要求
P1口循环点亮8个发光二极管,循环间隔为2S。
四、 实验预习和准备
参考相关书籍,掌握TX-1C单片机学习板原理图。
五、 实验过程与结果
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp,tt;
void init();
void delay(uint z);
void main()
{
temp=0xfe;
P1=temp;
init();
while (1){
if (tt==40)
{
tt=0;
temp=_crol_(temp,1);
delay(600);
P1=temp;
}
}
}
void init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void delay(uint z)
{
uint x,y;
for (x=z;x>0;x--)
for (y=110;y>0;y--);
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;
}
六、实验小结和体会
实验三 外部中断实验
一、实验目的
学习外部中断技术的基本使用方法及中断处理的编程方法。
二、实验环境
硬件平台:TX-1C单片机学习板。
软件平台:keil软件
三、实验内容与要求
当有外部中断0时,发光二极管开始循环点亮,循环间隔2S,同时蜂鸣器响,到最好一个发光二级管后,灯全灭,同时蜂鸣器停止响声。
四、 实验预习和准备
参考相关书籍,掌握TX-1C单片机学习板原理图。
五、 实验过程与结果
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp,tt;
uchar tt1;
sbit beep=P2^3;//蜂鸣
bit flag=0;
void init();
void delay(uint z);
void main()
{
temp=0xfe;
P1=temp;
init();
while (1){
if (flag==0)
{
beep=1;
if (tt==40)
{
beep=0;
tt=0;
temp=_crol_(temp,1);
tt1++;
delay(600);
P1=temp;
}
}
else
{
beep=1;
P1=0xff;
}
}
}
void init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
EX0=1;
}
void delay(uint z)
{
uint x,y;
for (x=z;x>0;x--)
for (y=110;y>0;y--);
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;
if(tt1==8)
{
tt1=0;
flag=1;
}
}
void timer1() interrupt 0
{
TR0=0;
}
六、实验小结和体会
实验四 串行口实验
一、实验目的
利用单片机串行口,实现与PC机的通讯,了解其工作原理。
二、实验环境
硬件平台:TX-1C单片机学习板。
软件平台:keil软件
三、实验内容与要求
由上位机发送1给单片机时,蜂鸣器以400ms频率发声,发2时以200ms频率发声,发3时以100ms频率发声,发4时关闲蜂鸣器。
四、实验预习和准备
参考相关书籍,掌握TX-1C单片机学习板原理图。
五、实验过程与结果
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar temp,tt,time;
sbit beep=P2^3;//蜂鸣
bit flag;
void init(void);
//void delay(uint z);
void main()
{
init();
while(1)
{
if(flag==1)
{
ES=0;
flag=0;
SBUF=temp;
while(!TI);
TI=0;
TR0=1;
if (temp==1){
time=8;
}
else if(temp==2)
{
time=4;
}
else if (temp==3)
{
time=2;
}
else if (temp==4)
{
TR0=0;
beep=1;
}
ES=1;
}
}
}
void init(void)
{
TMOD=0x21;
TH1=0xFD;
TL1=0xFD;
TR0=1;
TR1=1;
SCON=0x50;
EA=1;
ES=1;
ET0=1;
beep=1;
}
void timer1() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;
if(tt==time)
{
tt=0;
beep=~beep;
}
}
void serial() interrupt 4
{
RI=0;
temp=SBUF;
P1=temp;
flag=1;
}
六、实验小结和体会
实验五 键盘显示实验
一、实验目的
1. 熟悉并掌握系统中扩展键盘显示接口的方法。
2. 掌握键盘显示的工作原理和编程的方法。
二、实验环境
硬件平台:TX-1C单片机学习板。
软件平台:keil软件
三、实验内容与要求
按下矩阵键盘某个按键,数码管上显示对应的按键编号。
四、实验预习和准备
参考相关书籍,掌握TX-1C单片机学习板原理图。
五、实验过程与结果
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
sbit key1=P3^4;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar num,temp,temp1;
void init();
void delay(uint z);
uchar keynum();//按第几个键
void display(uchar x);//显示按键
void main()
{
init();
while(1)
{
temp1=keynum(); //返回num
display(temp1); //在数码管上显示
}
}
void init()
{
num=16;
wela=1;
P0=0xfe;//数码管第左一位
wela=0;
dula=1;
P0=0;
dula=0;
}
void display(uchar x)
{
dula=1;
P0=table[x];
dula=0;
}
uchar keynum()
{
//第一行
P3=0xfe;
temp=P3;
temp=temp&0xf0; //判断高4位是否有按下
while(temp!=0xf0) //有键按下
{
delay(10);//消抖
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P3; //在次付给temp,因为WHILE(TEMP!=0XFO)始终为正,则跳不出WHILE
switch(temp)
{
case 0xee:num=0;
break;
case 0xde:num=1;
break;
case 0xbe:num=2;
break;
case 0x7e:num=3;
break;
}
while(temp!=0xf0) //检查松手
{
temp=P3;
temp=temp&0xf0;
}
}
}
//第二行
P3=0xfd;
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(10);
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xed:num=4;
break;
case 0xdd:num=5;
break;
case 0xbd:num=6;
break;
case 0x7d:num=7;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
}
}
//第三行
P3=0xfb;
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(10);
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xeb:num=8;
break;
case 0xdb:num=9;
break;
case 0xbb:num=10;
break;
case 0x7b:num=11;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
}
}
//第四行
P3=0xf7;
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(10);
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xe7:num=12;
break;
case 0xd7:num=13;
break;
case 0xb7:num=14;
break;
case 0x77:num=15;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
}
}
return num;
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
六、实验小结和体会
实验六 数码管显示实验
一、实验目的
1.熟悉并掌握数码管显示原理。
2.掌握单片机定时器的应用。
二、实验环境
硬件平台:TX-1C单片机学习板。
软件平台:keil软件
三、实验内容与要求
数码上循环显示0~F,循环间隔为2S。
四、实验预习和准备
参考相关书籍,掌握TX-1C单片机学习板原理图。
五、实验过程与结果
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
uchar tt,num;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint z);
void init();
void main()
{
init();
while (1)
{
if (tt==20)
{
tt=0;
dula=1;
P0=table[num];
dula=0;
num++;
if (num==16)
{
num=0;
}
delay(100);
}
}
}
void init()
{
wela=1;
P0=0xc0;
wela=0;
dula=1;
P0=0;
dula=0;
TMOD=0x01;
TH0=(65536-50000)/255;
TL0=(65536-50000)%255;
tt=0;
num=0;
EA=1;
ET0=1;
TR0=1;
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void timer0() interrupt 1
{
TH0=(65536-50000)/255;
TL0=(65536-50000)%255;
tt++;
}
六、实验小结和体会实验七 A/D转换实验
一、实验目的
掌握0809A/D转换芯片的硬件电路和软件编程。
二、实验环境
硬件平台:TX-1C单片机学习板。
软件平台:keil软件
三、实验内容与要求
调节可变电阻,通过发光二极管读出转换的对应数字量。
四、实验预习和准备
参考相关书籍,掌握TX-1C单片机学习板原理图。
五、实验过程与结果
六、实验小结和体会
展开阅读全文