STC 12C5A60S2芯片的实验板报告.docx
- 文档编号:8496539
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:28
- 大小:99.74KB
STC 12C5A60S2芯片的实验板报告.docx
《STC 12C5A60S2芯片的实验板报告.docx》由会员分享,可在线阅读,更多相关《STC 12C5A60S2芯片的实验板报告.docx(28页珍藏版)》请在冰豆网上搜索。
STC12C5A60S2芯片的实验板报告
第一章单片机概述
1.1主要芯片介绍
1.1.1MAX232芯片
MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的单电源平转换芯片,使用+5V单电源供电。
特点:
符合所有的RS-232C技术标准;只需要单一的+5V电源供电;片载电荷泵具有升压、电压极性反转能力,能够产生+10V和-10V电压;功耗低、典型供电电流5mA;内部集成2个RS-232C驱动器;内部集成两个RS-232C接收器。
引脚介绍:
第一部分是电荷泵电路。
由1、2、3、4、5、6脚和4只电容构成。
功能是产生+12V和-12V两个电源,提供给RS-232串口电平的需要。
第二部分是数据转换通道。
由7、8、9、10、11、12、13、14脚构成两个数据通道。
其中14脚(T1OUT)、13脚(RIN)、12脚(R1OUT)、11脚(T1IN)为第一数据通道。
7脚(T2OUT)、8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、为第二数据通道。
TTL/COMS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DB9插头;DB9插头的RS-232数据从T1IN、T2IN输入转换成TTL/COMS数据后从R1OUT、R2OUT输出。
第三部分是供电。
15引脚GND、16引脚VCC(+5V)。
图1-1MAX232芯片
1.1.2LCD1602液晶显示
液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在各类仪表和低功耗系统中得到广泛的应用。
能显示16行2列,32个字符。
引脚介绍如下:
1引脚:
VSS接地
2引脚:
VDD接+5V电源
3引脚:
V0为液晶显示器对比度调节,接正电源时对比度最低,接地电源对比度最高,对比度过高会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
4引脚:
RS为寄存器选择,高电平时选择数据寄存器,低电平时选择指令寄存器。
5引脚:
RW为读写信号线,高点评时进行读操作,低电平时进行写操作。
6引脚:
E端为使能端,当E端由高电平跳到低电平,液晶模块执行命令。
7-14引脚:
D0-D78位双向数据线
15、16引脚:
悬空引脚
图1-21602引脚
1.1.312C5A60S2
STC12C5A60S2是STC生产的单时钟/机器周期(1T)的单片机,是高速、低功耗、超强抗干扰的新一代8051单片机,指令代码完全兼容传统的8051,但速度快8-12倍。
内部集成MAX810专用复位电路,2位PWM,8路高速10位A/D转换,针对电机控制,强干扰场合。
1、增强型8051CPU,1T(1024G),单时钟/机器周期
2、工作电压 5.5-3.5V
3、1280字节RAM
4、通用I/O口,复位后为:
准双向口/弱上拉
可设置成四种模式:
准双向口/弱上拉,强推挽/强上拉,仅为输入/高阻,开漏
每个I/O口驱动能力均可达到20mA,但整个芯片最大不要超过120mA
5、有EEPROM功能
6、看门狗
7、内部集成MAX810专用复位电路
8、外部掉电检测电路
9、时钟源:
外部高精度晶体/时钟,内部R/C振荡器
10、4个16位定时器
两个与传统8051兼容的定时器/计数器,16位定时器T0和T1
11、3个时钟输出口,可由T0的溢出在P3.4/T0输出时钟,可由T1的溢出在P3.5/T1输出时钟,独立波特率发生器可以在P1.0口输出时钟
12、外部中断I/O口7路,传统的下降沿中断或电平触发中断,并新增支持上升沿中断的PCA模块,Power Down模式可由外部中断唤醒,INT0/P3.2,INT1/P3.3,T0/P3.4,T1/P3.5,RxD/P3.0,CCP0/P1.3,CCP0/P1.3
13、PWM2路
14、A/D转换,10位精度ADC,共8路,转换速度可达250K/S
15、通用全双工异步串行口(UART)
16、双串口,RxD2/P1.2,TxD2/P1.3
17、工作范围:
-40~85
18、封装:
LQFP-48,LQFP-44,PDIP-40,PLCC
管脚说明:
P0.0~P0.7 P0:
P0口既可以作为输入/输出口,也可以作为地址/数据复用总线使用。
当P0口作为输入/输出口时,P0是一个8位准双向口,内部有弱上拉电阻,无需外接上拉电阻。
当P0作为地址/数据复用总线使用时,是低8位地址线A0~A7,数据线D0~D7 。
P1.0/ADC0/CLKOUT2
标准IO口、ADC输入通道0、独立波特率发生器的时钟输出 。
P1.1/ADC1。
P1.2/ADC2/ECI/RxD2
标准IO口、ADC输入通道2、PCA计数器的外部脉冲输入脚,第二串口数据接收端。
P1.3/ADC3/CCP0/TxD2
外部信号捕获,高速脉冲输出及脉宽调制输出、第二串口数据发送端。
P1.4/ADC4/CCP1/SS非
SPI同步串行接口的从机选择信号。
P1.5/ADC5/MOSI
SPI同步串行接口的主出从入(主器件的输入和从器件的输出) 。
P1.6/ADC7/SCLK
SPI同步串行接口的主入从出。
P2.0~P2.7
P2口内部有上拉电阻,既可作为输入输出口(8位准双向口),也可作为高8位地址总线使用。
P3.0/RxD
标准IO口、串口1数据接收端。
P3.1/INT0非
外部中断0,下降沿中断或低电平中断。
P3.3/INT1。
P3.4/T0/INT非/CLKOUT0
定时器计数器0外部输入、定时器0下降沿中断、定时计数器0的时钟输出 。
A/D转换器的结构:
STC12C5A60AD/S2系列带A/D转换的单片机的A/D转换口在P1口,有8路10位高速A/D转换器,速度可达到250KHz(25万次/秒)。
8路电压输入型A/D,可做温度检测、电池电压检测、按键扫描、频谱检测等。
上电复位后P1口为弱上拉型IO口,用户可以通过软件设置将8路中的任何一路设置为A/D转换,不须作为A/D使用的口可继续作为IO口使用。
单片机ADC由多路开关、比较器、逐次比较寄存器、10位DAC、转换结果寄存器以及ADC_CONTER构成。
该单片机的ADC是逐次比较型ADC。
主次比较型ADC由一个比较器和D/A转换器构成,通过逐次比较逻辑,从最高位(MSB)开始,顺序地对每一输入电压与内置D/A转换器输出进行比较,经过多次比较,使转换所得的数字量逐次逼近输入模拟量对应值。
逐次比较型A/D转换器具有速度高,功耗低等优点。
需作为AD使用的口先将P1ASF特殊功能寄存器中的相应位置为‘1’,将相应的口设置为模拟功能
芯片引脚图:
图1-312C5A60S2芯片引脚
第二章实验板介绍
2.1实验板介绍
SCKJ-I型实验板包括:
单片机、ISP程序下载器、数码管动态显示电路、8位LED指示灯、液晶显示模块1602和12864、时钟芯片DS12C887、温度传感器DS18B20、74HC573输出口扩展、A/D转换、按键、遥控接收、继电器输出、蜂鸣器报警等电路,可进行相关电路和程序运行。
同时,单片机、74HC573输出口扩展等接有外部插针,也可用于其它相关外围设别的调试。
实验板实物图如下:
图2-1实验板实物图
整体电路:
图2-2整体电路图
2.2实验板地址分配及跳线说明
地址分配:
时钟芯片DS12C887地址:
0000H——1FFFH
74HC573扩展I/O口地址:
6000H——7FFFH
液晶显示模块LCD地址:
0C000H——0DFFFH
跳线说明:
J1、J2:
单片机引脚
J4、J5、J6:
用于DS18B20的硬件连接
J7、J15:
数码管的位选和段选输入
J8:
蜂鸣器、继电器的控制输入
J9、J10:
继电器的控制输出
J11:
按键的行列引脚
J12:
扩展至J11附近的P1口引脚
J13:
8位LED灯的控制输入
J14:
I/O扩展74HC573的输出,与J13或者J15可用跳线连接
J16、J17:
电位器引出端
J18:
STC单片机下载输入端,可用跳线器与电路板上的下载器输出端Ju1连接
J19:
可用跳线器将遥控输出、DS12C887中的中断信号连接到单片机的INT1、INT0
J21:
地线引出端
J22:
+5V引出端
第三章调试
3.1LED灯从低八位到高八位一次亮
3.1.1调试程序
#include
#defineucharunsignedchar
#defineuintunsignedint
voidDelay(uintdel)
{
uinti,j;
for(i=0;i for(j=0;j<1827;j++); } voidMain(void) { while (1) { P1=0xfe; Delay(100); P1=0xfd; Delay(100); P1=0xfb; Delay(100); P1=0xf7; Delay(100); P1=0xef; Delay(100); P1=0xdf; Delay(100); P1=0xbf; Delay(100); P1=0x7f; Delay(100); } } 3.2A/D电路 3.2.1程序 voidDelay(WORDn) { WORDy; while(n--) { y=500; while(y--); } } /************************************************************************ Functionname: write_cmd Descriptions: 向lcd输入指令 ************************************************************************/ voidwrite_cmd(BYTEcmd) { P20=0;//写指令模式 P21=0; P27=1; P37=0; P36=0; P0=cmd; P27=0; P37=0; P36=0; Delay(10); } /********************************************************************** Functionname: write_data Descriptions: 写入数据 **********************************************************************/ voidwrite_data(BYTEdat) { P20=1;//写数据模式 P21=0; P27=1; P37=0; P36=0; P0=dat; P27=0; P37=0; P36=0; Delay(10); } /*********************************************************************** Functionname: write_string Descriptions: 写入字符串 ***********************************************************************/ /*voidwrite_string(BYTE*s) { while(*s! ='\0')//'\0'为字符串结束标志 { write_data(*s); s++; } } */ /********************************************************************** Functionname: set_display_place Descriptions: 设置字符的显示位置 **********************************************************************/ voidset_display_place(BYTEline,column) { BYTEaddress; if(line==1) { address=0x80+column; } elseif(line==2) { address=0xc0+column; } write_cmd(address); } /******************************************************************* Functionname: 将字符串写到指定的位置 Descriptions: 将字符串显示在lcd的特定位置 *******************************************************************/ /*voidwrite_string_lcd(BYTEline,column,unsignedchar*string) { set_display_place(line,column); write_string(string); Delay (1); } */ voidwrite_data_lcd(BYTEline,column,dat) { set_display_place(line,column); write_data(dat); Delay (1); } /****************************************************************** Functionname: 将字符写到指定的位置 Descriptions: 将字符串显示在lcd的特定位置 *******************************************************************/ /*************************************************** ************液晶模块初始化****************************** ****************************************************/ voidlcd_init(void) { write_cmd(0x06);// write_cmd(0x38);// //write_cmd(0x38);// write_cmd(0x0c);// write_cmd(0x01);// } /*****************LED显示位置********************/ voiddisplay(uintz) { uchari; disbuf[8]=z/10000+0x30; disbuf[10]=z%10000/1000+0x30; disbuf[11]=z%1000/100+0x30; disbuf[12]=z%100/10+0x30; disbuf[13]=z%10+0x30; for(i=0;i<14;i++) write_data_lcd(1,1+i,disbuf[i]); } /*voidread_ad(void) { uintad_data[8]; uintx,a,b; uchari; uintres,res1; ucharstatus=0; ADC_CONTR=0x80; Delay (1); for(i=0;i<8;i++) { ADC_CONTR=(0x80|i); ADC_CONTR|=0x80; status=0; while(! (ADC_CONTR&0x10)); ADC_CONTR&=0xE7; res=ADC_RES; res1=ADC_RESL; ad_data[i]=res*256+res1; } for(i=0;i<8;i++) { x=ad_data[i]; a=x/10+0x30; b=x%10+0x30; write_data_lcd(2,1,a); write_data_lcd(2,2,b); } } */ //------------------------------------------------------------------------------ uintAD_get(ucharchannel) { ADC_CONTR=0x88|channel;//开启AD转换10001000即POWERSPEED1SPEED0ADC_FLAGADC_STARTCHS2CHS1CHS0 _nop_();_nop_();_nop_();_nop_();//要经过4个CPU时钟的延时,其值才能够保证被设置进ADC_CONTR寄存器 while(! (ADC_CONTR&0x10));//等待转换完成 ADC_CONTR&=0xe7;//关闭AD转换,ADC_FLAG位由软件清0 return(ADC_RES*4+ADC_RESL);//返回AD转换完成的10位数据(16进制) } //------------------------------------------------------------------------------ floatAD_work(ucharchannel) { floatAD_val;//定义处理后的数值AD_val为浮点数 uchari; for(i=0;i<100;i++) AD_val+=AD_get(channel);//转换100次求平均值(提高精度) AD_val/=100; AD_val=(AD_val*5)/1024;//AD的参考电压是单片机上的5v,所以乘5即为实际电压值 AD_val=AD_val*10000; returnAD_val; } //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ voidAD_init() { P1ASF=0x01;//P1.0作为模拟功能AD使用 ADC_RES=0;//清零转换结果寄存器高8位 ADC_RESL=0;//清零转换结果寄存器低2位 ADC_CONTR=0x80;//开启AD电源 Delay (2);//等待1ms,让AD电源稳定 ES=1; EA=1; } 3.31602显示学号和姓名拼音 3.3.1调试程序 #include"reg51.h" #include"absacc.h" typedefunsignedcharBYTE; typedefunsignedintWORD; /*液晶1602口地址*/ #definewr_comXBYTE[0xC000]//写命令 #definewr_dataXBYTE[0xC100]//写数据 #definerd_comXBYTE[0xC200]//读命令 #definerd_dataXBYTE[0xC300]//读数据 voidlcd_init(void);//lcd初始化 voidwrite_cmd(BYTEcmd);//lcd写命令 //voidwrite_string(unsignedchar*s);//写字符串 voidwrite_data(BYTEdat);//写数据 voidset_display_place(BYTEline,column); voidwrite_string_lcd(BYTEline,column,unsignedchar*string); //voidwrite_data_lcd(BYTEline,column,dat); //voidcrti(unsignedlongdat); //voidcrt_r(floatx,BYTEN); voidDelay(WORDn) { WORDx; while(n--) { x=500; while(x--); } } /* voidDelay2(WORDn) { WORDx; while(n--) { x=5000; while(x--); } } */ /************************************************************************ Functionname: write_cmd Descriptions: 向lcd输入指令 ************************************************************************/ voidwrite_cmd(BYTEcmd) { BYTEdl; do{ dl=rd_com; }while((dl&0x80)! =0);//判忙 wr_com=cmd; Delay (1); } /********************************************************************** Functionname: write_data Descriptions: 写入数据 **********************************************************************/ voidwrite_data(BYTEdat) { BYTEdl; do{ dl=rd_com; }while((dl&0x80)! =0);//判忙 wr_data=dat; Delay (1);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- STC 12C5A60S2芯片的实验板报告 12 C5A60S2 芯片 实验 板报
![提示](https://static.bdocx.com/images/bang_tan.gif)