首页 > 编程知识 正文

(单片机学习(1)------基本输入输出)

时间:2023-05-05 13:12:30 阅读:122402 作者:2416

1、

主题: P1连接8个发光二极管作为输出指示。 编程的实现是8个发光二极管以一定的频率点亮熄灭。

代码:

#includereg51.h //特殊功能寄存器的声明voiddelay(unsignedintd ) /延迟函数(while )--D0 ); }void main () ) while(1) /为永真) {P1=0xff;//关闭延迟(10000 ); P1=0x00; 延迟(10000; //点亮}电路图

2、流水灯的设计

P1口连接8个发光二极管作为输出指示,编程为实现8盏灯(每次点亮2盏灯)低到高(即从D1到D8笑蜡烛)流水灯的显示闪烁。

代码

# includere g51.hvoiddelay (不确定性) while(--D0 ); }void main () {unsigned char m=3; 无符号char n=252; 无符号char I=0; while(1) if (I==7) ) {P1=126; n=252; m=3; i=0; 戴尔(50000; }else{P1=n; n=n-m; m=2*m; i=i 1; 戴尔(50000; }}电路图

3、

主题:在Proteus环境下,设计基于51单片机(采用AT89C51 )的控制电路。 利用51单片机的P1端口和P3端口作为两个共阴极LED数码管静态显示的控制端口,使两个LED显示屏静态交替显示“12”、“”和“Ab”,延迟时间为软件

代码:

# includere g51.h # defineucharunsignedcharucharcodetable [ ]={0x 06,0x5b,0x 40,0x 40,0x 77,0x7c }; 语音延迟(不一致) while )--d0; } void显示(unsigned int b,unsigned int b ) {P1=table[a]; P3=table[b]; }void main () while) ) display () 0,1 ); 戴尔(900000; 显示(2,3; 戴尔(900000; 显示(4,5; 戴尔(900000; }电路图:

4、数码管动态显示

主题:在Proteus环境下,设计基于51单片机(采用AT89C51 )的控制电路。 将单片机的P1端口作为段端口,P3端口作为位端口构成6位LED动态显示的硬件电路,并被编程为在6位LED显示器上动态显示“123456”。

代码:

# includere g51.h # defineucharunsignedcharucharcodetable [ ]={0x 06,0x5b,0x4f,0x 66,0x6d,0x7d}; 语音延迟(不一致) while )--d0; }void display () {uchar bitcode,I; bitcode=0xfe; for(I=0; i6; I ) {P3=bitcode; P1=table[i]; 戴尔(150; bitcode=bitcode1; bitcode=bitcode|0x01; }voidmain(void ) while )1) {display ); }电路图

5、实现编程:一开始所有指示灯都亮,按S1键,指示灯闪烁500ms,再按一次,全亮。 (S1相当于一个控制开关控制灯的点亮、熄灭、闪烁) ) ) ) ) )。

代码

# includere g51.h # defineucharunsignedchar # defineuintunsignedintsbits1=P3 ^ 2; //输出关键位定义bit key=0; 定义//位,选择标志voiddlxms(uintXMS ) {uint t1,t2; for(t1=0; t1xms; t1 ) for ) T2=0; t2110; t2 ); }void keyscan ()//键扫描) {S1=1; //读取时首先写为1IF(S1==0) (dlxms ) 10 )。 //抖动消除if(s1==0) ) dlxms ) 10; key=~key; wile(S1==0); //判断按钮是否已按下。 }}}void main () {P1=0x00; //灯全亮while(1) {keyscan ); if(key==0) {P1=0x00; }else{dlxms(500; P1=~P1; }}电路图

所有代码和电路图: https://download.csdn.net/download/QQ _ 43556844/15087276

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。