求 单片机简单的C语言程序例子(越多越好)

求 单片机简单的C语言程序例子(越多越好),第1张

Proteus仿真原理图:

程序如下:

#include <reg51h>

#define uchar unsigned char

#define uint  unsigned int

uchar data buf[4];

uchar data sec_dx=20;//东西数默认

uchar data sec_nb=30;//南北默认值

uchar data set_timedx=20;

uchar data set_timenb=30;

int n;

uchar data b;//定时器中断次数

sbit  k1=P1^6;//定义5组开关

sbit  k2=P1^7;

sbit  k3=P2^7;

sbit  k4=P3^0;

sbit  k5=P3^1;

sbit Yellow_nb=P2^5;       //南北黄灯标志

sbit Yellow_dx=P2^2;       //东西黄灯标志

sbit Green_nb=P2^4;

sbit Green_dx=P2^1;

sbit Buzz=P3^7;

bit Buzzer_Indicate;

bit time=0;//灯状态循环标志

bit   set=1;//调时方向切换键标志

uchar code table[11]={       //共阴极字型码

0x3f,  //--0

0x06,  //--1

0x5b,  //--2

0x4f,  //--3

0x66,  //--4

0x6d,  //--5

0x7d,  //--6

0x07,  //--7

0x7f,  //--8

0x6f,  //--9

0x00   //--NULL

};

//函数的声明部分

void delay(int ms);//延时子程序

void key();//按键扫描子程序

void key_to1();//键处理子程序

void key_to2();

void key_to3();

void display();//显示子程序

void logo();   //开机LOGO

void Buzzer();

//主程序

void main()

{

TMOD=0X01;

TH0=0XD8;

TL0=0XF0;

EA=1;

ET0=1;

TR0=1;

EX0=1;

EX1=1;

logo();

P2=0Xc3;// 开始默认状态,东西绿灯,南北黄灯

sec_nb=sec_dx+5;

while(1)

{     

key(); //调用按键扫描程序

display(); //调用显示程序

Buzzer();

}   

}

//函数的定义部分

void key()    //按键扫描子程序

{

if(k1!=1)

{

delay(10);

if(k1!=1)

{

while(k1!=1)

{

key_to1();

for(n=0;n<40;n++)

{ display();}

}

}

}

if(k2!=1)

{

delay(10);

if(k2!=1)

{

while(k2!=1)

{

key_to2();

for(n=0;n<40;n++)

{ display();}

}

}

}

if(k3!=1)

{

TR0=1;   //启动定时器

Buzzer_Indicate=0;

sec_nb=set_timenb;  //从中断回复,仍显示设置过的数值

sec_dx=set_timedx;

if(time==0)

{ P2=0X99;sec_nb=sec_dx+5; }

else { P2=0xC3;sec_dx=sec_nb+5; }

}     

if(k4!=1)

{

delay(5);

if(k4!=1)

{

while(k4!=1);

set=!set;

}

}

if(k5!=1)

{

delay(5);

if(k5!=1)

{

while(k5!=1)

key_to3();

}

}

}

void display() //显示子程序

{

buf[1]=sec_dx/10; //第1位 东西秒十位

buf[2]=sec_dx%10; //第2位 东西秒个位

buf[3]=sec_nb/10; //第3位 南北秒十位

buf[0]=sec_nb%10; //第4位 南北秒个位

P1=0xff;                                // 初始灯为灭的

P0=0x00;

P1=0xfe;                              //片选LCD1

P0=table[buf[1]];

delay(1);

P1=0xff;

P0=0x00;

P1=0xfd;                           //片选LCD2

P0=table[buf[2]];

delay(1);

P1=0xff;

P0=0x00;

P1=0Xfb;              //片选LCD3

P0=table[buf[3]];

delay(1);

P1=0xff;

P0=0x00;

P1=0Xf7;

P0=table[buf[0]];               //片选LCD4

delay(1);

}

void time0(void) interrupt 1 using 1  //定时中断子程序

{

b++;

if(b==19)                        // 定时器中断次数

{      b=0;

sec_dx--;

sec_nb--;

if(sec_nb<=5&&time==0)  //东西黄灯闪

{  Green_dx=0;Yellow_dx=!Yellow_dx;}               

if(sec_dx<=5&&time==1)  //南北黄灯闪

{  Green_nb=0;Yellow_nb=!Yellow_nb;}            

if(sec_dx==0&&sec_nb==5)

sec_dx=5;

if(sec_nb==0&&sec_dx==5)

sec_nb=5;

if(time==0&&sec_nb==0)

{ P2=0x99;time=!time;sec_nb=set_timenb;sec_dx=set_timenb+5;}

if(time==1&&sec_dx==0)

{P2=0Xc3;time=!time;sec_dx=set_timedx;sec_nb=set_timedx+5;}

}

}

void key_to1()    //键盘处理子程序之+

{

TR0=0;          //关定时器

if(set==0)

set_timenb++;    //南北加1S

else

set_timedx++;    //东西加1S

if(set_timenb==100)

set_timenb=1;

if(    set_timedx==100)

set_timedx=1;   //加到100置1

sec_nb=set_timenb ;    //设置的数值赋给东西南北

sec_dx=set_timedx;

}

void key_to2()       //键盘处理子程序之-

{

TR0=0;         //关定时器

if(set==0)

set_timenb--;  //南北减1S

else

set_timedx--;  //东西减1S

if(set_timenb==0)

set_timenb=99;

if(    set_timedx==0 )

set_timedx=99;   //减到1重置99

sec_nb=set_timenb ;    //设置的数值赋给东西南北

sec_dx=set_timedx;

}

void key_to3()   //键盘处理之紧急车通行

{

TR0=0;

P2=0Xc9;

sec_dx=00;

sec_nb=00;

Buzzer_Indicate=1;

}

void int0(void) interrupt 0 using 1  //只允许东西通行

{

TR0=0;

P2=0Xc3;

Buzzer_Indicate=0;

sec_dx=00;

sec_nb=00;

}

void int1(void) interrupt 2 using 1       //只允许南北通行

{

TR0=0;

P2=0X99;

Buzzer_Indicate=0;

sec_nb=00;

sec_dx=00;

}

void logo()//开机的Logo  "- - - -"

{ for(n=0;n<50;n++)

{

P0=0x40;

P1=0xfe;

delay(1);

P1=0xfd;

delay(1);

P1=0Xfb;

delay(1);

P1=0Xf7;

delay(1);

P1 = 0xff;

}

}

void Buzzer()

{

if(Buzzer_Indicate==1)

Buzz=!Buzz;

else Buzz=0;

}

void delay(int ms)            //延时子程序

{

uint j,k;

for(j=0;j<ms;j++)

for(k=0;k<124;k++);

}

楼主,不同产品申请不同项目提供的资料不同。\x0d\射频类需要的资料有:\x0d\2样品 Sample (s) PCS 3-4套 (整套含配件,频率间隔大于1M,需要高中低频率发射三台样机和一台普通发射样或定频软件)\x0d\ \x0d\3技术参数(Technical Specification), 包括如下内容:\x0d\AFrequency:要注明频率范围,或详细的频点\x0d\BModulation:工作模式,如:FM, HFSS, DSSS, UNPS, GSM, CDMA等等\x0d\COutput Power 功率\x0d\\x0d\4英文说明书(User Manual) \x0d\\x0d\5.关键元器件清单BOM List (PCB,线材等,需标出UL File No)\x0d\\x0d\6 电路图,原理图 Schematics (要标明元器件参数,要标有天线)\x0d\\x0d\7方框图 Block Diagram (要有天线,并在天线端标出发射频率)\x0d\\x0d\8零件底板图 Part layout (元器件位置图)\x0d\\x0d\9线路描述 Circuit Description 又叫 Operational Description (将电路原理图和方框图以文字的方式描述出来。)\x0d\\x0d\9.PCB丝印图 PCB LAOUT图(印刷布线图)\x0d\\x0d\10.充电器EN60950测试报告。 EN60950 Report for Adaptor\x0d\\x0d\11.最终软硬件版本 Final Hardware Version ,Final Software version\x0d\\x0d\12.蓝牙,WIFI的调制的工程指令 BT,WIFI Injunction for testing (进入工程模式测试指令)\x0d\\x0d\13天线规格书 Antenna Specification (含增益,GSM,WIFI,BT,WCDMA等天线增益)\x0d\\x0d\14锂电池电芯UL证书 UL Cert for Battery (含UL证书,需要提供电芯规格书)\x0d\\x0d\15PCB阻燃等级UL证书 UL Cert for PCB Board (阻燃等级大过或等V-1)\x0d\\x0d\16DOC回签/POA回签 DOC signed/POA signed (报告完成时)\x0d\\x0d\如果是高压的产品需要的资料增加安规关键元件方面的资料就行了!

我前几天刚在网上看到的,不知道对你有没有用》

1. 闪烁灯

1. 实验任务

如图411所示:在P10端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为02秒。

2. 电路原理图

图411

3. 系统板上硬件连线

把“单片机系统”区域中的P10端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上。

4. 程序设计内容

(1). 延时程序的设计方法

作为单片机的指令的执行的时间是很短,数量大微秒级,因此,我们要求的闪烁时间间隔为02秒,相对于微秒来说,相差太大,所以我们在执行某一指令时,插入延时程序,来达到我们的要求,但这样的延时程序是如何设计呢?下面具体介绍其原理:

如图411所示的石英晶体为12MHz,因此,1个机器周期为1微秒

机器周期 微秒

MOV R6,#20 2个机器周期 2

D1: MOV R7,#248 2个机器周期 2 2+2×248=498 20×

DJNZ R7,$ 2个机器周期 2×248 498

DJNZ R6,D1 2个机器周期 2×20=40 10002

因此,上面的延时程序时间为10002ms。

由以上可知,当R6=10、R7=248时,延时5ms,R6=20、R7=248时,延时10ms,以此为基本的计时单位。如本实验要求02秒=200ms,10ms×R5=200ms,则R5=20,延时子程序如下:

DELAY: MOV R5,#20D1: MOV R6,#20D2: MOV R7,#248DJNZ R7,$DJNZ R6,D2DJNZ R5,D1RET

(2). 输出控制

如图1所示,当P10端口输出高电平,即P10=1时,根据发光二极管的单向导电性可知,这时发光二极管L1熄灭;当P10端口输出低电平,即P10=0时,发光二极管L1亮;我们可以使用SETB P10指令使P10端口输出高电平,使用CLR P10指令使P10端口输出低电平。

5. 程序框图

如图412所示

图412

6. 汇编源程序ORG 0START: CLR P10LCALL DELAYSETB P10LCALL DELAYLJMP STARTDELAY: MOV R5,#20 ;延时子程序,延时02秒D1: MOV R6,#20D2: MOV R7,#248DJNZ R7,$DJNZ R6,D2DJNZ R5,D1RETEND7. C语言源程序#include <AT89X51H>sbit L1=P1^0;void delay02s(void) //延时02秒子程序{unsigned char i,j,k;for(i=20;i>0;i--)for(j=20;j>0;j--)for(k=248;k>0;k--);}void main(void){while(1){L1=0;delay02s();L1=1;delay02s();}}

2. 模拟开关灯

1. 实验任务

如图421所示,监视开关K1(接在P30端口上),用发光二极管L1(接在单片机P10端口上)显示开关状态,如果开关合上,L1亮,开关打开,L1熄灭。

2. 电路原理图

图421

3. 系统板上硬件连线

(1). 把“单片机系统”区域中的P10端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上;

(2). 把“单片机系统”区域中的P30端口用导线连接到“四路拨动开关”区域中的K1端口上;

4. 程序设计内容

(1). 开关状态的检测过程

单片机对开关状态的检测相对于单片机来说,是从单片机的P30端口输入信号,而输入的信号只有高电平和低电平两种,当拨开开关K1拨上去,即输入高电平,相当开关断开,当拨动开关K1拨下去,即输入低电平,相当开关闭合。单片机可以采用JB BIT,REL或者是JNB BIT,REL指令来完成对开关状态的检测即可。

(2). 输出控制

如图3所示,当P10端口输出高电平,即P10=1时,根据发光二极管的单向导电性可知,这时发光二极管L1熄灭;当P10端口输出低电平,即P10=0时,发光二极管L1亮;我们可以使用SETB P10指令使P10端口输出高电平,使用CLR P10指令使P10端口输出低电平。

5. 程序框图

图422

6. 汇编源程序 ORG 00HSTART: JB P30,LIGCLR P10SJMP STARTLIG: SETB P10SJMP STARTEND

7. C语言源程序#include <AT89X51H>sbit K1=P3^0;sbit L1=P1^0;void main(void){while(1){if(K1==0){L1=0; //灯亮}else{L1=1; //灯灭}}}

3. 多路开关状态指示

1. 实验任务

如图431所示,AT89S51单片机的P10-P13接四个发光二极管L1-L4,P14-P17接了四个开关K1-K4,编程将开关的状态反映到发光二极管上。(开关闭合,对应的灯亮,开关断开,对应的灯灭)。

2. 电路原理图

图431

3. 系统板上硬件连线

(1. 把“单片机系统”区域中的P10-P13用导线连接到“八路发光二极管指示模块”区域中的L1-L4端口上;

(2. 把“单片机系统”区域中的P14-P17用导线连接到“四路拨动开关”区域中的K1-K4端口上;

4. 程序设计内容

(1. 开关状态检测

对于开关状态检测,相对单片机来说,是输入关系,我们可轮流检测每个开关状态,根据每个开关的状态让相应的发光二极管指示,可以采用JB P1X,REL或JNB P1X,REL指令来完成;也可以一次性检测四路开关状态,然后让其指示,可以采用MOV A,P1指令一次把P1端口的状态全部读入,然后取高4位的状态来指示。

(2. 输出控制

根据开关的状态,由发光二极管L1-L4来指示,我们可以用SETB P1X和CLR P1X指令来完成,也可以采用MOV P1,#1111XXXXB方法一次指示。

5. 程序框图

读P1口数据到ACC中

ACC内容右移4次

ACC内容与F0H相或

ACC内容送入P1口

<![endif]-->

图432

6. 方法一(汇编源程序)ORG 00HSTART: MOV A,P1ANL A,#0F0HRR ARR ARR ARR AORl A,#0F0HMOV P1,ASJMP STARTEND7. 方法一(C语言源程序)#include <AT89X51H>unsigned char temp;void main(void){while(1){temp=P1>>4;temp=temp | 0xf0;P1=temp;}}8. 方法二(汇编源程序)ORG 00HSTART: JB P14,NEXT1CLR P10SJMP NEX1NEXT1: SETB P10NEX1: JB P15,NEXT2CLR P11SJMP NEX2NEXT2: SETB P11NEX2: JB P16,NEXT3CLR P12SJMP NEX3NEXT3: SETB P12NEX3: JB P17,NEXT4CLR P13SJMP NEX4NEXT4: SETB P13NEX4: SJMP STARTEND9. 方法二(C语言源程序)#include <AT89X51H>void main(void){while(1){if(P1_4==0){P1_0=0;}else{P1_0=1;}if(P1_5==0){P1_1=0;}else{P1_1=1;}if(P1_6==0){P1_2=0;}else{P1_2=1;}if(P1_7==0){P1_3=0;}else{P1_3=1;}}}

先给你,传不上 太多了

姓名:吕烜威     学号:20021210973     学院:电子工程学院

嵌牛导读 CPU ,是IT行业的制高点,既是各大IT公司角力的主战场,背后还是各国政府科技竞赛的竞技场,40年江湖,你方唱罢我登场,好不热闹。在进入CPU时代前的史前时代, 是计算机从发明到大发展的计算机时代, 包含机械计算机、电动计算机、电子管计算机、晶体管计算机、集成电路计算机等几个次世代, 这是一个属于IBM的光辉时代, 也标志着人类进入电脑逐步解放人脑的智能时代。

嵌牛鼻子处理器  ARM  计算机

嵌牛提问CPU的发展经历了哪几个阶段

嵌牛正文CPU的起源

CPU ,是IT行业的制高点,既是各大IT公司角力的主战场,背后还是各国政府科技竞赛的竞技场,40年江湖,你方唱罢我登场,好不热闹。

在进入CPU时代前的史前时代, 是计算机从发明到大发展的计算机时代, 包含机械计算机、电动计算机、电子管计算机、晶体管计算机、集成电路计算机等几个次世代, 这是一个属于IBM的光辉时代, 也标志着人类进入电脑逐步解放人脑的智能时代。

位于美国费城的电子数字积分计算机(ENIAC)是世界上第一台通用电子计算机 ,在二战中被用来计算复杂的d道导d发射数据,以及氢d的可行性研究

期间,有老沃森在40年代轻掷百万给一个陌生年轻人研制电动计算机(继电器计算机)Mark 1号的故事,

也有浪子回头小沃森接棒IBM的故事:力挽狂澜、50年代初带领IBM耗资千万研制电子管、磁带等组成的大型机IBM701, 

                                          IBM701

在40、50年代那个满地都是计算机公司的时代,统一了行业,奠定了IBM在这个时代的王者地位,正式让IBM从机械制表机行业转型成为一家计算机公司。

随着肖克利发明晶体管,集成电路也在仙童公司发明出来,小沃森又在60年代耗资50亿,  研制集成电路组成的360全系列兼容型大中小系列计算机, 5年内卖出了3万多台,创造了历史(一台卖几百万呀!)。

还有以mini裙得名mini小型计算机的DEC公司,巨型机天才Cray教授创办的三家Cray系巨型机公司,还有华人的骄傲王安电脑等等,一个群星闪耀/充满传说的时代。

王安电脑

在这个CPU的史前时代,计算功能分布在各种机械或者离散电路中,

集成电路最后才诞生,尚没有形成一个高集成度、涵盖所有计算功能的部件,连集成电路之父仙童八杰(肖克利的原话是八个叛徒)里的三位创建的Intel公司(Intel的名字代表集成度),此时折腾的还是DRAM生意。

历史,也是量变到质变慢慢积累的,不过不一定遵循我们的思维逻辑,这时,IBM、DEC、Nova、Cray等计算机巨头都没有提出缩小计算机、提高集成度等类似的概念,CPU的发明也与他们无缘。

也许是利益使然吧,缩小了如何卖得起价钱?!

 CPU的起源,是Intel公司一个员工霍夫在给日本合作方设计台式计算器时,提出了把日本人方案里的多个集成电路整合的思想,虽然日本人拒绝了,但是八杰之首、Intel第一任掌门诺伊斯支持了他,于是由中央处理器(CPU)+程序存储器+数据存储器的三片式结构构思了出来,并在1971年诞生了世界上第一片2250支晶体管组成的4004 CPU,只有铅笔尖大小。

随后是8008和卖出几百万片的8080,从此,Intel踏上了x86 CPU开发的辉煌道路。

Intel 8080的成功,揭开了CPU军备竞赛的篇章,标志着CPU时代真正来临。

上世纪70年代中期,在intel的8080成功后,Motorola推出了6800,从intel离开创业的霍夫创建了Zilog,推出了Z80,6800团队的一支也创业推出了6502。这2种CISC架构成为当时的主力,统治了70、80年代的计算领域主战场。随着微处理器的发明,70年代中,大量作坊式车库计算机制造公司遍地开花,掀起了“解放计算机革命”,计算机走入寻常百姓家成为可能。

在众多作坊中率先脱颖而出的,当然是大家都熟知的苹果,75年,乔布斯和沃兹开始设计电脑时,270块的8080着实太贵了,不过他们凑巧在展会上买到了20块一片的6502,于是Apple I和II的CPU就基于6502。

上帝通过苹果,教会了人类很多,这个叫做苹果的电脑公司,也一炮而红,销售额5年内爬到10亿美金,进入TOP500企业,引领众多“车库”电脑公司,兴风作浪,让以大型机等“贵族式”专业计算机为生的IBM 大为光火,决定正式进去微电脑行业。

80年,蓝色巨人找来两个小兄弟,Intel和微软,告诉他们有一个秘密项目“国际象棋”,需要他们参与,两个小兄弟都很激动,全力投入了进来。他们选择了准16位的CPU 8088,这样就比苹果选用的8位CPU 6502快多了。81年,PC(personal computer)成功发布,IBM登高一呼,宣布开放PC标准,公布了硬件设计原理图和BIOS源码,从此,一个行业诞生了,一个时代开始了!Wintel驾着兼容PC的大潮,登上了IT时代的巅峰,驰骋30年。

乔布斯虽然开启了微电脑时代,但引导大潮的却是IBM,得益的竟是Wintel。

造化弄人,上帝的玩笑。

IBM PC一推出,就大行其道,血洗行业,让众多从车库起家的微电脑公司破产,形成了行业整合效应。

为与IBM PC竞争,85年,Macintosh被设计出来,采用了Motorola的32位 CPU,图形界面,多媒体功能,一经发布,轰动全美,大卖特卖,扭转了苹果的败局。不过,也许就像它错误的名字预示的一样,“雨衣”已经不是“苹果”了,乔布斯被赶出了苹果!

32位的68000让Intel和IBM PC感受到了压力,Intel成立了新的团队进行攻坚,85年,386推出,但是此时,IBM竟然拒绝了386!

原因当然不是IBM表面上说的“我们有大量286 PC/AT机的客户订单”,IBM培育出的PC市场越来越大,这么大的肥肉为何不自己吃?!为何不自己做处理器?于是PowerPC即将诞生,不过还需要再等5年。

但是,演进的大潮并没有按照某一个公司的规划发展,IBM也不例外。Compag率先推出了386 PC,

2个月后,台湾宏基也推出了386 PC。而IBM直到87年才推出386 PC。虽然不到一年时间,但足以让历史改变。

康柏从此发力,于94年超越IBM,登上PC王者宝座。

在进入RISC话题前,简单回顾一下工作站(workstation)的历史。

70年代末开始的微电脑大潮,带动CPU快速发展,80年代中32位的68000性能已经匹敌小型机minicomputer,在专业计算机和PC之间的市场区隔,很快就被有识之士盯上了。

早期的工作站设计遵循3M原则(mega bytes、mega flops、mega pixels),以及快速的网络接口、磁盘接口等,用在网络和图形领域。

著名的SUN和SGI,就是专注于这个领域起家的,另外前面提到的DEC,50年代末靠小型机起家,从IBM大型机市场分流了一大块蛋糕,成为第二大计算机公司:

DEC创始人奥尔森:发明全球首台 小型机, 挑战IBM大型机

DEC 80年代初面临工作站市场对小型机的冲击,特别是当伯克利RISC和斯坦福MIPS项目开始后。

RISC风靡的时代开始了。

在集成电路发展初期,硬件资源有限,人们渴着劲优化程序,让指令占用尽可能少的存储器,程序员天天跟汇编语言厮混,这可以帮我们更好的理解CISC架构的特点:变长指令以节省空间,尽可能多的功能指令以辅助程序员容易使用。

随着微处理器和半导体工艺的发展,存储器容量不再是苛刻要素,另外,高级语言的普遍使用,带来编译器技术的发展,IBM的Cocke发现,编译器用不到大多数复杂的寻址方式,复杂的硬件实现的指令,也很难由编译器使用,而且有研究发现,基于68000的UNIX OS编译后,只用到了30%的指令,很大一部分用来实现各种千奇百怪指令的电路都浪费了。另外,系统的频率也由于复杂指令实现电路拖慢了。

RISC研究浪潮在80年代初各高校风起云涌,伯克利的RISC和斯坦福的MIPS是代表。还有现在大行其道的ARM,也是在那个时候步伯克利RISC后尘,在英国剑桥系的Acorn公司开始萌芽。

让我们继续回顾计算机行业,80年代的工作站风行,Apollo一度大幅领先,从81~87年,占领网络工作站头把交椅,然而斯坦福系的SUN和SGI开始发力了。Apollo、SUN、SGI等的工作站开始用的CPU是68000。不过斯坦福系的这两个公司技术嗅觉敏锐,很快就切到了RISC。

SUN是斯坦福的三个毕业生82年创建的(Stanford University Network),一上来就瞄准高端工作站市场,并成功切入,不过随着RISC大潮的兴起,SUN果断的于87年启动SPARC的开发,SPARC继承了伯克利RISC的技术,89年推向市场时,卓尔不群的打败了市场上所有的竞争对手。

SUN的几位创始人

几乎在同时,SGI也从68k切换到MIPS作为其工作站的CPU,并且还觉得不过瘾,于92年收购了MIPS公司。

MIPS创始人、斯坦福老校长Hennessy

MIPS公司是82年由斯坦福教授轩尼诗创建,作为交早商用的RISC CPU,盛行于80年代后期和90年代,windows都出过MIPS的版本。 86年推出第一颗R2000,并与87年在SGI 图形工作站应用。

SUN和SGI的加入,使工作站市场越来越红火,DEC的现金牛VAX小型机受到强烈冲击,终于熬不住了,内部争争吵吵后,出了很多应对方案,其中的两个是采用MIPS开发工作站、开发自己的工作站和处理器。

MIPS在DEC的工作站上得到短暂使用,很快,DEC自己的Alpha21064与92年开发完成,一上来就是64位的,性能出众,其设计参考了很多MIPS的技术。DEC的工作站、以及小型机还有后来的超级计算机都切到自己的Alpha处理器。DEC还做了一件事,就是联合ARM,基于ARM7和Alpha的技术,开发了StrongARM。

前面提到的Acorn,英国的苹果,于70年代末建立,也瞄着苹果公司掀起的微电脑市场,在英国赢得了广泛的应用,他们的CPU也跟随苹果,选用6502。80年代初,他们也进入工作站领域,选用NS的32016,此CPU的高性能让Acorn垂涎不已,准备开发自己的微处理器,他们在考察了伯克利RISC项目后,于83年启动了Acorn RISC Machine项目,这就是ARM的起源。85年由VLSI生产了第一片ARM1。

苹果这时准备做一款那个时代的IPAD:Newton牛顿,找来找去,最后发现Acorn的处理器比较合适(功耗、成本、性能、时钟随时可以完全停止等),于是联合继续开发ARM,并且决定形成一个独立的公司,90年,ARM公司正式独立,VLSI作为半导体代工者,首先获得了license授权,后面的岁月里,陆续授权给了TI、三星、高通等。

于是,ARM虽不断滋生繁衍,成燎原之势。

(历史充满了诡异,美国的苹果回过头与英国的苹果合作,一起做出了日后移动时代的CPU架构统治者:ARM。)

IBM的PC机,于80年代中期,成为行业事实标准,几乎统一了微电脑行业,而且差点把苹果和Acorn干掉,不过IBM自己由于开放标准,反而被“山寨”厂家康柏、DELL等逼上了绝路,份额大幅下降,从绝对垄断的百分之七八十,降低到一半以下。

IBM是RISC大潮最早的引领者,但在应用中落伍了,直到90才推出了POWER,用在RISC system/6000上,POWER1是多芯片组成的,所以又启动了单芯片的POWER项目,此时,PC行业的红火培育了Intel,IBM自己也垂涎这块蛋糕,于是他联合苹果,准备把这个单芯片的POWER大量推广,苹果又拉上了Motorola,作为second source。AIM联盟形成,推出的第一款芯片是PowerPC601。PC是performance computing的意思,但市场就是针对PC。微软也加入进来,推出了PowerPC版本的WindowsNT。甚至SUN也推出了一个PowerPC版本的Solaris。

不过,PowerPC除了苹果坚持使用,并未形成气候,因为没有多少软件移植到PowerPC,软件生态圈的贫乏让PowerPC永远停留在了封闭系统里。

(苹果在PowerPC上吃的亏太多了,以至于,老乔巩固了PC帝国后在移动产品上自己做CPU了,当然多亏了当年投资的ARM,否则没有架构可用了;IBM、Motorola,这两个巨无霸,在CPU道路上坚持奋战,直到现在。motorola半导体部门现在叫做Freescale飞思卡尔)

至此,所有的主流CPU架构,都粉墨登场了。在IT行业跌宕起伏、波澜壮阔的发展中,各种CPU也随着各个明星公司的兴衰,演绎出一卷CPU众架构的兴衰史……

论文题目:直流电动机调速器硬件设计

专业:自动化

本科生:刘小煜 (签名)____

指导教师:胡晓东 (签名)____

直流电动机调速器硬件设计

摘 要

直流电动机广泛应用于各种场合,为使机械设备以合理速度进行工作则需要对直流电机进行调速。该实验中搭建了基于C8051F020单片机的转速单闭环调速系统,利用PWM信号改变电动机电枢电压,并由软件完成转速单闭环PI控制,旨在实现直流电动机的平滑调速,并对PI控制原理及其参数的确定进行更深的理解。实验结果显示,控制8位PWM信号输出可平滑改变电动机电枢电压,实现电动机升速、降速及反转等功能。实验中使用霍尔元件进行电动机转速的检测、反馈。期望转速则可通过功能按键给定。当选择比例参数为008、积分参数为001时,电机转速可以在3秒左右达到稳定。由实验结果知,该单闭环调速系统可对直流电机进行调速,达到预期效果。

关键字:直流电机, C8051F020,PWM,调速,数字式

Subject: Hardware Design of Speed Regulator for DC motor

Major: Automation

Name: Xiao yu Liu (Signature)____

Instructor:Xiao dong Hu (Signature) ____

Hardware Design of Speed Regulator for DC motor

Abstract

The dc motor is a widely used machine in various occasionsThe speed regulaiting systerm is used to satisfy the requirement that the speed of dc motor be controlled over a range in some applications In this experiment,the digital Close-loop control systerm is based on C8051F020 SCMIt used PI regulator and PWM to regulate the speed of dc motor The method of speed regulating of dc motor is discussed in this paper and, make a deep understanding about PI regulatorAccording to experiment ,the armature voltage can be controlled linearnized with regulating the 8 bit PWMSo the dc motor can accelerate or decelerate or reverseIn experiment, hall component is used as a detector and feed back the speed The expecting speed can be given by key-pressWith using the PI regulator,the dc motor will have a stable speed in ten seconds when choose P value as 08 and I value as 001 At last,the experiment shows that the speed regulating systerm can work as expected

Key words: dc motor,C8051F020,PWM,speed regulating,digital

目录

第一章 绪论 1

11直流调速系统发展概况 1

12 国内外发展概况 2

121 国内发展概况 2

122 国外发展概况 3

123 总结 4

13 本课题研究目的及意义 4

14 论文主要研究内容 4

第二章 直流电动机调速器工作原理 6

21 直流电机调速方法及原理 6

22直流电机PWM(脉宽调制)调速工作原理 7

23 转速负反馈单闭环直流调速系统原理 11

231 单闭环直流调速系统的组成 11

232速度负反馈单闭环系统的静特性 12

233转速负反馈单闭环系统的基本特征 13

234转速负反馈单闭环系统的局限性 14

24 采用PI调节器的单闭环无静差调速系统 15

25 数字式转速负反馈单闭环系统原理 17

251原理框图 17

252 数字式PI调节器设计原理 18

第三章 直流电动机调速器硬件设计 20

31 系统硬件设计总体方案及框图 20

311系统硬件设计总体方案 20

312 总体框图 20

32 系统硬件设计 20

321 C8051F020单片机 20

3211 单片机简介 20

3212 使用可编程定时器/计数器阵列获得8位PWM信号 23

3213 单片机端口配置 23

322主电路 25

323 LED显示电路 26

324 按键控制电路 27

325 转速检测、反馈电路 28

326 12V电源电路 30

33硬件设计总结 31

第四章 实验运行结果及讨论 32

41 实验条件及运行结果 32

411 开环系统运行结果 32

412 单闭环系统运行结果 32

42 结果分析及讨论 32

43 实验中遇到的问题及讨论 33

结论 34

致谢 35

参考文献 36

论文小结 38

附录1 直流电动机调速器硬件设计电路图 39

附录2 直流电动机控制系统程序清单 42

附录3 硬件实物图 57

第一章 绪论

11直流调速系统发展概况

在现代工业中,电动机作为电能转换的传动装置被广泛应用于机械、冶金、石油化学、国防等工业部门中,随着对生产工艺、产品质量的要求不断提高和产量的增长,越来越多的生产机械要求能实现自动调速。

在可调速传动系统中,按照传动电动机的类型来分,可分为两大类:直流调速系统和交流调速系统。交流电动机直流具有结构简单、价格低廉、维修简便、转动惯量小等优点,但主要缺点为调速较为困难。相比之下,直流电动机虽然存在结构复杂、价格较高、维修麻烦等缺点,但由于具有较大的起动转矩和良好的起、制动性能以及易于在宽范围内实现平滑调速,因此直流调速系统至今仍是自动调速系统的主要形式。

直流调速系统的发展得力于微电子技术、电力电子技术、传感器技术、永磁材料技术、自动控制技术和微机应用技术的最新发展成就。正是这些技术的进步使直流调速系统发生翻天覆地的变化。其中电机的控制部分已经由模拟控制逐渐让位于以单片机为主的微处理器控制,形成数字与模拟的混合控制系统和纯数字控制系统,并正向全数字控制方向快速发展。电动机的驱动部分所用的功率器件亦经历了几次更新换代。目前开关速度更快、控制更容易的全控型功率器件MOSFET和IGBT成为主流。功率器件控制条件的变化和微电子技术的使用也使新型的电动机控制方法能够得到实现。脉宽调制控制方法在直流调速中获得了广泛的应用。

1964年ASchonung和Hstemmler首先提出把PWM技术应用到电机传动中从此为电机传动的推广应用开辟了新的局面。进入70年代以来,体积小、耗电少、成本低、速度快、功能强、可靠性高的大规模集成电路微处理器已经商品化,把电机控制推上了一个崭新的阶段,以微处理器为核心的数字控制(简称微机数字控制)成为现代电气传动系统控制器的主要形式。PWM常取代数模转换器(DAC)用于功率输出控制,其中,直流电机的速度控制是最常见的应用。通常PWM配合桥式驱动电路实现直流电机调速,非常简单,且调速范围大。在直流电动机的控制中,主要使用定频调宽法。

目前,电机调速控制模块主要有以下三种:

(1)、采用电阻网络或数字电位器调整直流电机的分压,从而达到调速的目的;

(2)、采用继电器对直流电机的开或关进行控制,通过开关的切换对电机的速度进行调整;

(3)、采用由IGBT管组成的H型PWM电路。用单片机控制IGBT管使之工作在占空比可调的开关状态,精确调整电动机转速。

12 国内外发展概况

121 国内发展概况

我国从六十年代初试制成功第一只硅晶闸管以来,晶闸管直流调速系统开始得到迅速的发展和广泛的应用。用于中、小功率的 04~200KW晶闸管直流调速装置已作为标准化、系列化通用产品批量生产。

目前,全国各大专院校、科研单位和厂家都在进行数字式直流调速系统的开发,提出了许多关于直流调速系统的控制算法:

(1)、直流电动机及直流调速系统的参数辩识的方法。该方法据系统或环节的输入输出特性,应用最小二乘法,即可获得系统环节的内部参数。所获得的参数具有较高的精度,方法简便易行。

(2)、直流电动机调速系统的内模控制方法。该方法依据内模控制原理,针对双闭环直流电动机调速系统设计了一种内模控制器,取代常规的PI调节器,成功解决了转速超调问题,能使系统获得优良的动态和静态性能,而且设计方法简单,控制器容易实现。

(3)、单神经元自适应智能控制的方法。该方法针对直流传动系统的特点,提出了单神经元自适应智能控制策略。这种单神经元自适应智能控制系统不仅具有良好的静、动态性能,而且还具有令人满意的鲁棒性与自适应性。

(4)、模糊控制方法。该方法对模糊控制理论在小惯性系统上对其应用进行了尝试。经15kw电机实验证明,模糊控制理论可以用于直流并励电动机的限流起动和恒速运行控制,并能获得理想的控制曲线。

上诉的控制方法仅是直流电机调速系统应用和研究的一个侧面,国内外还有许多学者对此进行了不同程度的研究。

122 国外发展概况

随着各种微处理器的出现和发展,国外对直流电机的数字控制调速系统的研究也在不断发展和完善,尤其80年代在这方面的研究达到空前的繁荣。大型直流电机的调速系统一般采用晶闸管整流来实现,为了提高调速系统的性能,研究工作者对晶闸管触发脉冲的控制算法作了大量研究,提出了内模控制算法、I-P控制器取代PI调节器的方法、自适应和模糊PID算法等等。

目前,国外主要的电气公司,如瑞典ABB公司,德国西门子公司、AEG公司,日本三菱公司、东芝公司、美国GE公司等,均已开发出数字式直流调装置,有成熟的系列化、标准化、模版化的应用产品供选用。如西门子公司生产的SIMOREG-K 6RA24 系列整流装置为三相交流电源直接供电的全数字控制装置,其结构紧凑,用于直流电机电枢和励磁供电,完成调速任务。设计电流范围为15A至1200A,并可通过并联SITOR可控硅单元进行扩展。根据不同的应用场合,可选择单象限或四象限运行的装置,装置本身带有参数设定单元,不需要其它任何附加设备便可以完成参数设定。所有控制调节监控及附加功能都由微处理器来实现,可选择给定值和反馈值为数字量或模拟量。

123 总结

随着生产技术的发展,对直流电气传动在起制动、正反转以及调速精度、调速范围、静态特性、动态响应等方面都提出了更高的要求,这就要求大量使用直流调速系统。因此人们对直流调速系统的研究将会更深一步。

13 本课题研究目的及意义

直流电动机是最早出现的电动机,也是最早实现调速的电动机。长期以来,直流电动机一直占据着调速控制的统治地位。由于它具有良好的线性调速特性,简单的控制性能,高效率,优异的动态特性,现在仍是大多数调速控制电动机的最优选择。因此研究直流电机的速度控制,有着非常重要的意义。

随着单片机的发展,数字化直流PWM调速系统在工业上得到了广泛的应用,控制方法也日益成熟。它对单片机的要求是:具有足够快的速度;有PWM口,用于自动产生PWM波;有捕捉功能,用于测频;有A/D转换器、用来对电动机的输出转速、输出电压和电流的模拟量进行模/数转换;有各种同步串行接口、足够的内部ROM和RAM,以减小控制系统的无力尺寸;有看门狗、电源管理功能等。因此该实验中选用Cygnal公司的单片机C8051F020。

通过设计基于C8051F020单片机的直流PWM调速系统并调试得出结论,在掌握C8051F020的同时进一步加深对直流电动机调速方法、PI控制器的理解,对运动控制的相关知识进行巩固。

14 论文主要研究内容

本课题的研究对象为直流电动机,对其转速进行控制。基本思想是利用C8051F020自带的PWM口,通过调整PWM的占空比,控制电机的电枢电压,进而控制转速。

系统硬件设计为:以C8051F020为核心,由转速环、显示、按键控制等电路组成。

具体内容如下:

(1)、介绍直流电动机工作原理及PWM调速方法。

(2)、完成以C8051F020为控制核心的直流电机数字控制系统硬件设计。

(3)、以该系统的特点为基础进行分析,使用PWM控制电机调速,并由实验得到合适的PI控制及相关参数。

(4)、对该数字式直流电动机调速系统的性能做出总结。

第二章 直流电动机调速器工作原理

21 直流电机调速方法及原理

直流电动机的转速和各参量的关系可用下式表示:

由上式可以看出,要想改变直流电机的转速,即调速,可有三种不同的方式:调节电枢供电电压U,改变电枢回路电阻R,调节励磁磁通Φ。

3种调速方式的比较表2-1所示

表2-1 3种电动机调速方式对比

调速方式和方法 控制装置 调速范围 转速变化率 平滑性 动态性能 恒转矩或恒功 率 效率

改变电枢电阻 串电枢电阻 变阻器或接触器、电阻器 2:1 低速时大 用变阻器较好

用接触器、电阻器较差 无自动调节能力 恒转矩 低

改变电枢电压 电动机-发电机组 发电机组或电机扩大机(磁放大器) 10:1~20:1 小 好 较好 恒转矩 60%~70%

静止变流器 晶闸管变流器 50:1~100:1 小 好 好 恒转矩 80%~90%

直流脉冲调宽 晶体管或晶闸管直流开关电路 50:1~100:1 小 好 好 恒转矩 80%~90%

改变磁通 串联电阻或可变直流电源 直流电源变阻器 3:1

5:1 较大 差 差 恒功率 80%~90%

电机扩大机或磁放大器 好 较好

晶闸管变流器 好

由表2-1知,对于要求在一定范围内无级平滑调速的系统来说,以调节电枢供电电压的方式为最佳,而变电枢电压调速方法亦是应用最广的调速方法。

22直流电机PWM(脉宽调制)调速工作原理

在直流调速系统中,开关放大器提供驱动电机所需要的电压和电流,通过改变加在电动机上的电压的平均值来控制电机的运转。在开关放大器中,常采用晶体管作为开关器件,晶体管如同开关一样,总是处在接通和断开的状态。在晶体管处在接通时,其上的压降可以略去;当晶体管处在断开时,其上的压降很大,但是电流为零,所以不论晶体管导通还是关断,输出晶体管中的功耗都是很小的。一种比较简单的开关放大器是按照一个固定的频率去接通和断开放大器,并根据需要改变一个周期内“接通”和“断开”的相位宽窄,这样的放大器被称为脉冲调制放大器。

PWM脉冲宽度调制技术就是通过对一系列脉冲的宽度进行调制,来等效地获得获得所需要波形(含形状和幅值)的技术。

根据PWM控制技术的特点,到目前为止主要有八类方法:相电压控制PWM、线电压控制PWM、电流控制PWM、非线性控制PWM,谐振软开关PWM、矢量控制PWM、直接转矩控制PWM、空间电压矢量控制PWM。

利用开关管对直流电动机进行PWM调速控制原理图及输入输出电压波形如图2-1、图2-2所示。当开关管MOSFET的栅极输入高电平时,开关管导通,直流电动机电枢绕组两端由电压。秒后,栅极输入变为低电平,开关管截止,电动机电枢两端电压为0。秒后,栅极输入重新变为高电平,开关管的动作重复前面的过程。这样,对应着输入的电平高低,直流电动机电枢绕组两端的电压波形如图2-2所示。电动机的电枢绕组两端的电压平均值为:

式2-1

式中 ——占空比,

占空比表示了在一个周期里,开关管导通的时间与周期的比值。的变化范围为0≤≤1。由式2-1可知,当电源电压不变的情况下,电枢的端电压的平均值取决于占空比的大小,改变值就可以改变端电压的平均值,从而达到调速的目的,这就是PWM调速原理。

在PWM调速时,占空比是一个重要参数。以下是三种可改变占空比的方法:

(1)、定宽调频法:保持不变,改变,从而改变周期(或频率)。

(2)、调宽调频法:保持不变,改变,从而改变周期(或频率)。

(3)、定频调宽法:保持周期(或频率)不变,同时改变、。

前2种方法由于在调速时改变了控制脉冲的周期(或频率),当控制脉冲的频率与系统的固有频率接近时,将会引起振荡,因此应用较少。目前,在直流电动机的控制中,主要使用第3种方法。

图2-1 PWM调速控制原理

图2-2 输入输出电压波形

产生PWM控制信号的方法有4种,分别为:

(1)、分立电子元件组成的PWM信号发生器

这种方法是用分立的逻辑电子元件组成PWM信号电路。它是最早期的方式,现在已经被淘汰了。

(2)、软件模拟法

利用单片机的一个I/O引脚,通过软件对该引脚不断地输出高低电平来实现PWM信号输出。这种方法要占用CPU大量时间,需要很高的单片机性能,易于实现,目前也逐渐被淘汰。

(3)、专用PWM集成电路

从PWM控制技术出现之日起,就有芯片制造商生产专用的PWM集成电路芯片,现在市场上已有许多种。这些芯片除了由PWM信号发生功能外,还有“死区”调节功能、保护功能等。在单片机控制直流电动机系统中,使用专用PWM集成电路可以减轻单片机负担,工作也更可靠。

(4)、单片机PWM口

新一代的单片机增加了许多功能,其中包括PWM功能。单片机通过初始化设置,使其能自动地发出PWM脉冲波,只能在改变占空比时CPU才进行干预。

其中常用后两中方法获得PWM信号。实验中使用方法(4)获得PWM信号。

23 转速负反馈单闭环直流调速系统原理

231 单闭环直流调速系统的组成

只通过改变触发或驱动电路的控制电压来改变功率变换电路的输出平均电压,达到调节电动机转速的目的,称为开环调速系统。但开环直流调速系统具有局限性:

(1)、通过控制可调直流电源的输入信号,可以连续调节直流电动机的电枢电压,实现直流电动机的平滑无极调速,但是,在启动或大范围阶跃升速时,电枢电流可能远远超过电机额定电流,可能会损坏电动机,也会使直流可调电源因过流而烧毁。因此必须设法限制电枢动态电流的幅值。

(2)、开环系统的额定速降一般都比较大,使得开环系统的调速范围D都很小,对于大部分需要调速的生产机械都无法满足要求。因此必须采用闭环反馈控制的方法减小额定动态速降,以增大调速范围。

(3)、开环系统对于负载扰动是有静差的。必须采用闭环反馈控制消除扰动静差

为克服其缺点,提高系统的控制质量,必须采用带有负反馈的闭环系统,方框图如图2-3所示。在闭环系统中,把系统输出量通过检测装置(传感器)引向系统的输入端,与系统的输入量进行比较,从而得到反馈量与输入量之间的偏差信号。利用此偏差信号通过控制器(调节器)产生控制作用,自动纠正偏差。因此,带输出量负反馈的闭环控制系统能提高系统抗扰性,改善控制精度的性能,广泛用于各类自动调节系统中。

燃油油压调节阀的工作原理如下:>

以上就是关于c51单片机c语言交通灯的程序全部的内容,包括:c51单片机c语言交通灯的程序、ce认证需要哪些资料、求 单片机简单的C语言程序例子(越多越好)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/8815308.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-21
下一篇 2023-04-21

发表评论

登录后才能评论

评论列表(0条)

保存