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
四川省工商行政管理局文件05-23
用窗函数法设计FIR数字滤波器12-20
高分子材料的拉伸性能测试11-15
实验室排风扇项目可行性研究报告 - 图文05-27
18年最新的男女宝宝取名字好听的名字大全05-07
案例--旭日升的成败分析10-15
泉州文武庙关帝灵签详解0-100签06-01
计算机组成原理第4章作业参考答案11-13
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 示例
- 单片机
- 入门
- 实验
- 程序
- 2018高考语文三月选练题(一)Word版含答案
- 防辐射吃什么好
- 和声教案 绪论 四部和声
- 城管业务考试卷及答案
- 泸医附院埃博拉出血热应急启动预案(感染科)新
- 园林植物造景设计 - 秦华 - 模拟试题1
- 2011年北京市各区高三物理二模试卷分题型汇
- 路施工组织设计方案
- 王建21世纪地理学 考试答案
- Resiprocate简介
- 大学物理光学练习题及答案详解
- 西安医学院辅导员工作量化考核试行办法
- 鹤岗三中2014-2015年答案
- 西南大学2018年6月1056 《计算机基础》大作业
- 北师大版小学六年级品德与社会总复习资料
- 情绪管理与职场减压一
- 2013年光缆线务员职业技能知识复习题大全
- 略论古希腊时期的建筑及其对现代建筑的影响
- 2016年小学四年级体育教案
- 考点16 区域地理 - 图文