单片机实践课件电科_第1页
单片机实践课件电科_第2页
单片机实践课件电科_第3页
单片机实践课件电科_第4页
单片机实践课件电科_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

实验一:C8051F410入门及定时器实验实验二:C8051F410片内AD应用实验三:C8051F410片内UART通信接口实验实验四:按键输入接口设计实验实验五:128×64点阵型液晶字符显示实验实验六:128×64点阵型液晶图形显示实验单片机原理

及应用课程实践实验内容考核:课堂操作60%:ABCD

实验报告40%:ABCD单片机原理及应用课程实践PC机C8051f410CPU内核128×64点阵LCD字符图形显示键盘输入控制LED显示控制AD定时器2UART0定时器1FYD12864-0402B

函数信号发生器P1,P0单片机原理及应用课程实践模块功能工作原理相关寄存器寄存器配置实验环境:1、C8051F系列单片机是集成的混合信号片上系统SOC(Systemonchip)。2、C8051F41x系列器件使用SiliconLabs的专利CIP-51微控制器核。CIP-51与MCS-51TM指令集完全兼容,可以使用标准805x的汇编器和编译器进行软件开发。

C8051F系列单片机列单片机芯片示意图

C8051F020原理框

高速微控制器内核数字IO模拟外设3、SiliconLabs提供一个集成开发环境(IDE),包括编辑器、宏汇编器、调试器和编程器。单片机原理与应用课程实践实验一:C8051F410入门及定时器实验基本要求:用查询或中断方式对定时器0~3进行定时应用;利用定时器0,1实现对P1.0引脚输入的时钟信号进行计数;扩展要求:利用PCA产生PWM波形

定时器/计数器的核心-----计数器

计时钟信号脉冲的个数

计时钟信号脉冲的周期数

n*T定时时钟源=t定时时间

(2m-x)*T定时时钟源=t定时时间

承认自己最不想面对的弱点,是进步的开始…定时器/计数器0方式2的原理框图承认自己最不想面对的弱点,是进步的开始…图7.4定时器2的16位方式原理框图定时器/计数器2的16位方式原理框图承认自己最不想面对的弱点,是进步的开始…振荡器结构框图单片机原理与应用课程实践实验二:C8051F410片内AD应用基本要求:用定时器2溢出作为AD的启动源,对P2.0引脚输入电压信号进行AD转换;并将电压值显示在四位八段数码管上。扩展要求:对输入的信号进行16次取平均并使能窗口检测功能,如果输入电压信号超出

范围进行报警。分析:1.单片机内部模块的配置:PORTI/OOSILLATORTIMER2PCA-WDTTIMERAD2.四位数码管的动态显示:四位八段数码管动态显示:

所谓的动态显示,就是4只LED显示器不同时显示,一次只点亮一只LED显示器,4只LED显示器轮流点亮,利用人眼的视觉暂留和LED显示器余辉,就可看到4只LED显示器同时点亮,但亮度有所下降。while(1){ P10=0; P11=1; P12=1; P13=1; P2=key[0]; delay1ms(100); P10=1; P11=0; P12=1; P13=1; P2=key[1]; delay1ms(100); P10=1; P11=1; P12=0; P13=1; P2=key[2]; delay1ms(100); P10=1; P11=1; P12=1; P13=0; P2=key[3]; delay1ms(100); }ucharcodekey[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8e}; //共阳极数码管0到F编码不带小数点ADC功能模块图

单片机原理与应用课程实践实验三:C8051F410片内UART通信接口实验基本要求:用定时器2溢出作为AD的启动源,对P1.0引脚输入电压信号进行AD转换;并将电压值显示在四位八段数码管上。并通过串口发送至上位机。扩展要求:上位机可以对采集通道进行控制,上位机可以转换时间间隔进行适当的控制。UART0的结构与原理框图C8051F410单片机的UART0控制机制相关的特殊功能寄存器:串行数据缓冲寄存器SBUF0串行口控制寄存器SCON0中断允许控制寄存器IE:EA、ES0中断优先级寄存器IP:PS0控制波特率发生器的特殊功能寄存器有TMOD、TCON、CKCON、INT01CF、TL1、TH1串行口状态控制寄存器SCON

C8051F410单片机的UART0的工作方式在串行口控制寄存器SCON0中,S0MODE位决定串行口的工作方式。UART0共有2种工作方式。

单片机原理与应用课程实践实验四:按键输入接口设计实验基本要求:用定时器2溢出作为AD的启动源,对P1.0引脚输入电压信号进行AD转换;并将电压值显示在四位八段数码管上。可以通过按键输入来确定采样的通道。扩展要求:利用按键输入来修改四位八段数码管上显示的数值。按键接口电路//-----------------------------------------------------------------------------//keyscan:4*4键盘扫描程序//-----------------------------------------------------------------------------//ReturnValue:key:按下的键值//Parameters:None//-----------------------------------------------------------------------------ucharkeyscan(void){ucharscan1,scan2,keycode,j;P0=0xf0;scan1=P0;if((scan1&0xf0)!=0xf0)//判键是否按下

{delay1ms(20);//延时20msscan1=P0;if((scan1&0xf0)!=0xf0)//二次判键是否按下

{P0=0x0f;scan2=P0;keycode=scan1|scan2;//组合成键编码

for(j=0;j<=15;j++){if(keycode==key_code[j])//查表得键值

{return(key[j]);}}}}elsereturn0xff;}单片机原理与应用课程实践实验五:128×64LCD模块的应用1基本要求:掌握LCD的字符显示的基本原理。能实现在LCD上显示相应的字符信息。并将电压值显示在四位八段数码管上。可以通过按键输入来确定采样的通道。扩展要求:结合实验二,将电压值实时动态地显示在LCD上。单片机原理与应用课程实践实验六:128×64LCD模块的应用2基本要求:掌握LCD的图形显示的基本原理。能实现在LCD上显示出一些基本的直线段。扩展要求:实现在LCD上显示一副图像。单片机原理与应用课程实践实验七:128×64LCD模块的应用3基本要求:能将由P1.0输入的正弦电压信号波形一个周期的信号显示在LCD显示屏上。扩展要求:能动态地将由P1.0输入的正弦电压信号波形显示在LCD显示屏上。128*64LCD的显示控制思考:思考一:如何在LCD上显示中文字符或ASCII码?思考二:如何在LCD上显示一条横向的线?思考三:如何在LCD上显示一条纵向的线?思考四:如何在LCD上显示图形?33LCD可分为两种类型,一种是字符模式lcd,另一种是图形模式lcd。

LCD的控制需专用的驱动电路,一般不会单独使用,而是将lcd面板,驱动与控制电路组合成模块一起使用,简称lcm。LCD分类FYD12864-0402B是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4行16×16点阵的汉字.也可完成图形显示.FYD12864-0402B方框图FYD12864-0402B液晶模块框图如图1所示,其中ST7920为液晶显示控制芯片,ST7921为液晶显示驱动芯片。模块主要硬件构成说明忙标志:BF字型产生ROM(CGROM)(中文字库):8192ASCII码字库HCGROM:128显示数据RAM(DDRAM)字型产生RAM(CGRAM):造字,4组16x16绘图RAM(GDRAM):图形显示地址计数器AC:

储存DDRAM/CGRAM之一的地址,自动加一。光标/闪烁控制电路●忙标志:BFBF标志提供内部工作情况.BF=1表示模块在进行内部操作,此时模块不接受外部指令和数据.BF=0时,模块为准备状态,随时可接受外部指令和数据.

利用STATUSRD指令,可以将BF读到DB7总线,从而检验模块之工作状态.●地址计数器AC地址计数器是用来贮存DDRAM/CGRAM之一的地址,它可由设定指令暂存器来改变,之后只要读取或是写入DDRAM/CGRAM的值时,地址计数器的值就会自动加一,当RS为“0”时而R/W为“1”时,地址计数器的值会被读取到DB6——DB0中。●

光标/闪烁控制电路

此模块提供硬体光标及闪烁控制电路,由地址计数器的值来指定DDRAM中的光标或闪烁位置。模块主要硬件构成说明●显示数据RAM(DDRAM)模块内部显示数据RAM提供64×2个位元组的空间,最多可控制4行16字(64个字)的中文字型显示,当写入显示数据RAM时,可分别显示CGROM与CGRAM的字型;此模块可显示三种字型,分别是半角英数字型(16*8)、CGRAM字型及CGROM的中文字型,三种字型的选择,由在DDRAM中写入的编码选择,在0000H—0006H的编码中(其代码分别是0000、0002、0004、0006共4个)将选择CGRAM的自定义字型,02H—7FH的编码中将选择半角英数字的字型,至于A1以上的编码将自动的结合下一个位元组,组成两个位元组的编码形成中文字型的编码BIG5(A140—D75F),GB(A1A0-F7FFH)。模块主要硬件构成说明字符显示原理字符显示:字符显示的RAM的地址与32个字符显示区域有着一一对应的关系,如下表所示。字符显示是通过将字符显示编码写入该字符显示RAM实现的。字符显示原理FYD12864-0402B每屏可显示4行8列共32个16×16点阵的汉字,每个显示RAM可显示1个中文字符或2个16×8点阵全高ASCII码字符,即每屏最多可显示32个中文字符或64个ASCII码字符。FYD12864-0402B内部提供128×2字节的字符显示RAM缓冲区(DDRAM)。字符显示是通过将字符显示编码写入该字符显示RAM实现的。根据写入内容的不同,可分别在液晶屏上显示CGROM(中文字库)、HCGROM(ASCII码字库)及CGRAM(自定义字形)的内容。3种不同字符/字型的选择编码范围为:0000~0006H(其代码分别是0000、0002、0004、0006,共4个)显示自定义字型,02H~7FH显示半宽ASCII码字符,A1A0H~F7FFH显示8192种GB2312中文字库字形。字符显示RAM在液晶模块中的地址80H~9FH。字符显示的RAM的地址与32个字符显示区域有着一一对应的关系。数据与地址信息的格式是怎样的?指令8位并行连接时序图

MPU写资料到模块8位并行连接时序图

MPU从模块读出资料代码解读sbitRS=P1^3;sbitRW=P1^4;sbitEN=P1^5; sbitPSB=P1^6;sbitRET=P0^7;voidwrite12864com(ucharcom){ RS=0; RW=0; delay_50us(1); P2=com; EN=1; delay_50us(1); EN=0; delay_50us(1);}voidwrite12864dat(uchardat){ RS=1; RW=0; delay_50us(1); P2=dat; EN=1; delay_50us(1); EN=0; delay_50us(1);}voidinitinal12864(void){ PSB=1; RET=1; delay_50ms(2); write12864com(0x30); delay_50us(2); write12864com(0x30); delay_50us(2); write12864com(0x0c); delay_50us(1); write12864com(0x01); delay_50us(20); write12864com(0x06); delay_50us(2);

}voidPORT_Init(void){//P0.0-Unassigned,Open-Drain,Digital//P0.1-Unassigned,Open-Drain,Digital//P0.2-Unassigned,Open-Drain,Digital//P0.3-Unassigned,Open-Drain,Digital//P0.4-TX0(UART0),Push-Pull,Digital//P0.5-RX0(UART0),Push-Pull,Digital//P0.6-Unassigned,Open-Drain,Digital//P0.7-Unassigned,Open-Drain,Digital//P1.0-Unassigned,Open-Drain,Digital//P1.1-Skipped,Open-Drain,Analog//P1.2-Unassigned,Open-Drain,Digital//P1.3-Skipped,Push-Pull,Digital//P1.4-Skipped,Push-Pull,Digital//P1.5-Skipped,Push-Pull,Digital//P1.6-Skipped,Push-Pull,Digital//P1.7-Unassigned,Open-Drain,Digital//P2.0-Skipped,Push-Pull,Digital//P2.1-Skipped,Push-Pull,Digital//P2.2-Skipped,Push-Pull,Digital//P2.3-Skipped,Push-Pull,Digital//P2.4-Skipped,Push-Pull,Digital//P2.5-Skipped,Push-Pull,Digital//P2.6-Skipped,Push-Pull,Digital//P2.7-Skipped,Push-Pull,DigitalP1MDIN=0xFD;P0MDOUT=0x30;P1MDOUT=0x78;P2MDOUT=0xFF;P1SKIP=0x7A;P2SKIP=0xFF;XBR0=0x01;XBR1=0x40;}voiddelay_50us(uintt){ uchari=2; while(t--) while(i--);

}voiddelay_50ms(uintt){ uinti,j,k; for(i=t;i>0;i--) for(j=57;j>0;j--) for(k=100;k>0;k--);}●绘图RAM(GDRAM):图形显示,

GDRAM的坐标地址与资料排列顺序如下图:模块主要硬件构成说明先设垂直地址再设水平地址(连续写入两个字节的指令来完成垂直与水平的坐标地址)垂直地址范围AC5...AC0

水平地址范围AC3…AC0绘图RAM的地址计数器(AC)只会对水平地址(X轴)自动加一,当水平地址=0FH时会重新设为00H但并不会对垂直地址做进位自动加一,故当连续写入多笔资料时,程序需自行判断垂直地址是否需重新设定。图形显示原理

指令:指令表2:(RE=1:扩充指令)指令

指令码功能RSR/WD7D6D5D4D3D2D1D0

待命模式

0000000001进入待命模式,执行其他指令都棵终止待命模式卷动地址开关开启000000001SRSR=1:允许输入垂直卷动地址SR=0:允许输入IRAM和CGRAM地址反白选择00000001R1R0选择2行中的任一行作反白显示,并可决定反白与否。初始值R1R0=00,第一次设定为反白显示,再次设定变回正常睡眠模式0000001SLXXSL=0:进入睡眠模式SL=1:脱离睡眠模式扩充功能设定00001CLXREG0CL=0/1:4/8位数据RE=1:扩充指令操作RE=0:基本指令操作G=1/0:绘图开关设定绘图RAM地址0010AC60AC50AC4AC3AC3AC2AC2AC1AC1AC0AC0设定绘图RAM先设定垂直(列)地址AC6AC5…AC0再设定水平(行)地址AC3AC2AC1AC0将以上16位地址连续写入即可

应用说明用FYD12864-0402B显示模块时应注意以下几点:①欲在某一个位置显示中文字符时,应先设定显示字符位置,即先设定显示地址,再写入中文字符编码。②显示ASCII字符过程与显示中文字符过程相同。不过在显示连续字符时,只须设定一次显示地址,由模块自动对地址加1指向下一个字符位置,否则,显示的字符中将会有一个空ASCII字符位置。③当字符编码为2字节时,应先写入高位字节,再写入低位字节。④模块在接收指令前,向处理器必须先确认模块内部处于非忙状态,即读取BF标志时BF需为“0”,方可接受新的指令。如果在送出一个指令前不检查BF标志,则在前一个指令和这个指令中间必须延迟一段较长的时间,即等待前一个指令确定执行完成。指令执行的时间请参考指令表中的指令执行时间说明。⑤“RE”为基本指令集与扩充指令集的选择控制位。当变更“RE”后,以后的指令集将维持在最后的状态,除非再次变更“RE”位,否则使用相同指令集时,无需每次均重设“RE”位。思考一:如何在指定位置显示汉字?思考一:如何在指定位置显示汉字?思考二:如何画一根横向的线?思考二:如何画一根横向的线?voidline(void){uchari;

for(i=0;i<8;i++){wr_lcd(comm,0x36);wr_lcd(comm,y);wr_lcd(comm,x1+i);wr_lcd(comm,0x30);wr_lcd(datt,0x00);wr_lcd(datt,0xff);}

}思考三:如何画一根纵向的线?思考三:如何画一根纵向的线?voidline2(void){uchari;

for(i=0;i<32;i++){wr_lcd(comm,0x36);wr_lcd(comm,y+i);wr_lcd(comm,x1);wr_lcd(comm,0x30);wr_lcd(datt,0x01);wr_lcd(datt,0x00);}

for(i=0;i<32;i++){wr_lcd(comm,0x36);wr_lcd(comm,y+i);wr_lcd(comm,x2);wr_lcd(comm,0x30);wr_lcd(datt,0x01);wr_lcd(datt,0x00);}

}linev=INA0;

if(linev<32){ for(i=0;i<8;i++){wr_lcd(comm,0x34);wr_lcd(comm,y+0x1f-linev);wr_lcd(comm,x2+i); wr_lcd(comm,0x30);wr_lcd(datt,0xff);wr_lcd(datt,0xff);}}

elseif((linev>=32)&(linev<=64)){ for(i=0;i<8;i++){wr_lcd(comm,0x34);

温馨提示

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

评论

0/150

提交评论