诚毅学院课程电子设计总结报告74HC164芯片.docx
- 文档编号:23581051
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:51
- 大小:1.36MB
诚毅学院课程电子设计总结报告74HC164芯片.docx
《诚毅学院课程电子设计总结报告74HC164芯片.docx》由会员分享,可在线阅读,更多相关《诚毅学院课程电子设计总结报告74HC164芯片.docx(51页珍藏版)》请在冰豆网上搜索。
诚毅学院课程电子设计总结报告74HC164芯片
专业技能综合训练
总结报告
班级:
_电子0992
姓名:
__xxxx
学号:
_20099430xx
同组:
__xxxxx__
学号:
20099430xx
组号:
xx组
指导:
信息工程学院电子教研室
地点:
信息工程学院电子实验室
2012年12月24日~2013年1月30日
一、实习目的与要求:
1、对典型单片机仿真软件PROTUS与开发套件进行熟悉与训练,结合具体应用电路解剖分析,并通过分小组的专题实践,掌握单片机应用系统的调试与开发过程,同时规范设计的文档格式。
为毕业设计储备必要的电路板设计工艺知识和软件编程的操作技能。
二、实习内容:
1、要求在一周的实践时间里,完成用PROTUS仿真一个单片机电路系统。
Sch9v-5v
2、AT89X51_74HC164_1
程序:
#include
#definedisp_clkP0_0
#definedisp_datP0_1
voiddisp_74HC164_1(unsignedchardat);//显示0-9的数字
voiddelay1ms(unsignedintNms);
constunsignedchar
dispTable[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
voidmain(void)
{
unsignedcharx;
while
(1)
{
x++;
if(x>9)
x=0;
disp_74HC164_1(x);
delay1ms(500);
}
}
voiddelay1ms(unsignedintNms)
{
unsignedinti;
unsignedcharj;
for(i=0;i { for(j=0;j<200;j++) ; } } voiddisp_74HC164_1(unsignedchardat) { unsignedchari; unsignedchartempdat; tempdat=dispTable[dat]; for(i=0;i<8;i++) { disp_clk=0; disp_dat=(tempdat&0x80)? 1: 0; tempdat=tempdat<<1; disp_clk=1; } } 3、AT89X51_74HC164_4 程序: voiddisp_74HC164_4(unsignedintdat) { intx1,x2,x3,x4; unsignedchari; unsignedchartempdat; x1=dat%10; x2=(dat/10)%10; x3=(dat/100)%10; x4=(dat/1000)%10; tempdat=dispTable[x1]; for(i=0;i<8;i++) { disp_clk=0; disp_dat=(tempdat&0x80)? 1: 0; tempdat=tempdat<<1; disp_clk=1; } tempdat=dispTable[x2]; for(i=0;i<8;i++) { disp_clk=0; disp_dat=(tempdat&0x80)? 1: 0; tempdat=tempdat<<1; disp_clk=1; } tempdat=dispTable[x3]; for(i=0;i<8;i++) { disp_clk=0; disp_dat=(tempdat&0x80)? 1: 0; tempdat=tempdat<<1; disp_clk=1; } tempdat=dispTable[x4]; for(i=0;i<8;i++) { disp_clk=0; disp_dat=(tempdat&0x80)? 1: 0; tempdat=tempdat<<1; disp_clk=1; } } 4、键盘显示 程序: #include"AT89x52.h" #definedisp_clkP0_0 #definedisp_datP0_1 voiddisp_74HC164_4(unsignedintvalue); //显示0-9数字 voiddelay1ms(unsignedintNms);//disp_table[10]: 0,1,2,3,4,5,6,7,8,9共阳 constunsignedchardispTable[10]={0xC0,/*0*/0xF9,/*1*/0xA4,/*2*/0xB0,/*3*/0x99,/*4*/0x92,/*5*/0x82,/*6*/0xF8,/*7*/0x80,/*8*/0x90,/*9*/}; #definekeyportP3 unsignedcharkey_cnt=0; unsignedintvalue=0; unsignedchartimerx=0; voidmain(void) { while (1) { x++; if(x>99) x=0; disp_74HC164_1(x); delay1ms(500); } TMOD=0x10; TH1=0x3c; TL1=0xb0; ET1=1; EA=1; TR1=1; while (1) { disp_74HCl64_4(); delaylms(300); } } unsignedcharkeyscan() { unsignedcharkey1,key2; keyport=0xff; key1=~keyport; delaylms(20); key2=~keyport if(key1! =key2) return555; if(key1==0x00)return555; if(key1==0x01)return0; if(key1==0x02)return1; if(key1==0x04)return2; if(key1==0x08)return3; if(key1==0x10)return4; if(key1==0x20)return5; if(key1==0x40)return6; if(key1==0x80)return7; } voidtlint()interrupt3 { unsignedintkey; TH1=0x3c; TL1=0xb0; timerx++; if(timerx! =4) return; timerx=0; key=keyscan(); if(key==222)return; if(key==7) { key_cnt=0; value=0; return;} (ifkey_cnt<4) key_cnt++; else return; if(key_cnt==1)value=key; if(key_cnt==2)value=value*10+key; if(key_cnt==3)value=value*10+key; if(key_cnt==4)value=value*10+key; } voiddelay1ms(unsignedintNms) { unsignedinti; unsignedcharj; for(i=0;i { for(j=0;j<200;j++) ; } } voiddisp_74HC164_4(unsignedintvalue)//显示 { intx1,x2,x3,x4; unsignedchari; unsignedchartempdat; x1=value%10; x2=(value/10)%10; x3=(value/100)%10; x4=(value/1000)%10; tempdat=dispTable[x1]; for(i=0;i<8;i++) { disp_clk=0; disp_dat=(tempdat&0x80)? 1: 0; tempdat=tempdat<<1; disp_clk=1; } tempdat=dispTable[x2]; for(i=0;i<8;i++) { disp_clk=0; disp_dat=(tempdat&0x80)? 1: 0; tempdat=tempdat<<1; disp_clk=1; } tempdat=dispTable[x3]; for(i=0;i<8;i++) { disp_clk=0; disp_dat=(tempdat&0x80)? 1: 0; tempdat=tempdat<<1; disp_clk=1; } tempdat=dispTable[x4]; for(i=0;i<8;i++) { disp_clk=0; disp_dat=(tempdat&0x80)? 1: 0; tempdat=tempdat<<1; disp_clk=1; } } 5、去零按键显示 程序: #include<74HC164.h> #defineupP3_6 #definedownP3_7 voiddelay1ms(unsignedintNms); voidmain(void) { unsignedintx; x==0; disp_74HC164_4(x); delay1ms(500); while (1) { if(up==0) { while(up==0); x++; if(x>9999) x=0; disp_74HC164_4(x); //delay1ms(500); } if(down==0) { while(down==0); if(x<1) x=10000; x--; disp_74HC164_4(x); //delay1ms(500); } } } voiddelay1ms(unsignedintNms) {unsignedinti; unsignedintj; for(i=0;i {for(j=0;j<200;j++); } } 6、74HC573_1 程序: #include"AT89x52.h" #definedispdatP0 #definedispLE_1P3_0 voiddisp_74HC573_1(unsignedchardat); //显示0-9数字 voiddelay1ms(unsignedintNms); //disp_table[10]: 0,1,2,3,4,5,6,7,8,9共阳 constunsignedchardispTable[10]={0xC0,/*0*/0xF9,/*1*/0xA4,/*2*/0xB0,/*3*/0x99,/*4*/0x92,/*5*/0x82,/*6*/0xF8,/*7*/0x80,/*8*/0x90,/*9*/}; voidmain(void) { unsignedcharx; while (1) { dispLE_1=0; x++; if(x>9) x=0; disp_74HC573_1(x); delay1ms(500); } } voiddelay1ms(unsignedintNms) { unsignedinti; unsignedcharj; for(i=0;i { for(j=0;j<200;j++) ; } } voiddisp_74HC573_1(unsignedchardat) //显示 { dispLE_1=0; dispdat=dispTable[dat]; dispLE_1=1; dispLE_1=0; } 7、74HC573_4 程序: #include"AT89x52.h" #definedispDatP0 #definedispLE_1P3_0 #definedispLE_2P3_1 #definedispLE_3P3_2 #definedispLE_4P3_3 #definekeyportP1 unsignedcharkey_cnt=0; //按键计数器 unsignedintvalue=0; unsignedinttemp1=0; //KEY14加计数标志位 unsignedinttemp2=0; //KEY11减记数标志位 unsignedchartimerx=0; unsignedcharkeyscan(); //矩阵扫描 voiddisp_74hc573_4(unsignedintdat); voiddelay1ms(unsignedintNms); constunsignedchar dispTable[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; voidmain(void) { TMOD=0x01; TH0=0x3C; TL0=0x0B; ET0=1; EA=1; TR0=1; value=0; dispLE_1=0; while (1) { disp_74hc573_4(value); delay1ms(400); if(temp1==1)//KEY14标志位=1,开始加计数 { value++; if(value>9999) value=0; } if(temp2==1)//KEY11标志位=1,开始减计数 { value--; if(value<0) value=9999; } } } unsignedcharkeyscan() { unsignedcharkey1,key2,keyA,keyB; keyport=0xf0; key1=~keyport; keyport=0x0f; key2=~keyport; keyA=(key1&0xf0)+(key2&0x0f); delay1ms(20); keyport=0xf0; key1=~keyport; keyport=0x0f; key2=~keyport; keyB=(key1&0xf0)+(key2&0x0f); if(keyA! =keyB) return222; if(keyA==0x11)return0; if(keyA==0x21)return1; if(keyA==0x41)return2; if(keyA==0x81)return3; if(keyA==0x12)return4; if(keyA==0x22)return5; if(keyA==0x42)return6; if(keyA==0x82)return7; if(keyA==0x14)return8; if(keyA==0x24)return9; if(keyA==0x18)return10; if(keyA==0x28)return11; if(keyA==0x48)return12; if(keyA==0x44)return13; } Voidt0int()interrupt1 //定时 { unsignedintkey=0; TH0=0x3C; TL0=0xB0; timerx++; if(timerx! =4) return; timerx=0; key=keyscan(); if(key==222) return; if(key==10) { temp1=0;//按下KEY13停止计数,并清0 key_cnt=0; value=0; return; } if(key==12) { temp1=~temp1;}//按下KEY15停止计数值保持不变 if(key==11)//按下KEY14开始加计数 temp1=1; if(key==13)//按下KEY11开始减计数 temp2=1; if(key! =15) { if(key_cnt<4) key_cnt++; else return; if(key_cnt==1)value=key; if(key_cnt==2)value=value*10+key; if(key_cnt==3)value=value*10+key; if(key_cnt==4)value=value*10+key; } } voiddelay1ms(unsignedintNms) { unsignedinti; unsignedcharj; for(i=0;i { for(j=0;j<200;j++); } } voiddisp_74hc573_4(unsignedintdat) { unsignedchari; unsignedcharx1,x2,x3,x4; unsignedchartempdat; x1=dat%10; x2=(dat/10)%10; x3=(dat/100)%10; x4=(dat/1000)%10; dispLE_1=0; dispDat=dispTable[x1]; dispLE_1=1; dispLE_1=0; dispLE_2=0; dispDat=dispTable[x2]; dispLE_2=1; dispLE_2=0; dispLE_3=0; dispDat=dispTable[x3]; dispLE_3=1; dispLE_3=0; dispLE_4=0; dispDat=dispTable[x4]; dispLE_4=1; dispLE_4=0; } 8、2Led_delay #include voidPort_Init(void); //Portinitializationroutine voidSYSCLK_Init(void); voiddelay(unsignedintdl); sbitLED=P1^6; //LED='1'meansON sbitSW1=P3^7; //SW1='0'meansswitchpressed voidmain(void) { WDTCN=0xDE; //Disablewatchdogtimer WDTCN=0xAD; SYSCLK_Init();//switchtoexternalcrystal Port_Init(); //InitPorts while (1){ LED=1; delay(0xffff); LED=0; delay(0xffff); }; } voidSYSCLK_Init(void) { unsignedinti; OSCICN|=0x03; //configureinternaloscillatorforitshighestfrequency(16MHz) //Step1.Enabletheexternaloscillator. OSCXCN=0x60;//b01100000; //externalcrystalmode,notdividedby2 OSCXCN|=0x07;//b00000111;//crystal10MHz //Step2.Waitatleast1ms. for(i=9000;i>0;i--);//at16MHz,1ms=16000SYSCLKs,DJNZ=2SYSCLKs //Step3.PollforXTLVLD=>? ? while((OSCXCN&0x80)! =0x80){}; //Step4.Switchthesystemclocktotheexternaloscillator. OSCICN|=0x08; } //----------------------------------------------------------------------------- voidPort_Init(void) { XBR0=0x04; //RouteUART0tocrossbar XBR2|=0x40; //Enablecrossbar,weakpull-ups P0MDOUT|=0x01; //enableTX0asapush-pulloutput P1MDOUT|=0x40; //enableLEDaspush-pul
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学院 课程 电子设计 总结报告 74 HC164 芯片
![提示](https://static.bdocx.com/images/bang_tan.gif)