版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
74ls164可否动向驱动多位数码管voiddisplay( )//数码显示{SCON=0;//初始化串行口方式SBUF=dispcode[ge];while(!TI);TI=0;led4=0;delay(2);led4=1;SBUF=dispcode[shi];while(!TI);TI=0;led3=0;delay(2);led3=1;SBUF=dispcode[bai];while(!TI);TI=0;led2=0;delay(2);led2=1;SBUF=dispcode[qian];while(!TI);TI=0;led1=0;delay(2);led1=1;SBUF=dispcode[wan];while(!TI);TI=0;led0=0;delay(2);led0=1;}74ls164数码管驱动(第二个程序)#defineclockPORTD.1#definedatePORTD.0#defineclock_enDDRD.1#definedate_enDDRD.0unsignedcharlab[2][10]={0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x09,0x02,0x9E,0x24,0x0C,0x98,0x48,0x40,0x1E,0x00,0x08};voidsend(unsignedcharw){unsignedchari;for(i=0;i<8;i++){clock=0;date=w&1;clock=1;w=w>>1;}return;}voidxianshi(longw,unsignedcharweishu){unsignedchari,j;bitflag=0;clock_en=1;date_en=1;if(w<0){flag=1;
w=-w;
}for(i=0;i<8;i++)
//8
次循环{if(w!=0){if(i!=weishu){j=lab[0][w%10];}else{j=lab[1][w%10];}}if(w==0){
if(i==0)j=0x03
;
//当数值直接是
0if(i<=weishu){if(i<weishu)j=0x03;if(i==weishu)j=0x02;}else{if(flag)
j=0xdf;
//show
负号else
{if(i!=0)j=0xff;}//oxff
就不显示flag=0;}}send(j);w=w/10;//每显示一位,除10}return;}51单片机接74ls164驱动数码管的C程序#include<regx52.h>sbitsclk=P2^0;sbitsda=P2^1;sbitslck=P2^2;inttab[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};voiddelay( ){inti,j;for(i=0;i<255;i++)for(j=0;j<80;j++);}voidbit_dat(biti){sclk=0;sda=i;sclk=1;}voiddat(chari){slck=0;bit_dat((bit)(tab[i]&0x80));bit_dat((bit)(tab[i]&0x40));bit_dat((bit)(tab[i]&0x20));bit_dat((bit)(tab[i]&0x10));bit_dat((bit)(tab[i]&0x08));bit_dat((bit)(tab[i]&0x04));bit_dat((bit)(tab[i]&0x02));bit_dat((bit)(tab[i]&0x01));slck=1;}main( ){inti;while(1){for(i=0;i<10;i++){dat(i);delay( );}i=0;}}程序以下:/**************************************//*74LS164数码管动向显示*//**************************************///-------------------------------------
库函数申明,管脚定义
------------#include<at89x51.h>#defineucharunsignedcharsbitsimuseri_CLK=P1^1;sbitsimuseri_DATA=P1^0;
//用//用
P1^1P1^0
模拟串口时钟模拟串口数据sbita0=ACC^0;unsignedcharcodedis_code[11]={0x28,0x7E,0xa2,0x62,//查表显示0,1、、90x74,0x61,0x21,0x7A,0x20,0x60,0x01};ucharnumer,temp;ucharge,shi;//----------------------------------------------------------------------------函数名称:out_simuseri输入参数:data_buf输出参数:无//功能说明:8位同步移位存放器,将data_buf的数据逐位输出到//----------------------------------------------------------------------------
simuseri_DATAvoidout_simuseri(uchardata_buf){uchari;i=8;ACC=data_buf;do{simuseri_CLK=0;simuseri_DATA=a0;simuseri_CLK=1;ACC=ACC>>1;}while(--i!=0);}/************************************/voiddelay(ucharms){uchari;while(ms--){for(i=0;i<125;i++);}}
//延时程序/***********************************/voidmain( ){ucharm;while(1){for(temp=0;temp<99;temp++){ge=temp/10;shi=temp%10;for(m=0;m<20;m++)//显示频次200ms加1次{P2_0=0;//位段码numer=dis_code[ge];out_simuseri(numer);//个位移位显示delay(5);P2_0=1;P2_1=0;numer=dis_code[shi];//十位移位out_simuseri(numer);delay(5);P2_1=1;}m=0;}}}/****************************************/*******************************************************************************第二个程序74HC164是个移位存放器,以下程序是我用过的,绝对没问题:此中ShowData为164数据脚,ShowClck为164时钟脚;voidShow_164(unsignedchar_ShowValue){unsignedcharCount0;for(Count0=0;Count0<=7;Count0++){if((_ShowValue&0x80)==0x80)ShowData=1;elseShowData=0;_ShowValue<<=1;ShowClck=0;_nop_( );_nop_( );ShowClck=1;}}鉴于51单片机的简略数字频次计要求使用准时/计数器1作准时用,准时1s;准时/计数器0作计数器用,被计数的外面脉冲从P3.4(T0)接入。单片机将在1s内对脉冲计数并送四位数码管显示,最大计数显示值为0FFFFH。求程序。悬赏分:30-解决时间:2010-6-2722:26;===============================================最正确答案:这是个简略频次计,程序以下;---------------------------------
:ORG0000HJMPSTARTORG000BHJMPT0_INT;---------------------------------START:MOVTMOD,#51H;/*01010001T1
计数,T0
准时*/MOVTH0,#HIGH(65536-50000);50ms@12MHzMOVTL0,#LOW(65536-50000)MOVTH1,#0MOVTL1,#0SETBTR0SETBTR1SETBET0SETBEAMOVR7,#20SJMP$;---------------------------------T0_INT:;50ms履行一次MOVTL0,#LOW(65536-50000);从头写入初始值MOVTH0,#HIGH(65536-50000);50ms@12MHzDJNZR7,T0_ENDMOVR7,#20MOVP1,TL1MOVP2,TH1MOVTL1,#0MOVTH1,#0T0_END:RETI;---------------------------------END外接74系列驱动电路就行,比方74LS164或74LS138。动向扫描就是给各个数码管挨次显示,随意时间只有一个数码管亮,但闪耀的太快了,人眼分辨不出,给人的感觉就是每个数码管都在亮。一般过程就是赋值,开显示,延时,关显示,这是我从前写过的程序#include<REGX52.H>main( ){unsignedinti;while(1){P0=0x3f;//个位赋值P1_0=0;//开显示for(i=0;i<2;i++);//延时P1_0=1;//关显示P0=0x6;//十位P1_1=0;for(i=0;i<2;i++);P1_1=1;P0=0x5b;//百位P1_2=0;for(i=0;i<2;i++);P1_2=1;P0=0x4f;//千位P1_3=0;for(i=0;i<2;i++);P1_3=1;}}这个是4位数码管,P0口接赋值端,P1口低四位接4个数码管的选通端,你要八个的话就把P1口的高四位再接到此外四个数码管的片选端,程序模
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年全国人大代表建言:推动碳资产变资本加快建设统一碳市场
- 2026年生物质电厂设备维护检修标准化手册
- 2026届浙江省宁波市海曙区三校联考初三第二学期综合练习(一)化学试题含解析
- 2026届福建省郊尾、枫亭五校教研小片区市级名校初三下学期第一次阶段考试(5月)化学试题含解析
- 辽宁省辽阳县重点名校2026届广东中考全真生物试题模拟试卷含解析
- 2026年广西南宁市天桃实验校联盟测试化学试题含解析
- 四川省乐山市2026年初三第二次调查研究考试化学试题含解析
- 云南省涧南彝族自治县市级名校2026届初三第三次月考化学试题含解析
- 2026年江西省抚州市宜黄县达标名校下学期初三化学试题第三次统一练习试题含解析
- 2026年液晶电视机开关电源电路故障快速诊断
- 2026年六安职业技术学院单招职业适应性考试题库附答案详解(预热题)
- 2026天津市津南区事业单位招聘37人考试参考试题及答案解析
- 2026年南京机电职业技术学院单招职业适应性测试题库(含答案详解)
- 2026年春节后复工复产“开工第一课”安全生产培训课件
- 专题学习《改革开放简史》
- 地下车库消防系统施工方案
- 灵活用工人员安全培训课件
- 用电安全进校园宣传课件
- 2026年中国速冻水饺市场运行(产业链、市场规模、价格等)现状及未来发展趋势分析
- (新教材)2026年人教版一年级下册数学 第二单元 20以内的退位减法 整 理和复习 课件
- 2026年无锡科技职业学院单招综合素质考试必刷测试卷必考题
评论
0/150
提交评论