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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

单片机实验程序全.docx

1、单片机实验程序全2基本输入输出实验(蜂鸣器控制程序)/*名称: 基本输入输出(I/O)程序说 明:*/#include /包含头文件#define uint unsigned int /宏定义#define uchar unsigned char sbit buzzer=P35;sbit Keyadd=P20;sbit Keydec=P21;sbit Keycom=P22; void Delay(uint z) uint x; uchar y; for(x=z;x0;x-) /延时 for(y=250;y0;y-); void main(void) uchar voice; voice=3;

2、while(1) if(Keyadd=0) /按键被按下时为0 voice=1; if(Keydec=0) voice=2; if(Keycom=0) voice=3; if(voice=1) buzzer=buzzer; Delay(1); else if(voice=2) buzzer=buzzer; Delay(20); else buzzer=1; 3定时器中断实验/*名称: 实验三作业说 明:*/#include /包含头文件#define uint unsigned int /宏定义#define uchar unsigned char uchar counter;uchar vo

3、ice;sbit buzzer=P35;sbit Keyadd=P20;sbit Keydec=P21;sbit Keycom=P22;sbit Keycan=P23;/-计算计数器初值-/#define T0_TIME1 254 /定时时间us为单位#define T0ReLoadL1 (65536-(uint)(T0_TIME1*11.0592/12) % 256) #define T0ReLoadH1 (65536-(uint)(T0_TIME1*11.0592/12) / 256) /-计算计数器初值-/#define T0_TIME2 1400 /定时时间us为单位#define T

4、0ReLoadL2 (65536-(uint)(T0_TIME2*11.0592/12) % 256) #define T0ReLoadH2 (65536-(uint)(T0_TIME2 *11.0592/12) / 256)/*名称: 主程序说明: */void main(void) /-初始化TIMER0 TMOD|=0x01; /定时器T0方式1 TH0 =T0ReLoadH1; /装载计数器初值 TL0 =T0ReLoadL1; TR0 =1; /启动Timer0 ET0 =1; /Timer0中断使能 EA =1; /总开关使能 /-大循环 counter=0; while(1) i

5、f(Keyadd=0) /按键被按下时为0 voice=1; if(Keydec=0) voice=2; if(Keycom=0) voice=3; /*名称:Timer0中断服务子程序功能:产生10ms定时中断*/void Timer0_Int(void) interrupt 1 if(voice=1) TH0=T0ReLoadH1; /重装载计数器初值 TL0=T0ReLoadL1; buzzer=buzzer; if(voice=2) TH0=T0ReLoadH2; TL0=T0ReLoadL2; buzzer=buzzer; if(voice=3) 4 LED数码管动态扫描显示实验#i

6、nclude#define uint unsigned int#define uchar unsigned char/-LED显示代码-/ bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0/ dp G C D E F B Auchar code seg10= 0x3f,0x22,0x5b,0x73,0x66, /0,1,2,3,4 0x75,0x7d,0x23,0x7f,0x77,; /5,6,7,8,9uchar idata dis_buff_14; /第一行 LED显示缓冲uchar idata dis_buff_24; /第二行 LED显示缓冲uchar c

7、ounter;sbit U4_HC574_CP =P10; /S3 显示锁存74HC574脉冲sbit U5_HC574_CP =P11; /S4 显示锁存74HC574脉冲#define T0_TIME 10000 /定时时间us为单位#define T0ReLoadL (65536-(uint)(T0_TIME*11.0592/12) % 256) #define T0ReLoadH (65536-(uint)(T0_TIME*11.0592/12) / 256)/*名称: 数码管显示驱动子程序说明: */void Display(void) uchar data i,j,k,temp00

8、; temp00=0x20; for(i=0;i4;i+) P1 |= 0x3C; /关所有扫描位 P0=dis_buff_1i; U4_HC574_CP=0; U4_HC574_CP=1; /S3显示锁存74HC574脉冲 上升沿 P0=dis_buff_2i; U5_HC574_CP=0; U5_HC574_CP=1; /S4显示锁存74HC574脉冲 上升沿 P1 &= (temp00); /送扫描位 for(j=0;j20;j+) /延时 for(k=0;k=1; /扫描位移位 P1|=0x3C; /关所有扫描位/*名称: 主程序*/void main(void) uchar data

9、 bai,shi,ge; uint data Num; uchar data temp00; TMOD|=0x01; /定时器T0方式1 TH0 =T0ReLoadH; /装载计数器初值 TL0 =T0ReLoadL; TR0 =1; /启动Timer0 ET0 =1; /Timer0中断使能 EA =1; /总开关使能 counter=0; Num=999; for(;) bai=Num/100; temp00=Num-bai*100; shi=temp00/10; ge =temp00-shi*10; dis_buff_10=0; dis_buff_11=0; dis_buff_12=0;

10、 dis_buff_13=0; dis_buff_20=0; dis_buff_21=segbai; dis_buff_22=segshi; dis_buff_23=segge; if(counter=100) counter=0; Num-; if(Num=0) Num=999; Display(); /调用LED数码管显示子程序 void Timer0_Int(void) interrupt 1 TH0=T0ReLoadH; /重装载计数器初值 TL0=T0ReLoadL; counter+;5实时时钟与温度传感器实验(只需main()部分代码)void main(void) uchar

11、Hour,Min,Sec; /-初始化TIMER0 TMOD|=0x01; /定时器T0方式1 TH0 =T0ReLoadH; /装载计数器初值 TL0 =T0ReLoadL; TR0 =1; /启动Timer0 ET0 =1; /Timer0中断使能 EA =1; /总开关使能 counter=0; /-大循环 WR_DS1302(0x8e,0X00); WR_DS1302(0x84,0X14); WR_DS1302(0x82,0X43); WR_DS1302(0x80,0X00); WR_DS1302(0x8e,0X80); for(;) Hour=RD_DS1302(0x85); Min

12、=RD_DS1302(0x83); Sec=RD_DS1302(0x81); dis_buff_10=segHour4; if(counter=49) dis_buff_11=segHour&0x0f|0x80; else if(counter4; dis_buff_13=segMin&0x0f; dis_buff_20=0; dis_buff_21=0; dis_buff_22=segSec4; dis_buff_23=segSec&0x0f; Display(); 6 74HC595串行输入实验#include / use _nop_() function#include#define u

13、int unsigned int#define uchar unsigned charuchar counter;/-计算计数器初值-/#define T0_TIME 10000 /定时时间us为单位#define T0ReLoadL (65536-(uint)(T0_TIME*11.0592/12) % 256) #define T0ReLoadH (65536-(uint)(T0_TIME*11.0592/12) / 256)uchar bdata HC595_buff2; /交通灯控制1的位寻址变量sbit HC595RegCLK =P25; /4hc595锁存时钟 输出sbit HC5

14、95S_Data =P26; /74hc595串行数据 输出sbit HC595ShiftCLK =P27; /74hc595串行移位时钟 输出 /*名称:WR_74HC595说明:向2片74HC595写入2字节数据(HC595_buff)*/void WR_74HC595(void) uchar i,j,k,temp00; HC595RegCLK = 0; /锁存线置“低” HC595ShiftCLK = 0; /HC595.CLK =0 for(i=0;i2;i+) k=0X80; temp00=HC595_buff1-i; for(j=0;j= 1; /k右移一位 HC595ShiftC

15、LK = 0; /HC595.CLK HC595RegCLK = 1; /产生上升沿,锁存数据void Timer0_Int(void) interrupt 1 TH0=T0ReLoadH; /重装载计数器初值 TL0=T0ReLoadL; counter+;/*名称:主程序说明:main主函数放在所有子程序的后面,自称无需声明定义 */void main(void) uchar CN,i; CN=0; HC595_buff0=0x00; HC595_buff1=0x00; /-初始化TIMER0 TMOD|=0x01; /定时器T0方式1 TH0 =T0ReLoadH; /装载计数器初值 T

16、L0 =T0ReLoadL; TR0 =1; /启动Timer0 ET0 =1; /Timer0中断使能 EA =1; /总开关使能 counter=0; for(;) if(CN10) if(counter=50) counter=0; HC595_buff0=HC595_buff0; HC595_buff1=HC595_buff1; CN+; counter=0; i=0; if(CN=10) HC595_buff0=0x00; HC595_buff1=0x08; else if(CN=10) if(counter=10) i+; counter=0; if(i=1; else if (i

17、=4) HC595_buff0=0x80; HC595_buff1=0x00; else if(i=1; else if(i=12) i=0; HC595_buff0=0x00; HC595_buff1=0x08; WR_74HC595(); 7交通信号灯控制实验(仅需TraficLighter_ctrl()子程序部分代码)void TraficLighter_ctrl(void) switch(TraficLighter_state) case 0: /初始化状态,两个方向都为红灯5秒钟 if(timer_count1=50) timer_count1=0; HC595_buff0=HC59

18、5_buff0; HC595_buff1=HC595_buff1; if (timer_count0=0) TraficLighter_state=1; timer_count0=30; HC595_buff0=0; HC595_buff1=0; break; case 1: /状态1,南北方向红灯,东西绿灯 East_Green=1; West_Green=1; North_Red=1; South_Red=1; if(timer_count0=0) TraficLighter_state=2; timer_count0=5; HC595_buff0=0; HC595_buff1=0; br

19、eak; case 2: /状态2,南北方向红,东西黄灯闪烁 South_Red=1; North_Red=1; if(timer_count1=50) timer_count1=0; East_Yellow=East_Yellow; West_Yellow=West_Yellow; if(timer_count0=0) TraficLighter_state=3; timer_count0=50; HC595_buff0=0; HC595_buff1=0; break; case 3: /状态3,南北方向绿灯,东西红灯 East_Red=1; West_Red=1; North_Green=

20、1; South_Green=1; if(timer_count0=0) TraficLighter_state=4; timer_count0=5; HC595_buff0=0; HC595_buff1=0; break; case 4: /状态4,东西方向红,南北黄灯闪烁 East_Red=1; West_Red=1; if(timer_count1=50) timer_count1=0; South_Yellow=South_Yellow; North_Yellow=North_Yellow; if(timer_count0=0) TraficLighter_state=1; timer_count0=5; HC595_buff0=0; HC595_buff1=0; break; 8 UART串口通讯实验#include /包含头文件#define uint unsigned int /宏定义#define uchar unsigned char uchar Rec_No; uchar Rec_Data; uchar Rec_Addr; uchar Send_ok; uchar Rec_order; uchar Self_Addr;sbit relay=P37;/*名称: 主程序说明: *

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

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