STC 12C5A60S2芯片的实验板报告Word文件下载.docx

上传人:b****4 文档编号:18415407 上传时间:2022-12-16 格式:DOCX 页数:57 大小:115.48KB
下载 相关 举报
STC 12C5A60S2芯片的实验板报告Word文件下载.docx_第1页
第1页 / 共57页
STC 12C5A60S2芯片的实验板报告Word文件下载.docx_第2页
第2页 / 共57页
STC 12C5A60S2芯片的实验板报告Word文件下载.docx_第3页
第3页 / 共57页
STC 12C5A60S2芯片的实验板报告Word文件下载.docx_第4页
第4页 / 共57页
STC 12C5A60S2芯片的实验板报告Word文件下载.docx_第5页
第5页 / 共57页
点击查看更多>>
下载资源
资源描述

STC 12C5A60S2芯片的实验板报告Word文件下载.docx

《STC 12C5A60S2芯片的实验板报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《STC 12C5A60S2芯片的实验板报告Word文件下载.docx(57页珍藏版)》请在冰豆网上搜索。

STC 12C5A60S2芯片的实验板报告Word文件下载.docx

32个可编程I/O口线;

三个16位定时器/计数器;

八个中断源;

全双工UART串行通道;

低功耗空闲和掉电模式;

掉电后中断可唤醒;

看门狗定时器;

双数据指针;

掉电标识符。

部分引脚介绍:

P0、P1、P2、P3均可做双向I/O口,当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。

P2口作为高8位地址线,也有第二功能。

P1.0T2(定时器/计数器T2的外部计数输入),时钟输出

P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)

P1.5MOSI(在系统编程用)

P1.6MISO(在系统编程用)

P1.7SCK(在系统编程用)

P3.0RXD(串行输入口)

P3.1TXD(串行输出口)

P3.2INTO(外中断0)

P3.3INT1(外中断1)

P3.4TO(定时/计数器0)

P3.5T1(定时/计数器1)

P3.6WR(外部数据存储器写选通)

P3.7RD(外部数据存储器读选通)

此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。

RST:

复位输入。

当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。

XTAL1:

振荡器反相放大器和内部时钟发生电路的输入端。

XTAL2:

振荡器反相放大器的输出端。

2.1.2MAX232芯片

MAX232芯片是美信公司专门为电脑的RS-232标准串口设计

的单电源电平转换芯片,使用+5v单电源供电。

主要特点:

符合所有的RS-232C技术标准;

只需要单一+5V

电源供电;

片载电荷泵具有升压、电压极性反转能力,能够产生+10

V和-10V电压V+、V-;

4、功耗低,典型供电电流5mA;

内部集

成2个RS-232C驱动器;

内部集成两个RS-232C接收器。

引脚介绍:

第一部分是电荷泵电路。

由1、2、3、4、5、6

图2.2MAX232引脚图

脚和4只电容构成。

功能是产生+12v和-12v两个电源,提供给

RS-232串口电平的需要。

第二部分是数据转换通道。

由7、8、

9、10、11、12、13、14脚构成两个数据通道。

其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。

8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。

TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DB9插头;

DB9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。

第三部分是供电。

15脚GND、16脚VCC(+5v)。

2.1.3LCD1602液晶显示器

液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多

优点,在各类仪表和低功耗系统中得到广泛的应用。

工业字符型液晶,

图2.31602引脚图

能够同时显示16x2即32个字符(16列2行)。

第1脚:

VSS为地电源。

第2脚:

VDD接5V正电源。

第3脚:

V0为液晶显示器对比度调整端,接正电源时对比度最弱,接

地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一

个10K的电位器调整对比度(建议接地,弄不好有的模块会不显示)。

第4脚:

RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。

第5脚:

RW为读写信号线,高电平时进行读操作,低电平时进行写操作。

第6脚:

E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。

第7~14脚:

D0~D7为8位双向数据线。

第15~16脚:

空脚(有的用来接背光)

第三章单片机电路板焊接

3.1单片机的焊接

图3-1

3.2焊接原件清单

表3-1原件清单

序号

名称

型号

数量

说明

1

电容

20p

2

C01C02

104

6

C1-C6

3

电解电容

100uf/16V

C7

4

4.7uf/16V

C9

5

1uf/16V

C10-C14

晶振

11.0592MHz

Y1

7

电位器

10k

3296VR1VR2VR3

8

电阻

10Ω

R13

9

200Ω

10

43

R7R8

11

1k

R2R3R9-R12

12

2k

R6

13

4.7k

R4

14

8.2k

R1

15

R7

16

电阻排

430Ω

9p

17

18

发光二极管

白发红Φ

D1-D8

19

白发绿Φ

20

白发蓝Φ

21

二极管

IN4148

D9

22

三极管

8550

T1-T6

23

接插件

单排插针

间距2.54mm

24

双排插针

25

单排插座40p

26

USB母座

Mini90度弯针(5PF)

27

集成电路

4016

替换74CS14

28

74HC573

U6

29

74LS00

U7

30

STC12C5A60S2

DIP40封装U1

31

HS0038

红外接收XK1

32

DS12C887

U4时钟

33

MAX232

U5

34

温度传感器

DS18B20

DS1

35

数码管

MT03641B

U9

36

按键

4脚

6*6*6mm

37

自锁开关

7*7mm

38

蜂鸣器

5V

连续声

39

IC座

DIP8

40

DIP14

41

DIP16

42

DIP20

DIP24

44

DIP40

45

液晶模块

LCD1602

蓝背光

46

Jn12864J

下载器

47

CH341A

SOL-28

48

贴片0805

49

50

10uF

51

52

53

54

白发红

55

12MHz

56

3.3焊接注意事项

焊接操作注意事项有:

①保持烙铁头的清洁,因为焊接时烙铁头长期处于高温状态,其表面很容易氧化并沾上一层黑色杂质形成隔热层,使烙铁头失去加热作用。

②采用正确的加热方法,要靠增加接触面积加快传热,而不要用烙铁对焊件加力。

应该让烙铁头与焊件形成面接触而不是点接触。

③加热要靠焊锡桥,要提高烙铁头加热的效率,需要形成热量传递的焊锡桥。

④在焊锡凝固之前不要使焊件移动或振动用镊子夹住焊件时,一定要等焊锡凝固后再移去镊子。

⑤焊锡量要合适,过量的焊锡会增加焊接时间,降低工作速度。

⑥不要用过量的焊剂,适量的焊剂是非常有必要的。

过量的松香不仅造成焊后焊点周围脏不美观,而且当加热时间不足时,又容易夹杂到焊锡中形成“夹渣”缺陷。

在我自己的焊接当中,也出现了焊锡量不足和过多的状况,最后导致接入电源后无法正常使用的现象。

同时注意元件的焊接顺序也很重要,选择合适的焊接顺序,不仅便于焊接,而且不至于导致元件破损。

第四章c语言应用程序

4.1KeiluVision的使用

打开“KeiluVision”,点击“project”,在弹出的对话窗口中选择“newproject”新建工程,建立工程文件。

在弹出的窗口中选择“Atmel”中的“AT89S52”确定后即可添加8051源代码。

选中工程文件右键点“Optionfortarget”再点“Output”“CreateHEX”创建HEX文件;

点“File”之后点击“NEW”即可在出现的文本框中输入程序,保存路径与工程文件相同,且用英文名,格式为“.c”。

再添加源文件到project。

程序输入完了要保存,编译查看有无错误,有就修改,如果没有,将PC机与单片机用ISP下载线连接起来,USB驱动文件中,选择isp编程下载软件中“progisp”运行程序,在文件夹下选“调入flash”,调入hex文件,之后点击“自动”即可运行程序查看现象。

串行通信的调试可利用串行通信助手软件,查看单片机是如何与PC机进行数据通信的。

4.2流水灯程序

#include<

reg52.h>

#defineucharunsignedchar

#defineuintunsignedint

voidDelay(uintdel)

{

uinti,j;

for(i=0;

i<

del;

i++)

for(j=0;

j<

1827;

j++)

;

}

voidMain(void)

{

while

(1)

P1=0xfe;

Delay(100);

P1=0xfd;

P1=0xfb;

P1=0xf7;

P1=0xef;

P1=0xdf;

P1=0xbf;

P1=0x7f;

}

4.3流水灯高低位循环闪烁

#include<

voidmain(void)

inti;

i<

2;

i++)

P1=0xfe;

P1=0xfd;

P1=0xfb;

P1=0xf7;

P1=0xef;

P1=0xdf;

P1=0xbf;

P1=0x7f;

}

P1=0x00;

Delay(200);

P1=0xff;

4.4AD转换测温度

#include<

reg51.h>

absacc.h>

typedefunsignedcharBYTE;

typedefunsignedintWORD;

#definewr_comXBYTE[0xD000]//写命令

#definewr_dataXBYTE[0xD100]//写数据

#definerd_comXBYTE[0xD200]//读命令

#definerd_dataXBYTE[0xD300]//读数据

sbitDQ=P1^7;

//ds18b20与单片机连接口

unsignedcharcodestr1[]={"

"

};

unsignedcharcodestr2[]={"

TEMP:

unsignedchardatadisdata[5];

//百、十、个、小数位

unsignedinttvalue;

//温度值

unsignedchartflag;

//温度正负标志

voiddelay1ms(unsignedintms)//延时1毫秒子函数,形参为ms

unsignedinti,j;

ms;

j<

500;

j++);

voidwrite_cmd(BYTEcmd)

{

BYTEdl;

do{

dl=rd_com;

}while((dl&

0x80)!

=0);

//判忙

wr_com=cmd;

delay1ms

(1);

voidwrite_data(BYTEdat)

wr_data=dat;

}

voidlcd_init()//lcd初始化设置子函数,不带参数,0x38是显示模式设置,其余是显示开/关及光标设置,无顺序

delay1ms(15);

write_cmd(0x38);

//调用写控制指令子函数,并用实参"

00111000"

代替形参com

//0x38表示设置为16*2显示,每个块为5*7点阵,8位数据接口

delay1ms(5);

write_cmd(0x08);

00001000"

//0x08表示设置为关显示、不显示光标、光标不闪烁

write_cmd(0x01);

00000001"

//0x01表示显示数据清屏(数据指针清0,所有显示清0)

write_cmd(0x06);

//调用写控制指令子函数,并用实参"

00000110"

//0x06表示当读或写一个字符后地址指针加1,且光标加1;

当写一个字符时,整屏显示不移动

write_cmd(0x0c);

00001100"

//0x0c打开显示、不显示光标、光标不闪烁

voiddisplay(unsignedchar*p)//lcd显示字符串子函数

while(*p!

='

\0'

)//测试是否等于'

,即判断是否结尾

write_data(*p);

//显示指针所指的字符串

p++;

//指针加1

delay1ms

(1);

voidinit_play()//初始化显示子函数

lcd_init();

//调用lcd初始化设置子函数,对LCD进行初始化

write_cmd(0x80);

10000000"

//并将数据指针定位到第一行第一个字符处

display(str1);

//从第一行第一个字符处显示字符串str1

write_cmd(0x80+0x40);

//并将数据指针定位到第二行第一个字符处

display(str2);

//从第二行第一个字符处显示字符串str2

voidwrite_string(BYTE*s)

while(*s!

='

)//'

为字符串结束标志

write_data(*s);

s++;

voidset_display_place(BYTEline,column)

BYTEaddress;

if(line==1)

address=0x80+column;

elseif(line==2)

address=0xc0+column;

write_cmd(address);

voidwrite_string_lcd(BYTEline,column,unsignedchar*string)

set_display_place(line,column);

write_string(string);

voiddelay_18b20(unsignedinti)//延时1微秒

while(i--);

voidds18b20rst()//ds18b20初始化子函数

//要求"

数据线拉高-延时-数据线拉低-延时大于480微妙-数据线拉高-延时等待"

unsignedcharx=0;

DQ=1;

//信号线DQ复位

delay_18b20(40);

//延时

DQ=0;

//DQ拉低

delay_18b20(4000);

//精确延时大于480us

//拉高

delay_18b20(400);

voidds18b20wr(unsignedcharwdata)/*写数据子函数,无返回值,含参数*/

unsignedchari=0;

for(i=8;

i>

0;

i--)//要写完一个字节,故需要重复8次以下操作

{

DQ=0;

//数据线拉低

DQ=wdata&

0x01;

//wdata是一个形参,将其与00000001进行按位与

//按从低到高的顺序发送数据(一次发送一位)

delay_18b20(100);

DQ=1;

//最后将数据线拉高

wdata>

>

=1;

//将wdata右移1位

unsignedchards18b20rd()//读数据子函数,是有返回值dat

unsignedchari=0;

unsignedchardat=0;

for(i=8;

i>

i--)//要读完一个字节,故需要重复8次以下操作

{

//给脉冲信号

dat>

if(DQ)

dat|=0x80;

return(dat);

//返回dat

read_temp()//读取温度值并转换的子函数,有返回值温度值tvalue

unsignedchara,b;

ds18b20rst();

//调用ds18b20初始化子函数

ds18b20wr(0xcc);

//调用写数据子函数,向ds18b20写命令0xcc

//ccH表示跳过ROM读序列号,适用于单机工作,直接向18b20发送温度变换命令

ds18b20wr(0x44);

//调用写数据子函数,向ds18b20写命令0x44

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1