单片机入门小程序
更新时间:2023-10-13 18:34:01 阅读量: 综合文库 文档下载
51单片机的学习是一个动手实践的过程,很多同学在学习单片机的初期总是觉得很难,无法入门。本人根据自己的学习经历,结合自己刚学习单片机的体验,写下几个小的程序供大家参考,如能掌握如下几个小程序的思想与精髓,那么就已经探踏入了单片机的大门。学习单片机的核心就是动手实践,当我们通过自己的努力把第一个LED点亮时,我们就会信心加倍,之后的学习就会变得轻松!希望对大家有所帮助。
一个LED闪烁 #include
两个led闪烁 #include
#define uchar unsigned char #define uint unsigned int void delay(); void main() {
while(1) { P0=0xaa; delay(); P0=0x00; delay(); } }
void delay() { uchar x,y; for(x=110;x>0;x--) for(y=120;y>0;y--); }
流水灯
#include
P0=0xef; temp=P0; delay(); while(1) { temp=_crol_(temp,1); delay(); } }
void delay() { unsigned char x,y; for(x=40;x>0;x--) for(y=200;y>0;y--); }
键控移位信号灯 #include
#define uchar unsigned char #define uint unsigd neint sbit k1=P1^0; sbit k2=P1^1;
void delay(uchar z); void main() {
P0=0X18; while(1) { if(k1) P0=_crol_(P0,1); if(k2) P0=_cror_(P0,1); } }
void delay(uchar z) { uchar x,y; for(x=z;x>0;x--) for(y=120;y>0;y--) ;}
中断的简单应用
1. 利用定时器中断实现LED闪烁
#include
#define uchar unsigned char #define uint unsigned int sbit led1=P1^0; uchar num; void main() { P1=0x00;
TMOD=0x01; TH0=(65536-45872)/265; TL0=(65536-45872)%6; EA=1; ET0=1; TR0=1; while(1); }
void T0_time()interrupt 1 { TH0=(65536-45872)/256; TL0=(65536-45872)%6; num++; if(num==20) { num=0; led1=~led1; } }
2. 数码管记录LED闪的次数
#include
#define uchar unsigned char #define uint unsigned int sbit led=P1^2;
void display(uchar,uchar);
uchar num=0,num1=0,num2=0,shi=0,ge=0;
uchar code array[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07}; void main() {
TMOD=0x11;
TH0=(65536-45872)/256; TL0=(65536-45872)%6; TH1=(65536-45872)/256; TL1=(65536-45872)%6; EA=1; ET0=1; ET1=1; TR0=1; TR1=1; while(1); {
display(shi,ge); } }
void display(uchar shi,uchar ge) {
P2=0x03;
// P1^0=array[shi];
// P1^1=array[ge]; }
/*void delay(z) {
uchar x,y;
for(x=z;x>0;x--) for(y=110;y>0;y--); }*/
void Time0() interrupt 1 {
TH0=(65536-45872)/256; TL0=(65536-45872)%6; num++; if(num==4) {
num=0; led=~led; } }
void Time1() interrupt 2 {
TH1=(65536-45872)/256; TL1=(65536-45872)%6; num1++; if(num1==20) {
num1=0; num2++;
if(num2==60) num2=0;
shi=(num2)/10; ge=(num2); } }
数码管的动态显示 #include
#define uchar unsigned char #define uint unsigned int
uchar code duan[9]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07}; void delay(); void main() {
while(1) {
P2=0x7f; P0=0x3f;
delay();
P2=0xbf; P0=0x06; delay();
P2=0xdf; P0=0x5b; delay();
P2=0xef; P0=0x4f; delay();
P2=0xf7; P0=0x66; delay();
P2=0xfb; P0=0x6d; delay();
P2=0xfd; P0=0x7d; delay();
P2=0xfe; P0=0x07; delay(); } }
void delay() {
uint x,y;
for(x=10;x>0;x--) for(y=10;y>0;y--); }
数码管的静态显示
#include
#define uchar unsigned char #define uint unsigned int
uchar code arry[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void delay(uint z); void main() {
P2=0x00; while(1)
{
uchar i;
for(i=0;i<10;i++) { P0=arry[i]; delay(500); } } }
void delay(uint z) {
uint x,y;
for(x=z;x>0;x--) for(y=110;y>0;y--); }
数码管显示8
#include
P2=0x7f; //位选端低电平有效
P0=0x7f; //段选高电平有效(共阴) while(1); }
AD转换
#include
#define uchar unsigned char sbit wr=P3^6; sbit rd=P3^7; sbit dula=P2^6; sbit wela=P2^7;
uchar code shuma[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; void delay(uchar z) {
uchar x,y;
for(x=z;x>0;x--) for(y=110;y>0;y--); }
void display(uchar bai,uchar shi,uchar ge) {
dula=1;
P0=shuma[bai]; dula=0; P0=0xff; wela=1; P0=0x7e;
wela=0; delay(10);
dula=1;
P0=shuma[shi]; dula=0; P0=0xff; wela=1; P0=0x7d; wela=0; delay(10);
dula=1;
P0=shuma[ge]; dula=0; P0=0xff; wela=1; P0=0x7b; wela=0; delay(10); }
void main() {
uchar A,B,C,i,adresult; float wela=1;
P0=0x7f;//开ADCS wela=0; while(1) {
wr=1; _nop_(); wr=0; _nop_(); wr=1; _nop_();
for(i=0;i<10;i++) {display(A,B,C);} P1=0Xff; rd=1; _nop_(); rd=0; _nop_(); rd=1;
adresult=P1;
// =(adresult*5)/256;
A=adresult/256;
B=adresult%6/16; C=adresult%6; }
LCD1602显示
#include
#define uchar unsigned char sbit lcden=P3^4; //使能端
sbit lcdrs=P3^5;//写数据,写命令控制端 //sbit lcdrw=P3^6; #define lcd P0
void delay(uchar z) //延时函数 {
uchar x,y;
for(x=z;x>0;x--) for(y=120;y>0;y--); }
void write_data(uchar Data)//写数据 {
lcden=0; lcdrs=1; lcden=1; delay(10); lcd=Data; lcden=0; delay(10); }
void write_commend(uchar com) //写命令 {
lcden=0; lcdrs=0; lcden=1; delay(10); lcd=com; lcden=0; delay(10); }
void initial() //初始化函数 、 {
write_commend(0x01);//清屏 write_commend(0x38); write_commend(0x0c); write_commend(0x06); }
void main() {
uchar i,j;
uchar fei[]=\ uchar benfei[]=\// lcdrw=0; initial(); // while(1);
write_commend(0x80); // write_data('f'); // write_data('e'); // write_data('i'); // write_data('f'); // write_data('e'); // write_data('i'); // write_data('f'); // write_data('l'); for(j=0;j<6;j++) write_data(fei[j]);
write_commend(0xc2); for(i=0;i<11;i++) write_data(benfei[i]); }
1602显示AD转换结果
#include
#define uchar unsigned char sbit lcden=P3^4; //使能端
sbit lcdrs=P3^5;//写数据,写命令控制端 //sbit lcdrw=P3^6; #define lcd P0
void delay(uchar z) //延时函数 {
uchar x,y;
for(x=z;x>0;x--) for(y=120;y>0;y--); }
void write_data(uchar Data)//写数据 {
lcden=0; lcdrs=1; lcden=1; delay(10); lcd=Data; lcden=0; delay(10); }
void write_commend(uchar com) //写命令 {
lcden=0; lcdrs=0;
lcden=1; delay(10); lcd=com; lcden=0; delay(10); }
void initial() //初始化函数 、 {
write_commend(0x01);//清屏 write_commend(0x38); write_commend(0x0c); write_commend(0x06); }
void main() {
uchar i,j;
uchar fei[]=\ uchar benfei[]=\// lcdrw=0; initial(); // while(1);
write_commend(0x80); // write_data('f'); // write_data('e'); // write_data('i'); // write_data('f'); // write_data('e'); // write_data('i'); // write_data('f'); // write_data('l'); for(j=0;j<6;j++) write_data(fei[j]);
write_commend(0xc2); for(i=0;i<11;i++) write_data(benfei[i]); }
直流电机
#include
#define uchar unsigned char sbit wr=P3^6; sbit csda=P3^2; sbit s1=P3^4;//加速 //sbit s2=P3^5;//减速 sbit wela=P2^7; sbit dula=P2^6;
uchar num2,num1,n,A2,A3; uchar k=5;
正在阅读:
单片机入门小程序10-13
朗诵诗歌青春唯美03-30
周易上经03-17
幼儿园中、大班端午节活动策划实施方案08-11
ch0809-29
英语辩论赛中文规则03-30
永不受伤的飞翔的故事11-20
学习国家中长期教育改革和发展纲要心得206-24
人教新目标2014八年级下期英语期中试题06-27
清洗用阴离子表面活性剂性能比较03-19
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 单片机
- 入门
- 程序
- 抓住暴涨股票的绝招
- 《金融学》习题及参考答案
- 湖南省地质博物馆实习报告
- 高中生物一轮复习周测试题 - 第1、2单元测试题
- 吉大16春学期《高电压技术》在线作业二 答案
- 承德市公路工程施工行业企业名录2018版302家 - 图文
- 山东省微型消防站建设标准
- 韵达快递顾客满意度分析
- 东大17秋学期《JAVA语言程序设计》在线作业2 免费答案
- 秦皇岛北戴河新区团林街道办事处
- 机体代谢紊乱总结(病理学)
- 2009—2010+操作系统试卷A
- 阿基米德原理 - 专题练习题
- 欧阳修《送丁元珍峡州判官》诗考辨
- 在思辨和争鸣中寻求共识 - 语文教育热点问题争鸣聚焦 期
- 可口可乐茶饮料推销中存在的问题及对策
- 全国2011年10月自学考试外国新闻事业史试题
- 2018“互联网+”开放合作试题--多选
- 相邻权VS物权法
- (新)人教版八年级语文上册 第一次月考试题及答案 - 图文