好文档 - 专业文书写作范文服务资料分享网站

单片机C语言程序设计代码和仿真图

天下 分享 时间: 加入收藏 我要投稿 点赞

《单片机C语言程序设计实训100例---基于8051和PROTEUS仿真》案例

uchar i; for(i=0;i<8;i++) {

P0=0xff;

P0=DSY_CODE[Display_Buffer[i]]; P2=DSY_Index[i]; DelayMS(2); } } //主程序 void main() {

uchar i,Key_NO,Key_Counts=0; P0=0xff; P1=0xff; P2=0x00; while(1) {

Show_Count_ON_DSY(); P1=0xff; Key_NO=P1;

//P1口按键状态分别为K1-0xfe, switch(Key_NO)

31

K2-0xfd,K3-0xfb 《单片机C语言程序设计实训100例---基于8051和PROTEUS仿真》案例

{

case 0xfe: Key_Counts++;

if(Key_Counts>8) Key_Counts=8;

Display_Buffer[Key_Counts-1]=Key_Counts; break; case

break;

case 0xfb: Display_Buffer[0]=0;

for(i=1;i<8;i++) Display_Buffer[i]=10; Key_Counts=0; }

//若键未释放则仅刷新显示,不进行键扫描 while(P1!=0xff) Show_Count_ON_DSY(); } }

15 K1-K4 控制数码管加减演示

/* 名称:K1-K4 控制数码管加减演示

32

0xfd:

if(Key_Counts>0)Display_Buffer[--Key_Counts]=10;

《单片机C语言程序设计实训100例---基于8051和PROTEUS仿真》案例

说明:按下K1后加1计数,按下K2后减1计数,按下K3后清零。 */

#include #include #define uchar unsigned char #define uint unsigned int //段码 uchar

8,0x80,0x90,0xff}; //待显示的3位缓冲 uchar Num_Buffer[]={0,0,0}; //按键代码,按键计数

uchar Key_Code,Key_Counts=0; //延时

void DelayMS(uint x) { uchar i;

while(x--) for(i=0;i<120;i++); } //显示函数

void Show_Counts_ON_DSY()

33

code

DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf

《单片机C语言程序设计实训100例---基于8051和PROTEUS仿真》案例

{

uchar i,j=0x01;

Num_Buffer[2]=Key_Counts/100; Num_Buffer[1]=Key_Counts/10; Num_Buffer[0]=Key_Counts; for(i=0;i<3;i++) {

j=_cror_(j,1); P0=0xff;

P0=DSY_CODE[Num_Buffer[i]]; P2=j; DelayMS(1); } } //主程序 void main() { uchar i; P0=0xff; P1=0xff; P2=0x00; Key_Code=0xff; while(1)

34

《单片机C语言程序设计实训100例---基于8051和PROTEUS仿真》案例

{

Show_Counts_ON_DSY(); P1=0xff; Key_Code=P1;

//有键按下时,数码管刷新显示30次,该行代码同时起到延时作用 if(Key_Code!=0xff)

for(i=0;i<30;i++) Show_Counts_ON_DSY(); switch(Key_Code) {

case 0xfe: if(Key_Counts<255) Key_Counts++; break;

case 0xfd: if(Key_Counts>0) Key_Counts--; break;

case 0xfb: Key_Counts=0; }

Key_Code=0xff; } }

16 4X4矩阵键盘控制条形LED显示

35

9kxd01cs1i4uc568cqjj1x2cx44ea901aap
领取福利

微信扫码领取福利

微信扫码分享