


已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.独立按键#include#define uchar unsigned char #define uintunsigned int sbit p27=p27;sbit k5=p14;sbit fmq=p36; uchar num;unsignedcharcode s816=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x 90,0x88,0x83,0xc6,0xa1,0x86,0x8e;void delay1ms(uint i)uchar j; while(i-)for(j=0;j115;j+)/1ms基准延时程序;void beep()/ / 产生1khz频率声音的函数fmq=0; delay500us();.fmq=1; delay500us();void delay500us()unsigned char j;for(j=0;j57;j+)/500us基准延时程序; void main() uchar t;p27=0;while(1)if(k5=0)delay1ms(15); if(k5=0)for(t=0;t100;t+) beep(); num=num+1;if(num=16)num=0;while(!k5);/等待按键释放p0=s8num;#include#define uchar unsigned char /数据类型的宏定义#define uint unsigned int/ 数据类型的宏定义sbit p27=p27;unsignedcharcode table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0 x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf;/共阳数码管显示字型码数组1011 1111 -void delay1ms(uint i)uchar j; while(i-)for(j=0;j115;j+);/1ms基准延时程序void display(unsigned char i)p27=0;/选通最有端的数码管显示p0=tablei;/显示i参数传来的字型码void main(void)unsigned char temp; display(16); /初始显示 - while(1)p1=0xff; /先向p1 口写1;端口读状态p1=0xf0;temp=p1; if(temp!=0xf0)delay1ms(15); if(temp!=0xf0)p1=0xfe;temp=p1; switch(temp)case(0xee):display(0);break; case(0xde):display(1);break; case(0xbe):display(2);break; case(0x7e):display(3);break;p1=0xfd; temp=p1; switch(temp)case(0xed):display(4);break; case(0xdd):display(5);break; case(0xbd):display(6);break; case(0x7d):display(7);break;p1=0xfb; temp=p1; switch(temp)case(0xeb):display(8);break; case(0xdb):display(9);break; case(0xbb):display(10);break; case(0x7b):display(11);break; p1=0xf7;temp=p1; switch(temp)case(0xe7):display(12);break; case(0xd7):display(13);break; case(0xb7):display(14);break; case(0x77):display(15);break;/*行线接 p1.0 p1.3 ,列线接 p1.4 p1.7 。根据线反转法扫描键盘返回的键值编码查键值编码表,从而得到键值并送数码管显示。开机时,数码管显示“” 。*/#include #include #define uchar unsigned char #define uintunsigned int sbit p27=p27;sbit fmq=p36;ucharkey;unsigned char code disp_code= 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf; unsigned char code key_code=0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d, 0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77;void delay1ms(uint i)uchar j; while(i-)for(j=0;j115;j+)/1ms基准延时程序;void delay500us()unsigned char j;for(j=0;j57;j+)/500us基准延时程序 ;void beep()/产生 1khz频率声音的函数fmq=0; delay500us(); fmq=1; delay500us();/*键盘扫描子函数*/ucharkeyscan()ucharscan1,scan2,keycode,j; p1=0xf0;scan1=p1;if(scan1&0xf0)!=0xf0)/判键是否按下delay1ms(20);/延时20msscan1=p1;if(scan1&0xf0)!=0xf0)/二次判键是否按下p1=0x0f;/线反转法的核心scan2=p1;keycode=scan1|scan2;/组合成键编码for(j=0;j=15;j+)if(keycode= key_codej)/查表得键值key=j; return(key);elsep1=0xff; /p1口写1输入状态return (16);/-main()uchar tt;p0 = 0xbf;p27 =0;/数码管显示 -p1 = 0xff; while(1)p1=0xf0;if(p1&0xf0)!=0xf0) keyscan(); p0=disp_codekey; for(tt=0;tt200;tt+) beep();fmq=1; delay1ms(200);中 断 #include #define uint unsigned int#define uchar unsigned char sbit dula=p26;sbit wela=p27;sbit d1=p10; uchar num;uchar code table= 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71;void delay(uint z);void main()ea=1;/开总中断ex0=1;/开外部中断0/it0=1;/tcon=0x01;wela=1;/11101010 p0=0xea;wela=0; while(1)for(num=0;num0;x-)for(y=110;y0;y-);void exter0() interrupt 0d1=0;定时器#include #include#define uint unsigned int #define uchar unsigned char uchar aa,num;sbit dula=p26; sbit wela=p27;uchar code table= 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71;void main()num=0; aa=0;/tmod=0x00;/ 设定定时器0 为工作方式0tmod=0x01;/设定定时器0 为工作方式1/th0=(8192-5000)/32;/tl0=(8192-5000)%32;th0=(65536-50000)/256; tl0=(65536-50000)%256;ea=1;/开总中断et0=1;/开定时器 0 中断tr0=1;/启动定时器0 wela=1;p0=0x24;wela=0; dula=1; p0=0x3f;dula=0;while(1)if(aa=20)aa=0; num+; if(num=10) num=0; dula=1;p0=tablenum;dula=0;void timer0() interrupt 1/th0=(8192-5000)/32;/tl0=(8192-5000)%32; th0=(65536-50000)/256; tl0=(65536-50000)%256;aa+;中断控制 led/用定时器 t0 的中断控制1 位 led闪烁#include/包含51 单片机寄存器定义的头文件sbit d0=p00;/将 d0位定义为 p0.0 引脚unsigned int i;/*函数功能:主函数*/void main(void)i=0;ea=1;/开总中断et0=1;tmod=0x01;/定时器 t0 中断允许使用定时器t0 的模式 1th0=(65536-50000)/256; /定时器t0 的高8 位赋初值tl0=(65536-50000)%256; /定时器t0 的高8 位赋初值tr0=1;/启动定时器t0 while(1);/无限循环等待中断/*函数功能:定时器t0 的中断服务程序*/void time0(void) interrupt 1 using 0 /“ interrupt”声明函数为中断服务函数/其后的 1 为定时器 t0 的中断编号; 0 表示使用第 0 组工作寄存器i=i+1; if(i=40)d0=d0;/按位取反操作,将p0.0 引脚输出电平取反i=0;th0=(65536-50000)/256; /定时器 t0 的高 8 位重新赋初值tl0=(65536-50000)%256; /定时器 t0 的高 8 位重新赋初值中断控制 led2#include/包含52 单片机寄存器定义的头文件/*函数功能:主函数*/ void main(void)ea=1;ex0=1;/开放总中断允许使用外中断it0=1;p0=0xff;/选择负跳变来触发外中断关闭所有 p0 口的led灯while(1); /无限循环,/*函数功能:外中断t0 的中断服务程序*/void it0(void) interrupt 0 using 0 /外中断 0 的中断编号为 0 p0=p0;/每产生一次中断请求,p0 取反一次。 串 口 查 询 #include #include unsigned char tmp;void send_char(unsigned char txd); main()tmod = 0x20;/定时器 1 工作于 8 位自动重载模式 ,用于产生波特率th1=tl1=0xfd;/波特率 9600scon = 0x50;/设定串行口工作方式1允许接收 ,相当于下面三句/sm0=0;/sm1=1;/ren=1;pcon =0x00;/ 波特率不倍增tr1 = 1;/ 启动定时器 1 while(1)if(ri=1)/是否有数据到来ri = 0;tmp = sbuf;/暂存接收到的数据p0 = tmp;/数据传送到p0 口send_char(tmp);/回传接收到的数据void send_char(unsigned char txd)/传送一个字符sbuf = txd;while(!ti);/等特数据传送ti = 0;/清除数据传送标志串口通讯#include#define uchar unsignedchar #define uint unsigned intucharidatatrdata=r,i,c,h,m,c,u,r,z,-,5, 1,v,2,.,0,0x0d,0x0a,0x00;sbit k1=p32; /对应开发板k1 按键/*-*/串口初始化void uart_init(void)scon = 0x50; /串口工作方式为1, 串行允许接收/sm0=0;/sm1=1;/ren=1;tmod = 0x20; /定时器 1工作在方式 2/pcon = 0x80; /smod = 1;波特率加倍th1 = 0xfd; /波特率 9600bps fosc=11.0592mhz tl1 = 0xfd;es = 1; /开串口中断tr1 = 1; /允许定时器1 工作ea = 1; /开总中断void delay1ms(uint i)uchar j;while(i-)for(j=0;j115;j+)/1ms基准延时程序;/*-*/串口发送一个字节void uart_sendchar(unsigned char dat)sbuf = dat; /待发送的数据写入缓冲区while(!ti); /等待发送完成ti = 0; /清零发送标志位/*-*/串口发送一个字符串void uart_sendstring()uchar i=0;while(trdatai!=0x00)sbuf=trdatai; while(!ti); ti=0;i+;/*-*/主函数void main(void)uart_init(); /初始化串口while(1) if(k1=0)delay1ms(20); if(k1=0)uart_sendstring(); /发送数据while(!k1);/ / 等待按键释放/*-*/串口接收中断函数void int_uartrcv(void) interrupt 4unsigned char rcv = 0;if(ri) /查询接收标志位(有数据发送过来时置为1)ri = 0;/接收标志位清零rcv = sbuf; /存储缓冲区的数据p0=sbuf;uart_sendchar(rcv);/让从计算机上传到单片机的数据, 传回的计算机显示/用 led数码管显示计数器对t0 的计数值#include/包含52 单片机寄存器定义的头文件unsignedchartab=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x 90;/段码表unsigned char x;sbit p34=p34;void delay1ms(unsigned int i)unsigned char j; while(i-)for(j=0;j115;j+)/1ms基准延时程序;void display(unsigned char x)p2=0xdf;/p2.6引脚输出低电平,ds6点亮p0=tabx/100;/显示十位delay1ms(5);p2=0xbf;/p2.6引脚输出低电平,ds6点亮p0=tabx%100/10;/显示十位delay1ms(5);p2=0x7f;/p2.7引脚输出低电平,ds7点亮p0=tabx%10;/显示个位delay1ms(5);p2=0xff;/*函数功能:主函数*/ void main(void)tmod=0x06;/ tmod=0000 0110b,使用计数器t0 的模式 2ea=1;/开总中断et0=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 无缝墙布专业施工方案(3篇)
- 乡村扶贫慰问活动方案策划(3篇)
- 企业科技活动策划方案(3篇)
- 职场考试题库及答案解析
- 海事院校考试题库及答案
- 放射诊断考试题库及答案
- 北京市门头沟区2023-2024学年八年级下学期第一次月考道德与法制题目及答案
- 校长业务考试题目及答案
- 时间动态课件
- 100字的中秋作文(14篇)
- 2025年秋季学期(统编版)二年级上册语文教学工作计划及教学进度表
- 2025年福建省厦门市【辅警协警】笔试真题(含答案)
- (2025年标准)委托他人要账协议书
- 2025-2030中国青少年无人机教育课程体系构建与创新能力培养研究
- GB 11122-2025柴油机油
- 2025年广西中考语文试题卷(含答案)
- 联通技能竞赛考试题及答案(5G核心网知识部分)
- 初中七年级下册语文阅读理解十篇(含答案)
- 第2课 绘画作品中的劳动者 课件 五年级美术上册 岭南版(共15张PPT)
- 教学比武三测单的绘制课件
- 2022年江苏省基本公共卫生服务项目绩效考核指标表
评论
0/150
提交评论