导航:首页 > 操作系统 > 单片机课程实验

单片机课程实验

发布时间:2022-11-25 04:23:52

单片机实验内容及结果分析

熟悉单片机的原理、结构;学好数电、模电,为设计电路打好基础;熟练使用C语言,多学习他人的程序;对操作系统原理有一定的了解,Protel有一定的基础;培养实际动手调试电路的能力。一般可以通过专业的书籍和课程进行持之以恒的学习,注意理论与实践并重,遇到问题耐心检查并适当投资购买实验器材。

② 单片机中断实验交通灯的实验原理

根据图3.2电路,用单片机的IO口控制4组红绿黄共12个发光二极管,使发光二极管按照一定规则与次序发光与闪亮以实现模拟交通灯的功能。假设初始状态为:(南北通行状态)南北绿灯、东西红灯(25s);后转为过度状态:南北黄灯、东西红灯(5s);再转为东西通行状态:东西绿灯、南北红灯25(s)。再转为过渡状态:东西黄灯、南北红灯(5s),然后循环往复。

要求采用定时器实现所需要的定时时间。

2、键控交通灯。

按一下K1键

,保持南北通行状态;按一下K2键

,保持东西通行状态;按一下K3键

,保持正常交通灯。

要求在中断中进行按键处理。

3、具有闪烁的交通灯。

在2的基础上增加,绿灯最后5s闪烁,即亮0.5S灭0.5S闪烁。

四、实验原理图

图3.2交通灯实验电路原理图
图3.2共有4个按键K1、K2、K3、K4,分别连接到单片机P2.0、P2.1、P2.2、P2.3引脚,按键后对应引脚为低电平,通过4个二极管D17、D18、D19、D20连接到P3.2(外部中断0),这是二极管构成的相与电路,即任意按一个键能在P3.2上产生一个低电平或下降,作为中断触发信号。

五、软件设计思想

1、定时思想。

采用定时器T0或T1的方式1定时500ms,每500ms中断进行计数,计数10次即0.5s,计数20次即1s,对秒计数实现所需要的定时时间。

2、亮灯控制思想。

单片机控制灯引脚与灯对应如下,0点亮。

一共有四种状态S0、S1、S2、S3,

a、南北通行S0状态:

南北绿灯、东西红灯,P0=11110111=0xf7,P1=10011110=0x9e;

南北通行S0
b、过渡状态S1:

南北黄灯、东西红灯,P0=11111011=0xfb,P1=10101110=0xae;​

过渡状态S1
c、东西通行状态S2:

东西绿灯、南北红灯,P0=11111100=0xfc,P1=11110011=0xf3;​

东西通行状态S2
d、过渡状态S3:

东西黄灯、南北红灯,P0=11111101=0xfd,P1=01110101=0x75;

过渡状态S3
设置一个秒计数单元SEC每秒+1,设置两个控制值变量a,b。

③ 单片机实验 编写程序

单片机实验,其实这就是典型的流水灯电路,P1口接8个流水灯,每个灯点亮1秒。用定时器T1定时50ms,中断20次就为1秒,可用_crol_()移位函数实现。仿真效果如下图所示。

④ 单片机基础实验

1、

Loop:
mov a, #01h
mov r2, #8
Output:
mov P1, a
rl a
call Delay
djnz r2, Output
ljmp Loop

Delay:
mov r6, #0
mov r7, #0
DelayLoop:
djnz r6, DelayLoop
djnz r7, DelayLoop
ret

end
#include <reg51.h>

void delay()
{
unsigned int i;

for (i=0; i<20000; i++) {}
}

void main()
{
unsigned char index;
unsigned char LED;

while (1) {
LED = 1;
for (index=0; index < 8; index++) {
P1 = LED;
LED <<= 1;
delay();
}
}
}
2、
CS273 equ 8000h

mov dptr, #CS273
mov a,P1
movx @dptr, a
end

⑤ 利用51单片机,4个数码管设计一个计时器,要求在数码管上显示的数据从0开始每1秒钟加1。

共阳数码管中断程序:

#include<reg52.h>

#define uint unsigned int

#define uchar unsigned char

uchar code table[]=

{

0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x83,0xf8,

0x80,0x90,0x88,0x83,

0xc6,0xa1,0x86,0x8e};

uint num,a;

uchar ,shi,ge;

void init();

void delay(uint);

void display(uchar,ucharshi,ucharge);

uint fb();

uint fs();

uint fg();

void main()

{

init();

while(1)

{

display(fb(),fs(),fg());

}

}

void init()

{

num=0;

a=0;

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TR0=1;

}

void display(uchar,ucharshi,ucharge)

{

P1=0xfd;

P0=table[];

delay(1);

P1=0xfb;

P0=table[shi];

delay(1);

P1=0xf7;

P0=table[ge];

delay(1);

}

void timeoff() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65526-50000)%256;

a++;

if(a%20==0)

{

num++;

if(num==999)

{

num=0;

}

}

}
void delay(uint z)
{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

uint fb()

{

=num/100;

return ;

}

uint fs()

{

shi=num%100/10;

return shi;

}

uint fg()

{

ge =num%100%10;

return ge;

}

(5)单片机课程实验扩展阅读

2个可编程定时/计数器·5个中断源,2个优先级(52有6个)

一个全双工串行通信口

外部数据存储器寻址空间为64kB

外部程序存储器寻址空间为64kB

逻辑操作位寻址功能·双列直插40PinDIP封装

单一+5V电源供电

CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器;

RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;

ROM:用以存放程序、一些原始数据和表格;

I/O口:四个8位并行I/O口,既可用作输入,也可用作输出

T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;

五个中断源的中断控制系统;

一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;

片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最佳振荡频率为6M—12M。

参考资料来源:网络-51单片机



⑥ 单片机计数器实验

做计数器实验,不需要开中断,T1设为计数模式,脉冲由P3.5口进入。
TR1 = 1;是单片机自己在运行

⑦ 简论单片机课程中单片机实验教学探究

简论单片机课程中单片机实验教学探究


论文摘要:单片机的开发与应用、学习将造就一批计算机智能化控制的工程师、科学家。一些中等院校也相继开设了单片机课程设计及相关的课程。在单片机及接口技术课程的教学过程中,实验教学是重要的组成部分。针对单片机课程的教学改革,不断加强单片机课程实验环节,改革教学方法,虚拟仿真实验在单片机教学中的应用,实践表明,该方法有利于激发学生的学习兴趣,培养学生的工程素养和创新能力,提高了教学效果。

论文关键词:单片机;教学;仿真实验

“单片机原理”是一门理论性、逻辑性、实践性很强的学科,是电类专业一门非常重要的专业基础课,把微机接口部分、汇编语言部分、通信技术部分的知识点等综合在一起,属于逻辑性、工程性、技术性、实践性很强的一门专业基础课。该课程作为电类专业最重要的核心课程之一,它是电类专业高素质技能型人才所需全部自动控制类知识结构的载体,占据着非常重要的位置。
然而,传统的单片机教学一般注重课程本身的体系结构和前后的逻辑联系,均以学科体系为出发点,忽略了“可学性”,致使学生学得吃力,老师教得辛苦,教学效果却没有显现出来。

一、研究背景及意义

目前,全国将单片机列入单独的比赛项目,在考查中注重学生的能力培养,学生的技能素养教育成为重中之重,加之社会需求高技能人才,许多学校为了适应社会的发展和市场需求在不同的专业开设了单片机课程,然而单片机课程是一门实践性很强的课程,要想在教学过程中取得很好的效果,就必须要求学生在学习过程中多动手实践,但有的学校教学设备有限,怎样解决这个问题。仿真实验课可以让学生在单片机工作室里做中学,真正玩转单片机,也同时解决了学生学起来枯燥,老师教起来吃力的尴尬局面。
目前单片机教学中存在诸多问题。如单片机课程理论为主,实验教学多是进行验证性实验。单片机实验室存在场地和时间限制,学生除了课上,很难有机会接触到所需要的设备,如仿真器、实验板等,个人配备成本太高,个体无法承担。而且实验箱只能验证试验的基本作用和意义,就无从谈起学生动手能力的训练和提升。单片机在当今社会中的应用速度发展迅速,然而单片机教材陈旧,实验设备很容易落后、老化等问题,必然会带来耗资等问题。由此可见,构建成本低廉的单片机仿真实验系统对于单片机教学意义重大。它不仅可以降低实验设备投资,而且能培提高学生的工程素质,养学生的创新精神。在单片机控制系统的设计开发过程中,我们不单要突出设备的自动化程度及智能性,另一方面也要重视控制系统的工作稳定性,否则就无法体现控制系统的优越性。
由于单片机控制系统应用系统的工作环境往往是比较恶劣和复杂的,其应用的可靠性、安全性就成为一个非常突出的问题。单片机控制系统应用必须长期稳定、可靠地运行,否则将导致控制误差加大,严重时会使系统失灵,甚至造成巨大的损失。
影响单片机控制系统应用的可靠、安全运行的主要因素是来自系统内部和外部的各种电气干扰,以及系统结果设计、元器件选择、安装、制造工艺和外部环境条件等。这些因素对控制系统造成的干扰后果主要表现在下述几个方面。(1)数据采集误差加大。(2)控制状态失灵。(3)数据受干扰发生变化。(4)程序运行失常。
由于受到干扰后计数器的值是随机的,因而导致程序混乱。通常的情况是程序将执行一系列毫无意义的指令,最后进入“死循环”,这将使输出严重混乱或系统失灵。
随着单片机及其接口技术的飞速发展,目前面对职业教育存在的突出问题:质量能力与规模能力不相适应,教学信息化程度低,古老的填鸭式课堂教学模式仍应用普遍,“双师型”教师队伍建设机制缺乏完善性,科学管理水平和改革创新能力就提到了日程,管理制度不健全,学校基本办学规范不健全,科学的职业教育评价标准和评价机制达不到标准,学生成长的“通道”不畅通。
从新的教学要求来看,这类课程仅在课堂上讲授基本原理是不够的,必须在教学中加强实践环节,开出一定数量的高质量的配套实验课活独立的实验课程,让学生有足够的实验机会。那么对于单片机实验教学环境建设就相应提出了高要求。怎样解决这个问题,单片机仿真实验应运而生。

二、“单片机仿真实验”初探

伴随着计算机技术的飞速发展,在各个领域都出现了各种仿真系统,为各种实际系统的开发提供了准确可靠的保证,同时为很多学校、企业等节约了大量的人力和物力。在电子信息技术领域也同样出现了大量的仿真工具,如课堂上用到的各种EDA工具;模数混合仿真的Protel、Multisim等常见的电子应用仿真软件,数字系统设计的Fundation、Maxplus II、Expert等。
所谓“仿真”,就是通过开发工具真实地模拟用户系统的运行环境,使用户能够在透明和可控的条件下观察系统运行过程中的状态和结果,仿真实际上也是一种软件和硬件的综合调试手段,它能提高应用系统开发的效率。
用通俗的话来描述“单片机仿真实验”就是在一块虚拟电路板上按照真实电路的设计构想放置一些虚拟的元器件,并模拟实际烧ROM的过程链接上程序代码,“接通”电路观察效果,如果不理想的话可以反复修改电路或程序代码,直至符合设计要求为止。
仿真实验的好处是显而易见的。在没有仿真实验的年代,每架构一个真实的电路都需要费时费力费钱,稍有不慎还有可能前功尽弃,再加上单片机中的ROM芯片是有擦写次数的,而一段程序可能需要修改擦写多次,无形中减少了ROM芯片的使用寿命。仿真实验是在计算机上进行的(可能会费点儿电),以上问题都不存在,而且就现在的仿真软件来说,仿真出来的电路效果与真实电路一模一样,毫不夸张地说,只要仿真是成功的,就可以直接下工厂的流水线生产了。



三、单片机仿真实验效果

新课程的核心理念是:“关注每位学生的进步与发展,使每位学生在课堂上都能积极主动地参与交流、参与探索、参与汇报,都能动起来,使每位学生都能进入最近发展区,都能有所收获,具有成功感。”为使这一核心理念能得到有效落实,经过近一段时间的教学实践,逐渐发现单片机仿真实验是一种较为有效的教学手段。不仅解决了学生的只学不练的矛盾,也缓解了部分学校的设备建设压力。

⑧ 单片机实验

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit d=P3^7;
sbit swi=P3^2;//暂停-开始按键
sbit fen=P3^3;//调分
sbit shi=P3^4;//调时
bit state1;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar time[]={0,0,0,0,0,0};//待显示的时分秒
void concrol();
void tiaofen();//检测调分函数的声明
void tiaoshi();//检测调时函数的声明
void display();//显示函数的声明
void pause();//暂停开始检测函数的声明
uchar a,key;
void delay(uchar z)//延时函数
{
uchar x,y;
for(x=z;x>0;x--)
for(y=113;y>0;y--);
}
void main()
{
key=0;
state1=1;
state2=1;
state3=1;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
display();//显示函数
pause();//暂停开始检测
tiaofen();//检测调分
tiaoshi();//检测调时
}
}
void time0() interrupt 1//中断计时函数
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
if(a==20)
{
a=0;
time[0]++;
if(time[0]==10)
{
time[1]++;
time[0]=0;
if(time[1]==6)
{
time[1]=0;
time[2]++;
if(time[2]==10)
{
time[2]=0;
time[3]++;
if(time[3]==6)
{
time[3]=0;
time[4]++;
if(time[4]==10)
{
time[4]=0;
time[5]++;
}
if(time[5]==2)
if(time[4]==4)
{
time[4]=0;
time[5]=0;
}
}
}
}
}
}
}
void pause()//暂停开-开始函数
{
if(state1!=swi)//按键控制电子表的暂停
{
delay(5);
if(state1!=swi)
{
state1=swi;
concrol();
}
}
}
void concrol()//执行按键的函数
{
if(state1==0)
{
key=!key;
switch(key)
{
case 1: EA=0;
ET0=0;
TR0=0;
break;
case 0: EA=1;
ET0=1;
TR0=1;
break;
}
}
}
void tiaofen()//调分钟的函数
{
if(key==1)
if(fen==0)
{
time[2]++;
if(time[2]==10)
{
time[2]=0;
time[3]++;
if(time[3]==6)
time[3]=0;
}
while(!fen);
}
}
void tiaoshi()//调小时的函数
{
if(key==1)
if(shi==0)
{
time[4]++;
if(time[4]==10)
{
time[4]=0;
time[5]++;
}
if(time[5]==2)
if(time[4]==4)
{
time[5]=0;
time[4]=0;
}
while(!shi);
}
}
void display()//显示函数
{
P2=7;
d=0;
P0=table[time[0]];
d=1;
delay(5);
P0=0;

P2=6;
d=0;
P0=table[time[1]];
d=1;
delay(5);
P0=0;

P2=5;
d=0;
P0=0x40;
d=1;
delay(5);
P0=0;

P2=4;
d=0;
P0=table[time[2]];
d=1;
delay(5);
P0=0;

P2=3;
d=0;
P0=table[time[3]];
d=1;
delay(5);
P0=0;

P2=2;
d=0;
P0=0x40;
d=1;
delay(5);
P0=0;

P2=1;
d=0;
P0=table[time[4]];
d=1;
delay(5);
P0=0;

P2=0;
d=0;
P0=table[time[5]];
d=1;
delay(5);
P0=0;
}
这是我写的一个电子时钟的程序,能显示小时分钟和秒,按键可以修改时间值
参考一下吧

阅读全文

与单片机课程实验相关的资料

热点内容
dvd光盘存储汉子算法 浏览:757
苹果邮件无法连接服务器地址 浏览:962
phpffmpeg转码 浏览:671
长沙好玩的解压项目 浏览:144
专属学情分析报告是什么app 浏览:564
php工程部署 浏览:833
android全屏透明 浏览:737
阿里云服务器已开通怎么办 浏览:803
光遇为什么登录时服务器已满 浏览:302
PDF分析 浏览:484
h3c光纤全工半全工设置命令 浏览:143
公司法pdf下载 浏览:381
linuxmarkdown 浏览:350
华为手机怎么多选文件夹 浏览:683
如何取消命令方块指令 浏览:349
风翼app为什么进不去了 浏览:778
im4java压缩图片 浏览:362
数据查询网站源码 浏览:150
伊克塞尔文档怎么进行加密 浏览:892
app转账是什么 浏览:163