




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验一 流水灯实验2实验二 数码管静态显示实验3实验三 按键输入与数码管静态显示实验6实验四 数码管动态显示实验一10实验五 数码管动态显示实验二12实验六 键盘扫描实验15实验七 外部中断实验一17实验八 外部中断实验二20实验九 定时器实验一22实验十 定时器实验二24实验十一 定时器实验三27实验十二 串口实验一28实验十三 串口实验二29实验十四 串口实验三31实验十五 ad实验35实验十六 da实验38实验十七 点阵屏显示实验39实验十八 lcd1602显示实验41实验一 流水灯实验一、实验要求1. 在proteus软件中画好51单片机最小核心电路,包括复位电路和晶振电路2. 继续在
2、proteus软件中绘制电路,将p1口做输出口,接八只发光二极管3. 在keil软件中编写程序,实现功能,间隔1s点亮一个发光二极管,顺序从p1.0到p1.7依次点亮。二、实验目的1. 学习proteus软件的使用方法2. 学习keil软件的使用方法3. 学习端口输出的使用方法4. 掌握延时程序的设计三、实验说明(条理清晰,含程序的一些功能分析计算)在proteus软件中把实验要求的电路连接好,再利用keil软件把要实现的功能编写程序,生成hex文件,把hex文件导到proteus软件中进行仿真。在编写程序时需要延时1s,我们选的单片机是12mhz的,一机器周期是12个时钟脉冲,一个时钟脉冲的
3、时间是1/12us,即一个机器周期为1us。程序中子函数void delay_ms(int x)中x为1是可延时1ms,以此类推可得1s=1000ms,当x=1000时刚好延时1s。四、硬件原理图及程序设计(一)硬件原理图设计电路中p1.0到p1.7为led控制端口,排阻rp1阻值为330,at89c51单片机的9脚(rst)为复位引脚;31引脚(ea)为存取外部存储器使能引脚:单片机内部已接地,所以我们不用再接了。图如下:(二)程序流程图设计开始 设置初始值0x7f 输出/延迟左移 7次?yesno(三)程序设源代码#include /定义头文件#define led p1 /led接至p1
4、口void delay_ms(int x); /声明延时函数main() /主函数 int k; /定义变量 while(1) led=0x7f; /01111111 最右边一个亮 for(k=0;k8;k+) led=led1; delay_ms(1000);/延时1s void delay_ms(int x) /延时函数的开始 int i,j; for(i=0;ix;i+) for(j=0;j120;j+);五实验总结1、本实验应该是比较简单的,但实验中就是算时间的部分刚开始比较不懂,后通过同学的帮助让自己理解了是怎么来计算的。2、通过本次实验对点亮led灯有了一定的了解,这样也使自己对学
5、这门课变得更有兴趣。实验二 数码管静态显示实验一、实验要求1. 在proteus软件中画好51单片机最小核心电路,包括复位电路和晶振电路2. 在电路中增加一个7段数码管(共阳/共阴自选),将p2口作数据输出口与7段数码管数据引脚相连 3. 在keil软件中编写程序,采用静态显示法,实现数码管循环显示数字09,显示数字延时间隔1秒钟二、实验目的1. 巩固proteus软件和keil软件的使用方法2. 学习端口输入输出的高级应用3. 掌握7段数码管的连接方式和静态显示法4. 掌握查表程序和延时等子程序的设计三、实验说明(条理清晰,含程序的一些功能分析计算)在proteus中把实验所要求的把电路图连
6、接好,然后在kile软件中开始按实验要求来进行编程。本实验是要实现数码管09间隔1s加一的显示,到9又从0开始到9的不断循环,这样可一用for语句实现。它的每一秒的延时的计算跟实验一所表达的一样。四、硬件原理图及程序设计(一)硬件原理图设计电路中p2口作为数据的输出口,并再与数码管相连接之间加一个排阻,作为限流作用,此电路的数码管是采用共阳级的,所以公共端要接电源。at89c51单片机的9脚(rst)为复位引脚,当rst为高电平的时间达到2个机器周期时系统就会被复位。18、19引脚是接晶振脚。 开始(二)程序流程图设计 声明驱动数组声明延迟函数i=0赋值数码管tabi,并延时1si+i10no
7、yes(三)程序设源代码#include /定义头文件#define seg p2 /数码管接至p2口unsignedchar code tab=0xc0,0xf9,0xa4,0xb0,0x99, /数字040x92,0x83,0xf8,0x80,0x98; /数字59void delay_ms(int x); /声明延时函数main() int i; while(1) for(i=0;i10;i+) seg=tabi; delay_ms(1000); /延时1s void delay_ms(int x) /延时函数开始 int i,j; for(i=0;ix;i+) for(j=0;j9)i
8、f(show_value 0)yesyesshow_value =9show_value =0nonop2=tabshow_value(三)程序设源代码#include /定义8051寄存器的头文件#define led p2 /声明led接至p2口sbit key1=p30; /声明按钮1接至p3.0sbit key2=p31; /声明按钮1接至p3.1unsigned char tab=0xc0,0xf9,0xa4,0xb0,0x99, /数字040x92,0x83,0xf8,0x80,0x98; /数字59char show_value=0;void delay_ms(int x); /
9、声明延时函数main() while(1) /无穷循环 led=tabshow_value; key1=1; if(key1=0) /判断按键加按下 delay_ms(20); /去抖动 if(key1=0) /确定按键加按下 while(key1=0); /等待按键加放开show_value+; if(show_value9) show_value=0; key2=1; if(key2=0) /判断按键减按下 delay_ms(20); /去抖动 if(key2=0) /确定按键减按下 while(key2=0); /等待按键减放开 show_value-; if(show_value0)
10、show_value=9; void delay_ms(int x) /延时函数开始 int i,j; for(i=0;ix;i+) for(j=0;j120;j+); 五实验总结这次试验当我按照所要求的功能来编写程序完成的时候,我对本程序进行了编译发现没什么错误,但是只实现了一半的功能,发现按键按下减一不能减了,即按下无效,后来经过不断的检查发现其中有一个大括号的位置放错了,这样其实也好,如果说每个程序编下来都没任何问题,也许一有那么一次遇到问题会让你无从下手,这样的锻炼应该会对你做事的认真仔细会有一定的帮助。这样可以把理论跟实践紧密结合。实验四 数码管动态显示实验一一、实验要求1. 在pr
11、oteus软件中画好51单片机最小核心电路,包括复位电路和晶振电路2. 在电路中增加四个7段数码管(共阳/共阴自选),将p2口作数据输出口与7段数码管数据引脚相连 ,p1.0p1.3引脚输出选控制信号3. 在keil软件中编写程序,采用动态显示法,实现数码管分别显示数字1,2,3,4 二、实验目的5. 巩固proteus软件和keil软件的使用方法6. 学习端口输入输出的高级应用7. 掌握7段数码管的连接方式和动态显示法8. 掌握查表程序和延时等子程序的设计三实验说明(条理清晰,含程序的一些功能分析计算)电路是将所要显示的七段显示码由p2口分别送数据给4个数码管,在由p1.0p1.3的低四位将
12、扫描信号直接通过pnp三极管集电极分送到4个数码管的4个公共端,使这4个七段数码管显示“1234”,本程序是用for语句来实现对4个数码管的位选和段选进行扫描给予数据和位选。四、硬件原理图及程序设计(一)硬件原理图设计下图所示,可以很直观的看出此图所要涉及的电路接线法与实现的功能。该电路的p2口为数据输出口,在数码管的数据输入端串上220欧限流电阻。用的是四个共阳数码管。电路中的p10p13口分别接至pnp基极,发射极接电源vcc,集电极接公共端,给数码管驱动。(二)程序流程图设计 该电路按下开始时就开始调用赋值函数,for语句循环四次,如果for语句中i4四次则会一直循环着,直到for语句中
13、i=4时将停止循环。返回调用函数赋初值,并一直以此一直循环着开始 声明变量与调用赋初值yes4次扫描?noseg=tabjscanp=scani(三)程序设源代码#include /定义8051寄存器的头文件#define seg p2 /定义七段led数码管接至p2#define scanp p1 /定义信号扫描接至p1unsignedchar code tab=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x98;char scan=0xfe,0xfd,0xfb,0xf7; char disp=1,2,3,4; /声明显示数据char i,j;
14、void delay_ms(int x); /声明延迟函数main() while(1) for(i=0;i4;i+) /for语句的开始,循环4次 j=disp3-i; /取出显示数字 scanp=scani; /输出扫描信号 seg=tabj; /转换成驱动信号并输出至p2 delay_ms(4); void delay_ms(int x) /延迟函数的开始int i,j; for(i=0;ix;i+) for(j=0;j120;j+);五实验总结实验过程中遇到的问题及解决方法、体会这是我们做的第四个实验,我发现单片机可以做的功能越来越多,j=disp3-i; scanp=scani; s
15、eg=tabj;程序中的这几句,让我觉得应用的很好,它能把先对应的位和先对应要送的数结合起来。这次实验是采用扫描的方式来实现的,一开始让我对动态扫描有点不理解吗,后来经过上课时间再请教老师,后来就慢慢理解了。实验五 数码管动态显示实验二一、实验要求1. 在proteus软件中画好51单片机最小核心电路,包括复位电路和晶振电路2. 在电路中增加四个7段数码管(共阳/共阴自选),将p2口作数据输出口与7段数码管数据引脚相连 ,p1.0p1.3引脚输出选控制信号3. 在keil软件中编写程序,采用动态显示法,实现数码管显示变量unsigned int show_value的值(show_value的
16、值范围为00009999),即把show_value的千百十个位的值用数码管显示出来。二、实验目的1. 巩固proteus软件和keil软件的使用方法2. 学习端口输入输出的高级应用3. 掌握7段数码管的连接方式和动态显示法4. 掌握查表程序和延时等子程序的设计三实验说明(条理清晰,含程序的一些功能分析计算)这个实验十将p2口作为数据输出口送数据给四个数码管,p1.0p1.3作为选控信号直接用三极管的集电极送给4个数码管的公共端,让其达到实验的要求。实验中是用for语句来循环扫描位选和段选信号的。四、硬件原理图及程序设计(一)硬件原理图设计下图所示,可以很直观的看出此图所要涉及的电路接线法与实
17、现的功能。该电路的p2口为数据输出口,在数码管的数据输入端串上220欧限流电阻。用的是四个共阳数码管。电路中的p10p13口分别接至pnp基极,发射极接电源vcc,集电极接公共端,给数码管驱动。其中18、19、9、31管脚所接的电路就是单片机的复位和晶振电路。(二)程序流程图设计开始 函数的声明与定义i=0noi100000yesshow赋值显示i+(三)程序设源代码#include#define seg p2#define scanp p1unsignedchar code tab=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x98;char
18、disp4;char scan4=0xfe,0xfd,0xfb,0xf7;unsigned int show=1905;void display();void get();void delay_ms(int x);main() while(1) display(); get(); void display()int i,j; for(i=0;i4;i+) j=disp3-i; scanp=scani; seg=tabj; delay_ms(4); void get() disp0=show/1000; disp1=show%1000/100; disp2=show%100/10; disp3=
19、show%10;void delay_ms(int x)int i,j; for(i=0;ix;i+) for(j=0;j120;j+);五实验总结实验过程中遇到的问题及解决方法、体会这个实验4需要多一些显示变量unsigned int show_value 的值(show_value的值范围为00009999),即把show_value的千百十个位的值用数码管显示出来。这个实验是在实验的基础上多加了一些变量,所以这次的实验基本没什么问题,因为在第4个上的问题已经解决了,所以说知识先后是有联系的,要学好这门课就必须每个课时都认真学好。真正做在融会贯通。实验六 键盘扫描实验一、实验要求1. 在p
20、roteus软件中画好51单片机最小核心电路,包括复位电路和晶振电路2. 在电路中设计p1口与一个7段数码管相连接(共阳/共阴自选);3. 电路中绘制一个4x4键盘,分别定义键盘值从0到9,a,b,c,d,e,f,与p2口相连接;4. 在keil软件中编写程序,对键盘进行扫描,将扫描到的键盘值用数码管进行显示。 二、实验目的1. 学习端口输入输出的高级应用2. 掌握7段数码管的连接方式和显示法3. 掌握4x4键盘的扫描原理和程序三实验说明(条理清晰,含程序的一些功能分析计算)该电路是p1口作为数据输出口,与一个共阳数码管相接,p2口是4x4键盘数据输入口,当键盘上的任意一个键按下时,数码管就会
21、显示该按键所对应的数字,并且放开按键后能继续保持显示,当按下另一个按键时,就会显示按下那个按键所对应的数字。实现键盘扫描数组和显示数组分别定义了scan数组和tab数组,在键盘扫描后经过kcode = 4 * col + row进行计算出按键的值。四、硬件原理图及程序设计(一)硬件原理图设计该电路是p1口做为数据输出口,在数据输入数码管前加了一个限流电阻,p3口就是4*4的扫描键盘的设置,其中18、19、9、31管脚接的电路就是单片机的复位电路和晶振电路。(二)程序流程图设计 声明变量与函数数输出显示数据与扫描信号读取按键值按键按下?第零行?row=0第一行?row=1第二行?row=2第三行
22、?row=3调用延迟函数放开按键?计算键值开始读取键值noyesyesnoyesnoyesnoyesnoyesno这个流程图主要就是在不断的扫描,当有按键按下,就会进行按键值的判断和计算。(三)程序设源代码#include /定义8051寄存器头文件#define seg p1 /定义七段led数码管连接到p1#define key p2 /定义按键连接到p2unsigned char code tab=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98,0xa0,0x83,0xa7,0xa1,0x84,0x8e;char scan4=0xef,
23、0xdf,0xbf,0x7f; /显示器及键盘扫描码void delay_ms(int x); /延迟函数声明main() unsigned char row,col,rowkey,kcode; /声明变量(col:列,row:行,rowkey:行键 while(1) 值,kcode:按键值) for(col=0;col4;col+) key=scancol; rowkey=key&0x0f; /读入keyp低四位,反向清除高4位求行键值 if(rowkey!=0) if(rowkey=0x01) row=0; else if(rowkey=0x02) row=1; else if(rowke
24、y=0x04) row=2; else if(rowkey=0x08) row=3; kcode=4*col+row;seg=tabkcode;while(rowkey!=0)rowkey=key&0x0f; /再读入行键值 delay_ms(4); void delay_ms(int x) /延迟函数的开始int i,j; for(i=0;ix;i+) for(j=0;j120;j+);五实验总结实验过程中遇到的问题及解决方法、体会这是我们的第六个实验,发现自己的思维必须更加清晰,因为程序越来越复杂,所以必须加强课外的练习,和借助和课外书的参考,起初对rowkey=key&0x0f;一直不理
25、解,后来经过自己不断的看书和反复的思考和同学的讨论解决的。实验七 外部中断实验一一、实验要求1. 在proteus软件中画好51单片机最小核心电路,包括复位电路和晶振电路;2. p1口上拉接8个led;3. 在keil软件中编写程序,对led显示进行控制,显示方式有两种:(1)0、7亮,1、6亮,2、5亮,3、4亮,0、7亮循环;(2)3、4亮,2、5亮,1、6亮,0、7亮,3、4亮循环。 4. 在p3.2连接一个按键k,当按键弹起时引脚为高电平,当按键按下时引脚为低时平;5. 编写程序:系统对led显示进行控制,一开始显示方式为(1),当按下p3.2连接的按键k时,显示方式为(2),再按下p
26、3.2连接的按键k时,显示方式为(1);即当按下p3.2连接的按键k时,系统在显示方式(1)和(2)之间切换;二、实验目的1. 学习端口输入输出的高级应用2. 掌握led查表显示法3. 掌握外部中断的工作原理4. 掌握外部中断程序设计三实验说明(条理清晰,含程序的一些功能分析计算)按照实验的要求把电路路在仿真中连接好,其中包括了复位电路和晶振电路,8个led与p1口相接,开关与p3.2相接,当按下开关时led的显示方式进行切换,再次按下再进行一次的变换,只要按下开关就会不断的在两种方式切换,这个是采用外部中断的方式完成的。四、硬件原理图及程序设计(一)硬件原理图设计(二)程序流程图设计开始变量
27、定义与赋值if(b=0)for(i=0)led=tabi;i+;noyesi4;nofor(i=0)yesi4;led=tab3-i;i+;int0b=b(三)程序设源代码#include /定义8051寄存器头文件 #define led p1 /定义p1为led控制口unsigned char code tab=0x7e,0xbd,0xdb,0xe7; /定义led数组int a,b; /定义变量void delay_ms(int x); /延时函数声明main() ea=1; /开启中断总开关 ex0=1; /开启外部中断0 it0=1; b=0; while(1) if(b=0) /工
28、作方式为1 for(a=0;a=0;a-) led=taba; delay_ms(500); void int0_isk(void) interrupt 0 /外部中断0子函数 b=b; void delay_ms(int x) /延迟函数的开始int i,j; for(i=0;ix;i+) for(j=0;j120;j+); 五实验总结实验过程中遇到的问题及解决方法、体会这是第七个实验,实验过程中一开始我是把一种直接放在主程序里面,另一种状态放在中断函数中这样导致按键按下只有一次切换到另一个状态,再次按下变的无法切换回第一个状态了,这样之后我再想到了一个办法就是再定义了一个变量b,把两种状态
29、全部放入到了主函数中,当b=0执行第一个状态,当b=1执行第二个状态,这样中断函数中只要b=b即可。实验过程中就是要多思考,这样对自己写程序的思维才能更好的锻炼。实验八 外部中断实验二一、实验要求1. 在proteus软件中画好51单片机最小核心电路,包括复位电路和晶振电路;2. 在电路中增加一个7段数码管(共阳/共阴自选),将p2口作数据输出口与7段数码管数据引脚相连 ;3. 在p3.2和p3.3分别连接一个按键,当按键弹起时引脚为高电平,当按键按下时引脚为低时平;4. 在keil软件中编写程序:实现数码管循环显示数字09,程序一开始数码管显示0,当按下p3.0引脚对应按键时,显示数字加一;
30、当按下p3.1引脚对应按键时,显示数字减一;(注意按键采用外部中断方式识别)二、实验目的1. 掌握7段数码管的连接方式和静态显示法2. 巩固中断的知识,学会外部中断的使用3. 掌握查表程序、中断服务子程序和延时等子程序的设计三实验说明(条理清晰,含程序的一些功能分析计算)把实验要求的电路在仿真软件中连接好,开始写程序先把要用的函数、变量先定义好,其中是采用外部中断的方式识别,当按下p3.2时数字加一,当按下p3.3时数字减一。在数值大于9和小于0的时候要做出判断,这样才能不出错。四、硬件原理图及程序设计(一)硬件原理图设计p2作为数据的输出口,在数据输入数码管前加一个限流电阻,在p3.2、p3
31、.3直接加两个开关,用这个来控制中断。另外9、18、19、31管脚接的电路就是复位电路和晶振电路。(二)程序流程图设计开始声明函数、变量int0初值显示0按键1按下?加一并输出int1按键按下? 减一并输出yesnoyesno保持保持 (三)程序设源代码#include /定义8051寄存器头文件 #define seg p2 /定义数码管的位置unsigned char code tab=0xc0, 0xf9, 0xa4, 0xb0, 0x99, /数字04的码值0x92, 0x83, 0xf8, 0x80, 0x98 ; /数字59的码值char i;main() seg=tab0; /赋
32、初值 ie=0x85; /开启外部中断的总开关及外部中断0和外部中断1 it0=1; it1=1; while(1) seg=tabi; void int0_isr(void) interrupt 0 /外部中断0开始 i+; if(i9) i=0; void int1_isr(void) interrupt 2 /外部中断1开始 i-; if(i0) i=9; 五实验总结实验过程中遇到的问题及解决方法、体会这个实验采用的是外部中断的方式来控制数码管显示的加减,实验中单片机的两个外部中断都用到了,一个用来中断增一,一个用来中断减一。实验过程中把两个外部中断名取一样了,结果导致了错误,后来经过了
33、改正使程序变的成功。实验九 定时器实验一一、 实验要求1. 用定时器方式现p.口输出0.5k的方波2. 用定时器方式现p.口输出1k的方波3. 用定时器方式现p.口输出5k的方波4. 以上方式查询法和中断法均可。二、实验目的1. 巩固中断的知识,学会定时器的使用方法;2. 掌握定时器初值的计算和工作方式的使用;3. 掌握中断服务子程序的设计三实验说明(条理清晰,含程序的一些功能分析计算)这个实验是用定时器中断的方法来产生0.5k、1k、5k的方波,把实验要求的把p1口作为输出的控制口,其中tmod=0x01是让它工作在方式一,th0=(65536-count)/256; tl0=(65536-
34、count)%256;是先给定时器赋初值,就是溢出一次是100us,所以程序中time-cnt+,time-cnt=t-cnt,t-cnt=5、t-cnt=10、t-cnt=50,分别就代表0.5k、1k、5k方波的产生。四、硬件原理图及程序设计(一)硬件原理图设计(二)程序流程图设计time-cnt=t_cnt开始开启定时器0并且赋初值。t_cnt=5;key=0key=1key=2t_cnt=10;t_cnt=50;nonoyesyesyesnotf0th0=(65535-100)/256;th1=(65535-100)%256;t+;time-cnt=0;p20=p20;yesno(三)
35、程序设源代码#include /定义8051寄存器的头文件#define count 100 /t0(mode1)的计数值,约0.1mssbit p2_0=p20;unsigned int t_cnt; /定义定时器中断的次数unsigned int time_cnt;unsigned char key=0;main() /主程序开始 tmod=0x01; /定时器选择工作方式1 th0=(65536-count)/256; tl0=(65536-count)%256; ie=0x82; tr0=1; while(1) key=p1&0x03; if(key=0) t_cnt=5; /拨码开关
36、值并计数中断次数 if(key=1) t_cnt=10; /拨码开关值并计数中断次数if(key=2) t_cnt=50; /拨码开关值并计数中断次数 void time0_isr(void) interrupt 1 /中断函数 th0=(65536-count)/256; tl0=(65536-count)%256; /赋初值 time_cnt+; if(time_cnt=t_cnt) time_cnt=0; p2_0=p20; 五实验总结实验过程中遇到的问题及解决方法、体会用定时器中断的方式来产产生0.5k 、1k、5k的方波,这是定时器中断的第一个实验,在使用的过程中发现对定时器中断并不
37、是很熟。还有程序中key=p1&0x03;在其中的作用,一开始不大理解,后来请教同学,燃我明白了,其实它就是key如果要等于0那么p1就不用动作,如果要等于1那就是第一个开关打开,以此类推。这就是它的作用。经过努力补习后发现其实也不是想象中那么难。实验十 定时器实验二一、 实验要求1. 将p0口和一个数码管相连,采用静态显示法,电路用共阳极。2. 采用中断法实现定时器1s的定时,每s时间到时,使数码管的显示数字加一,数字在09间循环。二、实验目的1. 掌握7段数码管的连接方式和显示方法;2. 巩固中断的知识,学会定时器的使用方法;3. 掌握定时器初值的计算和使用;4. 掌握数码管查表显示程序、
38、中断服务子程序的设计三实验说明(条理清晰,含程序的一些功能分析计算)这个程序是采用定时器的方式让定时器工作在模式一, 程序中th0=(65536-count)/256; tl0=(65536-count)%256; a+; if(a=20) ,a=0;这就给它赋初值,赋了50ms,a+,当a=20,也就是20*50ms=1000ms,也就是1s,接着i+,也就是1s加一,也就达到了实验的要求。程序中当i9时,做出判断,并同时让其从零重新开始。四、硬件原理图及程序设计(一)硬件原理图设计(二)程序流程图设计开始开启定时器0并且赋初值。seg=tabi;tf0th0=(65535-100)/256
39、;tl0=(65535-100)%256;a+;a=20a=0;i+;yesnoi=10i=0;yes(三)程序设源代码#include /定义8051寄存器头文件#definesegp0 /定义数码管接至p0#define count 50000/t0(mode1)的计数值,50mschar code tab10=0xc0, 0xf9, 0xa4, 0xb0, 0x99,0x92, 0x83, 0xf8, 0x80, 0x98 ;int i=0,a; main() tmod=0x01; /定时器选择工作方式1 ie=0x82; th0=(65536-count)/256; /t0(mode)
40、计数高8位 tl0=(65536-count)%256; /t0(mode)计数低8位 tr0=1; /启动t0 while(1) seg=tabi; void int0_isk(void) interrupt 1 th0=(65536-count)/256; /重新设置定时器值 tl0=(65536-count)%256; a+; if(a=20) /1s时间到 a=0; i+;if(i9) /数字大于9 i=0; /数字等于0 五实验总结实验过程中遇到的问题及解决方法、体会这是定时器中断的第二个实验,经过上一个定时器的学习和补充了一些自己不懂的知识,那么在这个实验中碰到的问题相对就比较少了
41、,就是在写程序的过程中可能写的比较快,结果犯了一个错误,把main()写成mian()了,导致了错误,经过检查后改正了,这么多个程序的实验下来,其实感受比较多的就是在写程序中真的得认真,因为语言程序是比较严谨的。实验十一 定时器实验三一、 实验要求1. 将p2口和四个数码管的数据口相连,p1口和位选线相连接,电路用共阳极;2. 数码管显示位从前两位分钟、后两位为秒;分钟和秒的值从00到59增加;3. 实现定时器1s的定时,每s时间到时,使秒钟加一,当秒钟为60时,显示为00秒,分钟加一;当分钟为60时,显示为00分,从新开始一个小时的计时。二、实验目的4. 掌握7段数码管的连接方式和显示方法;
42、5. 巩固中断的知识,学会定时器的使用方法;6. 掌握定时器初值的计算和使用;7. 掌握数码管查表显示程序、中断服务子程序的设计三实验说明(条理清晰,含程序的一些功能分析计算)四、硬件原理图及程序设计(一)硬件原理图设计(二)程序流程图设计开始函数声明设置定时器中断,设置定时器初值,启动定时器。get_disp(show_s,show_m);display();tf0重置定时器初值。20次show_s+;show_s=0;show_s=0;show_m+;show_m=60show_m=0;nononoyesyesyes(三)程序设源代码五实验总结实验过程中遇到的问题及解决方法、体会实验十二
43、串口实验一一、 实验要求(一)、硬件部分1. 将p0口与8个led相连;2. 将p3.0与74165的数据输出out口相连,将p3.1与74165的移位时钟口clock相连;将p3.2与74165的数据移位装载控制引脚shift/load相连;3. 74165的数据口分别接8个拔码开关(二)、软件部分1. 利用74165将拔码开关的状态转换成串行数据,并由单片机rxd引脚输入,并将输入的数据状态用led反映出来。二、实验目的1. 掌握led的连接方式和显示方法;2. 掌握74165的使用方法;3. 掌握串口通信方式0的使用;4. 掌握通信程序的设计三实验说明(条理清晰,含程序的一些功能分析计算)按照实验要求把电路图在仿真中连接好,然后按按要求来编写程序,这个实验是用74ls165将8个拨码开关转换成串行数据,并用led将他它们的状态反映出来,其中while(ri=0);就是等待接收数据完成,如果完成了就将它的状态在led中表示出来。四、硬件原理图及程序设计(一)硬件原理图设计(二)程序流程图设计开始设置串行口mode 0,输入方式输出负脉冲输入完成将sbuf输出到p0yesno(三
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030细胞分离行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030糖尿病食品行业市场深度分析及前景趋势与投资研究报告
- 2025-2030离心机市场前景分析及投资策略与风险管理研究报告
- 2025-2030石头纸行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030真空镀铝纸行业市场发展分析及投资前景研究报告
- 2025-2030畜牧养殖管理行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030电池探测器行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030珠宝首饰行业市场风险投资业发展分析及运作模式与投资融资策略研究报告
- 2025-2030环境监测行业发展分析及投资战略研究报告
- 2025-2030版权音乐行业市场发展分析及前景趋势与投资研究报告
- 入团积极分子团课我的青春我的团课件
- 辽宁省沈阳市皇姑区2023-2024学年七年级上学期期末英语试卷+
- 列车电子防滑器-电子防滑器原理
- 《教师职业道德与政策法规》考试复习题库(含答案)
- 【简易数字万用表设计10000字(论文)】
- 马后炮化工论坛-Aspen官方中文培训资料
- 游戏:看表情符号猜成语PPT
- 别墅加装电梯井施工方案
- 思想政治素质和品德考核表
- 【初中名著】朱自清《经典常谈》电子书原文
- 全国肿瘤防治宣传周活动方案
评论
0/150
提交评论