ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:26.22KB ,
资源ID:8407822      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8407822.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(试验报告 精品.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

试验报告 精品.docx

1、试验报告 精品 专业: 电科101 姓名: 李静 试验一 LED闪烁的简单试验试验目的:1、了解单片机C程序的基本结构2、了解单片机C程序的设计和调试方法3、掌握顺序控制程序的简单编程实验原理: p2口的八个端口分别对应控制8个LED灯,当对应端口 为低电平时,灯亮;否则灯灭。试验程序:#include /此文件中定义了51的一些特殊功能寄存器void delay(unsigned int i); /声明延时函数main() P2 = 0x00; /置P0口为低电平 点亮P2口8个LED灯 delay(600); / 调用延时程序 等待一段时间后熄灭 P2 = 0xff; /置P0口为高电平

2、熄灭P2口8个LED灯 delay(600); / 调用延时程序/*延时函数*/void delay(unsigned int i) unsigned char j; for(i; i 0; i-) /循环600*255次 机器在这里执行需要一段时间 也就达到了延时效果 for(j = 255; j 0; j-);试验二按键控制LED灯的亮灭试验目的: 1实现按键对LED的控制,及实现不同的功能,让按键更加多功能 ,熟练掌握按键功能。 2掌握顺序控制程序的简单编程试验原理: 按键则点亮LED灯,8路指示灯接p0口。通过控制按键来控制LED灯的亮灭,按下按键灯亮,反之灯灭。试验程序:#inclu

3、de /51的端口和各特殊寄存器定义在此文件中 此包含比不可少sbit LED = P20; /定义LED在P2.0脚上sbit K1 = P00; /定义按钮在P0.0脚上main() if(!K1) LED = 0; /当按键按下对应单片机脚变低电平 LED变低灯亮 else LED = 1; /当松开键按对应单片机脚变高电平 LED变高灯灭试验报告三按键控制程序试验目的: 按键控制程序试验原理: P2 与 JP1 (LED灯)连接, P0与 JP5(按键接口)连接 开始点亮P1LED,按P01 LED向右移一位,按P00LED向左移一位,连续 按动按钮LED会不停的左移或右移试验程序:

4、#include #include unsigned char scan_key();void proc_key(unsigned char key_v);void delayms(unsigned char ms);sbit K1 = P00; /对应按钮K1sbit K2 = P01; /对应按钮K2main() unsigned char key_s,key_v; key_v = 0x03; P2 = 0xfe; while(1) key_s = scan_key(); if(key_s != key_v) delayms(10); key_s = scan_key(); if(key_

5、s != key_v) key_v = key_s; proc_key(key_v); unsigned char scan_key() unsigned char key_s; key_s = 0x00; key_s |= K2; key_s = 1; key_s |= K1; return key_s; void proc_key(unsigned char key_v) if(key_v & 0x01) = 0) P2 = _cror_(P2,1); else if(key_v & 0x02) = 0) P2 = _crol_(P2, 1); void delayms(unsigned

6、char ms) / 延时子程序 unsigned char i; while(ms-) for(i = 0; i 120; i+); 试验报告四蜂鸣器简单发声试验目的: 1、学习8031内部端口的使用和编程方法。 2、进一步掌握顺序处理程序的编程方法。试验原理: p1.5接峰鸣器,按键接p0.0脚,利用按键控制峰鸣 器 发声。按下按键时,蜂鸣器发出声音。 试验程序: #include /51的端口和各特殊寄存器定义在此文件中 此包含比不可少sbit BEEP = P15; /定义蜂鸣器接、在P1.5脚上sbit K1 = P00; /定义按钮在P0.0脚上main() if(!K1) BEE

7、P = 0; /当按键按下对应单片机脚变低电平 BEEP发声 else BEEP = 1; /当松开键按对应单片机脚变高电平 BEE试验报告五继电器实验试验目的: 1学习8031内部继电器的使用方法。 2 学习驱动芯片处理程序的编程方法。试验原理: JP11(P2)与JP5(按钮接口) ,按下P2.7 继电器P1.4动作 , 通过74HC14控制ULN2003 驱动芯片驱动继电器 *试验程序:#include /51的端口和各特殊寄存器定义在此文件中sbit RELAY = P14; /定义继电器对应单片机管脚sbit K1 = P27; /定义按钮对应单片机管脚main() if (!K1)

8、 RELAY = 0; /按钮按下 开启继电器 else RELAY = 1; /按钮松开 关闭继电器试验报告六138译码器试验目的: 1. 了解138译码器工作原理 2. 学会用C语言对138译码器简单的编程控制 试验原理: 利用译码器输入端A 在 P2.2 管脚上,输入端B接P2.3, 输入端C接P2.4,来控制LED灯的亮灭试验程序:#include sbit HC138A = P22; /定义译码器输入端A 在 P2.2 管脚上sbit HC138B = P23; /定义译码器输入端B 在 P2.3 管脚上sbit HC138C = P24; /定义译码器输入端C 在 P2.4 管脚上

9、void delay(unsigned int i) unsigned char j; for(i; i 0; i-) for(j = 255; j 0; j-);main()/ 点亮第一个LED灯HC138C = 0; HC138B = 0; HC138A = 0; delay(1500); /延时/ 点亮第二个LED灯HC138C = 0; HC138B = 0; HC138A = 1;delay(1500); /延时/ 点亮第三个LED灯HC138C = 0; HC138B = 1; HC138A = 0;delay(1500);/ 点亮第四个LED灯HC138C = 0; HC138B

10、 = 1; HC138A = 1;delay(2000);/ 点亮第五个LED灯HC138C = 1; HC138B = 0; HC138A = 0;delay(1500);/ 点亮第六个LED灯HC138C = 1; HC138B = 0; HC138A = 1;delay(1500);HC138C = 1; HC138B = 1; HC138A = 0;delay(1500);HC138C = 1; HC138B = 1; HC138A = 1;delay(1500); 试验报告七试验目的:用单片机脚直接控制数码管试验原理:P0 与JP3 用8PIN排线连接,试验程序:#include #

11、include #define NOP() _nop_() /* 定义空指令 */void delay(unsigned int i); /函数声名/ 此表为 LED 的字模 unsigned char code LED7Code = 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71;main() unsigned int LedNumVal=1 ,C ; /定义变量 while(1) if (+C= 300) LedNumVal+ ; /每隔300个扫描周期加一次 C =0; /每隔

12、300个扫描清零 / 将字模送到P0口显示 P0 = LED7CodeLedNumVal%10&0x7f; /LED7 0x7f为小数点 共阴和共阳此处也是不一样; delay(150); /调用延时程序 试验报告八试验数码管上显示数字试验目的: 1单片机直接实现位选 共阴极2掌握数码管的位选,段选。 试验原理: 利用单片机的端口直接控制数码管,实现数字显示试验程序:#include #include void delay(unsigned int i); /函数声名char DelayCNT;/定义变量 /此表为 LED 的字模, 共阴数码管 0-9 - unsigned char code

13、 Disp_Tab = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40; /段码控制/此表为8个数码管位选控制, 共阴数码管 1-8个 - unsigned char code dispbit8=0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F; /位选控制 查表的方法控制/*主函数*/ main() unsigned int i,LedNumVal=1 ; /变量定义 unsigned int LedOut10; /变量定义 DelayCNT=0; while(1) if(+DelayCNT=20)

14、/控制数字变化速度 DelayCNT=0; /20个扫描周期清零一次 +LedNumVal; /每隔20个扫描周期加一次 LedOut0=Disp_TabLedNumVal%10000/1000; LedOut1=Disp_TabLedNumVal%1000/100|0x80; LedOut2=Disp_TabLedNumVal%100/10; LedOut3=Disp_TabLedNumVal%10; LedOut4=Disp_TabLedNumVal%10000/1000; /千位 LedOut5=Disp_TabLedNumVal%1000/100|0x80; /百位带小数点 LedOu

15、t6=Disp_TabLedNumVal%100/10; /十位 LedOut7=Disp_TabLedNumVal%10; /个位 for( i=0; i 0; i-) for(j = 200; j 0; j-); 试验报告九 试验数码管上显示数字试验目的: 培养运用单片机进行综合控制的能力和技巧试验原理: 译码器位选 共阴极,P0与J12 用8PIN排线连接试验程序:#include #include sbit LS138A = P22; /定义138译码器的输入A脚由P2.2控制 sbit LS138B = P23; /定义138译码器的输入脚B由P2.3控制sbit LS138C =

16、P24; /定义138译码器的输入脚C由P2.4控制void delay(unsigned int i); /函数声名char DelayCNT; /此表为 LED 的字模, 共阴数码管 0-9 - unsigned char code Disp_Tab = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40; /*主函数*/ main() unsigned int i,LedNumVal=1 ; unsigned int LedOut10; DelayCNT=0; while(1) /进入循环状态 if(+DelayCNT=50) D

17、elayCNT=0; /延时计数 每扫描一次加一次 +LedNumVal; /每隔50个扫描周期加一次 LedOut0=Disp_TabLedNumVal%10000/1000; LedOut1=Disp_TabLedNumVal%1000/100|0x80; LedOut2=Disp_TabLedNumVal%100/10; LedOut3=Disp_TabLedNumVal%10; LedOut4=Disp_TabLedNumVal%10000/1000; /千位 LedOut5=Disp_TabLedNumVal%1000/100|0x80; /百位带小数点 LedOut6=Disp_T

18、abLedNumVal%100/10; /十位 LedOut7=Disp_TabLedNumVal%10; /个位 for( i=0; i9; i+) /实现8位动态扫描循环 P0 = LedOuti; /将字模送到P0口显示 switch(i) /使用switch 语句控制位选 也可以是用查表的方式 学员可以试着自己修改 case 0:LS138A=0; LS138B=0; LS138C=0; break; case 1:LS138A=1; LS138B=0; LS138C=0; break; case 2:LS138A=0; LS138B=1; LS138C=0; break; case

19、3:LS138A=1; LS138B=1; LS138C=0; break; case 4:LS138A=0; LS138B=0; LS138C=1; break; case 5:LS138A=1; LS138B=0; LS138C=1; break; case 6:LS138A=0; LS138B=1; LS138C=1; break; case 7:LS138A=1; LS138B=1; LS138C=1; break; delay(150); 试验报告十 试验数码管显示时钟 试验目的: 1 通过本例程了解 DS1302时钟芯片的基本原理和使用 , 2 驱 动程序的编写以及实现数字字符在数

20、码管中的显示。 3懂DS1302在C语言中的操作 实验原理: DS1302时钟芯片的基本原理和使用 ,驱动程序的编写以及实现数字字符在数码管中的显示。JP1302跳线冒要短接。 *实验程序:#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include sbit SCK=P36; /时钟 sbit SDA=P34; /数据 sbit RST = P35;/ DS1302复位sbit LS138A=P22; sbit LS138B=P23;sbit LS138C=P24; bit ReadRTC_Flag;/定义读DS1302标志unsigned char l

21、_tmpdate7=0,0,12,15,5,3,8;/秒分时日月周年08-05-15 12:00:00unsigned char l_tmpdisplay8;code unsigned char write_rtc_address7=0x80,0x82,0x84,0x86,0x88,0x8a,0x8c; /秒分时日月周年 最低位读写位code unsigned char read_rtc_address7=0x81,0x83,0x85,0x87,0x89,0x8b,0x8d; code unsigned char table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d

22、,0x07,0x7f,0x6f,0x40; /共阴数码管 0-9 - 熄灭表void Write_Ds1302_byte(unsigned char temp); void Write_Ds1302( unsigned char address,unsigned char dat );unsigned char Read_Ds1302 ( unsigned char address );void Read_RTC(void);/read RTC void Set_RTC(void); /set RTC void InitTIMER0(void);/inital timer0void main(

23、void) InitTIMER0(); /初始化定时器0 Set_RTC(); /写入时钟值,如果使用备用电池时候,不需要没每次上电写入,此程序应该屏蔽 while(1) if(ReadRTC_Flag) ReadRTC_Flag=0; Read_RTC(); l_tmpdisplay0=l_tmpdate2/16; /数据的转换,因我们采用数码管09的显示,将数据分开 l_tmpdisplay1=l_tmpdate2&0x0f; l_tmpdisplay2=10; /加入- l_tmpdisplay3=l_tmpdate1/16; l_tmpdisplay4=l_tmpdate1&0x0f;

24、 l_tmpdisplay5=10; l_tmpdisplay6=l_tmpdate0/16; l_tmpdisplay7=l_tmpdate0&0x0f; void InitTIMER0(void) TMOD|=0x01;/定时器设置 16位 TH0=0xef;/初始化值 TL0=0xf0; ET0=1; TR0=1; EA=1;void Write_Ds1302_Byte(unsigned char temp) unsigned char i; for (i=0;i=1; /右移一位 SCK=1; void Write_Ds1302( unsigned char address,unsig

25、ned char dat ) RST=0; _nop_(); SCK=0; _nop_(); RST=1; _nop_(); /启动 Write_Ds1302_Byte(address); /发送地址 Write_Ds1302_Byte(dat); /发送数据 RST=0; /恢复/*/* 读出DS1302数据 */*/unsigned char Read_Ds1302 ( unsigned char address ) unsigned char i,temp=0x00; RST=0; _nop_(); _nop_(); SCK=0; _nop_(); _nop_(); RST=1; _nop_(); _nop_(); Write_Ds1302_Byte(address); for (i=0;i=1; /右移一位

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1