盛群单片机讲义_第1页
盛群单片机讲义_第2页
盛群单片机讲义_第3页
盛群单片机讲义_第4页
盛群单片机讲义_第5页
已阅读5页,还剩83页未读 继续免费阅读

下载本文档

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

文档简介

1、基于基于C的盛群单片机原理及应用的盛群单片机原理及应用2010/02课程相关介绍课程相关介绍课程性质课程性质 32学时校内任选课课程内容课程内容 课程分为理论和实验二部分: 理论:12学时,讲述盛群HT46R232单片机的内部结构和工作原理、盛群c语言、盛群单片机开发环境和流程 安排在3206教室 实验:20学时, 上机实际操作、盛群单片机开发入门 (初步)安排在s402实验室2课程资料课程资料教材:HOLTEK HT46系列单片机C语言实例教程 北京邮电大学出版社参考资料:单片机原理与应用 应明仁、王化成主编 C程序语言及应用范例 HT-IDE3000使用手册 HT46R232数据手册 ht

2、tp:/ 重庆大学生“盛群杯”单片机应用设计竞赛:由重庆市教委主办,重庆市高校实验室工作研究会指导,盛群半导体有限公司和重庆邮电大学联合承办开展的单片机应用设计竞赛,该竞赛采用市面上广泛应用的盛群HT46系列单片机为竞赛工具,由学生自主命题、设计完成整个作品创作。 已经举办3届。 历届竞赛所用单片机芯片型号: HT46R23/24-HT46F49E,HT46RU232,HT46R54A -HT46F49E,HT46RU232 重庆大学生盛群杯单片机应用设计竞赛网站: http:/ 平时: 随机点名及签到卡 期末: 交一份报告答疑安排答疑安排 信科s507 QQ群:1126746435学习方法学

3、习方法 理论为辅,实践为主 由点到面 从简单功能入手,由浅到深,由易到难,循序渐进 坚持,讲究方法,合理高效利用资源6必备知识必备知识 数字电路 数字电路逻辑设计 王毓银 模拟电路 清华大学华成英老师的模电视频 c语言 谭浩强老师的C语言或21天学会C语言7常见问题常见问题1、c语言和汇编语言在开发单片机时的优缺点 汇编语言: 优点: 占用资源少,执行效率高,一条指令就对应一 个机器码,每一步执行什么动作都很清楚,程序大小和堆栈调用情况容易控制,调试方便。 缺点: 移植性差 C语言: 优点: 模块化编程语言,有丰富的函数库,可读性好,移植容易 缺点: 占用资源较多,执行效率没有汇编高8 2、8

4、位单片机与ARM嵌入式系统 功能结构和单价的差异造成应用层次的不同: ARM 适用于系统复杂度较大的高级产品,如PDA、手机等应用 8 位单片机因架构简单,硬件资源相对较少,适用于一般的工业控制,消费性家电等等 3、单片机的学习阶段 第一阶段是先浏览教科书里的硬体部分,大至了解单片机的9硬体结构。如ROM、RAM、IO 口等,以及看一些厂家的芯片手册。第二阶段就是了解单片机的编程语言。第三阶段熟悉单片机的开发环境及流程。第四阶段利用实验板进行各种单片机实验。第五阶段自己焊接板子编程实践,多看看相关的电子技术杂志网站,看看别人的开发经验,硬件设计方案以及他人的软件设计经验。有可能的话,还可以参加

5、一些电子设计大赛。104、盛群单片机适合初学者不HOLTEK单片机结构典型和规范,适合于基本知识的学习。具有丰富的产品系列,适合于不同产品的开发。技术支持力度大,书籍和网上资源丰富。有片内flash 存储器,便于程序多次修改。开发系统相当完善。指令简洁,易学易懂缺点:需要仿真器,价格对学生来说偏高。115、单片机到底是什么,怎么工作的 中央处理器CPU、随机存取存储器RAM、只读存储器ROM、I/O接口、定时器/计数器以及通信接口等集成在一块芯片上,构成了一个单片微型计算机。应用范围:智能仪器仪表、工业测控、日常生活及家电、计算机网络与通信技术。 单片机是自动地进行运算和控制,把实现计算和控制

6、的步骤一步步地用命令的形式,即一条条指令(Instruction)预先存入到存贮器中,单片机在CPU的控制下,将指令一条条地取出来,并加以翻译和执行,得到你要的东西。 12第一讲第一讲盛群公司简介 盛群半导体为国内台湾地区一家专业微控制器IC设计厂商,公司成立于1998年,总部坐落于新竹科学工业园区,主要产品包括微控制器IC及其周边电子元器件。产品除一般应用领域外,还涵盖语音、通讯、计算机外设、家电、医疗、车用及安全监控等各领域,此外并提供各种电源管理及非易失性内存等微控制器外围组件,期能以提供客户更具功能性之完整解决方案为产品发展目标。13HT46HT46系列单片机的特点及应用举例系列单片机

7、的特点及应用举例 8位高性能精简指令集(RSIC)单片机 低功耗、I/O 使用灵活、可编程分频器、计数器、多通道A/D 转换、脉宽调制功能、I2C 接口、UART 总线、暂停和唤醒功能,低电压复位功能 广泛应用于传感器的A/D 转换、马达控制、工业控制、消费类产品,子系统控制器等。141516HT46R2321、命名规则2、封装形式(见下页)3、特性图 (见下页)4、结构框图(见下页) 17181920第二讲程序存储器程序存储器 1、HT46R232程序存储器为EPROM(可擦写可编程只读存储器) 2、大小:409616 位 3、用途:用来存放要执行的指令代码,一些数据、表格和中断入口。 4、

8、结构框图:(见下页) 2122数据存储器数据存储器1、HT46R232的数据存储器为RAM(随机存取存储器)2、大小:2318位 特殊功能寄存器:398位 (大多数可读写,部分只读) 通用数据存储器:1928位3、用途: 特殊功能寄存器用来控制单片机内部功能(如定时器和中断等)和外部功能(如I/O 数据和AD 转换控制)的正确工作。 通用数据存储器用来存放临时数据。234、结构框图(见下页)5、特殊功能寄存器申明HT46R232.hunsigned char _tmr1h0 x0f; #define _pa0_12_0unsigned char _tmr1l0 x10; #define _pa

9、1_12_1unsigned char _tmr1c0 x11; #define _pa2_12_2unsigned char _pa 0 x12; #define _pa3_12_3unsigned char _pac0 x13; #define _pa4_12_4unsigned char _pb 0 x14; #define _pa5_12_5unsigned char _pbc0 x15; #define _pa6_12_6unsigned char _pc 0 x16; #define _pa7_12_7unsigned char _pcc0 x17;2425堆栈寄存器堆栈寄存器1、

10、特殊的存储器空间,用来保存PC的值2、HT46R232有8层堆栈3、当发生子程序调用或中断响应时,程序计数器(PC)的值会被压入堆栈;在子程序调用结束或中断响应结束时,堆栈将原先压入堆栈的内容弹出,重新装入程序计数器中。在系统复位后,堆栈指针会指向堆栈顶部。26输入输入/ /输出端口输出端口( (* * * *) )1、HT46R232(28脚封装)有23个双向输入/输出口,记为PA(PA0-7)、PB(PB0-7)、PC(PC0-4)和PD(PD0-1)。2、输出时,端口有锁存功能,不需要外接上拉电阻; 输入时,端口无锁存功能,需外接或设置内带上拉电阻。3、每个输入/输出口都有一个控制寄存器

11、(PAC,PBC,PCC,PDC),用来控制端口的输入/输出状态。 例:PA口作为输出口 _pac=0; PA口作为输入口 _pac=1;4、输入/输出端口硬件示意图(见下页) 2728P沟道DMOS管05、当输入/输出口被设置为输出状态,此时如果对输出口做读取的操作,则会读取到内部数据寄存器中的锁存值,而不是输出引脚实际的逻辑状态。6、输入/输出端口直流特性(见下页)2930测试条件 最小 典型 最大时钟电路时钟电路1、 指令执行过程:首先从程序存储器中读出指令,送入指令寄存器保存,然后送到指令译码器对指令进行译码,译码结果送定时控制逻辑电路,由定时控制逻辑电路产生各种定时信号和控制信号,再

12、送到单片机的各个部件去进行相应的操作。 2、每个单片机中一定要有系统时钟,由晶体/陶瓷振荡器或RC振荡器提供,作为单片机运行时的时基,也就是说,振荡器停止振荡,单片机便停止工作。系统时钟决定了单片机的运行速度。3、 HT46R232 有两种振荡方式,外部RC 振荡和外部晶体振荡,可以通过掩膜选项设定,不管选用哪一种振荡方式,其信号都可以做为系统时钟。314、选用外部RC 振荡方式,在OSC1 与VSS 之间需要接一个外部电阻,其阻值为30kW750kW;而OSC2 上会输出带上拉的系统频率的4 分频信号,可用于同步外部逻辑。5、选用晶体振荡方式,在OSC1 和OSC2 之间需要连接一个晶体,用

13、来提供晶体振荡器所需的反馈和相移,除此之外,不再需要其它外部元件。另外,在OSC1 和OSC2 之间也可使用谐振器来取代晶体振荡器,但是在OSC1 和OSC2 需要多连接两个电容(如果振荡频率小于1MHz)。 3233复位电路(上电复位)复位电路(上电复位)1、复位是对单片机的初始化操作,除正常复位操作外,当由于程序运行出错或操作失误造成“死机”,可复位使单片机重新正常运行。2、复位电路3、实用复位电路344、复位对寄存器的影响35第三讲最小系统框图最小系统框图1、HT46R2322、时钟振荡电路 4MHZ晶振3、基本复位电路3637中断系统中断系统1、中断的概念 单片机在执行某一段程序的过程

14、中,由于单片机系统内部或者外部的某种原因,有必要中止原程序的执行,而去执行相应的处理程序,待处理结束后,再返回来继续执行原程序的过程。382、中断处理过程中断请求、中断响应、中断处理和中断返回3、中断的作用 使单片机对外部或内部随机发生的事件具有实时处理的能力。4、HT46R232中断源 一个外部中断、两个内部定时/计数器中断、一个A/D 转换中断和一个I2C 总线中断。(表见下页)5、HT46R232中断控制寄存器中断控制寄存器INTC0和INTC1包含了中断控制位和中断请求标志,其中中断控制位用来设置中断允许/禁止,中断请求标志表征外部或内部中断发生。(表见下页)3940优先级可以人为改变

15、416、HT46R232中断注意事项中断入口地址只要有中断子程序被服务,其余的中断全部都被自动禁止(通过清除EMI 位),这种做法的目的在于防止中断嵌套。程序员可以置位EMI、INTC0 和INTC1 所对应的位,以便进行中断嵌套。中断服务程序的写法重要寄存器内容的保护42定时定时/ /计数器计数器1、概述 定时/计数器是单片机的一个重要组成部分,为设计者提供了与时间有关的功能的实现方法。 定时、计数是同一个部件不同功能的体现:定时,是对单片机内部系统时钟作用下产生的固定时间间隔的脉冲进行计数来实现定时;计数,是对单片机外部引脚上触发的脉冲进行计数。2、定时/计数器实现方法的比较硬件电路软件延

16、时单片机内部提供的可编程定时/计数器433、HT46R232内部的定时/计数器 HT46R232 有两个定时/计数器(TMR0,TMR1)。 定时/计数器0 是16 位向上计数的,其时钟来源可以是外部信号输入或内部时钟,内部时钟为fSYS。 定时/计数器1 是16 位向上计数的,其时钟来源可以是外部信号输入或内部时钟,内部时钟为fSYS/4。 外部信号输入可以用来计数外部事件、测量时间间隔、测量脉冲宽度或产生一个精确的时基信号。 (结构框图见下页)44454、相关寄存器定时/计数器0TMR0H(0CH)、TMR0L(0DH), TMR0C(0EH)功能表见(下页)定时/计数器1TMR1H(0F

17、H)、TMR1L(10H), TMR1C(11H)功能表见(下页)4647TMR0C(00-0 1000)48TMR1C(00-0 1-)5、工作模式定时模式(即普通的定时器) 用来定时固定的时间间隔,当定时器溢出时,产生一个内部中断信号。 定时器0: 定时时间(T)=(65536-计数初值)预分频/fsys 定时器1: 定时时间(T)=(65536-计数初值)4/fsys TMR0(1)L=计数初值%256 ,TMR0(1)H=计数初值/25649 写入TMR0L(TMR1L)只能将数据写到低字节缓冲器(8 位) ,而写入TMR0H(TMR1H)会把指定数据和低字节缓冲器的数据分别写到TMR

18、0H(TMR1H)和TMR0L(TMR1L)预置寄存器中,定时/计数器0/1 预置寄存器的内容只有在写入TMR0H(TMR1H)时才会被改变。读取TMR0H(TMR1H)会把TMR0H(TMR1)的内容送至目标单元,而TMR0L(TMR1L)的值被送至低字节缓冲器中;读TMR0L(TMR1L)将读取低字节缓冲器的值。 无论是定时模式还是外部事件计数模式,一旦开始计数,定时/计数器会从寄存器当前值向上计到0FFFFH。一旦发生溢出,定时/计数器会从预置寄存器中重新加载初值,并开始计数;同时置位中断请求标志。T0ON/T1ON只能用指令清除。50 在定时/计数器停止计数时,写数据到定时/计数器的预

19、置寄存器中,同时会将该数据写入到定时/计数器。但如果在定时/计数器运行时这么做,数据只能写入到预置寄存器中,直到发生溢出时才会将数据从预置寄存器加载到定时/计数器寄存器。 读取定时/计数器时,计数会被停止,以避免发生错误;计数停止会导致计数错误。 外部事件计数模式 测量外部引脚的逻辑电平改变的次数。 脉冲宽度测量模式 一次测量一个外部引脚的脉冲宽度。 51第四讲8 8通道通道1010位的位的A/DA/D转换器转换器1、概念 将模拟量转换为数字量的器件称为A/D转换器,常用ADC表示。2、转换过程 模拟信号采样保持量化编码 即首先将输入的模拟电压信号按照某一时间节拍进行采样,并将采样结果进行保持

20、,在保持的时间内将采样的电压量化为数字量,并按一定的编码形式给出转换结果。 523、A/D转换器分类 直接A/D转换器,把输入的模拟电压直接转换成输出的数字量 间接A/D转换器,将输入的模拟信号先转换为某种中间量(例如,时间或频率),再将中间量转换为数字量。HOLTEK MCU的A/D转换器采用的是逐次逼近式A/D转换方式。4、主要参数 分辨率: 输出数字量变化一个相邻数码所需输入模拟电压的变化量,定义为满刻度与2n的比值,通常以输出数字信号的位数来表示。 表明了A/D转换器对输入信号的分辨能力。 53 量化误差 有限分辨率A/D的阶梯状转移特性曲线与理想无限分辨率A/D的转移特性曲线(直线)

21、之间的最大偏差称为量化误差。通常是1个或半个最小数字量的模拟变化量,表示为1LSB,1/2LSB。 转换时间 完成一次从模拟转换到数字的AD转换所需要的时间。 量程 A/D能够转换的输入电压的范围。5、A/D的选择 主要看位数、精度要求,转换时间,输入模拟信号范围和极性,以及几路的,什么输出等方面综合考虑。 546、HT46R232的A/D转换器 有8个通道、10位解析度(9位精度)的A/D转换器,其参考电压为VDD。与A/D转换有关的寄存器ADRL(24H)、ADRH(25H): 是A/D 转换结果的高字节和低字节寄存器,是只读寄存器。(表见下页)ADCR(26H):是A/D 转换控制寄存器

22、,用来定义A/D 通道数量、模拟输入通道选择、A/D 转换开始控制和完成标志。(表见下页)ACSR(27H):是A/D 时钟控制寄存器,用来选择A/D 的时钟来源。(表见下页)5556思考:怎么计算转换后电压值57ADCR上电默认值0100 00005859ACSR上电复位默认值1-00直流、交流特性601LSB(最低有效位)所代表电压值5V/1024=4.88mvA/D转换时钟周期最小1us含义?A/D转换时序图 61A/D转换步骤步骤1 通过ACSR 寄存器中的ADCS1 和ADCS0 位,选择所需的A/D 转换时钟。步骤2 通过ADCR 寄存器中的ACS2ACS0 位,选择连接至内部A/

23、D 转换器的通道。步骤3 通过ADCR 寄存器中的PCR2PCR0 位,选择PB 端口的A/D 输入引脚,并将它们设置为A/D 输入引脚。此步骤也可在第二步写ADCR 寄存器时完成。步骤462 如果要使用中断,则中断控制寄存器必须正确地设置,以确保A/D 功能的动作。中断控制寄存器INTC0 里总中断控制位EMI 必须置位为“1”,INTC1里A/D 转换器的中断使能位EADI 也必须置位为“1”。步骤5 通过设定ADCR 寄存器中的START 位从“0”到“1”再回到“0”,可以开始模数转换的过程。该位需初始化为“0”步骤6 可以轮询ADCR 寄存器中的EOC 位,检查模数转换过程是否完成。

24、当此位成为逻辑低时,表示转换过程已经完成。转换完成后,可读取A/D 数据寄存器ADRL 和ADRH 获得转换后的值。另一种方法是,若中断使能且堆栈未满,则转换完成后,程序会进入A/D 中断服务子程序。63注意事项 为了确保A/D 转换顺利完成,START 位应保持为“0”,直到EOC位变为“0”(A/D 转换完成信号)。 每次改变模拟通道选择位后都要注意初始化A/D 转换器,否则EOC可能处于不确定状态。在模拟通道选择位改变的10 个指令周期内将START 置1 后清0 来初始化A/D 转换器。模拟通道选择位都清0,可以不初始化A/D。64第五讲第五讲软件仿真示例软件仿真示例 LED发光二极管

25、闪烁 推荐网站:PWMPWM输出输出1、概念 脉宽调制(PWM:(Pulse Width Modulation)是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。 简而言之,PWM是一种对模拟信号电平进行数字编码的65的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,

26、断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM进行编码。PWM的一个优点是从处理器到被控系统信号都是数字形式的,无需进行数模转换。让信号保持为数字形式可将噪声影响降到最小。噪声只有在强到足以将逻辑1改变为逻辑0或将逻辑0改变为逻辑1时,也才能对数字信号产生影响。2、主要参数66 频率 占空比(分辨率)3、主要应用 调速,调光,模拟DA4、HT46R232的PWM输出 HT46R232(28脚封装)有2个通道(6+2)/(7+1)位的PWM输出(由掩膜选项决定),与PD0/PD1共用引脚。 PWM 计数器的时钟来源为系统时钟(fSYS),由数据寄存器PWM0(1AH)、P

27、WM1(1BH) 来控制输出。一旦PD0/PD1选择为PWM 输出,并且PD0/PD1为输出模式(PDC.0/PDC.1=“0”),则向PD0/PD1 寄存器写“1”能够产生PWM 输出,向PD0/PD1 寄存器写“0”会使PD0 输出保持为“0”。 67(6+2)位PWM模式举例: PWM寄存器组成 每个调制周期占空比 示意图见下表68PWM7PWM2PWM1PWM0DCAC69PWM 的调制频率、周期频率和占空比的关系总结如下:PFDPFD输出输出1、概念 PFD,可编程分频器,可用于发声。702、HT46R232的PFD功能PFD 输出引脚与PA3 引脚共用。此功能通过配置选项选择。PF

28、D 电路使用定时器溢出信号作为它的时钟源,在配置选项中可设置定时器0或定时器1。定时器计数值满而产生溢出信号,导致PFD 输出改变状态。定时器将自动地重新载入预置寄存器的值,并继续向上计数。要使PFD 正确运作,必须将PA 控制寄存器PAC 的第3 位设置为输出。如果把它设置为输入,则PFD输出不工作,该引脚仍是作为普通的输入引脚使用。只有把PA3 位置“1”,PFD 输出引脚才会有输出。这个输出数据位被用作PFD 输出的开/关控制。注意,如果PA3 输出数据位被清为“0”PFD 输出将为低电平。71PFD输出波形示意图72举例发声:C调 1 523HZ 怎么产生?73盛群盛群C C语言程序实

29、例语言程序实例#include HT46R232.h”#include HT46R232.h”typedef unsigned char uchartypedef unsigned char uchar;typedef unsigned int uinttypedef unsigned int uint;void init() /void init() /初始化操作初始化操作 。 void delayms(uint xms )/void delayms(uint xms )/延时子程序延时子程序 。 74第六讲第六讲 void main() void main() init(); init()

30、; while(1) while(1) 。 delaymsdelayms(500);(500); 。 75盛群盛群C C语言的数据类型、存储类别与修饰词、常量语言的数据类型、存储类别与修饰词、常量1 1、变量的数据类型、变量的数据类型(见下表)2 2、变量的范围、变量的范围局部变量: 定义在函数内部的变量都是局部变量,只有当函数被执行时,局部变量才有效,当执行完毕并离开此函数后,局部变量将无效。注:定义在函数中static变量是全局变量。全局变量: 定义在函数之外的变量是全局变量,当函数在执行时,变量都有效,任何函数都可以读取或修改这个变量。注:全局变量宣告时不可以同时设定初始值。76773

31、3、存储类别与修饰词、存储类别与修饰词 变量宣告或定义时必须指定其数据类型,但是存储类别与修饰词是可选择的,可根据应用时的实际需要去选择。78autoauto: 定义局部变量使用的,没有指定存储类别的局部变量都是auto。局部变量是存放在RAM bank0的空间。RegisterRegister:目前并未实做此功能。StaticStatic:static的变量会一直有效到整个函数结束后才失效,但必须要在它所定义的函数中才可以读写。ExternExtern:通知c编译器此变量是定义在其他的函数中的。注:程序的开发中,extern用的较多,其它三种不具特别优势,建议不要使用。ConstConst:C编译器会将const的变量存放在程序存储器中,

温馨提示

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

最新文档

评论

0/150

提交评论