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

上传人:re****.1 文档编号:583994310 上传时间:2024-08-30 格式:PPT 页数:122 大小:7.15MB
返回 下载 相关 举报
《交通灯的控制》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.1.初步认识单片机,了解初步认识单片机,了解AVRAVR系列单片机内部基本系列单片机内部基本结构结构和和工作原理工作原理;2.2.理解理解ATmega16ATmega16单片机单片机内部资源内部资源组成;组成;3.3.理解理解输入输入检测、检测、输出输出控制原理;控制原理;4.4.理解理解LCDLCD显示原理;显示原理;5.5.掌握掌握LEDLED显示原理,显示原理,SPISPI接口通讯原理。接口通讯原理。技技 能能 目目 标标1.1.能说出单片机的基本结构、工作原理、作用及应能说出单片机的基本结构、工作原理

2、、作用及应用场合;用场合;2.2.能利用单片机检测能利用单片机检测信号输入信号输入和控制和控制信号输出信号输出;3.3.能独立使用能独立使用软、硬件开发工具软、硬件开发工具设计单片机控制系设计单片机控制系统;统;4.4.能进行简单项目应用的需求分析、方案设计与实能进行简单项目应用的需求分析、方案设计与实施、项目评估等工作。施、项目评估等工作。1.1 1.1 项目设计说明项目设计说明 1.2 1.2 子任务一:开关控制指示灯子任务一:开关控制指示灯1.3 1.3 子任务二:交通灯控制子任务二:交通灯控制1.4 1.4 子任务三:子任务三:LCDLCD参数显示参数显示 1.5 1.5 子任务四:参

3、数设置子任务四:参数设置 1.6 1.6 子任务五:子任务五:LEDLED数码管显示数码管显示1.7 1.7 项目设计与实现项目设计与实现1.8 1.8 小结小结目目 录录1.11.1 项目设计说明项目设计说明1. 1. 设计目的:设计目的: 掌握人机界面的应用方法。掌握人机界面的应用方法。2. 2. 设计内容:设计内容: 利用单片机设计并实现公路十字路口交利用单片机设计并实现公路十字路口交通灯的控制系统。通灯的控制系统。讨论:讨论:讨论:讨论:如何实现该项目?如何实现该项目?灯怎么点亮?灯怎么点亮?怎么延时?怎么延时?怎么变灯?怎么变灯? CPU知知识识 初识单片机初识单片机1.1.1 1.

4、1.1 计算机体系结构计算机体系结构一、一、冯诺依曼依曼体系体系结构构 也称也称 普林斯普林斯顿 结构。构。控制器控制器输入设备输入设备存储器存储器输出设备输出设备运算器运算器1 1、冯诺依曼型依曼型计算机算机逻辑结构的三构的三层含含义:计算机包含:算机包含:运算器运算器、控制器控制器、存存储器器、输入入设备和和输出出设备5 5大基本部件;大基本部件;计算机内部采用二算机内部采用二进制形式表示指令和数据;制形式表示指令和数据;事先将事先将编好的程序和数据存入存好的程序和数据存入存储器中,器中,计算机工作算机工作时能能够自自动高速地从存高速地从存储器中提取指令并器中提取指令并执行。行。 为何计算

5、机中采用二进制?为何计算机中采用二进制?(1 1)二进制的)二进制的0 0和和1 1两个数码,两个数码,在电子电路中很容易在电子电路中很容易用电压的高低和脉冲用电压的高低和脉冲的有无来表示的有无来表示实现实现;(2 2)二进制数的运算规律简单二进制数的运算规律简单,易于电路实现;,易于电路实现;(3 3)逻辑判断方便逻辑判断方便,0 0和和1 1正好与逻辑正好与逻辑“假假”和和“真真”对应,对应,为计算机实现逻辑运算和程序中逻辑判断提供了便利条件。为计算机实现逻辑运算和程序中逻辑判断提供了便利条件。2 2、运算器、运算器 执行部件。是进行信息加工、算术运算和逻辑运算的场执行部件。是进行信息加工

6、、算术运算和逻辑运算的场所,核心是算术逻辑单元所,核心是算术逻辑单元ALUALU(Arithmetic Logical UnitArithmetic Logical Unit)。)。3 3、控制器、控制器 是计算机的指挥控制中心。控制和协调整机各部件有条是计算机的指挥控制中心。控制和协调整机各部件有条不紊的自动工作。不紊的自动工作。4 4、输入设备、输入设备 将人熟悉的信息转换成机器内部能够识别的二进制信息。将人熟悉的信息转换成机器内部能够识别的二进制信息。5 5、输出设备、输出设备 将计算机处理信息的结果转换成人或其它机器能够识别将计算机处理信息的结果转换成人或其它机器能够识别的信息形式。的

7、信息形式。6 6、存储器、存储器 是冯是冯. .诺依曼原理的核心,用于存放程序和数据的部件。诺依曼原理的核心,用于存放程序和数据的部件。 中央处理器中央处理器高速缓冲存储器高速缓冲存储器主存储器主存储器外存储器外存储器内存储器内存储器(主存):少,快;(主存):少,快;外存储器外存储器(辅存):多,慢;(辅存):多,慢;CacheCache(高速缓冲存储器):用于解决(高速缓冲存储器):用于解决CPUCPU与内存之间的速度不匹配;与内存之间的速度不匹配;主存由若干各存储单元组成,每个单元可存放若干二进制信息(一般主存由若干各存储单元组成,每个单元可存放若干二进制信息(一般是字节的偶数倍)。全部

8、存储单元统一编号,称为是字节的偶数倍)。全部存储单元统一编号,称为地址地址。(地址与存储。(地址与存储单元一一对应,单元一一对应,CPUCPU按单元地址来访问每一存储单元。)按单元地址来访问每一存储单元。)指令数码化以后,就可以和数据一样放入存储器,存储器的任何位置指令数码化以后,就可以和数据一样放入存储器,存储器的任何位置既可以存放数据也可以存放指令,不过一般将既可以存放数据也可以存放指令,不过一般将指令和数据分开存放指令和数据分开存放。二、哈佛结构二、哈佛结构 哈佛结构是一种将程序指令存储和数据存储哈佛结构是一种将程序指令存储和数据存储分开分开的存的存储器结构。储器结构。三、指令系统三、指

9、令系统 一台计算机的全部机器指令的集合构成了指令系统。一台计算机的全部机器指令的集合构成了指令系统。 1 1、CISCCISC(复杂指令集复杂指令集) 2 2、RISCRISC(精简指令集精简指令集) IntelIntel的的PentiumPentium系列和系列和AMDAMD的的K6K6系列都经过系列都经过RISCRISC改良,改良,以以RISCRISC为核心,通过译码器转换为对外为核心,通过译码器转换为对外CISCCISC结构。结构。1.1.2 1.1.2 单片机及其发展单片机及其发展一、一、单片机片机 将运算器、控制器、存将运算器、控制器、存储器、器、输入入设备以及以及输出出设备集成在一

10、集成在一颗芯片(芯片(ICIC)上的半)上的半导体器件。体器件。 将许多原来分离的部件都将许多原来分离的部件都集中集中在一颗芯片上。在一颗芯片上。二、单片机与单片机系统二、单片机与单片机系统单片机系统单单片片机机(芯片)三、单片机的开发语言三、单片机的开发语言高级语言高级语言汇编语言汇编语言机器语言机器语言高高低低C、C+、BasicASM、MASM四、单片机的发展四、单片机的发展 19741974年,美国年,美国FairchildFairchild公司研制出世界上第一台单片机公司研制出世界上第一台单片机F8F8。 第一代第四代单片机。第一代第四代单片机。 1.1.3 1.1.3 单片机的特点

11、与应用单片机的特点与应用一、单片机的特点一、单片机的特点 控制系统在线应用控制系统在线应用 软硬件结合软硬件结合 应用现场环境恶劣应用现场环境恶劣二、单片机的应用领域二、单片机的应用领域 自动控制自动控制 (如汽车、数控装置)(如汽车、数控装置) 智能仪表智能仪表 数据采集数据采集 (电表)(电表) 计算机外设计算机外设 (打印机、交换机)(打印机、交换机) 民用电器民用电器 (MP3MP3、洗衣机)、洗衣机) 军事装置军事装置 课外作业一:课外作业一: 1.1.通过互联网、书籍等手段,了解并列举至少通过互联网、书籍等手段,了解并列举至少三家单片机厂家以及其最具代表性单片机型号;三家单片机厂家

12、以及其最具代表性单片机型号; 2.2.通过互联网、书籍等手段,了解至少三种单通过互联网、书籍等手段,了解至少三种单片机应用的场合及应用实例。片机应用的场合及应用实例。1.1.4 AVR1.1.4 AVR系列单片机系列单片机一、一、AVRAVR系列系列单片机片机简介介 AVRAVR单片机是美国片机是美国AtmelAtmel公司公司19971997年推出的精年推出的精简指令集指令集(RISCRISC)单片机。片机。AVRAVR(Advance RISCAdvance RISC)。)。二、二、AVRAVR系列的系系列的系统结构构1.1.中央处理器(中央处理器(CPUCPU) 运算器运算器 控制器控制

13、器知知识识 了解了解AVRAVR系列单片机系列单片机2 2、数据存储器、数据存储器 RAMRAM(AVRAVR中用的是中用的是SRAMSRAM)、)、EEPROMEEPROM 二者的含义、作用、及之间的区别。二者的含义、作用、及之间的区别。3 3、程序存储器、程序存储器 FlashFlash(可擦写(可擦写10001000次以上)次以上)4 4、定时、定时/ /计数器计数器 T/CT/C0 0、T/C1T/C1、T/C2T/C25 5、并行、并行I/OI/O6 6、串行、串行I/OI/O UARTUART(异步串行)、(异步串行)、SPISPI(主(主/ /从同步收从同步收/ /发)发)7 7

14、、中断控制系统、中断控制系统 内部内部中断中断和外部中断和外部中断 中断系统的作用中断系统的作用8 8、时钟时钟系统系统9 9、总线总线 数据总线(数据总线(8bit8bit)、指令总线)、指令总线(16bit)(16bit)三、三、AVRAVR系列系列单片机的片机的选型型知知识识 亲密接触亲密接触ATmega16ATmega16 ATmega16 ATmega16是一款是一款RISCRISC低功耗低功耗CMOSCMOS的的8 8位高性能单片机。接位高性能单片机。接近近1MIPS/MHz1MIPS/MHz的性能。的性能。CMOSCMOS (C Complementary omplementar

15、y M Metal etal O Oxide xide S Semiconductoremiconductor 互补金属氧化物半导体)互补金属氧化物半导体)1616位指令总线,位指令总线,8 8位数据总线位数据总线MIPSMIPS(每秒百万条指令)(每秒百万条指令)1.1.5 ATmega161.1.5 ATmega16芯片详解芯片详解一、一、ATmega16ATmega16芯片外芯片外观milmil:千分之一寸:千分之一寸二、二、ATmega16ATmega16内部内部结构构三、三、ATmega16ATmega16芯片封装与引脚功能芯片封装与引脚功能 ATmega16 ATmega16有有4

16、444脚的脚的TQFPTQFP封装和封装和4040脚的脚的PDIPPDIP封装两种。封装两种。 教材教材P2P23 3页。页。未完待续。1.2 1.2 子任务一子任务一 开关控制指示灯开关控制指示灯任务要求:任务要求: 利用利用ATmega16/32ATmega16/32单片机来实现开关对单片机来实现开关对LEDLED点亮与熄灭点亮与熄灭的控制功能。的控制功能。推荐电路:推荐电路:知知识识 ATmega16 ATmega16的并行的并行I/OI/O1.2.1 1.2.1 并行接口概述并行接口概述 单片机控制外部设备时,常常向外部设备输出控制命单片机控制外部设备时,常常向外部设备输出控制命令(输

17、出),或检测外部设备工作状态(输入)。此时,令(输出),或检测外部设备工作状态(输入)。此时,单片机的单片机的I/OI/O端口起到重要的作用。端口起到重要的作用。 串行通讯:串行通讯:串行通讯:串行通讯:信息的各信息的各bitbit数据被逐位通过一条信道(引数据被逐位通过一条信道(引脚)按顺序传送的通讯方式。脚)按顺序传送的通讯方式。 并行通讯:并行通讯:并行通讯:并行通讯:各各bitbit数据按照字长通过多条信道同时传送数据按照字长通过多条信道同时传送的通讯方式。的通讯方式。一、并行输入工作原理一、并行输入工作原理 并行输入接口某一位的简化电路如图所示:并行输入接口某一位的简化电路如图所示:

18、010111图图1 1: 输入接口等效电路输入接口等效电路引脚引脚三态门三态门RPRP数数据据总总线线缓冲器缓冲器通过通过RPRP控制数据的读入:控制数据的读入:1 1、RPRP0 0时,三态门为高阻态,数据总线无输入;时,三态门为高阻态,数据总线无输入;2 2、RPRP1 1时,三态门输出等于输入,数据从引脚被读入数据时,三态门输出等于输入,数据从引脚被读入数据总线。总线。0 1二、并行输出工作原理二、并行输出工作原理并行输出接口某一位的简化电路如图并行输出接口某一位的简化电路如图4-24-2所示:所示:上拉管上拉管方向器方向器缓冲驱动器缓冲驱动器数据锁存器数据锁存器引脚引脚图图2 2: 输

19、出接口等效电路输出接口等效电路数数据据总总线线WPWPRLRLD DQ QVCCVCC通过通过WPWP控制数据的输出:控制数据的输出:1 1、WPWP0 0时,数据锁存器时,数据锁存器Q Q不受不受D D影响,输出无效;影响,输出无效;2 2、WPWP1 1时,输出端时,输出端Q Q等于输入端等于输入端D D,数据输出到引脚。,数据输出到引脚。上拉管(电阻)的作用:上拉管(电阻)的作用:1 1、稳定输出;、稳定输出;2 2、增强驱动能力;、增强驱动能力;3 3、抗干扰;、抗干扰;三、并行输入三、并行输入/ /出接口工作原理出接口工作原理 并行输入并行输入/ /出某一位的简化接口电路如图所示:出

20、某一位的简化接口电路如图所示: 图图3 3: I/OI/O接口等效电路接口等效电路三态门三态门1 1三态门三态门2 2缓冲驱动器缓冲驱动器方向锁存器方向锁存器与非门与非门引脚引脚上拉管上拉管三态门三态门3 3缓冲器缓冲器数数据据总总线线VCCVCCD QWDWDD QWPWP数据锁存器数据锁存器RDRDRLRLRPRPRPRPD QWPWPRLD QWDRD输入电路输入电路(等效于图(等效于图1)输出电路输出电路(等效于图(等效于图2)控制电路控制电路 Atmega16 Atmega16单片机有单片机有A A、B B、C C、D D四个四个8 8位并行位并行I/OI/O接口。接口。一、一、I/

21、OI/O控制寄存器(宏)控制寄存器(宏) 当当A A、B B、C C、D D接口用于数据接口用于数据I/OI/O口时,通过口时,通过DDRxDDRx、PORTxPORTx和和PINxPINx三个宏控制接口的输入与输出(其中三个宏控制接口的输入与输出(其中x x为为A A、B B、C C或或D D)。)。接口名称接口名称方向控制宏方向控制宏引脚输入宏引脚输入宏引脚输出宏引脚输出宏接口性质接口性质PAPADDRADDRAPINAPINAPORTAPORTAI/OI/OPBPBDDRBDDRBPINBPINBPORTBPORTBI/OI/OPCPCDDRCDDRCPINCPINCPORTCPORTC

22、I/OI/OPDPDDDRDDDRDPINDPINDPORTDPORTDI/OI/O 注:PINx为只读。其中:其中: DDRxDDRx为接口数据方向寄存器,用来定为接口数据方向寄存器,用来定义通讯方向(输入义通讯方向(输入/ /输出);输出); PORTxPORTx为接口数据寄存器,用来输出为接口数据寄存器,用来输出数据;数据; PINxPINx用来读取接口数据(只读)。用来读取接口数据(只读)。1.2.2 ATmega161.2.2 ATmega16并行并行I/OI/O资源资源1.1.DDRxDDRx 当当DDRxDDRx的某位为的某位为0 0时,送到方向锁存器的输出端为时,送到方向锁存器

23、的输出端为0 0,相,相应位(引脚)只能作应位(引脚)只能作输入输入; 当当DDRxDDRx的某位为的某位为1 1时,送到方向锁存器的输出端为时,送到方向锁存器的输出端为1 1,相,相应位(引脚)只能作应位(引脚)只能作输出输出。2.2.PORTxPORTx 端口作输出时:端口作输出时:PORTxPORTx的某位为的某位为0 0时,表示初始电平为低时,表示初始电平为低电平,反之为高电平;电平,反之为高电平; 端口作输入时:端口作输入时:PORTxPORTx的某位为的某位为0 0时,表示不启用内部上时,表示不启用内部上拉电阻,反之为启用。拉电阻,反之为启用。3.3.PINxPINx 当当DDRx

24、DDRx的某位为的某位为0 0时,表示输入为低电平状态,反之为时,表示输入为低电平状态,反之为高电平状态。高电平状态。如程序段:如程序段:char a;char a;a=0x11;a=0x11; /00010001 /00010001DDRA=0xFF;DDRA=0xFF; /PA /PA口的口的8 8脚都作输出脚都作输出PORTA=a;PORTA=a; / /将将a a的值通过的值通过PAPA口输出口输出又如:又如:char a;char a;DDRC=0x0;DDRC=0x0; /PC /PC口作为输入口作为输入PORTC=0x0F;PORTC=0x0F; / /低低4 4位使用内部上拉电

25、阻,高位使用内部上拉电阻,高4 4位不使用位不使用a=PINC;a=PINC; / /读取读取C C口的值到变量口的值到变量a a二、端口的控制二、端口的控制1.1.以端口为单位以端口为单位如程序段:如程序段:DDRA.0=0;DDRA.0=0; / /将将PAPA口第口第0 0脚设置为输入脚设置为输入DDRC.2=1;DDRC.2=1; / /将将PCPC口第口第2 2脚都作输出脚都作输出 PORTC.2=0;PORTC.2=0; /PC /PC口第口第2 2脚输出低电平脚输出低电平 PORTA.0=1;PORTA.0=1; /PA /PA口第口第0 0脚使用内部上拉电阻脚使用内部上拉电阻又

26、如:又如:bit a=1, b=0;bit a=1, b=0;DDRB.4=b;DDRB.4=b; /PC /PC口的第口的第4 4脚作为输入脚作为输入PORTC.2=b;PORTC.2=b; / /从从PCPC口第口第2 2脚输出变量脚输出变量b b的值的值b=PINA.0;b=PINA.0; / /读取读取PAPA口第口第0 0脚的值到变量脚的值到变量b b2.2.以引脚为单位以引脚为单位bit:CodeVisionAVR C中专用的中专用的位变量位变量三、位运算(补充)三、位运算(补充) 位运算符有:位运算符有:& &、| |、 、 1 1、& &(按位(按位“与与”) 运算规则:运算规

27、则:全全1 1为为1 1,有,有0 0则则0 0。1 0 0 1 0 0 0 11 0 0 1 0 0 0 1& &0 1 1 1 1 0 0 10 1 1 1 1 0 0 10 0 0 1 0 0 0 10 0 0 1 0 0 0 1 如:如:a&ba&b、c&0x0Fc&0x0F、0x0F&0xF00x0F&0xF02 2、| |(按位(按位“或或”) 运算规则:运算规则:有有1 1为为1 1,全,全0 0则则0 0。1 0 0 1 0 0 0 11 0 0 1 0 0 0 1| |0 1 0 1 0 1 0 10 1 0 1 0 1 0 11 1 0 1 0 1 0 11 1 0 1 0

28、 1 0 1 如:如:a|ba|b、 c|0x0Fc|0x0F、0x0F|0xF00x0F|0xF03 3、(按位(按位“反反”)1 0 0 1 0 0 0 11 0 0 1 0 0 0 10 1 1 0 1 1 1 00 1 1 0 1 1 1 0 如:如:a、b、 0xFF、 0xF04 4、 (按位(按位“异或异或”) 运算规则:运算规则:相同为相同为0 0,不同为,不同为1 1。1 0 0 1 0 0 0 11 0 0 1 0 0 0 1 0 1 1 1 1 0 0 10 1 1 1 1 0 0 11 1 1 0 1 0 0 01 1 1 0 1 0 0 0 如:如:abab、 c0x

29、0Fc0x0F、0x0F0xF00x0F0xF05 5、(“左移左移”)1 1 0 1 1 1 1 0 0 10 1 1 1 1 0 0 1 1 1 1 1 0 0 1 0 1 1 1 1 0 0 1 0低位补低位补0 0 如:如:a1a1、b2b2、0x0F30x0F(“右移右移”)111 0 0 1 0 0 0 11 0 0 1 0 0 0 1 1 1 0 0 1 0 0 01 1 0 0 1 0 0 0正数:高位补正数:高位补0 0负数:高位补负数:高位补1 1 如:如:a1a1、b3b3、0xF040xF04一、单片机系统开发调试过程一、单片机系统开发调试过程系统需求分析、设计。CPU

30、选择、硬件电路设计硬件电路调试软件功能分析分模块调试系统联调(加密)固化程序编制详细设计说明书图图1 1: 单片机应用系统开发流程图单片机应用系统开发流程图知知识识 AVR AVR单片机开发工具单片机开发工具1.2.3 1.2.3 系统开发与调试过程系统开发与调试过程二、软件开发调试过程二、软件开发调试过程 相应的开发工具很多,如:相应的开发工具很多,如:ATmanAVRATmanAVR、CodeVisionAVR CCodeVisionAVR C、AVR CAVR C、和、和ICCAVRICCAVR等软件,本课程以等软件,本课程以CodeVisionAVR CCodeVisionAVR C作

31、为开发作为开发调试工具。调试工具。 单片机软件开发工作流程如下图:单片机软件开发工作流程如下图:使用CodeVisionAVR C软件编写程序编译器编译源文件,产生目标文件编译有错烧写如单片机,进行硬件系统整体调试编译正确有错重新设计软件写入硬件电路图图2 2 软件开发流程图软件开发流程图1.2.4 1.2.4 配套实验装置配套实验装置电源插座电源插座电源开关电源开关8 88 8点阵点阵显示器显示器发光二极管发光二极管E1E1E8E8开关开关K1K1K8K81K1K8 8电阻引电阻引脚引出接口脚引出接口 72197219控制控制引出接口引出接口 K1K1K8K8开关开关引出接口引出接口 E1E

32、1E8E8发光二发光二极管引脚引极管引脚引出接口出接口 4 44 4键盘引键盘引脚引出接口脚引出接口4 44 4矩阵键盘矩阵键盘J04J04J07J07J14J14J17J17J24J24J27J27J34J34J37J37LCDLCD显示器显示器控制引脚控制引脚引出接口引出接口8 8位位LEDLED位位控引脚引控引脚引出接口出接口8 8位位LEDLED段段控引脚引控引脚引出接口出接口72197219位控位控引脚引出引脚引出接口接口72197219段控段控引脚引出接引脚引出接口口8 8位位LEDLED显示器显示器8 88 8点阵显示点阵显示器行控制引脚器行控制引脚引出接口引出接口8 88 8点

33、阵显示点阵显示器列控制引脚器列控制引脚引出接口引出接口直流稳直流稳压电源压电源LCDLCD显示器显示器PDPD口引脚口引脚引出接口引出接口 PBPB口引脚口引脚引出接口引出接口 PCPC口引脚口引脚引出接口引出接口 PAPA口引脚口引脚引出接口引出接口 ATmega16ATmega16程序下载程序下载接口接口异步串行异步串行UARTUART接口接口系统复系统复位按钮位按钮MAX7219MAX7219芯片芯片液晶显示液晶显示背光调节背光调节电阻电阻1.2.5 CodeVisionAVR C1.2.5 CodeVisionAVR C集成开发环境集成开发环境一、一、CodevisionAVR C I

34、DECodevisionAVR C IDE CodevisionAVR C CodevisionAVR C集成开发环境(集成开发环境(Integrated Development Integrated Development EnvironmentEnvironment,简称,简称IDEIDE)菜单栏菜单栏工具栏工具栏导航窗导航窗程序编辑窗程序编辑窗信息窗信息窗状态条状态条二、工程的概念二、工程的概念 1 1、C C源程序文件源程序文件 原来在原来在Turbo C 2.0Turbo C 2.0环境下,可以针对某一单一的环境下,可以针对某一单一的C C源程源程序文件开发程序;单现在使用序文件开发

35、程序;单现在使用CodevisionAVR CCodevisionAVR C开发环境不再开发环境不再是这样了。是这样了。 2 2、C C源程序工程源程序工程 CodevisionAVRCodevisionAVR中的工程(也称中的工程(也称“项目项目”)是一组)是一组C C源程源程序文件和编译器设置的集合,其扩展名为序文件和编译器设置的集合,其扩展名为* *.prj.prj。三、打开工程文件三、打开工程文件 可以选择可以选择File-OpenFile-Open菜单命令或直接点击工具栏上的菜单命令或直接点击工具栏上的 按钮来打开某一已存在的工程。按钮来打开某一已存在的工程。 工程被打开后,可以在工

36、程被打开后,可以在“导航栏导航栏”中浏览该工程的组成,中浏览该工程的组成,如图。如图。 IDEIDE主窗口中会显示出本工程所处的绝对路径。主窗口中会显示出本工程所处的绝对路径。工程名工程包含的文件列表不属于本工程但在当前工程下被打开的文件列表四、打开文件四、打开文件 可以用鼠标双击导航栏中的某一个文件以打开进行编辑。可以用鼠标双击导航栏中的某一个文件以打开进行编辑。 可以选择可以选择File|OpenFile|Open菜单命令或直接点击工具栏上的菜单命令或直接点击工具栏上的 按钮来打开任一其它文件(在打开对话框的按钮来打开任一其它文件(在打开对话框的“文件类型文件类型”中进中进行选择)。行选择

37、)。五、关闭工程五、关闭工程 可以选择可以选择File|Close ProjectFile|Close Project菜单命令关闭已打开的工程。菜单命令关闭已打开的工程。六、关闭文件六、关闭文件 当某一文件的窗口处于激活状态时,可以选择当某一文件的窗口处于激活状态时,可以选择File|CloseFile|Close菜单命令关闭该文件,或直接关闭该窗口。菜单命令关闭该文件,或直接关闭该窗口。七、新建文件或项目七、新建文件或项目 可以选择可以选择File|NewFile|New菜单命令或直接点击工具栏上的菜单命令或直接点击工具栏上的 按按钮新建文件或项目。钮新建文件或项目。 选择选择“Source

38、Source”可新建一文件,选择可新建一文件,选择“ProjectProject”可新建可新建一工程。一工程。 选择新建工程后,如果在不采用选择新建工程后,如果在不采用CodeWizardAVRCodeWizardAVR向导进行向导进行工程新建工作,则只会生成一空工程框架。如果采用工程新建工作,则只会生成一空工程框架。如果采用CodeWizardAVRCodeWizardAVR向导生成工程,则随后会出现工程配置对话框。向导生成工程,则随后会出现工程配置对话框。八、向工程中添加或删除文件八、向工程中添加或删除文件 选择选择Project|ConfigureProject|Configure菜单项

39、,可以调出工程设置对话菜单项,可以调出工程设置对话框。框。 可以在工程设置对话框中,点击可以在工程设置对话框中,点击“AddAdd”按钮向当前工程按钮向当前工程中加入文件;也可以先选择左边工程文件列表中的某一文件中加入文件;也可以先选择左边工程文件列表中的某一文件后,点击后,点击“RemoveRemove”按钮将此文件从工程中移除。按钮将此文件从工程中移除。九、九、CodeWizardAVRCodeWizardAVR代码生成器代码生成器 在上述新建工程操作时,如果前述向导选择对话框中选在上述新建工程操作时,如果前述向导选择对话框中选择采用择采用CodeWizardAVRCodeWizardAV

40、R方式,则会弹出下图对话框:方式,则会弹出下图对话框:对A口进行设置某引脚的数据方向输出(1)输入(0)(针对输出时)某引脚的初始值(针对输入时)某引脚是否开启内部上拉电阻P开启(1)T不开(0) 在对话框中,可以对芯片的类型、工作频率、在对话框中,可以对芯片的类型、工作频率、I/OI/O端口、端口、外部中断等参数进行设置,之后的代码会依据相应设置自动外部中断等参数进行设置,之后的代码会依据相应设置自动生成。生成。芯片型号晶振频率是否检查复位源程序类型1.1.ChipChip选项选项 在在ChipChip选项栏中,可以对芯片型号、工作晶振频率等参选项栏中,可以对芯片型号、工作晶振频率等参数进行

41、设置。数进行设置。2.2.PortsPorts选项选项 在在PortsPorts选项栏中,可以对选项栏中,可以对ATmega16ATmega16的的A A、B B、C C、D4D4个个I/OI/O端口进行设置。端口进行设置。PORTA=0xCA;DDRA=0x0F;问题:问题: 如果按图中那样设置,则会自如果按图中那样设置,则会自动生成(初始化)语句是什么?动生成(初始化)语句是什么?3.3.代码自动生成代码自动生成 在上述在上述CodeWizardAVRCodeWizardAVR代码生成器对话框中,将各项参数代码生成器对话框中,将各项参数设置完毕后,可以选择设置完毕后,可以选择File|Ge

42、nerate,Save and ExitFile|Generate,Save and Exit菜单项,菜单项,自动生成源程序文件和工程了。自动生成源程序文件和工程了。 在生成过程中,文件保存对话框会提示你输入在生成过程中,文件保存对话框会提示你输入3 3个将要被个将要被保存的文件的文件名,分别为保存的文件的文件名,分别为C C源程序文件名、工程文件名、源程序文件名、工程文件名、代码向导文件名,它们的扩展名对应分别为:代码向导文件名,它们的扩展名对应分别为:* *.C.C、* *.prj.prj、* *.cwp.cwp。小窍门!小窍门! 要通过工程得到单片机可以运行的可执行文件,需要经要通过工程

43、得到单片机可以运行的可执行文件,需要经历以下步骤:历以下步骤:一、编译一、编译 可以选择可以选择Project|CompileProject|Compile菜单命令,或菜单命令,或F9F9键或点击工具键或点击工具栏中的栏中的 按钮,编译器会马上对程序进行编译。按钮,编译器会马上对程序进行编译。二、可执行文件的生成二、可执行文件的生成 可以选择可以选择Project|MakeProject|Make菜单命令,或菜单命令,或ShiftShiftF9F9键或点击键或点击工具栏中的工具栏中的 按钮,生成项目的可执行文件(按钮,生成项目的可执行文件(* *.hex.hex)。)。项目组文件(*.prj,

44、*.C)汇编程序文件(*.asm)可执行文件(*.hex)仅编译编译且生成1.2.6 1.2.6 项目的编译与生成项目的编译与生成 用用CodeVisionAVR CCodeVisionAVR C生成了可执行文件生成了可执行文件* *.hex.hex后,必须将后,必须将程序写入(固化)在单片机中才能运行。程序写入(固化)在单片机中才能运行。一、下载工具一、下载工具 典型下载工具是广州双龙公司的典型下载工具是广州双龙公司的“SLISP”。PC端下载端口下载速度目标芯片型号待写入可执行文件待写入EEPROM文件芯片擦除开始写入数据校验片内数据读取加密模式编程模式1.2.7 1.2.7 程序下载与运

45、行程序下载与运行二、程序的下载二、程序的下载 选择好选择好PCPC端下载接口、下载速度、目标芯片型号后,可端下载接口、下载速度、目标芯片型号后,可以点击以点击“FlashFlash存储器存储器”栏的栏的“文件打开文件打开”按钮选择欲写入的按钮选择欲写入的HEXHEX文件;之后又将弹出如图文件;之后又将弹出如图“空闲存储器填充空闲存储器填充”对话框:对话框:选择选择“填充填充FFFF”,确定。,确定。 最后,在保证最后,在保证PCPC机的相应端口与目标系统连线完好,且机的相应端口与目标系统连线完好,且目标系统处于工作状态的前提下,点击目标系统处于工作状态的前提下,点击“编程编程”按钮,即可按钮,

46、即可将可执行文件下载(固化)到芯片中。将可执行文件下载(固化)到芯片中。 有关有关“编程选项编程选项”、“配置熔丝配置熔丝”等设置将在后续章节等设置将在后续章节中祥述。中祥述。1.2.8 1.2.8 Proteus仿真平台仿真平台 Proteus Proteus软件是英国软件是英国Labcenter electronicsLabcenter electronics公司出版的公司出版的EDAEDA工具软件。它不仅具有其它工具软件。它不仅具有其它EDAEDA工具软件的仿真功能,还工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外能仿真单片机及外围器件。它是目前最好的仿真单片

47、机及外围器件的工具。围器件的工具。 一、软件界面一、软件界面菜单栏菜单栏工具栏工具栏预览窗预览窗原理图编原理图编辑区辑区模型选择工具栏模型选择工具栏仿真调试仿真调试当前元件列表当前元件列表二、编辑原理图二、编辑原理图1.1.放置元件放置元件2.2.连线连线3.3.编辑元件属性编辑元件属性仿真程序文件仿真程序文件时钟频率时钟频率三、仿真三、仿真运行运行单步运行单步运行暂停暂停停止停止技技能能 完成子任务一完成子任务一一、在一、在ProteusProteus中绘制原理图中绘制原理图元件名称元件名称元件型号元件型号参数参数说明明ATmega16单片机ATMEGA16开关SW-SPST-MOM单刀单掷

48、开关发光管LED-GREEN绿色限流电阻R1RES270欧二、利用二、利用CodeVisionAVR CCodeVisionAVR 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.1.第一行是什么?第一行是什么?2.main2.main函数中前三句是什么意思?函数中前三句是什么意思?3.3.为什么要进行无限循环?为什么要进行无限循环?包

49、含单片机对包含单片机对应的应的头文件头文件三、下载程序,观察、分析运行结果三、下载程序,观察、分析运行结果四、拓展四、拓展 1. 1.实现正逻辑的开关控制功能;实现正逻辑的开关控制功能; 2.2.将开关接到将开关接到PB6PB6,指示灯接到,指示灯接到PA3PA3,实现功能。,实现功能。开 关 组 KAIGUAN PC PD 单片机模块发光管LED 计算机并口下载线教学教学检查检查检查项目目检查结果及改果及改进措施措施应得分得分实得分得分小组讨论、自我评价实验结果正确性20计划制定的准确性10独立完成实验项目的能力15知识点的掌握情况20能力控制点检查15创新能力10课外任务完成情况10评价价

50、自评: 小组: 教师评价:五、填写教学检查表五、填写教学检查表1.3 1.3 子任务二子任务二 交通灯控制交通灯控制任务要求:任务要求: 用用LEDLED模拟实现十字路口交通灯控制系统。控制方式:模拟实现十字路口交通灯控制系统。控制方式:(1 1)东西方向:红灯)东西方向:红灯6565秒,绿灯秒,绿灯4040秒,黄灯秒,黄灯5 5秒;秒;(2 2)南北方向:红灯)南北方向:红灯4545秒,绿灯秒,绿灯6060秒,黄灯秒,黄灯5 5秒。秒。讨论:讨论:讨论:讨论:子任务一的方法能借子任务一的方法能借鉴吗?鉴吗?怎么延时?怎么延时?怎么控制变灯?怎么控制变灯? 一、一、Proteus原理图原理图1

51、.3.1 1.3.1 开关组控制发光管组开关组控制发光管组知知识识 并行并行I/O控制的巩固与提高控制的巩固与提高共阳极共阳极二、编写程序二、编写程序#include void main() DDRC=0x00; /定义定义PC口为输入口口为输入口 PORTC=0x00; /不使用内部上拉电阻不使用内部上拉电阻 DDRD=0xff; /定义定义PD口为输出口口为输出口 While(1) PORTD=PINC; /无限循环,把输入送到输出无限循环,把输入送到输出问题:问题: 这段程序的关键在哪里?怎么这段程序的关键在哪里?怎么解释?解释?三、仿真调试三、仿真调试一、一、Proteus原理图原理图

52、1.3.2 1.3.2 延时控制发光管延时控制发光管二、延时功能的实现二、延时功能的实现 CodeVisionAVR C CodeVisionAVR C中,通过两个函数实现延时功能:中,通过两个函数实现延时功能: 1. 1. void delay_ms(unsigned int n); 2. . void delay_us(unsigned int n);N N以以msms为单位为单位N N以以usus为单位为单位注意:注意: 在程序开始的位置,必须包含:在程序开始的位置,必须包含: #include 问题:问题: 谁来说说这段程序的含义?谁来说说这段程序的含义?三、编写程序实现功能三、编写程

53、序实现功能#include #include void main() DDRC.0=1; While(1) PORTC.0=PORTC.0; delay_ms(1000); 技技能能 完成子任务二完成子任务二一、在一、在ProteusProteus中绘制原理图中绘制原理图元件名称元件名称元件型号元件型号参数参数说明明ATmega16单片机ATMEGA16红色发光管LED-RED 绿色发光管LED-GREEN 黄色发光管LED-YELLOW限流电阻RES270欧步步骤时间不用不用南北方向南北方向东西方向西方向PC口十六口十六进制制黄灯绿灯红灯黄灯绿灯红灯PC7PC6PC5PC4PC3PC2PC1

54、PC0160111011100XEE25110111100XDE340111101010XF545111100110XF3控制逻辑:控制逻辑:东东西西东东西西东东西西605405二、利用二、利用CodeVisionAVR CCodeVisionAVR C编写程序编写程序#include #include main() DDRC=0XFF; /定义定义PC口为输出口口为输出口 while(1) PORTC=0XEE; /东西方向红灯亮,南北方向绿灯亮东西方向红灯亮,南北方向绿灯亮 delay_ms(60000); /延时延时60秒秒 PORTC=0XDE; /东西方向红灯亮,南北方向黄灯亮东西方

55、向红灯亮,南北方向黄灯亮 delay_ms(5000); /延时延时5秒秒 PORTC=0XF5; /东西方向绿灯亮,南北方向红灯亮东西方向绿灯亮,南北方向红灯亮 delay_ms(40000); /延时延时40秒秒 PORTC=0XF3; ; /东西方向黄灯亮,南北方向红灯亮东西方向黄灯亮,南北方向红灯亮 delay_ms(5000); /延时延时5秒秒 三、下载程序,观察、分析运行结果三、下载程序,观察、分析运行结果四、拓展四、拓展 1. 1.改变延时时间实现功能(比如最长延时改变延时时间实现功能(比如最长延时9090秒);秒); 2.2.彩灯循环控制。彩灯循环控制。PC PD单片机模块L

56、ED 发光管 计算机并口下载线教学教学检查检查检查项目目检查结果及改果及改进措施措施应得分得分实得分得分小组讨论、自我评价实验结果正确性20计划制定的准确性10独立完成实验项目的能力15知识点的掌握情况20能力控制点检查15创新能力10课外任务完成情况10评价价自评: 小组: 教师评价:五、填写教学检查表五、填写教学检查表1.4 1.4 子任务三子任务三 LCDLCD参数显示参数显示任务要求:任务要求: 在单色在单色LCDLCD液晶显示器上显示文字。液晶显示器上显示文字。讨论:讨论:讨论:讨论:LCDLCD是什么?是什么?LCDLCD有哪些种类?有哪些种类?怎么显示?怎么显示? 知知识识 液晶

57、显示器应用液晶显示器应用一、一、LCD种类种类1.4.1 LCD1.4.1 LCD介绍介绍 按颜色:按颜色:单色单色、彩色彩色 按成像模式:按成像模式:字符字符、点阵点阵 按分辨率:按分辨率:VGA、SVGA、XGA、WXGA、WUXGA二、字符型二、字符型LCD的应用的应用引脚号引脚号符号符号说明说明1GND电源地2VDD电源(5V)3VEE液晶驱动电压(用10k20K电位器在GND与Vcc之间调节,约0.5V)4RS液晶显示器中的寄存器选择。RS为高电平选数据寄存器,RS为低电平选指令寄存器5RWRD为高电平是读,低电平是写6E使能,下降沿数据写入7-14D0-D78根数据线D0D7 可以

58、有可以有8 8位位和和4 4位位两种数两种数据操作模式。据操作模式。 采用采用4 4位模式时,只需位模式时,只需用到模块的用到模块的D4D4D7D7引脚。引脚。1.4.2 1.4.2 字符型字符型LCDLCD应用应用一、一、Proteus仿真环境下的仿真环境下的1602液晶模块液晶模块2.CodeVisionAVR C2.CodeVisionAVR C的应用的应用(1 1)lcd_initlcd_init初始化函数初始化函数函数原型:函数原型:voidvoid lcd_initlcd_init( (unsigned charunsigned char lcd_columns) lcd_colu

59、mns)作用:作用: 初始化液晶模块。函数形参是需设定的最大显示列数。初始化液晶模块。函数形参是需设定的最大显示列数。(2 2)lcd_clearlcd_clear清屏函数清屏函数函数原型:函数原型:voidvoid lcd_clearlcd_clear( (voidvoid) )作用:清除液晶屏显示。作用:清除液晶屏显示。(3 3)lcd_gotoxylcd_gotoxy光标定位函数光标定位函数函数原型:函数原型:voidvoid lcd_gotoxylcd_gotoxy( (unsigned char unsigned char x,x,unsigned char unsigned cha

60、r y)y)作用:将光标定位到形参(作用:将光标定位到形参(x,yx,y)指定的位置。)指定的位置。调用调用lcd_initlcd_init或或lcd_clearlcd_clear函数后,默认光标位置为函数后,默认光标位置为(0,0)(0,0)。(4 4)lcd_putcharlcd_putchar显示字符函数显示字符函数函数原型:函数原型:voidvoid lcd_putcharlcd_putchar( (char char c)c)作用:在当前光标定位显示形参指定的字符作用:在当前光标定位显示形参指定的字符(ASCII)(ASCII)。调用此函数后,光标自动向后移动一个字符位置。调用此函数

61、后,光标自动向后移动一个字符位置。(5 5)lcd_putslcd_puts字符串显示函数字符串显示函数函数原型:函数原型:voidvoid lcd_putslcd_puts( (char* char* str)str)作用:在当前光标定位显示形参指定的字符串(作用:在当前光标定位显示形参指定的字符串(RAMRAM)。)。调用此函数后,光标自动向后移动字符串长度个位置。调用此函数后,光标自动向后移动字符串长度个位置。(6 6)lcd_putsflcd_putsf字符串显示函数字符串显示函数函数原型:函数原型:voidvoid lcd_putsflcd_putsf( (char char fla

62、shflash* * str)str)作用:在当前光标定位显示形参指定的字符串(作用:在当前光标定位显示形参指定的字符串(flashflash)。)。调用此函数后,光标自动向后移动字符串长度个位置。调用此函数后,光标自动向后移动字符串长度个位置。此两函数区别此两函数区别此两函数区别此两函数区别:1.1.实参存储位置不同;实参存储位置不同;2.2.常量作实参时,只能用常量作实参时,只能用lcd_putsflcd_putsf。技技能能 初次点亮初次点亮LCDLCD一、在一、在ProteusProteus中绘制原理图中绘制原理图元件名称元件名称元件型号元件型号参数参数说明明ATmega16单片机AT

63、MEGA16LCD模块LM016L 二、利用二、利用CodeVisionAVR CCodeVisionAVR C编写程序编写程序#include #include /定义变量定义变量_lcd_port 为为PC口,因口,因PORTC的口地址是的口地址是0X15 #asm .equ _lcd_port=0x15 #endasmchar *sss=” AVR”; /定义定义RAM中的字符串变量中的字符串变量char flash *aaa=” 16”;/定义定义flash中的字符串变量中的字符串变量void main(void) lcd_init(16);/初始化初始化LCD为为16列列2行行 lc

64、d_gotoxy(2,0);/定位在定位在0行行2列列 lcd_putsf(“Hello ”);/显示字符串显示字符串 lcd_puts(sss);/显示显示RAM中的字符串变量中的字符串变量 lcd_putsf(aaa);/显示显示flash中的字符串变量中的字符串变量 while (1); 技技能能 完成子任务三完成子任务三一、在一、在ProteusProteus中绘制原理图中绘制原理图元件名称元件名称元件型号元件型号参数参数说明明ATmega16单片机ATMEGA16LCD模块LM016L 二、利用二、利用CodeVisionAVR CCodeVisionAVR C编写程序编写程序#in

65、clude #include /定义定义LCD连接到连接到PC口口/LCD可连到任何一个口,可连到任何一个口,PA口为口为0X1B,PB口为口为0X18,PC口为口为0X15,PD口为口为0X12#asm .equ _lcd_port=0x15#endasmvoid XianShi_uint (unsigned int shu) char j,lcd5; /申请一个有申请一个有6个元素的字符型数组和两个字符型循环变量个元素的字符型数组和两个字符型循环变量 lcd0=shu/10000+0x30; /将数的万位转变为将数的万位转变为ASCII码存放在码存放在lcd0 lcd1=shu/1000%

66、10+0x30; /将数的千位转变为将数的千位转变为ASCII码存放在码存放在lcd1 lcd2=shu/100%10+0x30; /将数的百位转变为将数的百位转变为ASCII码存放在码存放在lcd2 lcd3=shu/10%10+0x30; /将数的十位转变为将数的十位转变为ASCII码存放在码存放在lcd3 lcd4=shu%10+0x30;/将数的个位转变为将数的个位转变为ASCII码存放在码存放在lcd4 for(j=0;j5;j+) /从第一个数开始送显示从第一个数开始送显示 lcd_putchar(lcdj);main() lcd_init(16); xianshi_uint(12

67、3); while(1); 由向导生成由向导生成三、下载程序,观察、分析运行结果三、下载程序,观察、分析运行结果四、拓展四、拓展 1. 1.改变成改变成PDPD端口驱动显示端口驱动显示LCDLCD; 2.2.编写一个通用的,在编写一个通用的,在LCDLCD上显示数据的函数。上显示数据的函数。 PC单片机模块LCD 计算机并口下载线教学教学检查检查检查项目目检查结果及改果及改进措施措施应得分得分实得分得分小组讨论、自我评价实验结果正确性20计划制定的准确性10独立完成实验项目的能力15知识点的掌握情况20能力控制点检查15创新能力10课外任务完成情况10评价价自评: 小组: 教师评价:五、填写教

68、学检查表五、填写教学检查表1.5 1.5 子任务四子任务四 参数设置技术参数设置技术任务要求:任务要求: 通过键盘输入某个参数,并将其保存在单片机的通过键盘输入某个参数,并将其保存在单片机的EEPROMEEPROM中。中。讨论:讨论:讨论:讨论:“键盘键盘”是什么?是什么?怎么读取按键值?怎么读取按键值?怎么存储怎么存储EEPROMEEPROM? 知知识识 键盘程序设计键盘程序设计一、单键处理一、单键处理1.5.1 1.5.1 按键处理按键处理 抖动时间一般为抖动时间一般为5 51010毫秒。如毫秒。如果每间隔果每间隔2020毫秒检测一次按键的状毫秒检测一次按键的状态,即可消除抖动影响。态,即

69、可消除抖动影响。 char j;DDRD=0xFF;/定义定义PD口为输出口口为输出口DDRB=2;/00000010PORTB=1;/00000001j=PINB;/j存放存放PB口上次的值口上次的值while(1) if( (PINB.0=0)&(j&0x02) ) PORTD.3=!PORTD.3;/有键按下时改变指示灯状态有键按下时改变指示灯状态 j=PINB; /保存本次键值,用于下次判断的历史值保存本次键值,用于下次判断的历史值 delay_ms(20); /延时延时20毫秒毫秒 在在ProteusProteus仿真环境和仿真环境和实验装置上实现。实验装置上实现。元件名称元件名称元

70、件型号元件型号参数参数说明明ATmega16单片机ATMEGA16按钮BUTTON电阻R1RES10K电阻R2RES270发光二极管LED-GREEN技技能能 例子例子问题:问题:问题:问题: 这是对按键动作的这是对按键动作的哪一个阶段进行判断?哪一个阶段进行判断?二、矩阵键盘二、矩阵键盘行行列列输出输出输出输出输入输入输入输入0000此时如果无键按下,此时如果无键按下,PINB将为将为0xF00111逐列进行判断:逐列进行判断: if(PINB.4=0) else if(PINB.5=0) else if(PINB.6=0) else if(PINB.7=0)1011PORTB=0xFD;D

71、DRB=0x0F;PORTB=0xF0;PORTB=0xFE;再进行逐列判断:再进行逐列判断: if(PINB.4=0) else if(PINB.5=0) else if(PINB.6=0) else if(PINB.7=0)DDRB = 0x0F; /设置设置PB口低口低4位为输出,高位为输出,高4位为输入位为输入PORTB = 0xF0; /PB口高口高4位接内部上拉电阻,低位接内部上拉电阻,低4位输出位输出0delay_us(10); /等待接口变化稳定等待接口变化稳定if(PINB=0xF0) /如果高如果高4位输入为全高,表示无键按下,返回位输入为全高,表示无键按下,返回0xFF

72、return 0xFF; /有有/无键按下判断无键按下判断PORTB=0XFE; /使使PB0输出输出0,其它输出,其它输出1delay_us(10);if(PINB.4=0) return(0); /检查检查0号键是否按下,如按下返回号键是否按下,如按下返回0号键号键else if(PINB.5=0) return(1); /检查检查1号键是否按下,如按下返回号键是否按下,如按下返回1号键号键else if(PINB.6=0) return(2);/ 检查检查2号键是否按下,如按下返回号键是否按下,如按下返回2号键号键else if(PINB.7=0) return(3); /检查检查3号键

73、是否按下,如按下返回号键是否按下,如按下返回3号键号键 /第一行按键判断第一行按键判断PORTB=0XFD; /使使PB1输出输出0,其它输出,其它输出1delay_us(10);if(PINB.4=0) return(4); /检查检查4号键是否按下号键是否按下else if(PINB.5=0) return(5); /检查检查5号键是否按下号键是否按下else if(PINB.6=0) return(6);/ 检查检查6号键是否按下号键是否按下else if(PINB.7=0) return(7); /检查检查7号键是否按下号键是否按下/第二行按键判断第二行按键判断PORTB=0XFB;

74、/使使PB2输出输出0,其它输出,其它输出1delay_us(10);if(PINB.4=0) return(8); /检查检查8号键是否按下号键是否按下else if(PINB.5=0) return(9); /检查检查9号键是否按下号键是否按下else if(PINB.6=0) return(10);/ 检查检查10号键是否按下号键是否按下else if(PINB.7=0) return(11); /检查检查11号键是否按下号键是否按下/第三行按键判断第三行按键判断PORTB=0XF7; /使使PB3输出输出0,其它输出,其它输出1delay_us(10);if(PINB.4=0) ret

75、urn(12); /检查检查12号键是否按下号键是否按下else if(PINB.5=0) return(13); /检查检查13号键是否按下号键是否按下else if(PINB.6=0) return(14);/ 检查检查14号键是否按下号键是否按下else if(PINB.7=0) return(15); /检查检查15号键是否按下号键是否按下 /第四行按键判断第四行按键判断输出输出输出输出输入输入输入输入unsigned char JianZhi() unsigned char k; DDRB = 0x0F; /设置设置PB口低口低4位为输出,高位为输出,高4位为输入位为输入 PORTB

76、 = 0xF0; /PB口高口高4位接内部上拉电阻,低位接内部上拉电阻,低4位输出位输出0 delay_us(10);/等待接口变化稳定等待接口变化稳定 if(PINB=0xF0) return 0xFF; /如果高如果高4位输入为全高,表示无键按下,返回位输入为全高,表示无键按下,返回0xFF 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+

77、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一、无符号整型参数设置一、无符号整型参数设置1.5.2 1.5.2 参数设置参数设置int x=0;按数字键:按数字键:x=x*10+键值键值按退格键:按退格键:x=x/10按确定键:按确定键:返回返回x的值的值按键按键X X值(初值值(初值x=0x=0)显示值

78、显示值说明说明3x=x*10+3=0*10+3=33 5x=x*10+5=3*10+5=3535 7x=x*10+7=35*10+7=357357按按键错误12x=x/10=357/10=3535删除按除按键错误6x=x*10+6=35*10+6=356356 15z=x确定确定键处理理,循循环设置置结束束int SheZhi(uint z) uchar j,jian; / j作循环控制变量,作循环控制变量,jian存放上次键值存放上次键值 uint x; /x用来存放修改参数的绝对值,用来存放修改参数的绝对值,y用来存放修改的参数用来存放修改的参数 lcd_clear(); XianShi_

79、uint(z); delay_ms(1000); x=0; j=1; jian=0xff; /假定检查键之前,无键按下假定检查键之前,无键按下 while(j)/j=1时循环,时循环,j=0时退出循环时退出循环 delay_ms(20);/去键抖动去键抖动 if(jian=0xff)&(JianZhi()!=0xff)/检查有无键按下检查有无键按下 if(JianZhi()10) x=x*10+JianZhi(); /数字键处理数字键处理 else if(JianZhi()=12) x=x/10; /删除键处理删除键处理 else if(JianZhi()=14)j=0;/直接退出键处理直接退

80、出键处理,返回返回z变量变量 else if(JianZhi()=15)j=0;z=x;/确定键处理,将修改值确定键处理,将修改值y返回返回 jian=JianZhi();/保存当前的键值,以便下次比较保存当前的键值,以便下次比较 lcd_clear(); /清除屏幕显示清除屏幕显示 Lcd_uint(x);/显示修改过的参数显示修改过的参数 /设置结束设置结束 return z; 技技能能 完成子任务四完成子任务四一、在一、在ProteusProteus中绘制原理图中绘制原理图元件名称元件名称元件型号元件型号参数参数说明明ATmega16单片机ATMEGA16LCD模块LM016L按钮BUT

81、TON二、利用二、利用CodeVisionAVR CCodeVisionAVR C编写程序编写程序三、下载程序,观察、分析运行结果三、下载程序,观察、分析运行结果PC PD单片机单片机PB 下载口下载口LED 发光管 计算机并口下载线显示器 LCD键盘 JIAN eeprom uint dong=10, nan=12;教学教学检查检查检查项目目检查结果及改果及改进措施措施应得分得分实得分得分小组讨论、自我评价实验结果正确性20计划制定的准确性10独立完成实验项目的能力15知识点的掌握情况20能力控制点检查15创新能力10课外任务完成情况10评价价自评: 小组: 教师评价:四、填写教学检查表四、

82、填写教学检查表1.6 1.6 子任务五子任务五 LEDLED数码管显示技术数码管显示技术任务要求:任务要求: 通过通过72197219控制七段数码管显示东、南方向的时间。控制七段数码管显示东、南方向的时间。讨论:讨论:讨论:讨论:72197219是什么?是什么?什么是什么是7 7段数码管?段数码管?怎么显示?怎么显示? 字型表,字型表,P37页。页。知知识识 七段数码管显示七段数码管显示abcdefgdp共阴极共阴极数据端数据端公共端公共端01001111思考:思考:共阳极呢共阳极呢?1.6.1 1.6.1 认识七段数码管认识七段数码管4位数码管位数码管1234数据数据控制控制位置控制位置控制

83、技技能能 例子例子元件名称元件名称元件型号元件型号ATmega16单片机ATMEGA164位数码管7SEG-MPX4-CC#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; /送送1的字型码的字型码 PORTD=0Xfd; /第二位显示第二位显示 delay_ms(1); PORTD=0Xff;

84、 /关显示关显示 PORTC=0X5B; /送送2的字型码的字型码 PORTD=0Xfb; /第三位显示第三位显示 delay_ms(1); PORTD=0Xff; /关显示关显示 PORTC=0X4f; /送送3的字型码的字型码 PORTD=0Xf7; /第四位显示第四位显示 delay_ms(1); 在在ProteusProteus仿真环境和实验仿真环境和实验装置上实现。装置上实现。拓展:拓展:1.加长间隔延时会怎样?加长间隔延时会怎样?2.显示显示12.34。弊端:弊端: 1.1.软件动态扫描;软件动态扫描;2.2.浪费资源。浪费资源。知知识识 MAX7219应用应用1.6.2 1.6.

85、2 认识认识MAX7219MAX7219MAX7219教材:教材:P39页。页。特点:特点:1.硬件硬件动态动态动态动态扫描;扫描;2.可控制可控制8位数码管;位数码管;3.SPI(Serial Peripheral Interface-串行外设接串行外设接口口)通讯接口。通讯接口。MAX7219的的SPI控制协议:控制协议:命令字命令字命令值命令值015(1)位显示命令(命令字:)位显示命令(命令字:0x010x08) 如:如:0x030x4F第第3位位字型码字型码3显示数据显示数据0123456789ABCDEFBCD码字形码码字形码0123456789EHLP全灭(2)译码方式命令(命令

86、字:)译码方式命令(命令字:0x09) 如:如:0x090x0F译码模式译码模式高高4位不译码位不译码,第第4位译码位译码小数点不参与译码。小数点不参与译码。结合命令字结合命令字0x010x08: 1.1.当命令值的当命令值的D7位为位为1时,小数点时,小数点(DP)点亮;点亮; 2.当命令值的当命令值的D7位为位为0时,小数点时,小数点(DP)不亮。不亮。 如:如:0x060x89(3)亮度调节命令(命令字:)亮度调节命令(命令字:0x0A) 如:如:0x0A0x08亮度调节命令亮度调节命令 亮度等级亮度等级8 命令值的取值范围为:命令值的取值范围为:0x000x0F。0最暗,最暗,0x0F

87、最亮。最亮。(4)动态扫描位数命令(命令字:)动态扫描位数命令(命令字:0x0B) 如:如:0x0B0x03位数设定位数设定扫描扫描4位位命令值的取值范围为:命令值的取值范围为:0x000x07,对应设定,对应设定18位。位。(5)停机)停机/工作命令(命令字:工作命令(命令字:0x0C)0x0C0x00启启/停机命令停机命令停机停机 命令值的命令值的D0位为位为0表示表示MAX7219停机,停机,D0=1时表时表示正常工作。示正常工作。如:如:(6)显示测试命令(命令字:)显示测试命令(命令字:0x0F) 命令值的命令值的D0位为位为0表示按设定模式正常工作,表示按设定模式正常工作,D0=1

88、时时MAX7219将按最大亮度接通显示。将按最大亮度接通显示。0x0F0x00测试模式测试模式正常工作正常工作1.6.3 1.6.3 单片机的单片机的SPISPI应用应用一、一、SPISPI通讯原理通讯原理SPI 8位移位寄存器位移位寄存器MSBLSB主机主机SPI 8位移位寄存器位移位寄存器MSBLSB从机从机MISOMISOMOSIMOSISPI时钟发生器时钟发生器SCKSCK /SS/SS VCC01011101 0011110101011101 00111101SPI Bus Master Input/Slave OutputSPI总线主机输入总线主机输入/ 从机输出从机输出 ATme

89、ga16ATmega16ATmega16ATmega16中:中:中:中: MISO - PB6 MOSI - PB5 SCK - PB7 - PB4Max7219Max7219Max7219Max7219中:中:中:中: MISO - DIN MOSI SCK - CLK - LOAD二、二、ATmega16ATmega16与与Max7219Max7219的的SPISPI通讯应用通讯应用三、三、ATmega16ATmega16中的中的SPISPI控制寄存器控制寄存器76543210 SPE DORD MSTR CPOL CPHA SPR1 SPR0 SPIE SPCR SPCR SPIESPI

90、E:SPISPI中断使能中断使能 1 1、SPCRSPCRSPISPI控制寄存器控制寄存器 SPESPE:SPISPI功能使能功能使能 DORDDORD:数据次序:数据次序 1 1:低位优先:低位优先 0 0:高位优先:高位优先 MSTRMSTR:主:主/ /从选择从选择 1 1:主:主SPISPI 0 0:从:从SPI SPI CPOLCPOL:同步信号(:同步信号(SCKSCK)极性)极性 1 1:空闲时:空闲时SCKSCK高电平高电平0 0:空闲时:空闲时SCKSCK低电平低电平 CPHACPHA:数据采样相位(时刻):数据采样相位(时刻) 1 1:SCKSCK结束沿采样结束沿采样 0

91、0:SCKSCK起始沿采样起始沿采样 SPR1SPR1、SPR0SPR0:SCKSCK速率选择速率选择 P43P43页,表页,表1 11717 FoscFosc系统时钟频率。系统时钟频率。 76543210 WCOL - - - - SPI2X SPIF SPSR SPSR SPIFSPIF:SPISPI中断标志中断标志 串行发送结束后,串行发送结束后,SPIF SPIF 将被置位(将被置位(1 1)。)。2 2、SPSRSPSRSPISPI状态寄存器状态寄存器 WCOLWCOL:写冲突标志位:写冲突标志位 SPI2XSPI2X:SPISPI倍率倍率76543210 LSB MSB 3 3、S

92、PDRSPDRSPISPI数据寄存器数据寄存器 SPISPI通讯的数据将从通讯的数据将从SPDRSPDR中读中读/ /写。写。 SPDR SPDR 四、自定义控制函数四、自定义控制函数#define uchar unsigned charvoid spi_xie(uchar i,uchar j) /PB.7(SCK)/PB.7(SCK)、PB.5(MOSI)PB.5(MOSI)、PB.4(/SS)PB.4(/SS)为输出,为输出,PB.6(MISO)PB.6(MISO)为输入为输入, DDRB.7=1; DDRB.6=0; DDRB.5=1; DDRB.4=1; SPCR=0x5e; /SPI

93、设置:设置:SPI使能、禁止中断,数据传送高位在前,使能、禁止中断,数据传送高位在前, / 数据传送频率为系统频率的数据传送频率为系统频率的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 1、SPISPI写数据函数写数据函数 void spi_

94、7219c() spi_xie(0x0B, 0x07);/显示显示8位位 spi_xie(0x0A, 0x09);/亮度调节亮度调节 spi_xie(0x09, 0xFF);/每位每位BCD输入输入 spi_xie(0x0C, 0x01);/工作状态工作状态 spi_xie(0x0F, 0x00);/非测试非测试 2 2、Max7219Max7219初始化函数初始化函数 技技能能 完成子任务五完成子任务五一、在一、在ProteusProteus中绘制原理图中绘制原理图元件名称元件名称元件型号元件型号参数参数说明明ATmega16单片机ATMEGA16MAX7219MAX72197数码管组7SE

95、G-MPX4-Cc共阴极电阻RES10k教材教材P41页,图页,图1-29。二、利用二、利用CodeVisionAVR CCodeVisionAVR C编写程序编写程序void xianshi_2uchar(uchar m,uchar n) spi_xie(1,0x0f);/关闭此位关闭此位 spi_xie(2,m/100);/显示显示m百位上的数字百位上的数字 spi_xie(3,m/10%10); /显示显示m十位上的数字十位上的数字 spi_xie(4,m%10);/显示显示m个位上的数字个位上的数字 spi_xie(5,0x0f); /关闭此位关闭此位 spi_xie(6,n/100)

96、;/显示显示n百位上的数字百位上的数字 spi_xie(7,n/10%10); /显示显示n十位上的数字十位上的数字 spi_xie(8,n%10)/显示显示n个位上的数字个位上的数字 三、下载程序,观察、分析运行结果三、下载程序,观察、分析运行结果PA PB单片机模块下载口MAX7219芯片7219X7219W 7219D LCDW LCDD 8个数码显示器计算机 技技能能 创新训练创新训练一、点阵一、点阵LEDLED模块模块二、汉字字模二、汉字字模 点阵的列采用共阴极时,可以在点阵的列采用共阴极时,可以在行信号上发送数据。二进制某位为行信号上发送数据。二进制某位为1时,时,对应二极管点亮,

97、反之不亮。对应二极管点亮,反之不亮。 这样,若干列各自的显示数据构这样,若干列各自的显示数据构成一个汉字的成一个汉字的“字模字模”。上图上图“甲甲”字的字模为:字的字模为: 0x000x00、0x000x00、0x000x00、0xF80xF8、0xA80xA8、0xFF0xFF、0xA80xA8和和0xF80xF8。 三、利用三、利用CodeVisionAVR CCodeVisionAVR C编写程序编写程序四、下载程序,观察、分析运行结果四、下载程序,观察、分析运行结果 PB单片机模块下载口MAX7219芯片7219X7219W 7219D JUZL JUZH 8*8点阵模块计算机 以小组

98、为单位,讨论理解并优化程序。以小组为单位,讨论理解并优化程序。教学教学检查检查检查项目目检查结果及改果及改进措施措施应得分得分实得分得分小组讨论、自我评价实验结果正确性20计划制定的准确性10独立完成实验项目的能力15知识点的掌握情况20能力控制点检查15创新能力10课外任务完成情况10评价价自评: 小组: 教师评价:五、填写教学检查表五、填写教学检查表1.7 1.7 项目设计与实现项目设计与实现 以小组为单位,对照教材以小组为单位,对照教材P48P485555页,共同完成项目。页,共同完成项目。课外作业二:课外作业二: 1.1.教材教材P44P44页习题;页习题; 2.2.上交本组成员五个子

99、任务的小组评分成绩。上交本组成员五个子任务的小组评分成绩。项目项目组别组别姓姓 名名子任务一子任务一子任务二子任务二子任务三子任务三子任务四子任务四子任务五子任务五组长姓名1.8 1.8 小结小结1.ATmega161.ATmega16内部结构,引脚功能;内部结构,引脚功能;2.DDRx2.DDRx、PORTxPORTx和和PINxPINx的应用;的应用;3.3.输入输入/ /输出控制应用;输出控制应用;4.4.字符型字符型LCDLCD显示应用;显示应用;5.5.键盘扫描应用;键盘扫描应用;6.Max72196.Max7219、7 7段数码管以及点阵显示应用;段数码管以及点阵显示应用;7.7.项目总体实现的理解和应用。项目总体实现的理解和应用。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号