单片机实验报告admin•2025-09-17 07:23:10•网站建设•阅读18单片机实验报告2023年7月14日发(作者:) 单片机实验报告 班 级: 姓 名: 学 号: 日 期: 实验一:跑马灯实验 实验目的:1.通过实验,掌握汇编语言程序的基本格式及其编写; 2.通过实验,熟悉指令系统,掌握查表指令及其应用; 3.通过实验,掌握子程序及延时子程序的编写; 4.通过实验,掌握中断的概念及其定时器的应用 实验内容:1.键入跑马灯的代码: #include void delay_ms(unsigned int time) { unsigned int k,l; for(k=0;k for(l=0;l<1141;l++); } void main(void) { unsigned char i,j; PORTC=0x00;DDRC=0xFF; while(1) { j=0x02; for(i=0;i<7;i++) //8个流水灯逐个闪动 { PORTC=j; delay_ms(25); //调用延时函数 j<<=1; } j=0x40; for(i=0;i<7;i++) //8个流水灯反向逐个闪动 { PORTC=j; delay_ms(25); //调用延时函数 j>>=1; } } } 2.通过ISIS7 模拟单片机 3..将代码通过ATMEGA16 实现跑马灯的运行。 4.在ISIS7中运行。 实验结果: 8个灯能够一次从右到左,再从左到右间隔100ms亮起。 实验问题: 一开始 代码正确但是当键入到ATMEGA16时 8个灯不能亮起,1)电阻太大而模拟的电流太小;2)delay_ms的子代码设定的时间太短。但是可以通过修改时钟频率可以对硬件进行时间脉冲修改。 实验二:键盘扫描 实验目的:1.熟悉键盘与显示器的接口连接方法。 1.掌握键盘扫描的实现过程。 实验内容:1.键入代码:#include void delay_ms(int x) { int i,j; for(i=0;i<=x;i++) for(j=0;j<=5000;j++) { } } char cycle() { char jianzhi; PORTA=0xf0; //行输出低电平,列带上拉电阻输入 DDRA=0x0F; delay_ms(15); if(PINA==0xf0) //检查有无键按下,无键按下返回0XFF return(0xff); if(PINA==0x70) //获取按下键的行编码 jianzhi=1; else if(PINA==0xb0) //四行三列 jianzhi=2; else if(PINA==0xd0) jianzhi=3; else if(PINA==0xe0) jianzhi=4; PORTA=0x0f; //反转 DDRA=0xf0; delay_ms(15); if(PINA==0x0D) jianzhi=jianzhi+0; else if(PINA==0x0B) jianzhi=jianzhi+4; else if(PINA==0x07) jianzhi=jianzhi+8; return(jianzhi); } void main() { DDRD=0XFF; PORTD=0X00; DDRB=0XFF; PORTB=0X00; while(1) { int jianzhi=cycle(); switch(jianzhi) { case 1:PORTB=0X00;PORTD=0X01;break; case 2:PORTB=0X00;PORTD=0X02;break; case 3:PORTB=0X00;PORTD=0X04;break; case 4:PORTB=0X00;PORTD=0X08;break; case 5:PORTB=0X00;PORTD=0X10;break; case 6:PORTB=0X00;PORTD=0X20;break; case 7:PORTB=0X00;PORTD=0X40;break; case 8:PORTB=0X00;PORTD=0X80;break; case 9:PORTD=0X00;PORTB=0X01;break; case 10:PORTD=0X00;PORTB=0X02;break; case 11:PORTD=0X00;PORTB=0X04;break; case 12:PORTD=0X00;PORTB=0X08;break; } } } 2.通过ISIS7模拟连接电路: 3.带入代码,运行程序,点击每个键盘按钮在右边的LED灯处显示所按得键盘号。 实验结果:程序能够正常运行,按键盘的时候对应的LED灯亮起。 实验问题:实验结果较为理想,但是部分细节还有待改善。 实验三:定时计数器 实验目的:1、学习单片机内部定时/计数器使用和编程方法。 2、进一步掌握中断处理程序的编程方法。 3、学习定时扩展的编程方法。 4、进一步学习单片机内部定时/计数器使用、应用程序的设计方法。 5、综合所学知识,培养综合实验的能力。 实验内容:1.键入代码:#include #pragma interrupt_handler ZHINGXING:20 int k=0; void ZHIXING(void) {k++; if(k==1000) { PORTA=~PORTA; k=0; } } void main(void) { PORTB=0X00; DDRB=0XFF; TCCR0=0X0B; TCNT0=0X00; OCR0=0X3E; TIMSK=0X02; SREG|=0X80; while (1) { }; } 2.在ISIS7中模拟电路的连接: 3.带入代码,运行程序,产生1ms的中断,扩展为1s的定时信号。PB口的状态1S改变一次。 实验问题:此次试验比较好做,重点在于定时器时间常数的计算如: 系统时钟4.000MHz,64分频62.5kHz作为定时器计数脉频率。 定时计数器加1的时间为1/62.5=0.016ms, 定时1ms,需要计数1/0.016=62.5。使用定时器CTC工作方式,比较值应置为62即0x3E或63即0x63。1ms的定时有误差。只有把计算弄清楚后才能很好的运用计数器。同上,运行程序可以通过更改硬件时钟频率调节速度。 实验四:占空比25%的实验 实验目的:1.进一步掌握定时计数器的运用。 2.利用ISIS7 模拟出现实中的状况。 实验内容:键入代码: #include void zhixing(void) { // 定时器2比较匹配中断服务程序 } void main(void) { DDRD=0xFF; //定义PD口为输出 PORTD=0x00; TCCR2=0x6C; TCNT2=0x00; OCR2=0x40; while(1) { } } 2.在ISIS7 中进行模拟电路的连接 3.带入代码,运行出来的结果 实验问题:设置的引脚必须匹配,试验中有的时候只出现一条线(A点),是因为代码的问题,代码与试验所要求的不相符,经过认真检查能够克服。 试验总结:本次试验一共有四个:跑马灯,键盘扫描,计数器,还有产生占空比为25%的方波。 经过认真的学习以及与老师,同学的探讨中基本解决。本次实验虽然成功的完成了各项要求,但是部分细节有待完善。在此次的试验中进一步的加深了对计算机语言的运用以及对ISIS7的认识,对于单片机的认识以及生活中有运用到单片机的机器有了跟多的想法与建议。 发布者:admin,转转请注明出处:http://www.yc00.com/web/1689330261a230909.html跑马灯代码admin0相关推荐小程序HTML代码注解HTML代码注解admin2023-7-14430建站资讯网页代码大全网页代码大全admin2023-7-14170建站资讯定时器中断延时程序定时器中断延时程序admin2023-7-14380小程序173个android源代码173个android源代码admin2023-7-14190建站资讯H5div文字循环滚动H5div文字循环滚动admin2023-7-14600小程序一步步教你如何第一次使用Monitor一步步教你如何第一次使用Monitoradmin2023-7-14420小程序2 跑马灯_图文2 跑马灯_图文admin2023-7-14210建站资讯Vue实现跑马灯简单效果Vue实现跑马灯简单效果admin2023-7-14290网站建设基于LABVIEW的跑马灯的设计基于LABVIEW的跑马灯的设计admin2023-7-14280建站资讯跑马灯效果如何实现?Smartbi一文助你掌握跑马灯效果如何实现?Smartbi一文助你掌握admin2023-7-14330建站资讯FPGA入门系列实验教程——LED跑马灯FPGA入门系列实验教程——LED跑马灯admin2023-7-14290小程序实验五 交通灯、跑马灯轮换实验实验五 交通灯、跑马灯轮换实验admin2023-7-14310小程序1.2HTML语言(下)1.2HTML语言(下)admin2023-7-14290网站建设单片机零基础入门(5):实现独立按键控制Led灯单片机零基础入门(5):实现独立按键控制Led灯admin2023-7-14190网站建设超经典!PIC单片机原理及应用实验(含代码)超经典!PIC单片机原理及应用实验(含代码)admin2023-7-14180建站资讯Java和51单片机串口通信(Java发送数据到单片机,单片机反馈数据到电 ...Java和51单片机串口通信(Java发送数据到单片机,单片机反馈数据到电 ...admin2023-7-14230小程序【Android】TextView的文字长度测量及各种padding解析【Android】TextView的文字长度测量及各种padding解析admin2023-7-14230建站资讯Stm32学习(一)端口的使用Stm32学习(一)端口的使用admin2023-7-14280建站资讯蜂鸣器实验-STM32F4开发蜂鸣器实验-STM32F4开发admin2023-7-14180网站建设Discuz论坛帖子美化Discuz论坛帖子美化admin2023-7-14220 发表回复提交评论列表(0条)暂无评论
评论列表(0条)