课设题目:数码管手机号
要求:四位一体共阴数码管循环左移显示手机号,显示完成蜂鸣器响一次,重复循环
一:共阴极数码管16进制编码1~f如下:
uchar code table[]=
{0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
二:proteus中各元件符号表示:CRYSTAL 晶振 ;电解电容:CAP-即可搜到;电阻:res;
7SEG-MPX4-CC 四个共阴二极管显示器 1234 是阴公共端;
排阻:respack
三:总体电路图
实物图:(前三位的手机号,太懒,不想上传太多图片了)
四 代码实现
#include #define uchar unsigned char; #define uint unsigned int; sbit beep=P1^2; sbit P2_0 = P2^0;//位选数据的十位,即左边第一位数码管 sbit P2_1 = P2^1;//位选数据的个位,即第二位数码管 sbit P2_2 = P2^2;//位选数据的十位,即第三位数码管 sbit P2_3 = P2^3;//位选数据的个位,即最后一位数码管 unsigned char tcount,a=0,kk=0; unsigned char table1[]={0x00,0x00,0x00,};//加上你想要显示的手机号对应十六进制 /* 延时1ms的延时函数 */ void delay_ms(unsigned int n) { unsigned int i=0,j=0; for(i=0;i } /* 数码管显示函数 */ void SMG_display() { P0=table1[kk];//第1个数码管显示的数字 P2_0 = 0; delay_ms(2); P2_0 = 1; P0=table1[kk+1];//第2个数码管显示的数字 P2_1 = 0; delay_ms(2); P2_1 = 1; P0=table1[kk+2];//第3个数码管显示的数字 P2_2 = 0; delay_ms(2); P2_2 = 1; P0=table1[kk+3];//第4个数码管显示的数字 P2_3 = 0; delay_ms(2); P2_3 = 1; } /* 定时器初始化 */ void Timer0Init() { TMOD=0x01; //定时器0中断方式1 TH0=(65536-5000)/256; //设初值5000us=5ms TL0=(65536-5000)%256; EA=1; //打开总中断开关 ET0=1; //T0中断允许 TR0=1; //T0中断开始(启动T0) } /* 定时器中断 */ void timer0() interrupt 1 using 0 { TH0=(65536-5000)/256; //无自动重装载功能,需要再次设初值 TL0=(65536-5000)%256; tcount++; //中断循环次数,每次进入中断tcount数值加1 SMG_display(); if(tcount==200) //200*5000us=1s { tcount=0; kk++; if(kk>10) { kk=0; beep=0; delay_ms(50); beep=1; } } } /* 主函数 */ void main() { Timer0Init(); while(1); }
上一篇:51单片机定时器/计数器基础知识介绍
下一篇:单片机2——动态数码管的一些实例
推荐阅读最新更新时间:2024-11-11 17:20
- 热门资源推荐
- 热门放大器推荐
设计资源 培训 开发板 精华推荐
- 超声波模块
- LT1086CT-3.3 具有自动光控制功能的低压差正稳压器的典型应用
- LTC1960 的典型应用 - 具有 SPI 接口的双电池充电器/选择器
- 使用 Analog Devices 的 LTC1539IGW 的参考设计
- 用于音频的 3V 模拟放大
- LTC2656BIFE-H16 八路、16 位数模转换器的典型应用
- 使用 Infineon Technologies AG 的 OM7604ST 的参考设计
- LTC3110EFE 3.6V 自主备份和充电应用的典型应用电路
- MA180018、PIC18F85J11 用于 PICDEM PIC18 Explorer 演示板的插件模块 (PIM)
- 使用 Diodes Incorporated 的 PAM8015AKR 的参考设计