




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
任务1电子密码锁任务2
字符型LCD1602显示系统任务3实时温度监控系统任务4汉字点阵屏显示系统任务5简易数字电压表任务6简易波形发生器任务1电子密码锁1.了解矩阵式键盘的电路设计。2.掌握矩阵式键盘的按键识别编程方法。3.掌握单片机对继电器及蜂鸣器控制电路的设计。4.能够设计并制作电子密码锁控制系统。传统密码锁大多为机械式结构,其构造简单、安全性能低,还需随时携带金属钥匙,在科学技术日益发达的今天已越来越无法满足人们的需求。而电子防盗密码锁(见下图)安全性能高、使用方便,人们只要通过键盘正确输入密码即可打开密码锁,否则将发出警报。本任务主要通过设计电子密码锁来学习矩阵式键盘电路的设计及软件编程方法。电子密码锁的具体控制要求如下:1.单片机P2口连接控制4×4矩阵键盘,按键编号依次为“0~F”,其中“0~D”用作6位密码输入,“E”键为取消键,“F”键为确认键。2.单片机P0口连接控制一位共阳数码管,用于输入密码显示和信息提示。3.当单片机运行时,输入6位密码(预设值为123456),然后按下确认键:(1)密码正确,数码管显示“y”,同时单片机P1.0口输出开锁信号,驱动电磁锁打开(固态继电器触点闭合,指示灯亮),模拟密码锁打开。(2)密码不正确,数码管显示“n”,同时单片机P1.7口输出报警信号,控制蜂鸣器发出警报声(提示密码错误)。4.当在输入密码过程中或密码输入错误发出警报声时,按下取消键,重新输入6位密码。一、键盘扫描方式在单片机应用系统中,键盘扫描只是CPU的工作内容之一。CPU除了要检测键盘和处理键盘操作之外,还要进行其他事物的处理。通常,完成键盘扫描和处理的程序是系统程序中的一个专用子程序,CPU调用该子程序对键盘进行扫描和处理的方式主要有三种:程序控制扫描、定时扫描和中断扫描。1.程序控制扫描方式在主控程序中的适当位置调用键盘扫描程序,对键盘进行读取和处理。由于CPU要不间断地对键盘进行扫描以监视键盘的输入,而不能处理其他任务,这样将占用CPU大部分的资源。2.定时扫描方式在该方式中,要使用单片机的一个定时器,使其产生一个10ms的定时中断,CPU响应定时中断,执行键盘扫描,若在连续两次中断中都读到相同的按键按下(间隔10ms作为消抖处理),CPU即执行相应的键处理程序。由于单片机仍要定时对键盘进行扫描,这样相对程序控制扫描方式而言,节约了CPU的部分资源。3.中断方式使用中断方式时,键盘的硬件电路要做一定的改动,增加一个按键产生中断信号的输入线,当键盘有按键按下时,键盘硬件电路产生一个外部的中断信号,CPU响应外部中断,进行键盘处理。由于仅在按键按下产生外部中断时,CPU才执行键盘扫描和按键处理程序,因此大大提高了CPU的工作效率。二、矩阵键盘处理过程1.键输入2.键译码3.键处理三、矩阵键盘的编程方法1.扫描法检测是否有键被按下
去除键抖动
等待按键弹开
2.反转法(1)让P2口低四位输出“1”,高四位输出“0”。从P2口的低四位读取键盘状态,若有按键按下,则低四位中会有一个“1”翻转为“0”,高四位不会变,此时即可确定被按下的键的行位置。(2)让P2口高四位输出“1”,低四位输出“0”。从P2口的高四位读取键盘状态,若有按键按下,则高四位中会有一个“1”翻转为“0”,低四位不会变,此时即可确定被按下的键的列位置。(3)将两次结果组合起来,得到当前按键的特征编码。然后通过查表方式找到该特征码所对应的顺序编码。根据上述设计思路编写反转法键盘扫描程序:一、设计并绘制电子密码锁电路原理图电子密码锁通常通过电磁继电器和离合器等电气元件来控制锁的机械部分。在本任务中通过控制继电器的吸合和断开来模拟密码锁的打开和关闭。单片机的P1.0和P1.7口为信息输出口,其中P1.0口输出信号控制固态继电器线圈得电,常开触点闭合,控制LED指示灯亮。P1.7口则输出报警信号,控制蜂鸣器发出警报声,两个电路均采用三极管驱动方式,如下图所示。
二、程序设计根据上述设计思路编写的完整程序:矩阵按键的扫描及译码程序流程图:三、程序输入及仿真运行密码正确时的仿真运行图密码不正确时的仿真运行图四、制作硬件电路并调试步骤说明示范图片1.焊接前材料准备参照元器件清单表步骤说明示范图片2.硬件焊接电路板元件布局图步骤说明示范图片3.程序烧入、运行并调试密码输入正确密码输入错误单击此处返回目录任务2字符型LCD1602显示系统
1.了解LCD的结构及引脚功能。2.掌握单片机对LCD1602的指令操作方法。3.能够设计并制作键盘控制的字符型LCD1602显示系统。液晶显示器(LCD)以其轻薄短小、功耗小、字符显示系统完整等优点,逐渐在工业控制、仪器仪表等领域得到广泛应用。LCD1602液晶显示模块是16(字符)×2(行),即32个字符的显示模块,具有专门的操作指令,能直接与单片机构成接口电路,其功能强、使用灵活。LCD16021.单片机的P2口连接控制4×4矩阵键盘,按键编号依次为“0~F”。2.单片机的P0口连接LCD1602的8位双向并行总线(D0~D7)。3.单片机P1口的低三位分别控制LCD1602的RS、RW和EN端。4.通过矩阵键盘输入,在LCD1602屏幕的预定位置显示出相应按键值。本任务的主要内容是设计一个字符显示系统,具体控制要求如下:一、LCD1602的基础知识1.LCD1602引脚功能介绍161编号符号引
脚
说
明1VSS电源负极(接地)2VCC电源正极(+5V)3VL对比度调整端接正电源时对比度最弱,接地电源时对比度最高(使用时可以通过一个10kΩ的电位器调整对比度)4RS数据/命令选择端(H/L)为高电平时表示将进行数据操作为低电平时表示进行命令操作5R/W读/写选择端(H/L)为高电平时表示要对液晶进行读操作为低电平时表示要进行写操作6E使能信号读指令或数据时,高电平使能写指令或数据时,下降沿使能编号符号引
脚
说
明7D08位双向并行总线0位(最低位)8D18位双向并行总线1位9D28位双向并行总线2位10D38位双向并行总线3位11D48位双向并行总线4位12D58位双向并行总线5位13D68位双向并行总线6位14D78位双向并行总线7位(最高位,也是用来检测液晶忙的标志位)15BLA背光源正极(接+5V)16BLK背光源负极(接地)(续表)2.字符集1602液晶模块内部的字符发生存储器(CGROM)存储了由8位字符码生成的192个5×7点阵字符和32种5×10点阵字符。这些字符有:阿拉伯数字、英文字母的大小写、常用的符号和日文假名等。在单片机编程中,既可以用ASCII码直接赋值,也可以用字符型常量或变量赋值,如‘A’。在LCD1602内部的CGROM中提供了5×7点阵字符代码,但在实际的1602液晶显示屏上,字符却是以5×8点阵显示出来,即每块点阵的最底面一行是空显示。当用户显示自定义字符时,可以将字符定义为5×8点阵,并在液晶屏上显示出来。3.显示位与RAM的对应关系(地址映射)16字符×2行显示位序号1234……14151617……40RAM地址(0x)第一行00010203……0D0E0F10……27第二行40414243……4D4E4F50……67由于受到LCD1602显示屏的限制,每行只能显示16个字符,当把显示字符地址设置在0x10~0x27(第1行)或0x50~0x67(第2行)显示位时,LCD1602无法显示出来,但可以通过控制屏幕画面左移的方法,观察到每行写入在第16列以后的字符。二、LCD1602操作方法1.基本操作时序
基本操作输入输出RSR/WE读状态01高电平D0~D7=状态字写指令00高脉冲无读数据11高电平D0~D7=数据写数据10高脉冲无注:E=高脉冲,表示E端初始化时为0,然后置1,再清0(即下降沿有效)。2.指令集指令名称指
令
代
码功
能D7D6D5D4D3D2D1D0显示模式设置0011100016×2显示,5×8点阵,8位数据接口清屏00000001显示清屏:1.数据指针清零2.所有显示清零回车00000010显示回车,数据指针清零指令名称指
令
代
码功
能D7D6D5D4D3D2D1D0输入模式设置000001I/DSI/D=1当读或写一个字符后地址指针加1,且光标加1;I/D=0当读或写一个字符后地址指针减1,且光标减1S=1当写一个字符后,整屏显示左移(I/D=1)或右移(I/D=0),以得到光标不移动而屏幕移动的效果;S=0
当写一个字符后,整屏显示不移动(续表)指令名称指
令
代
码功
能D7D6D5D4D3D2D1D0显示状态设置00001DCBD=1开显示;D=0关显示C=1显示光标;C=0不显示光标B=1光标闪烁;B=0光标不显示画面或光标滚动设置0001S/CR/L00S/C=1画面滚动;S/C=0光标滚动R/L=1向右滚动;R/L=0向左滚动数据指针设置1地址码设置数据地址指针80H+RAM地址变量(续表)三、LCD1602的操作函数1.检查LCD忙状态
bitlcd_busy()1602{bitbusy_flag;//定义忙标志位
LCD_RS=0;LCD_RW=1;_nop_();LCD_EN=1;_nop_();//EN置为高电平,读取状态字
busy_flag=(bit)(LCD_Port&0x80);//查看忙标志位
LCD_EN=0; _nop_();return(busy_flag);}在LCD1602初始化程序中,也可省略此函数,改用延时函数作适当的延时,跳过忙标志位的检测。2.向LCD写入一字节指令voidlcd_write_command(ucharcmd){while(lcd_busy());//检查忙标志位,若忙则等待
LCD_RS=0;//写指令(RS=0,RW=0)
LCD_RW=0;LCD_EN=0;_nop_();_nop_();LCD_Port=cmd;_nop_();_nop_();//指令送LCD总线端口
LCD_EN=1; _nop_();_nop_();//EN产生下降沿
LCD_EN=0;} 3.向LCD写入一字节数据voidlcd_write_data(uchardat){while(lcd_busy());//检查忙标志位,若忙则等待
LCD_RS=1;//写数据(RS=1,RW=0)
LCD_RW=0;LCD_EN=0;LCD_Port=dat;_nop_();_nop_();//数据送LCD总线端口
LCD_EN=1;_nop_();_nop_();//EN产生下降沿
LCD_EN=0;}4.设定字符显示位置voidlcd_position(ucharpos){lcd_write_command(pos|0x80);//数据指针=80+地址变量}[例]在LCD1602显示器的第二行第8列位置,显示一个字符“#”。
lcd_position(0x48);//设定显示位置
lcd_write_data(‘#’);或
lcd_write_data(0x23);//送要显示字符数据
//(经查表,字符“#”的ASCII码为0x23)5.LCD1602的初始化设置
voidlcd_Initial(){/***********设置显示模式***********/
lcd_write_command(0x38);delay(1);//16*2显示,5*8点阵,8位数据接口/************设置显示状态************/
lcd_write_command(0x08);delay(1);//关闭显示
lcd_write_command(0x0c);delay(1);//显示开,关光标 /************清除屏幕显示************/
lcd_write_command(0x01);delay(1);//清除LCD的显示内容/************设置输入模式************/
lcd_write_command(0x06);delay(1);//移动光标}一、设计并绘制键盘控制的LCD1602显示系统电路原理图二、程序设计矩阵键盘控制的LCD1602显示系统的程序流程图:根据上述设计思路编写的完整程序:三、程序输入及仿真运行四、制作硬件电路并调试步骤说明示范图片1.焊接前材料准备参照元器件清单表(可在上个任务的电路板上添加本任务所需电路)步骤说明示范图片2.硬件焊接电路板元件布局图(先取下单片机并通电,旋转电位器(RV1)的旋钮,调整液晶显示屏的对比度,使液晶屏显示如右图所示)步骤说明示范图片3.程序烧入、运行并调试无按键按下时液晶显示有按键(E键)按下时液晶显示单击此处返回目录任务3实时温度监控系统
1.了解DS18B20的内部结构及测温原理。2.掌握单片机对DS18B20的指令操作方法。3.能够设计并制作基于DS18B20的实时温度监控系统。温度控制系统广泛应用于社会生活的各个领域,如家电、汽车、材料、电力电子等。测量温度的关键是温度传感器,随着技术飞速发展,数字温度传感器DS18B20因其内部集成了A/D转换器而使电路结构更加简单,而且减少了温度测量转换时的精度损失,使得测量温度更加精确。基于S18B20
的温控仪
本任务是要设计一个基于DS18B20数字式温度传感器的实时温度监控系统,要求将测量温度值送LCD1602显示,具体控制要求如下:1.单片机的P3.7口连接DS18B20的数据输入输出端(DQ),DS18B20为电源供电方式。2.单片机的P0口连接LCD1602的8位双向并行总线(D0~D7)。3.单片机P1口的低三位分别控制LCD1602的RS、R/W和EN端,在LCD1602屏幕上显示当前环境温度。4.具有高低温报警监控功能。当环境温度低于0℃时,单片机的P2.0口驱动蜂鸣器发出连续警报音;当环境温度高于25℃时,蜂鸣器发出间隔为0.5s的警报音。一、DS18B20功能简介DS18B20是一个单总线(1-Wire)数字测温芯片,仅需使用1个端口就能实现与单片机的双向通信。DS18B20的性能特点如下:(1)每个DS18B20器件上都有独一无二的序列号。(2)实际应用中不需要外部任何元器件即可实现测温。(3)可用数据线供电,电压范围:+3.0~+5.5V。(4)测温范围:-55~+125℃,固有测温分辨率为0.5℃。(5)测量分辨率可通过编程设定为9~12位的数字读数方式。(6)用户可自设定非易失性的报警上下限值。(7)支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现多点测温。(8)负压特性,电源极性接反时,DS18B20不会因发热而烧毁,但不能正常工作。二、DS18B20内部结构及引脚图1.DS18B20内部结构(1)DS18B20ROM中的64位序列号排列图8位产品系列号48位产品序列号8位CRC编码(2)DS18B20温度值格式部分温度对应值表:温度/℃二进制表示十六进制表示+125000001111101000007D0H+8500000101010100000550H+25.062500000001100100010191H+10.125000000001010001000A2H+0.500000000000010000008H000000000000000000000H-0.51111111111111000FFF8H-10.1251111111101011110FF5EH-25.06251111111001101111FE6FH-551111110010010000FC90H(3)DS18B20温度传感器的内部存储器序号寄存器名称作
用序号寄存器名称作
用0温度低字节以16位补码形式存放4配置寄存器分辨率设置1温度高字节5、6、7保留自身用2TH/用户字节1存放温度上限3TL/用户字节2存放温度下限8CRC(检验码)数据校验(4)DS18B20的配置寄存器TMR1R011111R1R0分辨率温度最大转换时间009位93.75ms0110位187.5ms1011位375ms1112位750ms低5位一直都是“1”,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如下表所示(DS18B20出厂时被设置为12位)。封装形式实物图引脚图TO-92TSOCSOIC2.DS18B20引脚图DS18B20的引脚说明:编号符号引
脚
说
明1GND电源负极(接地)2DQ数字信号输入/输出端(当被用在寄生电源下时,也可以向器件提供电源)3VCC外接供电电源输入端(在寄生电源接线方式时接地)1.初始化三、DS18B20控制命令复位要求主机(单片机)将数据线下拉480~640µs(t0~t1),然后主机释放总线(t1时刻),由上拉电阻将总线拉至高电平,同时主机进入接收状态。当DS18B20收到信号后等待15~60µs(t1~t2)左右,从机(DS18B20)会向总线发出一个应答脉冲,将总线拉低60~240µs(t2~t3),主机(单片机)收到此信号表示复位成功。主机的整个接收状态至少应维持480µs(t1~t4)。DS18B20的初始化序列图2.ROM命令(1)写时序主机拉低总线,在接着的15µs之内释放总线,由上拉电阻将总线拉至高电平,并维持整个时序期间。写“0”时序:主机拉低总线,在整个时序期间内保持低电平(至少60µs)。写时序至少需要60µs,而且两次独立的写时序之间至少需要1µs的恢复时间。(2)读时序读时序同样由主机发起,拉低总线至少1µs,然后主机释放总线。从机得到主机发出的时序后,开始在总线上发送“0”或“1”。若从机发送“1”则保持总线为高电平,若发送“0”则拉低总线。当发送“0”后,从机发出的数据在起始时序之后保持有效时间15µs,然后释放总线,由上拉电阻将总线拉回至空闲高电平状态。主机在时序起始后的15µs之内对总线状态进行采样。ROM指令表:指令约定代码功能读ROM33H读DS1820温度传感器ROM中的编码(即64位地址)符合ROM55H发出此命令之后,接着发出64位ROM编码,访问单总线上与该编码相对应的DS1820使之作出响应,为下一步对该DS1820的读写做准备搜索ROMF0H用于确定挂接在同一总线上DS1820的个数和识别64位ROM地址(为操作各器件做好准备)跳过ROMCCH忽略64位ROM地址,直接向DS1820发温度变换命令(适用于单片独立工作)警告搜索命令ECH执行后只有温度超过设定值上限或下限的芯片才做出响应3.功能命令指令约定代码功能温度转换44H启动DS1820进行温度转换,结果存入内部9字节RAM中读暂存器BEH读内部RAM中9字节的内容写暂存器4EH发出向内部RAM的2、3字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据复制暂存器48H将RAM中第2、3字节的内容复制到EEPROM中重调EEPROMB8H将EEPROM中内容恢复到RAM中的第2、3字节。读供电方式B4H读DS1820的供电模式(寄生供电时DS1820发送“0”,外接电源供电时DS1820发送“1”)四、DS18B20的操作函数
1.DS18B20初始化bitds18b20_rst(void)/*ds1820复位*/{ucharrst_flag; //定义复位标志位
DQ=0;//DQ被拉低
delay_18B20(100);//精确延时大于480µs
DQ=1;//主机释放
delay_18B20(10); //等待释放总线
rst_flag=DQ;//延时后DS18B20将拉低总线,
//若DQ=0,则初始化成功,否则失败
delay_18B20(5);//延时片刻后,再返回
returnrst_flag;}2.从DS18B20中读出一字节数据uchards18b20_rd(void)//从DS18B20中读出一字节数据{uchari=0;uchardat=0;for(i=8;i>0;i--){DQ=0;//给脉冲信号(拉低总线)
dat>>=1;//数据右移一位
DQ=1;//给脉冲信号(释放总线)
if(DQ==1)//DQ为1
dat|=0x80;//读出数据
delay_18B20(4);}
return(dat);//数据返回}3.向DS18B20中写入一字节数据voidds18b20_wr(uchardat)//向DS18B20中写入一字节数据
{uchari=0;for(i=8;i>0;i--){DQ=0;//给脉冲信号(拉低总线)
DQ=dat&0x01;//数据从低位开始写入
delay_18B20(5);//延时,等待DS18B20采集输入信号
DQ=1;//给脉冲信号(释放总线)
dat>>=1;//数据右移一位
}delay_18B20(4);}4.读取温度值并转换voidread_temp(void)/*读取温度值并转换*/{uchara,b;while(ds18b20_rst());//若为1,则重新初始化
ds18b20_wr(0xcc);//跳过读序列号
ds18b20_wr(0x44);//启动温度转换
delay_18B20(500);//温度转换稍作延时,
//一般不超过750ms(仿真时要加)
while(ds18b20_rst());
ds18b20_wr(0xcc);//跳过读序列号
ds18b20_wr(0xbe);//读取温度
a=ds18b20_rd();//读取低字节
b=ds18b20_rd();//读取高字节
tvalue=b;tvalue<<=8;tvalue=tvalue|a;//组合成双字节
if(tvalue<0x0fff)//温度值为正
tflag=0;//符号标志位清“0”,代表温度值为正
else //温度值为负
{tvalue=~tvalue+1;tflag=1;//符号标志位置“1”,代表温度值为负
}tvalue=tvalue*0.625;//温度值扩大10倍,精确到1位小数}一、设计并绘制实时温度监控系统电路原理图二、程序设计本任务的程序包括两部分:一是单片机对DS18B20的操作,即对DS18B20的初始化、ROM命令控制、存储器读取、数据转换及温度显示;二是高、低温警报程序,这里显示器选择LCD1602显示方式,还设定温度的上下限值,当越限时要发出高低温警报,高温警报要发出连续警报音,即一直让P2.0口输出低电平,低温警报时发出间断警报音,即每隔0.5s将P2.0口电平取反。主程序温度测量及数据变换子程序根据上述设计思路编写的完整程序:三、程序输入及仿真运行四、制作硬件电路并调试步骤说明示范图片1.焊接前材料准备参照元器件清单表步骤说明示范图片2.硬件焊接电路板元件布局图(旋转电位器RV1上的旋钮,调整液晶显示屏的对比度)步骤说明示范图片3.程序烧入、运行并调试当前室温显示(注意观察温度计上的温度示数与LCD1602上显示的温度值是否一致)用手握住DS18B20的顶部,观察温度值是否升高,当温度超过25℃时,蜂鸣器发出连续警报DS18B20蜂鸣器报警单击此处返回目录任务4汉字点阵屏显示系统1.了解8×8LED点阵屏的内部结构及字符显示原理。2.掌握单片机控制16×16LED点阵屏的汉字显示方法。3.能够设计并制作基于16×16LED点阵屏的汉字显示系统。LED点阵电子显示屏具有色彩鲜艳、亮度高、工作稳定、功耗低、安装方便等优点,已广泛应用于各种公共场合,如广告屏、宣传栏、银行叫号器以及公交车报站器等。本任务的主要内容是使用8×8点阵发光管模块组成的16×16发光点阵,实现单个汉字的静态循环显示,显示内容可以为待定的中文、字符或数字。一、LED点阵屏基础知识LED点阵是由许多单个LED按矩阵的方式排列而成,通过控制每个LED灯的亮灭来完成各种字符或图形的显示。单色8×8LED点阵实物图和结构图如下图所示:
b)结构图a)实物图二、8×8LED点阵屏的字符显示原理
行数点阵数据第1行0x00第2行0x24第3行0x5A第4行0x81第5行0x42第6行0x24第7行0x18第8行0x00由8行8列构成的“♡”图形,如下图所示。其中要显示的点用二进制位1表示,不显示的点用位0表示。这样每行构成了一个字节,从上到下各行的数值用十六进制数表示,见下表。以按行显示为例,在8×8LED点阵上显示一个“♡”时,显示过程如下:①P2口送出第1行要显示数据0x00,P0口送出选中第1行控制数据00000001;②P2口送出第2行要显示数据0x24,P0口送出选中第2行控制数据00000010;③P2口送出第3行要显示数据0x5A,P0口送出选中第3行控制数据00000100;………送完8行的显示数据和8个行控制信号,一个“♡”就显示了一遍,接着再重复上述显示过程。只要每行的刷新速率大于50Hz,利用人眼的视觉余辉效应,人们就可以看到一幅完整的文字或画面。8×8点阵字符显示参考程序如下:#include<AT89X51.h>
//包含AT89单片机寄存器的头文件
#defineucharunsignedchar
//定义无符号字符型"uchar"等价于"unsignedchar"codeucharheart[8]={0x00,0x24,0x5A,0x81,0x42,0x24,0x18,0x00};
//心形点阵数组main(){uchari,k;while(1){k=0x01;
//初始化,显示第一行
for(i=0;i<8;i++)
//显示8行,逐行扫描
{ P0=0x00;
//关闭显示
P2=~heart[i];
//因为是行线高电平有效,列数据低电平有效,数据取反送出
P0=k;
//选中行线
k=k<<1;
//指向下一行
}}}三、16×16LED点阵屏1.点阵屏的组成16×16LED点阵屏有16个行和16个列,由4个大小均为32×32mm的8×8共阳点阵组成,点阵屏可拆装,采用圆孔铜排针,便于连接。在行上和列上分别连接有驱动电路,应用串行数据转并行数据的方式来实现数据的转换,驱动部份使用两个移位带存储器的74HC595和两个移位寄存器74HC164组成,74HC595负责列扫描数据,74HC164负责行扫描数据。行扫描上同时采用三极管放大驱动电流,提高点阵屏亮度。输入数据口扩展口16×16LED点阵屏的数据接口采用可并接方式,有输入和输出,可进行多块点阵屏之间的级联,方便多块合并,可组成32×16、48×16、64×16等点阵屏,实现更多位的汉字显示。2.电路原理图点阵的列驱动电路主要由74HC595完成。74HC595是硅结构的CMOS器件,兼容低电压TTL电路,具有8位移位寄存器和一个存储器,三态输出功能。移位寄存器和存储器是分别的时钟。数据在SHcp的上升沿输入,在STcp的上升沿进入存储寄存器。如果两个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲,电路中将两个时钟分开控制,目的是先移好位再存储数据,这样在移位的过程中,可保持输出的数据。移位寄存器有一个串行移位输入(Ds)和一个串行输出(Q7’)电路将其接入下一个IC的输入(Ds)组成16位移位存储器。一个异步的低电平复位(),电路中不使用复位信号,将此脚直接接入电源(+5V)。存储寄存器有一个三态的并行8位总线输出,当使能()为低电平时,存储寄存器的数据输出到总线,电路中直接将此脚接GND,做直接输出。点阵的行驱动电路主要由两片74HC164芯片和16个PNP型三极管S8550构成。74HC164是简单的8位移位寄存器,数据输入端A、B在SCK时钟脉冲作用下移入寄存器。A、B是与的输入,本电路将其合并作一个输入,移位寄存器的最后一位输出(QH)接入下一个74HC164的输入A、B,组成16位移位寄存器。位的输出再经过三极管反向放大电流加到点阵的共阳端,即作为点阵的行控制口。该16×16LED点阵屏优点是数据采用了串入并出的方式,占用单片机的接口较少。显示汉字较为灵活,不仅可以静态的显示信息,而且还可以动态滚动显示,从而增加信息显示的容量。一、设计并绘制16×16LED点阵屏汉字显示系统电路原理图以显示“无锡”二字为例,字符的点阵图如下图所示。将字型数据分成上下两个8行,共16行,每行又各占16列,如果每列分别用一位二进制数表示,这样每行将占用两个字节。因此,一个汉字就可以用16×2=32个字节的点阵码来表示。程序中将每个汉字的点阵码分别用数组来表示,当要显示某一汉字时,直接将该汉字的数组点阵码送入显示缓冲区。二、程序设计本设计采用逐行扫描方式,要在16行16列的LED点阵上显示一个字符,先由单片机从显示缓冲区取出第一行需要显示的2字节点阵数据(数据分两次送入,先送一行的最后一字节),依次串行输入至列移位寄存器74HC595,然后单片机输出数据控制行移位寄存器74HC164选中第一行,即可实现该行的数据显示,紧接着再进行下一行点阵数据的显示,如此循环,便可显示整个汉字的内容。注意:每次只能选通一行数据,并通过不断的逐行扫描来实现汉字或字符的显示。汉字的点阵数据可以从计算机显示字库中获得,也可用字库软件转换得到。对于特殊符号或图案,要先绘出图形,再根据图形写出相应的代码。
a)主程序流程图b)显示程序流程图根据上述设计思路编写的完整程序:三、程序输入及仿真运行由于Proteus元件库中没有S8550的仿真模型,因此仿真时用74HC04集成电路替换。步骤说明示范图片1.焊接前材料准备参照元器件清单表四、制作硬件电路并调试步骤说明示范图片2.硬件焊接电路板元件布局图步骤说明示范图片3.程序烧入、运行并调试显示屏显示“无”字显示屏显示“锡”字单击此处返回目录任务5简易数字电压表
1.了解A/D的基本概念。2.了解ADC0809的内部结构及转换原理。3.掌握ADC0809的各引脚功能及初始化过程。4.掌握单片机控制ADC0809实现0~5V直流电压测量的方法。5.能够设计并制作简易数字电压表。数字电压表是诸多数字式仪表的核心与基础,以数字电压表为核心,可以扩展成各种通用数字仪表、专用数字仪表及各种非电量的数字化仪表(如温度计、电子称等)。本任务采用AT89S51单片机和ADC0809模数转换芯片来设计一个简易的数字电压表,要求其能够对输入的0~5V模拟直流电压进行测量,并通过3位7段的LED数码管进行显示,测量误差约为0.01V。数字电压表电子称一、A/D的基本概念将模拟量转换成数字量,简称为A/D转换。完成这种转换的电路称为模数转换器(AnalogtoDigitalConverter),简称ADC。模拟量数字量二、ADC0809简介ADC0809是采用CMOS工艺制成的单片8位8通道逐次逼近式A/D转换器,通过一套基准电压与取样保持电压进行比较,从而将模拟量直接转换成数字量。其特点是工作速度快,转换精度容易保证,使用也比较方便。其输入的模拟电压与数字量输出之间的转换关系是:ADC0809的核心部分是8位A/D转换器,它由比较器、逐次逼近寄存器、D/A转换器及控制和定时5部分组成,其逻辑框图及引脚排列如下图所示。a)内部逻辑框图b)引脚排列图1.引脚功能说明引脚编号引脚定义功能说明26~28、1~5IN0~IN78路模拟量输入端14、15、8、17~21D0~D78位数字量输出端23~25ADDC、ADDB、ADDA3位地址输入线(选通8路模拟输入中的一路)22ALE地址锁存允许信号,输入高电平有效,对应ALE上升沿,A、B、C地址状态送入地址锁存器中6STARTA/D转换启动信号,输入高电平有效START上升沿时,复位ADC0809START下降沿时,启动芯片开始进行A/D转换(在A/D转换期间,START应保持低电平)引脚编号引脚定义功能说明7EOCA/D转换结束信号。EOC=0,正在进行转换;EOC=1,转换结束。该状态信号既可作为查询的状态标志,又可作为中断请求信号使用9OE数据输出允许信号,高电平有效。当A/D转换结束时,OE=1,打开输出三态门,输出数字量,控制三态输出锁存器向单片机输出转换得到的数据。OE=0,输出数据线呈高阻10CLK时钟脉冲输入端(时钟频率不高于1280kHz)12、16VREF(+)、VREF(-)基准电压11Vcc电源(+5V)13GND地(续表)2.模拟通道选择选中的模拟通道IN0IN1IN2IN3IN4IN5IN6IN7地
址ADDC00001111ADDB00110011ADDA010101013.ADC0809的工作过程首先输入3位地址码(ADDC、ADDB、ADDA),并使ALE=1,将地址码存入地址锁存器中。此地址经译码后,选通8路模拟通道之一到比较器。给START一个上升沿将逐次逼近寄存器复位,下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换完毕,结果数据已存入锁存器。当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。4.转换数据的传送(1)定时传送方式(2)查询方式(3)中断方式三、ADC的主要技术指标1.分辨率A/D转换器的分辨率(Resolution)是指引起A/D转换器的输出数字量变动一个二进制数码的最低有效位(LSB)时输入模拟量的最小变化量。[例]某A/D转换器输入模拟电压变化范围为0~10V时:解:①若为8位ADC,其分辨率为:②若为10位ADC,其分辨率为③若为12位ADC,其分辨率为2.转换速度完成一次A/D转换(从接到转换启动信号开始,到输出端获得稳定的数字信号)所经过的时间叫做转换时间,转换时间越短,则转换速度越快。双积分型ADC的转换时间在几十毫秒至几百毫秒之间;逐次比较型ADC的转换时间大都在10~50µs之间;并行比较型ADC的转换时间可达10ns。3.转换误差
转换误差也叫相对精度或相对误差,表示A/D转换器实际输出的数字量与理论上的输出数字量之间的差别,通常用最低有效位(LSB)的倍数表示。[例]某ADC的相对精度为±(1/2)LSB,这说明理论上应输出的数字量与实际输出的数字量之间的误差不大于最低位为1的一半。一、设计并绘制简易数字电压表电路原理图二、程序设计1.ADC0809时钟脉冲的产生ADC0809时钟的典型运用为640kHz,本任务中外接晶振频率为12MHz,采用定时器T1工作于方式2为ADC0809提供频率为500kHz的时钟脉冲,定时周期为2µs,在中断程序中将电平取反完成脉冲的输出。由于Proteus中没有ADC0809的仿真模型,在仿真时可以选用Proteus中的ADC0808代替。ADC0809与ADC0808的功能结构相似,引脚排列也相同。2.ADC0809数据的读取(1)初始化时,使START和OE信号全为低电平。(2)将要转换的通道地址送到A、B、C端口上,在ALE上加上锁存脉冲。(3)在START端给出一个至少有100ns宽的正脉冲信号。(4)是否转换完毕根据EOC信号来判断。如果EOC为低电平,表示还在转换过程中;如果EOC变为高电平,表示转换完毕。(5)使OE为高电平,将转换后的数据送给单片机处理。当数据传送完毕后,将OE置为低电平,使ADC0809输出为高阻状态,让出数据线。3.数据的处理本电路中ADC0809使用的基准电压VREF=+5V,根据A/D转换的公式,实际测量的电压值Vin=Dout×VREF/(28-1)。由于在数码管上要显示出电压值的小数点后第二位数字,因此在本次数据处理程序中,先将VREF扩大了100倍,然后再去除以255,经过运算处理,得到A/D的另一个变换公式:a)定时器T1服务程序b)主程序c)定时器T0服务程序根据上述设计思路编写的完整程序:三、程序输入及仿真运行四、制作硬件电路并调试步骤说明示范图片1.焊接前材料准备参照元器件清单表ADC0809步骤说明示范图片2.硬件焊接电路板元件布局图步骤说明示范图片3.程序烧入、运行并调试旋转电位器(RV1),输入的模拟电压值为2.50V(可用数字式万用表测量ADC0809的IN0端电位)旋转电位器(RV1),输入的模拟电压值为4.23V单击此处返回目录任务6简易波形发生器
1.了解D/A的基本概念。2.了解DAC0832的内部结构及转换原理。3.掌握DAC0832与单片机之间的连接方法。4.掌握单片机控制DAC0832产生不同波形的编程方法。5.能够设计并制作简易波形发生器。作为一种常用的信号发生装置,信号发生器广泛应用于电子实验、设备检测和自动控制系统等领域。虽然常见的信号源完全可以由硬件电路搭接而产生,如采用555振荡电路产生脉冲波,但是这种电路存在波形质量差、控制难、可调范围小和电路复杂等缺点。本任务主要利用单片机和DAC0832组成信号发生系统,通过程序的控制来产生方波、锯齿波、三角波和正弦波4种波形,并通过一个按键实现波形之间的切换。一、D/A的基本概念将数字量转换成模拟量,简称为D/A转换。完成这种转换的电路称为数模转换器(DigitaltoAnalogConverter),简称DAC。模拟量数字量运算放大器输出的模拟量Vo为:二、DAC0832简介DAC0832是采用CMOS工艺制成的单片直流输出型8位数/模转换器,它主要由T型R-2R电阻网络、模拟开关、参考电压VREF组成。a)逻辑框图b)引脚排列根据对数据锁存器和数据寄存器控制方式的不同,DAC0832有三种工作方式:(1)直通方式:即数据不经两级锁存器锁存。此方式适用于连续反馈控制线路,但在使用时,必须通过另加I/O接口与CPU连接,以匹配CPU与D/A转换。(2)单缓冲方式:即控制输入寄存器和数据寄存器同时接收数据,或者只用输入寄存器而把数据寄存器接成直通方式。此方式适用于只有一路模拟量输出或几路模拟量异步输出的情形。(3)双缓冲方式:先使输入寄存器接收数据,再控制输入寄存器的数据输出到数据寄存器,分两次锁存输入数据。此方式适用于多个D/A转换同步输出的情形。引脚编号引脚定义功能说明4~7、13~16D0~D7数字信号输入端19ILE输入寄存器允许端(高电平有效)1片选信号(低电平有效)2写信号1(低电平有效)17传送控制信号(低电平有效)18写信号2(低电平有效)DAC0832引脚功能说明:(续表)引脚编号引脚定义功能说明11、12IOUT1,IOUT2DAC电流输出端9Rfb集成在片内的外接运放的反馈电阻端8VREF基准电压(-10V~+10V)20Vcc电源电压(+5V~+15V)3AGND模拟地可接在一起使用10DGND数字地三、DAC的主要技术指标1.分辨率分辨率是指输出电压的最小变化量(对应于输入数字量最低位为1,其余各位均为0时的输出电压)与满量程输出电压(对应于输入数字量全部为1时的输出电压)之比,通常用百分比来表示。对于n位D/A转换器,分辨率可表示为:[例]4位DAC的分辨率:1/(24-1)=1/15=6.67%8位DAC的分辨率:1/(28-1)=1/255=0.39%2.转换速度D/A转换器从输入数字量到转换成稳定的模拟输出电压所需要的时间称为转换速度。不同的DAC其转换速度也是不相同的,一般约在几微秒到几十微秒的范围内。3.转换精度转换精度是指电路实际输出的模拟电压值和理论输出的模拟电压值之差。通常用最大误差与满量程输出电压之比的百分数表示。[例]某D/A转换器满量程输出电压为10V,如果误差为1%,就意味着输出电压的最大误差为±0.1V。即百分数越小,精度越高。5.温度系数4.非线性误差即DAC的实际转换特性曲线与理想特性曲线之间的最大偏差,并以该偏差相对于满量程的百分数度量。D/A转换器的非线性误差主要由模拟开关以及运算放大器的非线性引起。转换器电路设计一般要求非线性误差不大于±1/2最低有效位(LSB)。在输入不变的情况下,输出模拟电压随温度变化而变化的量,称为DAC的温度系数。一般用满刻度的百分数表示温度每升高1℃输出电压变化的值。四、D/A与A/D的关系典型的单片机控制模拟系统框图一、设计并绘制简易波形发生器电路原理图由于任务中是要输出多种信号波形,为了便于观察,可以借助于Proteus中的仿真示波器来显示输出波形简易波形发生器的软件设计流程图二、程序设计1.方波的产生voidsquare(void)//方波发生函数
{ucharx;for(x=0;x<125;)//低电平半周
{if(time==1)//40μs时间到标志位
{Dac0832_data=0x00; x++; }time=0;} for(x=0;x<125;) //高电平半周
{if(time==1){Dac0832_data=0xff; x++;} time=0;}}2.锯齿波的产生voidsaw(void) //锯齿波发生函数
{ucharx;for(x=0;x<250;){if(time==1)//40μs时间到标志位
{Dac0832_data=x;//产生斜坡
x++;}time=0;}}3.三角波的产生voidtriangle(void)
//三角波发生函数
{ucharx;for(x=0;x<250;)
//产生三角波的上升斜边
{if(time==1)
//40μs时间到标志位
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公益类项目合同范本
- 双方解聘合同范本
- 烹饪原料知识练习题库及答案
- 南沙初中食堂承包合同范本
- 台湾履行合同范本
- 农村包清工合同范本
- 七年级组工作计划
- 七年级政治教学工作总结
- 单位招标合同范本
- 单间转租合租合同范本
- JGJ52-2006 普通混凝土用砂、石质量及检验方法标准
- 《运筹学》全套课件(完整版)
- 《检验检测机构资质认定评审准则》试题及答案
- 新能源汽车产业研究综述
- 2023-2024学年安徽省马鞍山市物理八下期末考试试题及答案解析
- 2024年江苏农牧科技职业学院单招职业适应性测试题库新版
- 第22课《陈涉世家》课件(共71张)
- 新能源汽车产业专利分析综述
- 2010年4月自考00371公安决策学试题及答案含解析
- 实验室仪器借用登记表
- 单肺通气与肺保护通气策略护理课件
评论
0/150
提交评论