单片机课程设计Word下载.docx

上传人:b****5 文档编号:18582388 上传时间:2022-12-28 格式:DOCX 页数:23 大小:387.80KB
下载 相关 举报
单片机课程设计Word下载.docx_第1页
第1页 / 共23页
单片机课程设计Word下载.docx_第2页
第2页 / 共23页
单片机课程设计Word下载.docx_第3页
第3页 / 共23页
单片机课程设计Word下载.docx_第4页
第4页 / 共23页
单片机课程设计Word下载.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

单片机课程设计Word下载.docx

《单片机课程设计Word下载.docx》由会员分享,可在线阅读,更多相关《单片机课程设计Word下载.docx(23页珍藏版)》请在冰豆网上搜索。

单片机课程设计Word下载.docx

2、显示方案

(1)、双四位数码管

数码管是一种由发光二极管组成的电子元件。

能够显示由笔画组成的数字及简单字母。

但是数码管能够显示的能容少,不能满足题目要求。

(2)、LCD1602液晶显示器

1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。

也可以通过编程显示简单的汉字,能够显示16x2共32个字符,完全符合题目要求。

3、按键方案

(1)、矩阵键盘

矩阵键盘通过对按键的矩阵排列可以组成3x3、4x4等组合形式,能够节约IO的使用,在IO资源紧张的情况下能够很好的解决IO口不足的问题,但编程比较复杂。

(2)、独立按键

独立按键直接将按键接入到IO上,电路简单,程序实现相对容易。

但需要大量的按键的情况下,IO利用较多,容易造成IO资源紧张。

方案确定:

基于现有的电路,时钟方案选用内部时钟;

显示部分由于需要显示的内容较多,故选用LCD1602用来显示;

按键部分由于只需要4个按键,故选择连线和控制相对容易的独立按键。

设计原理..........................................

硬件部分

由设计方案的分析结果,本设计使用如下的硬件设计。

根据系统的硬件设计框图,利用AltiumDesigner10软件进行原理图及PCB图的设计。

设计的整体电路图如下:

整体电路图

该电路图包括单片机最小系统、CH340USB转串口、电源、LCD1602液晶显示、四位独立按键组成。

最小系统

STC12C5A60S2是低电压,高性能CMOS8位单片机,片内含60kbytes的可反复擦写的Flash只读程序存储器和1280bytes的随机存取数据存储器(RAM),器件采用高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大STC12C5A60S2单片机适合于许多较为复杂控制应用场合。

STC12C5A60S2单片机为40引脚双列直插芯片,有四个I/O口P0、P1、P2、P3,每一条I/O线都能独立地作输出或输入。

并且集成有PWM、A/D等模块,集成度更高。

STC12C5A60S2引脚图

STC12C5A60S2包含以下部分,其结构图如下图所示:

STC12C5A60S2单片机中包含中央处理器(CPU)、程序存储器(Flash)、数据存储器(SRAM)、定时/计数器、UART串口、串口2、I/O接口、高速A/D转换、SPI接口、PCA、看门狗及片内R/C振荡器和外部晶体振荡电路等模块。

STC12C5A60S2系列单片机几乎包含了数据采集和控制中所需的所有单元模块,可称得上一个片上系统。

本设计利用了其中的I/O接口、定时/计数器等部分。

其中P0口负责与LCD1602进行数据通信;

P2.0、P2.1、P2.2分别连接LCD1602的RS、RW、LCDEN接口,进行LCD1602的控制;

P3.0、P3.1、P3.2、P3.3连接按键。

CH340USB转串口

CH340是一个USB总线的转接芯片,实现USB转串口、USB转IrDA红外或者USB转打印口。

在串口方式下,CH340提供常用的MODEM联络信号,用于为计算机扩展异步串口,或者将普通的串口设备直接升级到USB总线。

CH340芯片正常工作时需要外部向XI引脚提供12MHz的时钟信号。

一般情况下,时钟信号由CH340内置的反相器通过晶体稳频振荡产生。

外围电路只需要在XI和XO引脚之间连接一个12MHz的晶体,并且分别为XI和XO引脚对地连接振荡电容。

在本设计中通过CH340使计算机与单片机之间进行通信,向单片机下载程序或者在线调试。

电源

此系统的电源设计采用了USB、3.5mm电源接口双供电的模式。

使用过程中使任意电源供电既可以使系统工作。

电源中还加入了F1快恢复保险丝、1N4007二极管防止电源反接,当电源反接时保险丝快速切断电源以保护整体系统不被破坏。

电源部分还有470uF的电解电容来滤波,以获得纯净的电源;

5.1V稳压二极管,使电源的接入范围扩大到5~12V。

液晶LCD1602接口

1602采用标准的16脚接口,其中:

第1脚:

VSS为电源地

第2脚:

VCC接5V电源正极

第3脚:

V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。

第4脚:

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

第5脚:

RW为读写信号线,高电平

(1)时进行读操作,低电平(0)时进行写操作。

第6脚:

E(或EN)端为使能(enable)端,高电平

(1)时读取信息,负跳变时执行指令。

第7~14脚:

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

第15~16脚:

空脚或背灯电源。

15脚背光正极,16脚背光负极。

四位独立按键

四位独立按键公共端接地,另一端分别接入P3.0、P3.1、P3.2、P3.3。

S1为设置键,按下后可以选定操作年、月、日、时、分中的某一项;

S2为加一键,对设置项加一;

S3为减一键,对设置项减一;

S4为开始键,按下计时开始。

软件部分

此次设计利用了单片机中的定时器

控制寄存器定时器/计数器T0和T1有2个控制寄存器-TMOD和TCON,它们分别用来设置各个定时器/计数器的工作方式,选择定时或计数功能,控制启动运行,以及作为运行状态的标志等。

其中,TCON寄存器中另有4位用于中断系统。

定时器/计数器方式寄存器TMOD

定时器方式控制寄存器TMOD在特殊功能寄存器中,字节地址为89H,无位地址。

TMOD的格式如下图所示。

由图可见,TMOD的高4位用于T1,低4使用于T0,4种符号的含义如下:

GATE:

门控制位。

GATE和软件控制位TR、外部引脚信号INT的状态,共同控制定时器/计数器的打开或关闭。

C/T:

定时器/计数器选择位。

C/T=1,为计数器方式;

C/T=0,为定时器方式。

M1M0:

工作方式选择位,定时器/计数器的4种工作方式由M1M0设定。

定时器/计数器方式控制寄存器TMOD不能进行位寻址,只能用字节传送指令设置定时器工作方式,低半字节定义为定时器0,高半字节定义为定时器1。

复位时,TMOD所有位均为0。

定时器/计数器控制寄存器TCON

TCON在特殊功能寄存器中,字节地址为88H,位地址(由低位到高位)为88H一8FH,由于有位地址,十分便于进行位操作。

TCON的作用是控制定时器的启、停,标志定时器溢出和中断情况。

TCON的格式如下图所示。

其中,TFl,TRl,TF0和TR0位用于定时器/计数器;

IEl,ITl,IE0和IT0位用于中断系统。

各位定义如下:

TF1:

定时器1溢出标志位。

当字时器1计满溢出时,由硬件使TF1置“1”,并且申请中断。

进入中断服务程序后,由硬件自动清“0”,在查询方式下用软件清“0”。

TR1:

定时器1运行控制位。

由软件清“0”关闭定时器1。

当GATE=1,且INT1为高电平时,TR1置“1”启动定时器1;

当GATE=0,TR1置“1”启动定时器1。

TF0:

定时器0溢出标志。

其功能及操作情况同TF1。

TR0:

定时器0运行控制位。

其功能及操作情况同TR1。

IE1:

外部中断1请求标志。

IT1:

外部中断1触发方式选择位。

IE0:

外部中断0请求标志。

IT0:

外部中断0触发方式选择位。

TCON中低4位与中断有关。

由于TCON是可以位寻址的,因而如果只清溢出或启动定时器工作,可以用位操作命令。

定时器/计数器的初始化:

由于定时器/计数器的功能是由软件编程确定的,所以一般在使用定时/计数器前都要对其进行初始化,使其按设定的功能工作。

初始货的步骤一般如下:

1、确定工作方式(即对TMOD赋值);

2、预置定时或计数的初值(可直接将初值写入TH0、TL0或TH1、TL1);

3、根据需要开放定时器/计数器的中断(直接对IE位赋值);

4、启动定时器/计数器(若已规定用软件启动,则可把TR0或TR1置“1”;

若已规定由外中断引脚电平启动,则需给外引脚步加启动电平。

当实现了启动要求后,定时器即按规定的工作方式和初值开始计数或定时)。

程序流程图

先对LCD1602液晶和TH0、TL0进行初始化,如果使用12M的晶振则50ms:

TH1=(65536-50000)/256;

TL1=(65536-50000)%256;

11.0592M晶振50ms:

TH1=(65536-(11.0592/12)*50000)/256;

TL1=(65536-(11.0592/12)*50000)%256。

然后对按键进行判断,根据按键判断的结果对显示的时间进行调整。

调整结束后开始计时。

计时采用24小时制,由于是简单的计时,所以月份是31天每月,没有闰年算法等。

第三章调试及结果分析.................................

调试及结析结果分析................................

根据需要的电路对单片机开发板进行焊接,焊接时应注意不要造成焊接不良影响最终功能的实现。

可以先利用其它废弃PCB进行练习,等焊接熟练了再对开发板焊接。

焊接完成后,先利用STC-ISP软件向单片机下载简单程序,检查焊接好坏。

单片机开发板焊接完成后,使用Keil软件编写需要的程序。

可根据题目要求及上面的硬件设计、软件设计进行程序的编写。

编写完成后,调试检查没有错误后导出HEX文件,烧写至单片机rom中,检查程序的硬件实现结果,直至程序符合要求。

设计总结..........................................

本次的单片机课程设计我们收获了许多平常课堂上所得不到的东西。

起初由于我们对于基础知识掌握的不牢固,特别是对于单片机的设计的理解的不够,反映出模拟电路掌握的不好, 

缺乏对于电子系统设计测试的概念。

但通过多天的实践和学习,我们渐渐克服了这些困难,顺利的完成了本次课程世纪。

通过本次课程设计我们学习到了将理论教学与实践相结合的重要性,使我们对于单片机的实际应用有了较深刻的认识;

使我们对单片机应用系统设计的各种方法有所了解;

通过分工合作,培养我们之间的合作精神;

让我们熟悉电子系统设计的全过程;

提高我们对设计课题的分析能力、编程能力及解决实际问题的综合能力。

#include<

reg52.h>

#defineuintunsignedint

#defineucharunsignedchar

#definelcd1602P0

sbitrs=P2^2;

sbitrw=P2^1;

sbite=P2^0;

sbitBF=lcd1602^7;

sbitMode=P3^0;

sbitjia=P3^1;

sbitjian=P3^2;

sbitstart=P3^3;

bitbz=0;

uintn=2013;

ucharj,s,f,h,y=06,r=30;

uchardis[5];

ucharcodemoth[]={0,32,30,32,31,32,31,32,32,31,32,31,32};

ucharcodetime[][8]={

0x08,0x0f,0x12,0x0f,0x0a,0x1f,0x02,0x02,

0x0f,0x09,0x0f,0x09,0x0f,0x09,0x0b,0x11,

0x0f,0x09,0x09,0x0f,0x09,0x09,0x0f,0x00,

0x1d,0x17,0x15,0x1f,0x15,0x15,0x1d,0x03,

0x0e,0x0a,0x11,0x0e,0x0a,0x0a,0x0a,0x16

};

voidyear();

voidmoth1();

voidday();

voidshi();

voidfen();

voidxsz();

voiddelay(uinti)

{

while(i--);

}

bitbusy1602()

bitbusy=0;

lcd1602=0xff;

rs=0;

rw=1;

e=1;

busy=BF;

e=0;

returnbusy;

voidxml(ucharml)

while(busy1602());

rw=0;

lcd1602=ml;

e=1;

voiddis_t(ucharsj)

rs=1;

lcd1602=sj;

voidinit1602()

xml(0x38);

xml(0x0c);

xml(0x06);

xml(0x01);

voiddis_w(uchari,ucharl,uchara,uchardat)

{

ucharz;

for(z=0;

z<

8;

z++)

{

xml(l+z);

dis_t(time[dis[i]][z]);

}

xml(a);

dis_t(dat);

voidcount()

s++;

if(s==60)

s=0;

f++;

}

if(f==60)

f=0;

h++;

if(h==24)

h=0;

r++;

if((n%4)==0)

if(r==moth[y])

{

r=1;

y++;

else

if(r==moth[y]-1)

r=1;

y++;

}

if(y==13)

y=1;

n++;

voidsjz()

xml(0x80);

dis_t(n/1000+'

0'

);

dis_t(n/100%10+'

dis_t(n/10%10+'

dis_t(n%10+'

xml(0x85);

dis_t(y/10+'

dis_t(y%10+'

xml(0x88);

dis_t(r/10+'

dis_t(r%10+'

xml(0xc0);

dis_t(h/10+'

dis_t(h%10+'

dis_t('

:

'

dis_t(f/10+'

dis_t(f%10+'

dis_t(s/10+'

dis_t(s%10+'

voidscountz()

bitbz;

if(Mode==0)

delay(100);

{

bz=0;

if(bz==0)

EA=ET0=TR0=0;

j=j+1;

if(j==6)

j=1;

while(Mode==0);

switch(j)

case1:

year();

xsz();

break;

case2:

moth1();

break;

case3:

day();

case4:

shi();

case5:

fen();

if(start==0)

bz=1;

EA=ET0=TR0=1;

if(bz==1)

xml(0x8f);

'

voidnian()

if(jia==0)

n=n+1;

while(jia==0);

if(jian==0)

n=n-1;

while(jian==0);

voidmoth1()

y=y+1;

if(y==13)

y=1;

y=y-1;

if(y<

=0)

y=12;

voidday()

r=r+1;

if((n%4)==0)

else

if(r==moth[y]-1)

while(jia==0);

r=r-1;

if(r<

if((n%4)==0)

r=moth[y]-1;

else

{

r=moth[y]-2;

}

}

while(jian==0);

voidshi()

h=h+1;

if(h==24)

h=0;

h=h-1;

if(h==0xff)

h=23;

voidfen()

f=f+1;

if(f==60)

f=f-1;

if(f==0xff)

f=59;

}

voidmain()

TMOD=0x01;

TL0=(65535-50000)%0x100;

TH0=(65535-50000)/0x100;

init1602();

dis[0]=0;

dis[1]=1;

dis[2]=2;

dis[3]=3;

dis[4]=4;

while

(1)

{

scountz();

dis_w(0,0x40,0x84,0x00);

dis_w(1,0x48,0x87,0x01);

dis_w(2,0x50,0x8a,0x02);

sjz();

voidtume1()interrupt1

uchari;

i++;

if(i==20)

i=0;

count();

voidxsz()

if(j==1)

dis_w(0,0x40,0x8f,0x00);

if(j=

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

当前位置:首页 > 农林牧渔

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

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