51单片机入门实验及示例程序
更新时间:2024-05-01 19:35:01 阅读量: 综合文库 文档下载
实验题
1、 由按键S1产生外部中断1,S1按一次L0、L2、L4、L6亮,再按一次L1、L3、L5、L7
亮。
2、 由按键S1产生外部中断1控制T0启停,T0产生100ms定时,使4个数码管循环显示
0中的一段,每段显示时间为1S。
3、 T1工作于方式2,产生250uS精确定时,产生0~9秒计时,并显示在数码管上。
4、 串口工作于方式1,波特率为9600bps,当单片机收到PC机串口发来的任何字符,都立
刻转发给PC。
5、 串口工作于方式1,波特率为9600bps,当单片机收到PC机串口发来的‘0’~‘9’,回
送0~9,当收到‘a’~‘z’时回送‘A’~‘Z’。
6、 串口工作于方式1,波特率为9600bps,当单片机收到PC机串口发来的‘1’,回送字符
串“Start”,并启动T0产生1S的方波控制L0~L7闪烁,当收到‘2’时回送字符串“Stop”,并停止控制L0~L7。
7、 串口工作于方式1,波特率为9600bps,当单片机收到PC机串口发来的‘Start’,回送
字符串“Ok1”,并启动T0产生1S的方波控制L0~L7闪烁,当收到‘Stop’时回送字符串“Ok2”,并停止控制L0~L7。
8、 当S1工作于独立按键方式时(需考虑按键抖动,软件滤波),按第1次,L0~L3以0.5
秒为周期闪烁,串口以9600bps波特率发送字符‘1’一次,按第2次,L4~L7以1秒为周期闪烁,串口以9600bps波特率发送字符‘2’一次,按第3次,L0~L7以2秒为周期闪烁,串口以9600bps波特率发送字符‘3’一次。再按一次回到第一次的模式,如此循环。
本人自己写的示例程序,验证可用,仅供参考学习用: 附部分原理图:
1、
#include
#define uchar unsigned char #define uint unsigned int
sbit P33=P3^3; sbit P35=P3^5;
bit flag=1;
void delay_115(int x) //延时函数 {
int i,j; for(i=x;i>0;i--) for(j=110;j>0;j--); }
void main() { EA=1; //中断总允许位 IT1=0; //设置外部中断1的触发方式为电平触发 EX1=1; //开外部中断 P35=0; P1=0xaa; //初始化P1,方法二中必须写这句 while(1); }
void t1_115() interrupt 2 {
/* delay_115(20); //按键消抖 while(!P33); //当松开按钮时程序才往下执行,否则一直停留在此处
delay_115(20); //按键消抖 */ //方法一: /* if(P1==0x55) P1=0xaa; else P1=0x55; */ //方法二:(若使用方法二则给P1初始化为0xaa或0x55) // P1=~P1; //取反 if(P33==0) { delay_115(15); if(P33==0) { if(flag) { P1=~P1; flag=0; } } else { // key=0; flag=1; } } else { // key=0; flag=1; } } 2、
#include
#define uchar unsigned char #define uint unsigned int
sbit P33=P3^3; sbit P35=P3^5;
uchar count_115=0;
void delay_115(int x) //延时函数
{
int i,j; for(i=x;i>0;i--) for(j=110;j>0;j--); }
void main() { uchar temp_115=0xfe; EA=1; //中断总允许位 TMOD=0x01; //设置T0的工作方式为方式1 IT1=0; //设置外部中断1的触发方式为电平触发 EX1=1; //开外部中断 ET0=1; //开定时器T0 TR0=1; //定时器T0启动 TH0=0x3C; //设置初值 TL0=0xB0; P35=0; P0=0x10; //打开4位数码管 while(1) { if(count_115==20) //该变量每50ms加1,当count_115等于20时,即时间间隔为1s { count_115=0; //将计数变量重置为0,以便开始下1s的定时 P1=temp_115; temp_115=temp_115<<1; //左移一位 temp_115=temp_115+0x01; //最低位补1 } if(temp_115==0xbf) //由于只需要点亮最外圈的六个管子,故此处重置temp_115为0xfe temp_115=0xfe; } }
void t0_115() interrupt 1 {
TH0=0x3C; //装入初值 此处为50ms执行一次中断 TL0=0xB0; count_115++; //每执行一次中断,该变量加1
}
void t1_115() interrupt 2 { delay_115(20); //按键消抖 while(!P33); //当松开按钮时程序才往下执行,否则一直停留在此处 delay_115(20); //按键消抖 TR0=~TR0; //暂停或启动定时器T0 }
3、此题过于简单,略。。。 4、
#include
#define uchar unsigned char #define uint unsigned int
uchar thedata; bit flag;
void main() {
TMOD=0x20; TH1=0xfd; TL1=0xfd; TR1=1; // SM0=0; // SM1=1; // REN=1; SCON=0x50; EA=1; ES=1; while(1) { if(flag==1) { ES=0; flag=0; SBUF=thedata; while(!TI); TI=0; ES=1;
} } }
void serial() interrupt 4 {
thedata=SBUF; RI=0; flag=1; } 5、
#include
#define uchar unsigned char #define uint unsigned int
uchar thedata; bit flag;
void main() {
TMOD=0x20; TH1=0xfd; TL1=0xfd; TR1=1; // SM0=0; // SM1=1; // REN=1; SCON=0x50; EA=1; ES=1; while(1) { if(flag==1) { ES=0; flag=0; if(thedata>=48 && thedata<=57) thedata-=48; if(thedata>=97 &&thedata<=122) //根据ascii值判断是否接收到了'a'-'z' thedata-=32; //将小写字母转换成大写 ascii值差32
SBUF=thedata; while(!TI); TI=0; ES=1; } } }
void serial() interrupt 4 {
thedata=SBUF; RI=0; flag=1; } 6、
#include
#define uchar unsigned char #define uint unsigned int
uchar count=0; uchar temp; uchar* thedata; bit flag;
void main() { uchar i;
TMOD=0x21; TH0=0x3C; TL0=0xB0; TH1=0xfd; TL1=0xfd; TR1=1; // TR0=1; SCON=0x50; EA=1; ET0=1; ES=1; while(1) { if(flag==1)
{ ES=0; flag=0; if(temp=='1') { TR0=1; thedata=\ } if(temp=='2') { TR0=0; thedata=\ } // for(i=0;i<5;i++) while(*thedata) { // SBUF=thedata[i]; SBUF=*thedata; while(!TI); TI=0; thedata++; } ES=1; } if(count==20) { count=0; P1=~P1; } } }
void t0() interrupt 1 {
TH0=0x3C; TL0=0xB0; count++; }
void serial() interrupt 4 {
temp=SBUF; RI=0;
flag=1; } 7、
#include
#define uchar unsigned char #define uint unsigned int uchar i;
uchar count=0;
uchar data_count=0; uchar receive[8]=%uchar send_Ok1[]=%uchar send_Ok2[]=%uchar Start[]=%uchar Stop[]=%uchar flag;
void main() {
TMOD=0x21; TH0=0x3C; TL0=0xB0; TH1=0xfd; TL1=0xfd; TR1=1; SCON=0x50; EA=1; ET0=1; ES=1; while(1) { if(flag==1) { ES=0; flag=0; TR0=1; data_count=0; for(i=0;i<4;i++) { SBUF=send_Ok1[i]; while(!TI);
TI=0; } ES=1; } if(flag==2) { ES=0; flag=0; TR0=0; data_count=0; for(i=0;i<4;i++) { SBUF=send_Ok2[i]; while(!TI); TI=0; } ES=1; } if(count==20) { count=0; P1=~P1; } } }
void t0() interrupt 1 {
TH0=0x3C; TL0=0xB0; count++; }
void serial() interrupt 4 { if(RI) { RI=0; receive[data_count]=SBUF; if(strcmp(receive,Start)==0) { flag=1; for(i=0;i<8;i++)
receive[i]='\\0'; } if(strcmp(receive,Stop)==0) { flag=2; for(i=0;i<8;i++) receive[i]='\\0'; } data_count++; } } 8、
#include
#define uchar unsigned char #define uint unsigned int
uchar count=0,NUM=10; sbit P33=P3^3; sbit P35=P3^5;
void delay(int x) {
int m,n; for(m=x;m>0;m--) for(n=110;n>0;n--); }
void main() { uchar i=1; TMOD=0x21; TH0=0x3C; TL0=0xB0; TH1=0xfd; TL1=0xfd; TR1=1; SCON=0x50; EA=1; ET0=1; ES=1; P35=0;
P1=0x00; while(1) { if(P33==0) { delay(20); if(P33==0) { P1=0xff; if(i==1) { count=0; NUM=10; SBUF='1'; while(!TI); TI=0; i++; } else if(i==2) { NUM=20; SBUF='2'; while(!TI); TI=0; i++; } else //if(i==3) { NUM=40; ES=0; SBUF='3'; while(!TI); TI=0; ES=1; i=1; } TR0=1; } while(!P33); delay(20); } }
}
void t0() interrupt 1 {
TH0=0x3C; TL0=0xB0; count++; if(count==NUM) { } }
count=0; if(NUM==10) P1=~P1+0xf0; else if(NUM==20) P1=~P1+0x0f; else //if(NUM==40) P1=~P1;
正在阅读:
51单片机入门实验及示例程序05-01
2022年上半年全国计算机软考信息系统管理工程师真题+答案解析(上04-12
绑定主线程执行技术04-22
签收证明08-22
化学选修4第一二章知识点总结05-21
04- 无线网络规划流程-6712-06
眼镜店常用英语对话11-22
高等代数期中考试题10-14
波斯语,中文,英语,日常用语08-19
- 清真菜谱
- 我国国民经济和社会发展十二五规划纲要(全文)
- 高三物理机械振动和机械波复习2
- 浙江省公路山岭隧道机械化装备应用指导手册 doc - 图文
- 2018届高三数学文科二轮复习:专题检测(九) 导数的简单应用
- 2015年上海市公务员录用考试《行政职业能力测验》试卷(B类)
- 七年级道德与法制下册
- 大班户外游戏教案
- 病虫害预警 - 图文
- 某养鱼场为了提高经营管理水平
- 汉中市勉县尧柏余热汽机规程 10
- 烹饪试卷
- 事业单位考试公共基础知识专项分类题库训练
- 语文:第2课 走一步,再走一步 课堂导学案(人教版 七上)
- 天汉使用手册
- 人教版小学三年级数学下册教学计划
- 房地产销售管理完全操作手册122页
- 2009年评审通过具有中学高级教师专业技术资格人员名单...
- 《15秋公共关系学》作业1
- 2017最新版监理公司三标一体管理手册
- 示例
- 单片机
- 入门
- 实验
- 程序
- 2018高考语文三月选练题(一)Word版含答案
- 防辐射吃什么好
- 和声教案 绪论 四部和声
- 城管业务考试卷及答案
- 泸医附院埃博拉出血热应急启动预案(感染科)新
- 园林植物造景设计 - 秦华 - 模拟试题1
- 2011年北京市各区高三物理二模试卷分题型汇
- 路施工组织设计方案
- 王建21世纪地理学 考试答案
- Resiprocate简介
- 大学物理光学练习题及答案详解
- 西安医学院辅导员工作量化考核试行办法
- 鹤岗三中2014-2015年答案
- 西南大学2018年6月1056 《计算机基础》大作业
- 北师大版小学六年级品德与社会总复习资料
- 情绪管理与职场减压一
- 2013年光缆线务员职业技能知识复习题大全
- 略论古希腊时期的建筑及其对现代建筑的影响
- 2016年小学四年级体育教案
- 考点16 区域地理 - 图文