《单片机实验程序(全)》由会员分享,可在线阅读,更多相关《单片机实验程序(全)(13页珍藏版)》请在金锄头文库上搜索。
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; while(1) if(Key
2、add=0)/按键被按下时为0voice=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);elsebuzzer=1; 3定时器中断实验/*名称:实验三作业说 明:*/#include/包含头文件#define uint unsigned int /宏定义#define uchar unsigned char uchar counter;uchar voice;sbit buzzer=P35;sbit Keya
3、dd=P20;sbit Keydec=P21;sbit Keycom=P22;sbit Keycan=P23;/-计算计数器初值-/#define T0_TIME1254 /定时时间us为单位#define T0ReLoadL1 (65536-(uint)(T0_TIME1*11.0592/12) % 256)#define T0ReLoadH1 (65536-(uint)(T0_TIME1*11.0592/12) / 256) /-计算计数器初值-/#define T0_TIME21400 /定时时间us为单位#define T0ReLoadL2 (65536-(uint)(T0_TIME2
4、*11.0592/12) % 256)#define T0ReLoadH2 (65536-(uint)(T0_TIME2 *11.0592/12) / 256)/*名称:主程序说明:*/void main(void)/-初始化TIMER0 TMOD|=0x01;/定时器T0方式1TH0 =T0ReLoadH1;/装载计数器初值 TL0 =T0ReLoadL1;TR0 =1;/启动Timer0ET0 =1;/Timer0中断使能EA =1;/总开关使能/-大循环counter=0;while(1)if(Keyadd=0)/按键被按下时为0voice=1;if(Keydec=0)voice=2;i
5、f(Keycom=0)voice=3;/*名称:Timer0中断服务子程序功能:产生10ms定时中断*/void Timer0_Int(void) interrupt1if(voice=1) TH0=T0ReLoadH1;/重装载计数器初值 TL0=T0ReLoadL1; buzzer=buzzer;if(voice=2) TH0=T0ReLoadH2; TL0=T0ReLoadL2; buzzer=buzzer;if(voice=3) 4 LED数码管动态扫描显示实验#include#define uint unsignedint#define uchar unsignedchar/-LED
6、显示代码-/ 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,40x75,0x7d,0x23,0x7f,0x77,;/5,6,7,8,9ucharidatadis_buff_14;/第一行 LED显示缓冲ucharidatadis_buff_24;/第二行 LED显示缓冲ucharcounter;sbitU4_HC574_CP=P10;/S3 显示锁存74HC574脉冲sbitU5_HC574_CP=P11; /S4 显示锁存7
7、4HC574脉冲#define T0_TIME10000 /定时时间us为单位#define T0ReLoadL (65536-(uint)(T0_TIME*11.0592/12) % 256)#define T0ReLoadH (65536-(uint)(T0_TIME*11.0592/12) / 256)/*名称:数码管显示驱动子程序说明:*/void Display(void)uchardatai,j,k,temp00;temp00=0x20; for(i=0;i4;i+)P1 |= 0x3C;/关所有扫描位P0=dis_buff_1i;U4_HC574_CP=0;U4_HC574_CP
8、=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)uchardatabai,shi,ge;uintdataNum;uchardatatemp00;TMOD|=0x01;/定时器T0方式1TH0 =T0ReLoadH;/装载计数器初值 TL0 =T0ReLoadL;TR0 =1;/启
9、动Timer0ET0 =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;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) interrupt1 TH0=T0ReLoadH;/重装载计数器初值 TL0=T0ReLoadL;counter+;5实时时钟与温度传感器实验(只需main()部分代码)void main(void)uchar Hour,Min,Sec;/-初始化TIMER0 TMOD|=0x01;/定时器T0方式1TH0 =T0ReLoadH;