久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
單片機不同P口數碼管顯示仿真+源碼
[打印本頁]
作者:
854100995
時間:
2018-1-22 16:25
標題:
單片機不同P口數碼管顯示仿真+源碼
此程序可使用不同P口的任意單片機引腳驅動數碼管顯示。包含程序和仿真,仿真已驗證OK。
分享給各位學習參考。
圖片1.jpg
(13.99 KB, 下載次數: 60)
下載附件
2018-1-22 16:22 上傳
單片機源程序如下:
#include "reg51.h"
#define uchar unsigned char //重命名關鍵字
#define uint unsigned int //重命名關鍵字
sbit K1=P3^0; //開始/暫停
sbit K2=P3^1; //復位
sbit GPIO_A=P1^0; //數據端a
sbit GPIO_B=P0^1; //數據端b
sbit GPIO_C=P1^1; //數據端c
sbit GPIO_D=P1^2; //數據端d
sbit GPIO_E=P0^2; //數據端e
sbit GPIO_F=P1^3; //數據端f
sbit GPIO_G=P0^3; //數據端g
sbit GPIO_H=P1^4; //數據端dp
sbit L1=P2^0; //數碼管1位選
sbit L2=P2^1; //數碼管2位選
sbit L3=P2^2; //數碼管3位選
unsigned char code DIG_CODE[10] = {0,1,2,3,4,5,6,7,8,9};
//0、1、2、3、4、5、6、7、8、9的顯示碼
unsigned char DisplayData[3];
//用來存放要顯示的3位數的值
uchar i,Key_Flag_Idx; //定義變量
uint Second_Counts; //定義變量
bit Key_State; //定義變量
void DelayMS(uint ms) //延時子函數
{
uchar t; //定義變量
while(ms--)
for(t=0;t<120;t++);
}
void DuanXuan(unsigned char dat) //發送段碼0~9
{
if(dat==0)
{GPIO_H=0;GPIO_G=0;GPIO_F=1;GPIO_E=1;GPIO_D=1;GPIO_C=1;GPIO_B=1;GPIO_A=1;} //'0'
if(dat==1)
{GPIO_H=0;GPIO_G=0;GPIO_F=0;GPIO_E=0;GPIO_D=0;GPIO_C=1;GPIO_B=1;GPIO_A=0;} //'1'
if(dat==2)
{GPIO_H=0;GPIO_G=1;GPIO_F=0;GPIO_E=1;GPIO_D=1;GPIO_C=0;GPIO_B=1;GPIO_A=1;} //'2'
if(dat==3)
{GPIO_H=0;GPIO_G=1;GPIO_F=0;GPIO_E=0;GPIO_D=1;GPIO_C=1;GPIO_B=1;GPIO_A=1;} //'3'
if(dat==4)
{GPIO_H=0;GPIO_G=1;GPIO_F=1;GPIO_E=0;GPIO_D=0;GPIO_C=1;GPIO_B=1;GPIO_A=0;} //'4'
if(dat==5)
{GPIO_H=0;GPIO_G=1;GPIO_F=1;GPIO_E=0;GPIO_D=1;GPIO_C=1;GPIO_B=0;GPIO_A=1;} //'5'
if(dat==6)
{GPIO_H=0;GPIO_G=1;GPIO_F=1;GPIO_E=1;GPIO_D=1;GPIO_C=1;GPIO_B=0;GPIO_A=1;} //'6'
if(dat==7)
{GPIO_H=0;GPIO_G=0;GPIO_F=0;GPIO_E=0;GPIO_D=0;GPIO_C=1;GPIO_B=1;GPIO_A=1;} //'7'
if(dat==8)
{GPIO_H=0;GPIO_G=1;GPIO_F=1;GPIO_E=1;GPIO_D=1;GPIO_C=1;GPIO_B=1;GPIO_A=1;} //'8'
if(dat==9)
{GPIO_H=0;GPIO_G=1;GPIO_F=1;GPIO_E=0;GPIO_D=1;GPIO_C=1;GPIO_B=1;GPIO_A=1;} //'9'
if(dat==10)
{GPIO_H=0;GPIO_G=0;GPIO_F=0;GPIO_E=0;GPIO_D=0;GPIO_C=0;GPIO_B=0;GPIO_A=0;} //全滅
}
void DuanXuan2(unsigned char dat) //發送段碼0.~9.
{
if(dat==0)
{GPIO_H=1;GPIO_G=0;GPIO_F=1;GPIO_E=1;GPIO_D=1;GPIO_C=1;GPIO_B=1;GPIO_A=1;} //'0.'
if(dat==1)
{GPIO_H=1;GPIO_G=0;GPIO_F=0;GPIO_E=0;GPIO_D=0;GPIO_C=1;GPIO_B=1;GPIO_A=0;} //'1.'
if(dat==2)
{GPIO_H=1;GPIO_G=1;GPIO_F=0;GPIO_E=1;GPIO_D=1;GPIO_C=0;GPIO_B=1;GPIO_A=1;} //'2.'
if(dat==3)
{GPIO_H=1;GPIO_G=1;GPIO_F=0;GPIO_E=0;GPIO_D=1;GPIO_C=1;GPIO_B=1;GPIO_A=1;} //'3.'
if(dat==4)
{GPIO_H=1;GPIO_G=1;GPIO_F=1;GPIO_E=0;GPIO_D=0;GPIO_C=1;GPIO_B=1;GPIO_A=0;} //'4.'
if(dat==5)
{GPIO_H=1;GPIO_G=1;GPIO_F=1;GPIO_E=0;GPIO_D=1;GPIO_C=1;GPIO_B=0;GPIO_A=1;} //'5.'
if(dat==6)
{GPIO_H=1;GPIO_G=1;GPIO_F=1;GPIO_E=1;GPIO_D=1;GPIO_C=1;GPIO_B=0;GPIO_A=1;} //'6.'
if(dat==7)
{GPIO_H=1;GPIO_G=0;GPIO_F=0;GPIO_E=0;GPIO_D=0;GPIO_C=1;GPIO_B=1;GPIO_A=1;} //'7.'
if(dat==8)
{GPIO_H=1;GPIO_G=1;GPIO_F=1;GPIO_E=1;GPIO_D=1;GPIO_C=1;GPIO_B=1;GPIO_A=1;} //'8.'
if(dat==9)
{GPIO_H=1;GPIO_G=1;GPIO_F=1;GPIO_E=0;GPIO_D=1;GPIO_C=1;GPIO_B=1;GPIO_A=1;} //'9.'
}
void DigDisplay() //數碼管顯示子函數
{
unsigned int j; //定義變量
L1=0; //位選
DuanXuan(DisplayData[0]);//發送段碼
j = 100; //掃描間隔時間設定
while(j--);
L1=1; //消隱
L2=0; //位選
DuanXuan2(DisplayData[1]);//發送段碼
j = 100; //掃描間隔時間設定
while(j--);
L2=1;
L3=0; //位選
DuanXuan(DisplayData[2]); //發送段碼
j = 100; //掃描間隔時間設定
while(j--);
L3=1;
}
void Key_Event_Handle() //處理按鍵事件
{
if(Key_State==0)
{
Key_Flag_Idx=(Key_Flag_Idx+1)%2; //讓變量Key_Flag_Idx保持在小于2的值
switch(Key_Flag_Idx)
{
case 1:
ET0=1;
TR0=1; //開啟定時器
break;
case 0:
ET0=0;
TR0=0; //關閉定時器
break;
}
}
}
void main()
{
DuanXuan(10);
TMOD=0x01; //定時器0方式1
TH0=(65536-50000)/256; //定時器0:50ms
TL0=(65536-50000)%256;
EA=1;
while (1)
{
if(Key_State!=K1) //開始按鍵按下時
{
DelayMS(10); //按鍵去抖
Key_State=K1;
Key_Event_Handle(); //執行按鍵處理函數
}
if(K2==0) //復位按鍵按下時
{
ET0=0;
TR0=0; //關閉定時器
i=0; //清零計數
Second_Counts=0; //清零秒
Key_Flag_Idx=0;
}
DisplayData[0] = DIG_CODE[Second_Counts/100%10]; //顯示百位
DisplayData[1] = DIG_CODE[Second_Counts/10%10]; //顯示十位
DisplayData[2] = DIG_CODE[Second_Counts%10]; //顯示個位
DigDisplay(); //執行數碼管顯示函數
}
}
//T0中斷函數
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
不同P口數碼管顯示.zip
(87.99 KB, 下載次數: 38)
2018-1-22 16:24 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
erzhu2007
時間:
2018-1-23 21:34
不錯哦,謝謝
作者:
犇蠡
時間:
2019-6-12 21:41
學習學習
作者:
dianzi1987
時間:
2019-10-16 16:31
學習中,非常感謝
作者:
yoyodw123456
時間:
2020-3-9 17:10
特別感謝,糾結這個不同口的段接法很久了!!!
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
欧美在线视频一区二区
|
久久99蜜桃综合影院免费观看
|
日韩 国产 在线
|
日韩精品免费在线
|
亚洲精品在线视频
|
一区视频在线播放
|
日本成人中文字幕在线观看
|
欧美成人精品在线观看
|
久久亚洲一区二区三
|
亚洲成人免费
|
91久操视频
|
成人免费视频观看
|
日本亚洲一区二区
|
中文字幕在线精品
|
成人在线观看免费视频
|
a级黄色片视频
|
日产精品久久久一区二区福利
|
久久综合九九
|
国产精品二区三区在线观看
|
国产精品1区2区
|
欧美一级毛片久久99精品蜜桃
|
97福利在线
|
久久精品97
|
美女视频.
|
亚洲精品一区二区在线观看
|
综合久久久
|
欧美色a v
|
中文字幕在线网
|
国产激情三区
|
日韩av在线一区
|
日韩精品在线播放
|
天堂在线免费视频
|
精品国产一区二区三区日日嗨
|
国内精品视频在线观看
|
国产一区二区在线视频
|
欧美日韩在线一区二区
|
色婷婷综合久久久中字幕精品久久
|
99re在线免费视频
|
国产精品明星裸体写真集
|
一级毛片在线播放
|
九九激情视频
|