《交通灯的控制》PPT课件.ppt

上传人:牧羊曲112 文档编号:5458337 上传时间:2023-07-09 格式:PPT 页数:122 大小:4.73MB
返回 下载 相关 举报
《交通灯的控制》PPT课件.ppt_第1页
第1页 / 共122页
《交通灯的控制》PPT课件.ppt_第2页
第2页 / 共122页
《交通灯的控制》PPT课件.ppt_第3页
第3页 / 共122页
《交通灯的控制》PPT课件.ppt_第4页
第4页 / 共122页
《交通灯的控制》PPT课件.ppt_第5页
第5页 / 共122页
点击查看更多>>
资源描述

《《交通灯的控制》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《交通灯的控制》PPT课件.ppt(122页珍藏版)》请在三一办公上搜索。

1、单片机应用技术,主讲:桂绍勇,项目一:交通灯控制系统,知 识 要 点,1.初步认识单片机,了解AVR系列单片机内部基本结构和工作原理;2.理解ATmega16单片机内部资源组成;3.理解输入检测、输出控制原理;4.理解LCD显示原理;5.掌握LED显示原理,SPI接口通讯原理。,技 能 目 标,1.能说出单片机的基本结构、工作原理、作用及应用场合;2.能利用单片机检测信号输入和控制信号输出;3.能独立使用软、硬件开发工具设计单片机控制系统;4.能进行简单项目应用的需求分析、方案设计与实施、项目评估等工作。,1.1 项目设计说明 1.2 子任务一:开关控制指示灯1.3 子任务二:交通灯控制1.4

2、 子任务三:LCD参数显示 1.5 子任务四:参数设置 1.6 子任务五:LED数码管显示1.7 项目设计与实现1.8 小结,目 录,1.1 项目设计说明,1.设计目的:掌握人机界面的应用方法。2.设计内容:利用单片机设计并实现公路十字路口交通灯的控制系统。,讨论:如何实现该项目?灯怎么点亮?怎么延时?怎么变灯?,CPU,1.1.1 计算机体系结构,一、冯诺依曼体系结构 也称 普林斯顿 结构。,1、冯诺依曼型计算机逻辑结构的三层含义:计算机包含:运算器、控制器、存储器、输入设备和输出设备5大基本部件;计算机内部采用二进制形式表示指令和数据;事先将编好的程序和数据存入存储器中,计算机工作时能够自

3、动高速地从存储器中提取指令并执行。,为何计算机中采用二进制?(1)二进制的0和1两个数码,在电子电路中很容易用电压的高低和脉冲的有无来表示实现;(2)二进制数的运算规律简单,易于电路实现;(3)逻辑判断方便,0和1正好与逻辑“假”和“真”对应,为计算机实现逻辑运算和程序中逻辑判断提供了便利条件。,2、运算器 执行部件。是进行信息加工、算术运算和逻辑运算的场所,核心是算术逻辑单元ALU(Arithmetic Logical Unit)。3、控制器 是计算机的指挥控制中心。控制和协调整机各部件有条不紊的自动工作。4、输入设备 将人熟悉的信息转换成机器内部能够识别的二进制信息。5、输出设备 将计算机

4、处理信息的结果转换成人或其它机器能够识别的信息形式。,6、存储器 是冯.诺依曼原理的核心,用于存放程序和数据的部件。,内存储器(主存):少,快;外存储器(辅存):多,慢;Cache(高速缓冲存储器):用于解决CPU与内存之间的速度不匹配;主存由若干各存储单元组成,每个单元可存放若干二进制信息(一般是字节的偶数倍)。全部存储单元统一编号,称为地址。(地址与存储单元一一对应,CPU按单元地址来访问每一存储单元。)指令数码化以后,就可以和数据一样放入存储器,存储器的任何位置既可以存放数据也可以存放指令,不过一般将指令和数据分开存放。,二、哈佛结构 哈佛结构是一种将程序指令存储和数据存储分开的存储器结

5、构。,三、指令系统 一台计算机的全部机器指令的集合构成了指令系统。1、CISC(复杂指令集)2、RISC(精简指令集)Intel的Pentium系列和AMD的K6系列都经过RISC改良,以RISC为核心,通过译码器转换为对外CISC结构。,1.1.2 单片机及其发展,一、单片机 将运算器、控制器、存储器、输入设备以及输出设备集成在一颗芯片(IC)上的半导体器件。,将许多原来分离的部件都集中在一颗芯片上。,二、单片机与单片机系统,三、单片机的开发语言,C、C+、Basic,ASM、MASM,四、单片机的发展 1974年,美国Fairchild公司研制出世界上第一台单片机F8。第一代第四代单片机。

6、,1.1.3 单片机的特点与应用,一、单片机的特点 控制系统在线应用 软硬件结合 应用现场环境恶劣二、单片机的应用领域 自动控制(如汽车、数控装置)智能仪表 数据采集(电表)计算机外设(打印机、交换机)民用电器(MP3、洗衣机)军事装置,课外作业一:1.通过互联网、书籍等手段,了解并列举至少三家单片机厂家以及其最具代表性单片机型号;2.通过互联网、书籍等手段,了解至少三种单片机应用的场合及应用实例。,1.1.4 AVR系列单片机,一、AVR系列单片机简介 AVR单片机是美国Atmel公司1997年推出的精简指令集(RISC)单片机。AVR(Advance RISC)。二、AVR系列的系统结构,

7、1.中央处理器(CPU)运算器 控制器,2、数据存储器 RAM(AVR中用的是SRAM)、EEPROM 二者的含义、作用、及之间的区别。3、程序存储器 Flash(可擦写1000次以上)4、定时/计数器 T/C0、T/C1、T/C25、并行I/O,6、串行I/O UART(异步串行)、SPI(主/从同步收/发)7、中断控制系统 内部中断和外部中断 中断系统的作用8、时钟系统9、总线 数据总线(8bit)、指令总线(16bit),三、AVR系列单片机的选型,ATmega16是一款RISC低功耗CMOS的8位高性能单片机。接近1MIPS/MHz的性能。CMOS(Complementary Meta

8、l Oxide Semiconductor 互补金属氧化物半导体)16位指令总线,8位数据总线MIPS(每秒百万条指令),1.1.5 ATmega16芯片详解,一、ATmega16芯片外观,mil:千分之一寸,二、ATmega16内部结构,三、ATmega16芯片封装与引脚功能,ATmega16有44脚的TQFP封装和40脚的PDIP封装两种。,教材P23页。,未完待续。,1.2 子任务一 开关控制指示灯,任务要求:利用ATmega16/32单片机来实现开关对LED点亮与熄灭的控制功能。,推荐电路:,1.2.1 并行接口概述,单片机控制外部设备时,常常向外部设备输出控制命令(输出),或检测外部

9、设备工作状态(输入)。此时,单片机的I/O端口起到重要的作用。串行通讯:信息的各bit数据被逐位通过一条信道(引脚)按顺序传送的通讯方式。并行通讯:各bit数据按照字长通过多条信道同时传送的通讯方式。,一、并行输入工作原理 并行输入接口某一位的简化电路如图所示:,010111,通过RP控制数据的读入:1、RP0时,三态门为高阻态,数据总线无输入;2、RP1时,三态门输出等于输入,数据从引脚被读入数据总线。,二、并行输出工作原理并行输出接口某一位的简化电路如图4-2所示:,通过WP控制数据的输出:1、WP0时,数据锁存器Q不受D影响,输出无效;2、WP1时,输出端Q等于输入端D,数据输出到引脚。

10、,上拉管(电阻)的作用:1、稳定输出;2、增强驱动能力;3、抗干扰;,三、并行输入/出接口工作原理 并行输入/出某一位的简化接口电路如图所示:,图3:I/O接口等效电路,三态门1,三态门2,缓冲驱动器,方向锁存器,引脚,上拉管,三态门3,缓冲器,数据总线,数据锁存器,输入电路(等效于图1),输出电路(等效于图2),控制电路,Atmega16单片机有A、B、C、D四个8位并行I/O接口。一、I/O控制寄存器(宏)当A、B、C、D接口用于数据I/O口时,通过DDRx、PORTx和PINx三个宏控制接口的输入与输出(其中x为A、B、C或D)。,注:PINx为只读。,其中:DDRx为接口数据方向寄存器

11、,用来定义通讯方向(输入/输出);PORTx为接口数据寄存器,用来输出数据;PINx用来读取接口数据(只读)。,1.2.2 ATmega16并行I/O资源,1.DDRx 当DDRx的某位为0时,送到方向锁存器的输出端为0,相应位(引脚)只能作输入;当DDRx的某位为1时,送到方向锁存器的输出端为1,相应位(引脚)只能作输出。2.PORTx 端口作输出时:PORTx的某位为0时,表示初始电平为低电平,反之为高电平;端口作输入时:PORTx的某位为0时,表示不启用内部上拉电阻,反之为启用。3.PINx 当DDRx的某位为0时,表示输入为低电平状态,反之为高电平状态。,如程序段:char a;a=0

12、 x11;/00010001DDRA=0 xFF;/PA口的8脚都作输出PORTA=a;/将a的值通过PA口输出又如:char a;DDRC=0 x0;/PC口作为输入PORTC=0 x0F;/低4位使用内部上拉电阻,高4位不使用a=PINC;/读取C口的值到变量a,二、端口的控制,1.以端口为单位,如程序段:DDRA.0=0;/将PA口第0脚设置为输入DDRC.2=1;/将PC口第2脚都作输出 PORTC.2=0;/PC口第2脚输出低电平 PORTA.0=1;/PA口第0脚使用内部上拉电阻又如:bit a=1,b=0;DDRB.4=b;/PC口的第4脚作为输入PORTC.2=b;/从PC口第

13、2脚输出变量b的值b=PINA.0;/读取PA口第0脚的值到变量b,2.以引脚为单位,bit:CodeVisionAVR C中专用的位变量,三、位运算(补充)位运算符有:&、|、1、&(按位“与”)运算规则:全1为1,有0则0。1 0 0 1 0 0 0 1&0 1 1 1 1 0 0 10 0 0 1 0 0 0 1 如:a&b、c&0 x0F、0 x0F&0 xF0,2、|(按位“或”)运算规则:有1为1,全0则0。1 0 0 1 0 0 0 1|0 1 0 1 0 1 0 11 1 0 1 0 1 0 1 如:a|b、c|0 x0F、0 x0F|0 xF03、(按位“反”)1 0 0 1

14、 0 0 0 10 1 1 0 1 1 1 0 如:a、b、0 xFF、0 xF0,4、(按位“异或”)运算规则:相同为0,不同为1。1 0 0 1 0 0 0 10 1 1 1 1 0 0 11 1 1 0 1 0 0 0 如:ab、c0 x0F、0 x0F0 xF05、(“左移”)1 0 1 1 1 1 0 0 1 1 1 1 1 0 0 1 0低位补0 如:a1、b2、0 x0F3,6、(“右移”)11 0 0 1 0 0 0 1 1 1 0 0 1 0 0 0正数:高位补0负数:高位补1 如:a1、b3、0 xF04,一、单片机系统开发调试过程,1.2.3 系统开发与调试过程,二、软件

15、开发调试过程 相应的开发工具很多,如:ATmanAVR、CodeVisionAVR C、AVR C、和ICCAVR等软件,本课程以CodeVisionAVR C作为开发调试工具。单片机软件开发工作流程如下图:,1.2.4 配套实验装置,电源插座,电源开关,88点阵显示器,发光二极管E1E8,开关K1K8,1K8电阻引脚引出接口,7219控制引出接口,K1K8开关引出接口,E1E8发光二极管引脚引出接口,44键盘引脚引出接口,44矩阵键盘J04J07J14J17J24J27J34J37,LCD显示器控制引脚引出接口,8位LED位控引脚引出接口,8位LED段控引脚引出接口,7219位控引脚引出接口

16、,7219段控引脚引出接口,8位LED显示器,88点阵显示器行控制引脚引出接口,88点阵显示器列控制引脚引出接口,直流稳压电源,LCD显示器,PD口引脚引出接口,PB口引脚引出接口,PC口引脚引出接口,PA口引脚引出接口,ATmega16,程序下载接口,异步串行UART接口,系统复位按钮,MAX7219芯片,液晶显示背光调节电阻,1.2.5 CodeVisionAVR C集成开发环境,一、CodevisionAVR C IDE CodevisionAVR C集成开发环境(Integrated Development Environment,简称IDE),二、工程的概念 1、C源程序文件 原来在

17、Turbo C 2.0环境下,可以针对某一单一的C源程序文件开发程序;单现在使用CodevisionAVR C开发环境不再是这样了。2、C源程序工程 CodevisionAVR中的工程(也称“项目”)是一组C源程序文件和编译器设置的集合,其扩展名为*.prj。三、打开工程文件 可以选择File-Open菜单命令或直接点击工具栏上的 按钮来打开某一已存在的工程。工程被打开后,可以在“导航栏”中浏览该工程的组成,如图。IDE主窗口中会显示出本工程所处的绝对路径。,四、打开文件 可以用鼠标双击导航栏中的某一个文件以打开进行编辑。可以选择File|Open菜单命令或直接点击工具栏上的 按钮来打开任一其

18、它文件(在打开对话框的“文件类型”中进行选择)。五、关闭工程 可以选择File|Close Project菜单命令关闭已打开的工程。六、关闭文件 当某一文件的窗口处于激活状态时,可以选择File|Close菜单命令关闭该文件,或直接关闭该窗口。,七、新建文件或项目 可以选择File|New菜单命令或直接点击工具栏上的 按钮新建文件或项目。,选择“Source”可新建一文件,选择“Project”可新建一工程。选择新建工程后,如果在不采用CodeWizardAVR向导进行工程新建工作,则只会生成一空工程框架。如果采用CodeWizardAVR向导生成工程,则随后会出现工程配置对话框。,八、向工程

19、中添加或删除文件 选择Project|Configure菜单项,可以调出工程设置对话框。可以在工程设置对话框中,点击“Add”按钮向当前工程中加入文件;也可以先选择左边工程文件列表中的某一文件后,点击“Remove”按钮将此文件从工程中移除。,九、CodeWizardAVR代码生成器 在上述新建工程操作时,如果前述向导选择对话框中选择采用CodeWizardAVR方式,则会弹出下图对话框:,在对话框中,可以对芯片的类型、工作频率、I/O端口、外部中断等参数进行设置,之后的代码会依据相应设置自动生成。,1.Chip选项 在Chip选项栏中,可以对芯片型号、工作晶振频率等参数进行设置。2.Port

20、s选项 在Ports选项栏中,可以对ATmega16的A、B、C、D4个I/O端口进行设置。,PORTA=0 xCA;DDRA=0 x0F;,问题:如果按图中那样设置,则会自动生成(初始化)语句是什么?,3.代码自动生成 在上述CodeWizardAVR代码生成器对话框中,将各项参数设置完毕后,可以选择File|Generate,Save and Exit菜单项,自动生成源程序文件和工程了。在生成过程中,文件保存对话框会提示你输入3个将要被保存的文件的文件名,分别为C源程序文件名、工程文件名、代码向导文件名,它们的扩展名对应分别为:*.C、*.prj、*.cwp。,小窍门!,要通过工程得到单片

21、机可以运行的可执行文件,需要经历以下步骤:一、编译 可以选择Project|Compile菜单命令,或F9键或点击工具栏中的 按钮,编译器会马上对程序进行编译。二、可执行文件的生成 可以选择Project|Make菜单命令,或ShiftF9键或点击工具栏中的 按钮,生成项目的可执行文件(*.hex)。,1.2.6 项目的编译与生成,用CodeVisionAVR C生成了可执行文件*.hex后,必须将程序写入(固化)在单片机中才能运行。一、下载工具 典型下载工具是广州双龙公司的“SLISP”。,1.2.7 程序下载与运行,二、程序的下载 选择好PC端下载接口、下载速度、目标芯片型号后,可以点击“

22、Flash存储器”栏的“文件打开”按钮选择欲写入的HEX文件;之后又将弹出如图“空闲存储器填充”对话框:选择“填充FF”,确定。最后,在保证PC机的相应端口与目标系统连线完好,且目标系统处于工作状态的前提下,点击“编程”按钮,即可将可执行文件下载(固化)到芯片中。有关“编程选项”、“配置熔丝”等设置将在后续章节中祥述。,1.2.8 Proteus仿真平台,Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。,一、软件界面,菜单栏,工具栏,预览窗,原

23、理图编辑区,模型选择工具栏,仿真调试,当前元件列表,二、编辑原理图,1.放置元件2.连线3.编辑元件属性,仿真程序文件,时钟频率,三、仿真,运行,单步运行,暂停,停止,一、在Proteus中绘制原理图,二、利用CodeVisionAVR C编写程序,#include bit k;main()DDRC.3=0;PORTC.3=1;DDRD.3=1;/*无限循环检测与输出*/while(1)k=PINC.3;PORTD.3=k;/将k变量的内容取反后,送给PD3口,问题:1.第一行是什么?2.main函数中前三句是什么意思?3.为什么要进行无限循环?,包含单片机对应的头文件,三、下载程序,观察、分

24、析运行结果,四、拓展,1.实现正逻辑的开关控制功能;2.将开关接到PB6,指示灯接到PA3,实现功能。,五、填写教学检查表,1.3 子任务二 交通灯控制,任务要求:用LED模拟实现十字路口交通灯控制系统。控制方式:(1)东西方向:红灯65秒,绿灯40秒,黄灯5秒;(2)南北方向:红灯45秒,绿灯60秒,黄灯5秒。,讨论:子任务一的方法能借鉴吗?怎么延时?怎么控制变灯?,一、Proteus原理图,1.3.1 开关组控制发光管组,共阳极,二、编写程序,#include void main()DDRC=0 x00;/定义PC口为输入口 PORTC=0 x00;/不使用内部上拉电阻 DDRD=0 xf

25、f;/定义PD口为输出口 While(1)PORTD=PINC;/无限循环,把输入送到输出,问题:这段程序的关键在哪里?怎么解释?,三、仿真调试,一、Proteus原理图,1.3.2 延时控制发光管,二、延时功能的实现,CodeVisionAVR C中,通过两个函数实现延时功能:1.void delay_ms(unsigned int n);2.void delay_us(unsigned int n);,注意:在程序开始的位置,必须包含:#include,问题:谁来说说这段程序的含义?,三、编写程序实现功能,#include#include void main()DDRC.0=1;While

26、(1)PORTC.0=PORTC.0;delay_ms(1000);,一、在Proteus中绘制原理图,控制逻辑:,二、利用CodeVisionAVR C编写程序,#include#include main()DDRC=0XFF;/定义PC口为输出口 while(1)PORTC=0XEE;/东西方向红灯亮,南北方向绿灯亮 delay_ms(60000);/延时60秒 PORTC=0XDE;/东西方向红灯亮,南北方向黄灯亮 delay_ms(5000);/延时5秒 PORTC=0XF5;/东西方向绿灯亮,南北方向红灯亮 delay_ms(40000);/延时40秒 PORTC=0XF3;/东西方

27、向黄灯亮,南北方向红灯亮 delay_ms(5000);/延时5秒,三、下载程序,观察、分析运行结果,四、拓展,1.改变延时时间实现功能(比如最长延时90秒);2.彩灯循环控制。,五、填写教学检查表,1.4 子任务三 LCD参数显示,任务要求:在单色LCD液晶显示器上显示文字。,讨论:LCD是什么?LCD有哪些种类?怎么显示?,一、LCD种类,1.4.1 LCD介绍,按颜色:单色、彩色 按成像模式:字符、点阵 按分辨率:VGA、SVGA、XGA、WXGA、WUXGA,二、字符型LCD的应用,可以有8位和4位两种数据操作模式。采用4位模式时,只需用到模块的D4D7引脚。,1.4.2 字符型LCD

28、应用,一、Proteus仿真环境下的1602液晶模块,2.CodeVisionAVR C的应用,(1)lcd_init初始化函数,作用:初始化液晶模块。函数形参是需设定的最大显示列数。,(2)lcd_clear清屏函数,作用:清除液晶屏显示。,(3)lcd_gotoxy光标定位函数,作用:将光标定位到形参(x,y)指定的位置。调用lcd_init或lcd_clear函数后,默认光标位置为(0,0)。,(4)lcd_putchar显示字符函数,作用:在当前光标定位显示形参指定的字符(ASCII)。,调用此函数后,光标自动向后移动一个字符位置。,(5)lcd_puts字符串显示函数,作用:在当前光

29、标定位显示形参指定的字符串(RAM)。调用此函数后,光标自动向后移动字符串长度个位置。,(6)lcd_putsf字符串显示函数,作用:在当前光标定位显示形参指定的字符串(flash)。调用此函数后,光标自动向后移动字符串长度个位置。,此两函数区别:1.实参存储位置不同;2.常量作实参时,只能用lcd_putsf。,一、在Proteus中绘制原理图,二、利用CodeVisionAVR C编写程序,#include#include/定义变量_lcd_port 为PC口,因PORTC的口地址是0X15#asm.equ _lcd_port=0 x15#endasmchar*sss=”AVR”;/定义R

30、AM中的字符串变量char flash*aaa=”16”;/定义flash中的字符串变量void main(void)lcd_init(16);/初始化LCD为16列2行 lcd_gotoxy(2,0);/定位在0行2列 lcd_putsf(“Hello”);/显示字符串 lcd_puts(sss);/显示RAM中的字符串变量 lcd_putsf(aaa);/显示flash中的字符串变量 while(1);,一、在Proteus中绘制原理图,二、利用CodeVisionAVR C编写程序,#include#include/定义LCD连接到PC口/LCD可连到任何一个口,PA口为0X1B,PB口

31、为0X18,PC口为0X15,PD口为0X12#asm.equ _lcd_port=0 x15#endasmvoid XianShi_uint(unsigned int shu)char j,lcd5;/申请一个有6个元素的字符型数组和两个字符型循环变量 lcd0=shu/10000+0 x30;/将数的万位转变为ASCII码存放在lcd0 lcd1=shu/1000%10+0 x30;/将数的千位转变为ASCII码存放在lcd1 lcd2=shu/100%10+0 x30;/将数的百位转变为ASCII码存放在lcd2 lcd3=shu/10%10+0 x30;/将数的十位转变为ASCII码存

32、放在lcd3 lcd4=shu%10+0 x30;/将数的个位转变为ASCII码存放在lcd4 for(j=0;j5;j+)/从第一个数开始送显示 lcd_putchar(lcdj);main()lcd_init(16);xianshi_uint(123);while(1);,由向导生成,三、下载程序,观察、分析运行结果,四、拓展,1.改变成PD端口驱动显示LCD;2.编写一个通用的,在LCD上显示数据的函数。,五、填写教学检查表,1.5 子任务四 参数设置技术,任务要求:通过键盘输入某个参数,并将其保存在单片机的EEPROM中。,讨论:“键盘”是什么?怎么读取按键值?怎么存储EEPROM?,

33、一、单键处理,1.5.1 按键处理,抖动时间一般为510毫秒。如果每间隔20毫秒检测一次按键的状态,即可消除抖动影响。,char j;DDRD=0 xFF;/定义PD口为输出口DDRB=2;/00000010PORTB=1;/00000001j=PINB;/j存放PB口上次的值while(1)if(PINB.0=0)/延时20毫秒,在Proteus仿真环境和实验装置上实现。,问题:这是对按键动作的哪一个阶段进行判断?,二、矩阵键盘,行,列,此时如果无键按下,PINB将为0 xF0,逐列进行判断:if(PINB.4=0)else if(PINB.5=0)else if(PINB.6=0)else

34、 if(PINB.7=0),PORTB=0 xFD;,DDRB=0 x0F;PORTB=0 xF0;,PORTB=0 xFE;,再进行逐列判断:if(PINB.4=0)else if(PINB.5=0)else if(PINB.6=0)else if(PINB.7=0),unsigned char JianZhi()unsigned char k;DDRB=0 x0F;/设置PB口低4位为输出,高4位为输入 PORTB=0 xF0;/PB口高4位接内部上拉电阻,低4位输出0 delay_us(10);/等待接口变化稳定 if(PINB=0 xF0)return 0 xFF;/如果高4位输入为全

35、高,表示无键按下,返回0 xFF for(k=0;k4;k+)PORTB=(1k);/将1左移k位后取反,使PB口的K行输出0 delay_us(10);if(PINB.4=0)return(k*4+0);/检查k行0列的键 else if(PINB.5=0)return(k*4+1);/检查k行1列的键 else if(PINB.6=0)return(k*4+2);/检查k行2列的键 else if(PINB.7=0)return(k*4+3);/检查k行3列的键,#define uchar unsigned char#define uint unsigned int,一、无符号整型参数设置

36、,1.5.2 参数设置,int x=0;,按数字键:x=x*10+键值,按退格键:x=x/10,按确定键:返回x的值,int SheZhi(uint z)uchar j,jian;/j作循环控制变量,jian存放上次键值 uint x;/x用来存放修改参数的绝对值,y用来存放修改的参数 lcd_clear();XianShi_uint(z);delay_ms(1000);x=0;j=1;jian=0 xff;/假定检查键之前,无键按下 while(j)/j=1时循环,j=0时退出循环 delay_ms(20);/去键抖动 if(jian=0 xff)/数字键处理,else if(JianZhi

37、()=12)x=x/10;/删除键处理 else if(JianZhi()=14)j=0;/直接退出键处理,返回z变量 else if(JianZhi()=15)j=0;z=x;/确定键处理,将修改值y返回 jian=JianZhi();/保存当前的键值,以便下次比较 lcd_clear();/清除屏幕显示 Lcd_uint(x);/显示修改过的参数/设置结束 return z;,一、在Proteus中绘制原理图,二、利用CodeVisionAVR C编写程序,三、下载程序,观察、分析运行结果,eeprom uint dong=10,nan=12;,四、填写教学检查表,1.6 子任务五 LED

38、数码管显示技术,任务要求:通过7219控制七段数码管显示东、南方向的时间。,讨论:7219是什么?什么是7段数码管?怎么显示?,字型表,P37页。,a,b,c,d,e,f,g,dp,共阴极,数据端,公共端,0,1,0,0,1,1,1,1,思考:共阳极呢?,1.6.1 认识七段数码管,4位数码管,#include#include void main(void)DDRD=0XFF;DDRC=0XFF;while(1)PORTD=0Xff;/关显示 PORTC=0Xff;/送8.的字型码 PORTD=0XfE;/第一位显示 delay_ms(1);PORTD=0Xff;/关显示 PORTC=0X06

39、;/送1的字型码 PORTD=0Xfd;/第二位显示 delay_ms(1);PORTD=0Xff;/关显示 PORTC=0X5B;/送2的字型码 PORTD=0Xfb;/第三位显示 delay_ms(1);PORTD=0Xff;/关显示 PORTC=0X4f;/送3的字型码 PORTD=0Xf7;/第四位显示 delay_ms(1);,在Proteus仿真环境和实验装置上实现。,拓展:1.加长间隔延时会怎样?2.显示12.34。,弊端:1.软件动态扫描;2.浪费资源。,1.6.2 认识MAX7219,MAX7219,教材:P39页。,特点:1.硬件动态扫描;2.可控制8位数码管;3.SPI(

40、Serial Peripheral Interface-串行外设接口)通讯接口。,MAX7219的SPI控制协议:,(1)位显示命令(命令字:0 x010 x08)如:,(2)译码方式命令(命令字:0 x09)如:,小数点不参与译码。,结合命令字0 x010 x08:1.当命令值的D7位为1时,小数点(DP)点亮;2.当命令值的D7位为0时,小数点(DP)不亮。,如:,(3)亮度调节命令(命令字:0 x0A)如:,命令值的取值范围为:0 x000 x0F。0最暗,0 x0F最亮。,(4)动态扫描位数命令(命令字:0 x0B)如:,命令值的取值范围为:0 x000 x07,对应设定18位。,(5

41、)停机/工作命令(命令字:0 x0C),命令值的D0位为0表示MAX7219停机,D0=1时表示正常工作。,如:,(6)显示测试命令(命令字:0 x0F),命令值的D0位为0表示按设定模式正常工作,D0=1时MAX7219将按最大亮度接通显示。,1.6.3 单片机的SPI应用,一、SPI通讯原理,01011101 00111101,SPI Bus Master Input/Slave OutputSPI总线主机输入/从机输出,ATmega16中:MISO-PB6 MOSI-PB5 SCK-PB7-PB4,Max7219中:MISO-DIN MOSI SCK-CLK-LOAD,二、ATmega1

42、6与Max7219的SPI通讯应用,三、ATmega16中的SPI控制寄存器,SPE,DORD,MSTR,CPOL,CPHA,SPR1,SPR0,SPIE,SPCR,SPIE:SPI中断使能,1、SPCRSPI控制寄存器,SPE:SPI功能使能,DORD:数据次序 1:低位优先 0:高位优先,MSTR:主/从选择 1:主SPI 0:从SPI,CPOL:同步信号(SCK)极性,CPHA:数据采样相位(时刻)1:SCK结束沿采样 0:SCK起始沿采样,SPR1、SPR0:SCK速率选择 P43页,表117 Fosc系统时钟频率。,WCOL,-,-,-,-,-,SPI2X,SPIF,SPSR,SPI

43、F:SPI中断标志 串行发送结束后,SPIF 将被置位(1)。,2、SPSRSPI状态寄存器,WCOL:写冲突标志位,SPI2X:SPI倍率,LSB,MSB,3、SPDRSPI数据寄存器,SPI通讯的数据将从SPDR中读/写。,SPDR,四、自定义控制函数,#define uchar unsigned charvoid spi_xie(uchar i,uchar j)/PB.7(SCK)、PB.5(MOSI)、PB.4(/SS)为输出,PB.6(MISO)为输入,DDRB.7=1;DDRB.6=0;DDRB.5=1;DDRB.4=1;SPCR=0 x5e;/SPI设置:SPI使能、禁止中断,数

44、据传送高位在前,/数据传送频率为系统频率的64分频即62.5KHz PORTB.4=0;/load=0,选通7219 SPDR=i;/传送数据i while(SPSR.7=0);/等待SPI发送完 SPDR=j;/传送数据j while(SPSR.7=0);/等待SPI发送完 PORTB.4=1;/load=1,数据锁存于7219、结束对7219的传送,1、SPI写数据函数,void spi_7219c()spi_xie(0 x0B,0 x07);/显示8位 spi_xie(0 x0A,0 x09);/亮度调节 spi_xie(0 x09,0 xFF);/每位BCD输入 spi_xie(0 x

45、0C,0 x01);/工作状态 spi_xie(0 x0F,0 x00);/非测试,2、Max7219初始化函数,一、在Proteus中绘制原理图,教材P41页,图1-29。,二、利用CodeVisionAVR C编写程序,void xianshi_2uchar(uchar m,uchar n)spi_xie(1,0 x0f);/关闭此位 spi_xie(2,m/100);/显示m百位上的数字 spi_xie(3,m/10%10);/显示m十位上的数字 spi_xie(4,m%10);/显示m个位上的数字 spi_xie(5,0 x0f);/关闭此位 spi_xie(6,n/100);/显示n

46、百位上的数字 spi_xie(7,n/10%10);/显示n十位上的数字 spi_xie(8,n%10)/显示n个位上的数字,三、下载程序,观察、分析运行结果,一、点阵LED模块,二、汉字字模,点阵的列采用共阴极时,可以在行信号上发送数据。二进制某位为1时,对应二极管点亮,反之不亮。这样,若干列各自的显示数据构成一个汉字的“字模”。,上图“甲”字的字模为:0 x00、0 x00、0 x00、0 xF8、0 xA8、0 xFF、0 xA8和0 xF8。,三、利用CodeVisionAVR C编写程序,四、下载程序,观察、分析运行结果,以小组为单位,讨论理解并优化程序。,五、填写教学检查表,1.7 项目设计与实现,以小组为单位,对照教材P4855页,共同完成项目。,课外作业二:1.教材P44页习题;2.上交本组成员五个子任务的小组评分成绩。,1.8 小结,1.ATmega16内部结构,引脚功能;2.DDRx、PORTx和PINx的应用;3.输入/输出控制应用;4.字符型LCD显示应用;5.键盘扫描应用;6.Max7219、7段数码管以及点阵显示应用;7.项目总体实现的理解和应用。,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号