河南理工大学单片机核心实验Word文档格式.docx
- 文档编号:15384813
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:26
- 大小:63.96KB
河南理工大学单片机核心实验Word文档格式.docx
《河南理工大学单片机核心实验Word文档格式.docx》由会员分享,可在线阅读,更多相关《河南理工大学单片机核心实验Word文档格式.docx(26页珍藏版)》请在冰豆网上搜索。
设计思路:
1)定义数组使得调用数组可以使led灯能够顺时针和逆时针显示;
2)将按键的输入端全部置零,做单独按键使用;
3)利用“for”循环使得数码管可以闪烁三下;
4)利用“for”循环使得小灯能够依次点亮一个周期;
5)将以上思想汇总,编程,实现功能。
最终实现:
按任意键反向,只是必须等到一轮结束以后。
程序如下:
#include<
reg52.h>
#defineucharunsignedchar
sbitH1=P3^6;
sbitH2=P3^7;
sbitL1=P0^5;
sbitL2=P0^6;
sbitL3=P0^7;
tab1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff,0xff,0xff};
tab2[]={0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3b,0x37,0x2f,0x1f};
tab3[]={0xff,0xff,0xff,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
tab4[]={0x1f,0x2f,0x37,0x3b,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f};
voidDelay1s()//@11.0592MHz延时1s
{
unsignedcharl,m,n,k;
for(l=0;
l<
4;
h++)
for(m=0;
m<
15;
i++)
for(n=0;
n<
216;
j++)
for(k=0;
k<
38;
k++);
}
voidDelay3ms()//@11.0592MHz延时3ms
unsignedchari,j,h;
for(i=0;
i<
3;
for(h=0;
j<
220;
j++);
voidflick()//开机时点亮12发光二极管,闪烁三下
uchare;
for(e=0,e<
=2,e++)
{
P2=0x00;
P3=0xc3;
Delay1s();
P2=0xff;
P3=0xff;
}
voidmain()
ucharb,y,n;
flick();
while
(1)
n=b;
y=(n%2);
//检查按键按下奇数次逆时针
if(y==1)//按键按下发光二极管的显示改为逆时针方式
{
ucharx;
for(x=0;
x<
12;
x++)
{
P2=tab3[x];
//发光二极管逆时针显示
P3=tab4[x];
Delay1s();
H1=0;
H2=0;
L1=1;
L2=1;
L3=1;
if(!
L1||!
L2||!
L3)
{
Delay3ms();
if(!
L3)//消抖
b+=1;
while(!
L3);
}
}
}
if(y==0)//检查按键按下偶数顺时针
ucharx;
for(x=0;
P2=tab1[x];
//发光二极管的显示顺时针方式
P3=tab2[x];
H1=0;
H2=0;
L1=1;
L2=1;
L3=1;
if(!
Delay3ms();
if(!
b+=1;
while(!
}
五、实验过程中遇到的问题及解决方法
指导老师签字:
日期:
实验二定时器实验
1)数码管动态显示技术
2)定时器的应用
3)按键功能定义
1)上电后设置定时时间
2)按2号键时间+2
3)按3号键时间+100
4)按1号键开始工作,时间到小灯闪烁3下,回到初始状态
单片机核心开发板所示的硬件电路如下图所示
1)利用中断技术实现利用单片机定时器完成计时功能;
2)定时器1计时中断程序每隔0.001s中断一次并当作一个计数,则1000次中断为1秒,然后十进制进位即可;
3)在程序开始计数器不工作时设定一个值,当计数器工作时将时间与设定时间比较,如果相等,计数器停止工作,小灯闪烁三下;
4)将以上思想汇总,编程,实现功能。
上电后设置定时时间,按2号键时间+2,按3号键时间+100;
按1号键开始工作;
时间到后小灯闪烁3下,回到初始状态。
reg51.h>
#defineuintunsignedint
sfrP1M1=0x91;
sfrP1M0=0x92;
tab1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//数码管显示0-9
tab2[]={0xf7,0xfb,0xfd,0xfe};
//片选w1,w2,w3,w4
tab3[4]={0};
//开始数码管全送0
uinta=0;
uintb=0;
ucharn;
voidDelay500ms()//延时500ms
{unsignedchari,j,k;
i++)
for(j=0;
202;
j++)
81;
k++);
}
voidDelay10ms()//延时10ms
{
unsignedchari,j,k;
5;
248;
voidflicker()//定时时间到闪烁三下
uchard;
for(d=0,d<
=2,d++)
Delay500ms();
voidshow()
charj;
switch(j)
{
case0:
P0=tab2[j];
j++;
P1=tab1[tab3[0]];
break;
case1:
P1=tab1[tab3[1]];
case2:
P1=tab1[tab3[2]];
case3:
j=0;
P1=tab1[tab3[3]];
default:
}
voidinterrupt_timer1()interrupt3
TH1=0xfc;
//初值,1ms
TL1=0x67;
a++;
if(a==1000)//每隔1ms中断一次并作一个计数,1000次中断为1s
b++;
a=0;
tab3[0]=b%10;
//十进制进位即个、十、百、千
tab3[1]=b/10%10;
tab3[2]=b/100%10;
tab3[3]=b/1000%10;
show();
ucharm,k;
n=1;
P1M1=0x00;
P1M0=0xff;
//P1口设为强推挽输出
TMOD=0x10;
//T1方式一
//送初值
ET1=1;
//开中断
EA=1;
if(!
TR1)
k=0;
for(k=0;
50;
k++)
H2=0;
L1=1;
L2=1;
L3=1;
L1)//按键1按下,启动定时
Delay10ms();
L1)//消抖
{
TR1=1;
break;
L1);
}
L2)//按键2按下,对定时时间修改,按一下加2
Delay10ms();
L2)//消抖
n+=2;
L2);
L3)//按键3按下,对定时时间修改,按一下加100
n+=100;
tab3[0]=n%10;
//十进制进位个十百千
tab3[1]=n/10%10;
tab3[2]=n/100%10;
tab3[3]=n/1000%10;
for(m=0;
m++)//送个、十、百、千显示
P0=tab2[m];
P1=tab1[tab3[m]];
if(m==4)
m=0;
if(b==n)
TR1=0;
//定时时间到,停止计时,闪三次
b=0;
n=1;
flicker();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 河南 理工大学 单片机 核心 实验