《单片机原理及应用》实验指导书
09 / 10 年 第 二 学期
姓名:___王荣坤____ 学号:_07124721____ 班级:__07计Y2___ 指导教师:__谢光前____
计算机信息工程学院 计算机科学与工程系 2009年8月修订
目 录
实验一 P1口输入输出实验………………………………………………… 1 实验二 定时器实验…………………………………………………… 实验三 外部中断实验…………………………………………………… 实验四 串行口实验…………………………………………………… 实验五 键盘显示实验…………………………………………………… 实验六 数码管显示实验…………………………………………………… 实验七 A/D转换实验……………………………………………………
3 5 7 9 11 13
2
实验一 P1口输入输出实验
一、实验目的
掌握单片机I/O口的使用,掌握数据输入输出程序编制的方法。 二、实验环境
硬件平台:TX-1C单片机学习板。 软件平台:keil软件 三、实验内容与要求
P1口循环点亮8个发光二极管 四、实验预习和准备
参考相关书籍,掌握TX-1C单片机学习板原理图。 五、实验过程与结果
#include for(a=100;a>0;a--) for(b=200;b>0;b--); } void main() { k=0xfe; while(1) { delay(); k=_crol_(k,1); P1=k; } 六、实验小结和体会 通过这次的实验我了解了P1口的用法。由于实验比较简单,所以完成的比较快。而且要用到延迟程序,不然灯就不好亮。 实验二 定时器实验 一、实验目的 掌握单片机定时器使用及其编程方法。 二、实验环境 硬件平台:TX-1C单片机学习板。 软件平台:keil软件 三、实验内容与要求 P1口循环点亮8个发光二极管,循环间隔为2S。 四、实验预习和准备 参考相关书籍,掌握TX-1C单片机学习板原理图。 五、实验过程与结果 #include for(a=100;a>0;a--) for(b=225;b>0;b--); } void main() { k=0xfe; while(1) { If(count==40) { delay(); k=_crol_(k,1); P1=k; } } } 2 void init() { TMOD=0x10; TH1=(65536-50000)/256; TL1=(65536-50000)%256; ET1=0; EA=1; TR1=1; } void Timer1() interrupt 3 { TH1=(65536-50000)/256; TL1=(65536-50000)%256; count++; } 六、实验小结和体会 通过本次的实验了解了定时器的用法和定时器的功能。并在运用中知道了有两个定时器和4种方式。通常使用的就是用到方式1。而且还要用到中断程序来进行记数功能定时器0要用到中断1,定时器1用到中断3。这次实验与上个实验是有联系的。要用到上个的实验只是加了定时器和中断。 3 实验三 外部中断实验 一、实验目的 学习外部中断技术的基本使用方法及中断处理的编程方法。 二、实验环境 硬件平台:TX-1C单片机学习板。 软件平台:keil软件 三、实验内容与要求 当有外部中断0时,发光二极管开始循环点亮,循环间隔2S,同时蜂鸣器响,到最好一个发光二级管后,灯全灭,同时蜂鸣器停止响声。 四、实验预习和准备 参考相关书籍,掌握TX-1C单片机学习板原理图。 五、实验过程与结果 #include #define uchar unsigned char; sbit beep=P2^3; uchar count=0; int num; uchar weiy; void delay(); void init(); void main() { int i; weiy=0xfe; init(); while(1) { if(num==1) { for(i=0;i<8;i++) { 4 P1=weiy; weiy=_crol_(weiy,1); delay(); } if(count==100) { beep=0; } } } } void delay() { int i,j; for(i=100;i>0;i--) for(j=100;j>0;j--); } void init() { TMOD=0x10; TH1=(65536-50000)/256; TL1=(65536-50000)%256; ET1=0; EA=1; EX0=1; IT0=0; } void extend0() interrupt 0 using 0 { num=1; EX0=0; TR1=1; } void Timer1() interrupt 3 { 5 TH1=(65536-50000)/256; TL1=(65536-50000)%256; count++; } 六、实验小结和体会 6 实验四 串行口实验 一、实验目的 利用单片机串行口,实现与PC机的通讯,了解其工作原理。 二、实验环境 硬件平台:TX-1C单片机学习板。 软件平台:keil软件 三、实验内容与要求 由上位机发送1给单片机时,蜂鸣器以400ms频率发声,发2时以200ms频率发声,发3时以100ms频率发声,发4时关闲蜂鸣器。 四、实验预习和准备 参考相关书籍,掌握TX-1C单片机学习板原理图。 五、实验过程与结果 #include #define uchar unsigned char uchar a; int count; int aa; int flag; sbit beep=P2^3; void init(); void delay(); void main() { init(); flag=0; count=0; while(1) { if(flag==1) { 7 } } } void init() { TMOD=0x21; TH0 = (65535-50000)/256; TL0 = (65535-50000)%256; ET0 = 1; // TR0 = 1; TH1=0xFD; TL1=0xFD; TR1=1; SM0=0; SM1=1; REN=1; EA=1; ES=1; PCON=0; flag=0; beep=1; } void serial() interrupt 4 { 8 RI=0; a=SBUF; if(a=='1') { flag=1; aa=8; TR0=1; }else if(a=='2') { flag=1; aa=4 TR0=1; }else if(a=='3') { flag=1; aa=2 TR0=1; }else if(a=='4') { flag=0; // TR0=1; beep=1; }else { flag=0; } } void timer0() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; // beep=!beep; //delay(); count++; //beep=0; if(count==aa) { 9 count=0; beep=!beep; //delay(); } } } void delay() { int i,j; for(i=1000;i>0;i--) for(j=1000;j>0;j--); } 六、实验小结和体会 10 实验五 键盘显示实验 一、实验目的 1.熟悉并掌握系统中扩展键盘显示接口的方法。 2.掌握键盘显示的工作原理和编程的方法。 二、实验环境 硬件平台:TX-1C单片机学习板。 软件平台:keil软件 三、实验内容与要求 按下矩阵键盘某个按键,数码管上显示对应的按键编号。 四、实验预习和准备 参考相关书籍,掌握TX-1C单片机学习板原理图。 五、实验过程与结果 //4*4键盘检测程序,按下键后相应的代码显示在数码管上 #include unsigned char i=100; unsigned char j,k,temp,key; void delay(unsigned char i) { for(j=i;j>0;j--) for(k=125;k>0;k--); } unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; display(unsigned char num) { P0=table[num]; // P0=0xff; dula=1; 11 dula=0; P0=0xc0; wela=1; wela=0; } void main() { dula=0; wela=0; while(1) { P3=0xfe; temp=P3; temp=temp&0xf0; if(temp!=0xf0) { delay(10); if(temp!=0xf0) { temp=P3; switch(temp) { case 0xee: key=0; break; case 0xde: key=1; break; case 0xbe: key=2; break; case 0x7e: key=3; break; 12 } while(temp!=0xf0) { temp=P3; temp=temp&0xf0; beep=0; } beep=1; display(key); // P0=table[key]; /* P0=0xff; dula=1; while(i--); dula=0; P0=0xc0; wela=1; wela=0; dula=0; wela=0; P0=0xff; dula=1; dula=0; P0=0xc5; wela=1; wela=0; */ P1=0xfe; } } P3=0xfd; temp=P3; temp=temp&0xf0; if(temp!=0xf0) { delay(10); if(temp!=0xf0) { 13 temp=P3; switch(temp) { case 0xed: key=4; break; case 0xdd: key=5; break; case 0xbd: key=6; break; case 0x7d: key=7; break; } while(temp!=0xf0) { temp=P3; temp=temp&0xf0; beep=0; } beep=1; display(key); /* P0=table[key]; dula=1; // while(100--); dula=0; P0=0xc0; wela=1; wela=0; */ P1=0xfc; } } 14 P3=0xfb; temp=P3; temp=temp&0xf0; if(temp!=0xf0) { delay(10); if(temp!=0xf0) { temp=P3; switch(temp) { case 0xeb: key=8; break; case 0xdb: key=9; break; case 0xbb: key=10; break; case 0x7b: key=11; break; } while(temp!=0xf0) { temp=P3; temp=temp&0xf0; beep=0; } beep=1; display(key); /* P0=table[key]; dula=1; 15 // while(100--); dula=0; P0=0xc0; wela=1; wela=0; */ P1=0xf8; } } P3=0xf7; temp=P3; temp=temp&0xf0; if(temp!=0xf0) { delay(10); if(temp!=0xf0) { temp=P3; switch(temp) { case 0xe7: key=12; break; case 0xd7: key=13; break; case 0xb7: key=14; break; case 0x77: key=15; break; } while(temp!=0xf0) { 16 temp=P3; temp=temp&0xf0; beep=0; } beep=1; display(key); /* P0=table[key]; dula=1; // while(100--); dula=0; P0=0xc0; wela=1; wela=0; */ P1=0xf0; } } } } 六、实验小结和体会 17 实验六 数码管显示实验 一、实验目的 1.熟悉并掌握数码管显示原理。 2.掌握单片机定时器的应用。 二、实验环境 硬件平台:TX-1C单片机学习板。 软件平台:keil软件 三、实验内容与要求 数码上循环显示0~F,循环间隔为2S。 四、实验预习和准备 参考相关书籍,掌握TX-1C单片机学习板原理图。 五、实验过程与结果 #include table[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; void init(); void main() { init(); ywei=0; wela=1; P0=0xC0; count=0; wela=0; dula=1; 18 P0=table[ywei++]; dula=0; while(1) { if(count==40) { count=0; dula=1; P0=table[ywei++]; dula=0; if(ywei==16) { ywei=0; } } } } void init() { TMOD=0x10; TH1=(65536-50000)/256; TL1=(65536-50000)%256; ET1=1; EA=1; TR1=1; } void timer1() interrupt 3 { TH1=(65536-50000)/256; TL1=(65536-50000)%256; count++; } 六、实验小结和体会 19 实验七 A/D转换实验 一、实验目的 掌握0809A/D转换芯片的硬件电路和软件编程。 二、实验环境 硬件平台:TX-1C单片机学习板。 软件平台:keil软件 三、实验内容与要求 调节可变电阻,通过发光二极管读出转换的对应数字量。 四、实验预习和准备 参考相关书籍,掌握TX-1C单片机学习板原理图。 五、实验过程与结果 //拧动电位器,会在数码管的前三位显示0-255之间的数值。这就是把模拟电压转换成数字信号。 //有些拧动电位器后数码管数可能不会动态变化,请用户按下实验板上的S22复位按键可更新数据 //这种显象产生的原因是和AD芯片自身的一些特性有关。 #include sbit adrd=P3^7; sbit adwr=P3^6; sbit diola=P2^5; sbit dula=P2^6; sbit wela=P2^7; unsigned char j,k,adval; void delay(unsigned char i) { for(j=i;j>0;j--) for(k=125;k>0;k--); } uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, / 20 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; void display(uchar bai_c,uchar sh_c,uchar g_c) { P0=table[bai_c]; dula=1; dula=0; P0=0xfe; wela=1; wela=0; delay(5); dula=0; P0=table[sh_c]; dula=1; dula=0; wela=0; P0=0xfd; wela=1; wela=0; delay(5); P0=table[g_c]; dula=1; dula=0; P0=0xfb; wela=1; wela=0; delay(5); } void main() { 21 uchar a,A1,A2,A2t,A3; while(1) { wela=1; P0=0; adwr=0; _nop_(); adwr=1; P0=0xff; delay(10); wela=0; for(a=20;a>0;a--) { display(A1,A2,A3); } wela=1; P1=0xff; P0=0; adrd=0; adval=P1; adrd=1; P0=0xff; adwr=0; P1=adval; A1=adval/100; A2t=adval%100; A2=A2t/10; A3=A2t%10; }; } 六、实验小结和体会 22 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- dfix.cn 版权所有 湘ICP备2024080961号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务