单片机程序大全_第1页
单片机程序大全_第2页
单片机程序大全_第3页
单片机程序大全_第4页
单片机程序大全_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

1、独立按键#i nelude r e g5 2、h#d ef i ne uc h ar un si g ne d ch a r#def i ne uint unsign ed in tsb it P 2 7=P 2八7;s bi t K5 = Pl 八4;s b it f mq = P3八6;u ch ar num ;u nsig ned ch a r co de s8 l 6=0x c0 ,0xf9 , 0xa 4 , 0 xb0 ,0 X 9 9, 0x92, 0 x8 2, 0 x f8,0x 80, 0 x 90, 0x88,0x83 ,xc6, 0x a1, 0x 8 6,0 x8e;

2、v o idd e 1 a y 1ms(ui nt i)uc ha r j;wh ie(i )fvoidb eep()/产生1K HZ频率声音得函数or (j=0;j 115; j+)/1m s基准延时程序; fmq = 0;delay 5 00 u s();? fmq=1;? d e l a y50 0us();id d el ay 5 0 0 us ()si gn edch arj ;forj=0 ; j57;j+ )500/us基准延时程序; void ma i n() u cha r t ;P27=0;whi 1 e(1)if(K5=0)? delay Im s( 1 5);if(K5

3、=0 ) ? fort= 0 ;t 100; t+)?beep( ); nu m =num1;(num=16)nu m=0;w hile(!K5); /等待按键释放PO=s 8 n um;# in cludevreg52、h#def i ne uchar u nsig ne dc h ar II数据类型得宏定义#def ine uin tunsignednt?数据类型得宏定义sbi t P27 = P2八7;uns ig n ed char coe tab le=0xF9, 0 xA4 ,0xB0,0x99,0 x 92,0x8 2 ,0xF8,0x8 0,0x90,0x88,0x83 ,0x

4、C6, 0xA 1,0x 8 6, Ox 8E ,0 xB F;I 共阳数码管显示字型码数组1011 1 111 ” -voi d delay1ms(uin t i )uc h a r j ;w h i le (i )for( j= 0;j 1 1 5;j+ ) ; II1ms 基准延时程序V oi ddispl(u n sig ne de ha r i )P27=0;/选通最有端得数码管显示P0=table i:/ 显示 i 参数传来得字型码VO id main(vd)unsig n ed char temp;dis p lay(16); II 初始显示 ”- w hile (1)P1=Ox

5、ff; II 先向P1 口写1 ;端口读状态P 1 = 0x f 0;tern p= P1 ;if(tem p !=0xf0)dela y 1ms (15);if ( temp!=0xf0 )P 1=0xfe ;? te mp =P1;s w i t ch(temp )case( 0 xee) :d i sp lay (0) ; break ;case (0xde): d ispla y(l) ;break;? case(0 X be) :d i splay (2);break;? c a se (0 x7e) : dis pl ay (3);break;P 1=0 x f d;t emp=

6、P1;switc h (temp )cas e (0xe d) : dis pl ay (4);bre a k;? case(0xdd):dis pl ay(5);break;(6 );br e a k;(7) ; b reak ;case(0xb d ): d is p l ayc a s e(0x7d) : d i splayPl =0xfb;temp= P1;switch( t emp )c as e( 0 xeb ) :di splay(8 ); b re a k;? case(0xd b ):disp l ay (9); br eak; ? case(0xb b) :display

7、(10 ) ; break;ca s e (Ox 7 b) : d is pla y (11) ; br ea k;P1= Ox f7 ;temp=P1;swi t ch (t e m p)case( Oxe7):display(12);break;? c a se(O X d7) :d i spla y (13) ; b reak ;? case (Oxb 7 ):d i s p lay(14 ) ;b r e ak;? case(0x77 ) :dis p lay(1 5 );b r eak;/* 行线接 P1、0-P 1、3,列线接P 1、4- P 1、7。根据线反转法扫描键盘返回得键值

8、编码查键值编码表, 从而得到键值并送数码管显示。开机时 , 数码管显示“ -H*/ 。 *#i nclude reg52 、h# incl u de in t rins 、 h# defi ne uchar un si gned c har#define ui n t un signed i n t sbit P2 7=P2八7;sb i tf mq=P3八6 uc h ar k e y;unsi g ned ch a r c od e dis p _co de = 0 xc0, 0xf9,0xa4,0xb0, 0x99, 0x 92,0x82 ,0x f 8 ,0x80 ,0 x 9 0 ,

9、0 x 8 8 ,0x 83,0xc6,0xa1, 0x8 6,0x 8 e,0xbf;u ns ignedc harco de key_co d0 x ee, 0x d e, 0xbe, 0x 7 e, 0 xed,0xdd ,0x bd ,0x7d,x e b ,0 x db,0 x bb,0x 7 b,0xe7,0xd7 , 0xb7,0 x7 7;void d elay1ms(u in t i)u char j;while(i )for(j= 0 ;j 1 1 5;j+)1 m s基准延时程序;VO idd e 1 a y50 0 u s ()nsigned ch a r j;fOr(

10、j=0 ; jv57;j+)/ /500 us基准延时程序;VO i d be ep/ /产生1KHZ频率声音得函数f m q=0;delay500us()? f mq=1;? de1 ay50us/ * * * * * * * * * * * * * * * * * *键盘扫描子函数* * * * * * * * * * * * * * * * * */h arkeysca n ()uch ar sc an 1,sc a n2, k e y co d e,j;Pl =0x fO;/ 判键就sea n1=P 1;i f(se a n1&Oxf 0)! =OxfO)是否按下dela y 1ms

11、(20 );/延时 20mss c an仁P1;/ 二次判键if(sean 1&0 xf 0) ! = 0 xf0)就是否按下P1 = 0x0f ;/ /线反转法得核心s e a n2= P1;keyeode=sean 1 |sean2;/组合成键编码for ( j= 0; j=15; j +) / 查表得键i f(keyc o d e = k ey_code jke y =j ;r e tu r n (key);elseP1= 0xff; / /P1 口写 l输入状态re t urn (16); /- ” m ain ()? u c har ttPO = Oxbf ;P27 =0;/ 数码管

12、显示 - ”P1 = 0x f f;w hile (1)Pl =OxfO;? if(P 1&O xfO)!=OxfO)keys ca n ();P0=d isp _ co de k ey;o r(tt=O ; ttV 200;tt + +)? beep() ;? f mq=l ;d ela y 1 m s( 2 00);中断# includevreg 5 2、hdef ine u int un s i g ne d int#defineuch ar unsigne d ch a rsbi t du 1 a=P 2八6;s b i t wela=P2八7;sbit d1 = P1八0;uc ha

13、r num;uch a r c ode table = 0 x 3 f , 0x06,0x5b,0x4f ,0 x66,0 x6d, Ox 7d,0x 0 乙0x 7f , 0x6 f , 0 x77,0x7c,0x3 9,0x5 e ,0x79 , 0x 7 1;void deay(ui nt z );void mn()EQ;/ 开总中断? E X0=1;/开外部中断0 ? IT0=1;? / TCON=0x01;wela=1;/1 11010 1 0 ? PO =0xea;? wela=0;w hile (1)f o r(num = 0; n urn 0; y - ) ; ?v oid e

14、 x ter0( ) in t errupt 0d1 = 0;?定时器#in cludevreg 52、 hincludevintr i ns、 h# d e fine uinunsigned in t#define uc har unsigned charuch ar aa,nu m;sb it dul a =P 2八6;sbit wela= P 2八7;uch ar cod e tab 1 e=Ox 3f,0x06 , Ox 5b,0x4f,Ox 6 6, 0x6d, 0x7d,0x07, 0x7 f , 0 x 6 f , 0 x 77,0 x7c,0 x3 9, 0x5 e ,0 x

15、79, 0x71;void ma i n()? num =0;? aa = 0;? / T MOD=0X 0;/设定定时器0为工作方式0TMDD =0 X01 ;/ /设定定时器0为工作方式1/ T HO =(8192 5 0 0 0)/32 ;? /TL 0 = (8 1 92-5 0 0 0)%32;THO =( 6 553650 0 0 0 )/2 56;? T L0=( 65 536-5 0000) %256;EA=1;/开总中断E T0=1;/ /开定时器0中断? T R0 = 1; /启动定时器0w e la =1;P0=0x24;? wela=0;? du l a=1 ;? P0

16、=0 x3f;d ula=0;? wh ile(1? if (aa= 20)? ? ? aa=0;um+;if(nu m = 1 0)num=0 ;du la=1 ;PO=t ab le n um ;dula=0 ;? ?VO idtime r 0() int er rup t 1? /TH0= (8 1 9 2 5000)/32;/ T L0= (8192 - 50 00)%32;TH0=(65536-5000 0 )/256 ;? TL 0=(65 5 3 6-50000) % 2 5 6 ;? aa +;中断控制LED/用定时器T0得中断控制1位LED闪烁# incl u deII包含5

17、 2单片机寄存器定义得头文件I* * * * * * * * * * * *函数功能:主函数* * * * * * * * * * * * * * * * * ?V oid m ainvoid)A= 1;X 0=1;ITO = 1;0 =Oxff;whi 1 e (1/ * */ 开放总中断允许使用外中断选择负跳变来触发外中断/ /关闭所有P 0 口得LED灯); /无限循环,* * * * * * * * * * *函数功能:外中断TO得中断服务程序* * * * * * * * * * * * * * *V oid i t 0(void ) int e rr upt 0 usi0 /外中断

18、0得中断编号为P0 =P0;/ /每产生一次中断请求,PO取反一次。串口查询#in c1udreg5 2、hinclu d eintri n s、hu nsigned cha r tm p;voi d sen d _char(unsi g n e d char t xd);main()TMOD = 0x2 0 ;/ 定时器 1工作于 8 位自动重载模式, 用于产生波特率? THl =T L1=0xFD ? ? ? / 波特率 9 60 0允许接? S CON= 0 X 50;? / 设定串行口工作方式l 收 , 相当于下面三句/SM0=0;? / SMl =1;? /R E N=1;? PC

19、ON =0x00; ?/波特率不倍增? TR1 = l ;? / 启动定时器 1w hile(1)? if(RI=1) / 就是否有数据到来? RI =0;t m p =SBU F;/ 暂存接收到得数据? ? P0 = t mp;/数据传送到P0 口? s e nd _c h ar(t m p)? / 回传接收到得数据void s end _c ha r (u nsigned char tx d)/ 传送一个字符? SBUF = t X d; / 等特数据传送TI =0;/清除数据传送标志串口通讯#in clud eV reg52、h #define u c haruns i gned cha

20、rdefine uint uns ig n ed intuchar i d at atrd a ta : =R, I , C,,H, MC,U,R ,Z,2 , ;OxOd , 0x0a , 0 xOO;s bit KI =P3八2;/对应开发板KI按键/- */ 串口初始化v o id UART _I n it(vo i d)SC ON = 0x 5 0 ; /串口工作方式为 1 ,串行允许接收SM0 = 0;/ /S M 1=1;/REN=1;T MO D =0x 20;/定时器1工作在方式2/P C ON = Ox 8 0; / S MOD = 1;波特率加倍T H1 = Oxfd ;/

21、 / 波特率 9 6 00bps fo=” 11、0 5 92M HzT L1ES = 1 ;/开串口中断TRI1 ; 允许定时器1工作EA; / 开总中断xf d;delay1ms (uint i )ucharwhil e( i)/ 1ms基准延时程序?fo r (j=0; jv 115; j+ +)?/?/*/?串口发送一个字节void U a rt_Sen d Char (un si g ned c h ar dat)SBUF = d a t ;/待发送得数据写入缓冲区 whil e ( ! Tl) ; /等待发送完成TI = 0 ; / 清零发送标志位/* / 串口发送一个字符串V o

22、id Uart_Sen d String ()? uc harwh ii = 0;1 e(tr d a t ai!=0x0 0)SBLF = t r d at a i;whi 1 e (!TI );TI = 0;+;II/ 主函数v o id main( vo i d)UART_Init( ) ;I /初始化串口while( 1)i f (K1 = 0)d e lay1 m s(20 );if(K1= = 0)Uar t SendString( ) ; / 发送数据w hile (!K 1) ; II等待按键释放/ 串口接收中断函数id INT_Uar t Rcv (vo id) in ter

23、ru pt 4un signe d c har R cv =0;if(RIRI =0;? ? / 接收标志位清零Rcv=SBU F ; /存储缓冲区得数据) / 查询接收标志位 ( 有数据发送过来时置为 1)P0=SBU F;Ua rt_Sen d Cha r (Rcv );/ 让从计算机上传到单片机得数据 , 传回得计算机显示II用LED数码管显示计数器对 u ns ig n ed char j;# inc 1 ude reg52、h I/包含52单片机寄存器定义得头文件u n sig n ed char T ab = 0xc0,0xf9,0 xa4,0 xb 0,0x 9 9,0x9 2

24、,0x 8 2,0 x f 8 ,0x8 0 ,0x9 0 ;/ /段码表sig n ed cha r x;sbitP34=P 3八4;VO id d elayl m s (u ns ig n ed in ti)while( i -)for (j=O;j 1 15 ;j+ )/1m s基准延时程序* * * * *;void Di s p la y(un sig ne d ch a r x )P2=0 x d f;/P2、6引脚输出低电平,DS6点亮P0 =Ta b X /1 0 0 ;/ 显示十位dela y 1m s( 5);? P2=0xbf;/ /P2、6引脚输出低电平,DS6点亮P0= Tab X1 00/1 0;/显示十位dela y 1ms(5);P 2=0 X 7f;/P2、 7 引脚输出低电平,D S7点亮P 0=Ta bx%10;/显示个位d e l ay 1ms(5);? P2 =Oxff ;/* * * * * * * * * * * * * * *函数功能:主函数* * * * * * * * * * * * * * * *voidm ai n( v oi d)?T MOD =0x/TM OD=0O 00 0 1 10B,使用计数器T0得模式2EA=1;/ 开总中断ET0=1;/允许定时器T0得中断EX0= 1 ;/ 允许外中断 INT0IT 0

温馨提示

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

评论

0/150

提交评论