实验报告二、单片机定时器的综合应用

第一篇:实验报告二、单片机定时器的综合应用

       院系 物理与电子信息学院

       姓名 吴凯

       实验室 S2312

       课程 单片机原理与应用

       试验项目编号

       专业 电子与电子信息工程班级10电专(2)学号 1060710057同组人/组号/指导老师肖鹏程日期成绩试验项目名称单片机定时器的综合应用

       一、实验目的1.进一步熟悉Keil uVision2软件的应用;

       2.进一步熟悉Proteus7.8软件的应用;

       3.掌握单片机软件延时和定时器的使用方法;

       4.掌握用C语言编写方波发生器和彩灯控制器的方法。

       二、实验环境

       1.微机一台;

       2.Proteus7.8电路设计和仿真软件;

       3.Keil uVision2编译和调试软件;

       三、实验原理

       图1是单片机实现1KHz方波发生器的电路原理图,P00接示波器,时钟电路接在单片机的DIP18、DIP19,复位电路接在单片机的DIP9,DIP31接Vcc。注意:所有元器件要按实物重新封装。

       用C语言编写程序,使该电路的功能为,上电后示波器显示1KHz的方波。当示波器显示的方波频率不是1KHz时,修改程序,使示波器显示标准的1KHz方波。

       图1单片机输出控制电路原理图

       C语言1KHz方波发生器的程序

       图2是单片机实现彩灯控制器的电路原理图,P00接8只LED,时钟电路接在单片机的DIP18、DIP19,复位电路接在单片机的DIP9,DIP31接Vcc。注意:所有元器件要按实物重新封装。

       用C语言编写程序,使该电路的功能为,上电后8只LED灯显示彩灯滚动效果。修改程序,使彩灯显示效果发生变化。

       图2彩灯控制器电路原理图

       C语言彩灯控制器的程序

       四、实验步骤

       1.在Proteus ISIS环境下设计一个用单片机产生1KHz方波发生器的电路原理图,P00接示波器,时钟电路接在单片机的DIP18、DIP19,复位电路接在单片机的DIP9,DIP31接Vcc。

       2.在Keil uVision2环境下,用C语言编写单片机实现1KHz方波发生器的程序,编译生成hex文件。

       3.将生成的hex文件加载到单片机,运行仿真,观察现象,记录结果;

       4.在Proteus ISIS环境下设计一个用单片机产生彩灯控制器的电路原理图,P0接8只LED灯,时钟电路接在单片机的DIP18、DIP19,复位电路接在单片机的DIP9,DIP31接Vcc。

       5.在Keil uVision2环境下,用C语言编写单片机实现彩灯控制器的程序,编译生成hex文件。

       6.将生成的hex文件加载到单片机,运行仿真,观察现象,记录结果;

       五、实验记录与处理

       1.单片机产生1KHz方波发生器的实验结果

       图3为1KHz方波发生器的仿真图。

       图3 1KHz方波发生器仿真图

       当延时常数为(),方波频率为(当延时常数为(),方波频率为(数据处理:从以上数据我们可以看出,2.彩灯控制器的仿真结果

       数据处理:从以上数据我们可以看出,。))

       六、思考题

       1.简述单片机定时的几种方法?每种方法举例具体说明。答:

       2.与单片机的定时器有关的SFR有几个?每个SFR具体说明。答:

       七、实验小结

       通过实验我熟悉了

第二篇:单片机综合实验报告格式

       (在所做过的实验内容里挑选一个自己最有收获,最有感想的实验内容)

       综合实验报告标题(可与实验名称不同)

       一、实验目的和要求。

       二、实验仪器设备。

       三、实验设计及调试:

       (一)实验内容。

       (二)实验电路:画出与实验内容有关的简单实验电路。

       (三)实验设计及调试步骤:

       (1)对实验内容和实验电路进行分析,理出完成实验的设计思路。(2)列出程序设计所需的特殊标志位、堆栈sp、内部ram、工作寄存器等资源的分配列表,分配列表时注意考虑资源在程序执行过程可能会出现冲突的问题。

       (3)画出程序设计流程图,包括主程序和各子程序流程图。

       (4)根据(2)、(3)的内容写出实验程序。

       (5)调试程序(可以使用模拟仿真器)。

       a、根据程序确定调试目的,即调试时所需观察的内容结果。

       b、根据各调试目的分别选择调试所需的方法,如单步、断点等命令,分别列出各调试方法中所需要关注记录的内容。

       c、调试程序,按各种调试方法记录相应的内容。

       d、分析调试记录的内容和结果,找出程序中可能出错的地方,然后修改程序,继续调试、记录、分析,直到调试成功。

       (四)实验调试过程中所遇到的问题、解决问题的思路和解决的方法。

       四、实验后的经验教训总结。

第三篇:实验二 单片机定时器和计数器编程

       仲恺农业工程学院实验报告纸

       信息学院(院、系)专业班组单片机原理及接口技术课实验二单片机定时器/计数器编程

       一、实验目的1、掌握单片机定时器/计数器的工作方式;

       2、掌握单片机定时器/计数器的编程方法。

       二、实验内容

       1、学习单片机定时器/计数器的工作方式、初始化以及应用等;

       2、利用单片机定时器/计数器编写程序驱动开发板上的led和蜂鸣器按一定规律工作。

       三、实验设备

       1、STC单片机开发板;

       2、PC机以及串口线。

       四、实验步骤

       参考实验指导书。

       五、实验总结

第四篇:单片机实验二实验报告

       实验报告

       课程名称:微机原理与接口技术

       指导老师:李素敏

       学生姓名:

       学号:

       专业: 自动化

       日期:2022-04-10 地点:理工楼603

       实验二

       1.实验目的和要求

       ① 掌握keil软件和STC-ISP 软件的使用方法 ② 熟悉发光管的工作原理 ③ 通过编程体验发光管的延时闪烁及移位等功能

       2.主要仪器设备

       PC机

       单片机学习开发套件(型号:89C52RC)

       3.实验内容

       ①实验内容1:第一个发光管以间隔200ms闪烁

       源程序:

       #include #define uint unsigned int

       //宏定义

       main(){

       while(1){ P1=0xfe;delay(200);P1=0xff;delay(200);} } void delay(uint z)//延时函数,z的取值为这个函数的延时ms数 {

       uint x,y;for(x=z;x>0;x--)

       for(y=110;y>0;y--);

       一台一件

       }

       实验结果说明:要使发光管闪烁,只需设置合适的时间延时即可。

       ②实验内容2 : 8个发光管由上至下间隔1s流动,其中每个管亮500ms,灭500ms,亮时蜂鸣器响,灭时关闭蜂鸣器,一直重复下去。

       源程序:

       #include

       #include //后面要用到它里面的_crol_(k,l)函数 //这个函数的意思是把一个字符变量k 循环左移l 位 #define uint unsigned int

       //宏定义

       unsigned char a,b,k,j;

       //定义五个字符变量 sbit beep=P2^3;// 定义蜂鸣器的接口

       void delay(uint z)//延时函数,z的取值为这个函数的延时ms数 {

       uint x,y;for(x=z;x>0;x--)

       for(y=110;y>0;y--);}

       void main(){

       k=0xfe;//先给k一个初值11111110等待移位 while(1){

       delay500ms();

       beep=0;//打开蜂鸣器

       delay500ms();//让它响500ms

       beep=1;//关闭蜂鸣器

       j=_crol_(k,1);//把k循环左移一位

       k=j;//把移完的值再送给k

       P1=j;//同时把值送到P1口点亮发光二极管 } //再次循环 }

       实验结果说明:在此程序中用到了_crol_(k,l)函数,此函数的功能在于循环移位,在每次发光管闪烁相应时间后左移一位,把移完的值再送到P口,点亮对应的发光管。这样循环往复,达到发光管流动的效果。

       ③实验内容3 :用8个发光管演示出8位二进制数累加过程,即用8个二极管表示8个二进制位(亮为1,灭为0),依次以二进制形式显示0,1,2,……255。

       源程序: #include

       #include //包含有左右循环移位子函数的库 #define uint unsigned int

       //宏定义 #define uchar unsigned char //宏定义

       void delay(uint z)//延时函数,z的取值为这个函数的延时ms数,{

       uint x,y;for(x=z;x>0;x--)

       for(y=110;y>0;y--);} void main()

       //主函数 {

       } uchar a;while(1)

       //大循环 {

       } a ;P1=~a;delay(200);

       实验结果说明:在此定义一个无符号字符变量a,a的值进行累加,但是由于表示的二进制数要求亮为1,灭为0,与发光管的0亮1灭正好相反,所以将a的计数取反并设置相应延时,重复此过程就得到了在发光管上显示八位二进制数的累加过程。

       ④实验内容4 :间隔300ms第一次一个管亮流动一次,第二次两个管亮流动,依次到8个管亮,然后重复整个过程。

       源程序:

       #include //52单片机头文件

       #include //包含有左右循环移位子函数的库 #define uint unsigned int //宏定义 #define uchar unsigned char //宏定义

       void delay(uint z)//延时函数,z的取值为这个函数的延时ms数 {

       uint x,y;for(x=z;x>0;x--)

       for(y=110;y>0;y--);} void main()//主函数 { uchar a,i,j;while(1)//大循环

       } {

       } a=0xfe;//赋初值

       for(j=0;j<8;j ){ for(i=0;i<8-j;i )//左移

       } {

       P1=a;//点亮小灯

       delay(300);//延时300毫秒

       a=_crol_(a,1);//将a变量循环左移一位

       } a=_crol_(a,j);//补齐,方便下面的左移一位 P1=0xff;//全部关闭

       a=a<<1;//左移一位让多一个灯点亮

       4.心得体会:此次实验中练习较多的就是闪烁和移位,在编程过程中,设置闪烁的时间必须达到人眼正常观察的要求,这就需要计算合适的闪烁时间,不停的尝试,最终选择适宜观察的时间间隔。发光管的循环移位时调用_crol_(k,l)函数

       可以大大简化编程的行数。所以熟悉单片机的函数库,可以方便我们编程。所以在以后的实验中还得继续学习这个函数库,从而更轻松的完成实验内容。

第五篇:《单片机原理及应用》实验报告

       实验一:单片机开发装置使用方法

       (小2号,加粗)

       一、实验目的(3号,加粗)内容(楷体,4号,不加粗)

       字符和数字用Times new Roman

       二、实验内容

       三、实验步骤

       四、实验结果

       五、实验分析

       六、实验总结