91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 7KB
    文件類型: .c
    金幣: 1
    下載: 0 次
    發布日期: 2021-06-03
  • 語言: 其他
  • 標簽: TM1629??驅動??

資源簡介

TM1629的驅動程序LCD+數碼管+按掃描 很詳細很完整

資源截圖

代碼片段和文件信息


#include
#include
#define?nop?_nop_();
#define?uchar?unsigned?char
#define?uint??unsigned?int
sbit?stb?=P1^0; //定義片選通訊口
sbit?clk?=P1^1; //定義時鐘通訊口
sbit?dio?=P1^2; //定義數據輸入/輸出通訊口
bdata?uchar?y=0;//定義可以位尋址全局變量y
sbit?y7?=y^7;
uchar?show[16]?=?{0x760x7b0x380x380x3f0x400x400x400x400x40};//初始化顯示“HELLO”字符代碼
uchar?CODE[10]?=?{0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f};?//0~9顯示代碼
uchar?TIME_secondsseconds_2sub_1sub_2shi_1shi_2;?//時間寄存器依次從秒個位至小時十位
uchar?TIME_count;?//定時中斷控制制位
uchar?T_count;???//時鐘小數點閃
uchar?count4;????//保存按鍵控制對應的數碼管閃
uchar?key_FLAG1;//按鍵標志位
uchar?key_COUNT1;//按鍵移動數動顯示數據
uchar?key_LED=0;??//按鍵單獨顯示賦值寄存器
uchar?count7;
/*********************************???
功能:?TM1629寫數據
**********************************/
void?write(uchar?wr_data)
{
?????uchar?i;
?stb?=0; ???//給有效的片選信號(片選信號是低電平有效)
?nop;
?nop; ?
?for(i=0;i<8;i++)//開始傳送8位數據,每循環一次傳送一位數據
?{
?????clk?=0;
?nop;
?nop;
?????wr_data?>>=?1;//移位數據,低位在前!
?????nop;
?????dio?=?CY;
?????nop;
?????nop;
?????clk?=1;
?????nop;
???}
}
/*********************************??
功能:讀按鍵子程序?由y?返回1BIT按鍵數據
**********************************/
unsigned?char?read()
{
??uchar?d;
??stb?=?0; ??//給有效的片選信號(片選信號是低電平有效)
??dio?=?1; ??//將DIO置高,因為沒有按鍵按下時,鍵值默認為00H,此時為了與鍵值有區別
??for(d=0;d<8;d++)
???{
?????clk?=?0;
?nop;
???if(dio==1)
?????{
?????y7?=?1;
?}
??else
?????{
?y7?=?0;
?}
?clk?=?1;
?if(d!=7){y=(y>>1);}???
?nop;
?nop;
}
return(y);
} ????
/*********************************
????TM1629控制指令
功能:?驅動LED屏做相應的顯示
**********************************/
void?xianshi(uchar?show_led[16])
{
??uchar?h;
??stb?=?1;
??clk?=?1;
??dio?=?1;
??write(0x40);//寫數據到顯示寄存器,采用地址自動加一
??stb?=?1;
??write(0xc0);//顯示寄存器的00H單元開始
??for(h=0;h<16;h++)
??{????
???write(show_led[h]);//給顯示寄存器送數據,
???}
???stb=1;
???write(0x8b);//顯示控制參數,點亮數碼屏幕,亮度可以通過改變低三位調節
???stb?=?1;
}

//-------讀按鍵以及相應的顯示處理-------
void?panjian()
{
???uchar?count3key[4];
???stb?=?1;
???write(0x42);//送讀按鍵命令(42H),
???for(count3=0;count3<5;count3++)
???{
?????key[count3]=read(); //讀4BIT按鍵數據,
???}
???if((key_FLAG1?!=?0x02))
???{
???if((key[0]==0x01)){key_LED=?0;key_FLAG1?=?0x01;show[key_COUNT1]?=?CODE[key_LED];}?//K3與SEG1按鍵按下,數碼管顯示數字0
???if((key[0]==0x02)){key_LED=?1;key_FLAG1?=?0x01;show[key_COUNT1]?=?CODE[key_LED];}?//K2與SEG1按鍵按下,數碼管顯示數字1
???if((key[0]==0x04)){key_LED=?2;key_FLAG1?=?0x01;show[key_COUNT1]?=?CODE[key_LED];}?//K1與SEG2按鍵按下,數碼管顯示數字2。
???if((key[0]==0x08)){key_LED=?3;key_FLAG1?=?0x01;show[key_COUNT1]?=?CODE[key_LED];}?//K0與SEG2按鍵按下,數碼管顯示數字3。
???if((key[0]==0x80)){key_LED=?4;key_FLAG1?=?0x01;show[key_COUNT1]?=?CODE[key_LED];}?//K0與SEG3按鍵按下,數碼管顯示數字4。
???if((key[0]==0x40)){key_LED=?5;key_FLAG1?=?0x01;show[key_COUNT1]?=?CODE[key_LED];}?//K1與SEG3按鍵按下,數碼管顯示數字5。
???if((key[0]==0x20)){key_LED=?6;key_FLAG1?=?0x01;show[key_COUNT1]?=?CODE[key_LED];}?//K2與SEG4按鍵按下,數碼管顯示數字6。
???if((key[0]==0x10)){key_LED=?7;key_FLAG1?=?0x01;show[

評論

共有 條評論