单片机简单应用系统制作

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

个人:单片机简单应用系统制作

1功能:单片机硬件和软件设计、制作和调试,实现单片机简单输出输入。

2电路原理图:

3源程序:

#include //包含89S52单片机的头文件

#define uchar unsigned char //定义宏uchar为unsigned char

类型

#define uint unsigned int //定义宏uint为unsigned int类型sbit P1_0=P1^0; //位定义,定义变量P1_1为P1.0位uchar k; //利用宏uchar定义变量k为unsigned char 类型

uchar n=1; //利用宏uchar定义变量n,且赋值为1 void DelayMS(uint ms) //延时函数

{

uchar i;

while(ms--) for(i=0;i<120;i++);

}

//键扫描函数,利用宏uchar定义而不用void,表示该函数有返回值uchar Key_Scan( )

{

P0=0xFF; //使用P0作为输入口检测按键状态,需先送高电平k=P0; //读入P0口的按键状态,送入变量k中

if(k!= 0xFF) //如果k不等于0xFF,表示有按键按下

{

DelayMS(10); //延时10ms,作用是按键去抖动

if (k!=P0) k=0xFF;

while(P0!=0xFF); //如果k不等于P0,则k=0xFF }

return(k); //函数返回值为k值,调用本函数,则会返回k

}

void main( ) //主函数

{

P1=0x00; //初始化P1口,输出0x00,所有继电器断开while(1)

{

Key_Scan(); //调用Key_Scan函数,扫描键盘

PD: switch(k) //开关语句,判断k值,此处设置标号PD {

case 0xFE: P1=P1&0x01;

P1_0=~P1_0;

P3=0x06;

break;

case 0xFD: P1=n; //若k=0xFD,表示按下S2

n<<=1;

if(n==0) n=1;

P3=0x5B;

break;

case 0xFB: while(1) //若k=0xFB,表示按下S3

{

for(n=1;n!=0;n<<=1)

{

P1=n;

DelayMS(500);

P3=0x4F;

Key_Scan();

if (k!=0xFF) break;

}

if(k!=0xFF) goto PD;

}

break;

case 0xF7: P1=0x00;

P3=0x66;

}

}

}

4完成情况:结果除了按键出了点意外,一切都好。从画图,布线,打印,到腐蚀电路板,再到焊元件,一步步完成。

每步都有成果。然后调试,按照现象,检查电路,纠

正电路本身的错误,或由于虚焊、腐蚀过度、元器件

放置错误等。最后保证系统能运行…

Sch电路图

Pcb布线图

单片机简单应用系统电路板

单片机装载跑马程序的单个led跑马显示

电路板背后布置

说明:以上皆是个人原图,第一次制作电路板

扩展1;s51下载线制作方法

1功能:下载源程序到单片机内

2电路原理图;

3完成情况:没有做。

相关文档
最新文档