《2022年按键控制单片机PWM输出设计》由会员分享,可在线阅读,更多相关《2022年按键控制单片机PWM输出设计(14页珍藏版)》请在金锄头文库上搜索。
1、学号1322010110 天津城建大学单片机原理及应用A 课程设计说明书按键控制单片机PWM 输出设计起止日期:2016 年 05 月 30 日 至 2016 年 6 月 10 日学生姓名班级成绩指 导 教 师 ( 签 字 ) 控制与机械工程学院2016 年 6 月 10 日名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 14 页 - - - - - - - - - 目 录第一章 系统方案设计 . 11.1 PWM. 11.2 STC12C5A60S2简介 . 11.3
2、仿真工具介绍 . 21.3.1 Protues简介 . 21.3.2 Keil uVision3简介 . 4第二章 硬件电路设计 . 52.1 复位电路 . 52.2 时钟电路 . 52.3 按键中断 . 52.4 显示电路 . 6第三章 程序设计流程图. 7第四章 系统仿真. 84.1 仿真图 . 84.2 程序. 84.3 PCB. 错误!未定义书签。参考资料 . 错误!未定义书签。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 14 页 - - - - - - -
3、- - 1 第一章系统方案设计1.1 PWM PWM 的全称是 Pulse Width Modulation (脉冲宽度调制) ,它是通过改变输出方波的占空比来改变等效的输出电压。1.2 STC12C5A60S2 简介STC12C5A60S2 是 STC生产的单时钟/ 机器周期 (1T) 的单片机,是高速、低功耗、超强抗干扰的新一代 8051 单片机,指令代码完全兼容传统8051,但速度快8-12 倍。内部集成MAX810专用复位电路,2 路 PWM,8 路高速 10 位 A/D 转换,针对电机控制,强干扰场合。1)管脚说明 : 1、P0.0P0.7 P0:P0口既可以作为输入/ 输出口,也可
4、以作为地址/数据复用总线使用。当P0口作为输入 / 输出口时, P0是一个 8 位准双向口, 内部有弱上拉电阻,无需外接上拉电阻。当 P0作为地址 / 数据复用总线使用时,是低8 位地址线A0A7 ,数据线D0D7 2、P1.0/ADC0/CLKOUT2 标准 IO 口、 ADC输入通道 0、独立波特率发生器的时钟输出3、P1.1/ADC1 4、P1.2/ADC2/ECI/RxD2 标准 IO 口、 ADC输入通道 2、PCA计数器的外部脉冲输入脚,第二串口数据接收端5、P1.3/ADC3/CCP0/TxD2 外部信号捕获,高速脉冲输出及脉宽调制输出、第二串口数据发送端6、P1.4/ADC4/
5、CCP1/SS 非SPI 同步串行接口的从机选择信号7、P1.5/ADC5/MOSI SPI 同步串行接口的主出从入( 主器件的输入和从器件的输出) 8、P1.6/ADC7/SCLK SPI 同步串行接口的主入从出9、P2.0P2.7 10、P2口内部有上拉电阻,既可作为输入输出口(8 位准双向口 ),也可作为高8 位地址总线使用。11、P3.0/RxD 标准 IO 口、串口1 数据接收端12、P3.1/INT0非外部中断0,下降沿中断或低电平中断13、P3.3/INT1 14、P3.4/T0/INT非/CLKOUT0 定时器计数器0 外部输入、定时器0 下降沿中断、定时计数器0 的时钟输出2
6、)A/D 转换器的结构:STC12C5A60AD/S2 系列带 A/D 转换的单片机的A/D 转换口在P1 口,有 8 路 10 位高速 A/D 转换器,速度可达到250KHz(25 万次 / 秒) 。8 路电压输入型A/D,可做温度检测、电池电压检测、按键扫描、频谱检测等。 上电复位后P1口为弱上拉型IO 口, 用户可以通过软件设置将8 路中的任何一路设置为A/D转换,不须作为A/D 使用的口可继续作为IO 口使用。单片机 ADC由多路开关、比较器、逐次比较寄存器、10 位 DAC 、转换结果寄存器以及ADC_CONTER名师资料总结 - - -精品资料欢迎下载 - - - - - - -
7、- - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 14 页 - - - - - - - - - 2 构成。该单片机的ADC是逐次比较型ADC 。主次比较型ADC由一个比较器和D/A 转换器构成,通过逐次比较逻辑, 从最高位 (MSB)开始,顺序地对每一输入电压与内置D/A 转换器输出进行比较,经过多次比较,使转换所得的数字量逐次逼近输入模拟量对应值。逐次比较型A/D 转换器具有速度高,功耗低等优点。需作为 AD使用的口先将P1ASF特殊功能寄存器中的相应位置为1 , 将相应的口设置为模拟功能。STC12C5A60S2 引脚图如图1 所示。图
8、1 STC12C5A60 引脚图1.3 仿真工具介绍1.3.1 Protues简介Protues软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具 ( 仿真软件 ) ,从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软
9、件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11 、PIC10/12/16/18/24/30/DsPIC33、AVR 、ARM 、 8086 和 MSP430等, 2010 年即将增加Cortex 和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和 MPLAB 等多种编译。Protues软件具有其它EDA工具软件(例:multisim )的功能。这些功能是:(1)原理布图(2)PCB自动或人工布线(3)SPICE电路仿真名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - -
10、名师精心整理 - - - - - - - 第 4 页,共 14 页 - - - - - - - - - 3 革命性的特点:(1)互动的电路仿真。用户甚至可以实时采用诸如RAM ,ROM ,键盘,马达,LED ,LCD ,AD/DA ,部分 SPI 器件,部分IIC 器件。(2)仿真处理器及其外围电路。可以仿真51 系列、 AVR 、PIC、ARM 、等常用主流单片机。还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等,Protues 建立了完备的电子设计开发环境。Protues具有 4 大功能模块 : 1)智能原理图设计
11、(ISIS )丰富的器件库:超过27000 种元器件,可方便地创建新元件;智能的器件搜索:通过模糊搜索可以快速定位所需要的器件;智能化的连线功能:自动连线功能使连接导线简单快捷,大大缩短绘图时间;支持总线结构:使用总线器件和总线布线使电路设计简明清晰;可输出高质量图纸:通过个性化设置,可以生成印刷质量的BMP图纸,可以方便地供WORD、POWERPOINT等多种文档使用。2)完善的电路仿真功能(Prospice )ProSPICE混合仿真:基于工业标准SPICE3F5,实现数字 / 模拟电路的混合仿真;超过27000 个仿真器件:可以通过内部原型或使用厂家的SPICE文件自行设计仿真器件,La
12、bcenter也在不断地发布新的仿真器件,还可导入第三方发布的仿真器件;多样的激励源:包括直流、正弦、脉冲、分段线性脉冲、音频(使用 wav 文件) 、指数信号、 单频 FM 、数字时钟和码流,还支持文件形式的信号输入;丰富的虚拟仪器:13 种虚拟仪器,面板操作逼真,如示波器、逻辑分析仪、信号发生器、直流电压/ 电流表、交流电压/ 电流表、数字图案发生器、频率计/计数器、逻辑探头、虚拟终端、SPI 调试器、 I2C调试器等;生动的仿真显示:用色点显示引脚的数字电平,导线以不同颜色表示其对地电压大小,结合动态器件 (如电机、 显示器件、 按钮)的使用可以使仿真更加直观、生动; 高级图形仿真功能
13、(ASF ) :基于图标的分析可以精确分析电路的多项指标,包括工作点、瞬态特性、频率特性、传输特性、噪声、失真、傅立叶频谱分析等,还可以进行一致性分析。3)独特的单片机协同仿真功能(VSM )支持主流的CPU类型:如 ARM7 、8051/52 、AVR 、PIC10/12 、PIC16、PIC18、PIC24、dsPIC33、HC11 、BasicStamp 、8086、 MSP430 等, CPU类型随着版本升级还在继续增加,如即将支持CORTEX 、DSP处理器;支持通用外设模型:如字符LCD模块、图形LCD模块、 LED点阵、 LED七段显示模块、键盘/ 按键、直流 /步进 / 伺服电
14、机、 RS232虚拟终端、电子温度计等等,其COMPIM (COM 口物理接口模型)还可以使仿真电路通过PC机串口和外部电路实现双向异步串行通信;实时仿真: 支持 UART/USART/EUSARTs仿真、 中断仿真、 SPI/I2C 仿真、 MSSP 仿真、 PSP仿真、 RTC仿真、 ADC仿真、 CCP/ECCP 仿真。 编译及调试:支持单片机汇编语言的编辑/ 编译 / 源码级仿真,内带8051、AVR 、PIC 的汇编编译器,也可以与第三方集成编译环境(如IAR、Keil和 Hitech )结合,进行高级语言的源码级仿真和调试。4)实用的PCB设计平台原理图到 PCB的快速通道:原理图
15、设计完成后,一键便可进入ARES的 PCB设计环境,实现从概念到产品的完整设计; 先进的自动布局/ 布线功能: 支持器件的自动/ 人工布局; 支持无网格自动布线或人工布线;支持引脚交换/ 门交换功能使PCB设计更为合理;完整的 PCB设计功能:最多可设计 16 个铜箔层, 2 个丝印层, 4 个机械层 (含板边),灵活的布线策略供用户设置,自动设计规则检查,3D 可视化预览; 多种输出格式的支持:可以输出多种格式文件,包括 Gerber 文件的导入或导出,便利与其它PCB设计工具的互转(如protel)和 PCB板的设计和加工。5)Protues 提供了丰富的资源名师资料总结 - - -精品资
16、料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 14 页 - - - - - - - - - 4 (1)Protues可提供的仿真元器件资源:仿真数字和模拟、交流和直流等数千种元器件,有30多个元件库。( 2)Protues可提供的仿真仪表资源:示波器、逻辑分析仪、虚拟终端、SPI 调试器、 I2C 调试器、信号发生器、模式发生器、交直流电压表、交直流电流表。理论上同一种仪器可以在一个电路中随意的调用。( 3)除了现实存在的仪器外,Protues 还提供了一个图形显示功能,可以将线路上变化的信号,以图
17、形的方式实时地显示出来,其作用与示波器相似,但功能更多。这些虚拟仪器仪表具有理想的参数指标,例如极高的输入阻抗、极低的输出阻抗。这些都尽可能减少了仪器对测量结果的影响。(4)Protues 可提供的调试手段 Protues提供了比较丰富的测试信号用于电路的测试。这些测试信号包括模拟信号和数字信号。Protues电路功能仿真:在 PROTUES 绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在 PROTUES 的原理图中看到模拟的实物运行状态和过程。PROTUES 是单片机课堂教学的先进助手。PROTUES 不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。前者
18、可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。它的元器件、连接线路等却和传统的单片机实验硬件高度对应。这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。课程设计、毕业设计是学生走向就业的重要实践环节。由于 PROTUES 提供了实验室无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量上难以相比的虚拟仪器、仪表,因而也提供了培养学生实践精神、创造精神的平台。随着科技的发展“计算机仿真技术”已成为许多设计部门重要的前期设计手段。它具有设计灵活,结果、过程的统一的特点。可使设计时
19、间大为缩短、耗资大为减少,也可降低工程制造的风险。相信在单片机开发应用中PROTUES 也能茯得愈来愈广泛的应用。1.3.2 Keil uVision3简介Keil uVision3是德国 Keil Software 公司出品的51 系列兼容单片机C语言软件开发系统,使用接近于传统c 语言的语法来开发,与汇编相比,C 语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用, 而且大大的提高了工作效率和项目开发周期, 他还能嵌入汇编,您可以在关键的位置嵌入, 使程序达到接近于汇编的工作效率。KEILC51 标准 C编译器为8051 微控制器的软件开发提供了C语言环境 , 同时保留了汇
20、编代码高效, 快速的特点。 C51编译器的功能不断增强,使你可以更加贴近CPU本身,及其它的衍生产品。C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:编译器,汇编器,实时操作系统,项目管理器,调试器。uVision2 IDE 可为它们提供单一而灵活的开发环境。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows 界面,能在很短的时间内就能学会使用keil c51来开发单片机应用程序。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件
21、时更能体现高级语言的优势。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 14 页 - - - - - - - - - 5 第二章硬件电路设计2.1复位电路复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见, 电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分- 合过程中引起的抖动而影响复位。STC12C5A60的复位是靠外电路实现的,RST 引脚是单片机的复位输入端。当振荡器工作时,RST引脚出现两个机器周期以上高
22、电平将使单片机复位。,在时钟电路工作后,只要在单片机的RST引脚上出现 24 个时钟振荡脉冲(2 个机器周期)以上的高电平,单片机便实现初始化状态复位。当单片机的时钟 f=12MHz时,1 个机器周期为1S, 复位信号至少需保持2S。为了保证应用系统可靠地复位,通常是 RST引脚保持 10ms以上的高电平。复位电路连接如图2 所示2.2时钟电路STC12C5A60中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和 XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路参见图2。外接石英晶体及电容C1,C2接在放大器的
23、反馈回路中构成并联振荡电路。时钟电路和复位电路如下图:图 2 时钟、复位电路2.3 按键中断STC12C5A60共有 2 个外部中断, INT0 和 INT1 为两天外部中断请求输入线,都允许外部中断源以低电平或下降沿触发。为了能在线修改参数而不影响PWM 输出,我们选用优先级低的INT1。按键中断的电路如图3。工作原理:上电后对P1.0、P1.1 置高位,持续扫描,如果有按键按下,如P1.0 对应的按键按下,则 P1.0 接地,检测到低电压,P1.1 仍悬空,认为还是高电平,因而能判断哪个按键按下。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - -
24、- - - - - 名师精心整理 - - - - - - - 第 7 页,共 14 页 - - - - - - - - - 6 图 3 按键中断2.4 显示电路图 4 显示电路名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 14 页 - - - - - - - - - 7 第三章程序设计流程图按照程序要求,设计如下的程序设计流程图。图 5 设计流程图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整
25、理 - - - - - - - 第 9 页,共 14 页 - - - - - - - - - 8 第四章系统仿真4.1 仿真图图 6 仿真图4.2 程序#include /模拟 PWM 输出控制灯的亮度#define uchar unsigned char #define uint unsigned int unsigned int scale; uchar data_L,data_H; uchar tab=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; sbit K1 =P10 ; /增加键sbit K2 =P11 ; /减少键sbit
26、P10=P00 ; sbit P11=P01 ; sbit P12=P02 ; sbit P13=P03 ; sbit P14=P04 ; sbit P15=P05 ; sbit P16=P06 ; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 14 页 - - - - - - - - - 9 sbit P17=P07 ; unsigned char PWM=50; /赋初值 /占空比控制变量void display(); void data_in(); void d
27、elayms(unsigned char ms); void display(void) P3=0x04; P2=tabdata_H; delayms(1); P3=0x08; P2=tabdata_L; delayms(1); void data_in(void) data_L=scale%10; data_H=scale/10; void delayms(unsigned char ms) / 延时子程序 unsigned char i ; while(ms-) for(i = 0 ; i 120 ; i+) ; void timer0(void) interrupt 1 /定时器 0 中
28、断服务程序 static unsigned int n ; /n用来保存当前时间在一秒中的比例位置 n+; /每 250 微秒增加1 if(n=50) /1秒的时钟周期 n=0; /使 n=0,开始新的PWM 周期 P10=1,P11=1,P12=1,P13=1,P14=1,P15=1,P16=1,P17=1; /使 LED灯亮 if(scale=n) /按照当前占空比切换输出为高电平 P10=0,P11=0,P12=0,P13=0,P14=0,P15=0,P16=0,P17=0; /使 LED灯灭 void main(void) / 主程序名师资料总结 - - -精品资料欢迎下载 - - -
29、 - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 14 页 - - - - - - - - - 10 TMOD=0x02; /定时器 0,工作模式2(0000,0010) ,8 位定时模式 TH0=0x06; /写入预置初值6 到定时器0,使 250 微秒溢出一次(12MHz ) TL0=0x06; /写入预置值 TR0=1; /启动定时器 ET0=1; /允许定时器0 中断 EA=1; /允许总中断 while (1) /无限循环,实际应用中,这里是做主要工作 if(K1=0)/递增按键 delayms(100); if
30、(K1=0) if(scale=50) /PWM=50; else scale+; if(K2=0)/递减按键 delayms(100); if(K2=0) if(scale=0) /PWM=0; else scale- ; data_in(); display(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 14 页 - - - - - - - - - 11 4.3 PCB 图通过程序原理图来制作相应的PCB图,得到图7所示的 PCB图。图 7 PCB图名师资料
31、总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 14 页 - - - - - - - - - 12 参考文献【1】徐爱钧,徐阳. 单片机原理与应用基于Proteus 虚拟仿真技术 . 机械工业出版社,2013.8 【2】胡汉才 . 单片机原理及其接口技术. 北京 : 清华大学出版社,2002,290-298,369-440 【3】 薛小铃,刘志群,贾俊荣 . 单片机接口模块应用与开发实例详解. 北京航空航天大学出版社,2010.1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 14 页 - - - - - - - - -