版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验一 简单程序设计实验一、实验目的掌握单片机程序设计的基本方法,熟悉程序交叉编译和调试执行的过程。二、实验器材1、PC机(安装Keil软件) 1台2、实验开发板 1块3、U-EC5型仿真器 1只4、直流稳压电源 1台三、实验要求1、课前温习和回顾C语言程序设计方面的知识。2、搭建集成开发环境 (参考所给实验附件中Keil软件与仿真驱动程序安装.doc)。3、编写简单的C程序,熟悉Keil环境下的调试方法,包括跟踪、单步运行和断点设置等。4、仔细观察实验板电路图,并结合C8051F411数据手册给出自己I/O端口配置方案。5、编写程序,实现LED的亮灭、蜂鸣器的鸣叫以及按键状态识别等控制功能。
2、四、扩充实验(思考题)1、如何实现蜂鸣器的间歇鸣叫(1秒)?2、如何实现依次点亮LED的控制功能?五实验程序1.实现LED的亮灭#include c8051F410.h#define OLD_BOARD #ifdef OLD_BOARDsbit LED8=P17;sbit LED7=P16;sbit LED6=P15;sbit LED5=P14;sbit LED4=P13;sbit LED3=P12;sbit LED2=P11;sbit LED1=P10;sbit KEY5=P22;sbit KEY4=P21;sbit KEY3=P20;sbit KEY2=P02;sbit KEY1=P01;
3、sbit SPKOUT=P00;#elsesbit LED8=P21;sbit LED7=P20;sbit LED6=P07;sbit LED5=P06;sbit LED4=P03;sbit LED3=P02;sbit LED2=P01;sbit LED1=P00;sbit KEY5=P17;sbit KEY4=P16;sbit KEY3=P15;sbit KEY2=P14;sbit KEY1=P13;sbit SPKOUT=P22; #endifvoid init(void); /初始化子程序void main()init(); /初始化子程序LED1 = 1;LED2 = 0;LED3 =
4、 0;LED4 = 0;LED5 = 0;LED6 = 0;LED7 = 0;LED8 = 1;SPKOUT = 0; for(;) void init(void)PCA0MD=0x00;/关闭WDT控制OSCICN=0xc7;/设置内部振荡器工作(使用内部晶振24.5MHz)#ifdef OLD_BOARDP0MDIN=0xFF;P0MDOUT=0x11;P0SKIP=0xCF;P1MDIN=0xFF;P1MDOUT=0x00;P1SKIP=0xFF;P2MDIN=0xFF;P2MDOUT=0x04;#elseP0MDIN=0xFF;P0MDOUT=0x10;P0SKIP=0xCF;P1MD
5、IN=0xFF;P1MDOUT=0x00;P1SKIP=0xFF;P2MDIN=0xFF;P2MDOUT=0x04;P2SKIP=0xFF; #endifXBR0=0x01;XBR1=0x41;2. 蜂鸣器的实现#include c8051F410.h#define OLD_BOARD #ifdef OLD_BOARD sbit SPKOUT = P00; #else sbit SPKOUT = P22; #endifvoid init(void); /初始化子程序void main()init(); /初始化子程序 for(;) SPKOUT = 1;/蜂鸣器鸣叫 void init(voi
6、d)PCA0MD=0x00;/关闭WDT控制OSCICN=0xc7;/设置内部振荡器工作(使用内部晶振24.5MHz)#ifdef OLD_BOARDP0MDIN=0xFF;P0MDOUT=0x11;P0SKIP=0xCF;P1MDIN=0xFF;P1MDOUT=0x00;P1SKIP=0xFF;P2MDIN=0xFF;P2MDOUT=0x04;P2SKIP=0xFF;#elseP0MDOUT=0x10;P0SKIP=0xCF;P1MDIN=0xFF;P1MDOUT=0x00;P1SKIP=0xFF;P2MDIN=0xFF;P2MDOUT=0x04;P2SKIP=0xFF;#endifXBR0
7、=0x01;XBR1=0x40;3.实现亮灯且按键状态识别蜂鸣#include c8051F410.h#define OLD_BOARD #ifdef OLD_BOARDsbit LED8=P17;sbit LED7=P16;sbit LED6=P15;sbit LED5=P14;sbit LED4=P13;sbit LED3=P12;sbit LED2=P11;sbit LED1=P10;sbit KEY5=P22;sbit KEY4=P21;sbit KEY3=P20;sbit KEY2=P02;sbit KEY1=P01;sbit SPKOUT=P00;#elsesbit LED8=P2
8、1;sbit LED7=P20;sbit LED6=P07;sbit LED5=P06;sbit LED4=P03;sbit LED3=P02;sbit LED2=P01;sbit LED1=P00;sbit KEY5=P17;sbit KEY4=P16;sbit KEY3=P15;sbit KEY2=P14;sbit KEY1=P13;sbit SPKOUT=P22; #endifvoid Delay(int n);void main(void)PCA0MD=0x00; OSCICN=0xc7;/设置内部振荡器工作(使用内部晶振24.5MHz)#ifdef OLD_BOARDP0MDIN=0
9、xFF;P0MDOUT=0x11;P0SKIP=0xCF;P1MDIN=0xFF;P1MDOUT=0x00;P1SKIP=0xFF;P2MDIN=0xFF;P2MDOUT=0x04;P2SKIP=0xFF;#elseP0MDIN=0xF0;P0MDOUT=0x10;P0SKIP=0xCF;P1MDIN=0xFF;P1MDOUT=0x00;P1SKIP=0xFF;P2MDIN=0xFF;P2MDOUT=0x04;P2SKIP=0xFF;#endifXBR0=0x01;XBR1=0x40;LED5 = 0;LED6 = 0;LED7 = 0;LED8 = 0;SPKOUT = 0; for(;)
10、if(KEY1=0)Delay();if(KEY1=0)SPKOUT = !SPKOUT; void Delay(int n)while(-n);4.实现蜂鸣器的间歇鸣叫及依次点亮LED#include C8051F410.H#define OLD_BOARD #ifdef OLD_BOARDsbit LED8=P17;sbit LED7=P16;sbit LED6=P15;sbit LED5=P14;sbit LED4=P13;sbit LED3=P12;sbit LED2=P11;sbit LED1=P10;sbit KEY5=P22;sbit KEY4=P21;sbit KEY3=P20
11、;sbit KEY2=P02;sbit KEY1=P01;sbit SPKOUT=P00;#elsesbit LED8=P21;sbit LED7=P20;sbit LED6=P07;sbit LED5=P06;sbit LED4=P03;sbit LED3=P02;sbit LED2=P01;sbit LED1=P00;sbit KEY5=P17;sbit KEY4=P16;sbit KEY3=P15;sbit KEY2=P14;sbit KEY1=P13;sbit SPKOUT=P22; #endif#define SYSCLK L#define TIME0TIME 1000 /定时时间为
12、0.001s(1ms)#define TIMER0CNT -SYSCLK*TIME0TIME/12 /定时器0时间常数void init(void);void Time0_ISR(void);void main(void)init();SPKOUT = 0;LED1 = 1;LED2 = 1;LED3 = 1;LED4 = 1;LED5 = 1;LED6 = 1;LED7 = 1;LED8 = 1; for(;);void init(void)PCA0MD=0x00; /关闭WDT控制OSCICN=0xc7; /设置内部振荡器工作(使用内部晶振24.5MHz)#ifdef OLD_BOARDP
13、0MDIN=0xFF;P0MDOUT=0x11;P0SKIP=0xCF;P1MDIN=0xFF;P1MDOUT=0x00;P1SKIP=0xFF;P2MDIN=0xFF;P2MDOUT=0x04;P2SKIP=0xFF;#elseP0MDIN=0xFF;P0MDOUT=0x10;P0SKIP=0xCF;P1MDIN=0xFF;P1MDOUT=0x00;P1SKIP=0xFF;P2MDIN=0xFF;P2MDOUT=0x04;P2SKIP=0xFF;#endifXBR0=0x01;XBR1=0x40;TMOD= 0x21;TCON= 0x05;TH0= TIMER0CNT/256;TL0= TI
14、MER0CNT;TR0= 1;IP= 0x00;ET0= 1;EA=1;void Time0_ISR(void) interrupt INTERRUPT_TIMER0static int Counter=0;static unsigned char LEDNUM=0;Counter+;if (Counter999)Counter = 0;LEDNUM-;LEDNUM = LEDNUM & 0x07;SPKOUT = !SPKOUT;LED1 = !(LEDNUM = 0x00);LED2 = !(LEDNUM = 0x01);LED3 = !(LEDNUM = 0x02);LED4 = !(L
15、EDNUM = 0x03);LED5 = !(LEDNUM = 0x04);LED6 = !(LEDNUM = 0x05);LED7 = !(LEDNUM = 0x06);LED8 = !(LEDNUM = 0x07);TH0=TIMER0CNT/256;TL0=TIMER0CNT;TR0=1;六实验结果1.实现LED的亮灭运行此程序后,单片机板上的led灯全部都亮,当停止编译后,灯全部熄灭。2. 蜂鸣器的实现运行程序后,蜂鸣器开始鸣叫并持续不断,当停止运行后,蜂鸣声消失。3.实现亮灯且按键状态识别蜂鸣运行程序后单片机板上的后四个灯亮,当按下板上的key1键时蜂鸣器开始响,当再次按下时蜂鸣声停止,再次按下时又开始响,一直重复进行下去。4.实现蜂鸣器的间歇鸣叫及依次点亮LED当运行程序后,蜂鸣器间隔一秒就响,同时led灯也开始循环闪亮。七出现的问题及解决方法1.在实现led灯亮灭的过程中发现灯不亮,经检查发现原来没有在头文件中加入define OLD_BOARD
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年荆州市沙市区事业编单位人员招聘笔试备考题库及答案详解
- 2026年山西省吕梁市中小学编制教师招聘笔试参考试题及答案详解
- 2026年承德市双滦区中小学编制教师招聘笔试备考试题及答案详解
- 2026年乌鲁木齐市新市区中小学编制教师招聘笔试备考试题及答案详解
- 2026年南宁市兴宁区中小学编制教师招聘考试模拟试题及答案详解
- 2026年北京市西城区中小学编制教师招聘笔试备考题库及答案详解
- 2026年北京市海淀区事业编单位人员招聘笔试备考试题及答案详解
- 2026年阜阳市颍东区中小学编制教师招聘考试备考试题及答案详解
- 2026年兰州市安宁区中小学编制教师招聘笔试备考试题及答案详解
- 2026年北海市银海区中小学编制教师招聘考试参考试题及答案详解
- 住建部房屋市政工程安全生产标准化指导图册
- 汇文中学分班试题及答案
- 广州市荔湾区白鹤洞街道公开招考1名合同制工作人员管理单位遴选500模拟题附带答案详解
- 先天性胆道闭锁(共29张课件)
- 人教版(2024新版)八年级上册物理《开启科学探索之旅》教学设计
- 人教版三年级《语文下册》期末试卷(下载)
- 马工程《公共财政概论》课后习题库(含)参考答案(可做期末复习和试卷)
- 2023-2024学年湖南省衡阳市小学语文五年级期末自我评估考试题附参考答案和详细解析
- GB/T 27648-2011重要湿地监测指标体系
- 戏剧影视文学课程《影视文学欣赏》课程教学大纲
- 《会计基础与实务》教案(第5版)
评论
0/150
提交评论