- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
关于单片机最小系统板的制作总结
通过制作最小系统板,我们对单片机内部硬件结构、工作原理有了基本的认识,同时掌握了程序设计的基本方法;其次,我们学会了电子电路设计的基本流程,熟悉了89C51/C52芯片及一些基础电路。最后,我们学会了基于C语言的Proteus仿真,熟悉了调试单片机的应用系统的一般方法!
系统设计
最小系统
采用89C52芯片,外接时钟电路,复位电路。芯片的所有引脚与排针相连,以方便以后的使用,并且特别引出了特殊引脚,以与其它引脚区分。
实现跑马灯
在系统板的P2端口,从 P20—P27 I/O端口依次连接一个发光管二极管,在软件的控制下实现花样跑马灯!
电路
本次设计使用单片机芯片STC89C52,单片机最小系统电路如下:
硬件单元电路
复位电路
本次设计复位电路采用的是上电复位方式。上电复位时通过外部复位路的电容充电来实现的,为了保证复位成功,只要RST引脚保持足够时间。复位电路如下图所示
时钟电路
本次设计采用的是12MHz的晶振,两只电容在20pF~100pF之间取值,其取值在60pF~70pF时振荡器频率稳定性较高,按照一般经验,外接晶体时两个电容取值为30pF,本次设计选为30pF。晶振电路如下图所示
3.89C52芯片引脚
通过学习,我们认识到:STC89C52 是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在线系统可编程Flash使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 STC89C52具有以下标准功:8k字节Flash256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。 另外,STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作允许RAM、定时器/计数器、串口、中断继续工作。
材料详单
系统组件
89C51芯片,晶振(12MHZ,1个),30pf电容(2个),20pf电容(2个),电阻(10K,1个),单排插针;
跑马灯
电阻(10K,10个),发光二极管(10个);
3.焊接工具
烙铁,烙铁架,焊锡。
四.软件部分
1.依次循环亮
#include reg52.h
void delay(unsigned int i);
void delay(unsigned int i)
{
unsigned char j;
for(i; i 0; i--)
for(j = 255; j 0; j--);
}char LED;
main()
{
unsigned char i;
while (1)
{ LED = 0xfe;
for (i = 0 ;i 4 ; i++)
{
P2 = LED;
delay(500);
LED = LED 1;
LED = LED | 0x01;
}
for (i = 0 ;i 4 ; i++)
{
P2 = LED;
delay(500);
LED = LED 1;
LED = LED | 0x80;
}
}
}
2.两边往中间跑
#includereg52.h
void delay(int t)
{
int i;
for(i=0;it;i++);
}
int led[4]={0x7e,0xbd,0xdb,0xe7};
void main(void)
{
int i;
P2=0xff;
while(1)
{
for(i=0;i4;i++)
{
P2=led[i];
delay(20000);
}
for(i=3;i;i--)
{
P2=led[i];
delay(20000);
}
}
}
3 依次累加
#includereg52.h
void delay(int t)
{
int i;
for(i=0;it;i++);
}
unsigned int led1[8]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,
文档评论(0)