按键控制单片机PWM输出设计.docx
- 文档编号:9107953
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:18
- 大小:218.44KB
按键控制单片机PWM输出设计.docx
《按键控制单片机PWM输出设计.docx》由会员分享,可在线阅读,更多相关《按键控制单片机PWM输出设计.docx(18页珍藏版)》请在冰点文库上搜索。
按键控制单片机PWM输出设计
学号1322010110
天津城建大学
单片机原理及应用A课程
设计说明书
按键控制单片机PWM输出设计
起止日期:
2016年05月30日至2016年6月10日
学生姓名
班级
成绩
指导教师(签字)
控制与机械工程学院
2016年6月10日
第一章系统方案设计
1.1PWM
PWM的全称是PulseWidthModulation(脉冲宽度调制),它是通过改变输出方波的占空比来改变等效的输出电压。
1.2STC12C5A60S2简介
STC12C5A60S2是STC生产的单时钟/机器周期(1T)的单片机,是高速、低功耗、超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。
内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换,针对电机控制,强干扰场合。
1)管脚说明:
1、P0.0~P0.7P0:
P0口既可以作为输入/输出口,也可以作为地址/数据复用总线使用。
当P0口作为输入/输出口时,P0是一个8位准双向口,内部有弱上拉电阻,无需外接上拉电阻。
当P0作为地址/数据复用总线使用时,是低8位地址线A0~A7,数据线D0~D7
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/CCP1/SS非
SPI同步串行接口的从机选择信号
7、P1.5/ADC5/MOSI
SPI同步串行接口的主出从入(主器件的输入和从器件的输出)
8、P1.6/ADC7/SCLK
SPI同步串行接口的主入从出
9、P2.0~P2.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)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构成。
该单片机的ADC是逐次比较型ADC。
主次比较型ADC由一个比较器和D/A转换器构成,通过逐次比较逻辑,从最高位(MSB)开始,顺序地对每一输入电压与内置D/A转换器输出进行比较,经过多次比较,使转换所得的数字量逐次逼近输入模拟量对应值。
逐次比较型A/D转换器具有速度高,功耗低等优点。
需作为AD使用的口先将P1ASF特殊功能寄存器中的相应位置为‘1’,将相应的口设置为模拟功能。
STC12C5A60S2引脚图如图1所示。
图1STC12C5A60引脚图
1.3仿真工具介绍
1.3.1Protues简介
Protues软件是英国Labcenterelectronics公司出版的EDA工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持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电路仿真
革命性的特点:
(1)互动的电路仿真。
用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。
(2)仿真处理器及其外围电路。
可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。
还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。
配合系统配置的虚拟逻辑分析仪、示波器等,Protues建立了完备的电子设计开发环境。
Protues具有4大功能模块:
1)智能原理图设计(ISIS)
丰富的器件库:
超过27000种元器件,可方便地创建新元件;智能的器件搜索:
通过模糊搜索可以快速定位所需要的器件;智能化的连线功能:
自动连线功能使连接导线简单快捷,大大缩短绘图时间;支持总线结构:
使用总线器件和总线布线使电路设计简明清晰;可输出高质量图纸:
通过个性化设置,可以生成印刷质量的BMP图纸,可以方便地供WORD、POWERPOINT等多种文档使用。
2)完善的电路仿真功能(Prospice)
ProSPICE混合仿真:
基于工业标准SPICE3F5,实现数字/模拟电路的混合仿真;超过27000个仿真器件:
可以通过内部原型或使用厂家的SPICE文件自行设计仿真器件,Labcenter也在不断地发布新的仿真器件,还可导入第三方发布的仿真器件;多样的激励源:
包括直流、正弦、脉冲、分段线性脉冲、音频(使用wav文件)、指数信号、单频FM、数字时钟和码流,还支持文件形式的信号输入;丰富的虚拟仪器:
13种虚拟仪器,面板操作逼真,如示波器、逻辑分析仪、信号发生器、直流电压/电流表、交流电压/电流表、数字图案发生器、频率计/计数器、逻辑探头、虚拟终端、SPI调试器、I2C调试器等;生动的仿真显示:
用色点显示引脚的数字电平,导线以不同颜色表示其对地电压大小,结合动态器件(如电机、显示器件、按钮)的使用可以使仿真更加直观、生动;高级图形仿真功能(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七段显示模块、键盘/按键、直流/步进/伺服电机、RS232虚拟终端、电子温度计等等,其COMPIM(COM口物理接口模型)还可以使仿真电路通过PC机串口和外部电路实现双向异步串行通信;实时仿真:
支持UART/USART/EUSARTs仿真、中断仿真、SPI/I2C仿真、MSSP仿真、PSP仿真、RTC仿真、ADC仿真、CCP/ECCP仿真。
※编译及调试:
支持单片机汇编语言的编辑/编译/源码级仿真,内带8051、AVR、PIC的汇编编译器,也可以与第三方集成编译环境(如IAR、Keil和Hitech)结合,进行高级语言的源码级仿真和调试。
4)实用的PCB设计平台
原理图到PCB的快速通道:
原理图设计完成后,一键便可进入ARES的PCB设计环境,实现从概念到产品的完整设计; ※先进的自动布局/布线功能:
支持器件的自动/人工布局;支持无网格自动布线或人工布线;支持引脚交换/门交换功能使PCB设计更为合理;完整的PCB设计功能:
最多可设计16个铜箔层,2个丝印层,4个机械层(含板边),灵活的布线策略供用户设置,自动设计规则检查,3D可视化预览; ※多种输出格式的支持:
可以输出多种格式文件,包括Gerber文件的导入或导出,便利与其它PCB设计工具的互转(如protel)和PCB板的设计和加工。
5)Protues提供了丰富的资源
(1)Protues可提供的仿真元器件资源:
仿真数字和模拟、交流和直流等数千种元器件,有30多个元件库。
(2)Protues可提供的仿真仪表资源:
示波器、逻辑分析仪、虚拟终端、SPI调试器、I2C调试器、信号发生器、模式发生器、交直流电压表、交直流电流表。
理论上同一种仪器可以在一个电路中随意的调用。
(3)除了现实存在的仪器外,Protues还提供了一个图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似,但功能更多。
这些虚拟仪器仪表具有理想的参数指标,例如极高的输入阻抗、极低的输出阻抗。
这些都尽可能减少了仪器对测量结果的影响。
(4)Protues可提供的调试手段Protues提供了比较丰富的测试信号用于电路的测试。
这些测试信号包括模拟信号和数字信号。
Protues电路功能仿真:
在PROTUES绘制好原理图后,调入已编译好的目标代码文件:
*.HEX,可以在PROTUES的原理图中看到模拟的实物运行状态和过程。
PROTUES是单片机课堂教学的先进助手。
PROTUES不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。
前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。
它的元器件、连接线路等却和传统的单片机实验硬件高度对应。
这在相当程度上替代了传统的单片机实验教学的功能,例:
元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。
课程设计、毕业设计是学生走向就业的重要实践环节。
由于PROTUES提供了实验室无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量上难以相比的虚拟仪器、仪表,因而也提供了培养学生实践精神、创造精神的平台。
随着科技的发展“计算机仿真技术”已成为许多设计部门重要的前期设计手段。
它具有设计灵活,结果、过程的统一的特点。
可使设计时间大为缩短、耗资大为减少,也可降低工程制造的风险。
相信在单片机开发应用中PROTUES也能茯得愈来愈广泛的应用。
1.3.2KeiluVision3简介
KeiluVision3是德国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,使用接近于传统c语言的语法来开发,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用,而且大大的提高了工作效率和项目开发周期,他还能嵌入汇编,您可以在关键的位置嵌入,使程序达到接近于汇编的工作效率。
KEILC51标准C编译器为8051微控制器的软件开发提供了C语言环境,同时保留了汇编代码高效,快速的特点。
C51编译器的功能不断增强,使你可以更加贴近CPU本身,及其它的衍生产品。
C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:
编译器,汇编器,实时操作系统,项目管理器,调试器。
uVision2IDE可为它们提供单一而灵活的开发环境。
KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面,能在很短的时间内就能学会使用keilc51来开发单片机应用程序。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
第二章硬件电路设计
2.1复位电路
复位电路的基本功能是:
系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。
为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。
STC12C5A60的复位是靠外电路实现的,RST引脚是单片机的复位输入端。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
,在时钟电路工作后,只要在单片机的RST引脚上出现24个时钟振荡脉冲(2个机器周期)以上的高电平,单片机便实现初始化状态复位。
当单片机的时钟f=12MHz时,1个机器周期为1μS,复位信号至少需保持2μS。
为了保证应用系统可靠地复位,通常是RST引脚保持10ms以上的高电平。
复位电路连接如图2所示
2.2时钟电路
STC12C5A60中有一个用于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。
这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路参见图2。
外接石英晶体及电容C1,C2接在放大器的反馈回路中构成并联振荡电路。
时钟电路和复位电路如下图:
图2时钟、复位电路
2.3按键中断
STC12C5A60共有2个外部中断,INT0和INT1为两天外部中断请求输入线,都允许外部中断源以低电平或下降沿触发。
为了能在线修改参数而不影响PWM输出,我们选用优先级低的INT1。
按键中断的电路如图3。
工作原理:
上电后对P1.0、P1.1置高位,持续扫描,如果有按键按下,如P1.0对应的按键按下,则P1.0接地,检测到低电压,P1.1仍悬空,认为还是高电平,因而能判断哪个按键按下。
图3按键中断
2.4显示电路
图4显示电路
第三章程序设计流程图
按照程序要求,设计如下的程序设计流程图。
图5设计流程图
第四章系统仿真
4.1仿真图
图6仿真图
4.2程序
#include
#defineucharunsignedchar
#defineuintunsignedint
unsignedintscale;
uchardata_L,data_H;
uchartab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
sbitK1=P1^0;//增加键
sbitK2=P1^1;//减少键
sbitP10=P0^0;
sbitP11=P0^1;
sbitP12=P0^2;
sbitP13=P0^3;
sbitP14=P0^4;
sbitP15=P0^5;
sbitP16=P0^6;
sbitP17=P0^7;
unsignedcharPWM=50;//赋初值//占空比控制变量
voiddisplay();
voiddata_in();
voiddelayms(unsignedcharms);
voiddisplay(void)
{
P3=0x04;
P2=tab[data_H];
delayms
(1);
P3=0x08;
P2=tab[data_L];
delayms
(1);
}
voiddata_in(void)
{
data_L=scale%10;
data_H=scale/10;
}
voiddelayms(unsignedcharms)//延时子程序
{
unsignedchari;
while(ms--)
{
for(i=0;i<120;i++);
}
}
voidtimer0(void)interrupt1//定时器0中断服务程序
{
staticunsignedintn;//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灯灭
}
voidmain(void)//主程序
{
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(K1==0)
{
if(scale==50)
{
//PWM=50;
}
else
{
scale++;
}
}
}
if(K2==0)//递减按键
{
delayms(100);
if(K2==0)
{
if(scale==0)
{
//PWM=0;
}
elsescale--;
}
}
data_in();
display();
}}
4.3PCB图
通过程序原理图来制作相应的PCB图,得到图7所示的PCB图。
图7PCB图
参考文献
【1】徐爱钧,徐阳.单片机原理与应用——基于Proteus虚拟仿真技术.机械工业出版社,2013.8
【2】胡汉才.单片机原理及其接口技术.北京:
清华大学出版社,2002,290-298,369-440
【3】薛小铃,刘志群,贾俊荣.单片机接口模块应用与开发实例详解.北京航空航天大学出版社,2010.1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 按键 控制 单片机 PWM 输出 设计
![提示](https://static.bingdoc.com/images/bang_tan.gif)