东华大学51单片机课程设计硬件实验答案大全6题.docx

上传人:rrsccc 文档编号:9437041 上传时间:2021-02-26 格式:DOCX 页数:8 大小:72.02KB
返回 下载 相关 举报
东华大学51单片机课程设计硬件实验答案大全6题.docx_第1页
第1页 / 共8页
东华大学51单片机课程设计硬件实验答案大全6题.docx_第2页
第2页 / 共8页
东华大学51单片机课程设计硬件实验答案大全6题.docx_第3页
第3页 / 共8页
东华大学51单片机课程设计硬件实验答案大全6题.docx_第4页
第4页 / 共8页
东华大学51单片机课程设计硬件实验答案大全6题.docx_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《东华大学51单片机课程设计硬件实验答案大全6题.docx》由会员分享,可在线阅读,更多相关《东华大学51单片机课程设计硬件实验答案大全6题.docx(8页珍藏版)》请在三一文库上搜索。

1、说明:哈哈哈哈哈哈,学长造福学弟学妹们啦。有这个在手,还怕 51 硬件实验吗?哈哈哈哈哈哈(都能直接运行的,下载了别忘记给 5 分,或者跟我说声:好人一生平安)实验 2#includevoid delay(void)/ 延时函数unsigned int i;for(i=0;i100;i+);void main(void)unsigned char num,i=0;while(1)P1 = 0xff;num = P1&3;switch (num)case 0:P1 = 0xff;break;/ 灯全灭case 1:if(i100) P1 = 0xf3;else P1 = 0xff;break;/

2、 两个灯闪烁case 2:if(i100) P1 = 0xcf;else P1 = 0xff;/ 两个灯闪烁break;case 3:if(i200)i = 0;实验3#include #include #define Out_portXBYTE0xcfa0void delay(unsigned int time)char i;for(;time0;time-)for(i=0;i5;i+);void led_out(unsigned char dat)Out_port = dat;void main(void)char i=0;led_out(0x11);/ 两个路口的红灯全亮delay(30

3、000);while(1)led_out(0x12);/ 东西路口的绿灯亮,南北路口的红灯亮delay(30000);while(i5)/ 东西方向黄灯闪烁5 次led_out(0x10);delay(1000);led_out(0x14);delay(1000);i+;i=0;while(i10)/*将黄灯闪烁10led_out(0x00);delay(1000);led_out(0x44);delay(1000);i+;led_out(0x21);/ 东西路口红灯亮,而同时南北路口的绿灯亮delay(30000);i=0;while(i5)/ 南北方向黄灯闪烁led_out(0x01);d

4、elay(1000);led_out(0x41);delay(1000);i+;/*led_out(0x03);delay(1000);*/实验5#include #include #define Out_portXBYTE0xcfb0void delay(unsigned int time)char i;for(;time0;time-)for(i=0;i5;i+);void led_out(unsigned char dat)Out_port = dat;void urgent(void) interrupt 0/*将闪烁时间改为10 秒unsigned inti;EA = 0;/ 现在不

5、允许中断while(i25)led_out(0x11);delay(1000);led_out(0x00);delay(1000);i+;i=0;EA = 1;void main(void)char i=0;IT0 = 1;EX0 = 1;EA = 1;led_out(0x11);delay(30000);while(1)led_out(0x12);delay(30000);while(i5)led_out(0x10);delay(1000);led_out(0x14);delay(1000);i+;led_out(0x11);delay(1000);led_out(0x21);delay(3

6、0000);i=0;while(i5)led_out(0x01);delay(1000);led_out(0x41);delay(1000);i+;led_out(0x03);delay(1000);实验六注意更改为“。Asm“文件不要用。C 文件编译NAMET6; 定时器实验CSEG AT 0000HLJMP STARTCSEG AT 001BH;定时器 / 计数器 1 中断程序入口地址LJMP INTCSEG AT 4100HSTART: MOVA,#01H;首显示码CPLAMOVR1,#03H;03 是偏移量,即从基址寄存器到表首的距离MOVR0,#05H;05 是计数值MOVTMOD,

7、#10H ;计数器置为方式 1MOVTL1,#0AFH ;装入时间常数MOVTH1,#03CHORLIE,#88H;CPU 中断开放标志位和定时器;1 溢出中断允许位均置位SETBTR1;开始计数LOOP1:CJNER0,#00,DISPMOVR0,#05H;R0 计数计完一个周期,重置初值INCR1;表地址偏移量加 1CJNER1,#21H,LOOP2MOVR1,#03H; 如到表尾,则重置偏移量初值LOOP2:MOVA,R1;从表中取显示码入累加器MOVCA,A+PCCPLAJMPDISPDB01H,03H,07H,0FH,1FH,3FH,7FH,0FFHDB0FEH,0FCH,0F8H,

8、0F0H,0E0H,0C0H,80H,00HDB03H,0FH,3FH,0FFH,0FCH,0F0H,0C0H,00HDISP:INT:MOVJMPCLRDECP1,ALOOP1TR1R0;将取得的显示码从; 停止计数;计数值减一P1 口输出显示MOVMOVTL1,#0AFH;重置时间常数初值TH1,#03CHSETBTR1;开始计数RETI;中断返回END实验11#include#include#define#defineLed_datLed_ctlXBYTE0xcfe8XBYTE0xcfe9char g;void Display_byte(unsigned char loc,unsigne

9、d char dat)unsigned char table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;loc &=0xf;Led_ctl = loc|0x80;Led_dat = table0;/* 显示高4 位*/loc+;Led_ctl = loc|0x80;g=dat&0xf ;if(g=6)g=4;if(g=7)g=5;if(g=8)g=6;if(g=9)g=7;if(g=0xc)g=8;if(g=0xd)g=9;Led_dat = tableg;/* 显示低4 位*

10、/void main(void)Led_ctl = 0xd1;while(Led_ctl&0x80)=0x80);Led_ctl = 0x31;while(1)if(Led_ctl&0xf)=0)continue;Led_ctl = 0x40;Display_byte(0,Led_dat);/*switch( 表达式 )case 常量表达式1: 句 1;break;case 常量表达式2: 句 2;break;case 常量表达式n: 句 n;break;default: 句 n+1;break;*/实验 15#include#include#defineLed_datXBYTE0xcfe8#

11、defineLed_ctlXBYTE0xcfe9#definead_portXBYTE0xcfa0void Display_byte(unsigned char loc,unsigned char dat) /中断 果 理后 示在数 管上unsigned char table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;loc &=0xf;Led_ctl = loc|0x80;Led_dat = tabledat4;/* 示高4 位 */loc+;Led_ctl = loc|0x

12、80;Led_dat = tabledat&0xf;/* 显示低4 位 */void delay(unsigned int t)for(;t0;t-);void main(void)/* 中断 */EA=1;IT0=1;EX0=1;/ 初始化设置中断/* 中断 */Led_ctl = 0xd1;while(Led_ctl&0x80)=0x80);/?Led_ctl = 0x31;/* while(1)ad_port = 0;while(INT0);while(!INT0);/?Display_byte(0,ad_port);delay(10000);*/ad_port = 0;while(1);/ 让程序停在这儿等待中断voidvb()interrupt 0 /中断函数当数值转化完成后将数值显示出来if(ad_port0xf0)P1=0xfe;if(ad_port0x10)P1=0xfd;if(0x10ad_port&ad_port0xf0)P1=0xff;Display_byte(0,ad_port);delay(10000);ad_port = 0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1