EDA课设报告Word下载.docx
- 文档编号:16750472
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:45
- 大小:3.68MB
EDA课设报告Word下载.docx
《EDA课设报告Word下载.docx》由会员分享,可在线阅读,更多相关《EDA课设报告Word下载.docx(45页珍藏版)》请在冰豆网上搜索。
对于普通二极管,可以看管体表面,有白线的一端为负极。
对于发光二极管,引脚长的为正极,短的为负极。
蜂鸣器:
蜂鸣器根据结构不同分为压电式蜂鸣器和电磁式蜂鸣器;
无论是压电式蜂鸣器还是电磁式蜂鸣器,都有有源和无源的区分,其中,“有源”是指蜂鸣器本身内含驱动了,直接给它一定的电压就可以响;
“无源”是需要靠外部的驱动才可以响的,该套件选用的是无源电磁式蜂鸣器,其有极性区别。
IC极性:
该套件中包含2颗贴片料,分别是CH340G和ULN2003,封装都是SO-16,封装中打白色小点的即为芯片1脚,对应芯片上的1脚,焊接时要特别小心管脚短路。
排阻极性:
排阻(NetworkResistor),即网络电阻器(Wire-woundResistor)。
排阻是将若干个参数完全相同的电阻集中封装在一起,组合制成的。
它们的一个引脚都连到一起,作为公共引脚,其余引脚正常引出。
电阻和瓷片电容:
没有极性区分,正常安装即可。
单片机芯片座安装时注意朝下安装,单片机是朝上安放(U口朝上),电源正负极不能接错,否则会烧芯片;
插头座中间正极,外边负极,排阻有极性,白点端为公共端。
安装步骤按照先低后高的原则进行。
3、故障检测与排除
安装完成后,需要对完整的单片机开发板进行调试和故障检测。
仔细查看每一个管脚的焊接有无脱焊,或者接触不良的情况,若有,要及时排除。
之后与电脑连接起来,看是否可以检测到串口。
若不能检测到串口,则可能是CH340G芯片管脚短路,或者开发板开关没有焊接好。
然后烧录程序,进行测试。
二、示例程序编译与测试运行
1、基本矩阵按键
实验说明:
按下矩阵按键S1-S16,数码管显示对应的键值。
连线方式:
:
CN6接CN14,KEY1到KEY8分别对应P30到P37;
CN3接CN16,A接P00,B接P01,C接P02,D接P03,E接P04,F接P05,G接P06,DP接P07;
CN1接CN17,PUT1接P24,PUT2接P25,PUT3接P26,PUT4接P27。
实验程序:
unsignedcharKeyScan()
{
unsignedchartemp,num;
num=0xff;
KEY_PORT=0xfe;
temp=KEY_PORT;
temp=temp&
0xf0;
while(temp!
=0xf0)
{
Delayms(5);
//延时消抖
switch(temp)
case0xee:
num=1;
break;
case0xde:
num=2;
case0xbe:
num=3;
case0x7e:
num=4;
}
KEY_PORT=0xfd;
case0xed:
num=5;
case0xdd:
num=6;
case0xbd:
num=7;
case0x7d:
num=8;
KEY_PORT=0xfb;
case0xeb:
num=9;
case0xdb:
num=10;
case0xbb:
num=11;
case0x7b:
num=12;
KEY_PORT=0xf7;
case0xe7:
num=13;
case0xd7:
num=14;
case0xb7:
num=15;
case0x77:
num=16;
returnnum;
}
实验结果:
每按下一个按键,数码管会显示相应的按键值。
如图2-1所示
图2-1
运行结果
2、流水灯实验
LED流水灯,8个LED灯做循环右移。
连接方式:
CN5接CN15,按pin编号从小到大连接,L1到L8分别接P10到P17。
voidDelayms(unsignedintms)
unsignedinti,j;
for(i=0;
i<
ms;
i++)
#ifFOSC==11059200L
for(j=0;
j<
114;
j++);
#elifFOSC==12000000L
123;
#elifFOSC==24000000L
249;
#else
#endif
}
voidmain()
k=0xfe;
P1=k;
while
(1)
Delayms(1000);
k=_crol_(k,1);
//循环左移,右边补1
运行程序后,LED灯以一定的间隔从右往左一次点亮。
如图2-2
图2-2
3、数码管动态显示实验
0到100循环计数,并显示到数码管上,三个数码管循环显示。
CN3接CN16,A接P00,B接P01,C接P02,D接P03,E接P04,F接P05,G接P06,DP接P07,CN1接CN17,PUT1接P24,PUT2接P25,PUT3接P26,PUT4接P27。
unsignedcodetable[]=
{0Xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
voidLEDdisplay(unsignedintnum)
unsignedcharqian,bai,shi,ge;
qian=num/1000;
bai=num%1000/100;
shi=num%100/10;
ge=num%10;
wela_1=1;
//关闭所有数码管
wela_2=1;
wela_3=1;
wela_4=1;
wela_4=0;
//显示千位
LED_PORT=table[qian];
Delayms
(1);
LED_PORT=0xff;
wela_4=1;
wela_3=0;
//显示百位
LED_PORT=table[bai];
wela_3=1;
wela_2=0;
//显示十位
LED_PORT=table[shi];
wela_2=1;
wela_1=0;
//显示个位
LED_PORT=table[ge];
voidTimer0Init()
TMOD=0x01;
//设置定时器0工作方式为1
TH0=(65536-FOSC/12/1000*TIME_MS)/256;
TL0=(65536-FOSC/12/1000*TIME_MS)%256;
ET0=1;
//开启定时器0中断
TR0=1;
//开启定时器
EA=1;
//打开总中断
Timer0Init();
count=0;
temp=0;
if(count==20)//达到1s
count=0;
temp++;
if(temp==100)
temp=0;
LEDdisplay(temp);
voidTimer0Int()interrupt1
count++;
运行程序后,三个数码管循环计数,从0到100。
由于变化频率很快,所以看起来是一起显示的。
如图2-3
图2-3
4、红外发射实验
烧录成功后,将单片机的红外发射口对着另外一个运行遥控键值解码实验程序的单片机,按下相应的矩阵键盘按键即可实现键值发送。
实验连线:
CN19的HW_DRI接CN15的P16;
CN6接CN14,KEY1到KEY8分别对应P30到P37;
CN5接CN16,按pin编号从小到大连接,L1到L8分别接P00到P07。
voidSend_Start_Bit(void)//TR1的值=发送的电平
TH0=(65536-8295)/256;
TL0=(65536-8295)%256;
TR1=1;
while(!
TF0);
TR1=0;
TF0=0;
TR0=0;
IR_OUT=1;
//4.5ms0
TH0=(65536-4146)/256;
TL0=(65536-4146)%256;
voidSend_Bit_0(void)
TH0=(65536-521)/256;
TL0=(65536-521)%256;
//0.565ms0
voidSend_Bit_1(void)
//1.685ms0
TH0=(65536-1563)/256;
TL0=(65536-1563)%256;
voidSend_over(void)
TH0=(65536-500)/256;
TL0=(65536-500)%256;
//0.500ms0
voidSend_Char(unsignedcharadd,unsignedchardate)
unsignedchari,j1,j2,j3,j4;
j1=add;
j2=~add;
j3=date;
j4=~date;
Send_Start_Bit();
//发射引导码
8;
if(j1&
0x01)
Send_Bit_1();
else
Send_Bit_0();
j1=j1>
>
1;
//先发射低位
if(j2&
j2=j2>
if(j3&
j3=j3>
if(j4&
j4=j4>
//先发射低位
Send_over();
//结束符
voidT1_ISR(void)interrupt3
IR_OUT=!
IR_OUT;
运行程序后,用另一个烧录了红外接收实验的开发板与其配合,每当按下一个按键,另一个开发板的数码管会显示相应的数值。
如图2-4
图2-4运行结果
5、红外接收实验
烧录成功后,使用遥控器对着红外接收头按键,数码管会显示相应的键值。
CN18的HW_RD接CN14的P32;
CN3接CN16,A接P00,B接P01,C接P02,D接P03,E接P04,F接P05,G接P06,DP接P07;
CN1接CN17,PUT1接P24,PUT2接P25,PUT3接P26,PUT4接P27。
voidExit0Int()interrupt0
unsignedcharj,k,N=0;
EX0=0;
DelayIr(15);
if(IRIN==1)
{EX0=1;
return;
}//确认IR信号出现
while(!
IRIN)//等IR变为高电平,跳过9ms的前导低电平信号。
{DelayIr
(1);
for(j=0;
4;
j++)//收集四组数据
for(k=0;
k<
k++)//每组数据有8位
while(IRIN)//等IR变为低电平,跳过4.5ms的前导高电平信号。
IRIN)//等IR变为高电平
while(IRIN)//计算IR高电平时长
DelayIr
(1);
N++;
if(N>
=30)
EX0=1;
}//0.14ms计数过长自动离开。
}//高电平计数完毕
IRCOM[j]=IRCOM[j]>
1;
//数据最高位补“0”
=8){IRCOM[j]=IRCOM[j]|0x80;
}//数据最高位补“1”
N=0;
}//endfork
}//endforj
if(IRCOM[2]!
=~IRCOM[3])
{EX0=1;
ir_value=IRCOM[2];
EX0=1;
运行程序后,用遥控器对准红外接收器,每按下一个按键,开发板的数码管会显示相应的数值。
如图2-5
图2-5实验结果
6、液晶显示
设定的文字向右滑动显示。
LCD1602液晶模块直接插到LCD1602接口上。
unsignedcharcodetable1[]="
HantechMCU"
;
unsignedcharcodetable2[]="
HelloWorld"
voidDelayus(unsignedintus)
unsignedinti;
us;
i++);
bitLcdBusy()
bitresult;
lcd_rs=0;
lcd_rw=1;
lcd_en=1;
Delayus
(1);
result=(bit)(P0&
0x80);
lcd_en=0;
return(result);
voidLcdWriteCom(unsignedcharcom)
while(LcdBusy());
LCD_PORT=com;
lcd_rs=0;
lcd_rw=0;
lcd_en=0;
Delayus(5);
lcd_en=1;
voidLcdWriteDate(unsignedchardate)
LCD_PORT=date;
lcd_rs=1;
voidLCD1602Init()
LcdWriteCom(0x38);
//设置16*2显示,8位数据接口
LcdWriteCom(0x0f);
//开显示,显示光标且闪烁
LcdWriteCom(0x06);
//写一个指针自动加一
LcdWriteCom(0x01);
//清屏
unsignedcha
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 报告