11电信赵仵龙51_课设报告1.docx_第1页
11电信赵仵龙51_课设报告1.docx_第2页
11电信赵仵龙51_课设报告1.docx_第3页
11电信赵仵龙51_课设报告1.docx_第4页
11电信赵仵龙51_课设报告1.docx_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目 录一、设计任务要求2 1.1、任务选择2 1.2、任务要求分析及实现2二、设计方案与原理2 2.1.硬件电路方案选择2 2.2、硬件电路设计原理 2 2.3软件部分的设计11三、运行结果及分析17 3.1.电子钟仿真结果17 3.2.ad转换器仿真结果18四、设计总结18五、参考文献18一、设计任务及要求 1.1、任务选择 按照老师要求,必须完成课程设计任务书的两项任务,任务书中总共有30项任务,可任选两项。经仔细阅读任务书,结合自己对stc89c51的掌握情况,我选择任务24和任务30。分别如下: (1)、任务 24:可调数字钟系统,要求支持小时、分、秒数字显示,并且支持小时、分手动调节与复位功能。 (2)、任务 30:设计单片机外接 a/d 控制器,并将 ad 转换的数据送数码管显示。 1.2、任务要求分析及实现: (1)、任务24分析:本任务要求制作简易电子钟,并且时、分、秒可手动调节,可用stc89c51内部定时器t0或t1实现准确定时,用6位数码管分别显示时、分、秒,也可用1602液晶显时间。 (2)、任务30分析:由于硬件电路限制,此a/d转换器只能用stc89c51开发板上的adc0804芯片结合数码管来完成8位a/d转换。二、设计方案与原理 2.1.硬件电路方案选择 (1)、可调数字钟方案选择与论证: 方案一:用内部定时器t1通过计算初值和循环实现定时1秒,用六位数码管分别显示时、分、秒。 方案二:用内部定时器t1通过计算初值和循环实现定时1秒,用1602液晶显示屏显示时间。 用六位数码管虽然可以分别显示时、分、秒,但是的stc89c51i/o口并不是直接和数码管的7段相连,来传输数据。由于stc89c51的i/o较少,为了节省i/o,通过74ls573做扩展同时对i/o输出数据进行锁存。所以数码管的片选和段选均要经过74ls573来进行数据锁存,而,电子钟要求显示时、分、秒用到的数码管较多,编写程序就比较麻烦。而,1602液晶显示屏只要求定义好写地址和写命令即可显示时间,方便快捷,美观。 综上所述:可调数字钟选用方案二进行设计。 (2)、a/d转换电路设计思路: 选用stc89c51开发板上的adc0804进行ad采样,并将采样结果量化后送到51的p1口,然后通过控制锁存器打开数码管的片选和段选将采样值显示出来。 2.2、硬件电路设计原理 1、stc89c51简介: stc系列单片机是美国stc公司最新推出的一种新型51内核的单片机。片内含有flash程序存储器、sram、uart、spi、ad、pwm等模块。该器件的基本功能与普通的51单片机完全兼容。主要功能、性能参数:(1).内置标准51内核,机器周期:增强型为6时钟,普通型为12时钟;(2).工作频率范围:040mhz,相当于普通8051的080mhz;(3).stc89c5xrc对应flash空间:4kb8kb15kb;(4).内部存储器(ram):512b;(5).定时器计数器:3个16位;(6).通用异步通信口(uart)1个;(7).中断源:8个;(8).有isp(在系统可编程)iap(在应用可编程),无需专用编程器仿真器;(9).通用io口:3236个;(10).工作电压:3.85.5v;(11).外形封装:40脚pdip、44脚plcc和pqfp等2. 89c51单片机的引脚功能说明(1)vcc:电源电压(2)gnd:地(3)p0口:p0口是一组8位漏极开路型双向i/o口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个ttl逻辑门电路,对端口p0写“1”时可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复位,在访问期间激活内部上拉电阻。 (4)p1口:p1是一个带内部上拉电阻的8位双向i/o口,p1的输出缓冲级可驱动(吸收或输出电流)4个tte逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(ill)。与at89c51不同之处是,p1.0和p1.1还可分别作为定时/计数器2的外部计数输入(p 1.0/t2)和输入(p 1.1/t2ex ), flash编程和程序校验期间,p1接收低8位地址。表2-2-1 p1.0和p1.1的第二功能引 脚 号 功能特性p1.0t2(定时/计数器2外部计数脉冲输入),时钟输出p1.1t2ex(定时/计数2捕获/重装载触发和方向控制) 表2-2-1(5)p2口:p2是一个带有内部上拉电阻的8位双向i/o口,p2的输出缓冲级可驱动(吸收或输出电流)4个ttl逻辑门电路。对端口p2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(ill)。在访问外部程序存储器或16位地址的外部数据存储器(例如执行movx dptr指令)时,p2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行movx ri指令)时,p2口输出p2锁存器的内容。(6)p3口:p3口是一组带有内部上拉电阻的8位双向i/o口。p3口输出缓冲级可驱动(吸收或输出电流)4个ttl逻辑门电路。对p3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的p3口将用上拉电阻输出电流(ill)。p3口除了作为一般的i/o口线外,更重要的用途是它的第二功能,如表4-2所示。 (7) rst:复位输入。当振荡器工作时,rst引脚出现两个机器周期以上高电平将使单片机复位。表2-2-2 p3口的第二功能:端口引脚第二功能p3.0rxd(串行输入口)p3.1txd(串行输出口)p3.2(外中断0)p3.3(外中断1)p3.4t0(定时/计数0)p3.5t1(定时/计数1)p3.6(外部数据存储器写选通)p3.7(外部数据存储器读选通) 表2-2-2(8)/vpp:外部访问允许。欲使cpu仅访问外部程序存储器(地址为0000h-ffffh ) 。端必须保持低电平(接地)。需注意的是:如果加密位lb1被编程,复位时内部会锁存端状态。如端为高电平(接vcc端),cpu则执行内部程序存储器中的指令。flash存储器编程时,该引脚加上+12v的编程允许电源vpp,当然这必须是该器件是使用12v编程电压vcc 。(9)xtal1:振荡器反相放大器的及内部时钟发生器的输入端。(10)xtal2:振荡器反相放大器的输出端。3、74ls573锁存器工作原理: (1)、74ls573 的八个锁存器都是透明的d 型锁存器,当使能(g)为高时,q 输出将随数据(d)输入而变。当使能为低时,输出将锁存在已建立的数据电平上。输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,新的数据也可以置入。这种电路可以驱动大电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口。特别适用于缓冲寄存器,i/o 通道,双向总线驱动器和工作寄存器。 真值表: 输出 enablelatch enable启用d输出olhhhlhllllxqohxxz 表2-2-3h=高电平 l=低电平 =不定 z=高阻态qo=建立稳态输入条件前q的电平引脚功能表: pin names管脚号 description 功能d0d7 data inputs数据输入le latch enable input (active high) 锁存使能输入(高电平有效) oe 3-state output enable input (active low) 3态输出使能输入(低电平有效)o0o7 3-state latch outputs 3态锁存输出 表2-2-4(2)51开发板的原理图: 表2-2-54、7段数码管工作原理及原理图: (1)、7段数码管一般由8个发光二极管组成,其中由7个细长的发光二极管组成数字显示,另外一个圆形的发光二极管显示小数点。当发光二极管导通时,相应的一个点或一个笔画发光。控制相应的二极管导通,就能显示出各种字符,尽管显示的字符形状有些失真,能显示的数符数量也有限,但其控制简单,使有也方便。发光二极管的阳极连在一起的称为共阳极数码管,阴极连在一起的称为共阴极数码管。 (2)、硬件电路原理图: 表2-2-65、1602液晶显示原理 (1)、液晶显示原理 液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、pda移动通信工具等众多领域。 (2)、液晶显示器的分类 液晶显示的分类方法有很多种,通常可按其显示方式分为段式、字符式、点阵式等。除了黑白显示外,液晶显示器还有多灰度有彩色显示等。如果根据驱动方式来分,可以分为静态驱动(static)、单纯矩阵驱动(simplematrix)和主动矩阵驱动(activematrix)三种。液晶显示器各种图形的显示原理:线段的显示点阵图形式液晶由mn个显示单元组成,假设lcd显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共168=128个点组成,屏上6416个显示单元与显示ram区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。例如屏的第一行的亮暗由ram区的000h00fh的16字节的内容决定,当(000h)=ffh时,则屏幕的左上角显示一条短亮线,长度为8个点;当(3ffh)=ffh时,则屏幕的右下角显示一条短亮线;当(000h)=ffh,(001h)=00h,(002h)=00h,(00eh)=00h,(00fh)=00h时,则在屏幕的顶部显示一条由8段亮线和8条暗线组成的虚线。这就是lcd显示的基本原理。字符的显示用lcd显示一个字符时比较复杂,因为一个字符由68或88点阵组成,既要找到和显示屏幕上某几个位置对应的显示ram区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在lcd上开始显示的行列号及每行的列数找出显示ram对应的地址,设立光标,在此送上该字符对应的代码即可。 (3)原理图如下: 表2-2-77、a/d转换模块: adc0804工作原理: (1)、(a/d转换概念:即模数转换(analog to digital),输入模拟量(比如电压信号),输出一个与模拟量相对应的数字量(常为二进制形式)。例如参考电压vref为5v,采用8位的模数转换器时,当输入电压为0v时,输出的数字量为0000 0000,当输入的电压为5v时,输出的数字量为1111 1111。当输入的电压从从0v到5v变化时,输出的数字量从0000 0000到1111 1111变化。这样每个输入电压值对应一个输出数字量,即实现了模数转换。 (3)、分辨率概念:分辨率是指使输出数字量变化1时的输入模拟量,也就是使输出数字量变化一个相邻数码所需输入模拟量的变化值。分辨率与a/d转换器的位数有确定的关系,可以表示成fs / 2 n 。fs表示满量程输入值,n为a/d转换器的位数。例如,对于5v的满量程,采用4位的adc时,分辨率为5v/16=0.3125v (也就是说当输入的电压值每增加0.3125v,输出的数字量增加;采用8位的adc时,分辨率为5v/25619.5mv(也就是说当输入的电压值每增加19.5mv,则输出的数字量增加1);当采用12位的adc时,分辨率则为5v/40961.22mv(也就是说当输入的电压值每增加1.22mv ,则输出的数字量增加1)。显然,位数越多,分辨率就越高。 (4)、adc0804引脚功能:cs:芯片片选信号,低电平有效。即cs=0时,该芯片才能正常工作,高电平时芯片不工作。在外接多个adc0804芯片时,该信号可以作为选择地址使用,通过不同的地址信号使能不同的adc0804芯片,从而可以实现多个adc通道的分时复用。wr:启动adc0804进行adc采样,该信号低电平有效,即wr信号由低电平变成高电平时,触发一次adc转换。rd:低电平有效,即rd=0时,dac0804把转换完成的数据加载到db口,可以通过数据端口db0db7读出本次的采样结果。vin(+)和vin(-):模拟电压输入端,单边输入时模拟电压输入接vin(+)端,vin(-)端接地。双边输入时vin(+)、vin(-)分别接模拟电压信号的正端和负端。当输入的模拟电压信号存在“零点漂移电压”时,可在vin(-)接一等值的零点补偿电压,变换时将自动从vin(+)中减去这一电压。vref/2:参考电压接入引脚,该引脚可外接电压也可悬空,若外接电压,则adc的参考电压为该外界电压的两倍,如不外接,则vref与vcc共用电源电压,此时adc的参考电压即为电源电压vcc的值。clkin和clkr:外接rc振荡电路产生模数转换器所需的时钟信号,时钟频率clk = 1/1.1rc,一般要求频率范围100khz1460khz。agnd和dgnd:分别接模拟地和数字地。 intr:转换结束输出信号,低电平有效,当一次a/d转换完成后,将引起intr=0,实际应用时,该引脚应与微处理器的外部中断输入引脚相连(如51单片机的int0,int1脚),当产生intr信号有效时,还需等待rd=0才能正确读出a/d转换结果,若adc0804单独使用,则可以将intr引脚悬空。db0db7:输出a/d转换后的8位二进制结果。 (5)、 adc0804工作过程: a.启动转换:由图2-2-8中的上部“figure 10a”可知,在cs信号为低电平的情况下,将wr引脚先由高电平变成低电平,经过至少tw(wr)i 延时后,再将wr引脚拉成高电平,即启动了一次ad转换。 b延时等待转换结束:依然由图6中的上部“figure 10a”可知,由拉低wr信号启动ad采样后,经过1到8个tclk+internal tc延时后,ad转换结束,因此,启动转换后必须加入一个延时以等待ad采样结束。 c.读取转换结果:由图2-2-8的下部“figure 10b”可知,采样转换完毕后,在cs信号为低的前提下,将rd脚由高电平拉成低电平后,经过tacc的延时即可从db脚读出有效的采样结果。图2-2-8:adc0804手册给出的adc转换时序图(6)原理图如下: 图2-2-98、矩阵键盘原理及电路图 (1)、矩阵键盘又称为行列式键盘,它是用4条i/o线作为行线,4条i/o线作为列线组成的键盘。在行线和列线的每一个交叉点上,设置一个按键。这样键盘中按键的个数是44个。这种行列式键盘结构能够有效地提高单片机系统中i/o口的利用率。 (2)、44矩阵键盘的编程方法:先读取键盘的状态,得到按键的特征编码。先从p1口的高四位输出低电平,低四位输出高电平,从p1口的低四位读取键盘状态。再从p1口的低四位输出低电平,高四位输出高电平,从p1口的高四位读取键盘状态。将两次读取结果组合起来就可以得到当前按键的特征编码。使用上述方法我们得到16个键的特征编码。举例说明如何得到按键的特征编码: 假设“1”键被按下,找其按键的特征编码。从p1口的高四位输出低电平,即p1.4p1.7为输出口。低四位输出高电平,即p1.0p1.3为输入口。读p1口的低四位状态为“1101”,其值为“0dh”。再从p1口的高四位输出高电平,即p1.4p1.7为输入口。低四位输出低电平,即p10p13为输出口,读p1口的高四位状态为“1110”,其值为“e0h”。将两次读出的p0口状态值进行逻辑或运算就得到其按键的特征编码为“edh”。用同样的方法可以得到其它15个按键的特征编码。 (3)原理图如下: 图2-2-102.3软件部分的设计: 1、计时模块流程图如下图所示。保护现场重装定时器初值循环次数减1否满20次?是秒单元加1否60s到?是秒单元清0,分单元加1否60分到?是分单元清0,时单元加1否24小时到?是时单元清0恢复现场返回 2、电子钟c语言程序如下: /*lcd数字中显示,时,分,秒手动按键可调,按下s4时,光标第一次显示到秒,此刻再按s8秒加1,按s12秒减1,同来可调时,分,当时调节完后,再按s4依次,光标消失,数字钟开始走*/#include#define uchar unsigned char#define uint unsigned intsbit dula=p26;/关闭所有数码管和二极管sbit wela=p27;sbit lcdrs=p35; /申明lcd使能端sbit lcden=p34;sbit s1=p30;sbit s2=p31;sbit s3=p32;sbit rd=p37;uchar code table=dx zhao-wu-long;uchar code table1= 00:00:00;uchar count,num,s1num; char shi,fen,miao;void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void write_com(uchar com)/写指令lcdrs=0; p0=com; delay(5); lcden=1; delay(5); lcden=0;void write_date(uchar date) /写数据lcdrs=1; p0=date; delay(5); lcden=1; delay(5);lcden=0;void init() /初始化函数dula=0;wela=0;lcden=0; write_com(0x38); /设置显示16*2,5*7点阵,8位数据接口 write_com(0x0c); /设置光标 write_com(0x06); /设置移位 write_com(0x01); /显示清屏 write_com(0x80); for(num=0;num15;num+) /第一行显示的数组 write_date(tablenum);delay(5); write_com(0x80+0x40);/第二行显示数组 for(num=0;num12;num+) write_date(table1num);delay(5);tmod=0x01; /选择定时器t0,工作方式1th0=(65536-50000)/256; /初始化tl0=(65536-50000)%256;ea=1; /开总中断et0=1; /打开t0中断tr0=1; /启动t0void write_sfm(uchar add,uchar date)/定位显示数据函数 uchar shi,ge; shi=date/10; ge=date%10; write_com(0x80+0x40+add); write_date(0x30+shi); write_date(0x30+ge);void keyscan() /键盘扫描函数rd=0; if(s1=0) delay(1);if(s1=0); s1num+; while(!s1); /松手检测 if(s1num=1) tr0=0; write_com(0x80+0x40+10); /时间调整 write_com(0x0f); if(s1num=2) /调整分 write_com(0x80+0x40+7); if(s1num=3) /调整秒 write_com(0x80+0x40+4); if(s1num=4) tr0=1; write_com(0x0c); s1num=0; if(s1num!=0) if(s2=0) /s2按下时时分秒相应的加1 delay(5);if(s2=0) while(!s2); if(s1num=1) miao+; /按s2秒加1 if(miao=60)miao=0; write_sfm(10,miao); write_com(0x80+0x40+10); if(s1num=2) fen+; /分加1 if(fen=60)fen=0; write_sfm(7,fen); write_com(0x80+0x40+7); if(s1num=3) shi+; /时加1 if(shi=24) shi=0; write_sfm(4,shi); write_com(0x80+0x40+4); if(s3=0) /按下s3键时分时秒 减1 delay(5);if(s3=0) while(!s3); if(s1num=1) miao-; /秒减1 if(miao=-1) miao=59; write_sfm(10,miao); write_com(0x80+0x40+10); if(s1num=2) fen-; if(fen=-1) fen=59 /分减1 write_sfm(7,fen); write_com(0x80+0x40+7); if(s1num=3) shi-;/时时 减1 if(shi=-1) shi=23; write_sfm(4,shi); write_com(0x80+0x40+4); void main() init(); tmod=0x01; /选择定时器t0,工作方式0 th0=(65536-50000)/256; /初始化 tl0=(65536-50000)%256; ea=1; /开总中断 et0=1; /打开t0中断 tr0=1; /启动t0 while(1) keyscan(); if(count=20) count=0;miao+; if(miao=60) miao=0; fen+; if(fen=60) fen=0; shi+;if(shi=24)shi=0;write_sfm(4,shi); write_sfm(7,fen); write_sfm(10,miao);void time0() interrupt 1 /中断函数th0=(65536-50000)/256; tl0=(65536-50000)%256; /重装初值count+;3.a/d转换电路c程序如下: /*调节w3电位器adc0804模数转换后的数字量会显示在数码管上*/#include #define uchar unsigned char #define uint unsigned intsbit wr=p36;sbit rd=p37;sbit wela=p27;sbit dula=p26;sbit dio=p25;uchar dispbuf6;uchar code disptab=0x3f,0x6,0x5b,0x4f,0x66,0x6d,0x7d,0x27,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x0;uchar code dispbit=0xfe,0xfd,0xfb,0xf7,0xef,0xdf;uchar a;void delay(uint x)uchar i,j;for(i=x;i0;i-)for(j=110;j0;j-);void init_timer0()tmod=0x01;th0=(65535-5000)/256;tl0=(65535-5000)%256;ea=1;et0=1;tr0=1;void timer0() interrupt 1uchar tmp;staticuchar count;p0|=0x3f; /关闭所有数码管,wela=1;tmp=dispbitcount; /数码管位选数组p0&=tmp;wela=0;dula=1;t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论