单片机实习.docx
《单片机实习.docx》由会员分享,可在线阅读,更多相关《单片机实习.docx(15页珍藏版)》请在冰豆网上搜索。
单片机实习
北华大学
单片机与接口技术实习
姓名:
班级:
学号:
院系:
指导教师:
实习日期:
2016.11.28~2016.12.2
一、实习目的与任务3
二、实习内容3
三、器件及软件选择3
1.按键3
2.蜂鸣器3
3.74LS138译码器3
(1)74LS138译码器简介及其作用3
(2)74LS138译码器引脚及其码表3
4.TLC2543AD转换芯片4
(1)TLC2543AD芯片简介及其作用4
(2)TLC2543AD芯片引脚及时序图4
5.74HC595串行移位锁存芯片5
(1)74HC595芯片简介及其作用5
(2)74HC595芯片操作时序5
6.STC89C52RC单片机6
7.编译软件Keil-uVision56
四、系统硬件结构设计7
1.整体框图7
2.各部分设计8
(1)74HC595驱动数码管8
(2)AD转换换芯片TLC25439
(3)独立按键9
(4)蜂鸣器10
五、系统软件设计10
1.主程序10
2.各部分程序11
(1)蜂鸣器报警程序11
(2)按键程序11
(3)74HC595驱动数码管程序12
(4)TLC2543AD转换芯片程序13
六、实习心得14
七、参考文献14
八、附录15
九、教师评语15
一、实习目的与任务
为了增强学生对课内所学单片机知识的理解,锻炼实际编程调试能力,制作一个基于51单片机的AD值检测上下阈值可调的报警系统。
二、实习内容
运用TLC2543芯片采集由电位器分得电压值,并显示到数码管上,通过按键调整上下阈值,当电压值超出上限值或下限时单片机触发蜂鸣器报警。
三、器件及软件选择
1.按键
选用独立按键
2.蜂鸣器
采用有源蜂鸣器三极管驱动
3.74LS138译码器
(1)74LS138译码器简介及其作用
运用3-8译码器扩展单片机的I/O口控制AD芯片和74HC595芯片的片选段进而实现芯片I/O口的复用。
(2)74LS138译码器引脚及其码表
4.TLC2543AD转换芯片
(1)TLC2543AD芯片简介及其作用
具有SPI接口的AD转换器,可将模拟电压量转化为数字电压量,模块采用TI公司的TLC2543 12位串行A/D转换器,使用开关电容逐次逼近技术完成A/D转换过程。
由于是串行输入结构,能够节省51系列单片机I/O资源。
其特点如下:
(1)12位分辨率A/D转换器;
(2)在工作温度范围内10μs转换时间(3)11个模拟输入通道;(4)3路内置自测试方式;(5)采样率为66kbps;(6)线性误差+1LSB(max)(7)有转换结束(EOC)输出;(8)具有单、双极性输出;(9)可编程的MSB或LSB前导;(10)可编程的输出数据长度。
(2)TLC2543AD芯片引脚及时序图
5.74HC595串行移位锁存芯片
(1)74HC595芯片简介及其作用
通过74HC595驱动数码管,并起到扩展I/O口的作用。
74HC595具有8位移位寄存器和一个存储器,三态输出功能。
移位寄存器和存储器有相互独立的时钟。
数据在SH_cp(移位寄存器时钟输入)的上升沿输入到移位寄存器中,在ST_cp(存储器时钟输入)的上升沿输入到存储寄存器中去。
如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。
移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7),和一个异步的低电平复位,存储寄存器有一个并行8位的,具备三态的总线输出,当使能OE时(为低电平),存储寄存器的数据输出到总线。
8位串行输入/输出或者并行输出移位寄存器,具有高阻关断状态三态。
(2)74HC595芯片操作时序
6.STC89C52RC单片机
作为主控芯片,进行编程设计。
STC89C52RC是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器。
STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
7.编译软件Keil-uVision5
KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。
四、系统硬件结构设计
1.
74HC595驱动数码管
整体框图
STC89C52RC单片机
独立按键
AD转换换芯片TLC2543
蜂鸣器
2.各部分设计
(1)74HC595驱动数码管
(2)AD转换换芯片TLC2543
(3)独立按键
(4)蜂鸣器
五、系统软件设计
1.主程序
#include
#include
#include
#include
#include
#include
sbitbuzzer=P0^0;
ucharfigure[]={0,0,0,0,0,0,0,0};//不要写成{3536}addcodewillmakeunmodified
voidwaring(charpower);
voidmain(void)
{
uintresult_AD,power;
buzzer=0;
while
(1)
{
result_AD=AD2543_writeandread(0x10);
power=(float)result_AD*50/4096;
waring(power);
button();
figure[7]=config_max/10;
figure[6]=config_max%10;
figure[5]=config_min/10;
figure[4]=config_min%10;
figure[3]=flag;
figure[0]=power%10;
figure[1]=power/10%10;
display_SPI(figure);}}
2.各部分程序
(1)蜂鸣器报警程序
voidwaring(charpower)
{
if((powerconfig_max))
buzzer=1;
else
buzzer=0;
}
(2)按键程序
#defineucharunsignedchar
#defineuintunsignedint
sbitkey_A=P3^0;
sbitkey_B=P3^1;
sbitkey_C=P3^2;
ucharconfig_max=50,config_min=0;
bitflag=0;
voidbutton()
{
key_A=1;
if(key_A==0)
{
delay(4);
if(key_A==0)
flag=~flag;
while(!
key_A);
}
key_B=1;
if(key_B==0)
{
delay(4);
if(key_B==0)
if(flag&&config_max<50&&config_minconfig_max++;
else
if(config_min<50&&config_minconfig_min++;
while(!
key_B);
}
key_C=1;
if(key_C==0)
{
delay(4);
if(key_C==0)
if(flag&&config_max>0&&config_minconfig_max--;
else
if(config_min>0&&config_minconfig_min--;
while(!
key_C);
}
}
(3)74HC595驱动数码管程序
sbitCLK=P1^0;//srclk
sbitDin=P1^1;//ser
sbitDout=P1^2;//Q7没用
sbitEna=P2^0;
sbitEnb=P2^1;
sbitEnc=P2^2;
ucharcodetab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x7F,0xff};
voiddisplay_SPI(uchar*digit)//note:
figure想显示的数据num位数
{
chartemp,i,j;
CLK=0;
Enc=1;Enb=1;Ena=0;//595enabley0=1y6=0
for(i=0;i<8;i++)
{
if(i==1)
{
temp=tab[*(digit+i)]&0x7f;
}
else
temp=tab[*(digit+i)];
for(j=0;j<8;j++)
{
Din=temp&0x80;
CLK=1;
delay
(1);
CLK=0;
delay
(1);
temp<<=1;
}
}
Enc=0;Enb=0;Ena=0;//Theinputof595finishoutputvalid,AD_validy0=0y6=1
}
(4)TLC2543AD转换芯片程序
uintAD2543_writeandread(ucharport)
{
uintj,ad_value=0;
CLK=0;Dout=1;
Enc=0;Enb=0;Ena=0;//AD_validy0=0y6=1
for(j=0;j<12;j++)
{
Din=port&0x80;
if(Dout)
{
ad_value|=0x01;
}
CLK=1;
_nop_();
_nop_();
_nop_();
CLK=0;
_nop_();
_nop_();
_nop_();
port<<=1;
ad_value<<=1;
}
Enc=1;Enb=1;Ena=0;//y0=1y6=0
ad_value>>=1;
returnad_value;
}
六、实习心得
通过一周的单片机实习我对单片机有了更深入的理解,熟练掌握了SPI接口芯片TLC2543与74HC595的驱动程序,加深了对SPI接口的认识。
了解了138译码器及其他扩展芯片在扩展复用I/O中的应用,学会了如何用keil编程软件对程序进行仿真。
我坚信通过这一段时间的实习,从中获得的实践经验使我终身受益,并会在我毕业后的实际工作中不断地得到印证,我会持续地理解和体会实习中所学到的知识,期望在未来的工作中把学到的理论知识和实践经验不断的应用到实际工作中来,充分展示我的个人价值和人生价值,为实现自我的理想和光明的前程而努力。
七、参考文献
单片微型计算机与接口技术.李群芳.北京:
电子工业出版社
八、教师评语
教师评语
成绩
教师签字: