当前位置:文档之家› 单片机

单片机

单片机
单片机

湖南科技大学

信息与电气工程学院

《课程设计报告》

题目:多功能数字时钟

专业:通信工程

班级:一班

姓名:徐升炜

学号: 1254040128

指导教师:尹艳群

2015年 6 月 23 日

信息与电气工程学院

课程设计任务书

2014—2015 学年第二学期

专业:通信工程班级:一班学号: 1254040128 姓名:徐升炜

课程设计名称:单片机课程设计

设计题目:多功能数字时钟

完成期限:自 2015 年 6 月 8 日至 2015 年 6 月 19 日共 2 周

设计依据、要求及主要内容(可另加附页):

一、设计依据

本方案以STC15F2K60S2单片机作为主控核心,与时钟芯片、LED显示、按键等模块组成硬件系统,通过《单片机原理与应用》这门课的课程设计,学生应能对STC15系列单片机有一个全面的认识,掌握以STC15系列单片机为核心的电子电路的设计方法和应用技术。

二、要求

(1)利用STC15F2K60S2单片机作为主控器组成一个电子日历和电子钟。

(2)利用LED分别显示当前时间和日历。

(3)利用尽可能少的开关实现:校正日历和时间

(4)定制闹钟(时、分、表)

三、设计内容

该课程设计是利用STC15F2K60S2单片机内容的定时/计数器、中断系统、以及行列键盘和LED显示器等部件,设计一个单片机电子时钟。设计的电子时钟通过数码管显示,并通过按键实现时间和暂停、启动控制等。我们选择的方法是单片机开发设计使用的传统方法,通过本次设计,可以了解整个单片机开发的流程。文章首先介绍了单片机的基本知识,然后同时给出了框图,流程图等。论文涵盖了从需求分析,系统设计,编程,原理图等产品开发的基本过程。

近几年,单片机在各个领域得到广泛的应用。从工业到人们的日常生活,大部分的科技产品都是通过单片机来控制。在它问世之前,自动控制设备不能被广泛的应用,这是因为控制设备的体积庞大,耗电量大,价格昂贵。在第一台微处理器成功研制不久,第一个单片机就问世了。因为其小巧的体积,低功耗,以及高效的性能,单片机受到了大家的欢迎。

指导教师(签字):

批准日期:年月日

摘要

随着科学技术的不断发展,人们对时间计量的精度要求越来越高。高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟石晶表石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便;另一方面《单片机微机原理与接口技术》是一门实践性很强的的课程,只靠短短的课堂教学,学生只能略懂一些肤浅的表面知识,通过课程设计,学生亲自动手去做,在发现问题和解决问题中,才能够更好的理解《单片机微机原理与接口技术》的理论知识,提干我们的知识运用能力和实验技术,增强实践能力,为我们将来在技术领域的发展奠定了一定的实践基础。本次电子技术基础课程设计选题是数字钟的设计。主要原理是由晶体振荡电路产生多谐振荡,经过分频器分频后输出稳定的秒脉冲,作为时间基准。秒计数器满60向分计数器进位,分计数器满60向小时计数器进位,小时计数器以24为一个周期,并实现小时高位具有零熄灭的功能。计数器的输出经译码器送到显示器,可在相应位置正确显示时、分、秒。计时出现误差或者调整时间可以用校时电路进行时、分的调整。

目录

1.设计的任务与要求 (5)

1.1数字钟的设计目的: (5)

1.2数字钟的设计要求 (5)

1.3数字电子钟的基本原理 (5)

2.电路仿真与设计 (6)

2.1系统设计框图 (6)

2.2单元模块设计 (7)

2.2.1 74LHC595芯片 (7)

2.2.2 数码管驱动 (7)

2.2.3 行列式按键 (8)

2.2.4电子日历主芯片STC15F2K60S2 (9)

2.2.5综合框图 (9)

3.程序设计 (10)

4.课程设计心得体会 (19)

5.参考资料 (20)

1.设计的任务与要求

1.1数字钟的设计目的:

(1) 掌握数字电子钟的设计方法和制作过程。

(2)掌握常用数字集成电路的功能和使用。

(3)了解各芯片的逻辑功能、引脚安排和使用方法。

(4)掌握计数器相互级联的方法。

(5)学会用仿真软件对设计的原理图进行仿真。

1.2数字钟的设计要求:

(1)利用STC15F2K60S2单片机作为主控器组成一个电子日历和电子钟。

(2)利用LED分别显示当前时间和日历。

(3)利用尽可能少的开关实现:校正日历和时间

(4)定制闹钟(时、分、表)

1.3数字电子钟的基本原理:

单片机先通过了STC15F2K60S2主芯片,再通过74LHC595寄存器驱动时钟屏幕,,芯片驱动方式则是并行驱动,这样可以避免每次传送新的显示数据时,都需要从头到尾传送 24 个笔段数据。目前的传送方式可以只是传送已经变化了的显示数据。晶体频率使用的是 32768HZ,这种低频率时基,对掉电保护的电池耗电关系极大,STC15F2K60S2单片机具有的实时时钟的功能,大大方便了电路设计。

按照常规,在如此低的频率下,对单片机的指令执行速度会有矛盾,但是,这种单片机却能够让程序运行时使用“内部RC ”振荡频率而仅仅是时钟部分使用 32768HZ频率,这样,就可以选择“内部RC”高达数 MHZ 的指令运行频率而不用理会时钟走时频率,两者依靠这种特有的“RTC”功能获得了很理想的配合。当进入电池掉电保护的时候,可以令电池耗电维持在仅仅数十 uA 的水平,一只 60mAh的掉电保护电池,就可以让掉电保护时间长达几个月之久!进入掉电保护后,屏幕不显示,所有按钮和控制功能暂时失效,仅仅实时时钟仍然继续走时。当外部主电源恢复供电后,所有功能自动恢复,实时时钟无需调整。单片机的 15P是复位引脚,当上电时或者程序运行发生异常时,可以通过此引脚让程序重新运行。

但是,一般地,单片机本身具有“看门狗”自动复位功能,可以快速地自动对程序运行异常进行复位,人们几乎觉察不到它的复位影响。单片机的 10P 引脚安排为专门检测外部供电是否正常,当外部 5V供电掉电后,单片机将立即进入掉电保护状态,而在电路中电源能量还没有完全消耗尽之前,程序也必须抢先对各个端口进行配置,以便进入低电源消耗状态。电路图中有两个输出端口,一个是“睡眠”控制输出端口,它只有在开始倒计时的时候才会输出高电平;另一个时“定时”输出端

口,它只有在到达定时时间的时候才会输出高电平。

合理地利用这两个输出,就能够安排一些简单的自动控制,例如,可以利用“睡眠”的倒计时功能来给电孵化行业的“自动翻蛋”使用,利用“定时”功能来作为一只“电子闹钟”等等。电路中,屏幕的公共引脚接有一只 NPN小功率三极管,这主要是在单片机对 74LHC595 传送数据时,临时关闭显示屏幕的供电以免产生“鬼影”,同时,在掉电保护时则可以完全关闭屏幕的供电。单片机预留了两个端口没有使用,这里可以在将来安排外接电存储器,以便派生例如电子打铃仪或者多次定时数据存储,成为功能更加丰富的时钟品种。各个按钮的使用说明:(请参考印刷板图)。各按键在印刷板上的编号与单片机芯片引脚和功能关系,请参考下面表格。其中,标注“G”的焊盘是电路供电的参考点,即 5V电源的负极,俗称“地线”。所有按键都是需要与这个“G”接通的时候(需要串入 1K 左右电阻),该按键才算是“被按下”。当这个“G”引出到按键板时,需要在它上面串接一只 1K左右的电阻,不要直接让其与各按键引脚直接“短接”,以防止芯片内部引脚损坏。

2.电路仿真与设计

2.1系统设计框图

2.2单元模块设计

2.2.1 74LHC595芯片

这是由两片74Lhc595连接成的60进制计数器

他们都是工作在置数方式,低位是连接成为一个十进制计数器,它的clk端接的是低位的进位脉冲。高位接成了六进制计数器。当输出端为0101的时候在下个时钟的上升沿把数据置数成0000 这样就形成了6进制计数器,连个级联就成为了60进制计数器,分别可以作为秒和分记时。

24进制计数器的个位也是用置数法连接成了十进制计数器。74LHC595的两个输入引脚接到了十位的Q1和个位的Q2 上输出引脚接到了电路板上所有161芯片的Rest端。也就是说当十位为0010个位为0100的时候(24)使所有161复位归0。完成24进制计数。

2.2.2数码管驱动

数码管驱动电路时由DPY组成,它能将161输出的标准BCD码变换成驱动七段数码管所需的信号。上面的200欧电阻是为数码管限流用的,防止由于电流太大损坏主芯片

2.2.3行列式按键

键盘分编码键盘和非编码键盘,键盘上闭合键的识别由专用的硬件编码器实现,并产生按键编码号或键值的称为编码键盘,如计算机键盘。而靠软件编程来识别的称为非编码键盘,在单片机组成的各种系统中,用的最多的是非编码键盘,也有用到编码键盘的,我们这里用的就是非编码键盘。如图2键盘图所示,当按钮按下时;端口会变成低电平,我们设计一段扫描程序来判断那个端口是低电平来判断是否有按键按下。

2.2.4电子日历主芯片STC15F2K60S2

2.2.5综合框图

3.程序设计

#define MAIN_Fosc 22118400L

#include "STC15Fxxxx.H"

#define Timer0_Reload (65536UL -(MAIN_Fosc / 1000))

#define DIS_DOT 0x20

#define DIS_BLACK 0x10

#define DIS_ 0x11

u8 code t_display[]={

// 0 1 2 3 4 5 6 7 8 9 A B C

D E F

0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,

0x5E,0x79,0x71,

//black - H J K L N o P U t G Q r M y

0x00,0x40,0x76,0x1E,0x70,0x38,0x37,0x5C,0x73,0x3E,0x78,0x3d,0x67,0x50 ,0x37,0x6e,0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,0x46 };

u8 code T_COM[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};

sbit P_HC595_SER = P4^0; //pin 14 SER data input

sbit P_HC595_RCLK = P5^4; //pin 12 RCLk store (latch) clock sbit P_HC595_SRCLK = P4^3; //pin 11 SRCLK Shift data clock

u8 LED8[8];

u8 display_index;

bit B_1ms;

u8 hour,minute,second;

u8 hour1,minute1,second1;

u16 year,month,day;

u16 msecond;

u8 KeyCode;

u8 cnt10ms;

u8 IO_KeyState, IO_KeyState1, IO_KeyHoldCnt;

u8 cnt50ms;

u8 m;

void IO_KeyScan(void); //50ms call

void DisplayRTC(void)

{

if(m==0) //

{

if(hour >= 10) LED8[0] = hour / 10;

else LED8[0] = DIS_BLACK;

LED8[1] = hour % 10;

LED8[2] = DIS_;

LED8[3] = minute / 10;

LED8[4] = minute % 10;

LED8[5] = DIS_;

LED8[6] = second / 10;

LED8[7] = second % 10;

}

else if(m==1)

{

LED8[0]=2;

LED8[1]=0;

LED8[2]=year/10;

LED8[3]=year%10;

LED8[4]=month/10;

LED8[5]=month%10;

LED8[6] = day / 10;

LED8[7] = day % 10;

}

else if(m==2)

{

if(hour >= 10) LED8[0] = hour1 / 10;

else LED8[0] = DIS_BLACK;

LED8[1] = hour1 % 10;

LED8[2] = DIS_;

LED8[3] = minute1 / 10;

LED8[4] = minute1 % 10;

LED8[5] = DIS_;

LED8[6] = second1 / 10;

LED8[7] = second1 % 10;

}

if(hour==hour1)

if(minute==minute1)

if(second==second1)

{

P17=P16=P47=P46=0;

}

}

void RTC(void)

{

if(++second >= 60)

{

second = 0;

if(++minute >= 60)

{

minute = 0;

if(++hour >= 24)

{

hour = 0;

day++;

if(day>30)

{

day=0;

month++;

if(month>12)

{

month=0;

year++;

}

}

}

}

}

}

void main(void)

{

u8 i,k;

P0M1 = 0; P0M0 = 0;

P1M1 = 0; P1M0 = 0;

P2M1 = 0; P2M0 = 0;

P3M1 = 0; P3M0 = 0;

P4M1 = 0; P4M0 = 0;

P5M1 = 0; P5M0 = 0;

P6M1 = 0; P6M0 = 0;

P7M1 = 0; P7M0 = 0;

AUXR = 0x80; //Timer0 set as 1T, 16 bits timer auto-reload, TH0 = (u8)(Timer0_Reload / 256);

TL0 = (u8)(Timer0_Reload % 256);

ET0 = 1; //Timer0 interrupt enable

TR0 = 1; //Tiner0 run

EA = 1;

display_index = 0;

hour = 11;

minute = 59;

second = 58;

hour1 = 11;

minute1 = 59;

second1 = 58;

year = 15;

month = 6;

day = 19;

m=0;

RTC();

DisplayRTC();

// for(i=0; i<8; i++) LED8[i] = DIS_BLACK;

for(i=0; i<8; i++) LED8[i] = i;

k = 0;

KeyCode = 0;

cnt10ms = 0;

IO_KeyState = 0;

IO_KeyState1 = 0;

IO_KeyHoldCnt = 0;

cnt50ms = 0;

while(1)

{

if(B_1ms)

{

B_1ms = 0;

if(++msecond >= 1000)

{

msecond = 0;

RTC();

DisplayRTC();

}

if(++cnt50ms >= 50)

{

cnt50ms = 0;

IO_KeyScan();

}

if(KeyCode > 0)

{

if(KeyCode == 17) //hour +1

{

if(m==0)

{

if(++hour >= 24) hour = 0;

}

else if(m==1)

{

if(++year>=100)year=0;

}

else if(m==2)

{

if(++hour1 >= 24) hour1 = 0;

}

DisplayRTC();

}

if(KeyCode == 18) //hour -1

{

if(m==0)

{

if(--hour >= 24) hour = 23;

}

else if(m==1)

{

if(--year>=100)year=99;

}

else if(m==2)

{

if(--hour1 >= 24) hour1 = 23;

}

DisplayRTC();

}

if(KeyCode == 19) //minute +1

{

if(m==0)

{

second = 0;

if(++minute >= 60) minute = 0;

}

else if(m==1)

{

month++;

if(month>=30)month=0;

}

else if(m==2)

{

if(++minute1 >= 60) minute1 = 0;

}

DisplayRTC();

}

if(KeyCode == 20) //minute -1

{

if(m==0)

{

second = 0;

if(--minute >= 60) minute = 59;

}

else if(m==1)

{

month--;

if(month>30)month=29;

}

else if(m==2)

{

if(--minute1 >= 60) minute1 = 59;

}

DisplayRTC();

}

if(KeyCode == 21) //second +1

{

if(m==0)

{

if(++second >= 60) hour = 0;

}

else if(m==1)

{

if(++day>=30)day=0;

}

else if(m==2)

{

if(++second1 >= 60) second1 = 0;

}

DisplayRTC();

}

if(KeyCode == 22) //second -1

{

if(m==0)

{

if(--second >= 60) second = 59;

}

else if(m==1)

{

if(--day>=30)day=29;

}

else if(m==2)

{

if(--second1 >= 60) hour1 = 59;

}

DisplayRTC();

}

if(KeyCode ==32)

{

m++;

if(m>2)m=0;

}

KeyCode = 0;

}

}

}

}

/**********************************************/

u8 code T_KeyTable[16] = {0,1,2,0,3,0,0,0,4,0,0,0,0,0,0,0};

void IO_KeyDelay(void)

{

u8 i;

i = 60;

while(--i) ;

}

void IO_KeyScan(void) //50ms call

{

u8 j;

j = IO_KeyState1;

P0 = 0xf0;

IO_KeyDelay();

IO_KeyState1 = P0 & 0xf0;

P0 = 0x0f;

IO_KeyDelay();

IO_KeyState1 |= (P0 & 0x0f);

IO_KeyState1 ^= 0xff;

if(j == IO_KeyState1)

{

j = IO_KeyState;

IO_KeyState = IO_KeyState1;

if(IO_KeyState != 0)

{

F0 = 0;

if(j == 0) F0 = 1;

else if(j == IO_KeyState)

{

if(++IO_KeyHoldCnt >= 20)

{

IO_KeyHoldCnt = 18;

F0 = 1;

}

}

if(F0)

{

j = T_KeyTable[IO_KeyState >> 4];

if((j != 0) && (T_KeyTable[IO_KeyState& 0x0f] != 0))

KeyCode = (j - 1) * 4 + T_KeyTable[IO_KeyState & 0x0f] + 16;

}

}

else IO_KeyHoldCnt = 0;

}

P0 = 0xff;

}

void Send_595(u8 dat)

{

u8 i;

for(i=0; i<8; i++)

{

dat <<= 1;

P_HC595_SER = CY;

P_HC595_SRCLK = 1;

P_HC595_SRCLK = 0;

}

}

void DisplayScan(void)

{

Send_595(~T_COM[display_index]);

Send_595(t_display[LED8[display_index]]);

P_HC595_RCLK = 1;

P_HC595_RCLK = 0;

if(++display_index >= 8) display_index = 0;

}

void timer0 (void) interrupt TIMER0_VECTOR

{

DisplayScan();

B_1ms = 1;

}

4.课程设计心得体会

通过本次实验,能初步理论联系实际、应用C语言与电路设计、能简单实现程序、并且能通自己的调试进行修改。

课程设计是培养学生综合运用所学知识、发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,计算机已经成为当今社会生活工作中空前活跃的领域,在生活中可以说得是无处不在。回顾起此次单片机原理课程设计,至今我仍感慨颇多。的确,从选题到定稿、从理论到实践,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说如何对程序的初始进行编程,如何利用流程方块图……通过这次课程设计之后,一定把以前所学过的知识重新温故。这次课程设计终于顺利完成了,在设计中遇到了很多思路、编程问题,最后在老师的辛勤指导和同学的帮助下,终于游刃而解。

5.参考资料

丁向荣.单片机微机原理与接口技术[M].电子工业出版社,2012,159-178.

单片机制作

自己动手做单片机实验板 孔子说:“工欲善其事,必先利其器”,学习单片机所用的工具、元器件和数模电路是有一些区别的,我们在学习之前最好先备齐它们,至少让外人看出我们是搞过单片机的。有几样东东很重要,在上场之前不得不提及。 刀枪剑戟 一台电脑:这在日后写程序或是下载程序都是必需之物。现在的新款电脑越来越不适合单片机学习了或者说单片机的设备也应该更新换代了,一般常用的 9针串口和 25针并口多数被方方正正的 USB接口所取代。更新推出的操作系统对开发软件支持并不很好,建议大家使用 WIN XP或 WIN 2000系统。不用考虑 CPU速度和存储空间,同时电脑要有 9针的串口和 25针的并口(打印机接口),如果没有可以用 USB转换器扩展,不过其效果不如原配夫妻。 ISP下载线:从电脑向手机下载图片或音乐一般都有一条连接线,再配上手机专用的软件就可以让手机丰富多彩了。单片机也可以用这样的方法,虽然这不是唯一的方法,但这较适合一般的单片机学习,好而不贵。ISP下载线就是一个设计有简单电路的单片机程序下载工具,它就像塑造生命的天使,配上小巧的 ISP下载软件就可以施与单片机灵魂。虽然我们不是上帝,但在后文我们先要亲手塑造它,先做好心理准备。 实验板:这是一年半载也玩不腻的家伙,因为这是在学习中不断扩展的。它是将一块单片机焊在一片电路板中间,板上还焊有电源和单片机的最小系统电路,见图 1。如果继续往下说许多读者朋友会骂我太粗心了,所以我不得不解释一下“最小系统”是啥东东。随便抓一个数模电路的芯片,它要是想正常工作必须有一个先天条件,就是符合要求的电源。单片机也是一样,不过它太讲究了,要的东西更多。除了一个稳定的电源供电之外,它还需要一个复位电路,就是给单片机一个信号让它归回到开始工作的状态。同时晶振部分电路也是必不可少的,这相当于给单片机带了一块手表,让它有时间观念,知道自己什么时候该干什么事情。总之最小系统就是保证单片机正常工作的最基本电路部分。OK,再说回到单片机实验板。我是买元器件自己制作实验板的,我感觉没有必要多花钱去买一个成品,虽然这样说卖实验板的人可能会扁我。自己动手可以学到单片机硬件电路的知识和掌握制作的细节,这是不可多得的实践机会。你决定实验板 DIY了吗?我们一起做吧!

8051单片机的内部结构

8051是MCS-51系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。 8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明: 中央处理器(CPU)是整个单片机的核心 部件,是8位数据宽度的处理器,能处理 8位二进制数据或代码,CPU负责控制、 指挥和调度整个单元系统协调的工作,完 成运算和控制输入输出功能等操作。 ·数据存储器(RAM): 8051内部有128个8位用户数据存储 单元和128个专用寄存器单元,它们是统 一编址的,专用寄存器只能用于存放控制 指令数据,用户只能访问,而不能用于存 放用户数据,所以,用户能使用的的RAM 只有128个,可存放读写的数据,运算的 中间结果或用户定义的字型表。 ·程序存储器(ROM): 8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。 ·定时/计数器(ROM): 8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。 ·并行输入输出(I/O)口: 8051共有4组8位I/O口(P0、P1、P2或P3),用于对外部数据的传输。 ·全双工串行口: 8051内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以 用作异步通信收发器,也可以当同步移位器使用。 ·中断系统: 8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可 满足不同的控制要求,并具有2级的优先级别选择。 ·时钟电路: 8051内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但8051 单片机需外置振荡电容。

单片机十八般兵制作

单片机入门制作专辑--2.十八般兵器 [ 来源:本站原创 | 作者: | 时间:2008年02月11日 | 浏览: 1417 十八般兵器 快使用单片机,哼哼哈兮! 孔子说:“工欲善其事,必先利其器”,学习单片机所用的工具、元器件和数模电路是有一些区别的,我们在学习之前最好先备齐它们,至少让外人看出我们是搞过单片机的。有几样东东很重要,在上场之前不得不提及。 刀枪剑戟 一台电脑:这在日后写程序或是下载程序都是必需之物。现在的新款电脑越来越不适合单片机学习了或者说单片机的设备也应该更新 换代了,一般常用的 9针串口和 25针并口多数被方方正正的 USB接口所取代。更新推出的操作系统对开发软件支持并不很好,建议大家使用 WIN XP或 WIN 2000系统。不用考虑CPU速度和存储空间,同时电脑要有 9针的串口和 25针的并口(打印机接口),如果没有可以用 USB转换器扩展,不过其效果不如原配夫妻。 ISP下载线:从电脑向手机下载图片或音乐一般都有一条连接线,再配上手机专用的软件就可以让手机丰富多彩了。单片机也可以用这样的方法,虽然这不是唯一的方法,但这较适合一般的单片机学习,好而不贵。ISP下载线就是一个设计有简单电路的单片机程序下

载工具,它就像塑造生命的天使,配上小巧的 ISP下载软件就可以施与单片机灵魂。虽然我们不是上帝,但在后文我们先要亲手塑造它,先做好心理准备。 实验板:这是一年半载也玩不腻的家伙,因为这是在学习中不断扩展的。它是将一块单片机焊在一片电路板中间,板上还焊有电源和单片机的最小系统电路,见图 1。如果继续往下说许多读者朋友会骂我太粗心了,所以我不得不解释一下“最小系统”是啥东东。随便抓一个数模电路的芯片,它要是想正常工作必须有一个先天条件,就是符合要求的电源。单片机也是一样,不过它太讲究了,要的东西更多。除了一个稳定的电源供电之外,它还需要一个复位电路,就是给单片机一个信号让它归回到开始工作的状态。同时晶振部分电路也是必不可少的,这相当于给单片机带了一块手表,让它有时间观念,知道自己什么时候该干什么事情。总之最小系统就是保证单片机正常工作的最基本电路部分。OK,再说回到单片机实验板。我是买元器件自己制作实验板的,我感觉没有必要多花钱去买一个成品,虽然这样说卖实验板的人可能会扁我。自己动手可以学到单片机硬件电路的知识和掌握制作的细节,这是不可多得的实践机会。你决定实验板 DIY了吗?我们一起做吧! 图 1 忘了是哪一部抗日题材的电影里有一句经典台词:“别看你今天闹的欢,小心将来拉清单”。当时我还真不知道这话的意思,但我写到这里的时候我终于明白了,闹了这么长时间单片机,今天终于到我拉清单了。附表所示这个清单列出了学习单片机所需要的兵器,这是在成家立业之前必要的条件,里面我列出了大概的市场价格以防被黑。各元器件的外形如图 2所示。其实满打满算学习单片机也要不了几个钱,一般的元器件也就几块钱。几块钱能买什么?买不了房子买不了田,买几个元器件能用好几年。必要的时候可以和卖元器件的老板砍砍价,你砍得多省得多,回去能买辆自行车。 附表实验板 DIY元器件采购清单

自制单片机烧写器

像我们这样搞电子的人,要的就是动手的乐趣。下面我们来介绍近期在网络上非常流行的USBasp下载线,因为现在的笔记本包括台式机都渐渐地舍弃了并口、串口;所以之前的并口或串口下载线已经不能再使用了,应该说是做个USBasp下载线是势在必行的,下面我们来介绍其制作的全过程。 图(1) 图1为原作者设计的原理图,为了便于制作我修改过某部分电路如图2,其功能一样。

图(2) 在制作之前首先要搞清楚几点: 第一、这个USB下载线本身就是一块AVR单片机,在制作过程中也必需对其进行程序下载才能运行。 第二、先得大概了解一下这个AVR单机机ATmega8的基本资料。这样才能对电路有个了解,从而便于调试。第三COM1是PC机与USB相接的端口,我们在焊接时一定要区分GND、VCC、D+、D-,下面图(3)是对应本次制作的USB端口的引脚功能。在焊接的之前务必搞清楚,否则会造成PC机端口的USB或下载给的ATmega8烧毁。

图(3)USB端口引脚功能 第四﹑最后我们来了解一下电路的结构。对应图2,其中JP1是选择下载时的速度是快速或慢速,当JP1接地时选择低速,否则为高速。对于选择快速还是慢是相对于被下载的单片机晶振时钟而言的。一般来讲,目标单片机与USBasp的ATmega8的时钟不能相差太远。而JP2是电源的选择,当短接时被下载的单片机选择USBasp供电,则否选择独立供电。切记:两者只能任选其一。LED2为ATmega8程序运行的指示灯,当其点亮时就证明USBasp运行正常。LED1为下载程序时的工作指示灯,当接收到上位机信号

时,此灯就会闪动。 图(4)制作的全部元器件 图(5_a)与图2对应的PCB板顶层

51单片机最小系统制作 全过程

51单片机最小系统制作 第一章概述 1.1 缘起 1. 给51初学者提供一个简单的DIY的教材。 第二章跑马灯和串口 2.1 第一步:准备 准备一下器件: 1、烙铁(质量好点) 2、焊锡(细) 3、烙铁架(带一个专用海绵) 4、松香块 5、万用表(要有带响的,听听红黑表笔短接时的声音出来快不快) 6、PCB面万用板1块 7、40pin 插座1个 8、11.0592M晶振1个 9、30P瓷片电容2个 10、11个LED 11、电阻排1K 1个到VCC,做跑马灯LED的限流电阻 12、max232或者兼容的芯片 13、16pin的插座上去 14、STC89C51 15、其它杂物 以上的投资加起来,不会超出100元。

价格数量和封装如下: STC的单片机可以串口下载。 解释一下: LED:8个挂在P1口,排电阻是上拉限流的;2个作为串口收发的指示灯;1个LED作为电源指示灯; 独石电容6个:5个是使用在max232上的;一个是使用在单片机上,作为电源去耦的; 10K电阻1个,接在EA上,上拉到5V; 电解电容和电阻构成上电复位电路;(STC单片机不需要)

自己买2个DB9的母头,焊接一根串口电缆; 准备一个3PIN的插座,焊接在PCB的面包板上; 还有电源,Dc5V的电源很多,电源电压差一点问题不大;很多单片机现在电源范围都宽; STC单片机应该可以工作在4V以上,具体查资料。 准备好以上物品,可以准备焊接好了。 来一张全家福: 2.2 第二步:焊接单片机最小系统

2.3 第三步:焊接串口指示灯 2.4 第四步:在P1口上焊接跑马灯

2.5 第五步:焊接Dc5V电源指示灯 2.6 第六步:焊接max232的5个0.1u电容

51单片机C语言入门教程详细解说

单片机c语言入门 相信很多爱好电子的朋友,对单片机这个词应该都不会陌生了吧。不过有些朋友可能只听说他叫单片机,他的全称是什么也许并不太清楚, 更不用说他的英文全称和简称了。单片机是一块在集成电路芯片上集成了一台有一定规模的微型计算机。简称为:单片微型计算机或单片机 (Single Chip Computer)。单片机的应用到处可见,应用领域广泛,主要应用在智能仪表、实时控制、通信、家电等方面。不过这一切都没 什么关系,因为我(当然也包括任何人)都是从不知道转变成知道的,再转变成精通的。现在我只想把我学习单片机的经历,详细地讲叙给大 家听听,可能有些大虾会笑话我,想:那么简单的东西还在这里卖弄。但是你错了,我只是把我个人学习的经历讲述一遍而已,仅仅对那些想 学习单片机,但又找不到好方法或者途径的朋友,提供一个帮助,使他们在学习过程中,尽量少走些弯路而已! 首先,你必须有学习单片机的热情,不是说今天去图书馆看了一个下午关于单片机的书,而明天玩上半天,后天就不知道那个本书在讲什 么东西了。还是先说说我吧,我从大二的第一个学期期末的时候才开始接触单片机,但在这之前,正如上面所说的:我知道有种芯片叫单片机, 但是具体长成什么样子,却一点也不知道!看到这里很多朋友一定会忍不住发笑。嘿嘿,你可千万别笑,有些大四毕业的人也同样不知道单片 机长成什么样子呢!而我对单片机的痴迷更是常人所不能想象的地步,大二的期末考试,我全放弃了复习,每当室友拿着书在埋头复习的时候, 我却捧着自己从图书馆借的单片机书在那看,虽然有很多不懂,但是我还是坚持了下来,当时我就想过,为了单片机值不值得我这样去付出, 或许这也是在一些三流学校的好处吧,考试挂科后,明年开学交上几十元一门的补考费,应该大部分都能过了。于是,我横下一条心,坚持看 我的单片机书和资料。 当你明白了单片机是这么一回事的时候,显而易见的问题出来了:我要选择那种语言为单片机编写程序呢?这个问题,困扰了我好久。具 体选择C51还是A51呢?汇编在我们大二之前并没有开过课,虽然看着人家的讲解,很容易明白单片机的每一时刻的具体工作情况,但是一合上 书或者资料,自己却什么也不知道了,根本不用说自己写程序了。于是,我最终还是决定学C51,毕竟C51和我们课上讲的C语言,有些类似, 编程的思想可以说是相通的。而且C51还有更大的优点就是编写大程序时的优越性更不言而喻,当然在那时,我并没有想的那么深远,C51的特 点,还是在后来的实践过程中,渐渐体会到的!朋友如果你选择了C51,那么请继续往下看,如果你选择了A51,那么你可以不要看了!因为下面讲 的全是C方面的,完全在浪费你的时间! 呵呵^_^ 第二,既然你想学好单片机,你必须得舍得花钱,如果不买些芯片回来自己动手焊焊拆拆的(但是在后期会介绍给大家一个很好用的硬件 仿真软件,并不需要你用实验板和仿真器了,直接在你的PC上完成,但是软件毕竟是软件,从某个特定的意义上来说是并不能代替硬件的),即使

单片机内部主要部件

1.2 单片机内部主要部件 单片机内部电路比较复杂,MCS-51系列的8051型号单片机的内部电路根据功能可以分为CPU、RAM、ROM/EPROM、并行口、串行口、定时/计数器、中断系统及特殊功能寄存器(SFR)等8个主要部件,如图1-2-1所示。这些部件通过片内的单一总线相连,采用CPU加外围芯片的结构模式,各个功能单元都采用特殊功能寄存器集中控制的方式。其他公司的51系列单片机与8051结构类似,只是根据用户需要增加了特殊的部件,如A/D转换器等。在设计程序过程中,寄存器的使用非常频繁。本节内容在了解单片机内部的组成机构基础上,重点介绍单片机内部常用的寄存器的作用。 图1-2-1 MCS-51架构 1.2.1中央处理器(CPU) 中央处理器是单片机的核心,主要功能是产生各种控制信号,根据程序中每一条指令的具体功能,控制寄存器和输入/输出端口的数据传送,进行数据的算术运算、逻辑运算以及位操作等处理。MCS-51系列单片机的CPU字长是8位,能处理8位二进制数或代码,也可处理一位二进制数据。单片机的CPU从功能上一般可以分为运算器和控制器两部分。 一、控制器 控制器由程序计数器PC、指令寄存器、指令译码器、定时控制与条件转移逻辑电路等组成。其功能是对来自存储器中的指令进行译码,通过定时电路,在规定的时刻发出各种操作所需的全部内部和外部的控制信号,使各部分协调工作,完成指令所规定的功能。各部分功能部件简述如下。 1.程序计数器PC(Program Counter) 程序计数器是一个16位的专用寄存器,用来存放下一条指令的地址,具有自动加1的功能。当CPU要取指令时,PC的内容送地址总线上,从存储器中去取出一个指令码后,PC 内容自动加1,指向下一个指令码,以保证程序按顺序执行。 PC是用来指示程序的执行位置,在顺序执行程序时,单片机每执行一条指令,PC就自动加1,以指示出下一条要取的指令的存储单元的16位地址。也就是说,CPU总是把PC 的内容作为地址,根据该地址从存储器中取出指令码或包含在指令中的操作数。因此,每当取完一个字节后,PC的内容自动加1,为取下一个字节做好准备。由于51系列单片机的寻址范围为64K,所以,PC中数据的编码范围为0000H~FFFFH,共64K。单片机上电或复位时,PC自动清0,即装入地址0000H,这就保证了单片机上电或复位后,程序从0000H 地址开始执行。

单片机最小系统制作方案(适合初学者)

教学】单片机最小系统制作方案(适合初学者) 在写本单片机教程前,先自我介绍一下,我今年刚28岁,从事单片机教学二年。教学经验不足,写的不好,还请谅解,但是,我一定会尽力的。同时也希望大家能把我当朋友,共同进退。 本人喜欢上网,不喜欢运动,所以比较胖。我很喜欢在房间里做自己想做的事,如做网站,并建有自己的网站:〖教师吧〗:https://www.doczj.com/doc/2b9165698.html,保证长期有效。QQ是569 43772,E-MAIL:99xsw@https://www.doczj.com/doc/2b9165698.html, 单片机最小系统制作 一、确定任务 开发单片机最小系统 二、任务分析: 该系统具有的功能: (1)具有2位LED数码管显示功能。 (2)具有八路发光二极管显示各种流水灯。 (3)可以完成各种奏乐,报警等发声音类实验。 (4)具有复位功能。 三、功能分析 (1)两位LED数码管显示功能,我们可以利用单片机的P0口接两个数码管来现这个功能;(2)八路发光二极管显示可以利用P1口接八个发光二极管实现这个功能; (3)各种奏乐、报警等发声功能可以采用P2.0这个引脚接一蜂鸣器来实现。 (4)利用单片机的第9脚可以设计成复位系统,我们采用按键复位;利用单片机的18、19脚可以设计成时钟电路,我们利用单片机的内部振荡方式设计的。 四、设计框图

五、硬件电路设计 根据本系统的功能,和单片机的工作条件,我们设计出下面的电路图。

六、元件清单的确定: 数码管:共阴极2只(分立) 电解电容:10UF的一只 30PF的电容2只 220欧的电阻9只 4.7K的电阻一只 1.2K的电阻一只 4.7K的排阻一只, 12MHZ的晶振一只 有源5V蜂名器一只 AT89S51单片机一片 常开按钮开关1只 紧锁座一只(方便芯取下来的,绿色的) 发光二极管(5MM红色)8只 万能板电路版15*17CM S8550三极管一只 4.5V电池盒一只,导线若干。 七、硬件电路的焊接 按照原理图把上面的元件焊接好,详细步骤省略。 八、相关程序编写 针对上面的电路原理图,设计出本系统的详细功能: (1)、第一个发光二极管点亮,同时数码管显示“1”。 (2)、第二个发光二极管点亮,同时数码管显示“2”。 (3)、依次类推到第八个发光二极管点亮,同时数码管显示“8”。以上出现的是流水灯的效果

单片机电子琴制作16按键

《单片机原理》课程设计 说明书 专业名称:电气工程及其自动化 班级:11-2 学号: 姓名: 指导教师: 日期:2013.6.21

《单片机原理课程设计》评阅书

摘要 本文设计了一种基于STC12C5A32S2单片机的电子琴电路。该方案利用单片机定时器产生固定频率的方波信号以驱动蜂鸣器发出一定的旋律,通过矩阵键盘中的相应的按键来输入使蜂鸣器发出相对音阶的单音。同时设计还有自动存储所输入的单音,之后再一起自动演奏出来的功能。 本设计通过控制单片机定时器的定时时间产生不同频率的音频脉冲,经三极管放大信号后驱动蜂鸣器发出不同音节的声音。要实现7个音符的各自的高、中、低音,需要建立三个表,分别存储高音、中音和低音的频率值;默认为中音输出,当二个按键开关中某一个按下,通过软件选择相应的音频。按下弹奏键就可弹奏出不同的声音。 另外用软件延时来控制发音时间的长短,来控制节拍。通过把乐谱中的音符和相应的节拍变换为定时常数和延时常数,作为数据表格存放在存储器中。由程序查表得到定时常数和延时常数,分别用来控制定时器产生的脉冲频率和发出该音频脉冲的持续时间,这样就可以实现乐曲的演奏。 本设计为实物电路板设计开发,报告中详细的阐述了电子琴设计的方法和过程。并经过软硬件的调试,该音乐发生器不但能通过键盘弹奏出很好的音调,而且还可以通过键盘选择播放不同的音乐。 本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。 关键词:STC12C5A32S2 单片机定时器电子琴

目录 摘要 ....................................... 错误!未定义书签。第一章引言 . (2) 第二章电子琴电路硬件电路设计 .............. 错误!未定义书签。 2.1单片机的介绍与组成 (4) 2.2单片机主控电路 (4) 2.3 4×4矩阵键盘电路 (5) 2.4 蜂鸣器电路 (5) 第三章电子琴电路软件设计 .................. 错误!未定义书签。 3.1 程序设计流程图...................... 错误!未定义书签。 3.2音乐播放部分 (5) 3.3电子琴弹奏部分 (5) 3.4发音原理 (5) 第四章程序 ................................ 错误!未定义书签。心得体会 ................................... 错误!未定义书签。参考文献 (11) 附件错误!未定义书签。

单片机自己制作

自己动手做单片机实验板 一台电脑:这在日后写程序或是下载程序都是必需之物。现在的新款电脑越来越不适合单片机学习了或者说单片机的设备也应该更新换代了,一般常用的 9针串口和 25针并口多数被方方正正的 USB接口所取代。更新推出的操作系统对开发软件支持并不很好,建议大家使用 WIN XP或 WIN 2000系统。不用考虑 CPU速度和存储空间,同时电脑要有 9针的串口和 25针的并口(打印机接口),如果没有可以用 USB转换器扩展,不过其效果不如原配夫妻。 ISP下载线:从电脑向手机下载图片或音乐一般都有一条连接线,再配上手机专用的软件就可以让手机丰富多彩了。单片机也可以用这样的方法,虽然这不是唯一的方法,但这较适合一般的单片机学习,好而不贵。ISP下载线就是一个设计有简单电路的单片机程序下载工具,它就像塑造生命的天使,配上小巧的 ISP下载软件就可以施与单片机灵魂。虽然我们不是上帝,但在后文我们先要亲手塑造它,先做好心理准备。 实验板:这是一年半载也玩不腻的家伙,因为这是在学习中不断扩展的。它是将一块单片机焊在一片电路板中间,板上还焊有电源和单片机的最小系统电路,见图 1。如果继续往下说许多读者朋友会骂我太粗心了,所以我不得不解释一下“最小系统”是啥东东。随便抓一个数模电路的芯片,它要是想正常工作必须有一个先天条件,就是符合要求的电源。单片机也是一样,不过它太讲究了,要的东西更多。除了一个稳定的电源供电之外,它还需要一个复位电路,就是给单片机一个信号让它归回到开始工作的状态。同时晶振部分电路也是必不可少的,这相当于给单片机带了一块手表,让它有时间观念,知道自己什么时候该干什么事情。总之最小系统就是保证单片机正常工作的最基本电路部分。OK,再说回到单片机实验板。我是买元器件自己制作实验板的,我感觉没有必要多花钱去买一个成品,虽然这样说卖实验板的人可能会扁我。自己动手可以学到单片机硬件电路的知识和掌握制作的细节,这是不可多得的实践机会。你决定实验板 DIY了吗?我们一起做吧!

单片机的内部结构

单片机的主要组成 ①一个8位的微处理器CPU。 ②片内数据存储器RAM(128B/256B),用以存放可以读/写的数据,如运算的中间结果、最终结果以及欲显示的数据等。 ③片内程序存储器ROM/EPROM(4KB/8KB),用以存放程序、一些原始数据和表格。但也有一些单片机内部不带ROM/EPBOM,如8031、8032、80C31等。 ④四个8位并行I/O(输入/输出)接口P0—P3,每个口可以用作输入,也可以用作输出。 ⑤两个或三个定时/计数器,每个定时/计数器都可以设置成计数方式,用以对外部事件进行计数,也可以设置成定时方式,并可以根据计数或定时的结果实现计算机控制。 ⑥五个中断源的中断控制系统。 ⑦一个全双工UART(通用异步接收发送器)的串行I/O口,可实现单片机与单片机或其它微机之间串行通信。 ⑧片内振荡器和时钟产生电路,但石英晶体和微调电容需要外接,最高允许振荡频率为12MHz。 /* BYTE Registers */ 1sfr P0 = 0x80;

2sfr P1 = 0x90; 3sfr P2 = 0xA0; 4sfr P3 = 0xB0; 5sfr PSW = 0xD0;程序状态字 6sfr ACC = 0xE0;累加器 7sfr B = 0xF0;B寄存器 8sfr SP = 0x81; 堆栈指针 9sfr DPL = 0x82;DPTR数据指针 10sfr DPH = 0x83; 11sfr PCON = 0x87;电源控制寄存器 12sfr TCON = 0x88;定时/计数控制寄存器 13sfr TMOD = 0x89; 定时/计数工作方式状态寄存器 14sfr TL0 = 0x8A; 15sfr TL1 = 0x8B; 16sfr TH0 = 0x8C; 17sfr TH1 = 0x8D; 18sfr IE = 0xA8;中断允许控制寄存器 18sfr IP = 0xB8;中断优先级控制寄存器 20sfr SCON = 0x98;串行口控制寄存器 21sfr SBUF = 0x99;串行口数据缓冲器

51单片机及C语言入门教程

51单片机 及C语言入门教程 注:排成16开版式,是为了方便自已打印阅读。请不要用于非法用途。 2007.12.20

51单片机及C语言入门教程 第一课 建立您的第一个C项目 使用C语言肯定要使用到C编译器,以便把写好的C程序编译为机器码,这样单片机才能执行编写好的程序。KEIL uVISION2是众多单片机应用开发软件中优秀的软件之一,它支持众多不同公司的MCS51架构的芯片,它集编辑,编译,仿真等于一体,同时还支持,PLM,汇编和C语言的程序设计,它的界面和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。因此很多开发51应用的工程师或普通的单片机爱好者,都对它十分喜欢。 以上简单介绍了KEIL51软件,要使用KEIL51软件,必需先要安装它。KEIL51是一个商业的软件,对于我们这些普通爱好者可以到KEIL中国代理周立功公司的网站上下载一份能编译2K的DEMO版软件,基本可以满足一般的个人学习和小型应用的开发。(安装的方法和普通软件相当这里就不做介绍了) 安装好后,你是不是迫不及待的想建立自己的第一个C程序项目呢?下面就让我们一起来建立一个小程序项目吧。或许你手中还没有一块实验板,甚至没有一块单片机,不过没有关系我们可以通过KEIL软件仿真看到程序运行的结果。 首先当然是运行KEIL51软件。怎么打开?噢,天!那你要从头学电脑了。呵呵,开个玩笑,这个问题我想读者们也不会提的了:P。运行几秒后,出现如图1-1的屏幕。 图1-1启动时的屏幕

接着按下面的步骤建立您的第一个项目: (1)点击Project菜单,选择弹出的下拉式菜单中的New Project,如图1-2。接着弹出一个标准Windows文件对话窗口,如图1-3,这个东东想必大家是见了N次的了,用法技巧也不是这里要说的,以后的章节中出现类似情况将不再说明。在"文件名"中输入您的第一个C程序项目名称,这里我们用"test",这是笔者惯用的名称,大家不必照搬就是了,只要符合Windows文件规则的文件名都行。"保存"后的文件扩展名为uv2,这是KEIL uVision2项目文件扩展名,以后我们可以直接点击此文件以打开先前做的项目。 图1-2New Project菜单 图1-3文件窗口 (2)选择所要的单片机,这里我们选择常用的Ateml公司的AT89C51。此时屏幕如图1-4

单片机入门常用知识

概述: 所谓单片机就是能在一个芯片上完成计算机处理功能的设备,在芯片的内部有计算单元、数据处理单元、程序存储以及常用的外部接口管理单元。在软件程序的管理控制下可实现设计者所需要的功能。 最初的单片机受芯片设计密度的限制,功能和性能不强,随着技术的发展,目前的单片机可实现大多数的常用接口功能,软件的存储空间也越来越大,处理能力大幅增加。 单片机常用功能: 普通端口功能:单片机都带有多个逻辑端口,可作为逻辑状态的输入输出使用,可用于控制或读取外部状态。 定时功能:单片机内部包含有定时器,通过对定时时钟进行计数来产生需要的延时,延时的长短可通过设置定时器的计数值来设置。 中断功能:单片机内部设定有多个中断入口,每当产生中断条件后,程序自动跳入到中断入口,通过中断入口的跳转指令转到中断处理程序,执行完后返回到产生中断跳转程序处的下一个指令地址。在单片机接口上,有专用的中断管脚,可设置为电平中断或边沿中断,当管脚出现条件时,设置对应的中断标志,触发相应中断。除了管脚中断,串口、定时、A/D等几乎都可产生中断。同时,中断的响应还需要设置对应的寄存器到要求的状态才可。 串口功能:串口相对于并口来说,数据是通过一个管脚送出或读入,数据长度一般为8位,按顺序移位送出。串口特点具有实用管脚少,应用方式灵活的特点,通过RS232电平转换可直接和计算机的串

口进行通讯。 A/D功能:可直接输入模拟信号,软件发出转换信号后,信号的幅值可通过转换变换为数值信号送对应的寄存器上。 D/A功能:可直接输出模拟信号,信号的幅值可通过D/A端口的设置数值来设定。 以上为常用功能,有些单片机还有SPI、USB、CAN等多种接口外部常用设备: 显示和输入:单片机的处理信息一般通过液晶屏或数码管来显示处理内容,液晶屏或数码管可直接连接到单片机管脚上,按照显示需求设置软件即可,输入多用按键输入,也可直接连接到单片机管脚上,软件通过监测管脚状态可获得按键信息。 串口应用:单片机串口信号一般为TTL电平,外部常用RS232或RS485,在应用中需要加对用的转换芯片或模块。 开发环境: 单片机储存的程序为二进制格式,把程序写入到单片机需要专用的设备,早期完成这个功能采用编程器来完成,编程器通过打印机口或串口以及USB口和计算机连接,单片机则通过可锁插座装入到编程器上,通过计算机上的软件选择好单片机型号,读入要下载的二进制软件,然后运行编程,则完成下载。目前,则是通过仿真器(下载线)来完成,一般是通过USB口连接计算机,计算机上下载功能和仿真功能集合到一起。通过编译软件把软件编译成二进制文件,然后直接下载即可。下载后的软件可通过仿真运行进行调试。

51单片机的制作

51单片机的制作 学院:物电学院班级:1305 学号:2013112030526 姓名:曹杉 一:原理图的设计和PCB板的排版连线 这个PCB板的原理图分为好几块,元器件多只要细心就没问题,元件的封装像数码管单片机都是自己画的,最难的是连线排版,太多太复杂最后还是按老师的排版来画的,板子画好检查没问题发出去做的时候很有成就感也很忐忑

二:PCB板的原始成品 拿到的原始的板子 三:PCB板的焊接 从最小的元器件开始焊,贴片的电阻还有二极管很小,第一部分焊的这个,不熟练焊了好久,还要注意正负极,电阻电容等都是插件很好焊 贴片电阻和贴片二极管电阻 每焊完一部分元器件就要用万用表检查是否短路或能否正常发光,万用表的使用也很重要

开关和电容单片机和数码管 焊排针的时候有好多问题,方法不对针自己都掉了,最后在同学的帮助下,焊失败的排针也弄好了,也学会了怎么处理堵住的焊盘 完整的PCB板正面反面 花了很多时间焊板子,第一次没经验,电烙铁也不是很会用,所以板子很丑,不过成功焊完还是成就感爆棚

四:PCB板的调试 焊完就要尝试运行了,利用电脑下载线还有软件把程序烧进单片机,按照自己编的程序看二极管或者数码管是否按程序运行 二极管全亮数码管显示 总结 1.连线的时候要注意线宽和安全距离,电源线要加粗,焊盘也要注意大小 2.元器件的封装一定要按照实物,排版连线之后要打印出来用实物比量 3.单片机等焊盘多的元件插进板子的时候要小心,不要弄断脚 4.利用电烙铁的高温,焊锡贴近焊盘一点就能焊上去,不要太多 5.电容二极管等有极性的一定要注意正负极 感想:从开始画图到完成一整块板子,前后花了几十个小时,感触挺多收获也很多,仿真软件上最初的设计要思考怎么设计才最合理最省钱同时也最好用,焊板子考验的是认真细心和耐心,不熟练焊了一会就能慢慢体会到精髓,一次没有成功也不灰心,跑实验室问同学把板子调通,第一次拿到自己做的可以用的实物,第一次用电烙铁,觉得比平时在教室上课学的东西更有用自己也更有兴趣,这只是个开始,希望以后随着我们书本知识的增加动手能力的加强能做出更实用的作品

单片机简单应用系统制作

个人:单片机简单应用系统制作 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

单片机基础知识

1.一个完整的微机系统由硬件和软件两大部分组成 2.微型计算机的性能指标: 字长、运算速度、存储容量、软件配置、外设扩展能力 字:一组二进制数,字长:该二进制数的位数,字长越大,计算机处理数据越快运算速度:表达方式:cpu主频,越高,运算速度越快 存储容量:内存储容量(cpu直接访问存储器)、外存储容量(硬盘容量) 2.计算机系统:硬件系统(冯.诺依曼结构)(运算器、存储器、控制器、输入输出设备)、软件系统(运行程序和相应文档) 3.CPU主要组成部分:运算器、控制器 ALU运算器核心、累加器A、标志寄存器FR(C进、借位,OF溢出标志)、(不影响标志位CY的指令:INC A) 寄存器组RS、控制器CU(pc程序计算器、ir指令寄存器、id指令译码器) 4.存储器:RAM、ROM,其中RAM 具有易失性,常用于存储临时性数据 存储器的地址范围是0000H~0FFFH,它的容量为4KB(16*16*16=4*1024) 5.总线bus:传递信息的公共通信公道 片总线、内总线、外总线 地址总线(AB)、控制总线(CB)、数据总线(DB) 6.单片机(芯片)包括五部分:运算器、存储器、控制器、输入部分、输出部分8051:8位单片机 8031:复位后,PC和SP为:0000H、07H 7.二进制B、八进制O、十进制D、十六进制H 8.原码、反码、补码、压缩BCD码

9.单片机引脚: P1.0VCC(40引脚)P1.1P0.0 P1.2P0.1 P1.3P0.2 P1.4P0.3 P1.5P0.4 P1.6P0.5 P1.7P0.6 RST P0.7 RXD EA/VPP TXD ALE/PROG ITR0PSDE ITR1P2.7 T0P2.6 T1P2.5 WR P2.4 RD P2.3 XTAL2P2.2 XTAL1P2.1 GND P2.0(21引脚)

基于51单片机光电对管智能小车从入门到精通全教程分解

电子科技协会--《电子实践制作教程》
目录
第九章、基于 51 单片机的红外循迹小车..................................................................................... 2 1、制作要求............................................................................................................................. 2 2、制作目的............................................................................................................................. 2 3、制作方案(硬件方面) ..................................................................................................... 2 3.1 系统概述.................................................................................................................... 2 3.2 单片机模块................................................................................................................ 3 3.3 指示灯原理图............................................................................................................ 4 3.4 红外对管原理图 ........................................................................................................ 4 3.5 电机驱动模块............................................................................................................ 5 4、制作方案(软件方面) ..................................................................................................... 7 4、 附录................................................................................................................................... 9 5.1 实物和效果展示 ........................................................................................................ 9 5.2 参考程序: ........................................................................................................... 9 5.3 基于 C51 控制红外循迹小车原理图 ................................................................. 17
1 / 18

单片机应用小制作

《单片机原理及应用》设计与应用 项目名称设计与制作 二、电路设计

C1C16 C2C3C4C5C6C7C8C9C10C11C12C13C14C15R16 R9R10R11R12R13R14R15R1R8 R2R3R4R5R6R7c16c9 c8c1r1r8r1r8c8c1c16c9r9r16r9r16r2r3r4r5r6r7c7c6c5c4c3c2c15c14c13c12c11c10c7c6c5c4c3c2c15c14c13c12c11c10r10r11r14r10r11r12r13r14r15r12r13r15r2r3r4r5r6r7X1 CRYSTAL C1 30pF C2 30pF R3 10k C3 22uF XTAL2 18 XTAL1 19ALE 30EA 31 PSEN 29RST 9 P0.0/AD0 39P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78 P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD 17 P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1 AT89C51 A 23 B 22 C 21 D 20E118E2 19 011223344556677889910101111131214131514161517 U3 74HC154 23456789 1 RP1 8x10k A02B018A13B117A24B216A35B315A46B414A57B513A68B612A79B7 11 CE 19AB/BA 1 U4 74HC245 A02B018A13B117A24B216A35B315A46B414A57B513A68B612A79B7 11 CE 19AB/BA 1 U2 74HC245

相关主题
文本预览
相关文档 最新文档